chushih
@@ -0,0 +1,33 @@
|
||||
<template>
|
||||
<!-- 页面结构 -->
|
||||
<view class="container">
|
||||
<!-- 页面内容 -->
|
||||
<router-view />
|
||||
<u-toast ref="uToast"></u-toast>
|
||||
<!-- TabBar -->
|
||||
<tab-bar />
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
import Vue from "vue";
|
||||
export default {
|
||||
mounted() {
|
||||
this.$nextTick(() => {
|
||||
Vue.prototype.$toast = this.$refs.uToast.show;
|
||||
Vue.prototype.$toastHide = this.$refs.uToast.hide;
|
||||
});
|
||||
},
|
||||
onLaunch: function () {},
|
||||
onShow: function () {
|
||||
// this.setLanguage();
|
||||
},
|
||||
onHide: function () {
|
||||
// console.log("App Hide");
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
/* 注意要写在第一行,同时给style标签加入lang="scss"属性 */
|
||||
@import "uview-ui/index.scss";
|
||||
</style>
|
||||
@@ -0,0 +1,201 @@
|
||||
<template>
|
||||
<u-popup :show="show" mode="bottom">
|
||||
<view class="popup-view">
|
||||
<view class="title">
|
||||
<u-icon
|
||||
@tap="$emit('close')"
|
||||
class="btn"
|
||||
size="42rpx"
|
||||
name="arrow-leftward"
|
||||
></u-icon>
|
||||
请选择区号
|
||||
</view>
|
||||
<u-index-list
|
||||
ref="uIndexList"
|
||||
class="scroll-view"
|
||||
:index-list="indexList"
|
||||
:customNavHeight="0"
|
||||
>
|
||||
<template v-for="(item, index) in countoryList">
|
||||
<!-- #ifdef APP-NVUE -->
|
||||
<u-index-anchor
|
||||
height="64rpx"
|
||||
:text="indexList[index]"
|
||||
:key="index"
|
||||
></u-index-anchor>
|
||||
<!-- #endif -->
|
||||
<u-index-item :key="index">
|
||||
<!-- #ifndef APP-NVUE -->
|
||||
<u-index-anchor
|
||||
height="64rpx"
|
||||
:text="indexList[index]"
|
||||
></u-index-anchor>
|
||||
<!-- #endif -->
|
||||
<view v-for="(cell, i) in item" :key="i">
|
||||
<view
|
||||
@click="selectCountryTap(index, cell)"
|
||||
class="list-cell"
|
||||
:class="cell.en === country ? 'list-cell-active' : ''"
|
||||
>
|
||||
<view class="cell-left">
|
||||
<view class="cn-name">{{ cell.cn }}</view>
|
||||
<view class="en-name">{{ cell.en }}</view>
|
||||
</view>
|
||||
<view class="cell-right">{{ cell.code }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</u-index-item>
|
||||
</template>
|
||||
</u-index-list>
|
||||
</view>
|
||||
</u-popup>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import countory from "./country.js";
|
||||
export default {
|
||||
name: "countryCode",
|
||||
props: {
|
||||
show: {
|
||||
type: Boolean,
|
||||
default: false,
|
||||
},
|
||||
anchor: {
|
||||
type: [String, Number],
|
||||
default: "",
|
||||
},
|
||||
country: {
|
||||
type: [String, Object],
|
||||
default: "",
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
computed: {
|
||||
indexList() {
|
||||
const list = [];
|
||||
countory.list.forEach((v) => {
|
||||
list.push(v.letter);
|
||||
});
|
||||
return list;
|
||||
},
|
||||
countoryList() {
|
||||
const list = [];
|
||||
countory.list.forEach((v) => {
|
||||
list.push(v.data);
|
||||
});
|
||||
return list;
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
show(state) {
|
||||
if (state) {
|
||||
this.$nextTick(() => {
|
||||
// uni.$u.config.unit = "px";
|
||||
this.$refs.uIndexList.setValueForTouch(this.anchor);
|
||||
});
|
||||
} else {
|
||||
// uni.$u.config.unit = "rpx";
|
||||
}
|
||||
},
|
||||
},
|
||||
destroyed() {
|
||||
// uni.$u.config.unit = "rpx";
|
||||
},
|
||||
mounted() {},
|
||||
methods: {
|
||||
selectCountryTap(index, data) {
|
||||
let postData = {
|
||||
anchor_index: index,
|
||||
country_en: data.en,
|
||||
country_cn: data.cn,
|
||||
country_code: data.code,
|
||||
};
|
||||
this.$emit("select", postData);
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.popup-view {
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
background: #fff;
|
||||
.title {
|
||||
text-align: center;
|
||||
height: 88rpx;
|
||||
text-align: center;
|
||||
line-height: 88rpx;
|
||||
font-weight: 600;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
.btn {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
padding: 24rpx 30rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
/deep/ .u-index-bar__sidebar {
|
||||
z-index: 999;
|
||||
}
|
||||
.scroll-view {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
.list-cell {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 0 40rpx;
|
||||
height: 110rpx;
|
||||
border-bottom: 1px solid #f9f9fa;
|
||||
|
||||
.cell-left {
|
||||
flex: 0 0 60%;
|
||||
min-width: 0;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
|
||||
.cn-name {
|
||||
color: #1b252f;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
|
||||
.en-name {
|
||||
color: #7d8894;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.cell-right {
|
||||
flex: 0 0 40%;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
color: #7d8894;
|
||||
font-size: 26rpx;
|
||||
padding-right: 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.list-cell-active {
|
||||
background-color: #f9f9fa;
|
||||
|
||||
.cell-left {
|
||||
.cn-name,
|
||||
.en-name {
|
||||
color: #416fff;
|
||||
}
|
||||
}
|
||||
|
||||
.cell-right {
|
||||
color: #416fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,562 @@
|
||||
/**
|
||||
* @1900-2100区间内的公历、农历互转
|
||||
* @公历转农历:solar2lunar
|
||||
* @农历转公历:lunar2solar
|
||||
*/
|
||||
let calendar = {
|
||||
/**
|
||||
* 农历1900-2100的润大小信息表
|
||||
* @Array Of Property
|
||||
* @return Hex
|
||||
*/
|
||||
lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2, //1900-1909
|
||||
0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977, //1910-1919
|
||||
0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970, //1920-1929
|
||||
0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950, //1930-1939
|
||||
0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557, //1940-1949
|
||||
0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0, //1950-1959
|
||||
0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, //1960-1969
|
||||
0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6, //1970-1979
|
||||
0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570, //1980-1989
|
||||
0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x055c0, 0x0ab60, 0x096d5, 0x092e0, //1990-1999
|
||||
0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5, //2000-2009
|
||||
0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930, //2010-2019
|
||||
0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530, //2020-2029
|
||||
0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, //2030-2039
|
||||
0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0, //2040-2049
|
||||
0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0, //2050-2059
|
||||
0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4, //2060-2069
|
||||
0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0, //2070-2079
|
||||
0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160, //2080-2089
|
||||
0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252, //2090-2099
|
||||
0x0d520
|
||||
], //2100
|
||||
/**
|
||||
* 公历每个月份的天数普通表
|
||||
* @Array Of Property
|
||||
* @return Number
|
||||
*/
|
||||
solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
|
||||
/**
|
||||
* 天干地支之天干速查表
|
||||
* @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]
|
||||
* @return Cn string
|
||||
*/
|
||||
Gan: ["\u7532", "\u4e59", "\u4e19", "\u4e01", "\u620a", "\u5df1", "\u5e9a", "\u8f9b", "\u58ec", "\u7678"],
|
||||
/**
|
||||
* 天干地支之地支速查表
|
||||
* @Array Of Property
|
||||
* @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]
|
||||
* @return Cn string
|
||||
*/
|
||||
Zhi: ["\u5b50", "\u4e11", "\u5bc5", "\u536f", "\u8fb0", "\u5df3", "\u5348", "\u672a", "\u7533", "\u9149", "\u620c",
|
||||
"\u4ea5"
|
||||
],
|
||||
/**
|
||||
* 天干地支之地支速查表<=>生肖
|
||||
* @Array Of Property
|
||||
* @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
|
||||
* @return Cn string
|
||||
*/
|
||||
Animals: ["\u9f20", "\u725b", "\u864e", "\u5154", "\u9f99", "\u86c7", "\u9a6c", "\u7f8a", "\u7334", "\u9e21",
|
||||
"\u72d7", "\u732a"
|
||||
],
|
||||
/**
|
||||
* 24节气速查表
|
||||
* @Array Of Property
|
||||
* @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]
|
||||
* @return Cn string
|
||||
*/
|
||||
solarTerm: ["\u5c0f\u5bd2", "\u5927\u5bd2", "\u7acb\u6625", "\u96e8\u6c34", "\u60ca\u86f0", "\u6625\u5206",
|
||||
"\u6e05\u660e", "\u8c37\u96e8", "\u7acb\u590f", "\u5c0f\u6ee1", "\u8292\u79cd", "\u590f\u81f3", "\u5c0f\u6691",
|
||||
"\u5927\u6691", "\u7acb\u79cb", "\u5904\u6691", "\u767d\u9732", "\u79cb\u5206", "\u5bd2\u9732", "\u971c\u964d",
|
||||
"\u7acb\u51ac", "\u5c0f\u96ea", "\u5927\u96ea", "\u51ac\u81f3"
|
||||
],
|
||||
/**
|
||||
* 1900-2100各年的24节气日期速查表
|
||||
* @Array Of Property
|
||||
* @return 0x string For splice
|
||||
*/
|
||||
sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f',
|
||||
'97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
|
||||
'97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa',
|
||||
'97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f',
|
||||
'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f',
|
||||
'97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa',
|
||||
'97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2',
|
||||
'9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f',
|
||||
'97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e',
|
||||
'97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
|
||||
'97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722',
|
||||
'9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f',
|
||||
'97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
|
||||
'97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
|
||||
'97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722',
|
||||
'9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f',
|
||||
'97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
|
||||
'97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
|
||||
'9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722',
|
||||
'7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
|
||||
'97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
|
||||
'97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
|
||||
'9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722',
|
||||
'7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
|
||||
'97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
|
||||
'97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
|
||||
'9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722',
|
||||
'7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
|
||||
'97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
|
||||
'9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
|
||||
'7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
|
||||
'7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
|
||||
'97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
|
||||
'9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
|
||||
'7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
|
||||
'7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
|
||||
'97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
|
||||
'9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
|
||||
'7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721',
|
||||
'7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2',
|
||||
'977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
|
||||
'7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
|
||||
'7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd',
|
||||
'7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
|
||||
'977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
|
||||
'7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
|
||||
'7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd',
|
||||
'7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
|
||||
'977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
|
||||
'7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721',
|
||||
'7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5',
|
||||
'7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722',
|
||||
'7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
|
||||
'7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
|
||||
'7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35',
|
||||
'7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
|
||||
'7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721',
|
||||
'7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd',
|
||||
'7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35',
|
||||
'7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
|
||||
'7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721',
|
||||
'7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5',
|
||||
'7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35',
|
||||
'665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
|
||||
'7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
|
||||
'7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35',
|
||||
'7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'
|
||||
],
|
||||
/**
|
||||
* 数字转中文速查表
|
||||
* @Array Of Property
|
||||
* @trans ['日','一','二','三','四','五','六','七','八','九','十']
|
||||
* @return Cn string
|
||||
*/
|
||||
nStr1: ["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d", "\u4e03", "\u516b", "\u4e5d", "\u5341"],
|
||||
/**
|
||||
* 日期转农历称呼速查表
|
||||
* @Array Of Property
|
||||
* @trans ['初','十','廿','卅']
|
||||
* @return Cn string
|
||||
*/
|
||||
nStr2: ["\u521d", "\u5341", "\u5eff", "\u5345"],
|
||||
/**
|
||||
* 月份转农历称呼速查表
|
||||
* @Array Of Property
|
||||
* @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']
|
||||
* @return Cn string
|
||||
*/
|
||||
nStr3: ["\u6b63", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d", "\u4e03", "\u516b", "\u4e5d", "\u5341", "\u51ac",
|
||||
"\u814a"
|
||||
],
|
||||
/**
|
||||
* 返回农历y年一整年的总天数
|
||||
* @param lunar Year
|
||||
* @return Number
|
||||
* @eg:let count = calendar.lYearDays(1987) ;//count=387
|
||||
*/
|
||||
lYearDays: function(y) {
|
||||
let i, sum = 348;
|
||||
for (i = 0x8000; i > 0x8; i >>= 1) {
|
||||
sum += (calendar.lunarInfo[y - 1900] & i) ? 1 : 0;
|
||||
}
|
||||
return (sum + calendar.leapDays(y));
|
||||
},
|
||||
/**
|
||||
* 返回农历y年闰月是哪个月;若y年没有闰月 则返回0
|
||||
* @param lunar Year
|
||||
* @return Number (0-12)
|
||||
* @eg:let leapMonth = calendar.leapMonth(1987) ;//leapMonth=6
|
||||
*/
|
||||
leapMonth: function(y) { //闰字编码 \u95f0
|
||||
return (calendar.lunarInfo[y - 1900] & 0xf);
|
||||
},
|
||||
/**
|
||||
* 返回农历y年闰月的天数 若该年没有闰月则返回0
|
||||
* @param lunar Year
|
||||
* @return Number (0、29、30)
|
||||
* @eg:let leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29
|
||||
*/
|
||||
leapDays: function(y) {
|
||||
if (calendar.leapMonth(y)) {
|
||||
return ((calendar.lunarInfo[y - 1900] & 0x10000) ? 30 : 29);
|
||||
}
|
||||
return (0);
|
||||
},
|
||||
/**
|
||||
* 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法
|
||||
* @param lunar Year
|
||||
* @return Number (-1、29、30)
|
||||
* @eg:let MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29
|
||||
*/
|
||||
monthDays: function(y, m) {
|
||||
if (m > 12 || m < 1) {
|
||||
return -1
|
||||
} //月份参数从1至12,参数错误返回-1
|
||||
return ((calendar.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29);
|
||||
},
|
||||
/**
|
||||
* 返回公历(!)y年m月的天数
|
||||
* @param solar Year
|
||||
* @return Number (-1、28、29、30、31)
|
||||
* @eg:let solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30
|
||||
*/
|
||||
solarDays: function(y, m) {
|
||||
if (m > 12 || m < 1) {
|
||||
return -1
|
||||
} //若参数错误 返回-1
|
||||
let ms = m - 1;
|
||||
if (ms == 1) { //2月份的闰平规律测算后确认返回28或29
|
||||
return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28);
|
||||
} else {
|
||||
return (calendar.solarMonth[ms]);
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 农历年份转换为干支纪年
|
||||
* @param lYear 农历年的年份数
|
||||
* @return Cn string
|
||||
*/
|
||||
toGanZhiYear: function(lYear) {
|
||||
let ganKey = (lYear - 3) % 10;
|
||||
let zhiKey = (lYear - 3) % 12;
|
||||
if (ganKey == 0) ganKey = 10; //如果余数为0则为最后一个天干
|
||||
if (zhiKey == 0) zhiKey = 12; //如果余数为0则为最后一个地支
|
||||
return calendar.Gan[ganKey - 1] + calendar.Zhi[zhiKey - 1];
|
||||
},
|
||||
/**
|
||||
* 公历月、日判断所属星座
|
||||
* @param cMonth [description]
|
||||
* @param cDay [description]
|
||||
* @return Cn string
|
||||
*/
|
||||
toAstro: function(cMonth, cDay) {
|
||||
let s =
|
||||
"\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf";
|
||||
let arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22];
|
||||
return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + "\u5ea7"; //座
|
||||
},
|
||||
/**
|
||||
* 传入offset偏移量返回干支
|
||||
* @param offset 相对甲子的偏移量
|
||||
* @return Cn string
|
||||
*/
|
||||
toGanZhi: function(offset) {
|
||||
return calendar.Gan[offset % 10] + calendar.Zhi[offset % 12];
|
||||
},
|
||||
/**
|
||||
* 传入公历(!)y年获得该年第n个节气的公历日期
|
||||
* @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起
|
||||
* @return day Number
|
||||
* @eg:let _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春
|
||||
*/
|
||||
getTerm: function(y, n) {
|
||||
if (y < 1900 || y > 2100) {
|
||||
return -1;
|
||||
}
|
||||
if (n < 1 || n > 24) {
|
||||
return -1;
|
||||
}
|
||||
let _table = calendar.sTermInfo[y - 1900];
|
||||
let _info = [
|
||||
parseInt('0x' + _table.substr(0, 5)).toString(),
|
||||
parseInt('0x' + _table.substr(5, 5)).toString(),
|
||||
parseInt('0x' + _table.substr(10, 5)).toString(),
|
||||
parseInt('0x' + _table.substr(15, 5)).toString(),
|
||||
parseInt('0x' + _table.substr(20, 5)).toString(),
|
||||
parseInt('0x' + _table.substr(25, 5)).toString()
|
||||
];
|
||||
let _calday = [
|
||||
_info[0].substr(0, 1),
|
||||
_info[0].substr(1, 2),
|
||||
_info[0].substr(3, 1),
|
||||
_info[0].substr(4, 2),
|
||||
_info[1].substr(0, 1),
|
||||
_info[1].substr(1, 2),
|
||||
_info[1].substr(3, 1),
|
||||
_info[1].substr(4, 2),
|
||||
_info[2].substr(0, 1),
|
||||
_info[2].substr(1, 2),
|
||||
_info[2].substr(3, 1),
|
||||
_info[2].substr(4, 2),
|
||||
_info[3].substr(0, 1),
|
||||
_info[3].substr(1, 2),
|
||||
_info[3].substr(3, 1),
|
||||
_info[3].substr(4, 2),
|
||||
_info[4].substr(0, 1),
|
||||
_info[4].substr(1, 2),
|
||||
_info[4].substr(3, 1),
|
||||
_info[4].substr(4, 2),
|
||||
_info[5].substr(0, 1),
|
||||
_info[5].substr(1, 2),
|
||||
_info[5].substr(3, 1),
|
||||
_info[5].substr(4, 2),
|
||||
];
|
||||
return parseInt(_calday[n - 1]);
|
||||
},
|
||||
/**
|
||||
* 传入农历数字月份返回汉语通俗表示法
|
||||
* @param lunar month
|
||||
* @return Cn string
|
||||
* @eg:let cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月'
|
||||
*/
|
||||
toChinaMonth: function(m) { // 月 => \u6708
|
||||
if (m > 12 || m < 1) {
|
||||
return -1
|
||||
} //若参数错误 返回-1
|
||||
let s = calendar.nStr3[m - 1];
|
||||
s += "\u6708"; //加上月字
|
||||
return s;
|
||||
},
|
||||
/**
|
||||
* 传入农历日期数字返回汉字表示法
|
||||
* @param lunar day
|
||||
* @return Cn string
|
||||
* @eg:let cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'
|
||||
*/
|
||||
toChinaDay: function(d) { //日 => \u65e5
|
||||
let s;
|
||||
switch (d) {
|
||||
case 10:
|
||||
s = '\u521d\u5341';
|
||||
break;
|
||||
case 20:
|
||||
s = '\u4e8c\u5341';
|
||||
break;
|
||||
break;
|
||||
case 30:
|
||||
s = '\u4e09\u5341';
|
||||
break;
|
||||
break;
|
||||
default:
|
||||
s = calendar.nStr2[Math.floor(d / 10)];
|
||||
s += calendar.nStr1[d % 10];
|
||||
}
|
||||
return (s);
|
||||
},
|
||||
/**
|
||||
* 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春”
|
||||
* @param y year
|
||||
* @return Cn string
|
||||
* @eg:let animal = calendar.getAnimal(1987) ;//animal='兔'
|
||||
*/
|
||||
getAnimal: function(y) {
|
||||
return calendar.Animals[(y - 4) % 12]
|
||||
},
|
||||
/**
|
||||
* 传入阳历年月日获得详细的公历、农历object信息 <=>JSON
|
||||
* @param y solar year
|
||||
* @param m solar month
|
||||
* @param d solar day
|
||||
* @return JSON object
|
||||
* @eg:console.log(calendar.solar2lunar(1987,11,01));
|
||||
*/
|
||||
solar2lunar: function(y, m, d) { //参数区间1900.1.31~2100.12.31
|
||||
if (y < 1900 || y > 2100) {
|
||||
return -1;
|
||||
} //年份限定、上限
|
||||
if (y == 1900 && m == 1 && d < 31) {
|
||||
return -1;
|
||||
} //下限
|
||||
let objDate;
|
||||
if (!y) { //未传参 获得当天
|
||||
objDate = new Date();
|
||||
} else {
|
||||
objDate = new Date(y, parseInt(m) - 1, d)
|
||||
}
|
||||
let i, leap = 0,
|
||||
temp = 0;
|
||||
//修正ymd参数
|
||||
y = objDate.getFullYear();
|
||||
m = objDate.getMonth() + 1;
|
||||
d = objDate.getDate();
|
||||
let offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) /
|
||||
86400000;
|
||||
for (i = 1900; i < 2101 && offset > 0; i++) {
|
||||
temp = calendar.lYearDays(i);
|
||||
offset -= temp;
|
||||
}
|
||||
if (offset < 0) {
|
||||
offset += temp;
|
||||
i--;
|
||||
}
|
||||
//是否今天
|
||||
let isTodayObj = new Date(),
|
||||
isToday = false;
|
||||
if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) {
|
||||
isToday = true;
|
||||
}
|
||||
//星期几
|
||||
let nWeek = objDate.getDay(),
|
||||
cWeek = calendar.nStr1[nWeek];
|
||||
if (nWeek == 0) {
|
||||
nWeek = 7;
|
||||
} //数字表示周几顺应天朝周一开始的惯例
|
||||
//农历年
|
||||
let year = i;
|
||||
leap = calendar.leapMonth(i); //闰哪个月
|
||||
let isLeap = false;
|
||||
//效验闰月
|
||||
for (i = 1; i < 13 && offset > 0; i++) {
|
||||
//闰月
|
||||
if (leap > 0 && i == (leap + 1) && isLeap == false) {
|
||||
--i;
|
||||
isLeap = true;
|
||||
temp = calendar.leapDays(year); //计算农历闰月天数
|
||||
} else {
|
||||
temp = calendar.monthDays(year, i); //计算农历普通月天数
|
||||
}
|
||||
//解除闰月
|
||||
if (isLeap == true && i == (leap + 1)) {
|
||||
isLeap = false;
|
||||
}
|
||||
offset -= temp;
|
||||
}
|
||||
if (offset == 0 && leap > 0 && i == leap + 1)
|
||||
if (isLeap) {
|
||||
isLeap = false;
|
||||
} else {
|
||||
isLeap = true;
|
||||
--i;
|
||||
}
|
||||
if (offset < 0) {
|
||||
offset += temp;
|
||||
--i;
|
||||
}
|
||||
//农历月
|
||||
let month = i;
|
||||
//农历日
|
||||
let day = offset + 1;
|
||||
//天干地支处理
|
||||
let sm = m - 1;
|
||||
let gzY = calendar.toGanZhiYear(year);
|
||||
//月柱 1900年1月小寒以前为 丙子月(60进制12)
|
||||
let firstNode = calendar.getTerm(year, (m * 2 - 1)); //返回当月「节」为几日开始
|
||||
let secondNode = calendar.getTerm(year, (m * 2)); //返回当月「节」为几日开始
|
||||
//依据12节气修正干支月
|
||||
let gzM = calendar.toGanZhi((y - 1900) * 12 + m + 11);
|
||||
if (d >= firstNode) {
|
||||
gzM = calendar.toGanZhi((y - 1900) * 12 + m + 12);
|
||||
}
|
||||
//传入的日期的节气与否
|
||||
let isTerm = false;
|
||||
let Term = null;
|
||||
if (firstNode == d) {
|
||||
isTerm = true;
|
||||
Term = calendar.solarTerm[m * 2 - 2];
|
||||
}
|
||||
if (secondNode == d) {
|
||||
isTerm = true;
|
||||
Term = calendar.solarTerm[m * 2 - 1];
|
||||
}
|
||||
//日柱 当月一日与 1900/1/1 相差天数
|
||||
let dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10;
|
||||
let gzD = calendar.toGanZhi(dayCyclical + d - 1);
|
||||
//该日期所属的星座
|
||||
let astro = calendar.toAstro(m, d);
|
||||
return {
|
||||
'lYear': year,
|
||||
'lMonth': month,
|
||||
'lDay': day,
|
||||
'Animal': calendar.getAnimal(year),
|
||||
'IMonthCn': (isLeap ? "\u95f0" : '') + calendar.toChinaMonth(month),
|
||||
'IDayCn': calendar.toChinaDay(day),
|
||||
'cYear': y,
|
||||
'cMonth': m,
|
||||
'cDay': d,
|
||||
'gzYear': gzY,
|
||||
'gzMonth': gzM,
|
||||
'gzDay': gzD,
|
||||
'isToday': isToday,
|
||||
'isLeap': isLeap,
|
||||
'nWeek': nWeek,
|
||||
'ncWeek': "\u661f\u671f" + cWeek,
|
||||
'isTerm': isTerm,
|
||||
'Term': Term,
|
||||
'astro': astro
|
||||
};
|
||||
},
|
||||
/**
|
||||
* 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON
|
||||
* @param y lunar year
|
||||
* @param m lunar month
|
||||
* @param d lunar day
|
||||
* @param isLeapMonth lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可]
|
||||
* @return JSON object
|
||||
* @eg:console.log(calendar.lunar2solar(1987,9,10));
|
||||
*/
|
||||
lunar2solar: function(y, m, d, isLeapMonth) { //参数区间1900.1.31~2100.12.1
|
||||
isLeapMonth = !!isLeapMonth;
|
||||
let leapOffset = 0;
|
||||
let leapMonth = calendar.leapMonth(y);
|
||||
let leapDay = calendar.leapDays(y);
|
||||
if (isLeapMonth && (leapMonth != m)) {
|
||||
return -1;
|
||||
} //传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同
|
||||
if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) {
|
||||
return -1;
|
||||
} //超出了最大极限值
|
||||
let day = calendar.monthDays(y, m);
|
||||
let _day = day;
|
||||
//bugFix 2016-9-25
|
||||
//if month is leap, _day use leapDays method
|
||||
if (isLeapMonth) {
|
||||
_day = calendar.leapDays(y, m);
|
||||
}
|
||||
if (y < 1900 || y > 2100 || d > _day) {
|
||||
return -1;
|
||||
} //参数合法性效验
|
||||
//计算农历的时间差
|
||||
let offset = 0;
|
||||
for (let i = 1900; i < y; i++) {
|
||||
offset += calendar.lYearDays(i);
|
||||
}
|
||||
let leap = 0,
|
||||
isAdd = false;
|
||||
for (let i = 1; i < m; i++) {
|
||||
leap = calendar.leapMonth(y);
|
||||
if (!isAdd) { //处理闰月
|
||||
if (leap <= i && leap > 0) {
|
||||
offset += calendar.leapDays(y);
|
||||
isAdd = true;
|
||||
}
|
||||
}
|
||||
offset += calendar.monthDays(y, i);
|
||||
}
|
||||
//转换闰月农历 需补充该年闰月的前一个月的时差
|
||||
if (isLeapMonth) {
|
||||
offset += day;
|
||||
}
|
||||
//1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点)
|
||||
let stmap = Date.UTC(1900, 1, 30, 0, 0, 0);
|
||||
let calObj = new Date((offset + d - 31) * 86400000 + stmap);
|
||||
let cY = calObj.getUTCFullYear();
|
||||
let cM = calObj.getUTCMonth() + 1;
|
||||
let cD = calObj.getUTCDate();
|
||||
return calendar.solar2lunar(cY, cM, cD);
|
||||
}
|
||||
};
|
||||
|
||||
export default {
|
||||
solar2lunar: calendar.solar2lunar,
|
||||
lunar2solar: calendar.lunar2solar
|
||||
};
|
||||
@@ -0,0 +1,832 @@
|
||||
<template>
|
||||
<view @touchmove.stop.prevent>
|
||||
<view class="l-calendar-box" :class="{'calendar-box-show': value}">
|
||||
<view class="calendar-top">
|
||||
<view>{{title}}</view>
|
||||
<view class="close l-icons icon-shanchu" hover-class="l-opacity" :hover-stay-time="150" @tap="hide">
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="date-box">
|
||||
<view class=" date-arrowleft l-icons icon-youjiantou" :style="{ color: yearChangeColor }"
|
||||
hover-class="l-opacity" :hover-stay-time="150" @tap="changeYear(false)">
|
||||
</view>
|
||||
<view class=" date-arrowleft l-icons icon-zuojiantou" :style="{ color: monthChangeColor }"
|
||||
hover-class="l-opacity" :hover-stay-time="150" @tap="changeMonth(false)"></view>
|
||||
<view class="title-datetime">{{ showTitle }}</view>
|
||||
<view class=" date-arrowright l-icons icon-youjiantou2" :style="{ color: monthChangeColor }"
|
||||
hover-class="l-opacity" :hover-stay-time="150" @tap="changeMonth(true)"></view>
|
||||
<view class=" date-arrowright l-icons icon-youjiantou1" :style="{ color: yearChangeColor }"
|
||||
hover-class="l-opacity" :hover-stay-time="150" @tap="changeYear(true)"></view>
|
||||
</view>
|
||||
<view class="date-weekday">
|
||||
<view class="date-weekday-item">日</view>
|
||||
<view class="date-weekday-item">一</view>
|
||||
<view class="date-weekday-item">二</view>
|
||||
<view class="date-weekday-item">三</view>
|
||||
<view class="date-weekday-item">四</view>
|
||||
<view class="date-weekday-item">五</view>
|
||||
<view class="date-weekday-item">六</view>
|
||||
</view>
|
||||
<view class="date-content" :style="{ height: dateHeight * 6 + 'px' }">
|
||||
<block v-for="(item, index) in weekdayArr" :key="index">
|
||||
<view class="date-weekday-item"></view>
|
||||
</block>
|
||||
<view class="date-weekday-item" :class="{
|
||||
'l-opacity': isDisable(year, month, index + 1),
|
||||
'start-date': (isRange && startDate == `${year}-${month}-${index + 1}`) || !isRange,
|
||||
'end-date': (isRange && endDate == `${year}-${month}-${index + 1}`) || !isRange
|
||||
}" :style="{ backgroundColor: getColor(index, 1), height: dateHeight + 'px',padding:0}"
|
||||
v-for="(item, index) in daysArr" :key="index" @tap="dateClick(index)">
|
||||
<view class="date-content-item" :style="{ color: getColor(index, 2) }">
|
||||
<view>{{ index + 1 }}</view>
|
||||
<!-- 农历 -->
|
||||
<view class="custom-desc">
|
||||
{{ getText(index, startDate, endDate) }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="date-content-item-desc" :style="{ color: activeColor }"
|
||||
v-if="!lunar && isRange && startDate == `${year}-${month}-${index + 1}` && startDate != endDate">
|
||||
{{ startText }}
|
||||
</view>
|
||||
<view class="date-content-item-desc" :style="{ color: activeColor }"
|
||||
v-if="!lunar && isRange && endDate == `${year}-${month}-${index + 1}`">{{ endText }}</view>
|
||||
</view>
|
||||
<view class="bg-mounth">{{ month }}</view>
|
||||
</view>
|
||||
|
||||
<view class="calendar-text">
|
||||
<view class="calendar-result">
|
||||
<text>{{ !isRange ? activeDate : startDate }}</text>
|
||||
<text v-if="endDate">至{{ endDate }}</text>
|
||||
</view>
|
||||
<view class="calendar-btn">
|
||||
<button :style="{opacity:disabled ? '.5' : '1'}" :size="28" :disabled="disabled"
|
||||
@click="confireBtnClick(false)">确定
|
||||
</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="mask" :class="[value ? 'mask-show' : '']" @tap="hide"></view>
|
||||
</view>
|
||||
</template>
|
||||
<script>
|
||||
import calendar from './calendar.js';
|
||||
export default {
|
||||
name: 'lCalendar',
|
||||
model: {
|
||||
prop: 'value',
|
||||
event: 'input'
|
||||
},
|
||||
props: {
|
||||
//双向绑定的值 用于展示/关闭日历
|
||||
value: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
//是否选择范围 true是 false选择单个日期
|
||||
isRange: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
//可切换最大年份
|
||||
maxYear: {
|
||||
type: Number,
|
||||
default: 2100
|
||||
},
|
||||
//可切换最小年份
|
||||
minYear: {
|
||||
type: Number,
|
||||
default: 1920
|
||||
},
|
||||
//最小可选日期 不在范围内日期禁选
|
||||
minDate: {
|
||||
type: String,
|
||||
default: '1920-01-01'
|
||||
},
|
||||
//最大可选日期
|
||||
maxDate: {
|
||||
type: String,
|
||||
default: '2100-1-1'
|
||||
},
|
||||
//组件标题
|
||||
title: {
|
||||
type: String,
|
||||
default: '日期选择'
|
||||
},
|
||||
//月份切换箭头颜色
|
||||
monthChangeColor: {
|
||||
type: String,
|
||||
default: '#999'
|
||||
},
|
||||
//年份切换箭头颜色
|
||||
yearChangeColor: {
|
||||
type: String,
|
||||
default: '#bfbfbf'
|
||||
},
|
||||
//默认日期字体颜色
|
||||
color: {
|
||||
type: String,
|
||||
default: '#333'
|
||||
},
|
||||
|
||||
//选中日期字体颜色
|
||||
activeColor: {
|
||||
type: String,
|
||||
default: '#fff'
|
||||
},
|
||||
//选中日期背景色
|
||||
activeBgColor: {
|
||||
type: String,
|
||||
default: '#55BBF9'
|
||||
},
|
||||
//范围内日期背景色
|
||||
rangeBgColor: {
|
||||
type: String,
|
||||
default: 'rgba(85, 187, 249, 0.1)'
|
||||
},
|
||||
//范围内日期字体颜色
|
||||
rangeColor: {
|
||||
type: String,
|
||||
default: '#55BBF9'
|
||||
},
|
||||
|
||||
//范围选择时生效 开始日期自定义文字
|
||||
startText: {
|
||||
type: String,
|
||||
default: '开始'
|
||||
},
|
||||
//范围选择时生效 结束日期自定义文字
|
||||
endText: {
|
||||
type: String,
|
||||
default: '结束'
|
||||
},
|
||||
//是否显示农历
|
||||
lunar: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
//初始化开始选中日期 格式: 2020-06-06 或 2020/06/06
|
||||
initStartDate: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
//初始化结束日期 格式: 2020-06-06 或 2020/06/06
|
||||
initEndDate: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
weekday: 1, // 星期几,值为1-7
|
||||
weekdayArr: [],
|
||||
days: 0, //当前月有多少天
|
||||
daysArr: [],
|
||||
showTitle: '',//当前年月标题
|
||||
year: 2020,
|
||||
month: 0,
|
||||
day: 0,
|
||||
startYear: 0,
|
||||
startMonth: 0,
|
||||
startDay: 0,
|
||||
endYear: 0,
|
||||
endMonth: 0,
|
||||
endDay: 0,
|
||||
today: '', //今天的日期
|
||||
activeDate: '', //当前选中日期
|
||||
startDate: '', //范围选择时的选中开始日期
|
||||
endDate: '', //范围选择时的选中结束日期
|
||||
isStart: true,
|
||||
min: null,
|
||||
max: null,
|
||||
dateHeight: 20
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
dataChange() {
|
||||
return `${this.type}-${this.minDate}-${this.maxDate}-${this.initStartDate}-${this.initEndDate}`;
|
||||
},
|
||||
disabled() {
|
||||
return this.isRange && (!this.startDate || !this.endDate)
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
dataChange(val) {
|
||||
this.init();
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.init();
|
||||
},
|
||||
methods: {
|
||||
getColor(index, type) {
|
||||
let color = type == 1 ? '' : this.color;
|
||||
let day = index + 1;
|
||||
let date = `${this.year}-${this.month}-${day}`;
|
||||
let timestamp = new Date(date.replace(/\-/g, '/')).getTime();
|
||||
let start = this.startDate.replace(/\-/g, '/');
|
||||
let end = this.endDate.replace(/\-/g, '/');
|
||||
if ((this.activeDate == date) || this.startDate == date || this.endDate == date) {
|
||||
color = type == 1 ? this.activeBgColor : this.activeColor;
|
||||
} else if (this.endDate && timestamp > new Date(start).getTime() && timestamp < new Date(end).getTime()) {
|
||||
color = type == 1 ? this.rangeBgColor : this.rangeColor;
|
||||
}
|
||||
return color;
|
||||
},
|
||||
getText(index, startDate, endDate) {
|
||||
let text = this.lunar ? this.getLunar(this.year, this.month, index + 1) : '';
|
||||
if (this.isRange) {
|
||||
if (this.lunar) {
|
||||
let date = `${this.year}-${this.month}-${index + 1}`;
|
||||
if (startDate == date && startDate != endDate) {
|
||||
text = this.startText;
|
||||
} else if (endDate == date) {
|
||||
text = this.endText;
|
||||
}
|
||||
}
|
||||
}
|
||||
return text;
|
||||
},
|
||||
getLunar(year, month, day) {
|
||||
let obj = calendar.solar2lunar(year, month, day);
|
||||
if (obj.IDayCn == '初一') {
|
||||
return obj.IMonthCn
|
||||
}
|
||||
return obj.IDayCn;
|
||||
},
|
||||
init() {
|
||||
this.dateHeight = uni.getSystemInfoSync().windowWidth / 7;
|
||||
let now = new Date();
|
||||
this.year = now.getFullYear();
|
||||
this.month = now.getMonth() + 1;
|
||||
this.day = now.getDate();
|
||||
this.today = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()}`;
|
||||
this.activeDate = this.today;
|
||||
this.min = this.initDate(this.minDate);
|
||||
this.max = this.initDate(this.maxDate);
|
||||
if (this.isDisable(this.year, this.month, this.day)) {
|
||||
this.year = this.min.year;
|
||||
this.month = this.min.month;
|
||||
this.day = this.min.day;
|
||||
this.activeDate = `${this.min.year}-${this.min.month}-${this.min.day}`;
|
||||
this.max = this.initDate(this.maxDate || this.minDate);
|
||||
}
|
||||
this.startDate = '';
|
||||
this.startYear = 0;
|
||||
this.startMonth = 0;
|
||||
this.startDay = 0;
|
||||
if (this.initStartDate) {
|
||||
let start = new Date(this.initStartDate.replace(/\-/g, '/'));
|
||||
if (!this.isRange) {
|
||||
this.year = start.getFullYear();
|
||||
this.month = start.getMonth() + 1;
|
||||
this.day = start.getDate();
|
||||
this.activeDate = `${start.getFullYear()}-${start.getMonth() + 1}-${start.getDate()}`;
|
||||
} else {
|
||||
this.startDate = `${start.getFullYear()}-${start.getMonth() + 1}-${start.getDate()}`;
|
||||
this.startYear = start.getFullYear();
|
||||
this.startMonth = start.getMonth() + 1;
|
||||
this.startDay = start.getDate();
|
||||
this.activeDate = '';
|
||||
}
|
||||
|
||||
}
|
||||
this.endYear = 0;
|
||||
this.endMonth = 0;
|
||||
this.endDay = 0;
|
||||
this.endDate = '';
|
||||
if (this.initEndDate && this.isRange) {
|
||||
let end = new Date(this.initEndDate.replace(/\-/g, '/'));
|
||||
this.endDate = `${end.getFullYear()}-${end.getMonth() + 1}-${end.getDate()}`;
|
||||
this.endYear = end.getFullYear();
|
||||
this.endMonth = end.getMonth() + 1;
|
||||
this.endDay = end.getDate();
|
||||
this.activeDate = '';
|
||||
this.year = end.getFullYear();
|
||||
this.month = end.getMonth() + 1;
|
||||
this.day = end.getDate();
|
||||
}
|
||||
this.isStart = true;
|
||||
this.changeData();
|
||||
},
|
||||
//日期处理
|
||||
initDate(date) {
|
||||
let dateArr = date.split('-');
|
||||
return {
|
||||
year: Number(dateArr[0] || 1920),
|
||||
month: Number(dateArr[1] || 1),
|
||||
day: Number(dateArr[2] || 1)
|
||||
};
|
||||
},
|
||||
isDisable(year, month, day) {
|
||||
let bool = true;
|
||||
let date = `${year}/${month}/${day}`;
|
||||
let min = `${this.min.year}/${this.min.month}/${this.min.day}`;
|
||||
let max = `${this.max.year}/${this.max.month}/${this.max.day}`;
|
||||
let timestamp = new Date(date).getTime();
|
||||
if (timestamp >= new Date(min).getTime() && timestamp <= new Date(max).getTime()) {
|
||||
bool = false;
|
||||
}
|
||||
return bool;
|
||||
},
|
||||
generateArray(start, end) {
|
||||
return Array.from(new Array(end + 1).keys()).slice(start);
|
||||
},
|
||||
formatNum(num) {
|
||||
return num < 10 ? '0' + num : num + '';
|
||||
},
|
||||
//一个月有多少天
|
||||
getMonthDay(year, month) {
|
||||
let days = new Date(year, month, 0).getDate();
|
||||
return days;
|
||||
},
|
||||
// 获取当前日期是星期几
|
||||
getWeekday(year, month) {
|
||||
let date = new Date(`${year}/${month}/01 00:00:00`);
|
||||
return date.getDay();
|
||||
},
|
||||
changeMonth(isAdd) {
|
||||
if (isAdd) {
|
||||
let month = this.month + 1;
|
||||
let year = month > 12 ? this.year + 1 : this.year;
|
||||
if (year > this.minYear || year < this.maxYear) {
|
||||
this.month = month > 12 ? 1 : month;
|
||||
this.year = year;
|
||||
this.changeData();
|
||||
}
|
||||
} else {
|
||||
let month = this.month - 1;
|
||||
let year = month < 1 ? this.year - 1 : this.year;
|
||||
if (year > this.minYear || year < this.maxYear) {
|
||||
this.month = month < 1 ? 12 : month;
|
||||
this.year = year;
|
||||
this.changeData();
|
||||
}
|
||||
}
|
||||
},
|
||||
changeYear(isAdd) {
|
||||
let year = isAdd ? this.year + 1 : this.year - 1;
|
||||
if (year > this.minYear || year < this.maxYear) {
|
||||
this.year = year;
|
||||
this.changeData();
|
||||
}
|
||||
},
|
||||
changeData() {
|
||||
this.days = this.getMonthDay(this.year, this.month);
|
||||
this.daysArr = this.generateArray(1, this.days);
|
||||
this.weekday = this.getWeekday(this.year, this.month);
|
||||
this.weekdayArr = this.generateArray(1, this.weekday);
|
||||
this.showTitle = `${this.year}年${this.month}月`;
|
||||
if (!this.isRange) {
|
||||
this.confireBtnClick(true);
|
||||
}
|
||||
},
|
||||
dateClick: function(day) {
|
||||
day += 1;
|
||||
if (!this.isDisable(this.year, this.month, day)) {
|
||||
this.day = day;
|
||||
let date = `${this.year}-${this.month}-${day}`;
|
||||
if (!this.isRange) {
|
||||
this.activeDate = date;
|
||||
} else {
|
||||
let compare = new Date(date.replace(/\-/g, '/')).getTime() < new Date(this.startDate.replace(
|
||||
/\-/g, '/')).getTime();
|
||||
if (this.isStart || compare) {
|
||||
this.startDate = date;
|
||||
this.startYear = this.year;
|
||||
this.startMonth = this.month;
|
||||
this.startDay = this.day;
|
||||
this.endYear = 0;
|
||||
this.endMonth = 0;
|
||||
this.endDay = 0;
|
||||
this.endDate = '';
|
||||
this.activeDate = '';
|
||||
this.isStart = false;
|
||||
} else {
|
||||
this.endDate = date;
|
||||
this.endYear = this.year;
|
||||
this.endMonth = this.month;
|
||||
this.endDay = this.day;
|
||||
this.isStart = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
hide() {
|
||||
this.$emit('input', false)
|
||||
},
|
||||
getWeekText(date) {
|
||||
date = new Date(`${date.replace(/\-/g, '/')} 00:00:00`);
|
||||
let week = date.getDay();
|
||||
return '星期' + ['日', '一', '二', '三', '四', '五', '六'][week];
|
||||
},
|
||||
confireBtnClick(show) {
|
||||
if (!show) {
|
||||
this.hide();
|
||||
}
|
||||
if (!this.isRange) {
|
||||
let arr = this.activeDate.split('-');
|
||||
let year = +arr[0];
|
||||
let month = +arr[1];
|
||||
let day = +arr[2];
|
||||
//当前月有多少天
|
||||
let days = this.getMonthDay(year, month);
|
||||
let result = `${year}-${this.formatNum(month)}-${this.formatNum(day)}`;
|
||||
let weekText = this.getWeekText(result);
|
||||
let isToday = false;
|
||||
if (`${year}-${month}-${day}` == this.today) {
|
||||
//今天
|
||||
isToday = true;
|
||||
}
|
||||
let lunar = calendar.solar2lunar(year, month, day);
|
||||
this.$emit('change', {
|
||||
year: year,
|
||||
month: month,
|
||||
day: day,
|
||||
days: days,
|
||||
result: result,
|
||||
week: weekText,
|
||||
isToday: isToday,
|
||||
lunar: lunar
|
||||
});
|
||||
} else {
|
||||
if (!this.startDate || !this.endDate) return;
|
||||
let startMonth = this.formatNum(this.startMonth);
|
||||
let startDay = this.formatNum(this.startDay);
|
||||
let startDate = `${this.startYear}-${startMonth}-${startDay}`;
|
||||
let startWeek = this.getWeekText(startDate);
|
||||
let startLunar = calendar.solar2lunar(this.startYear, startMonth, startDay);
|
||||
|
||||
let endMonth = this.formatNum(this.endMonth);
|
||||
let endDay = this.formatNum(this.endDay);
|
||||
let endDate = `${this.endYear}-${endMonth}-${endDay}`;
|
||||
let endWeek = this.getWeekText(endDate);
|
||||
let endLunar = calendar.solar2lunar(this.endYear, endMonth, endDay);
|
||||
this.$emit('change', {
|
||||
startYear: this.startYear,
|
||||
startMonth: this.startMonth,
|
||||
startDay: this.startDay,
|
||||
startDate: startDate,
|
||||
startWeek: startWeek,
|
||||
startLunar: startLunar,
|
||||
endYear: this.endYear,
|
||||
endMonth: this.endMonth,
|
||||
endDay: this.endDay,
|
||||
endDate: endDate,
|
||||
endWeek: endWeek,
|
||||
endLunar: endLunar
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@font-face {
|
||||
font-family: 'l-icons';
|
||||
src: url('data:font/ttf;charset=utf-8;base64,AAEAAAANAIAAAwBQRkZUTZa9XzsAAAjcAAAAHEdERUYAKQAOAAAIvAAAAB5PUy8yPDVJwwAAAVgAAABgY21hcMxRtw0AAAHUAAABYmdhc3D//wADAAAItAAAAAhnbHlm05h+ZAAAA0wAAAJ8aGVhZCQifFoAAADcAAAANmhoZWEHyAOSAAABFAAAACRobXR4EnYBLQAAAbgAAAAcbG9jYQKkAegAAAM4AAAAEm1heHABFgBMAAABOAAAACBuYW1lXoIBAgAABcgAAAKCcG9zdMeZtAYAAAhMAAAAaAABAAAAAQAA+jMzTF8PPPUACwQAAAAAAOCMnBkAAAAA4IycGQAA/6sD6gOAAAAACAACAAAAAAAAAAEAAAOA/4AAXAQLAAAAAAPqAAEAAAAAAAAAAAAAAAAAAAAGAAEAAAAIAEAABAAAAAAAAgAAAAoACgAAAP8AAAAAAAAABAQEAZAABQAAAokCzAAAAI8CiQLMAAAB6wAyAQgAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZADA5gDm8AOA/4AAAAPcAIAAAAABAAAAAAAAAAAAAAAgAAEEAAAAAAAAAAFVAAAECwAWBAsAHgQAAPkBCwAAAAAAAwAAAAMAAAAcAAEAAAAAAFwAAwABAAAAHAAEAEAAAAAMAAgAAgAE5gDmB+Yf5iPm8P//AADmAOYH5h/mI+bw//8aAxn9GeYZ4xkXAAEAAAAAAAAAAAAAAAAAAAEGAAABAAAAAAAAAAECAAAAAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAByAOAA9AEIAT4AAAAEABb/wQPiA0sAIQAkAD4APwAAAQYUFwEWHwE3Njc2JyYnJicBJwE2NzY3NicmJzEuAQYHCQE3ByU+ATc2JwEnNwE2Jy4BDwEGBw4BFwEWHwE3MQHuFhYBcRIZDAwvDQQDAwsFBf7IBQE3DgUJAgICAQQLLDET/o8BqAwM/kUbJwEBGf7HBgYBOhwGB1MiabFZFwEXAXESGAoJAbkWQxf+kBIEAgIKLQ8TDw4HBAE5BAE3DQgNDRINBQkYGAcT/o/+CAICAQIqGyIZATkEBQE6HCUsHh5psVgXRBf+kBIEAgEAAAAEAB7/tQPqAz8AIAAiADwAPQAAATY0JwEmLwEHBgcGFxYXFhcBFwEGBwYHBhcWFzEeATY3AwclDgEHBhcBFwcBBhceAT8BNjc+AScBJi8BBzECEhYW/o8SGQwMLw0EAwMLBQUBOAX+yQ4FCQICAgEECywxEzcMAccbJwEBGQE5Bgb+xhwGB1MiabFZFwEX/o8SGAoJAUcWQxcBcBIEAgIKLQ8TDw4HBP7HBP7JDQgNDRINBQkYGAcTA2kCAQIqGyIZ/scEBf7GHCUsHh5psVgXRBcBcBIEAgEAAAAAAQD5/68DSQOAAAUAADcXCQEHAflnAen+F2cBghZnAekB6Gf+fwAAAAEBC/+rAxgDVQAFAAAJARcJAQcBCwG9UP6JAWJRAYEB1Ez+dv52SgABAAD/sAPOA4AAGwAACQEWFAYiJwkBBiImNDcJASY0NjIXCQE2MhYUBwJPAWoVKzwW/pb+lhY8KxUBa/6VFSs8FgFqAWoWPCsVAZj+lRU9KxUBa/6VFSs9FQFrAWsVPSsV/pUBaxUrPRUAAAAAABIA3gABAAAAAAAAABMAKAABAAAAAAABAAgATgABAAAAAAACAAcAZwABAAAAAAADAAgAgQABAAAAAAAEAAgAnAABAAAAAAAFAAsAvQABAAAAAAAGAAgA2wABAAAAAAAKACsBPAABAAAAAAALABMBkAADAAEECQAAACYAAAADAAEECQABABAAPAADAAEECQACAA4AVwADAAEECQADABAAbwADAAEECQAEABAAigADAAEECQAFABYApQADAAEECQAGABAAyQADAAEECQAKAFYA5AADAAEECQALACYBaABDAHIAZQBhAHQAZQBkACAAYgB5ACAAaQBjAG8AbgBmAG8AbgB0AABDcmVhdGVkIGJ5IGljb25mb250AABpAGMAbwBuAGYAbwBuAHQAAGljb25mb250AABSAGUAZwB1AGwAYQByAABSZWd1bGFyAABpAGMAbwBuAGYAbwBuAHQAAGljb25mb250AABpAGMAbwBuAGYAbwBuAHQAAGljb25mb250AABWAGUAcgBzAGkAbwBuACAAMQAuADAAAFZlcnNpb24gMS4wAABpAGMAbwBuAGYAbwBuAHQAAGljb25mb250AABHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAABHZW5lcmF0ZWQgYnkgc3ZnMnR0ZiBmcm9tIEZvbnRlbGxvIHByb2plY3QuAABoAHQAdABwADoALwAvAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAABodHRwOi8vZm9udGVsbG8uY29tAAAAAAIAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAEAAgECAQMBBAEFAQYKeW91amlhbnRvdQt5b3VqaWFudG91MQt5b3VqaWFudG91Mgp6dW9qaWFudG91B3NoYW5jaHUAAAAB//8AAgABAAAADAAAABYAAAACAAEAAwAHAAEABAAAAAIAAAAAAAAAAQAAAADVpCcIAAAAAOCMnBkAAAAA4IycGQ==') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-display: swap;
|
||||
}
|
||||
|
||||
.l-icons {
|
||||
font-family: 'l-icons';
|
||||
font-size: 38rpx;
|
||||
color: #333333;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale
|
||||
}
|
||||
|
||||
.icon-shanchu:before {
|
||||
content: "\e6f0";
|
||||
}
|
||||
|
||||
.icon-youjiantou:before {
|
||||
content: "\e600";
|
||||
}
|
||||
|
||||
.icon-zuojiantou:before {
|
||||
content: "\e623";
|
||||
}
|
||||
|
||||
.icon-youjiantou1:before {
|
||||
content: "\e607";
|
||||
}
|
||||
|
||||
.icon-youjiantou2:before {
|
||||
content: "\e61f";
|
||||
}
|
||||
|
||||
.l-calendar-box {
|
||||
width: 100%;
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
z-index: 9999;
|
||||
visibility: hidden;
|
||||
transform: translate3d(0, 100%, 0);
|
||||
transform-origin: center;
|
||||
transition: all 0.3s ease-in-out;
|
||||
min-height: 20rpx;
|
||||
|
||||
.calendar-top {
|
||||
width: 100%;
|
||||
height: 80rpx;
|
||||
padding: 0 40rpx;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
background-color: #fff;
|
||||
color: #333;
|
||||
position: relative;
|
||||
border-top-left-radius: 20rpx;
|
||||
border-top-right-radius: 20rpx;
|
||||
overflow: hidden;
|
||||
.close {
|
||||
position: absolute;
|
||||
right: 30rpx;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
color: #999;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.date-box {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 20rpx 0 30rpx;
|
||||
background-color: #fff;
|
||||
.date-arrowleft {
|
||||
margin-right: 32rpx;
|
||||
}
|
||||
|
||||
.date-arrowright {
|
||||
margin-left: 32rpx;
|
||||
}
|
||||
|
||||
.title-datetime {
|
||||
padding: 0 16rpx;
|
||||
color: #333;
|
||||
font-size: 30rpx;
|
||||
line-height: 30rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
.date-weekday {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
background-color: #fff;
|
||||
font-size: 24rpx;
|
||||
line-height: 24rpx;
|
||||
color: #555;
|
||||
box-shadow: 0 15rpx 20rpx -15rpx #efefef;
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
.date-weekday-item {
|
||||
width: 14.2857%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 12rpx 0;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
}
|
||||
}
|
||||
.date-content {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
padding: 12rpx 0;
|
||||
box-sizing: border-box;
|
||||
background-color: #fff;
|
||||
position: relative;
|
||||
align-content: flex-start;
|
||||
.date-weekday-item {
|
||||
width: 14.2857%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 12rpx 0;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
z-index: 2;
|
||||
|
||||
.date-content-item {
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
font-size: 32rpx;
|
||||
line-height: 32rpx;
|
||||
position: relative;
|
||||
border-radius: 50%;
|
||||
background-color: transparent;
|
||||
.custom-desc {
|
||||
width: 100%;
|
||||
font-size: 24rpx;
|
||||
line-height: 24rpx;
|
||||
transform: scale(0.8);
|
||||
transform-origin: center center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
}
|
||||
.date-content-item-desc {
|
||||
width: 100%;
|
||||
font-size: 24rpx;
|
||||
line-height: 24rpx;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
transform: scale(0.8);
|
||||
transform-origin: center center;
|
||||
text-align: center;
|
||||
bottom: 8rpx;
|
||||
z-index: 2;
|
||||
}
|
||||
}
|
||||
.start-date {
|
||||
border-top-left-radius: 8rpx;
|
||||
border-bottom-left-radius: 8rpx;
|
||||
}
|
||||
|
||||
.end-date {
|
||||
border-top-right-radius: 8rpx;
|
||||
border-bottom-right-radius: 8rpx;
|
||||
}
|
||||
|
||||
.bg-mounth {
|
||||
position: absolute;
|
||||
font-size: 260rpx;
|
||||
line-height: 260rpx;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
color: #f5f5f7;
|
||||
z-index: 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.calendar-text {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-direction: column;
|
||||
background-color: #fff;
|
||||
padding: 0 42rpx 30rpx;
|
||||
box-sizing: border-box;
|
||||
font-size: 24rpx;
|
||||
color: #666;
|
||||
.calendar-result {
|
||||
height: 48rpx;
|
||||
transform: scale(0.9);
|
||||
transform-origin: center 100%;
|
||||
}
|
||||
|
||||
.calendar-btn {
|
||||
width: 100%;
|
||||
|
||||
button {
|
||||
background-color: #55BBF9;
|
||||
color: #fff;
|
||||
height: 72rpx;
|
||||
line-height: 72rpx;
|
||||
font-size: 32rpx
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
.mask {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: rgba(0, 0, 0, 0.6);
|
||||
z-index: 9996;
|
||||
transition: all 0.3s ease-in-out;
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.mask-show {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
/* @font-face {
|
||||
font-family: 'tuiDateFont';
|
||||
src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAVgAA0AAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAFRAAAABoAAAAci0/w50dERUYAAAUkAAAAHgAAAB4AKQANT1MvMgAAAaAAAABDAAAAVjxuSNNjbWFwAAAB+AAAAEoAAAFS5iPQt2dhc3AAAAUcAAAACAAAAAj//wADZ2x5ZgAAAlQAAAFHAAABvPf29TBoZWFkAAABMAAAADAAAAA2GMsN3WhoZWEAAAFgAAAAHQAAACQHjAOFaG10eAAAAeQAAAATAAAAFgzQAPJsb2NhAAACRAAAABAAAAAQAOoBSG1heHAAAAGAAAAAHgAAACABEwA3bmFtZQAAA5wAAAFJAAACiCnmEVVwb3N0AAAE6AAAADQAAABLUwjqHHjaY2BkYGAAYp5Gj5/x/DZfGbhZGEDg1tUn7+F00P/LzOuY9YFcDgYmkCgAa0gNlHjaY2BkYGBu+N/AEMPCAALM6xgYGVABCwBT4AMaAAAAeNpjYGRgYGBn0GZgYgABEMkFhAwM/8F8BgANaAFLAAB42mNgZGFgnMDAysDA1Ml0hoGBoR9CM75mMGLkAIoysDIzYAUBaa4pDA7PGJ49ZG7438AQw9zA0AAUZgTJAQDrcAy8AHjaY2GAABYIDgLCBQx1AAcEAc8AeNpjYGBgZoBgGQZGBhDwAfIYwXwWBgMgzQGETAwMzxifcTx7+P8/kMUAYUkxS/6VVIXqAgNGNgY4lxGoB6QPBTAyDHsAADDkDYkAAAAAAAAAAAAAADQAagC2AN542m2QsU7DMBCG/Tt1bNPUiUnkSgiVtqKpxJAgVLVbeAa6MaK+B4JXgJWBjY21UtW5gpkdMTFX7dzApaJLhXU6n8+n//ttxtn458N79XJWZ8eMxS00C4wy9A1EP8PQncAlIQzS4WgsVtPpSmwzV3OFRqLetH5TSQMK939X61ptPZ2p2EAttNMLBRMrtschQblDeS34aY50cIkCzg/B2Y5C+VpyQxhFkRgu515O8jvU5mmPM2O0wJ5Z27vhX+yMsV437WvCdTM+GI40MgwKfuGammC0uURqeqFMfe9cxaJclkt5GMaB1hIR1VobOgpEiKq+sLZcIrJWhO3/Jw7qWlYj1Jf21FaCtmd5bevrlk28O/7A4spXTl4KTh9MTlqQ8PESBRstReic+sRj0Dni9fIqmNS/pXNWCvWOeYBmx5S9Bsn9Ah+5WtAAeNp9kD1OAzEQhZ/zByQSQiCoXVEA2vyUKRMp9Ailo0g23pBo1155nUg5AS0VB6DlGByAGyDRcgpelkmTImvt6PObmeexAZzjGwr/3yXuhBWO8ShcwREy4Sr1F+Ea+V24jhY+hRvUf4SbuFUD4RYu1BsdVO2Eu5vSbcsKZxgIV3CKJ+Eq9ZVwjfwqXMcVPoQb1L+EmxjjV7iFa2WpDOFhMEFgnEFjig3jAjEcLJIyBtahOfRmEsxMTzd6ETubOBso71dilwMeaDnngCntPbdmvkon/mDLgdSYbh4FS7YpjS4idCgbXyyc1d2oc7D9nu22tNi/a4E1x+xRDWzU/D3bM9JIbAyvkJI18jK3pBJTj2hrrPG7ZynW814IiU68y/SIx5o0dTr3bmniwOLn8owcfbS5kj33qBw+Y1kIeb/dTsQgil2GP5PYcRkAAAB42mNgYoAALjDJyIAO2MGiTIxMjMyMLIys7GmJeRmlmWZQ2pQ5OSORLaU0Mz2/FACDfwlbAAAAAf//AAIAAQAAAAwAAAAWAAAAAgABAAMABgABAAQAAAACAAAAAHjaY2BgYGQAgqtL1DlA9K2rT97DaABNlwiuAAA=) format('woff');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.tui-iconfont {
|
||||
font-family: 'tuiDateFont' !important;
|
||||
font-size: 36rpx;
|
||||
font-style: normal;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
.tui-font-close:before {
|
||||
content: '\e608';
|
||||
}
|
||||
|
||||
.tui-font-check:before {
|
||||
content: '\e6e1';
|
||||
}
|
||||
|
||||
.date-arrowright:before {
|
||||
content: '\e600';
|
||||
}
|
||||
|
||||
.date-arrowleft:before {
|
||||
content: '\e601';
|
||||
} */
|
||||
|
||||
|
||||
// .calendar-radius {
|
||||
// border-top-left-radius: 20rpx;
|
||||
// border-top-right-radius: 20rpx;
|
||||
// overflow: hidden;
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.tui-btn-calendar {
|
||||
padding: 16rpx;
|
||||
box-sizing: border-box;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.l-opacity {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.calendar-box-show {
|
||||
transform: translate3d(0, 0, 0);
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// .tui-lunar-unshow {
|
||||
// position: absolute;
|
||||
// left: 0;
|
||||
// bottom: 8rpx;
|
||||
// z-index: 2;
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,149 @@
|
||||
<template>
|
||||
<view
|
||||
class="tab-bar"
|
||||
v-if="
|
||||
['Recharge', 'Withdraw', 'Index', 'User', 'Transfer'].includes(routeName)
|
||||
"
|
||||
>
|
||||
<view
|
||||
class="item"
|
||||
:class="{ active: routeName == item.name }"
|
||||
v-for="(item, index) in list"
|
||||
:key="index"
|
||||
@click="goTab(item)"
|
||||
>
|
||||
<image
|
||||
class="icon"
|
||||
:src="routeName == item.name ? item.selectedIconPath : item.iconPath"
|
||||
alt=""
|
||||
></image>
|
||||
<view class="text">{{ item.text }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState } from "vuex";
|
||||
export default {
|
||||
tabBar: true,
|
||||
data() {
|
||||
return {
|
||||
routeName: "",
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
userInfo: (state) => state.app.userInfo,
|
||||
list: (state) => {
|
||||
const userInfo = state.app.userInfo;
|
||||
const $lang = state.app.lang[state.app.language];
|
||||
let channel = [];
|
||||
if (userInfo.pay_channel) {
|
||||
if (userInfo.pay_channel == 'OPR') {
|
||||
channel = [
|
||||
{
|
||||
text: $lang.recharge,
|
||||
name: "Recharge",
|
||||
pagePath: "pages/rechargeopr",
|
||||
iconPath: "/static/tabBar/recharge.png",
|
||||
selectedIconPath: "/static/tabBar/recharge_active.png",
|
||||
},
|
||||
];
|
||||
} else {
|
||||
channel = [
|
||||
{
|
||||
text: $lang.recharge,
|
||||
name: "Recharge",
|
||||
pagePath: "pages/recharge",
|
||||
iconPath: "/static/tabBar/recharge.png",
|
||||
selectedIconPath: "/static/tabBar/recharge_active.png",
|
||||
},
|
||||
{
|
||||
text: $lang.withdraw,
|
||||
name: "Withdraw",
|
||||
pagePath: "pages/withdraw",
|
||||
iconPath: "/static/tabBar/withdrawal.png",
|
||||
selectedIconPath: "/static/tabBar/withdrawal_active.png",
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
let list = [
|
||||
{
|
||||
text: $lang.home,
|
||||
name: "Index",
|
||||
pagePath: "pages/index",
|
||||
iconPath: "/static/tabBar/index-ba.png",
|
||||
selectedIconPath: "/static/tabBar/index-ba-active.png",
|
||||
},
|
||||
...channel,
|
||||
// {
|
||||
// text: $lang.transfer,
|
||||
// name: "Transfer",
|
||||
// pagePath: "pages/transfer",
|
||||
// iconPath: "/static/tabBar/transfer.png",
|
||||
// selectedIconPath: "/static/tabBar/transfer_active.png",
|
||||
// },
|
||||
{
|
||||
text: $lang.user,
|
||||
name: "User",
|
||||
pagePath: "pages/user/index",
|
||||
iconPath: "/static/tabBar/user.png",
|
||||
selectedIconPath: "/static/tabBar/user_active.png",
|
||||
},
|
||||
];
|
||||
return list;
|
||||
},
|
||||
}),
|
||||
},
|
||||
methods: {
|
||||
goTab(item) {
|
||||
uni.switchTab({
|
||||
url: item.pagePath,
|
||||
});
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
$route: {
|
||||
handler(route) {
|
||||
this.routeName = route.name;
|
||||
},
|
||||
immediate: true,
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.tab-bar {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
display: flex;
|
||||
background: #000;
|
||||
justify-content: space-between;
|
||||
height: 50px;
|
||||
.item {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
color: #fff;
|
||||
&.active {
|
||||
color: #deb366;
|
||||
}
|
||||
.icon {
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
}
|
||||
.text {
|
||||
font-size: 12px;
|
||||
padding-top: 2px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<script>
|
||||
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
|
||||
CSS.supports('top: constant(a)'))
|
||||
document.write(
|
||||
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
|
||||
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
|
||||
</script>
|
||||
<title></title>
|
||||
<!--preload-links-->
|
||||
<!--app-context-->
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"><!--app-html--></div>
|
||||
<script type="module" src="/main.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,169 @@
|
||||
var cn = {
|
||||
home: "首页",
|
||||
login: "登录",
|
||||
dome: "试玩",
|
||||
register: "注册",
|
||||
account: "账号",
|
||||
password: "密码",
|
||||
nowPassword: "旧密码",
|
||||
nwwPassword: "新密码",
|
||||
invitationCode: "邀请码",
|
||||
reset: "重置",
|
||||
confirm: "确定",
|
||||
cancel: "取消",
|
||||
success: "成功",
|
||||
|
||||
optional: "选填",
|
||||
logining: "登录中...",
|
||||
submit: "提交中...",
|
||||
enterPhone: "请输入手机号",
|
||||
enterAccount: "请输入账号",
|
||||
enterPassword: "请输入密码",
|
||||
enterNowPassword: "请输旧入密码",
|
||||
enterNewPassword: "请输新入密码",
|
||||
enterPasswordAgain: "请再次输入密码",
|
||||
confirmPassword: "确认密码",
|
||||
goRegister: "没有账号?去注册",
|
||||
goLogin: "已账号?去登录",
|
||||
submit: "提交",
|
||||
|
||||
baccarat: "真人百家乐",
|
||||
niuniu: "真人牛牛",
|
||||
longhu: "真人龙虎",
|
||||
lunpan: "真人轮盘",
|
||||
threecard: "真人三宝",
|
||||
zhajinghua: "真人炸金花",
|
||||
sedie: "真人色碟",
|
||||
sicbo: "真人骰宝",
|
||||
buyu: "捕鱼游戏",
|
||||
qipai: "棋牌游戏",
|
||||
|
||||
recharge: "存款",
|
||||
rechargeWithdrawNetwork: "充/提币网络",
|
||||
pleaseChoose: "请选择",
|
||||
chooseRecharge: "请选择存款方式:",
|
||||
walletAddress: "钱包地址",
|
||||
copy: "复制",
|
||||
copySuccessfully: "复制成功",
|
||||
rechargeTip:
|
||||
"每位会员都有独立的USTD存款地址址。转账成功后系统会根据转账金额自动到账如遇长时间未到账请及时联系主页客服进行咨询",
|
||||
|
||||
rechargeTip2:
|
||||
"请认准以上地址!转帐成功后联系首页在线客服,并将转帐凭证发送给客服上分。",
|
||||
|
||||
withdraw: "取款",
|
||||
balance: "账户余额",
|
||||
chooseWithdraw: "取款方式 : ",
|
||||
pleaseChooseWithdraw: "请选择取款方式",
|
||||
enterWithdrawalAddress: "请输入提币地址",
|
||||
amount: "金额",
|
||||
enterWithdrawalamount: "请输入提币金额",
|
||||
withdrawTip: "网络服务费/手续费由会员支付",
|
||||
commission: "手续费",
|
||||
amountCannotBe0: "金额不能为0",
|
||||
submittingApplication: "提交申请中...",
|
||||
|
||||
transfer: "划转",
|
||||
accountBalance: "账户余额",
|
||||
gameBalance: "游戏余额",
|
||||
from: "从 ",
|
||||
to: "到 ",
|
||||
transferType: "划转类型 : ",
|
||||
pleaseChooseTransferType: "请选择划转类型",
|
||||
pleaseEnterTransferAmount: "请输入划转金额",
|
||||
capitalAccount: "资金账户",
|
||||
gameAccount: "游戏账户",
|
||||
|
||||
user: "我的",
|
||||
userBalance: "余额",
|
||||
logout: "退出登录",
|
||||
tip: "提示",
|
||||
logoutTip: "确认退出登录?",
|
||||
languageSettings: "语言设置",
|
||||
|
||||
userMenu: [
|
||||
{ id: 0, name: "语言设置", path: "" },
|
||||
{ id: 1, name: "划转记录", path: "/pages/user/transactionRecords" },
|
||||
{ id: 2, name: "存取款记录", path: "/pages/user/fundRecords" },
|
||||
{ id: 3, name: "安全中心", path: "/pages/user/safe" },
|
||||
{ id: 4, name: "存款", path: "/pages/recharge" },
|
||||
{ id: 5, name: "取款", path: "/pages/withdraw" },
|
||||
{ id: 6, name: "划转", path: "/pages/transfer" },
|
||||
{ id: 7, name: "游戏记录", path: "/pages/user/gameRecords" },
|
||||
],
|
||||
|
||||
noMore: "没有更多了",
|
||||
|
||||
// transaction
|
||||
upperRecord: "上分记录",
|
||||
lowerRecord: "下分记录",
|
||||
transactionNumber: "交易单号",
|
||||
upSplitAmount: "上分金额",
|
||||
upSplitDate: "上分日期",
|
||||
upSplitState: "上分状态",
|
||||
downSplitAmount: "下分金额",
|
||||
downSplitDate: "下分日期",
|
||||
downSplitState: "下分状态",
|
||||
statusType: ["未支付", "已支付", "支付失败"],
|
||||
|
||||
// fundRecords
|
||||
depositRecords: "存款/上分记录",
|
||||
withdrawalRecords: "取款/下分记录",
|
||||
rechargeAmount: "充值金额",
|
||||
rechargeAddress: "充值地址",
|
||||
rechargeDate: "充值日期",
|
||||
withdrawalNumber: "提现单号",
|
||||
withdrawalAmount: "提现金额",
|
||||
withdrawalCommission: "提现手续费",
|
||||
withdrawalAddress: "提现地址",
|
||||
withdrawalDate: "提现日期",
|
||||
withdrawalState: "提现状态",
|
||||
fundRecordsStatusType: {
|
||||
WAIT: "待审核",
|
||||
AGREE: "已通过",
|
||||
SUCCESS: "提现成功",
|
||||
FAIL: "提现失败",
|
||||
CANCEL: "已取消",
|
||||
},
|
||||
safe: "安全中心",
|
||||
resetPasswordList: [
|
||||
{ name: "重置登录密码", path: "pages/user/resetPassword" },
|
||||
],
|
||||
|
||||
// gameRecords
|
||||
weekRecord: "本周记录",
|
||||
gameName: "游戏名",
|
||||
roomNo: "房间号",
|
||||
winLose: "输赢",
|
||||
taxation: "税收",
|
||||
date: "时间",
|
||||
tableNumber: "桌台号",
|
||||
playingMethod: "玩法",
|
||||
maliang: "码粮",
|
||||
result: "结果",
|
||||
totalBetting: "总投注",
|
||||
totalWin: "总输赢",
|
||||
gameType: "游戏类型",
|
||||
common: "共",
|
||||
strip: "条",
|
||||
gameList: [
|
||||
[
|
||||
{ name: "百家乐", game_id: 1 },
|
||||
{ name: "龙虎", game_id: 2 },
|
||||
{ name: "牛牛", game_id: 4 },
|
||||
{ name: "色碟", game_id: 6 },
|
||||
{ name: "骰宝", game_id: 7 },
|
||||
//{ name: "三卡牛牛", game_id: 5 },
|
||||
{ name: "轮盘", game_id: 8 },
|
||||
{ name: "棋牌游戏", game_id: 100 },
|
||||
],
|
||||
],
|
||||
is_sw: "试玩账户无权操作",
|
||||
enterMoney: "请输入金额",
|
||||
chooseLine: "请选择网络",
|
||||
chooseCoin: "请选择币种",
|
||||
flagshipHall: "旗舰厅",
|
||||
liveHall: "现场厅",
|
||||
};
|
||||
|
||||
export { cn };
|
||||
@@ -0,0 +1,173 @@
|
||||
var en = {
|
||||
home: "Home",
|
||||
login: "Login",
|
||||
dome: "Visitor Trial",
|
||||
register: "Register",
|
||||
account: "Account",
|
||||
password: "Password",
|
||||
nowPassword: "Old Password",
|
||||
nwwPassword: "New Password",
|
||||
invitationCode: "Invitation Code",
|
||||
reset: "Reset",
|
||||
confirm: "Confirm",
|
||||
cancel: "Cancel",
|
||||
success: "Success",
|
||||
|
||||
optional: "Optional",
|
||||
logining: "Login...",
|
||||
submit: "Submit...",
|
||||
enterPhone: "Please enter phone",
|
||||
enterAccount: "Please enter account",
|
||||
enterPassword: "Please enter password",
|
||||
enterNowPassword: "Please enter Old Password",
|
||||
enterNewPassword: "Please enter New Password",
|
||||
enterPasswordAgain: "Please enter password again",
|
||||
confirmPassword: "Confirm password",
|
||||
goRegister: "No account? to register",
|
||||
goLogin: "Go login",
|
||||
submit: "Submit",
|
||||
|
||||
baccarat: "Baccarat",
|
||||
niuniu: "Bull Bull",
|
||||
longhu: "Dragon Tiger",
|
||||
lunpan: "Roulette",
|
||||
threecard: "ThreeCard",
|
||||
zhajinghua: "Sedie",
|
||||
sedie: "Sedie",
|
||||
sicbo: "SicBo",
|
||||
buyu: "Fishing",
|
||||
qipai: "Slots",
|
||||
|
||||
recharge: "Recharge",
|
||||
rechargeWithdrawNetwork: "Recharge / Withdraw Network",
|
||||
pleaseChoose: "Please Choose",
|
||||
chooseRecharge: "Please select a deposit method:",
|
||||
walletAddress: "Wallet Address",
|
||||
copy: "Copy",
|
||||
copySuccessfully: "Copy Successfully",
|
||||
rechargeTip:
|
||||
"Each member has an independent USTD deposit address. After the transfer is successful, the system will automatically receive the payment based on the transfer amount. If the payment has not been received for a long time, please contact the customer service on the homepage for consultationg",
|
||||
|
||||
rechargeTip2:
|
||||
"Do be careful to transfer the money to the CORRECT address which show on the above! Contact the online customer service in the home page after payment done.",
|
||||
|
||||
withdraw: "Withdraw",
|
||||
balance: "Balance",
|
||||
chooseWithdraw: "Withdrawal Method : ",
|
||||
pleaseChooseWithdraw: "Please select the withdrawal method",
|
||||
enterWithdrawalAddress: "Please enter the withdrawal address",
|
||||
amount: "Amount",
|
||||
enterWithdrawalamount: "Please enter the withdrawal amount",
|
||||
withdrawTip: "Network service fee/handling fee to be paid by members",
|
||||
commission: "Commission",
|
||||
amountCannotBe0: "Amount cannot be 0",
|
||||
submittingApplication: "Submitting Application...",
|
||||
|
||||
transfer: "Transfer",
|
||||
accountBalance: "Account Balance",
|
||||
gameBalance: "Game Balance",
|
||||
from: "From ",
|
||||
to: "To ",
|
||||
transferType: "Transfer Type : ",
|
||||
pleaseChooseTransferType: "Please select the transfer type",
|
||||
pleaseEnterTransferAmount: "Please enter the transfer amount",
|
||||
capitalAccount: "Capital Account",
|
||||
gameAccount: "Slots Account",
|
||||
|
||||
user: "User",
|
||||
userBalance: "Balance",
|
||||
logout: "Logout",
|
||||
tip: "Tip",
|
||||
logoutTip: "Are you sure to logout?",
|
||||
languageSettings: "Language Settings",
|
||||
|
||||
userMenu: [
|
||||
{ id: 0, name: "Language Settings", path: "" },
|
||||
{
|
||||
id: 1,
|
||||
name: "Transfer Records",
|
||||
path: "/pages/user/transactionRecords",
|
||||
},
|
||||
{ id: 2, name: "Fund Records", path: "/pages/user/fundRecords" },
|
||||
{ id: 3, name: "Security Center", path: "/pages/user/safe" },
|
||||
{ id: 4, name: "Recharge", path: "/pages/recharge" },
|
||||
{ id: 5, name: "Withdraw", path: "/pages/withdraw" },
|
||||
{ id: 6, name: "Transfer", path: "/pages/transfer" },
|
||||
{ id: 7, name: "Game Records", path: "/pages/user/gameRecords" },
|
||||
],
|
||||
|
||||
noMore: "No More",
|
||||
|
||||
// transaction
|
||||
upperRecord: "Top-Up",
|
||||
lowerRecord: "Cash Out",
|
||||
transactionNumber: "Transaction Number",
|
||||
upSplitAmount: "Top-Up Amount",
|
||||
upSplitDate: "Top-Up Date",
|
||||
upSplitState: "Top-Up State",
|
||||
downSplitAmount: "Cash Out Amount",
|
||||
downSplitDate: "Cash Out Date",
|
||||
downSplitState: "Cash Out State",
|
||||
statusType: ["Unpaid", "Paid", "Payment Failed"],
|
||||
|
||||
// fundRecords
|
||||
depositRecords: "Deposit Records",
|
||||
withdrawalRecords: "Withdrawal Records",
|
||||
rechargeAmount: "Recharge Amount",
|
||||
rechargeAddress: "Recharge Address",
|
||||
rechargeDate: "Recharge Date",
|
||||
withdrawalNumber: "Withdrawal Number",
|
||||
withdrawalAmount: "Withdrawal Amount",
|
||||
withdrawalCommission: "Withdrawal Commission",
|
||||
withdrawalAddress: "Withdrawal Address",
|
||||
withdrawalDate: "Withdrawal Date",
|
||||
withdrawalState: "Withdrawal State",
|
||||
fundRecordsStatusType: {
|
||||
WAIT: "Audit",
|
||||
AGREE: "Passed",
|
||||
SUCCESS: "Withdrawal successful",
|
||||
FAIL: "Withdrawal failed",
|
||||
CANCEL: "Canceled",
|
||||
},
|
||||
safe: "Safe",
|
||||
resetPasswordList: [
|
||||
{ name: "Reset Password", path: "pages/user/resetPassword" },
|
||||
],
|
||||
|
||||
// gameRecords
|
||||
weekRecord: "Week",
|
||||
gameName: "Game Name",
|
||||
roomNo: "Room No",
|
||||
winLose: "win OR Lose",
|
||||
taxation: "Taxation",
|
||||
date: "Date",
|
||||
tableNumber: "Table Number",
|
||||
playingMethod: "Playing Method",
|
||||
maliang: "Rebate",
|
||||
result: "Result",
|
||||
totalBetting: "Total Betting",
|
||||
totalWin: "Total Win or Lose",
|
||||
gameType: "Game Type",
|
||||
common: "Total",
|
||||
strip: " ",
|
||||
gameList: [
|
||||
[
|
||||
{ name: "Baccarat", game_id: 1 },
|
||||
{ name: "Dragon Tiger", game_id: 2 },
|
||||
{ name: "Bull Bull", game_id: 4 },
|
||||
{ name: "Sedie", game_id: 6 },
|
||||
{ name: "SicBo", game_id: 7 },
|
||||
//{ name: "Three Cards", game_id: 5 },
|
||||
{ name: "Roulette", game_id: 8 },
|
||||
{ name: "Slots", game_id: 100 },
|
||||
],
|
||||
],
|
||||
is_sw: "Trial account is not authorized to operate",
|
||||
enterMoney: "Enter the amount",
|
||||
chooseLine: "Network",
|
||||
chooseCoin: "Currency",
|
||||
flagshipHall: "Flagship Hall",
|
||||
liveHall: "Live hall",
|
||||
};
|
||||
|
||||
export { en };
|
||||
@@ -0,0 +1,168 @@
|
||||
var In = {
|
||||
home: "Beranda",
|
||||
login: "Login",
|
||||
dome: "Uji Coba",
|
||||
register: "Daftar",
|
||||
account: "Akun",
|
||||
password: "Kata Sandi",
|
||||
nowPassword: "Kata Sandi Lama",
|
||||
nwwPassword: "Kata Sandi Baru",
|
||||
invitationCode: "Kode Undangan",
|
||||
reset: "Reset",
|
||||
confirm: "OK",
|
||||
cancel: "Batal",
|
||||
success: "Success",
|
||||
|
||||
optional: "Opsional",
|
||||
logining: "Login...",
|
||||
submit: "Mengirimkan...",
|
||||
enterPhone: "Masukkan nomor ponsel",
|
||||
enterAccount: "Masukkan akun",
|
||||
enterPassword: "Masukkan kata sandi",
|
||||
enterNowPassword: "Masukkan kata sandi lama",
|
||||
enterNewPassword: "Masukkan kata sandi baru",
|
||||
enterPasswordAgain: "Masukkan kembali kata sandi",
|
||||
confirmPassword: "Konfirmasi kata sandi",
|
||||
goRegister: "Tidak ada akun? Pergi daftar",
|
||||
goLogin: "Sudah memiliki akun? Login",
|
||||
submit: "Kirim",
|
||||
|
||||
baccarat: "Bakarat Nyata",
|
||||
niuniu: "Niuniu Nyata",
|
||||
longhu: "Harimau Naga Nyata",
|
||||
lunpan: "Rolet Nyata",
|
||||
threecard: "ThreeCard",
|
||||
zhajinghua: "Three Card Poker Nyata",
|
||||
sedie: "Color Plate Nyata",
|
||||
buyu: "Game Santai",
|
||||
qipai: "Game Kartu",
|
||||
|
||||
recharge: "Deposit",
|
||||
rechargeWithdrawNetwork: "Jaringan Top-up/Penarikan",
|
||||
pleaseChoose: "Pilih",
|
||||
chooseRecharge: "Pilih metode deposit:",
|
||||
walletAddress: "Alamat Dompet",
|
||||
copy: "Salin",
|
||||
copySuccessfully: "Salin Sukses",
|
||||
rechargeTip:
|
||||
"Setiap anggota memiliki alamat deposit USTD sendiri. Setelah transfer berhasil, sistem akan secara otomatis mentransfer sejumlah uang ke rekening. Jika jumlah uang belum ditransfer dalam waktu yang lama, silakan hubungi layanan pelanggan untuk informasi lebih lanjut.",
|
||||
|
||||
rechargeTip2:
|
||||
"Do be careful to transfer the money to the CORRECT address which show on the above! Contact the online customer service in the home page after payment done.",
|
||||
|
||||
withdraw: "Tarik",
|
||||
balance: "Saldo Akun",
|
||||
chooseWithdraw: "Metode Penarikan:",
|
||||
pleaseChooseWithdraw: "Pilih metode penarikan",
|
||||
enterWithdrawalAddress: "Masukkan alamat penarikan",
|
||||
amount: "Jumlah",
|
||||
enterWithdrawalamount: "Masukkan jumlah penarikan",
|
||||
withdrawTip:
|
||||
"Biaya layanan jaringan/biaya penanganan ditanggung oleh anggota",
|
||||
commission: "Biaya Administrasi",
|
||||
amountCannotBe0: "Jumlah tidak boleh 0",
|
||||
submittingApplication: "Mengirimkan permintaan...",
|
||||
|
||||
transfer: "Transfer",
|
||||
accountBalance: "Saldo",
|
||||
gameBalance: "Saldo Game",
|
||||
from: "Dari ",
|
||||
to: "Ke ",
|
||||
transferType: "Jenis Transfer:",
|
||||
pleaseChooseTransferType: "Pilih jenis transfer",
|
||||
pleaseEnterTransferAmount: "Masukkan jumlah transfer",
|
||||
capitalAccount: "Rekening Dana",
|
||||
gameAccount: "Akun Game",
|
||||
|
||||
user: "Saya",
|
||||
userBalance: "Saldo",
|
||||
logout: "Keluar",
|
||||
tip: "Tips",
|
||||
logoutTip: "Konfirmasi keluar?",
|
||||
languageSettings: "Pengaturan Bahasa",
|
||||
|
||||
userMenu: [
|
||||
{ id: 0, name: "Pengaturan Bahasa", path: "" },
|
||||
{ id: 1, name: "Catatan Transfer", path: "/pages/user/transactionRecords" },
|
||||
{ id: 2, name: "Catatan Deposit/Tarik", path: "/pages/user/fundRecords" },
|
||||
{ id: 3, name: "Pusat Keamanan", path: "/pages/user/safe" },
|
||||
{ id: 4, name: "Deposit", path: "/pages/recharge" },
|
||||
{ id: 5, name: "Tarik", path: "/pages/withdraw" },
|
||||
{ id: 6, name: "Transfer", path: "/pages/transfer" },
|
||||
{ id: 7, name: "Rekor", path: "/pages/user/gameRecords" },
|
||||
],
|
||||
|
||||
noMore: "Tidak ada lagi",
|
||||
|
||||
// transaction
|
||||
upperRecord: "Catatan Penukaran Uang-Chip",
|
||||
lowerRecord: "Catatan Penukaran Chip-Uang",
|
||||
transactionNumber: "Nomor Transaksi",
|
||||
upSplitAmount: "Jumlah Penukaran Uang-Chip",
|
||||
upSplitDate: "Tanggal Penukaran Uang-Chip",
|
||||
upSplitState: "Status Penukaran Uang-Chip",
|
||||
downSplitAmount: "Jumlah Penukaran Chip-Uang",
|
||||
downSplitDate: "Tanggal Penukaran Chip-Uang",
|
||||
downSplitState: "Status Penukaran Chip-Uang",
|
||||
statusType: ["Belum dibayar", "Dibayar", "Pembayaran gagal"],
|
||||
|
||||
// fundRecords
|
||||
depositRecords: "Catatan Deposit/Skor",
|
||||
withdrawalRecords: "Catatan Penarikan/Penukaran Chip",
|
||||
rechargeAmount: "Jumlah Top-up",
|
||||
rechargeAddress: "Alamat Top-up",
|
||||
rechargeDate: "Tanggal Top-up",
|
||||
withdrawalNumber: "Nomor Penarikan",
|
||||
withdrawalAmount: "Jumlah Penarikan",
|
||||
withdrawalCommission: "Biaya Penarikan",
|
||||
withdrawalAddress: "Alamat Penarikan",
|
||||
withdrawalDate: "Tanggal Penarikan",
|
||||
withdrawalState: "Status Penarikan",
|
||||
fundRecordsStatusType: {
|
||||
WAIT: "Menunggu persetujuan",
|
||||
AGREE: "Disetujui",
|
||||
SUCCESS: "Penarikan Sukses",
|
||||
FAIL: "Penarikan Gagal",
|
||||
CANCEL: "Dibatalkan",
|
||||
},
|
||||
safe: "Pusat Keamanan",
|
||||
resetPasswordList: [
|
||||
{ name: "Reset Kata Sandi", path: "pages/user/resetPassword" },
|
||||
],
|
||||
|
||||
// gameRecords
|
||||
weekRecord: "Rekor Minggu Ini",
|
||||
gameName: "Nama Game",
|
||||
roomNo: "Nomor Ruang",
|
||||
winLose: "Menang/Kalah",
|
||||
taxation: "Pajak",
|
||||
date: "Waktu",
|
||||
tableNumber: "Nomor Meja",
|
||||
playingMethod: "Gameplay",
|
||||
maliang: "Rabat Komisi",
|
||||
result: "Hasil",
|
||||
totalBetting: "Total Taruhan",
|
||||
totalWin: "Total Menang/Kalah",
|
||||
gameType: "Jenis",
|
||||
common: "Total",
|
||||
strip: "Buah",
|
||||
gameList: [
|
||||
[
|
||||
{ name: "Bakarat", game_id: 1 },
|
||||
{ name: "Harimau Naga", game_id: 2 },
|
||||
{ name: "Niuniu", game_id: 4 },
|
||||
{ name: "Color Plate", game_id: 6 },
|
||||
{ name: "Sic Bo", game_id: 7 },
|
||||
// { name: "Sanka Niuniu", game_id: 5 },
|
||||
{ name: "Game Kartu", game_id: 100 },
|
||||
],
|
||||
],
|
||||
is_sw: "Trial account is not authorized to operate",
|
||||
enterMoney: "Enter the amount",
|
||||
chooseLine: "Network",
|
||||
chooseCoin: "Currency",
|
||||
flagshipHall: "Flagship Hall",
|
||||
liveHall: "Live hall",
|
||||
};
|
||||
|
||||
export { In };
|
||||
@@ -0,0 +1,169 @@
|
||||
var kr = {
|
||||
home: "첫 페이지",
|
||||
login: "접속",
|
||||
dome: "테스트 플레이",
|
||||
register: "회원 가입",
|
||||
account: "계정",
|
||||
password: "비밀번호",
|
||||
nowPassword: "기존 비밀번호",
|
||||
nwwPassword: "새 비밀번호",
|
||||
invitationCode: "초대 코드",
|
||||
reset: "리셋",
|
||||
confirm: "확인",
|
||||
cancel: "취소",
|
||||
success: "성공",
|
||||
|
||||
optional: "선택 사항",
|
||||
logining: "접속 중...",
|
||||
submit: "제출 중...",
|
||||
enterPhone: "전화번호를 입력해 주세요",
|
||||
enterAccount: "아이디를 입력하세요",
|
||||
enterPassword: "비밀번호를 입력하세요",
|
||||
enterNowPassword: "기존 비밀번호를 입력해 주세요",
|
||||
enterNewPassword: "새로운 비밀번호를 입력해 주세요",
|
||||
enterPasswordAgain: "비밀번호를 다시 입력해 주세요",
|
||||
confirmPassword: "비밀번호 확인",
|
||||
goRegister: "계정이 없으신가요? 가입하기",
|
||||
goLogin: "이미 계정이 있으신가요? 접속하기",
|
||||
submit: "제출",
|
||||
|
||||
baccarat: "진인 백가락",
|
||||
niuniu: "진인 소 소",
|
||||
longhu: "진인 용호",
|
||||
lunpan: "실인 룰렛",
|
||||
threecard: "실인 금화튀김",
|
||||
zhajinghua: "실인 금화튀김",
|
||||
sedie: "실사색 디스크",
|
||||
sicbo: "SicBo",
|
||||
buyu: "고기 잡기 게임",
|
||||
qipai: "보드 게임",
|
||||
|
||||
recharge: "적금",
|
||||
rechargeWithdrawNetwork: "입/출금 네트워크",
|
||||
pleaseChoose: "선택해 주세요",
|
||||
chooseRecharge: "입금 방법을 선택하세요:",
|
||||
walletAddress: "지갑 주소",
|
||||
copy: "복사",
|
||||
copySuccessfully: "복사 성공",
|
||||
rechargeTip:
|
||||
"모든 회원은 각자의 USTD 입금 주소를 가지고 있습니다. 이체 성공 후 이체 금액에 따라 시스템이 자동으로 해당 계좌에 입금되며, 오랫동안 계좌가 입금되지 않은 경우 홈페이지 고객센터에 문의해 주시기 바랍니다.",
|
||||
|
||||
rechargeTip2:
|
||||
"위에 표시된 올바른 주소로 돈을 이체하도록 주의하세요! 결제 완료 후 홈페이지 온라인 고객센터로 문의해주세요.",
|
||||
|
||||
withdraw: "출금",
|
||||
balance: "계정 잔액",
|
||||
chooseWithdraw: "출금 방법: ",
|
||||
pleaseChooseWithdraw: "출금 방법을 선택해 주세요",
|
||||
enterWithdrawalAddress: "출금 주소를 입력해 주세요",
|
||||
amount: "금액",
|
||||
enterWithdrawalamount: "출금 금액을 입력해 주세요",
|
||||
withdrawTip: "네트워크 서비스 비용/수수료는 회원이 부담합니다.",
|
||||
commission: "수수료",
|
||||
amountCannotBe0: "금액은 0일 수 없습니다.",
|
||||
submittingApplication: "신청 제출 중...",
|
||||
|
||||
transfer: "전송",
|
||||
accountBalance: "계정 잔액",
|
||||
gameBalance: "게임 잔액",
|
||||
from: "에서",
|
||||
to: "까지",
|
||||
transferType: "전송 유형: ",
|
||||
pleaseChooseTransferType: "전송 유형을 선택하세요",
|
||||
pleaseEnterTransferAmount: "전송 금액을 입력해 주세요",
|
||||
capitalAccount: "자금 계정",
|
||||
gameAccount: "게임 계정",
|
||||
|
||||
user: "나의 계정",
|
||||
userBalance: "잔액",
|
||||
logout: "로그아웃",
|
||||
tip: "알림",
|
||||
logoutTip: "로그아웃하시겠습니까?",
|
||||
languageSettings: "언어 설정",
|
||||
|
||||
userMenu: [
|
||||
{ id: 0, name: "언어 설정", path: "" },
|
||||
{ id: 1, name: "전송 기록", path: "/pages/user/transactionRecords" },
|
||||
{ id: 2, name: "입출금 기록", path: "/pages/user/fundRecords" },
|
||||
{ id: 3, name: "보안 센터", path: "/pages/user/safe" },
|
||||
{ id: 4, name: "적금", path: "/pages/recharge" },
|
||||
{ id: 5, name: "출금", path: "/pages/withdraw" },
|
||||
{ id: 6, name: "전송", path: "/pages/transfer" },
|
||||
{ id: 7, name: "게임 기록", path: "/pages/user/gameRecords" },
|
||||
],
|
||||
|
||||
noMore: "더 이상은 없습니다.",
|
||||
|
||||
// transaction
|
||||
upperRecord: "포인트 업 기록",
|
||||
lowerRecord: "포인트 다운 기록",
|
||||
transactionNumber: "거래 번호",
|
||||
upSplitAmount: "포인트 업 금액",
|
||||
upSplitDate: "포인트 업 날짜",
|
||||
upSplitState: "포인트 업 상태",
|
||||
downSplitAmount: "포인트 다운 금액",
|
||||
downSplitDate: "포인트 다운 날짜",
|
||||
downSplitState: "포인트 다운 상태",
|
||||
statusType: ["미지불", "지불 완료", "결제 실패"],
|
||||
|
||||
// fundRecords
|
||||
depositRecords: "입금/포인트 업 기록",
|
||||
withdrawalRecords: "출금/포인트 다운 기록",
|
||||
rechargeAmount: "충전 금액",
|
||||
rechargeAddress: "충전 주소",
|
||||
rechargeDate: "충전 날짜",
|
||||
withdrawalNumber: "현금 인출 번호",
|
||||
withdrawalAmount: "인출 금액",
|
||||
withdrawalCommission: "인출 수수료",
|
||||
withdrawalAddress: "인출 주소",
|
||||
withdrawalDate: "인출 날짜",
|
||||
withdrawalState: "인출 상태",
|
||||
fundRecordsStatusType: {
|
||||
WAIT: "심사 대기",
|
||||
AGREE: "통과",
|
||||
SUCCESS: "인출 성공",
|
||||
FAIL: "인출 실패",
|
||||
CANCEL: "취소",
|
||||
},
|
||||
safe: "보안 센터",
|
||||
resetPasswordList: [
|
||||
{ name: "접속 비밀번호 재설정", path: "pages/user/resetPassword" },
|
||||
],
|
||||
|
||||
// gameRecords
|
||||
weekRecord: "금주 기록",
|
||||
gameName: "게임 이름",
|
||||
roomNo: "방 번호",
|
||||
winLose: "승패",
|
||||
taxation: "세수",
|
||||
date: "시간",
|
||||
tableNumber: "테이블 번호",
|
||||
playingMethod: "플레이 방법",
|
||||
maliang: "커미션 반환",
|
||||
result: "결과",
|
||||
totalBetting: "총 베팅",
|
||||
totalWin: "총 승패",
|
||||
gameType: "게임 유형",
|
||||
common: "총",
|
||||
strip: "개",
|
||||
gameList: [
|
||||
[
|
||||
{ name: "바카라", game_id: 1 },
|
||||
{ name: "용호", game_id: 2 },
|
||||
{ name: "소", game_id: 4 },
|
||||
{ name: "컬러 디스크", game_id: 6 },
|
||||
{ name: "주사위 보물", game_id: 7 },
|
||||
//{ name: "삼카우소", game_id: 5 },
|
||||
{ name: "룰렛", game_id: 8 },
|
||||
{ name: "보드 게임", game_id: 100 },
|
||||
],
|
||||
],
|
||||
is_sw: "평가판 계정이 작동할 권한이 없습니다.",
|
||||
enterMoney: "금액을 입력하세요",
|
||||
chooseLine: "네트워크를 선택하세요",
|
||||
chooseCoin: "통화를 선택하세요",
|
||||
flagshipHall: "플래그십 홀",
|
||||
liveHall: "라이브홀",
|
||||
};
|
||||
|
||||
export { kr };
|
||||
@@ -0,0 +1,168 @@
|
||||
var tl = {
|
||||
home: "หน้าหลัก",
|
||||
login: "เข้าสู่ระบบ",
|
||||
dome: "ทดลองใช้",
|
||||
register: "ลงทะเบียน",
|
||||
account: "บัญชี",
|
||||
password: "รหัสผ่าน",
|
||||
nowPassword: "รหัสผ่านเก่า",
|
||||
nwwPassword: "รหัสผ่านใหม่",
|
||||
invitationCode: "โค้ดแนะนำ",
|
||||
reset: "รีเซ็ต",
|
||||
confirm: "ยืนยัน",
|
||||
cancel: "ยกเลิก",
|
||||
success: "ความสำเร็จ",
|
||||
|
||||
optional: "หากมี",
|
||||
logining: "เข้าสู่ระบบ...",
|
||||
submit: "ส่ง...",
|
||||
enterPhone: "กรุณากรอกเบอร์โทร",
|
||||
enterAccount: "กรุณากรอกบัญชี",
|
||||
enterPassword: "กรุณากรอกรหัสผ่าน",
|
||||
enterNowPassword: "กรุณากรอกรหัสผ่านเก่า",
|
||||
enterNewPassword: "กรุณากรอกรหัสผ่านใหม่",
|
||||
enterPasswordAgain: "กรุณากรอกรหัสผ่านอีกครั้ง",
|
||||
confirmPassword: "ยืนยันรหัสผ่าน",
|
||||
goRegister: "ไม่มีบัญชี? ลงทะเบียนเลย",
|
||||
goLogin: "เข้าสู่ระบบ",
|
||||
submit: "ส่ง...",
|
||||
|
||||
baccarat: "บาคาร่า Live",
|
||||
niuniu: "bull fight Live",
|
||||
longhu: "ดราก้อนไทเกอร์ Live",
|
||||
lunpan: "รูเล็ต Live",
|
||||
threecard: "ไฮโลออนไลน์ Live",
|
||||
zhajinghua: "ไฮโลออนไลน์ Live",
|
||||
sedie: "Sedie Live",
|
||||
buyu: "ฟิชชิ่ง",
|
||||
qipai: "สล็อต",
|
||||
|
||||
recharge: "เติม",
|
||||
rechargeWithdrawNetwork: "เติม / ถอน",
|
||||
pleaseChoose: "กรุณาเลือก",
|
||||
chooseRecharge: "กรุณาเลือกวิธีเติม",
|
||||
walletAddress: "ที่อยู่วอลเล็ต",
|
||||
copy: "คัดลอก",
|
||||
copySuccessfully: "คัดลอกสำเร็จ",
|
||||
rechargeTip:
|
||||
"สมาชิกแต่ละคนมีบัญชี USTD ของตนเอง หลังทำรายการสำเร็จ ระบบจะรับยอดโดยอัตโนมัติตามยอดทำรายการ หากค้างจ่ายนาน กรุณาติดต่อฝ่ายบริการลูกค้าในหน้าหลัก",
|
||||
|
||||
rechargeTip2:
|
||||
"Do be careful to transfer the money to the CORRECT address which show on the above! Contact the online customer service in the home page after payment done.",
|
||||
|
||||
withdraw: "ถอน",
|
||||
balance: "ยอด",
|
||||
chooseWithdraw: "วิธีถอน",
|
||||
pleaseChooseWithdraw: "กรุณาเลือกวิธีถอน",
|
||||
enterWithdrawalAddress: "กรุณากรอกบัญชีถอน",
|
||||
amount: "ยอดเงิน",
|
||||
enterWithdrawalamount: "กรุณากรอกยอดที่จะถอน",
|
||||
withdrawTip: "สมาชิกจ่ายค่าบริการเอง",
|
||||
commission: "คอมมิชชัน",
|
||||
amountCannotBe0: "ยอดไม่สามารถเป็น 0",
|
||||
submittingApplication: "ยื่นถอนเงิน",
|
||||
|
||||
transfer: "โอน",
|
||||
accountBalance: "ยอดเงินในบัญชี",
|
||||
gameBalance: "ยอดเงินในเกม",
|
||||
from: "จาก",
|
||||
to: "ถึง",
|
||||
transferType: "ประเภทการโอน",
|
||||
pleaseChooseTransferType: "กรุณาเลือกประเภทการโอน",
|
||||
pleaseEnterTransferAmount: "กรุณากรอกยอดโอน",
|
||||
capitalAccount: "บัญชี Capital",
|
||||
gameAccount: "บัญชีสล็อต",
|
||||
|
||||
user: "ผู้ใช้",
|
||||
userBalance: "ยอด",
|
||||
logout: "ออกจากระบบ",
|
||||
tip: "คำแนะนำ",
|
||||
logoutTip: "คุณต้องการออกจากระบบหรือไม่",
|
||||
languageSettings: "ตั้งค่าภาษา",
|
||||
|
||||
userMenu: [
|
||||
{ id: 0, name: "ตั้งค่าภาษา", path: "" },
|
||||
{ id: 1, name: "บันทึกการโอน", path: "/pages/user/transactionRecords" },
|
||||
{ id: 2, name: "บันทึก fund", path: "/pages/user/fundRecords" },
|
||||
{ id: 3, name: "ศูนย์รักษาความปลอดภัย", path: "/pages/user/safe" },
|
||||
{ id: 4, name: "เติม", path: "/pages/recharge" },
|
||||
{ id: 5, name: "ถอน", path: "/pages/withdraw" },
|
||||
{ id: 6, name: "โอน", path: "/pages/transfer" },
|
||||
{ id: 7, name: "บันทึกข้อมูลเกม", path: "/pages/user/gameRecords" },
|
||||
],
|
||||
|
||||
noMore: "No More",
|
||||
|
||||
// transaction
|
||||
upperRecord: "เติม",
|
||||
lowerRecord: "ถอนเงิน",
|
||||
transactionNumber: "หมายเลขรายการ",
|
||||
upSplitAmount: "ยอดเติม",
|
||||
upSplitDate: "วันที่เติม",
|
||||
upSplitState: "สถานะเติมเงิน",
|
||||
downSplitAmount: "ยอดถอน",
|
||||
downSplitDate: "วัันที่ถอน",
|
||||
downSplitState: "สถานะถอนเงิน",
|
||||
statusType: ["ค้างจ่าย", "จ่ายแล้ว", "ชำระล้มเหลว"],
|
||||
|
||||
// fundRecords
|
||||
depositRecords: "บันทึกเติมเงิน",
|
||||
withdrawalRecords: "บันทึกถอนเงิน",
|
||||
rechargeAmount: "ยอดเติม",
|
||||
rechargeAddress: "ที่อยู่ยอดเติม",
|
||||
rechargeDate: "วันที่เติม",
|
||||
withdrawalNumber: "หมายเลขรายการถอน",
|
||||
withdrawalAmount: "ยอดถอน",
|
||||
withdrawalCommission: "ถอนคอมมิชชัน",
|
||||
withdrawalAddress: "ที่อยู่ถอน",
|
||||
withdrawalDate: "วันที่ถอน",
|
||||
withdrawalState: "สถานะการถอน",
|
||||
fundRecordsStatusType: {
|
||||
WAIT: "ออดิต",
|
||||
AGREE: "ผ่าน",
|
||||
SUCCESS: "ถอนสำเร็จ",
|
||||
FAIL: "ถอนไม่สำเร็จ",
|
||||
CANCEL: "ยกเลิก",
|
||||
},
|
||||
safe: "Safe",
|
||||
resetPasswordList: [
|
||||
{ name: "รีเซ็ตรหัสผ่าน", path: "pages/user/resetPassword" },
|
||||
],
|
||||
|
||||
// gameRecords
|
||||
weekRecord: "สัปดาห์",
|
||||
gameName: "ชื่อเกม",
|
||||
roomNo: "ห้องหมายเลข",
|
||||
winLose: "ชนะ หรือ แพ้",
|
||||
taxation: "ภาษี",
|
||||
date: "วันที่",
|
||||
tableNumber: "หมายเลขโต๊ะ",
|
||||
playingMethod: "วิธีเล่น",
|
||||
maliang: "รับเงินคืน",
|
||||
result: "ผล",
|
||||
totalBetting: "ยอดเดิมพัน",
|
||||
totalWin: "ยอดชนะหรือแพ้",
|
||||
gameType: "ประเภทเกม",
|
||||
common: "ยอด",
|
||||
strip: " ",
|
||||
gameList: [
|
||||
[
|
||||
{ name: "บาคาร่า", game_id: 1 },
|
||||
{ name: "ดราก้อนไทเกอร์", game_id: 2 },
|
||||
{ name: "Bull Fight", game_id: 4 },
|
||||
{ name: "Sedie", game_id: 6 },
|
||||
{ name: "ไฮโลออนไลน์", game_id: 7 },
|
||||
{ name: "รูเล็ต", game_id: 8 },
|
||||
// { name: "Bull Fight 3 ไพ่", game_id: 5 },
|
||||
{ name: "สล็อต", game_id: 100 },
|
||||
],
|
||||
],
|
||||
is_sw: "บัญชีทดลองใช้ไม่ได้รับอนุญาตให้ดำเนินการ",
|
||||
enterMoney: "กรุณากรอกจำนวนเงิน",
|
||||
chooseLine: "กรุณาเลือกเครือข่าย",
|
||||
chooseCoin: "โปรดเลือกสกุลเงิน",
|
||||
flagshipHall: "แฟล็กชิปฮอลล์",
|
||||
liveHall: "ฮอลล์สด",
|
||||
};
|
||||
|
||||
export { tl };
|
||||
@@ -0,0 +1,169 @@
|
||||
var tw = {
|
||||
home: "首頁",
|
||||
login: "登錄",
|
||||
dome: "試玩",
|
||||
register: "註冊",
|
||||
account: "賬號",
|
||||
password: "密碼",
|
||||
nowPassword: "舊密碼",
|
||||
nwwPassword: "新密碼",
|
||||
invitationCode: "邀請碼",
|
||||
reset: "重置",
|
||||
confirm: "確定",
|
||||
cancel: "取消",
|
||||
success: "成功",
|
||||
|
||||
optional: "選填",
|
||||
logining: "登錄中...",
|
||||
submit: "提交中...",
|
||||
enterPhone: "請輸入手機號",
|
||||
enterAccount: "請輸入賬號",
|
||||
enterPassword: "請輸入密碼",
|
||||
enterNowPassword: "請輸舊入密碼",
|
||||
enterNewPassword: "請輸新入密碼",
|
||||
enterPasswordAgain: "請再次輸入密碼",
|
||||
confirmPassword: "確認密碼",
|
||||
goRegister: "沒有賬號?去註冊",
|
||||
goLogin: "已賬號?去登錄",
|
||||
submit: "提交",
|
||||
|
||||
baccarat: "真人百家樂",
|
||||
niuniu: "真人牛牛",
|
||||
longhu: "真人龍虎",
|
||||
lunpan: "真人輪盤",
|
||||
threecard: "真人三寶",
|
||||
zhajinghua: "真人炸金花",
|
||||
sedie: "真人色碟",
|
||||
sicbo: "真人骰寶",
|
||||
buyu: "捕魚游戲",
|
||||
qipai: "棋牌遊戲",
|
||||
|
||||
recharge: "存款",
|
||||
rechargeWithdrawNetwork: "充/提幣網絡",
|
||||
pleaseChoose: "請選擇",
|
||||
chooseRecharge: "請選擇存款方式:",
|
||||
walletAddress: "錢包地址",
|
||||
copy: "複製",
|
||||
copySuccessfully: "複製成功",
|
||||
rechargeTip:
|
||||
"每位會員都有獨立的USTD存款地址址。轉賬成功後系統會根據轉賬金額自動到賬如遇長時間未到賬請及時聯繫主頁客服進行諮詢",
|
||||
|
||||
rechargeTip2:
|
||||
"請認準以上地址!轉帳成功後聯系首頁在線客服,並將轉帳憑證發送給客服上分。",
|
||||
|
||||
withdraw: "取款",
|
||||
balance: "賬戶餘額",
|
||||
chooseWithdraw: "取款方式 : ",
|
||||
pleaseChooseWithdraw: "請選擇取款方式",
|
||||
enterWithdrawalAddress: "請輸入提幣地址",
|
||||
amount: "金額",
|
||||
enterWithdrawalamount: "請輸入提幣金額",
|
||||
withdrawTip: "網絡服務費/手續費由會員支付",
|
||||
commission: "手續費",
|
||||
amountCannotBe0: "金額不能為0",
|
||||
submittingApplication: "提交申請中...",
|
||||
|
||||
transfer: "劃轉",
|
||||
accountBalance: "賬戶餘額",
|
||||
gameBalance: "遊戲餘額",
|
||||
from: "從 ",
|
||||
to: "到 ",
|
||||
transferType: "劃轉類型 : ",
|
||||
pleaseChooseTransferType: "請選擇劃轉類型",
|
||||
pleaseEnterTransferAmount: "請輸入劃轉金額",
|
||||
capitalAccount: "資金賬戶",
|
||||
gameAccount: "遊戲賬戶",
|
||||
|
||||
user: "我的",
|
||||
userBalance: "餘額",
|
||||
logout: "退出登錄",
|
||||
tip: "提示",
|
||||
logoutTip: "確認退出登錄?",
|
||||
languageSettings: "語言設置",
|
||||
|
||||
userMenu: [
|
||||
{ id: 0, name: "語言設置", path: "" },
|
||||
{ id: 1, name: "劃轉記錄", path: "/pages/user/transactionRecords" },
|
||||
{ id: 2, name: "存取款記錄", path: "/pages/user/fundRecords" },
|
||||
{ id: 3, name: "安全中心", path: "/pages/user/safe" },
|
||||
{ id: 4, name: "存款", path: "/pages/recharge" },
|
||||
{ id: 5, name: "取款", path: "/pages/withdraw" },
|
||||
{ id: 6, name: "劃轉", path: "/pages/transfer" },
|
||||
{ id: 7, name: "遊戲記錄", path: "/pages/user/gameRecords" },
|
||||
],
|
||||
|
||||
noMore: "沒有更多了",
|
||||
|
||||
// transaction
|
||||
upperRecord: "上分記錄",
|
||||
lowerRecord: "下分記錄",
|
||||
transactionNumber: "交易單號",
|
||||
upSplitAmount: "上分金額",
|
||||
upSplitDate: "上分日期",
|
||||
upSplitState: "上分狀態",
|
||||
downSplitAmount: "下分金額",
|
||||
downSplitDate: "下分日期",
|
||||
downSplitState: "下分狀態",
|
||||
statusType: ["未支付", "已支付", "支付失敗"],
|
||||
|
||||
// fundRecords
|
||||
depositRecords: "存款記錄",
|
||||
withdrawalRecords: "取款記錄",
|
||||
rechargeAmount: "充值金額",
|
||||
rechargeAddress: "充值地址",
|
||||
rechargeDate: "充值日期",
|
||||
withdrawalNumber: "提現單號",
|
||||
withdrawalAmount: "提現金額",
|
||||
withdrawalCommission: "提現手續費",
|
||||
withdrawalAddress: "提現地址",
|
||||
withdrawalDate: "提現日期",
|
||||
withdrawalState: "提現狀態",
|
||||
fundRecordsStatusType: {
|
||||
WAIT: "待審核",
|
||||
AGREE: "已通過",
|
||||
SUCCESS: "提現成功",
|
||||
FAIL: "提現失敗",
|
||||
CANCEL: "已取消",
|
||||
},
|
||||
|
||||
resetPasswordList: [
|
||||
{ name: "重置登錄密碼", path: "pages/user/resetPassword" },
|
||||
],
|
||||
|
||||
// gameRecords
|
||||
weekRecord: "本週記錄",
|
||||
gameName: "遊戲名",
|
||||
roomNo: "房間號",
|
||||
winLose: "輸贏",
|
||||
taxation: "稅收",
|
||||
date: "時間",
|
||||
tableNumber: "桌台號",
|
||||
playingMethod: "玩法",
|
||||
maliang: "碼糧",
|
||||
result: "結果",
|
||||
totalBetting: "總投注",
|
||||
totalWin: "總輸贏",
|
||||
gameType: "遊戲類型",
|
||||
common: "共",
|
||||
strip: "條",
|
||||
gameList: [
|
||||
[
|
||||
{ name: "百家樂", game_id: 1 },
|
||||
{ name: "龍虎", game_id: 2 },
|
||||
{ name: "牛牛", game_id: 4 },
|
||||
{ name: "色碟", game_id: 6 },
|
||||
{ name: "骰宝", game_id: 7 },
|
||||
//{ name: "三卡牛牛", game_id: 5 },
|
||||
{ name: "輪盤", game_id: 8 },
|
||||
{ name: "棋牌遊戲", game_id: 100 },
|
||||
],
|
||||
],
|
||||
is_sw: "試玩賬戶無權操作",
|
||||
enterMoney: "請輸入金額",
|
||||
chooseLine: "請選擇網絡",
|
||||
chooseCoin: "請選擇幣種",
|
||||
flagshipHall: "旗艦廳",
|
||||
liveHall: "現場廳",
|
||||
};
|
||||
|
||||
export { tw };
|
||||
@@ -0,0 +1,173 @@
|
||||
var yn = {
|
||||
home: "Trang Chủ",
|
||||
login: "Đăng nhập",
|
||||
dome: "Chơi thử",
|
||||
register: "Đăng ký",
|
||||
account: "Tài khoản",
|
||||
password: "Mật khẩu",
|
||||
nowPassword: "Mật khẩu cũ",
|
||||
nwwPassword: "Mật khẩu mới",
|
||||
invitationCode: "Mã mời",
|
||||
reset: "Cài lại",
|
||||
confirm: "OK",
|
||||
cancel: "Hủy",
|
||||
success: "Thành công",
|
||||
|
||||
optional: "Không bắt buộc",
|
||||
logining: "Đang đăng nhập...",
|
||||
submit: "Đang gửi...",
|
||||
enterPhone: "Hãy nhập số điện thoại",
|
||||
enterAccount: "Hãy nhập tài khoản",
|
||||
enterPassword: "Hãy nhập mật khẩu",
|
||||
enterNowPassword: "Hãy nhập mật khẩu cũ",
|
||||
enterNewPassword: "Hãy nhập mật khẩu mới",
|
||||
enterPasswordAgain: "Hãy nhập lại mật khẩu",
|
||||
confirmPassword: "Xác nhận mật khẩu",
|
||||
goRegister: "Chưa có tài khoản? Đến đăng ký",
|
||||
goLogin: "Đã có tài khoản? Đến đăng nhập",
|
||||
submit: "Gửi",
|
||||
|
||||
baccarat: "Người thật baccarat",
|
||||
niuniu: "Trâu bò thật sự.",
|
||||
longhu: "Chân nhân long hổ.",
|
||||
lunpan: "Roulette",
|
||||
threecard: "Người thật tạc kim hoa",
|
||||
zhajinghua: "Người thật tạc kim hoa",
|
||||
sedie: "đĩa người thật",
|
||||
sicbo: "SicBo",
|
||||
buyu: "Trò chơi câu cá",
|
||||
qipai: "Trò chơi cờ vua",
|
||||
|
||||
recharge: "Gửi tiền",
|
||||
rechargeWithdrawNetwork: "Mạng lưới nạp/rút tiền",
|
||||
pleaseChoose: "Hãy chọn",
|
||||
chooseRecharge: "Hãy chọn phương thức gửi tiền:",
|
||||
walletAddress: "Địa chỉ ví",
|
||||
copy: "Sao chép",
|
||||
copySuccessfully: "Sao chép thành công",
|
||||
rechargeTip:
|
||||
"Mỗi thành viên có một địa chỉ gửi tiền USTD độc lập. Sau khi chuyển khoản thành công, hệ thống sẽ tự động vào tài khoản theo số tiền chuyển, nếu lâu tài khoản không nhận được vui lòng liên hệ CSKH của trang chủ để được tư vấn.",
|
||||
|
||||
rechargeTip2:
|
||||
"Do be careful to transfer the money to the CORRECT address which show on the above! Contact the online customer service in the home page after payment done.",
|
||||
|
||||
withdraw: "Rút tiền",
|
||||
balance: "Số dư tài khoản",
|
||||
chooseWithdraw: "Phương thức rút tiền:",
|
||||
pleaseChooseWithdraw: "Hãy chọn phương thức rút tiền",
|
||||
enterWithdrawalAddress: "Hãy nhập địa chỉ rút tiền",
|
||||
amount: "Số tiền",
|
||||
enterWithdrawalamount: "Hãy nhập số tiền rút",
|
||||
withdrawTip: "Phí dịch vụ mạng/phí thủ tục do thành viên thanh toán",
|
||||
commission: "Phí thủ tục",
|
||||
amountCannotBe0: "Số tiền không thể bằng 0",
|
||||
submittingApplication: "Đang gửi yêu cầu...",
|
||||
|
||||
transfer: "Chuyển khoản",
|
||||
accountBalance: "Số dư tài khoản",
|
||||
gameBalance: "Số dư trò chơi",
|
||||
from: "Từ ",
|
||||
to: "đến ",
|
||||
transferType: "Loại chuyển:",
|
||||
pleaseChooseTransferType: "Hãy chọn loại chuyển khoản",
|
||||
pleaseEnterTransferAmount: "Hãy nhập số tiền chuyển",
|
||||
capitalAccount: "Tài khoản quỹ",
|
||||
gameAccount: "Tài khoản trò chơi",
|
||||
|
||||
user: "Của tôi",
|
||||
userBalance: "Số dư",
|
||||
logout: "Đăng xuất",
|
||||
tip: "Gợi ý",
|
||||
logoutTip: "Xác nhận đăng xuất?",
|
||||
languageSettings: "Cài đặt ngôn ngữ",
|
||||
|
||||
userMenu: [
|
||||
{ id: 0, name: "Cài đặt ngôn ngữ", path: "" },
|
||||
{
|
||||
id: 1,
|
||||
name: "Nhật ký chuyển khoản",
|
||||
path: "/pages/user/transactionRecords",
|
||||
},
|
||||
{ id: 2, name: "Nhật ký gửi và rút tiền", path: "/pages/user/fundRecords" },
|
||||
{ id: 3, name: "Trung tâm an toàn", path: "/pages/user/safe" },
|
||||
{ id: 4, name: "Gửi tiền", path: "/pages/recharge" },
|
||||
{ id: 5, name: "Rút tiền", path: "/pages/withdraw" },
|
||||
{ id: 6, name: "Chuyển khoản", path: "/pages/transfer" },
|
||||
{ id: 7, name: "Nhật ký trò chơi", path: "/pages/user/gameRecords" },
|
||||
],
|
||||
|
||||
noMore: "Đã hết nội dung",
|
||||
|
||||
// transaction
|
||||
upperRecord: "Nhật ký nạp tiền",
|
||||
lowerRecord: "Nhật ký rút tiền",
|
||||
transactionNumber: "Mã đơn giao dịch",
|
||||
upSplitAmount: "Số tiền nạp",
|
||||
upSplitDate: "Thời gian nạp tiền",
|
||||
upSplitState: "Trạng thái nạp tiền",
|
||||
downSplitAmount: "Số tiền rút",
|
||||
downSplitDate: "Thời gian rút tiền",
|
||||
downSplitState: "Trạng thái rút tiền",
|
||||
statusType: ["Chưa thanh toán", "Đã thanh toán", "Thanh toán thất bại"],
|
||||
|
||||
// fundRecords
|
||||
depositRecords: "Nhật ký gửi tiền/nạp tiền",
|
||||
withdrawalRecords: "Nhật ký lấy tiền/rút tiền",
|
||||
rechargeAmount: "Số tiền nạp",
|
||||
rechargeAddress: "Địa chỉ nạp",
|
||||
rechargeDate: "Thời gian nạp",
|
||||
withdrawalNumber: "Mã đơn rút tiền",
|
||||
withdrawalAmount: "Số tiền rút",
|
||||
withdrawalCommission: "Phí rút tiền",
|
||||
withdrawalAddress: "Địa chỉ rút tiền",
|
||||
withdrawalDate: "Thời gian rút tiền",
|
||||
withdrawalState: "Trạng thái rút tiền",
|
||||
fundRecordsStatusType: {
|
||||
WAIT: "Chờ duyệt",
|
||||
AGREE: "Đã duyệt",
|
||||
SUCCESS: "Rút tiền thành công",
|
||||
FAIL: "Rút tiền thất bại",
|
||||
CANCEL: "Đã hủy",
|
||||
},
|
||||
safe: "Trung tâm an toàn",
|
||||
resetPasswordList: [
|
||||
{ name: "Đặt lại mật khẩu đăng nhập", path: "pages/user/resetPassword" },
|
||||
],
|
||||
|
||||
// gameRecords
|
||||
weekRecord: "Nhật ký tuần này",
|
||||
gameName: "Tên trò chơi",
|
||||
roomNo: "Số phòng",
|
||||
winLose: "Thắng thua",
|
||||
taxation: "Thuế",
|
||||
date: "Thời gian",
|
||||
tableNumber: "ID bàn",
|
||||
playingMethod: "Lối chơi",
|
||||
maliang: "Phỉnh boa",
|
||||
result: "Kết quả",
|
||||
totalBetting: "Tổng cược",
|
||||
totalWin: "Tổng thắng thua",
|
||||
gameType: "Loại trò chơi",
|
||||
common: "Cộng",
|
||||
strip: "Dòng",
|
||||
gameList: [
|
||||
[
|
||||
{ name: "baccarat", game_id: 1 },
|
||||
{ name: "Rồng hổ", game_id: 2 },
|
||||
{ name: "bò", game_id: 4 },
|
||||
{ name: "Đĩa màu", game_id: 6 },
|
||||
{ name: "Xúc xắc quý", game_id: 7 },
|
||||
//{ name: "Tam thẻ", game_id: 5 },
|
||||
{ name: "Roulette", game_id: 8 },
|
||||
{ name: "Trò chơi cờ", game_id: 100 },
|
||||
],
|
||||
],
|
||||
is_sw: "Tài khoản dùng thử không được phép hoạt động",
|
||||
enterMoney: "Vui lòng nhập số tiền",
|
||||
chooseLine: "Vui lòng chọn mạng",
|
||||
chooseCoin: "Vui lòng chọn loại tiền tệ",
|
||||
flagshipHall: "Hội trường hàng đầu",
|
||||
liveHall: "Hội trường trực tiếp",
|
||||
};
|
||||
|
||||
export { yn };
|
||||
@@ -0,0 +1,28 @@
|
||||
|
||||
import Vue from "vue";
|
||||
import uView from "uview-ui";
|
||||
import "./uni.promisify.adaptor";
|
||||
import store from "@/store";
|
||||
import api from "@/request/api";
|
||||
import App from "./App";
|
||||
import {
|
||||
router,
|
||||
RouterMount
|
||||
} from "@/router.js";
|
||||
|
||||
Vue.config.productionTip = false;
|
||||
Vue.prototype.$api = api;
|
||||
Vue.use(uView);
|
||||
Vue.use(router);
|
||||
App.mpType = "app";
|
||||
const app = new Vue({
|
||||
store,
|
||||
...App,
|
||||
});
|
||||
// #ifdef H5
|
||||
RouterMount(app, router, "#app");
|
||||
// #endif
|
||||
|
||||
// #ifndef H5
|
||||
app.$mount(); //为了兼容小程序及
|
||||
// #endif
|
||||
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"name" : "Online Gaming",
|
||||
"appid" : "__UNI__6DF0A08",
|
||||
"description" : "",
|
||||
"versionName" : "1.0.0",
|
||||
"versionCode" : "100",
|
||||
"transformPx" : false,
|
||||
"sassImplementationName" : "node-sass",
|
||||
/* 5+App特有相关 */
|
||||
"app-plus" : {
|
||||
"usingComponents" : true,
|
||||
"nvueStyleCompiler" : "uni-app",
|
||||
"compilerVersion" : 3,
|
||||
"splashscreen" : {
|
||||
"alwaysShowBeforeRender" : true,
|
||||
"waiting" : true,
|
||||
"autoclose" : true,
|
||||
"delay" : 0
|
||||
},
|
||||
/* 模块配置 */
|
||||
"modules" : {},
|
||||
/* 应用发布信息 */
|
||||
"distribute" : {
|
||||
/* android打包配置 */
|
||||
"android" : {
|
||||
"permissions" : [
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
|
||||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
||||
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
|
||||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
|
||||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
|
||||
"<uses-feature android:name=\"android.hardware.camera\"/>",
|
||||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"
|
||||
]
|
||||
},
|
||||
/* ios打包配置 */
|
||||
"ios" : {},
|
||||
/* SDK配置 */
|
||||
"sdkConfigs" : {}
|
||||
}
|
||||
},
|
||||
/* 快应用特有相关 */
|
||||
"quickapp" : {},
|
||||
/* 小程序特有相关 */
|
||||
"mp-weixin" : {
|
||||
"appid" : "",
|
||||
"setting" : {
|
||||
"urlCheck" : false
|
||||
},
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-alipay" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-baidu" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"mp-toutiao" : {
|
||||
"usingComponents" : true
|
||||
},
|
||||
"uniStatistics" : {
|
||||
"enable" : false
|
||||
},
|
||||
"vueVersion" : "2"
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
{
|
||||
"requires": true,
|
||||
"lockfileVersion": 1,
|
||||
"dependencies": {
|
||||
"@vue/devtools-api": {
|
||||
"version": "6.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.0.tgz",
|
||||
"integrity": "sha512-o9KfBeaBmCKl10usN4crU53fYtC1r7jJwdGKjPT24t348rHxgfpZ0xL3Xm/gLUYnc0oTp8LAmrxOeLyu6tbk2Q==",
|
||||
"dev": true
|
||||
},
|
||||
"base64-arraybuffer": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
|
||||
"integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==",
|
||||
"dev": true
|
||||
},
|
||||
"css-line-break": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz",
|
||||
"integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"utrie": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"dayjs": {
|
||||
"version": "1.11.7",
|
||||
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.7.tgz",
|
||||
"integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ==",
|
||||
"dev": true
|
||||
},
|
||||
"html2canvas": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz",
|
||||
"integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"css-line-break": "^2.1.0",
|
||||
"text-segmentation": "^1.0.3"
|
||||
}
|
||||
},
|
||||
"js-md5": {
|
||||
"version": "0.7.3",
|
||||
"resolved": "https://registry.npmjs.org/js-md5/-/js-md5-0.7.3.tgz",
|
||||
"integrity": "sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ==",
|
||||
"dev": true
|
||||
},
|
||||
"qr-image": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/qr-image/-/qr-image-3.2.0.tgz",
|
||||
"integrity": "sha512-rXKDS5Sx3YipVsqmlMJsJsk6jXylEpiHRC2+nJy66fxA5ExYyGa4PqwteW69SaVmAb2OQ18HbYriT7cGQMbduw==",
|
||||
"dev": true
|
||||
},
|
||||
"text-segmentation": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz",
|
||||
"integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"utrie": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"uni-read-pages": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/uni-read-pages/-/uni-read-pages-1.0.5.tgz",
|
||||
"integrity": "sha512-GkrrZ0LX0vn9R5k6RKEi0Ez3Q3e2vUpjXQ8Z6/K/d28KudI9ajqgt8WEjQFlG5EPm1K6uTArN8LlqmZTEixDUA==",
|
||||
"dev": true
|
||||
},
|
||||
"uni-simple-router": {
|
||||
"version": "2.0.8-beta.4",
|
||||
"resolved": "https://registry.npmjs.org/uni-simple-router/-/uni-simple-router-2.0.8-beta.4.tgz",
|
||||
"integrity": "sha512-ipTHhOaRvjV8qrt3HosX5pNMhwFYBnFOuKyV5joH0evfXubjrGI5tjdwpmwzfW5h3VBth3iAqScv+pW/QmIJXw==",
|
||||
"dev": true
|
||||
},
|
||||
"utrie": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz",
|
||||
"integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"base64-arraybuffer": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"uview-ui": {
|
||||
"version": "2.0.36",
|
||||
"resolved": "https://registry.npmjs.org/uview-ui/-/uview-ui-2.0.36.tgz",
|
||||
"integrity": "sha512-ASSZT6M8w3GTO1eFPbsgEFV0U5UujK+8pTNr+MSUbRNcRMC1u63DDTLJVeArV91kWM0bfAexK3SK9pnTqF9TtA=="
|
||||
},
|
||||
"vuex": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz",
|
||||
"integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@vue/devtools-api": "^6.0.0-beta.11"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"uview-ui": "^2.0.36"
|
||||
},
|
||||
"devDependencies": {
|
||||
"dayjs": "^1.11.7",
|
||||
"html2canvas": "^1.4.1",
|
||||
"js-md5": "^0.7.3",
|
||||
"qr-image": "^3.2.0",
|
||||
"uni-read-pages": "^1.0.5",
|
||||
"uni-simple-router": "^2.0.8-beta.4",
|
||||
"vuex": "^4.1.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,151 @@
|
||||
{
|
||||
"easycom": {
|
||||
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
|
||||
},
|
||||
"pages": [
|
||||
{
|
||||
"path": "pages/login",
|
||||
"name": "Login",
|
||||
"style": {
|
||||
"navigationBarTitleText": "Login"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/register",
|
||||
"name": "Register",
|
||||
"style": {
|
||||
"navigationBarTitleText": "Register"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/index",
|
||||
"name": "Index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "ONLINE GAMING"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/recharge",
|
||||
"name": "Recharge",
|
||||
"style": {
|
||||
"navigationBarTitleText": "Deposit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/rechargeopr",
|
||||
"name": "Recharge",
|
||||
"style": {
|
||||
"navigationBarTitleText": "Deposit"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/withdraw",
|
||||
"name": "Withdraw",
|
||||
"style": {
|
||||
"navigationBarTitleText": "Withdraw"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/transfer",
|
||||
"name": "Transfer",
|
||||
"style": {
|
||||
"navigationBarTitleText": "Transfer"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/user/index",
|
||||
"name": "User",
|
||||
"style": {
|
||||
"navigationBarTitleText": "My"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/user/transactionRecords",
|
||||
"name": "TransactionRecords",
|
||||
"style": {
|
||||
"navigationBarTitleText": "Transaction History"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/user/customservice",
|
||||
"name": "Customservice",
|
||||
"style": {
|
||||
"navigationBarTitleText": "Customservice"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/user/fundRecords",
|
||||
"name": "FundRecords",
|
||||
"style": {
|
||||
"navigationBarTitleText": "Finance Record"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/user/safe",
|
||||
"name": "Safe",
|
||||
"style": {
|
||||
"navigationBarTitleText": "Security Center"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/user/resetPassword",
|
||||
"name": "ResetPassword",
|
||||
"style": {
|
||||
"navigationBarTitleText": "Reset Password"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "pages/user/gameRecords",
|
||||
"name": "GameRecords",
|
||||
"style": {
|
||||
"navigationBarTitleText": "Game Record"
|
||||
}
|
||||
}
|
||||
],
|
||||
"tabBar": {
|
||||
"backgroundColor": "#0c0c0d",
|
||||
"color": "#fff",
|
||||
"selectedColor": "#bf8e42",
|
||||
"borderStyle": "#bf8e42",
|
||||
"list": [
|
||||
{
|
||||
"text": "Home",
|
||||
"pagePath": "pages/index",
|
||||
"iconPath": "/static/tabBar/index-ba.png",
|
||||
"selectedIconPath": "/static/tabBar/index-ba-active.png"
|
||||
},
|
||||
{
|
||||
"text": "Deposit",
|
||||
"pagePath": "pages/recharge",
|
||||
"iconPath": "/static/tabBar/recharge.png",
|
||||
"selectedIconPath": "/static/tabBar/recharge_active.png"
|
||||
},
|
||||
{
|
||||
"text": "Withdraw",
|
||||
"pagePath": "pages/withdraw",
|
||||
"iconPath": "/static/tabBar/withdrawal.png",
|
||||
"selectedIconPath": "/static/tabBar/withdrawal_active.png"
|
||||
},
|
||||
{
|
||||
"text": "Transfer",
|
||||
"pagePath": "pages/transfer",
|
||||
"iconPath": "/static/tabBar/transfer.png",
|
||||
"selectedIconPath": "/static/tabBar/transfer_active.png"
|
||||
},
|
||||
{
|
||||
"text": "My",
|
||||
"pagePath": "pages/user/index",
|
||||
"iconPath": "/static/tabBar/user.png",
|
||||
"selectedIconPath": "/static/tabBar/user_active.png"
|
||||
}
|
||||
]
|
||||
},
|
||||
"globalStyle": {
|
||||
"navigationBarTextStyle": "black",
|
||||
"navigationBarTitleText": "ONLINE GAMING",
|
||||
"navigationBarBackgroundColor": "#0c0c0d",
|
||||
"backgroundColor": "#000",
|
||||
"navigationStyle": "custom"
|
||||
},
|
||||
"uniIdRouter": {}
|
||||
}
|
||||
@@ -0,0 +1,264 @@
|
||||
<template>
|
||||
<view class="index">
|
||||
<u-navbar title="" bgColor="#000" :placeholder="true" :fixed="true" leftIcon="" height="60">
|
||||
<view slot="center">
|
||||
<u--image :showLoading="false" :src="titlePng" width="350px" height="45px" mode="scaleToFill"
|
||||
class="ezlogo"></u--image>
|
||||
<u--image :showLoading="false" :src="require('static/images/service_icon.png')" width="100%"
|
||||
height="auto" mode="widthFix" class="service_icon" @click="goRouter()"></u--image>
|
||||
</view>
|
||||
</u-navbar>
|
||||
<u-swiper class="swiper" :list="list" bgColor="#000" radius="0" imgMode="scaleToFill" height="39vw"
|
||||
interval="4000" @tap="goPaht"></u-swiper>
|
||||
<view style="min-height: 38px">
|
||||
<u-notice-bar v-if="showNotice" :text="text" bgColor="#252627" color="#eee" speed="40"></u-notice-bar>
|
||||
</view>
|
||||
<!-- <u--image :showLoading="false" :src="
|
||||
require(`static/images/${
|
||||
language == 'tw' ? 'tw' : 'en'
|
||||
}_advertisement_v2.jpg`)
|
||||
" width="100%" height="auto" mode="widthFix" @tap="goPaht('baccarat')"></u--image>
|
||||
<view style="margin-top: 5px; margin-bottom: 5px">
|
||||
<u--image :showLoading="false" :src="require('static/images/title-ez.png')" width="100%" height="auto"
|
||||
mode="widthFix"></u--image>
|
||||
</view> -->
|
||||
|
||||
|
||||
<view class="triple">
|
||||
<view class="triple-item">
|
||||
<img :src="require(`static/images/click.png`)" @click="goPaht('other')" alt="">
|
||||
<p>{{ $lang.flagshipHall }}</p>
|
||||
</view>
|
||||
<view class="triple-item">
|
||||
<img :src="require(`static/images/triple.png`)" @click="goPaht('other')" alt="">
|
||||
<p>{{ $lang.liveHall }}</p>
|
||||
</view>
|
||||
<!--
|
||||
<view class="triple-item">
|
||||
<img :src="require(`static/images/triple.png`)" @click="goPaht('triple')" alt="">
|
||||
<p>{{ $lang.liveHall }}</p>
|
||||
</view>
|
||||
-->
|
||||
</view>
|
||||
|
||||
|
||||
<view class="list">
|
||||
<u--image :showLoading="false" :src="require('static/images/game_1.png')" width="100%" height="auto"
|
||||
mode="widthFix"></u--image>
|
||||
<view class="box">
|
||||
<view class="text">{{ $lang.baccarat }}</view>
|
||||
<view class="text">{{ $lang.niuniu }}</view>
|
||||
</view>
|
||||
<view class="left link" @tap="goPaht('baccarat')"></view>
|
||||
<view class="right link" @tap="goPaht('nn')"></view>
|
||||
</view>
|
||||
<view class="list">
|
||||
<u--image :showLoading="false" :src="require('static/images/game_3.png')" width="100%" height="auto"
|
||||
mode="widthFix"></u--image>
|
||||
<view class="box">
|
||||
<view class="text">{{ $lang.longhu }}</view>
|
||||
<view class="text">{{ $lang.sedie }}</view>
|
||||
</view>
|
||||
<view class="left link" @tap="goPaht('longhu')"></view>
|
||||
<view class="right link" @tap="goPaht('toning')"></view>
|
||||
</view>
|
||||
<view class="list">
|
||||
<u--image :showLoading="false" :src="require('static/images/game_2.png')" width="100%" height="auto"
|
||||
mode="widthFix"></u--image>
|
||||
<view class="box">
|
||||
<view class="text">{{ $lang.sicbo }}</view>
|
||||
<view class="text">{{ $lang.threecard }}</view>
|
||||
</view>
|
||||
<view class="left link" @tap="goPaht('dice')"></view>
|
||||
<view class="right link" @tap="goPaht('threecard')"></view>
|
||||
</view>
|
||||
<view class="mb10"></view>
|
||||
<!--
|
||||
<view class="list" @tap="goPaht('other')">
|
||||
<u--image
|
||||
:showLoading="false"
|
||||
:src="require('static/images/game_4.png')"
|
||||
width="100%"
|
||||
height="auto"
|
||||
mode="widthFix"
|
||||
></u--image>
|
||||
<view class="box">
|
||||
<view class="text">{{ $lang.buyu }}</view>
|
||||
<view class="text">{{ $lang.qipai }}</view>
|
||||
</view>
|
||||
</view>-->
|
||||
<!--<view class="mb60"></view>-->
|
||||
|
||||
<!-- <u--image :showLoading="false" :src="
|
||||
require(`static/images/${language == 'tw' ? 'tw' : 'en'}_slots-ez.png`)
|
||||
" width="100%" height="auto" mode="widthFix" @tap="goPaht('other')"></u--image> -->
|
||||
<view class="mb80"></view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
mapState
|
||||
} from "vuex";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
showNotice: true,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
language: (state) => state.app.language,
|
||||
$lang: (state) => state.app.lang[state.app.language],
|
||||
titlePng: (state) => state.app.titlePng,
|
||||
userInfo: (state) => state.app.userInfo,
|
||||
loginType: (state) => state.app.loginType,
|
||||
customServiceUrl: (state) => state.app.customServiceUrl,
|
||||
showAd: (state) => {
|
||||
const userInfo = state.app.userInfo;
|
||||
let show = false;
|
||||
if (userInfo.pay_channel) {
|
||||
show = true;
|
||||
}
|
||||
return show;
|
||||
},
|
||||
text: (state) => {
|
||||
let text = "";
|
||||
const language = state.app.language;
|
||||
if (language == "cn") {
|
||||
text =
|
||||
"首储活动(真人视讯)🔥 新人首存赠【10%】 五倍流水上限【1688】 回存送【5%】 两倍流水 上限【888】 🔥 ONLINE GAMING 🔥 H5网页版 正式上线了 欢迎来爆庄哦......首储活动(真人视讯)🔥 新人首存赠【10%】 五倍流水上限【1688】 回存送【5%】 两倍流水 上限【888】 🔥 ONLINE GAMING 🔥 H5网页版 正式上线了 欢迎来爆庄哦...";
|
||||
} else if (language == "tw") {
|
||||
text =
|
||||
"首儲活動(真人視訊)🔥 新人首存贈【10%】 五倍流水上限【1688】 回存送【5%】 兩倍流水 上限【888】 🔥 ONLINE GAMING 🔥 H5網頁版 正式上線了 歡迎來爆莊哦......首儲活動(真人視訊)🔥 新人首存贈【10%】 五倍流水上限【1688】 回存送【5%】 兩倍流水 上限【888】 🔥 ONLINE GAMING 🔥 H5網頁版 正式上線了 歡迎來爆莊哦...";
|
||||
} else if (language == "en") {
|
||||
text =
|
||||
"首儲活動(真人視訊)🔥 新人首存贈【10%】 五倍流水上限【1688】 回存送【5%】 兩倍流水 上限【888】 🔥 ONLINE GAMING 🔥 H5網頁版 正式上線了 歡迎來爆莊哦......首儲活動(真人視訊)🔥 新人首存贈【10%】 五倍流水上限【1688】 回存送【5%】 兩倍流水 上限【888】 🔥 ONLINE GAMING 🔥 H5網頁版 正式上線了 歡迎來爆莊哦...";
|
||||
} else if (language == "kr") {
|
||||
text =
|
||||
"존귀한 고객님, ONLINE GAMING 에 오신 것을 환영합니다. 만약 당신이 새로운 게이머라면 애플 자체 브라우저나 구글 브라우저로 우리의 웹 주소를 열고 데스크톱 생성 아이콘을 클릭하면 더 편리한 조작 체험과 시각 효과를 가져다 줄 수 있습니다......귀한 고객🔥 ONLINE GAMING 🔥 H5 웹버전이 정식으로 오픈되었습니다. 폭장에 오신 것을 환영합니다......";
|
||||
} else if (language == "yn") {
|
||||
text =
|
||||
"Chào mừng bạn đến ONLINE GAMING, nếu bạn là người chơi mới, xin vui lòng sử dụng trình duyệt của Apple hoặc Google Explorer để mở địa chỉ web của chúng tôi bằng cách nhấp vào để tạo biểu tượng máy tính để bàn sẽ mang lại cho bạn một kinh nghiệm hoạt động thuận tiện hơn và hiệu ứng hình ảnh.... Quý khách hàng 🔥 ONLINE GAMING 🔥 Trang web H5 chính thức lên mạng, chào mừng đến với trang web bùng nổ......";
|
||||
}
|
||||
return text;
|
||||
},
|
||||
list: (state) => {
|
||||
const language = state.app.language;
|
||||
const lang = (language == "tw" || language == 'cn') ? "tw" : "en";
|
||||
let list = [
|
||||
`/static/images/${lang}_banner_ac1.png`,
|
||||
`/static/images/${lang}_banner_2-ez-v3.png`,
|
||||
];
|
||||
return list;
|
||||
},
|
||||
}),
|
||||
},
|
||||
onShow() {
|
||||
this.showNotice = false;
|
||||
if (this.$route.query.logout && this.$route.query.logout == '1') {
|
||||
localStorage.removeItem("userInfo");
|
||||
this.$router.replace({
|
||||
path: "/"
|
||||
});
|
||||
}
|
||||
setTimeout(() => {
|
||||
this.showNotice = true;
|
||||
}, 100);
|
||||
},
|
||||
methods: {
|
||||
// this.baseApi
|
||||
goPaht(type) {
|
||||
if (type == "other") {
|
||||
window.location.href =
|
||||
`${this.$baseApi.gameUrl}/?token=${this.userInfo.api_token}&language=${this.language}#/${type}`;
|
||||
} else if(type == 'triple'){
|
||||
window.location.href =
|
||||
`${this.$baseApi.tripleUrl}/?token=${this.userInfo.api_token}`;
|
||||
}
|
||||
else {
|
||||
window.location.href =
|
||||
`${this.$baseApi.gameUrl}/?token=${this.userInfo.api_token}&language=${this.language}#/${type}`;
|
||||
}
|
||||
},
|
||||
goRouter() {
|
||||
let url = this.customServiceUrl + '&visiter_id=' + this.userInfo.username + '&visiter_name=' + this
|
||||
.userInfo.username;
|
||||
window.open(url, '_blank');
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.index {
|
||||
.ezlogo {
|
||||
margin-left: -25px;
|
||||
}
|
||||
|
||||
.service_icon {
|
||||
width: 26px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 2px;
|
||||
margin: 15px 8px;
|
||||
}
|
||||
|
||||
.list {
|
||||
padding: 5px 5px;
|
||||
position: relative;
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.link {
|
||||
position: absolute;
|
||||
width: 50%;
|
||||
height: 100%;
|
||||
top: 0;
|
||||
|
||||
&.left {
|
||||
left: 0;
|
||||
}
|
||||
|
||||
&.right {
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.box {
|
||||
color: #f4c46f;
|
||||
font-size: medium;
|
||||
font-weight: 600;
|
||||
display: flex;
|
||||
width: 100%;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding-top: 5px;
|
||||
|
||||
.text {
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
.triple{
|
||||
display: flex;
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
&-item{
|
||||
width: 50%;
|
||||
padding: 2%;
|
||||
img{
|
||||
width: 100%;
|
||||
// height: 110px;
|
||||
}
|
||||
p{
|
||||
color: #fff;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,299 @@
|
||||
<template>
|
||||
<view class="login">
|
||||
<div class="langview">
|
||||
<div class="select" @click="showLangselect(true)">
|
||||
{{ langList[language] }}
|
||||
</div>
|
||||
<div class="select-box" v-show="langselect">
|
||||
<div
|
||||
class="option"
|
||||
v-for="item in Object.keys(langList)"
|
||||
:key="item"
|
||||
:class="{ active: item == language }"
|
||||
@click="choseLang(item)"
|
||||
>
|
||||
{{ langList[item] }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<view class="content">
|
||||
<view class="logo">
|
||||
<u--image
|
||||
:showLoading="false"
|
||||
:src="loginLogo"
|
||||
width="125px"
|
||||
height="119px"
|
||||
mode="scaleToFill"
|
||||
></u--image>
|
||||
</view>
|
||||
<u-input
|
||||
class="input"
|
||||
v-model="phone"
|
||||
type="number"
|
||||
clearable
|
||||
:placeholder="$lang.enterAccount"
|
||||
><!--
|
||||
<view class="phone-code" slot="prefix" @click="countryShow = true">{{
|
||||
countryData.country_code
|
||||
}}</view>-->
|
||||
</u-input>
|
||||
<u-input
|
||||
class="input"
|
||||
v-model="password"
|
||||
:password="true"
|
||||
:placeholder="$lang.enterPassword"
|
||||
>
|
||||
</u-input>
|
||||
<view class="btn-box">
|
||||
<view class="btn" @tap="login('login')">{{ $lang.login }}</view>
|
||||
<view class="btn" @tap="login('dome')">{{ $lang.dome }}</view>
|
||||
</view>
|
||||
<view class="tip" @tap="goRegister">{{ $lang.goRegister }}</view>
|
||||
</view>
|
||||
<!-- 提示 -->
|
||||
<u-toast ref="uToast" />
|
||||
<!-- 区号 -->
|
||||
<country-code
|
||||
class="country"
|
||||
:show="countryShow"
|
||||
:anchor="countryData.anchor_index"
|
||||
:country="countryData.country_en"
|
||||
@select="selectCountryTap"
|
||||
@close="countryShow = false"
|
||||
></country-code>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState } from "vuex";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
phone: "",
|
||||
password: "",
|
||||
countryShow: false,
|
||||
countryData: {
|
||||
anchor_index: 2,
|
||||
country_en: "Philippines",
|
||||
country_cn: "菲律賓",
|
||||
country_code: "+63",
|
||||
},
|
||||
langList: {
|
||||
en: "English",
|
||||
tw: "繁體中文",
|
||||
cn: "简体中文",
|
||||
yn: "Việt nam",
|
||||
kr: "한국어",
|
||||
tl: "แบบไทย",
|
||||
in: "Indonesia",
|
||||
},
|
||||
langselect: false,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
language: (state) => (state.app.language ? state.app.language : "en"),
|
||||
$lang: (state) => state.app.lang[state.app.language],
|
||||
loginLogo: (state) => state.app.loginLogo,
|
||||
}),
|
||||
},
|
||||
onLoad() {
|
||||
let userData = {};
|
||||
try {
|
||||
userData = localStorage.getItem("userInfo");
|
||||
userData = userData ? JSON.parse(userData) : {};
|
||||
if (userData && userData.id) {
|
||||
uni.switchTab({
|
||||
url: "/pages/index",
|
||||
});
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
showLangselect(state) {
|
||||
this.langselect = state;
|
||||
},
|
||||
choseLang(lang) {
|
||||
this.$store.commit("app/updateLanguage", lang);
|
||||
this.langselect = false;
|
||||
},
|
||||
selectCountryTap(data) {
|
||||
this.countryData = data;
|
||||
this.countryShow = false;
|
||||
},
|
||||
goRegister() {
|
||||
this.$router.replace({
|
||||
path: "/pages/register",
|
||||
});
|
||||
},
|
||||
login(type) {
|
||||
if (!this.phone && type == "login") {
|
||||
this.$toast({
|
||||
message: this.$lang.enterAccount,
|
||||
duration: 2000,
|
||||
});
|
||||
} else if (!this.password & (type == "login")) {
|
||||
this.$toast({
|
||||
message: this.$lang.enterPassword,
|
||||
duration: 2000,
|
||||
});
|
||||
} else {
|
||||
const o = navigator.userAgent;
|
||||
const isAndroid = o.indexOf("Android") > -1 || o.indexOf("Adr") > -1; //android终端
|
||||
const isiOS = !!o.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
|
||||
const client = isAndroid ? 3 : isiOS ? 2 : 1;
|
||||
const params = {
|
||||
username: this.phone,
|
||||
password: this.password,
|
||||
code: this.countryData.country_code,
|
||||
client,
|
||||
};
|
||||
let api = "login";
|
||||
if (type == "dome") {
|
||||
api = "dome";
|
||||
params.token = "shiwanlogin";
|
||||
// console.log(params)
|
||||
}
|
||||
this.$toast({
|
||||
type: "loading",
|
||||
message: this.$lang.logining,
|
||||
duration: 200000,
|
||||
});
|
||||
this.$api[api](params)
|
||||
.then((res) => {
|
||||
if (res.Success) {
|
||||
this.$store.commit("app/updateUserInfo", {
|
||||
...res.Data,
|
||||
});
|
||||
this.$store.commit("app/updateLoginType", type);
|
||||
uni.switchTab({
|
||||
url: "/pages/index",
|
||||
});
|
||||
this.$toastHide();
|
||||
} else {
|
||||
this.$toast({
|
||||
message: res.Msg,
|
||||
duration: 2000,
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err);
|
||||
this.$toastHide();
|
||||
});
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.login {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
background: url("~@/static/images/login_bg.png") no-repeat;
|
||||
background-size: 100% auto;
|
||||
background-position: bottom left;
|
||||
overflow-y: auto;
|
||||
.langview {
|
||||
position: absolute;
|
||||
top: 15px;
|
||||
right: 15px;
|
||||
.select {
|
||||
border-radius: 4px;
|
||||
width: 90px;
|
||||
display: inline-block;
|
||||
font-size: 14px;
|
||||
color: #cfc189;
|
||||
line-height: 35px;
|
||||
background: #212121;
|
||||
text-align: center;
|
||||
&:active {
|
||||
opacity: 0.6;
|
||||
}
|
||||
}
|
||||
.select-box {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 45px;
|
||||
width: 90px;
|
||||
line-height: 30px;
|
||||
background: #212121;
|
||||
border-radius: 4px;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
z-index: 9;
|
||||
.option:active {
|
||||
opacity: 0.6;
|
||||
}
|
||||
.active {
|
||||
color: #cfc189;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
.content {
|
||||
width: 280px;
|
||||
padding-bottom: 50px;
|
||||
margin: 0 auto;
|
||||
.logo {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: 20px;
|
||||
margin-top: 20%;
|
||||
}
|
||||
.input {
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
margin-bottom: 15px;
|
||||
background: #fff;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.phone-code {
|
||||
min-width: 50px;
|
||||
text-align: center;
|
||||
border-right: 1px solid #ddd;
|
||||
}
|
||||
.btn-box {
|
||||
margin-top: 20px;
|
||||
.btn {
|
||||
width: 100%;
|
||||
height: 48px;
|
||||
line-height: 48px;
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
background: url("~@/static/images/btn_bg.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
font-weight: 600;
|
||||
margin-top: 15px;
|
||||
&:active {
|
||||
opacity: 0.8;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.country {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
.tip {
|
||||
font-size: 12px;
|
||||
color: #b38f3c;
|
||||
margin-top: 20px;
|
||||
text-align: center;
|
||||
margin-bottom: 20px;
|
||||
&:active {
|
||||
opacity: 0.6;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,401 @@
|
||||
<template>
|
||||
<view class="recharge">
|
||||
<u-navbar
|
||||
title=""
|
||||
bgColor="#000"
|
||||
:placeholder="true"
|
||||
:fixed="true"
|
||||
leftIcon=""
|
||||
height="60"
|
||||
>
|
||||
<view slot="left">
|
||||
<text class="navbar-lab">{{ $lang.recharge }}</text>
|
||||
</view>
|
||||
</u-navbar>
|
||||
<view class="content">
|
||||
<template v-if="userInfo.pay_channel == 'BC'">
|
||||
<view class="picker-view" @click="show = true">
|
||||
<u-input
|
||||
readonly
|
||||
:placeholder="$lang.pleaseChoose"
|
||||
color="#93979b"
|
||||
v-model="type"
|
||||
border="none"
|
||||
>
|
||||
<u--text
|
||||
:text="$lang.chooseRecharge"
|
||||
slot="prefix"
|
||||
margin="0 3px 0 0"
|
||||
type="tips"
|
||||
></u--text>
|
||||
<u-icon
|
||||
slot="suffix"
|
||||
name="arrow-down-fill"
|
||||
color="#757272"
|
||||
size="16"
|
||||
></u-icon>
|
||||
</u-input>
|
||||
</view>
|
||||
<u-picker
|
||||
:title="$lang.chooseRecharge"
|
||||
closeOnClickOverlay
|
||||
:show="show"
|
||||
:columns="columns"
|
||||
:cancelText="$lang.cancel"
|
||||
:confirmText="$lang.confirm"
|
||||
@cancel="close"
|
||||
@close="close"
|
||||
@confirm="confirm"
|
||||
></u-picker>
|
||||
<view class="list">
|
||||
<view class="lab">{{ $lang.rechargeWithdrawNetwork }}</view>
|
||||
<view class="type">TRC20</view>
|
||||
</view>
|
||||
|
||||
<view class="list">
|
||||
<view class="lab">{{ $lang.walletAddress }}:</view>
|
||||
<view class="box">
|
||||
<u-input
|
||||
readonly
|
||||
:placeholder="$lang.walletAddress"
|
||||
fontSize="12px"
|
||||
color="#93979b"
|
||||
:value="address"
|
||||
>
|
||||
<template slot="suffix">
|
||||
<u-button
|
||||
class="btn"
|
||||
:text="$lang.copy"
|
||||
type="success"
|
||||
@click="copyCode"
|
||||
color="#e5b932"
|
||||
></u-button>
|
||||
</template>
|
||||
</u-input>
|
||||
</view>
|
||||
</view>
|
||||
<view class="list qrcode">
|
||||
<u--image
|
||||
radius="5px"
|
||||
:showLoading="true"
|
||||
:src="qrcode"
|
||||
width="200px"
|
||||
height="200px"
|
||||
mode="scaleToFill"
|
||||
></u--image>
|
||||
</view>
|
||||
<view class="list">
|
||||
<view class="tip">
|
||||
{{ $lang.rechargeTip }}
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
<template v-if="userInfo.pay_channel == 'YBF'">
|
||||
<view
|
||||
class="picker-view"
|
||||
@click="fnPicker('currency')"
|
||||
v-if="currency_list.length"
|
||||
>
|
||||
<u-input
|
||||
readonly
|
||||
:placeholder="$lang.chooseCoin"
|
||||
color="#93979b"
|
||||
v-model="currency.name"
|
||||
border="none"
|
||||
>
|
||||
<u--text
|
||||
:text="$lang.chooseCoin"
|
||||
slot="prefix"
|
||||
margin="0 3px 0 0"
|
||||
type="tips"
|
||||
></u--text>
|
||||
<u-icon
|
||||
slot="suffix"
|
||||
name="arrow-down-fill"
|
||||
color="#757272"
|
||||
size="16"
|
||||
></u-icon>
|
||||
</u-input>
|
||||
</view>
|
||||
<view
|
||||
class="picker-view"
|
||||
@click="fnPicker('coin_type')"
|
||||
v-if="coin_type_list.length"
|
||||
>
|
||||
<u-input
|
||||
readonly
|
||||
:placeholder="$lang.chooseLine"
|
||||
color="#93979b"
|
||||
v-model="coin_type.name"
|
||||
border="none"
|
||||
>
|
||||
<u--text
|
||||
:text="$lang.chooseLine"
|
||||
slot="prefix"
|
||||
margin="0 3px 0 0"
|
||||
type="tips"
|
||||
></u--text>
|
||||
<u-icon
|
||||
slot="suffix"
|
||||
name="arrow-down-fill"
|
||||
color="#757272"
|
||||
size="16"
|
||||
></u-icon>
|
||||
</u-input>
|
||||
</view>
|
||||
<view class="picker-view">
|
||||
<u-input
|
||||
:placeholder="$lang.enterMoney"
|
||||
color="#93979b"
|
||||
v-model="amount"
|
||||
border="none"
|
||||
>
|
||||
<u--text
|
||||
:text="$lang.rechargeAmount"
|
||||
slot="prefix"
|
||||
margin="0 3px 0 0"
|
||||
type="tips"
|
||||
></u--text>
|
||||
</u-input>
|
||||
</view>
|
||||
<view class="list mb60">
|
||||
<u-button
|
||||
class="button"
|
||||
color="#e5b932"
|
||||
:text="$lang.submit"
|
||||
@click="submit"
|
||||
></u-button>
|
||||
</view>
|
||||
<view class="list">
|
||||
<view class="tip">
|
||||
{{ $lang.rechargeTip }}
|
||||
</view>
|
||||
</view>
|
||||
<u-picker
|
||||
:title="$lang.chooseRecharge"
|
||||
closeOnClickOverlay
|
||||
:show="showPicker"
|
||||
:columns="columnsPicker"
|
||||
keyName="name"
|
||||
:cancelText="$lang.cancel"
|
||||
:confirmText="$lang.confirm"
|
||||
@cancel="closePicker"
|
||||
@close="closePicker"
|
||||
@confirm="confirmPicker"
|
||||
></u-picker>
|
||||
</template>
|
||||
</view>
|
||||
<view class="mb60"></view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState } from "vuex";
|
||||
import qr from "qr-image";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
address: "",
|
||||
qrcode: "",
|
||||
// 币种选择
|
||||
type: "USDT",
|
||||
show: false,
|
||||
columns: [["USDT"]],
|
||||
// 支付方式
|
||||
showPicker: false,
|
||||
columnsPicker: [],
|
||||
pickerType: "",
|
||||
amount: "",
|
||||
currency: { name: "", key: "" },
|
||||
coin_type: { name: "", key: "" },
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
userInfo: (state) => state.app.userInfo,
|
||||
$lang: (state) => state.app.lang[state.app.language],
|
||||
coin_type_list: (state) => {
|
||||
return state.app?.userInfo?.pay_channel_coin_chain || [];
|
||||
},
|
||||
currency_list: (state) => {
|
||||
return state.app?.userInfo?.pay_channel_currency || [];
|
||||
},
|
||||
}),
|
||||
},
|
||||
onLoad() {
|
||||
if (this.userInfo && this.userInfo.wallet) {
|
||||
this.address = this.userInfo.wallet.address;
|
||||
this.setQrCode();
|
||||
}
|
||||
if (
|
||||
this.userInfo &&
|
||||
this.userInfo.pay_channel_coin_chain &&
|
||||
this.userInfo.pay_channel_coin_chain.length
|
||||
) {
|
||||
this.coin_type = this.userInfo.pay_channel_coin_chain[0];
|
||||
}
|
||||
if (
|
||||
this.userInfo &&
|
||||
this.userInfo.pay_channel_currency &&
|
||||
this.userInfo.pay_channel_currency.length
|
||||
) {
|
||||
this.currency = this.userInfo.pay_channel_currency[0];
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
confirm(chose) {
|
||||
this.type = chose.value[0];
|
||||
this.close();
|
||||
},
|
||||
close() {
|
||||
this.show = false;
|
||||
},
|
||||
setQrCode() {
|
||||
const qrcode =
|
||||
"data:image/png;base64," +
|
||||
uni.arrayBufferToBase64(
|
||||
qr.imageSync(this.address, {
|
||||
margin: 2,
|
||||
})
|
||||
);
|
||||
this.qrcode = qrcode;
|
||||
},
|
||||
// 复制链接
|
||||
copyCode() {
|
||||
uni.setClipboardData({
|
||||
data: this.address,
|
||||
success: () => {
|
||||
this.$toast({
|
||||
message: this.$lang.copySuccessfully,
|
||||
duration: 2000,
|
||||
});
|
||||
},
|
||||
});
|
||||
},
|
||||
fnPicker(type) {
|
||||
this.pickerType = type;
|
||||
this.columnsPicker = [this[`${type}_list`]];
|
||||
this.showPicker = true;
|
||||
},
|
||||
confirmPicker(chose) {
|
||||
this[this.pickerType] = chose.value[0];
|
||||
this.closePicker();
|
||||
},
|
||||
closePicker() {
|
||||
this.showPicker = false;
|
||||
},
|
||||
submit() {
|
||||
if (!this.amount) {
|
||||
this.$toast({
|
||||
message: this.$lang.enterWithdrawalamount,
|
||||
duration: 2000,
|
||||
});
|
||||
} else {
|
||||
const params = {
|
||||
user_id: this.userInfo.id,
|
||||
pay_channel: this.userInfo.pay_channel,
|
||||
amount: this.amount,
|
||||
currency: this.currency.key,
|
||||
coin_type: this.coin_type.key,
|
||||
};
|
||||
this.$toast({
|
||||
type: "loading",
|
||||
message: `${this.$lang.submit}...`,
|
||||
duration: 200000,
|
||||
});
|
||||
this.$api
|
||||
.ybfDeposit(params)
|
||||
.then((res) => {
|
||||
if (res.Success == 1) {
|
||||
const o = navigator.userAgent;
|
||||
const isiOS = !!o.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
|
||||
if (isiOS) {
|
||||
window.location.href = res.data.payUrl;
|
||||
} else {
|
||||
window.open(res.data.payUrl, "_blank");
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err);
|
||||
})
|
||||
.finally(() => {
|
||||
this.$toastHide();
|
||||
});
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.recharge {
|
||||
background: #0b1520;
|
||||
width: 100%;
|
||||
min-height: 100vh;
|
||||
.navbar-lab {
|
||||
color: #fff;
|
||||
font-weight: 500;
|
||||
font-size: 18px;
|
||||
}
|
||||
.content {
|
||||
margin: 5px 5px;
|
||||
border: 2px solid #947b2b;
|
||||
background: #222222;
|
||||
box-sizing: border-box;
|
||||
padding: 15px;
|
||||
.picker-view {
|
||||
border: 2px solid #947b2b;
|
||||
padding: 8px;
|
||||
border-radius: 5px;
|
||||
margin-bottom: 20px;
|
||||
&.input {
|
||||
border: 1px solid #dadbde;
|
||||
}
|
||||
}
|
||||
.list {
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
&.qrcode {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin: 25px 0;
|
||||
}
|
||||
.lab {
|
||||
color: #757272;
|
||||
margin: 10px 0;
|
||||
}
|
||||
.btn {
|
||||
height: 30px;
|
||||
font-weight: 600;
|
||||
color: #0b1520 !important;
|
||||
}
|
||||
.type {
|
||||
width: 70px;
|
||||
height: 35px;
|
||||
background: #e5b932;
|
||||
border-radius: 40px;
|
||||
text-align: center;
|
||||
line-height: 35px;
|
||||
font-weight: 600;
|
||||
margin: 10px auto;
|
||||
}
|
||||
.button {
|
||||
line-height: 45px;
|
||||
height: 45px;
|
||||
color: #0b1520 !important;
|
||||
font-weight: bold;
|
||||
margin-top: 30px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.tip {
|
||||
color: #cc4c0e;
|
||||
font-size: 13px;
|
||||
text-align: justify;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,208 @@
|
||||
<template>
|
||||
<view class="recharge">
|
||||
<u-navbar
|
||||
title=""
|
||||
bgColor="#000"
|
||||
:placeholder="true"
|
||||
:fixed="true"
|
||||
leftIcon=""
|
||||
height="60"
|
||||
>
|
||||
<view slot="left">
|
||||
<text class="navbar-lab">{{ $lang.recharge }}</text>
|
||||
</view>
|
||||
</u-navbar>
|
||||
<view class="content">
|
||||
<view class="picker-view" @click="show = true">
|
||||
<u-input
|
||||
readonly
|
||||
:placeholder="$lang.pleaseChoose"
|
||||
color="#93979b"
|
||||
v-model="type"
|
||||
border="none"
|
||||
>
|
||||
<u--text
|
||||
:text="$lang.chooseRecharge"
|
||||
slot="prefix"
|
||||
margin="0 3px 0 0"
|
||||
type="tips"
|
||||
></u--text>
|
||||
<u-icon
|
||||
slot="suffix"
|
||||
name="arrow-down-fill"
|
||||
color="#757272"
|
||||
size="16"
|
||||
></u-icon>
|
||||
</u-input>
|
||||
</view>
|
||||
<u-picker
|
||||
:title="$lang.chooseRecharge"
|
||||
closeOnClickOverlay
|
||||
:show="show"
|
||||
:columns="columns"
|
||||
@cancel="close"
|
||||
@close="close"
|
||||
@confirm="confirm"
|
||||
></u-picker>
|
||||
<view class="list">
|
||||
<view class="lab">{{ $lang.rechargeWithdrawNetwork }}</view>
|
||||
<view class="type">TRC20</view>
|
||||
</view>
|
||||
<view class="list">
|
||||
<view class="lab">{{ $lang.walletAddress }}:</view>
|
||||
<view class="box">
|
||||
<u-input
|
||||
readonly
|
||||
:placeholder="$lang.walletAddress"
|
||||
fontSize="12px"
|
||||
color="#93979b"
|
||||
:value="address"
|
||||
>
|
||||
<template slot="suffix">
|
||||
<u-button
|
||||
class="btn"
|
||||
:text="$lang.copy"
|
||||
type="success"
|
||||
@click="copyCode"
|
||||
color="#e5b932"
|
||||
></u-button>
|
||||
</template>
|
||||
</u-input>
|
||||
</view>
|
||||
</view>
|
||||
<view class="list qrcode">
|
||||
<u--image
|
||||
radius="5px"
|
||||
:showLoading="true"
|
||||
:src="qrcode"
|
||||
width="200px"
|
||||
height="200px"
|
||||
mode="scaleToFill"
|
||||
></u--image>
|
||||
</view>
|
||||
<view class="list">
|
||||
<view class="tip">
|
||||
{{ $lang.rechargeTip2 }}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState } from "vuex";
|
||||
import qr from "qr-image";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
type: "USDT",
|
||||
address: "",
|
||||
qrcode: "",
|
||||
show: false,
|
||||
columns: [["USDT"]],
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
userInfo: (state) => state.app.userInfo,
|
||||
$lang: (state) => state.app.lang[state.app.language],
|
||||
}),
|
||||
},
|
||||
onLoad() {
|
||||
if (this.userInfo && this.userInfo.pay_channel_address) {
|
||||
this.address = this.userInfo.pay_channel_address;
|
||||
this.setQrCode();
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
confirm(chose) {
|
||||
this.type = chose.value[0];
|
||||
this.close();
|
||||
},
|
||||
close() {
|
||||
this.show = false;
|
||||
},
|
||||
setQrCode() {
|
||||
const qrcode =
|
||||
"data:image/png;base64," +
|
||||
uni.arrayBufferToBase64(
|
||||
qr.imageSync(this.address, {
|
||||
margin: 2,
|
||||
})
|
||||
);
|
||||
this.qrcode = qrcode;
|
||||
},
|
||||
// 复制链接
|
||||
copyCode() {
|
||||
uni.setClipboardData({
|
||||
data: this.address,
|
||||
success: () => {
|
||||
uni.showToast({
|
||||
title: this.$lang.copySuccessfully,
|
||||
});
|
||||
},
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.recharge {
|
||||
background: #0b1520;
|
||||
width: 100%;
|
||||
min-height: 100vh;
|
||||
.navbar-lab {
|
||||
color: #fff;
|
||||
font-weight: 500;
|
||||
font-size: 18px;
|
||||
}
|
||||
.content {
|
||||
margin: 5px 5px;
|
||||
border: 2px solid #947b2b;
|
||||
background: #222222;
|
||||
box-sizing: border-box;
|
||||
padding: 15px;
|
||||
.picker-view {
|
||||
border: 2px solid #947b2b;
|
||||
padding: 8px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.list {
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
&.qrcode {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin: 25px 0;
|
||||
}
|
||||
.lab {
|
||||
color: #757272;
|
||||
margin: 10px 0;
|
||||
}
|
||||
.btn {
|
||||
height: 30px;
|
||||
font-weight: 600;
|
||||
color: #0b1520 !important;
|
||||
}
|
||||
.type {
|
||||
width: 70px;
|
||||
height: 35px;
|
||||
background: #e5b932;
|
||||
border-radius: 40px;
|
||||
text-align: center;
|
||||
line-height: 35px;
|
||||
font-weight: 600;
|
||||
margin: 10px auto;
|
||||
}
|
||||
.tip {
|
||||
color: #cc4c0e;
|
||||
font-size: 13px;
|
||||
text-align: justify;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,250 @@
|
||||
<template>
|
||||
<view class="register">
|
||||
<view class="content">
|
||||
<view class="logo">
|
||||
<u--image :showLoading="false" :src="loginLogo" width="125px" height="119px" mode="scaleToFill"></u--image>
|
||||
</view>
|
||||
<u-input class="input" :focus='focusUsername' v-model="username" type="number" clearable :placeholder="$lang.enterAccount">
|
||||
<text class="text" slot="prefix">{{ $lang.account }}</text>
|
||||
</u-input>
|
||||
<u-input class="input" :focus='focusPassword' v-model="password" :password="true" :placeholder="$lang.enterPassword" autocomplete="new-password">
|
||||
<text class="text" slot="prefix">{{ $lang.password }}</text>
|
||||
</u-input>
|
||||
<u-input class="input" :focus='focusRepass' v-model="repass" :password="true" :placeholder="$lang.enterPasswordAgain">
|
||||
<text class="text" slot="prefix">{{ $lang.confirmPassword }}</text>
|
||||
</u-input>
|
||||
<u-input class="input" :focus='focusPhone' v-model="phone" type="number" clearable
|
||||
:placeholder="`${$lang.enterPhone}`">
|
||||
<view class="phone-code" slot="prefix" @click="countryShow = true">
|
||||
{{ countryData.country_code }}
|
||||
</view>
|
||||
</u-input>
|
||||
<u-input class="input" v-model="referral_code" placeholder="TC176852" :disabled="referral_disabled">
|
||||
<text class="text" slot="prefix">{{ $lang.invitationCode }}</text>
|
||||
</u-input>
|
||||
<view class="btn-box">
|
||||
<view class="btn" @tap="register()">{{ $lang.register }}</view>
|
||||
</view>
|
||||
<view class="tip" @tap="goLogin">{{ $lang.goLogin }}</view>
|
||||
</view>
|
||||
<!-- 提示 -->
|
||||
<u-toast ref="uToast" />
|
||||
<!-- 区号 -->
|
||||
<country-code class="country" :show="countryShow" :anchor="countryData.anchor_index"
|
||||
:country="countryData.country_en" @select="selectCountryTap" @close="countryShow = false"></country-code>
|
||||
<view class="mb60"></view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {
|
||||
mapState
|
||||
} from "vuex";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
username: "",
|
||||
password: "",
|
||||
repass: "",
|
||||
phone: "",
|
||||
referral_code: undefined,
|
||||
countryShow: false,
|
||||
referral_disabled: false,
|
||||
countryData: {
|
||||
anchor_index: 2,
|
||||
country_en: "Philippines",
|
||||
country_cn: "菲律宾",
|
||||
country_code: "+63"
|
||||
},
|
||||
// 焦点
|
||||
focusUsername: false,
|
||||
focusPassword: false,
|
||||
focusRepass: false,
|
||||
focusPhone: false
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
$lang: state => state.app.lang[state.app.language],
|
||||
loginLogo: state => state.app.loginLogo
|
||||
})
|
||||
},
|
||||
onLoad() {
|
||||
const {
|
||||
invitedCode = null
|
||||
} = this.$route.query;
|
||||
if (invitedCode) {
|
||||
this.referral_code = invitedCode;
|
||||
this.referral_disabled = true;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
selectCountryTap(data) {
|
||||
this.countryData = data;
|
||||
this.countryShow = false;
|
||||
},
|
||||
goLogin() {
|
||||
this.$router.replace({
|
||||
path: "/pages/login"
|
||||
});
|
||||
},
|
||||
register() {
|
||||
if (!this.username) {
|
||||
this.$toast({
|
||||
message: this.$lang.enterAccount,
|
||||
duration: 2000
|
||||
});
|
||||
this.focusUsername = true
|
||||
} else if (!this.password) {
|
||||
this.$toast({
|
||||
message: this.$lang.enterPassword,
|
||||
duration: 2000
|
||||
});
|
||||
this.focusPassword = true
|
||||
} else if (!this.repass) {
|
||||
this.$toast({
|
||||
message: this.$lang.enterPasswordAgain,
|
||||
duration: 2000
|
||||
});
|
||||
this.focusRepass = true
|
||||
} else if (!this.phone) {
|
||||
this.$toast({
|
||||
message: this.$lang.enterPhone,
|
||||
duration: 2000
|
||||
});
|
||||
this.focusPhone = true
|
||||
} else {
|
||||
const o = navigator.userAgent;
|
||||
const isAndroid = o.indexOf("Android") > -1 || o.indexOf("Adr") > -1; //android终端
|
||||
const isiOS = !!o.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
|
||||
const client = isAndroid ? 3 : isiOS ? 2 : 1;
|
||||
const referralCode = this.referral_code ? this.referral_code : 'TC176852'
|
||||
const params = {
|
||||
username: this.username,
|
||||
pass: this.password,
|
||||
repass: this.repass,
|
||||
mobile: this.phone,
|
||||
code: this.countryData.country_code,
|
||||
referral_code: referralCode,
|
||||
area_id: 2,
|
||||
client
|
||||
};
|
||||
this.$toast({
|
||||
type: "loading",
|
||||
message: `${this.$lang.register}...`,
|
||||
duration: 200000
|
||||
});
|
||||
this.$api
|
||||
.register(params)
|
||||
.then(res => {
|
||||
this.$toastHide();
|
||||
if (res.Success == 1) {
|
||||
this.$store.commit("app/updateUserInfo", {
|
||||
...res.Data
|
||||
});
|
||||
uni.switchTab({
|
||||
url: "/pages/login"
|
||||
});
|
||||
this.$toast({
|
||||
message: this.$lang.register+this.$lang.success,
|
||||
duration: 2000
|
||||
});
|
||||
} else {
|
||||
this.$toast({
|
||||
message: res.Msg,
|
||||
duration: 2000
|
||||
});
|
||||
}
|
||||
}).catch(err => {
|
||||
this.$toastHide();
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.register {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
background: url("~@/static/images/login_bg.png") no-repeat;
|
||||
background-size: 100% auto;
|
||||
background-position: bottom left;
|
||||
overflow-y: auto;
|
||||
|
||||
.content {
|
||||
width: 280px;
|
||||
padding-bottom: 50px;
|
||||
margin: 0 auto;
|
||||
|
||||
.logo {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: 20px;
|
||||
margin-top: 20%;
|
||||
}
|
||||
|
||||
.input {
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
margin-bottom: 15px;
|
||||
background: #fff;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.phone-code {
|
||||
min-width: 50px;
|
||||
text-align: center;
|
||||
border-right: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.text {
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
.btn-box {
|
||||
margin-top: 20px;
|
||||
|
||||
.btn {
|
||||
width: 100%;
|
||||
height: 48px;
|
||||
line-height: 48px;
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
background: url("~@/static/images/btn_bg.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
font-weight: 600;
|
||||
margin-top: 15px;
|
||||
|
||||
&:active {
|
||||
opacity: 0.8;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.country {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.tip {
|
||||
font-size: 12px;
|
||||
color: #b38f3c;
|
||||
margin-top: 20px;
|
||||
text-align: center;
|
||||
margin-bottom: 20px;
|
||||
|
||||
&:active {
|
||||
opacity: 0.6;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,329 @@
|
||||
<template>
|
||||
<view class="transfer">
|
||||
<u-navbar
|
||||
title=""
|
||||
bgColor="#000"
|
||||
:placeholder="true"
|
||||
:fixed="true"
|
||||
leftIcon=""
|
||||
height="60"
|
||||
>
|
||||
<view slot="left">
|
||||
<text class="navbar-lab">{{ $lang.transfer }}</text>
|
||||
</view>
|
||||
</u-navbar>
|
||||
<view class="content">
|
||||
<view class="list">
|
||||
<view class="lable money"
|
||||
>{{ $lang.accountBalance }}:{{ userInfo.money }}</view
|
||||
>
|
||||
<view class="lable gmoney">{{ $lang.gameBalance }}:{{ gmoney }}</view>
|
||||
</view>
|
||||
|
||||
<view class="list transfer-box">
|
||||
<u-input
|
||||
class="input"
|
||||
color="#947b2b"
|
||||
clearable
|
||||
border="none"
|
||||
v-model="from"
|
||||
readonly
|
||||
>
|
||||
<u--text
|
||||
:text="$lang.from"
|
||||
slot="prefix"
|
||||
margin="0 3px 0 0"
|
||||
type="tips"
|
||||
></u--text>
|
||||
</u-input>
|
||||
<view class="down_icon"></view>
|
||||
<u-input
|
||||
class="input"
|
||||
color="#947b2b"
|
||||
clearable
|
||||
border="none"
|
||||
v-model="to"
|
||||
readonly
|
||||
>
|
||||
<u--text
|
||||
:text="$lang.to"
|
||||
slot="prefix"
|
||||
margin="0 3px 0 0"
|
||||
type="tips"
|
||||
></u--text>
|
||||
</u-input>
|
||||
<view class="transfer-btn" @tap="switchFlow"></view>
|
||||
</view>
|
||||
|
||||
<view class="picker-view" @click="show = true">
|
||||
<u-input
|
||||
readonly
|
||||
:placeholder="$lang.pleaseChoose"
|
||||
color="#93979b"
|
||||
v-model="type"
|
||||
border="none"
|
||||
>
|
||||
<u--text
|
||||
:text="$lang.transferType"
|
||||
slot="prefix"
|
||||
margin="0 3px 0 0"
|
||||
type="tips"
|
||||
></u--text>
|
||||
<u-icon
|
||||
slot="suffix"
|
||||
name="arrow-down-fill"
|
||||
color="#757272"
|
||||
size="16"
|
||||
></u-icon>
|
||||
</u-input>
|
||||
</view>
|
||||
<u-picker
|
||||
:title="$lang.pleaseChooseTransferType"
|
||||
closeOnClickOverlay
|
||||
:show="show"
|
||||
:columns="columns"
|
||||
:cancelText="$lang.cancel"
|
||||
:confirmText="$lang.confirm"
|
||||
@cancel="close"
|
||||
@close="close"
|
||||
@confirm="confirm"
|
||||
></u-picker>
|
||||
<view class="list">
|
||||
<view class="lable">{{ $lang.amount }}</view>
|
||||
<u-input
|
||||
class="input"
|
||||
color="#947b2b"
|
||||
clearable
|
||||
:placeholder="$lang.pleaseEnterTransferAmount"
|
||||
border="surround"
|
||||
v-model="money"
|
||||
></u-input>
|
||||
</view>
|
||||
<view class="list">
|
||||
<u-button
|
||||
@tap="submit"
|
||||
class="button"
|
||||
color="#e5b932"
|
||||
:text="$lang.transfer"
|
||||
></u-button>
|
||||
</view>
|
||||
</view>
|
||||
<view class="mb60"></view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState } from "vuex";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
from: "",
|
||||
to: "",
|
||||
flow: true, //"upper"
|
||||
money: "",
|
||||
gmoney: "",
|
||||
type: "USDT",
|
||||
show: false,
|
||||
columns: [["USDT"]],
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
userInfo: (state) => state.app.userInfo,
|
||||
$lang: (state) => state.app.lang[state.app.language],
|
||||
}),
|
||||
},
|
||||
onLoad() {
|
||||
this.from = this.$lang.capitalAccount;
|
||||
this.to = this.$lang.gameAccount;
|
||||
this.getGameInfo();
|
||||
},
|
||||
methods: {
|
||||
confirm(chose) {
|
||||
this.type = chose.value[0];
|
||||
this.close();
|
||||
},
|
||||
close() {
|
||||
this.show = false;
|
||||
},
|
||||
switchFlow() {
|
||||
this.flow = !this.flow;
|
||||
if (this.flow) {
|
||||
this.from = this.$lang.capitalAccount;
|
||||
this.to = this.$lang.gameAccount;
|
||||
} else {
|
||||
this.from = this.$lang.gameAccount;
|
||||
this.to = this.$lang.capitalAccount;
|
||||
}
|
||||
},
|
||||
getGameInfo() {
|
||||
this.$api
|
||||
.gameInfo()
|
||||
.then((res) => {
|
||||
if (res.status_code == 200) {
|
||||
this.gmoney = res.data.totalmoney;
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err);
|
||||
});
|
||||
},
|
||||
submit() {
|
||||
const params = {
|
||||
money: this.money,
|
||||
};
|
||||
if (!params.money) {
|
||||
this.$toast({
|
||||
message: this.$lang.amountCannotBe0,
|
||||
duration: 2000,
|
||||
});
|
||||
} else {
|
||||
this.$toast({
|
||||
type: "loading",
|
||||
message: this.$lang.submittingApplication,
|
||||
duration: 200000,
|
||||
});
|
||||
const type = this.flow ? "gameUpper" : "gameUnder";
|
||||
this.$api[type](params)
|
||||
.then((res) => {
|
||||
if (res.status_code == 200) {
|
||||
this.$toast({
|
||||
type: "success",
|
||||
message: res.message,
|
||||
duration: 2000,
|
||||
});
|
||||
this.getGameInfo();
|
||||
this.$store.dispatch("app/getUserInfo");
|
||||
this.money = "";
|
||||
} else {
|
||||
this.$toast({
|
||||
message: res.message,
|
||||
duration: 2000,
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err);
|
||||
})
|
||||
.finally(() => {
|
||||
this.$toastHide();
|
||||
});
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.transfer {
|
||||
background: #0b1520;
|
||||
width: 100%;
|
||||
min-height: 100vh;
|
||||
.navbar-lab {
|
||||
color: #fff;
|
||||
font-weight: 500;
|
||||
font-size: 18px;
|
||||
}
|
||||
.content {
|
||||
margin: 5px 5px;
|
||||
border: 2px solid #947b2b;
|
||||
background: #222222;
|
||||
box-sizing: border-box;
|
||||
padding: 15px;
|
||||
min-height: 400px;
|
||||
.transfer-box {
|
||||
border: 2px solid #947b2b;
|
||||
padding: 10px;
|
||||
border-radius: 5px;
|
||||
margin-bottom: 20px;
|
||||
font-weight: 600;
|
||||
position: relative;
|
||||
.down_icon {
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
background: url("~@/static/images/down_icon.png") no-repeat -3px center;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
.transfer-btn {
|
||||
position: absolute;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
background: url("~@/static/images/transfer_btn.png") no-repeat;
|
||||
background-size: 100% auto;
|
||||
right: 20px;
|
||||
top: 50%;
|
||||
margin-top: -25px;
|
||||
&:active {
|
||||
opacity: 0.6;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.picker-view {
|
||||
border: 2px solid #947b2b;
|
||||
padding: 8px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.list {
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
.lab {
|
||||
color: #757272;
|
||||
margin: 10px 0;
|
||||
}
|
||||
.lable {
|
||||
text-align: left;
|
||||
color: #ddd;
|
||||
margin-top: 20px;
|
||||
font-size: 16px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.money {
|
||||
font-size: 16px;
|
||||
margin-top: 0;
|
||||
padding-top: 15px;
|
||||
padding-bottom: 5px;
|
||||
color: #e5b932;
|
||||
}
|
||||
.gmoney {
|
||||
font-size: 16px;
|
||||
margin-top: 0;
|
||||
padding-bottom: 15px;
|
||||
color: #e5b932;
|
||||
}
|
||||
.btn {
|
||||
height: 30px;
|
||||
font-weight: 600;
|
||||
color: #0b1520 !important;
|
||||
}
|
||||
.type {
|
||||
width: 70px;
|
||||
height: 35px;
|
||||
background: #e5b932;
|
||||
border-radius: 40px;
|
||||
text-align: center;
|
||||
line-height: 35px;
|
||||
font-weight: 600;
|
||||
margin: 10px auto;
|
||||
}
|
||||
.input {
|
||||
line-height: 30px;
|
||||
height: 30px;
|
||||
}
|
||||
.button {
|
||||
line-height: 45px;
|
||||
height: 45px;
|
||||
color: #0b1520 !important;
|
||||
font-weight: bold;
|
||||
margin-top: 30px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.tip {
|
||||
color: #cc4c0e;
|
||||
font-size: 13px;
|
||||
text-align: justify;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,114 @@
|
||||
<template>
|
||||
<view class="customservice">
|
||||
<u-navbar
|
||||
leftIconColor="#eee"
|
||||
bgColor="#0c0c0d"
|
||||
:placeholder="true"
|
||||
:fixed="true"
|
||||
height="60"
|
||||
@leftClick="back"
|
||||
></u-navbar>
|
||||
<view class="cellBox">
|
||||
<view class="cell">
|
||||
<u--image
|
||||
:showLoading="false"
|
||||
:src="require('static/images/customservice.png')"
|
||||
width="100%"
|
||||
height="auto"
|
||||
mode="widthFix"
|
||||
class="icon"
|
||||
></u--image>
|
||||
<u-link
|
||||
target="_blank"
|
||||
:href="customServiceUrl"
|
||||
text="Online service"
|
||||
class="lable"
|
||||
></u-link>
|
||||
</view>
|
||||
<view class="cell">
|
||||
<u--image
|
||||
:showLoading="false"
|
||||
:src="require('static/images/line.png')"
|
||||
width="100%"
|
||||
height="auto"
|
||||
mode="widthFix"
|
||||
class="icon"
|
||||
></u--image>
|
||||
<u-link target="_blank" :href="telegramUrl" text="Telegram" class="lable"></u-link>
|
||||
</view>
|
||||
<view class="cell">
|
||||
<u--image
|
||||
:showLoading="false"
|
||||
:src="require('static/images/telegram.png')"
|
||||
width="100%"
|
||||
height="auto"
|
||||
mode="widthFix"
|
||||
class="icon"
|
||||
></u--image>
|
||||
<u-link target="_blank" :href="lineUrl" text="Line" class="lable"></u-link>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState } from "vuex";
|
||||
export default {
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
customServiceUrl: state => state.app.customServiceUrl,
|
||||
telegramUrl: state => state.app.telegramUrl,
|
||||
lineUrl: state => state.app.lineUrl
|
||||
})
|
||||
},
|
||||
onLoad() {},
|
||||
methods: {
|
||||
back() {
|
||||
uni.navigateBack();
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.customservice {
|
||||
background: #0b1520;
|
||||
width: 100%;
|
||||
min-height: 100vh;
|
||||
/deep/.u-navbar__content__title {
|
||||
color: #eee;
|
||||
font-weight: 600;
|
||||
}
|
||||
.cellBox {
|
||||
position: absolute;
|
||||
top: 30%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
width: 300px;
|
||||
}
|
||||
.cell {
|
||||
display: flex;
|
||||
padding: 15px;
|
||||
align-items: center;
|
||||
// background: #151617;
|
||||
color: #deb366;
|
||||
.icon {
|
||||
width: 35px;
|
||||
margin-right: 15px;
|
||||
}
|
||||
.lable {
|
||||
// border-bottom: 1px solid;
|
||||
color: #deb366 !important;
|
||||
font-size: 30px !important;
|
||||
line-height: 30px !important;
|
||||
/deep/span {
|
||||
border-bottom: 1px solid;
|
||||
padding-bottom: 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,190 @@
|
||||
<template>
|
||||
<view class="fund">
|
||||
<u-navbar
|
||||
leftIconColor="#eee"
|
||||
bgColor="#0c0c0d"
|
||||
:placeholder="true"
|
||||
:fixed="true"
|
||||
height="60"
|
||||
@leftClick="back"
|
||||
>
|
||||
<view class="nav" slot="center">
|
||||
<view
|
||||
class="li"
|
||||
:class="{ active: active == 'userRecharge' }"
|
||||
@tap="chooseNav('userRecharge')"
|
||||
>{{ $lang.depositRecords }}</view
|
||||
>
|
||||
<view
|
||||
class="li"
|
||||
:class="{ active: active == 'userWithdraw' }"
|
||||
@tap="chooseNav('userWithdraw')"
|
||||
>{{ $lang.withdrawalRecords }}</view
|
||||
>
|
||||
</view>
|
||||
</u-navbar>
|
||||
|
||||
<view class="item" v-for="(item, index) in list" :key="index">
|
||||
<template v-if="active == 'userRecharge'">
|
||||
<view class="box order">
|
||||
{{ $lang.transactionNumber }}: {{ item.out_trade_no }}
|
||||
</view>
|
||||
<view class="box amount"
|
||||
>{{ $lang.rechargeAmount }}: {{ item.amount }}</view
|
||||
>
|
||||
<view class="box amount"
|
||||
>{{ $lang.balance }}: {{ item.new_money }}</view
|
||||
>
|
||||
<view class="box amount"
|
||||
>{{ $lang.rechargeAddress }}: {{ item.from_addr }}</view
|
||||
>
|
||||
<view class="box tiem">
|
||||
{{ $lang.rechargeDate }}: {{ item.create_time }}</view
|
||||
>
|
||||
</template>
|
||||
<template v-if="active == 'userWithdraw'">
|
||||
<view class="box order">
|
||||
{{ $lang.withdrawalNumber }}: {{ item.order_no }}
|
||||
</view>
|
||||
<view class="box amount"
|
||||
>{{ $lang.withdrawalAmount }}: {{ item.amount }}</view
|
||||
>
|
||||
<view class="box free"
|
||||
>{{ $lang.withdrawalCommission }}: {{ item.service_fee }}</view
|
||||
>
|
||||
<view class="box amount"
|
||||
>{{ $lang.balance }}: {{ item.new_money }}</view
|
||||
>
|
||||
<view class="box amount"
|
||||
>{{ $lang.withdrawalAddress }}: {{ item.to_address }}</view
|
||||
>
|
||||
<view class="box tiem">
|
||||
{{ $lang.withdrawalDate }}: {{ item.create_time }}</view
|
||||
>
|
||||
<view class="box tiem">
|
||||
{{ $lang.withdrawalState }}:
|
||||
{{ $lang.statusType[item.status] }}</view
|
||||
>
|
||||
</template>
|
||||
</view>
|
||||
<u-empty
|
||||
:show="status == 'nomore' && list.length == 0"
|
||||
text=" "
|
||||
marginTop="20%"
|
||||
icon="https://cdn.uviewui.com/uview/empty/data.png"
|
||||
>
|
||||
</u-empty>
|
||||
<u-loadmore :status="status" />
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState } from "vuex";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
active: "userRecharge",
|
||||
status: "loadmore",
|
||||
list: [],
|
||||
page: 1,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
userInfo: (state) => state.app.userInfo,
|
||||
$lang: (state) => state.app.lang[state.app.language],
|
||||
}),
|
||||
},
|
||||
onLoad() {
|
||||
this.getData("refresh");
|
||||
},
|
||||
onReachBottom() {
|
||||
if (this.status != "nomore") {
|
||||
this.getData("loading");
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
chooseNav(nav) {
|
||||
this.active = nav;
|
||||
this.getData("refresh");
|
||||
},
|
||||
|
||||
getData(type) {
|
||||
if (type == "refresh") {
|
||||
this.list = [];
|
||||
this.page = 1;
|
||||
} else {
|
||||
this.page += 1;
|
||||
}
|
||||
const params = {
|
||||
user_id: this.userInfo.id,
|
||||
page: this.page,
|
||||
page_size: 10,
|
||||
};
|
||||
this.status = "loading";
|
||||
this.$api[this.active](params)
|
||||
.then((res) => {
|
||||
let list = [];
|
||||
if (res.Success == 1) {
|
||||
list = res?.data?.list || [];
|
||||
} else {
|
||||
this.$toast({
|
||||
message: res.Msg,
|
||||
duration: 2000,
|
||||
});
|
||||
}
|
||||
if (list.length == 0 || list.length < 10) {
|
||||
this.status = "nomore";
|
||||
}
|
||||
this.list = [...this.list, ...list];
|
||||
})
|
||||
.catch((err) => {
|
||||
this.status = "nomore";
|
||||
console.log(err);
|
||||
});
|
||||
},
|
||||
back() {
|
||||
uni.navigateBack();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.fund {
|
||||
/deep/.u-navbar__content__title {
|
||||
color: #eee;
|
||||
font-weight: 600;
|
||||
}
|
||||
.nav {
|
||||
display: flex;
|
||||
color: #959393;
|
||||
border-radius: 5px;
|
||||
overflow: hidden;
|
||||
font-size: 14px;
|
||||
.li {
|
||||
background: #242424;
|
||||
padding: 6px 15px;
|
||||
font-weight: 600;
|
||||
&.active {
|
||||
background: #947b2b;
|
||||
color: #000;
|
||||
}
|
||||
}
|
||||
}
|
||||
.item {
|
||||
color: $u-content-color;
|
||||
font-size: 28rpx;
|
||||
padding: 24rpx 0;
|
||||
border-bottom: 1px solid #38393b;
|
||||
.box {
|
||||
padding: 10rpx 20rpx;
|
||||
word-break: keep-all;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,329 @@
|
||||
<template>
|
||||
<view class="game">
|
||||
<u-navbar
|
||||
leftIconColor="#eee"
|
||||
bgColor="#0c0c0d"
|
||||
:placeholder="true"
|
||||
:fixed="true"
|
||||
height="60"
|
||||
@leftClick="back"
|
||||
>
|
||||
<view class="nav" slot="center" @tap="show = true">
|
||||
<text>{{ active.name }}</text>
|
||||
<u-icon
|
||||
class="icon"
|
||||
name="arrow-down-fill"
|
||||
color="#959393"
|
||||
size="13"
|
||||
></u-icon>
|
||||
</view>
|
||||
<view class="data-btn" slot="right">
|
||||
<u-icon
|
||||
v-if="active.game_id == 100"
|
||||
@tap="showDate = true"
|
||||
name="calendar"
|
||||
color="#eee"
|
||||
size="28"
|
||||
></u-icon>
|
||||
<text v-else class="rigt-text">{{ $lang.weekRecord }}</text>
|
||||
</view>
|
||||
</u-navbar>
|
||||
<view class="item" v-for="(item, index) in list" :key="index">
|
||||
<template v-if="active.game_id == 100">
|
||||
<view class="box"> {{ $lang.gameName }}: {{ item.GameName }} </view>
|
||||
<view class="box">{{ $lang.roomNo }}: {{ item.ChildGameID }}</view>
|
||||
<view class="box">{{ $lang.totalBetting }}: {{ item.AllBet }}</view>
|
||||
<view class="box">{{ $lang.winLose }}: {{ item.ValidBet }}</view>
|
||||
<view class="box" v-if="item.Tax > 0"
|
||||
>{{ $lang.taxation }}: {{ item.Tax }}</view
|
||||
>
|
||||
<view class="box"> {{ $lang.date }}: {{ item.createTime }}</view>
|
||||
</template>
|
||||
<template v-else>
|
||||
<view class="box">
|
||||
{{ $lang.tableNumber }}: {{ item.table_name }}
|
||||
</view>
|
||||
<view class="box">{{ $lang.playingMethod }}: {{ item.user_bet }}</view>
|
||||
<view class="box" v-if="item.maliang"
|
||||
>{{ $lang.maliang }}: {{ item.maliang }}</view
|
||||
>
|
||||
<view class="box">{{ $lang.result }}: {{ item.card_result }}</view>
|
||||
<view class="box">{{ $lang.winLose }}: {{ item.win_total }}</view>
|
||||
<view class="box">{{ $lang.date }}: {{ item.create_time }}</view>
|
||||
</template>
|
||||
</view>
|
||||
<u-empty
|
||||
:show="status == 'nomore' && list.length == 0"
|
||||
text=" "
|
||||
marginTop="20%"
|
||||
icon="https://cdn.uviewui.com/uview/empty/data.png"
|
||||
>
|
||||
</u-empty>
|
||||
<u-loadmore :status="status" />
|
||||
<view class="ft" v-if="active.game_id != 100">
|
||||
<view class="text"> {{ $lang.common }}{{ num }}{{ $lang.strip }}</view>
|
||||
<view class="text"> {{ $lang.totalBetting }} {{ alldown }} </view>
|
||||
<view class="text"> {{ $lang.totalWin }} {{ allwin }} </view>
|
||||
</view>
|
||||
<view class="mb60"></view>
|
||||
<l-calendar
|
||||
v-model="showDate"
|
||||
@change="changeDate"
|
||||
:isRange="true"
|
||||
:maxDate="today"
|
||||
:initStartDate="startTime"
|
||||
:initEndDate="endTime"
|
||||
></l-calendar>
|
||||
<u-picker
|
||||
:title="$lang.gameType"
|
||||
closeOnClickOverlay
|
||||
:show="show"
|
||||
:columns="$lang.gameList"
|
||||
:cancelText="$lang.cancel"
|
||||
:confirmText="$lang.confirm"
|
||||
keyName="name"
|
||||
@close="show = false"
|
||||
@cancel="show = false"
|
||||
@confirm="chooseNav"
|
||||
></u-picker>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState } from "vuex";
|
||||
import dayjs from "dayjs";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
status: "loadmore",
|
||||
list: [],
|
||||
page: 1,
|
||||
num: 0,
|
||||
pagenum: 0,
|
||||
alldown: 0,
|
||||
allwin: 0,
|
||||
show: false,
|
||||
showDate: false,
|
||||
today: dayjs().format("YYYY-MM-D"),
|
||||
startTime: dayjs().subtract(3, "day").format("YYYY-MM-D"),
|
||||
endTime: dayjs().format("YYYY-MM-D"),
|
||||
active: {},
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
userInfo: (state) => state.app.userInfo,
|
||||
$lang: (state) => state.app.lang[state.app.language],
|
||||
}),
|
||||
},
|
||||
onLoad() {
|
||||
this.active = this.$lang.gameList[0][0];
|
||||
console.log(this.$lang.gameList);
|
||||
this.getData("refresh");
|
||||
},
|
||||
onReachBottom() {
|
||||
if (this.status != "nomore") {
|
||||
this.getData("loading");
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
chooseNav(nav) {
|
||||
this.active = nav.value[0];
|
||||
this.show = false;
|
||||
this.getData("refresh");
|
||||
},
|
||||
changeDate(date) {
|
||||
this.startTime = date.startDate;
|
||||
this.endTime = date.endDate;
|
||||
this.getData("refresh");
|
||||
},
|
||||
getData(type) {
|
||||
if (type == "refresh") {
|
||||
this.list = [];
|
||||
this.page = 1;
|
||||
} else {
|
||||
this.page += 1;
|
||||
}
|
||||
this.status = "loading";
|
||||
if (this.active.game_id == 100) {
|
||||
this.getGamelog();
|
||||
} else {
|
||||
this.getUserBets();
|
||||
}
|
||||
},
|
||||
getUserBets() {
|
||||
const params = {
|
||||
user_id: this.userInfo.id,
|
||||
api_token: this.userInfo.api_token,
|
||||
game_id: this.active.game_id,
|
||||
page: this.page,
|
||||
time_interval: 3,
|
||||
};
|
||||
this.$api
|
||||
.getUserBets(params)
|
||||
.then((res) => {
|
||||
let list = [];
|
||||
if (res.Success == 1) {
|
||||
const data = res.Data;
|
||||
list = res?.Data?.bet_info || [];
|
||||
this.num = data.bet_num || 0;
|
||||
this.pagenum = data.page_num || 0;
|
||||
this.alldown = data.bet_list_amount || 0;
|
||||
this.allwin = data.bet_list_wintotal || 0;
|
||||
} else {
|
||||
this.$toast({
|
||||
message: res.Msg,
|
||||
duration: 2000,
|
||||
});
|
||||
}
|
||||
if (list.length == 0 || list.length < 10) {
|
||||
this.status = "nomore";
|
||||
}
|
||||
this.list = [...this.list, ...list];
|
||||
})
|
||||
.catch((err) => {
|
||||
this.status = "nomore";
|
||||
console.log(err);
|
||||
})
|
||||
.finally(() => {});
|
||||
},
|
||||
getRobBet() {
|
||||
const params = {
|
||||
// user_id: this.userInfo.id,
|
||||
// api_token: this.userInfo.api_token,
|
||||
// game_id: this.active.game_id,
|
||||
// page: this.page,
|
||||
// time_interval: 3,
|
||||
// user_id: this.userInfo.id,
|
||||
// api_token: this.userInfo.api_token,
|
||||
// game_id: this.type,
|
||||
// page: this.robpage,
|
||||
// number_tab_id: number_tab_id,
|
||||
};
|
||||
getRobBet(params)
|
||||
.then((res) => {
|
||||
if (res.Success == 1) {
|
||||
const data = res.Data;
|
||||
console.log(data);
|
||||
// this.showRob = true;
|
||||
// this.robTitle = title;
|
||||
// this.robData = data.bet_info;
|
||||
// this.robnum = data.bet_num;
|
||||
// this.robpagenum = data.page_num;
|
||||
// this.roballdown = data.bet_list_amount;
|
||||
// this.roballwin = data.bet_list_wintotal;
|
||||
} else {
|
||||
// console.log(data)
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err);
|
||||
});
|
||||
},
|
||||
getGamelog() {
|
||||
const params = {
|
||||
pageSize: 10,
|
||||
page: this.page,
|
||||
// startTime: dayjs(this.startTime).unix(),
|
||||
// endTime: dayjs(this.endTime).unix(),
|
||||
};
|
||||
|
||||
let start = dayjs(this.startTime).unix(),
|
||||
end = dayjs(this.endTime).unix();
|
||||
|
||||
if (end > start) {
|
||||
params.startTime = start;
|
||||
params.endTime = end + 24 * 60 * 60 * 1000 - 1;
|
||||
} else {
|
||||
params.startTime = end;
|
||||
params.endTime = start + 24 * 60 * 60 * 1000 - 1;
|
||||
}
|
||||
|
||||
this.$api
|
||||
.getGamelog(params)
|
||||
.then((res) => {
|
||||
let list = [];
|
||||
if (res.status_code == 200) {
|
||||
console.log(res);
|
||||
list = res?.data?.list || [];
|
||||
} else {
|
||||
this.$toast({
|
||||
message: res.message,
|
||||
duration: 2000,
|
||||
});
|
||||
}
|
||||
if (list.length == 0 || list.length < 10) {
|
||||
this.status = "nomore";
|
||||
}
|
||||
this.list = [...this.list, ...list];
|
||||
})
|
||||
.catch((err) => {
|
||||
this.status = "nomore";
|
||||
console.log(err);
|
||||
});
|
||||
},
|
||||
back() {
|
||||
uni.navigateBack();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.game {
|
||||
height: calc(100vh - 40px);
|
||||
/deep/.u-navbar__content__title {
|
||||
color: #eee;
|
||||
font-weight: 600;
|
||||
}
|
||||
.nav {
|
||||
display: flex;
|
||||
border-radius: 5px;
|
||||
overflow: hidden;
|
||||
font-size: 16px;
|
||||
color: #947b2b;
|
||||
font-weight: 600;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.icon {
|
||||
padding-left: 5px;
|
||||
}
|
||||
}
|
||||
.rigt-text {
|
||||
color: #999;
|
||||
font-size: 12px;
|
||||
}
|
||||
.item {
|
||||
color: $u-content-color;
|
||||
font-size: 28rpx;
|
||||
padding: 24rpx 0;
|
||||
border-bottom: 1px solid #38393b;
|
||||
.box {
|
||||
padding: 10rpx 20rpx;
|
||||
word-break: keep-all;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
.ft {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 10px 20px;
|
||||
background: #0c0c0d;
|
||||
color: #947b2b;
|
||||
box-sizing: border-box;
|
||||
font-size: 14px;
|
||||
}
|
||||
.mb60 {
|
||||
width: 100%;
|
||||
height: 60px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,261 @@
|
||||
<template>
|
||||
<view class="user">
|
||||
<view class="card">
|
||||
<view class="uid">ID:{{ userInfo.username }}</view>
|
||||
<u--image
|
||||
class="logo"
|
||||
:showLoading="true"
|
||||
:src="loginLogo"
|
||||
width="50px"
|
||||
height="auto"
|
||||
mode="widthFix"
|
||||
></u--image>
|
||||
<view class="box">
|
||||
<view class="text">{{ $lang.userBalance }}</view>
|
||||
<view class="money">{{ money }}</view>
|
||||
</view>
|
||||
<u--image
|
||||
:showLoading="false"
|
||||
:src="require('static/images/card_bg.png')"
|
||||
width="100%"
|
||||
height="auto"
|
||||
mode="widthFix"
|
||||
></u--image>
|
||||
</view>
|
||||
<view class="content">
|
||||
<view
|
||||
class="cell"
|
||||
v-for="(item, index) in userMenu"
|
||||
:key="index"
|
||||
@click="goPath(item)"
|
||||
>
|
||||
<view class="lab">{{ item.name }}</view>
|
||||
<u-icon
|
||||
class="icon"
|
||||
name="arrow-right"
|
||||
color="#757272"
|
||||
size="16"
|
||||
></u-icon>
|
||||
</view>
|
||||
<view class="logout" @tap="modalShow = true">{{ $lang.logout }}</view>
|
||||
</view>
|
||||
<u-picker
|
||||
:title="$lang.languageSettings"
|
||||
closeOnClickOverlay
|
||||
:defaultIndex="defaultIndex"
|
||||
:show="show"
|
||||
:columns="langList"
|
||||
:cancelText="$lang.cancel"
|
||||
:confirmText="$lang.confirm"
|
||||
keyName="name"
|
||||
@close="show = false"
|
||||
@cancel="show = false"
|
||||
@confirm="confirm"
|
||||
></u-picker>
|
||||
<u-modal
|
||||
:show="modalShow"
|
||||
:title="$lang.tip"
|
||||
:confirmText="$lang.confirm"
|
||||
:cancelText="$lang.cancel"
|
||||
@confirm="confirmLogout"
|
||||
@cancel="modalShow = false"
|
||||
:showCancelButton="true"
|
||||
ref="uModal"
|
||||
:asyncClose="true"
|
||||
>
|
||||
<view style="text-align: center">{{ $lang.logoutTip }}</view>
|
||||
</u-modal>
|
||||
<view class="mb60"></view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState } from "vuex";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
show: false,
|
||||
modalShow: false,
|
||||
|
||||
defaultIndex: [0],
|
||||
langList: [
|
||||
[
|
||||
{ key: "en", name: "English" },
|
||||
{ key: "tw", name: "繁體中文" },
|
||||
{ key: "cn", name: "简体中文" },
|
||||
{ key: "yn", name: "Việt nam" },
|
||||
{ key: "kr", name: "한국어" },
|
||||
{ key: "tl", name: "แบบไทย" },
|
||||
{ key: "in", name: "Indonesia" },
|
||||
],
|
||||
],
|
||||
money:0
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
userInfo: (state) => state.app.userInfo,
|
||||
language: (state) => state.app.language,
|
||||
$lang: (state) => state.app.lang[state.app.language],
|
||||
loginLogo: (state) => state.app.loginLogo,
|
||||
userMenu: (state) => {
|
||||
let list = [];
|
||||
const lang = state.app.lang[state.app.language];
|
||||
const userInfo = state.app.userInfo;
|
||||
if (userInfo.pay_channel) {
|
||||
list = lang.userMenu.filter(
|
||||
(v) => v.id != 1
|
||||
);
|
||||
} else {
|
||||
list = lang.userMenu.filter(
|
||||
(v) => v.id != 1 && v.id != 2 && v.id != 4 && v.id != 5
|
||||
);
|
||||
}
|
||||
return list;
|
||||
},
|
||||
}),
|
||||
},
|
||||
onLoad() {
|
||||
this.langList[0].forEach((v, i) => {
|
||||
if (v.key == this.language) {
|
||||
this.defaultIndex = [i];
|
||||
}
|
||||
});
|
||||
this.getUserMoneyData()
|
||||
},
|
||||
methods: {
|
||||
confirm(item) {
|
||||
this.$store.commit("app/updateLanguage", item.value[0].key);
|
||||
this.show = false;
|
||||
},
|
||||
goPath(item) {
|
||||
if (item.id == 0) {
|
||||
this.show = true;
|
||||
} else if (item.id == 4 || item.id == 5 || item.id == 6) {
|
||||
uni.switchTab({
|
||||
url: item.path,
|
||||
});
|
||||
} else {
|
||||
if (this.userInfo.is_sw == 1) {
|
||||
this.$toast({
|
||||
message: this.$lang.is_sw,
|
||||
duration: 2000,
|
||||
});
|
||||
} else {
|
||||
uni.navigateTo({
|
||||
url: item.path,
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
confirmLogout() {
|
||||
localStorage.removeItem("userInfo");
|
||||
this.$router.replace({ path: "/" });
|
||||
},
|
||||
getUserMoneyData() {
|
||||
var that = this
|
||||
const params = {
|
||||
user_id: this.userInfo.id,
|
||||
api_token: this.userInfo.api_token,
|
||||
};
|
||||
this.$api['getUserMoney'](params)
|
||||
.then((res) => {
|
||||
if (res.Success) {
|
||||
that.money = parseFloat(res.Data.money).toFixed(2)
|
||||
} else {
|
||||
this.$toast({
|
||||
message: res.Msg,
|
||||
duration: 2000,
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err);
|
||||
});
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.user {
|
||||
background: #0b1520;
|
||||
width: 100%;
|
||||
min-height: 100vh;
|
||||
.card {
|
||||
width: 100%;
|
||||
padding: 10px;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
.uid {
|
||||
position: absolute;
|
||||
left: 30px;
|
||||
top: 25px;
|
||||
z-index: 3;
|
||||
font-size: 14px;
|
||||
color: #573d14;
|
||||
}
|
||||
.logo {
|
||||
position: absolute;
|
||||
right: 25px;
|
||||
top: 20px;
|
||||
z-index: 3;
|
||||
}
|
||||
.box {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
z-index: 3;
|
||||
transform: translate(-50%, -50%);
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
color: #573d14;
|
||||
text-align: center;
|
||||
.money {
|
||||
padding-left: 38px;
|
||||
padding-right: 36px;
|
||||
padding-top: 10px;
|
||||
padding-bottom: 4px;
|
||||
background: url("/static/images/balance_icon.png") no-repeat;
|
||||
background-size: 33px auto;
|
||||
background-position: left top;
|
||||
}
|
||||
}
|
||||
}
|
||||
.content {
|
||||
margin: 20px 15px;
|
||||
border-radius: 5px;
|
||||
overflow: hidden;
|
||||
.cell {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
font-size: 16px;
|
||||
padding: 15px 10px;
|
||||
color: #deb366;
|
||||
border-bottom: 1px solid #594522;
|
||||
background: #151617;
|
||||
&:active {
|
||||
opacity: 0.8;
|
||||
}
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
.logout {
|
||||
width: 100%;
|
||||
height: 48px;
|
||||
line-height: 48px;
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
background: #e5b932;
|
||||
font-weight: 600;
|
||||
margin: 20px auto;
|
||||
border-radius: 5px;
|
||||
&:active {
|
||||
opacity: 0.8;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,44 @@
|
||||
<template>
|
||||
<view class="ifame">
|
||||
<u-navbar
|
||||
leftIconColor="#eee"
|
||||
:title="$lang.safe"
|
||||
bgColor="#0c0c0d"
|
||||
:placeholder="true"
|
||||
:fixed="true"
|
||||
height="60"
|
||||
@leftClick="back"
|
||||
>
|
||||
</u-navbar>
|
||||
<view class="section">
|
||||
<!-- <web-view src="https://test-ybf-business02.dcops.cc/?t=MUJ3hn6x2lf65vb-KWbmF2LLcy3kAZZI8U5DWLu7Y1AKdl1PuIg7PIcLyloAAmOyXBWnVWa2RVmwvAK0fQWQkwjujJqPi2B7uv22pZzvr-aFSlW8ld8gfU873DbnBlLozM_LH5dXEHe2iukkANJBOxBEaE3k8DngoHhqSRATSL-KBhdf5vA4r9eEgoNiCU_QRPFMq7AwXYH5UH9wzWLf1hQvB0bszdhnVX_NYAFDuQrVAbLF4Z2WjSGxbe5YoX4TMQKW3FIAyy7nv8ntrjR6gIUz8ccKsSEEthrGwM32nZ3h5RhHs0Juz_hn0WFcL1QqPlspo2GkHNVHaKcaz_Barv-6NIahVoBPFcis_eePqVUZ9Futo0Bj2S8To7DaxXbXzziiKgoltzoN8feHHbKk5LQk1qpKTnoLUdmbT1AnRGOK0-ILJLSSXZAm4y-PG3JzMk6zwvI06z4u5VMinIlowmIKftRRvz_5kJod5tI6Tc_V4qeR53MLbF8MsG7I_cF3GTfY-nDsOp2BjKyrHxxK1vdNj0h4gZAsEmXkdmtpu1_y610WidlpwZEYGgWuyKdqIn1rvRkextQVy2nfZY-gdXral20QpJZBaycQPYoXOAfTU618WwbD2qqj23yzd6nDW06Jp5_ATxtgxBaOsZeoB9kTsjODC3kEn3Q_gqqtyqkRbPv-6g_kmPHY8vZa2MnbYHCGRwPCmI5JHW2R_g5JDgeDAeBmDfyRDnqEwv_gHe564d5fqPi81zND9_zUum7Cpck3xFzzRHwjslmL4lahbtmAs4BJePiF7fqDPD5IgJOgNIg64Qu389AgQ6mQMcrc&v=2"></web-view> -->
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState } from "vuex";
|
||||
export default {
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
onLoad() {},
|
||||
computed: {
|
||||
...mapState({
|
||||
$lang: (state) => state.app.lang[state.app.language],
|
||||
}),
|
||||
},
|
||||
methods: {
|
||||
back() {
|
||||
uni.navigateBack();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.ifame {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,185 @@
|
||||
<template>
|
||||
<view class="resetPassword">
|
||||
<u-navbar
|
||||
leftIconColor="#eee"
|
||||
:title="$lang.reset + $lang.password"
|
||||
bgColor="#0c0c0d"
|
||||
:placeholder="true"
|
||||
:fixed="true"
|
||||
height="60"
|
||||
@leftClick="back"
|
||||
>
|
||||
</u-navbar>
|
||||
|
||||
<view class="content">
|
||||
<view class="logo">
|
||||
<u--image
|
||||
:showLoading="false"
|
||||
:src="require('static/images/ez-logo-login.png')"
|
||||
width="125px"
|
||||
height="119px"
|
||||
mode="scaleToFill"
|
||||
></u--image>
|
||||
</view>
|
||||
<u-input
|
||||
class="input"
|
||||
v-model="password_now"
|
||||
:password="true"
|
||||
:placeholder="$lang.enterNowPassword"
|
||||
>
|
||||
<text class="text" slot="prefix">{{ $lang.nowPassword }}</text>
|
||||
</u-input>
|
||||
<u-input
|
||||
class="input"
|
||||
v-model="password_new"
|
||||
:password="true"
|
||||
:placeholder="$lang.enterNewPassword"
|
||||
>
|
||||
<text class="text" slot="prefix">{{ $lang.nwwPassword }}</text>
|
||||
</u-input>
|
||||
<u-input
|
||||
class="input"
|
||||
v-model="password_reply"
|
||||
:password="true"
|
||||
:placeholder="$lang.enterPasswordAgain"
|
||||
>
|
||||
<text class="text" slot="prefix">{{ $lang.confirmPassword }}</text>
|
||||
</u-input>
|
||||
<view class="btn-box">
|
||||
<view class="btn" @tap="reset()">{{ $lang.reset }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState } from "vuex";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
password_now: "",
|
||||
password_new: "",
|
||||
password_reply: "",
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
userInfo: (state) => state.app.userInfo,
|
||||
$lang: (state) => state.app.lang[state.app.language],
|
||||
}),
|
||||
},
|
||||
onLoad() {},
|
||||
methods: {
|
||||
back() {
|
||||
uni.navigateBack();
|
||||
},
|
||||
reset() {
|
||||
const params = {
|
||||
password_now: this.password_now,
|
||||
password_new: this.password_new,
|
||||
password_reply: this.password_reply,
|
||||
user_id: this.userInfo.id,
|
||||
api_token: this.userInfo.api_token,
|
||||
};
|
||||
if (!params.password_now) {
|
||||
this.$toast({
|
||||
message: this.$lang.enterNowPassword,
|
||||
duration: 2000,
|
||||
});
|
||||
} else if (!params.password_new) {
|
||||
this.$toast({
|
||||
message: this.$lang.enterNewPassword,
|
||||
duration: 2000,
|
||||
});
|
||||
} else if (!params.password_reply) {
|
||||
this.$toast({
|
||||
message: this.$lang.enterPasswordAgain,
|
||||
duration: 2000,
|
||||
});
|
||||
} else {
|
||||
this.$toast({
|
||||
type: "loading",
|
||||
message: `${this.$lang.submit}...`,
|
||||
duration: 200000,
|
||||
});
|
||||
this.$api
|
||||
.updatePassword(params)
|
||||
.then((res) => {
|
||||
if (res.Success == 1) {
|
||||
this.$toast({
|
||||
type: "success",
|
||||
title: res.Msg,
|
||||
duration: 2000,
|
||||
});
|
||||
} else {
|
||||
this.$toast({
|
||||
title: res.Msg,
|
||||
duration: 2000,
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err);
|
||||
})
|
||||
.finally(() => {
|
||||
this.$toastHide();
|
||||
});
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.resetPassword {
|
||||
/deep/.u-navbar__content__title {
|
||||
color: #eee;
|
||||
font-weight: 600;
|
||||
}
|
||||
.content {
|
||||
width: 280px;
|
||||
padding-bottom: 50px;
|
||||
margin: 0 auto;
|
||||
.logo {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-bottom: 20px;
|
||||
margin-top: 20%;
|
||||
}
|
||||
.input {
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
margin-bottom: 15px;
|
||||
background: #fff;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
.phone-code {
|
||||
min-width: 50px;
|
||||
text-align: center;
|
||||
border-right: 1px solid #ddd;
|
||||
}
|
||||
.text {
|
||||
padding-right: 5px;
|
||||
}
|
||||
.btn-box {
|
||||
margin-top: 20px;
|
||||
.btn {
|
||||
width: 100%;
|
||||
height: 48px;
|
||||
line-height: 48px;
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
background: url("~@/static/images/btn_bg.png") no-repeat;
|
||||
background-size: 100% 100%;
|
||||
font-weight: 600;
|
||||
margin-top: 15px;
|
||||
&:active {
|
||||
opacity: 0.8;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,73 @@
|
||||
<template>
|
||||
<view class="safe">
|
||||
<u-navbar
|
||||
leftIconColor="#eee"
|
||||
:title="$lang.safe"
|
||||
bgColor="#0c0c0d"
|
||||
:placeholder="true"
|
||||
:fixed="true"
|
||||
height="60"
|
||||
@leftClick="back"
|
||||
>
|
||||
</u-navbar>
|
||||
<view
|
||||
class="cell"
|
||||
v-for="(item, index) in $lang.resetPasswordList"
|
||||
:key="index"
|
||||
@click="goRouter(item)"
|
||||
>
|
||||
<view class="lable">{{ item.name }}</view>
|
||||
<u-icon
|
||||
class="icon"
|
||||
name="arrow-right"
|
||||
color="#757272"
|
||||
size="16"
|
||||
></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState } from "vuex";
|
||||
export default {
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
onLoad() {},
|
||||
computed: {
|
||||
...mapState({
|
||||
$lang: (state) => state.app.lang[state.app.language],
|
||||
}),
|
||||
},
|
||||
methods: {
|
||||
back() {
|
||||
uni.navigateBack();
|
||||
},
|
||||
goRouter(item) {
|
||||
uni.navigateTo({
|
||||
url: item.path,
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.safe {
|
||||
/deep/.u-navbar__content__title {
|
||||
color: #eee;
|
||||
font-weight: 600;
|
||||
}
|
||||
.cell {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 15px;
|
||||
align-items: center;
|
||||
background: #151617;
|
||||
color: #deb366;
|
||||
&:active {
|
||||
opacity: 0.6;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,213 @@
|
||||
<template>
|
||||
<view class="transaction">
|
||||
<u-navbar
|
||||
leftIconColor="#eee"
|
||||
bgColor="#0c0c0d"
|
||||
:placeholder="true"
|
||||
:fixed="true"
|
||||
height="60"
|
||||
@leftClick="back"
|
||||
>
|
||||
<view class="nav" slot="center">
|
||||
<view
|
||||
class="li"
|
||||
:class="{ active: active == 11 }"
|
||||
@tap="chooseNav(11)"
|
||||
>{{ $lang.upperRecord }}</view
|
||||
>
|
||||
<view
|
||||
class="li"
|
||||
:class="{ active: active == 12 }"
|
||||
@tap="chooseNav(12)"
|
||||
>{{ $lang.lowerRecord }}</view
|
||||
>
|
||||
</view>
|
||||
<view class="data-btn" slot="right">
|
||||
<u-icon
|
||||
@tap="showDate = true"
|
||||
name="calendar"
|
||||
color="#eee"
|
||||
size="28"
|
||||
></u-icon>
|
||||
</view>
|
||||
</u-navbar>
|
||||
|
||||
<view class="item" v-for="(item, index) in list" :key="index">
|
||||
<template v-if="active == 11">
|
||||
<view class="box order">
|
||||
{{ $lang.transactionNumber }}: {{ item.OrderNo }}
|
||||
</view>
|
||||
<view class="box amount"
|
||||
>{{ $lang.upSplitAmount }}: {{ item.Money }}</view
|
||||
>
|
||||
<view class="box tiem">
|
||||
{{ $lang.upSplitDate }}: {{ item.CreateTime }}</view
|
||||
>
|
||||
<view class="box tiem">
|
||||
{{ $lang.upSplitState }}: {{ $lang.statusType[item.Status] }}</view
|
||||
>
|
||||
</template>
|
||||
<template v-if="active == 12">
|
||||
<view class="box order">
|
||||
{{ $lang.transactionNumber }}: {{ item.OrderNo }}
|
||||
</view>
|
||||
<view class="box amount"
|
||||
>{{ $lang.downSplitAmount }}: {{ item.Money }}</view
|
||||
>
|
||||
<view class="box tiem">
|
||||
{{ $lang.downSplitDate }}: {{ item.CreateTime }}</view
|
||||
>
|
||||
<view class="box tiem">
|
||||
{{ $lang.downSplitState }}: {{ $lang.statusType[item.Status] }}</view
|
||||
>
|
||||
</template>
|
||||
</view>
|
||||
<u-empty
|
||||
:show="status == 'nomore' && list.length == 0"
|
||||
text=" "
|
||||
marginTop="20%"
|
||||
icon="https://cdn.uviewui.com/uview/empty/data.png"
|
||||
>
|
||||
</u-empty>
|
||||
<u-loadmore :status="status" />
|
||||
<l-calendar
|
||||
v-model="showDate"
|
||||
@change="changeDate"
|
||||
:isRange="true"
|
||||
:maxDate="today"
|
||||
:initStartDate="startTime"
|
||||
:initEndDate="endTime"
|
||||
></l-calendar>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState } from "vuex";
|
||||
import dayjs from "dayjs";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
active: 11,
|
||||
status: "loadmore",
|
||||
list: [],
|
||||
page: 1,
|
||||
showDate: false,
|
||||
today: dayjs().format("YYYY-MM-D"),
|
||||
startTime: dayjs().subtract(1, "week").format("YYYY-MM-D"),
|
||||
endTime: dayjs().format("YYYY-MM-D"),
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
userInfo: (state) => state.app.userInfo,
|
||||
$lang: (state) => state.app.lang[state.app.language],
|
||||
}),
|
||||
},
|
||||
onLoad() {
|
||||
this.getData("refresh");
|
||||
},
|
||||
onReachBottom() {
|
||||
this.getData("loading");
|
||||
},
|
||||
methods: {
|
||||
chooseNav(nav) {
|
||||
this.active = nav;
|
||||
this.getData("refresh");
|
||||
},
|
||||
changeDate(date) {
|
||||
this.startTime = date.startDate;
|
||||
this.endTime = date.endDate;
|
||||
this.getData("refresh");
|
||||
},
|
||||
getData(type) {
|
||||
if (type == "refresh") {
|
||||
this.list = [];
|
||||
this.page = 1;
|
||||
} else {
|
||||
this.page += 1;
|
||||
}
|
||||
const params = {
|
||||
type: this.active,
|
||||
pageSize: 10,
|
||||
page: this.page,
|
||||
};
|
||||
let start = dayjs(this.startTime).unix(),
|
||||
end = dayjs(this.endTime).unix();
|
||||
|
||||
if (end > start) {
|
||||
params.startTime = start;
|
||||
params.endTime = end + 24 * 60 * 60 * 1000 - 1;
|
||||
} else {
|
||||
params.startTime = end;
|
||||
params.endTime = start + 24 * 60 * 60 * 1000 - 1;
|
||||
}
|
||||
|
||||
this.status = "loading";
|
||||
this.$api
|
||||
.getScorelog(params)
|
||||
.then((res) => {
|
||||
let list = [];
|
||||
if (res.status_code == 200) {
|
||||
console.log(res);
|
||||
list = res?.data?.list || [];
|
||||
} else {
|
||||
this.$toast({
|
||||
message: res.message,
|
||||
duration: 2000,
|
||||
});
|
||||
}
|
||||
if (list.length == 0 || list.length < 10) {
|
||||
this.status = "nomore";
|
||||
}
|
||||
this.list = [...this.list, ...list];
|
||||
})
|
||||
.catch((err) => {
|
||||
this.status = "nomore";
|
||||
console.log(err);
|
||||
});
|
||||
},
|
||||
back() {
|
||||
uni.navigateBack();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.transaction {
|
||||
/deep/.u-navbar__content__title {
|
||||
color: #eee;
|
||||
font-weight: 600;
|
||||
}
|
||||
.nav {
|
||||
display: flex;
|
||||
color: #959393;
|
||||
border-radius: 5px;
|
||||
overflow: hidden;
|
||||
font-size: 14px;
|
||||
.li {
|
||||
background: #242424;
|
||||
padding: 6px 15px;
|
||||
font-weight: 600;
|
||||
&.active {
|
||||
background: #947b2b;
|
||||
color: #000;
|
||||
}
|
||||
}
|
||||
}
|
||||
.item {
|
||||
color: $u-content-color;
|
||||
font-size: 28rpx;
|
||||
padding: 24rpx 0;
|
||||
border-bottom: 1px solid #38393b;
|
||||
.box {
|
||||
padding: 10rpx 20rpx;
|
||||
word-break: keep-all;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,254 @@
|
||||
<template>
|
||||
<view class="withdraw">
|
||||
<u-navbar
|
||||
title=""
|
||||
bgColor="#000"
|
||||
:placeholder="true"
|
||||
:fixed="true"
|
||||
leftIcon=""
|
||||
height="60"
|
||||
>
|
||||
<view slot="left">
|
||||
<text class="navbar-lab">{{ $lang.withdraw }}</text>
|
||||
</view>
|
||||
</u-navbar>
|
||||
<view class="content">
|
||||
<view class="list">
|
||||
<view class="lable money"
|
||||
>{{ $lang.balance }}:{{ userInfo.money }}</view
|
||||
>
|
||||
</view>
|
||||
<view class="picker-view" @click="show = true">
|
||||
<u-input
|
||||
readonly
|
||||
:placeholder="$lang.pleaseChoose"
|
||||
color="#93979b"
|
||||
v-model="type"
|
||||
border="none"
|
||||
>
|
||||
<u--text
|
||||
:text="$lang.chooseWithdraw"
|
||||
slot="prefix"
|
||||
margin="0 3px 0 0"
|
||||
type="tips"
|
||||
></u--text>
|
||||
<u-icon
|
||||
slot="suffix"
|
||||
name="arrow-down-fill"
|
||||
color="#757272"
|
||||
size="16"
|
||||
></u-icon>
|
||||
</u-input>
|
||||
</view>
|
||||
<u-picker
|
||||
:title="$lang.pleaseChooseWithdraw"
|
||||
closeOnClickOverlay
|
||||
:show="show"
|
||||
:columns="columns"
|
||||
:cancelText="$lang.cancel"
|
||||
:confirmText="$lang.confirm"
|
||||
@cancel="close"
|
||||
@close="close"
|
||||
@confirm="confirm"
|
||||
></u-picker>
|
||||
<view class="list">
|
||||
<view class="lable">{{ $lang.walletAddress }}</view>
|
||||
<u-input
|
||||
class="input"
|
||||
color="#947b2b"
|
||||
clearable
|
||||
:placeholder="$lang.enterWithdrawalAddress"
|
||||
border="surround"
|
||||
v-model="address"
|
||||
></u-input>
|
||||
</view>
|
||||
<view class="list">
|
||||
<view class="lable">{{ $lang.amount }}</view>
|
||||
<u-input
|
||||
class="input"
|
||||
color="#947b2b"
|
||||
clearable
|
||||
:placeholder="$lang.enterWithdrawalamount"
|
||||
border="surround"
|
||||
v-model="money"
|
||||
></u-input>
|
||||
</view>
|
||||
<view class="list">
|
||||
<view class="lab">{{ $lang.rechargeWithdrawNetwork }}</view>
|
||||
<view class="type">TRC20</view>
|
||||
</view>
|
||||
<view class="list">
|
||||
<u-button
|
||||
@tap="applyWithdraw"
|
||||
class="button"
|
||||
color="#e5b932"
|
||||
:text="$lang.submit"
|
||||
></u-button>
|
||||
</view>
|
||||
<view class="list">
|
||||
<view class="tip">{{ $lang.withdrawTip }}</view>
|
||||
<view class="tip">{{ $lang.commission }}:1 USDT</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="mb60"></view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapState } from "vuex";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
address: "",
|
||||
money: "",
|
||||
type: "USDT",
|
||||
show: false,
|
||||
columns: [["USDT"]],
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapState({
|
||||
userInfo: (state) => state.app.userInfo,
|
||||
$lang: (state) => state.app.lang[state.app.language],
|
||||
}),
|
||||
},
|
||||
onLoad() {},
|
||||
methods: {
|
||||
confirm(chose) {
|
||||
this.type = chose.value[0];
|
||||
this.close();
|
||||
},
|
||||
close() {
|
||||
this.show = false;
|
||||
},
|
||||
applyWithdraw() {
|
||||
const params = {
|
||||
user_id: this.userInfo.id,
|
||||
to_addr: this.address,
|
||||
amount: this.money,
|
||||
};
|
||||
if (!params.to_addr) {
|
||||
this.$toast({
|
||||
message: this.$lang.enterWithdrawalAddress,
|
||||
duration: 2000,
|
||||
});
|
||||
} else if (!params.amount) {
|
||||
this.$toast({
|
||||
message: this.$lang.amountCannotBe0,
|
||||
duration: 2000,
|
||||
});
|
||||
} else {
|
||||
this.$toast({
|
||||
type: "loading",
|
||||
message: this.$lang.submittingApplication,
|
||||
duration: 200000,
|
||||
});
|
||||
this.$api
|
||||
.applyWithdraw(params)
|
||||
.then((res) => {
|
||||
if (res.Success) {
|
||||
this.$toast({
|
||||
type: "success",
|
||||
message: res.Msg,
|
||||
duration: 2000,
|
||||
});
|
||||
this.address = "";
|
||||
this.money = "";
|
||||
} else {
|
||||
this.$toast({
|
||||
message: res.Msg,
|
||||
duration: 2000,
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err);
|
||||
})
|
||||
.finally(() => {
|
||||
this.$toastHide();
|
||||
});
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.withdraw {
|
||||
background: #0b1520;
|
||||
width: 100%;
|
||||
min-height: 100vh;
|
||||
.navbar-lab {
|
||||
color: #fff;
|
||||
font-weight: 500;
|
||||
font-size: 18px;
|
||||
}
|
||||
.content {
|
||||
margin: 5px 5px;
|
||||
border: 2px solid #947b2b;
|
||||
background: #222222;
|
||||
box-sizing: border-box;
|
||||
padding: 15px;
|
||||
min-height: 400px;
|
||||
|
||||
.picker-view {
|
||||
border: 2px solid #947b2b;
|
||||
padding: 8px;
|
||||
border-radius: 5px;
|
||||
}
|
||||
.list {
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
.lab {
|
||||
color: #757272;
|
||||
margin: 10px 0;
|
||||
}
|
||||
.lable {
|
||||
text-align: left;
|
||||
color: #ddd;
|
||||
margin-top: 20px;
|
||||
font-size: 16px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.money {
|
||||
font-size: 16px;
|
||||
margin-top: 0;
|
||||
padding: 15px 0;
|
||||
color: #e5b932;
|
||||
}
|
||||
.btn {
|
||||
height: 30px;
|
||||
font-weight: 600;
|
||||
color: #0b1520 !important;
|
||||
}
|
||||
.type {
|
||||
width: 70px;
|
||||
height: 35px;
|
||||
background: #e5b932;
|
||||
border-radius: 40px;
|
||||
text-align: center;
|
||||
line-height: 35px;
|
||||
font-weight: 600;
|
||||
margin: 10px auto;
|
||||
}
|
||||
.input {
|
||||
line-height: 30px;
|
||||
height: 30px;
|
||||
}
|
||||
.button {
|
||||
line-height: 45px;
|
||||
height: 45px;
|
||||
color: #0b1520 !important;
|
||||
font-weight: bold;
|
||||
margin-top: 30px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.tip {
|
||||
color: #cc4c0e;
|
||||
font-size: 13px;
|
||||
text-align: justify;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,91 @@
|
||||
import ajax from "./request.js";
|
||||
let api = {
|
||||
// 获取app 版本信息
|
||||
getAppInfo: async (params) => {
|
||||
// return await ajax.get("/login/version", params);
|
||||
},
|
||||
// 登录
|
||||
login: async (params) => {
|
||||
return await ajax.post("/login", params);
|
||||
},
|
||||
// 试玩
|
||||
dome: async (params) => {
|
||||
return await ajax.post("/demologin", params);
|
||||
},
|
||||
// 注册
|
||||
register: async (params) => {
|
||||
console.log(params)
|
||||
return await ajax.post("/doregister", params);
|
||||
},
|
||||
// usdt申请提现
|
||||
applyWithdraw: async (params) => {
|
||||
return await ajax.post("/apply_withdraw", params);
|
||||
},
|
||||
// usdt取消提现
|
||||
cancelWithdraw: async (params) => {
|
||||
return await ajax.post("/cancel_withdraw", params);
|
||||
},
|
||||
// usdt取款记录
|
||||
userWithdraw: async (params) => {
|
||||
return await ajax.post("/user_withdraw", params);
|
||||
},
|
||||
// usdt存款记录
|
||||
userRecharge: async (params) => {
|
||||
return await ajax.post("/user_recharge", params);
|
||||
},
|
||||
// usdt存款记录
|
||||
userRecharge: async (params) => {
|
||||
return await ajax.post("/user_recharge", params);
|
||||
},
|
||||
// 重置密码
|
||||
updatePassword: async (params) => {
|
||||
return await ajax.post("/update_password", params);
|
||||
},
|
||||
// 获取用户下注记录
|
||||
getUserBets: async (params) => {
|
||||
return await ajax.post("/get_user_bets", params);
|
||||
},
|
||||
// 获取三卡下注记录
|
||||
getRobBet: async (params) => {
|
||||
return await ajax.post("/get_rob_bet", params);
|
||||
},
|
||||
// YBF充值
|
||||
ybfDeposit: async (params) => {
|
||||
return await ajax.post("/deposit", params);
|
||||
},
|
||||
// 获取用户信息
|
||||
getUserInfo: async (params) => {
|
||||
return await ajax.post("/get_user_info", params);
|
||||
},
|
||||
// 获取用户金额
|
||||
getUserMoney: async (params) => {
|
||||
return await ajax.post("/user_money", params);
|
||||
},
|
||||
|
||||
// --------------- https://qpapi.ez888.net/api/game -------------------
|
||||
//第三方上分
|
||||
gameUpper: async (params) => {
|
||||
return await ajax.post("/upper", params, { gapi: true });
|
||||
},
|
||||
// 第三方下分
|
||||
gameUnder: async (params) => {
|
||||
return await ajax.post("/under", params, { gapi: true });
|
||||
},
|
||||
// 获取第三方查询用户信息
|
||||
gameInfo: async (params) => {
|
||||
return await ajax.post("/info", params, { gapi: true });
|
||||
},
|
||||
// 获取第三方上下分记录
|
||||
getScorelog: async (params) => {
|
||||
return await ajax.post("/scoreloglist", params, { gapi: true });
|
||||
},
|
||||
// 获取第三方玩家投注记录
|
||||
getGamelog: async (params) => {
|
||||
return await ajax.post("/gameloglist", params, { gapi: true });
|
||||
},
|
||||
// 获取第三方上下分状态
|
||||
getStatus: async (params) => {
|
||||
return await ajax.post("/getstatus", params, { gapi: true });
|
||||
},
|
||||
};
|
||||
export default api;
|
||||
@@ -0,0 +1,114 @@
|
||||
// 此vm参数为页面的实例,可以通过它引用vuex中的变量
|
||||
import Vue from "vue";
|
||||
import $store from "@/store";
|
||||
import { encrypt, decrypt } from "./secret";
|
||||
import md5 from "js-md5";
|
||||
const http = (api, method, params, options) => {
|
||||
let header = {
|
||||
"Content-Type": "application/json;charset=UTF-8",
|
||||
};
|
||||
let url = Vue.prototype.$baseApi.base;
|
||||
let timeout = 10000;
|
||||
let dataType = "json";
|
||||
let data = params ? params : {};
|
||||
|
||||
if (options && options.gapi) {
|
||||
url = Vue.prototype.$baseApi.gapi;
|
||||
//默认跳转语言
|
||||
const language = localStorage.getItem("language") || "en";
|
||||
let lang = "zh-CN";
|
||||
if (language == "tw") {
|
||||
lang = "zh-CN";
|
||||
} else if (language == "en") {
|
||||
lang = "en-US";
|
||||
} else if (language == "yn") {
|
||||
lang = "vi-VN";
|
||||
} else if (language == "kr") {
|
||||
lang = "en-US";
|
||||
} else {
|
||||
lang = "zh-CN";
|
||||
}
|
||||
const gapiParams = {
|
||||
account: $store.state.app.userInfo.username,
|
||||
lang: lang,
|
||||
time: Math.round(new Date().getTime() / 1000).toString(),
|
||||
...params,
|
||||
};
|
||||
const newkey = Object.keys(gapiParams).sort();
|
||||
let sign = "";
|
||||
newkey.forEach((key) => {
|
||||
sign += `${key}=${gapiParams[key]}`;
|
||||
});
|
||||
data = {
|
||||
...gapiParams,
|
||||
sign: md5(sign + "354b335dd5dbc6740a8a55d4461249b9"),
|
||||
};
|
||||
} else {
|
||||
params.language = localStorage.getItem("language") || "en";
|
||||
const encryptData = encrypt(JSON.stringify(params)).toString();
|
||||
data = { encryptData };
|
||||
}
|
||||
if (options) {
|
||||
if (options.api) {
|
||||
url = Vue.prototype.$baseApi[options.api];
|
||||
}
|
||||
if (options.header) {
|
||||
header = options.header;
|
||||
}
|
||||
if (options.dataType) {
|
||||
dataType = options.dataType;
|
||||
}
|
||||
if (typeof options.timeout === "number") {
|
||||
timeout = options.timeout;
|
||||
}
|
||||
}
|
||||
let promise = new Promise((resolve, reject) => {
|
||||
uni.request({
|
||||
header: header,
|
||||
url: url + api,
|
||||
method: method,
|
||||
timeout: timeout,
|
||||
dataType: dataType,
|
||||
data: data,
|
||||
success: (res) => {
|
||||
switch (res.statusCode) {
|
||||
case 200:
|
||||
if (res.data) {
|
||||
if (options && options.gapi) {
|
||||
// console.log(res)
|
||||
} else {
|
||||
res.data.Data = res.data.Data
|
||||
? JSON.parse(decrypt(res.data.Data))
|
||||
: {};
|
||||
}
|
||||
} else {
|
||||
res.data = {};
|
||||
}
|
||||
resolve(res.data);
|
||||
break;
|
||||
case 500:
|
||||
Vue.$toast({
|
||||
message: "服务器繁忙",
|
||||
duration: 2000,
|
||||
});
|
||||
break;
|
||||
default:
|
||||
reject(res.data);
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
reject(err);
|
||||
},
|
||||
});
|
||||
});
|
||||
return promise;
|
||||
};
|
||||
const ajax = {
|
||||
get(api, params, options) {
|
||||
return http(api, "GET", params, options);
|
||||
},
|
||||
post(api, params, options) {
|
||||
return http(api, "POST", params, options);
|
||||
},
|
||||
};
|
||||
export default ajax;
|
||||
@@ -0,0 +1,138 @@
|
||||
/* eslint-disable no-cond-assign */
|
||||
/* eslint-disable no-prototype-builtins */
|
||||
/* eslint-disable no-redeclare */
|
||||
/* eslint-disable prettier/prettier */
|
||||
/*
|
||||
CryptoJS v3.1.2
|
||||
code.google.com/p/crypto-js
|
||||
(c) 2009-2013 by Jeff Mott. All rights reserved.
|
||||
code.google.com/p/crypto-js/wiki/License
|
||||
*/
|
||||
var CryptoJS=CryptoJS||function(u,p){var d={},l=d.lib={},s=function(){},t=l.Base={extend:function(a){s.prototype=this;var c=new s;a&&c.mixIn(a);c.hasOwnProperty("init")||(c.init=function(){c.$super.init.apply(this,arguments)});c.init.prototype=c;c.$super=this;return c},create:function(){var a=this.extend();a.init.apply(a,arguments);return a},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty("toString")&&(this.toString=a.toString)},clone:function(){return this.init.prototype.extend(this)}},
|
||||
r=l.WordArray=t.extend({init:function(a,c){a=this.words=a||[];this.sigBytes=c!=p?c:4*a.length},toString:function(a){return(a||v).stringify(this)},concat:function(a){var c=this.words,e=a.words,j=this.sigBytes;a=a.sigBytes;this.clamp();if(j%4)for(var k=0;k<a;k++)c[j+k>>>2]|=(e[k>>>2]>>>24-8*(k%4)&255)<<24-8*((j+k)%4);else if(65535<e.length)for(k=0;k<a;k+=4)c[j+k>>>2]=e[k>>>2];else c.push.apply(c,e);this.sigBytes+=a;return this},clamp:function(){var a=this.words,c=this.sigBytes;a[c>>>2]&=4294967295<<
|
||||
32-8*(c%4);a.length=u.ceil(c/4)},clone:function(){var a=t.clone.call(this);a.words=this.words.slice(0);return a},random:function(a){for(var c=[],e=0;e<a;e+=4)c.push(4294967296*u.random()|0);return new r.init(c,a)}}),w=d.enc={},v=w.Hex={stringify:function(a){var c=a.words;a=a.sigBytes;for(var e=[],j=0;j<a;j++){var k=c[j>>>2]>>>24-8*(j%4)&255;e.push((k>>>4).toString(16));e.push((k&15).toString(16))}return e.join("")},parse:function(a){for(var c=a.length,e=[],j=0;j<c;j+=2)e[j>>>3]|=parseInt(a.substr(j,
|
||||
2),16)<<24-4*(j%8);return new r.init(e,c/2)}},b=w.Latin1={stringify:function(a){var c=a.words;a=a.sigBytes;for(var e=[],j=0;j<a;j++)e.push(String.fromCharCode(c[j>>>2]>>>24-8*(j%4)&255));return e.join("")},parse:function(a){for(var c=a.length,e=[],j=0;j<c;j++)e[j>>>2]|=(a.charCodeAt(j)&255)<<24-8*(j%4);return new r.init(e,c)}},x=w.Utf8={stringify:function(a){try{return decodeURIComponent(escape(b.stringify(a)))}catch(c){throw Error("Malformed UTF-8 data");}},parse:function(a){return b.parse(unescape(encodeURIComponent(a)))}},
|
||||
q=l.BufferedBlockAlgorithm=t.extend({reset:function(){this._data=new r.init;this._nDataBytes=0},_append:function(a){"string"==typeof a&&(a=x.parse(a));this._data.concat(a);this._nDataBytes+=a.sigBytes},_process:function(a){var c=this._data,e=c.words,j=c.sigBytes,k=this.blockSize,b=j/(4*k),b=a?u.ceil(b):u.max((b|0)-this._minBufferSize,0);a=b*k;j=u.min(4*a,j);if(a){for(var q=0;q<a;q+=k)this._doProcessBlock(e,q);q=e.splice(0,a);c.sigBytes-=j}return new r.init(q,j)},clone:function(){var a=t.clone.call(this);
|
||||
a._data=this._data.clone();return a},_minBufferSize:0});l.Hasher=q.extend({cfg:t.extend(),init:function(a){this.cfg=this.cfg.extend(a);this.reset()},reset:function(){q.reset.call(this);this._doReset()},update:function(a){this._append(a);this._process();return this},finalize:function(a){a&&this._append(a);return this._doFinalize()},blockSize:16,_createHelper:function(a){return function(b,e){return(new a.init(e)).finalize(b)}},_createHmacHelper:function(a){return function(b,e){return(new n.HMAC.init(a,
|
||||
e)).finalize(b)}}});var n=d.algo={};return d}(Math);
|
||||
(function(){var u=CryptoJS,p=u.lib.WordArray;u.enc.Base64={stringify:function(d){var l=d.words,p=d.sigBytes,t=this._map;d.clamp();d=[];for(var r=0;r<p;r+=3)for(var w=(l[r>>>2]>>>24-8*(r%4)&255)<<16|(l[r+1>>>2]>>>24-8*((r+1)%4)&255)<<8|l[r+2>>>2]>>>24-8*((r+2)%4)&255,v=0;4>v&&r+0.75*v<p;v++)d.push(t.charAt(w>>>6*(3-v)&63));if(l=t.charAt(64))for(;d.length%4;)d.push(l);return d.join("")},parse:function(d){var l=d.length,s=this._map,t=s.charAt(64);t&&(t=d.indexOf(t),-1!=t&&(l=t));for(var t=[],r=0,w=0;w<
|
||||
l;w++)if(w%4){var v=s.indexOf(d.charAt(w-1))<<2*(w%4),b=s.indexOf(d.charAt(w))>>>6-2*(w%4);t[r>>>2]|=(v|b)<<24-8*(r%4);r++}return p.create(t,r)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}})();
|
||||
(function(u){function p(b,n,a,c,e,j,k){b=b+(n&a|~n&c)+e+k;return(b<<j|b>>>32-j)+n}function d(b,n,a,c,e,j,k){b=b+(n&c|a&~c)+e+k;return(b<<j|b>>>32-j)+n}function l(b,n,a,c,e,j,k){b=b+(n^a^c)+e+k;return(b<<j|b>>>32-j)+n}function s(b,n,a,c,e,j,k){b=b+(a^(n|~c))+e+k;return(b<<j|b>>>32-j)+n}for(var t=CryptoJS,r=t.lib,w=r.WordArray,v=r.Hasher,r=t.algo,b=[],x=0;64>x;x++)b[x]=4294967296*u.abs(u.sin(x+1))|0;r=r.MD5=v.extend({_doReset:function(){this._hash=new w.init([1732584193,4023233417,2562383102,271733878])},
|
||||
_doProcessBlock:function(q,n){for(var a=0;16>a;a++){var c=n+a,e=q[c];q[c]=(e<<8|e>>>24)&16711935|(e<<24|e>>>8)&4278255360}var a=this._hash.words,c=q[n+0],e=q[n+1],j=q[n+2],k=q[n+3],z=q[n+4],r=q[n+5],t=q[n+6],w=q[n+7],v=q[n+8],A=q[n+9],B=q[n+10],C=q[n+11],u=q[n+12],D=q[n+13],E=q[n+14],x=q[n+15],f=a[0],m=a[1],g=a[2],h=a[3],f=p(f,m,g,h,c,7,b[0]),h=p(h,f,m,g,e,12,b[1]),g=p(g,h,f,m,j,17,b[2]),m=p(m,g,h,f,k,22,b[3]),f=p(f,m,g,h,z,7,b[4]),h=p(h,f,m,g,r,12,b[5]),g=p(g,h,f,m,t,17,b[6]),m=p(m,g,h,f,w,22,b[7]),
|
||||
f=p(f,m,g,h,v,7,b[8]),h=p(h,f,m,g,A,12,b[9]),g=p(g,h,f,m,B,17,b[10]),m=p(m,g,h,f,C,22,b[11]),f=p(f,m,g,h,u,7,b[12]),h=p(h,f,m,g,D,12,b[13]),g=p(g,h,f,m,E,17,b[14]),m=p(m,g,h,f,x,22,b[15]),f=d(f,m,g,h,e,5,b[16]),h=d(h,f,m,g,t,9,b[17]),g=d(g,h,f,m,C,14,b[18]),m=d(m,g,h,f,c,20,b[19]),f=d(f,m,g,h,r,5,b[20]),h=d(h,f,m,g,B,9,b[21]),g=d(g,h,f,m,x,14,b[22]),m=d(m,g,h,f,z,20,b[23]),f=d(f,m,g,h,A,5,b[24]),h=d(h,f,m,g,E,9,b[25]),g=d(g,h,f,m,k,14,b[26]),m=d(m,g,h,f,v,20,b[27]),f=d(f,m,g,h,D,5,b[28]),h=d(h,f,
|
||||
m,g,j,9,b[29]),g=d(g,h,f,m,w,14,b[30]),m=d(m,g,h,f,u,20,b[31]),f=l(f,m,g,h,r,4,b[32]),h=l(h,f,m,g,v,11,b[33]),g=l(g,h,f,m,C,16,b[34]),m=l(m,g,h,f,E,23,b[35]),f=l(f,m,g,h,e,4,b[36]),h=l(h,f,m,g,z,11,b[37]),g=l(g,h,f,m,w,16,b[38]),m=l(m,g,h,f,B,23,b[39]),f=l(f,m,g,h,D,4,b[40]),h=l(h,f,m,g,c,11,b[41]),g=l(g,h,f,m,k,16,b[42]),m=l(m,g,h,f,t,23,b[43]),f=l(f,m,g,h,A,4,b[44]),h=l(h,f,m,g,u,11,b[45]),g=l(g,h,f,m,x,16,b[46]),m=l(m,g,h,f,j,23,b[47]),f=s(f,m,g,h,c,6,b[48]),h=s(h,f,m,g,w,10,b[49]),g=s(g,h,f,m,
|
||||
E,15,b[50]),m=s(m,g,h,f,r,21,b[51]),f=s(f,m,g,h,u,6,b[52]),h=s(h,f,m,g,k,10,b[53]),g=s(g,h,f,m,B,15,b[54]),m=s(m,g,h,f,e,21,b[55]),f=s(f,m,g,h,v,6,b[56]),h=s(h,f,m,g,x,10,b[57]),g=s(g,h,f,m,t,15,b[58]),m=s(m,g,h,f,D,21,b[59]),f=s(f,m,g,h,z,6,b[60]),h=s(h,f,m,g,C,10,b[61]),g=s(g,h,f,m,j,15,b[62]),m=s(m,g,h,f,A,21,b[63]);a[0]=a[0]+f|0;a[1]=a[1]+m|0;a[2]=a[2]+g|0;a[3]=a[3]+h|0},_doFinalize:function(){var b=this._data,n=b.words,a=8*this._nDataBytes,c=8*b.sigBytes;n[c>>>5]|=128<<24-c%32;var e=u.floor(a/
|
||||
4294967296);n[(c+64>>>9<<4)+15]=(e<<8|e>>>24)&16711935|(e<<24|e>>>8)&4278255360;n[(c+64>>>9<<4)+14]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360;b.sigBytes=4*(n.length+1);this._process();b=this._hash;n=b.words;for(a=0;4>a;a++)c=n[a],n[a]=(c<<8|c>>>24)&16711935|(c<<24|c>>>8)&4278255360;return b},clone:function(){var b=v.clone.call(this);b._hash=this._hash.clone();return b}});t.MD5=v._createHelper(r);t.HmacMD5=v._createHmacHelper(r)})(Math);
|
||||
(function(){var u=CryptoJS,p=u.lib,d=p.Base,l=p.WordArray,p=u.algo,s=p.EvpKDF=d.extend({cfg:d.extend({keySize:4,hasher:p.MD5,iterations:1}),init:function(d){this.cfg=this.cfg.extend(d)},compute:function(d,r){for(var p=this.cfg,s=p.hasher.create(),b=l.create(),u=b.words,q=p.keySize,p=p.iterations;u.length<q;){n&&s.update(n);var n=s.update(d).finalize(r);s.reset();for(var a=1;a<p;a++)n=s.finalize(n),s.reset();b.concat(n)}b.sigBytes=4*q;return b}});u.EvpKDF=function(d,l,p){return s.create(p).compute(d,
|
||||
l)}})();
|
||||
CryptoJS.lib.Cipher||function(u){var p=CryptoJS,d=p.lib,l=d.Base,s=d.WordArray,t=d.BufferedBlockAlgorithm,r=p.enc.Base64,w=p.algo.EvpKDF,v=d.Cipher=t.extend({cfg:l.extend(),createEncryptor:function(e,a){return this.create(this._ENC_XFORM_MODE,e,a)},createDecryptor:function(e,a){return this.create(this._DEC_XFORM_MODE,e,a)},init:function(e,a,b){this.cfg=this.cfg.extend(b);this._xformMode=e;this._key=a;this.reset()},reset:function(){t.reset.call(this);this._doReset()},process:function(e){this._append(e);return this._process()},
|
||||
finalize:function(e){e&&this._append(e);return this._doFinalize()},keySize:4,ivSize:4,_ENC_XFORM_MODE:1,_DEC_XFORM_MODE:2,_createHelper:function(e){return{encrypt:function(b,k,d){return("string"==typeof k?c:a).encrypt(e,b,k,d)},decrypt:function(b,k,d){return("string"==typeof k?c:a).decrypt(e,b,k,d)}}}});d.StreamCipher=v.extend({_doFinalize:function(){return this._process(!0)},blockSize:1});var b=p.mode={},x=function(e,a,b){var c=this._iv;c?this._iv=u:c=this._prevBlock;for(var d=0;d<b;d++)e[a+d]^=
|
||||
c[d]},q=(d.BlockCipherMode=l.extend({createEncryptor:function(e,a){return this.Encryptor.create(e,a)},createDecryptor:function(e,a){return this.Decryptor.create(e,a)},init:function(e,a){this._cipher=e;this._iv=a}})).extend();q.Encryptor=q.extend({processBlock:function(e,a){var b=this._cipher,c=b.blockSize;x.call(this,e,a,c);b.encryptBlock(e,a);this._prevBlock=e.slice(a,a+c)}});q.Decryptor=q.extend({processBlock:function(e,a){var b=this._cipher,c=b.blockSize,d=e.slice(a,a+c);b.decryptBlock(e,a);x.call(this,
|
||||
e,a,c);this._prevBlock=d}});b=b.CBC=q;q=(p.pad={}).Pkcs7={pad:function(a,b){for(var c=4*b,c=c-a.sigBytes%c,d=c<<24|c<<16|c<<8|c,l=[],n=0;n<c;n+=4)l.push(d);c=s.create(l,c);a.concat(c)},unpad:function(a){a.sigBytes-=a.words[a.sigBytes-1>>>2]&255}};d.BlockCipher=v.extend({cfg:v.cfg.extend({mode:b,padding:q}),reset:function(){v.reset.call(this);var a=this.cfg,b=a.iv,a=a.mode;if(this._xformMode==this._ENC_XFORM_MODE)var c=a.createEncryptor;else c=a.createDecryptor,this._minBufferSize=1;this._mode=c.call(a,
|
||||
this,b&&b.words)},_doProcessBlock:function(a,b){this._mode.processBlock(a,b)},_doFinalize:function(){var a=this.cfg.padding;if(this._xformMode==this._ENC_XFORM_MODE){a.pad(this._data,this.blockSize);var b=this._process(!0)}else b=this._process(!0),a.unpad(b);return b},blockSize:4});var n=d.CipherParams=l.extend({init:function(a){this.mixIn(a)},toString:function(a){return(a||this.formatter).stringify(this)}}),b=(p.format={}).OpenSSL={stringify:function(a){var b=a.ciphertext;a=a.salt;return(a?s.create([1398893684,
|
||||
1701076831]).concat(a).concat(b):b).toString(r)},parse:function(a){a=r.parse(a);var b=a.words;if(1398893684==b[0]&&1701076831==b[1]){var c=s.create(b.slice(2,4));b.splice(0,4);a.sigBytes-=16}return n.create({ciphertext:a,salt:c})}},a=d.SerializableCipher=l.extend({cfg:l.extend({format:b}),encrypt:function(a,b,c,d){d=this.cfg.extend(d);var l=a.createEncryptor(c,d);b=l.finalize(b);l=l.cfg;return n.create({ciphertext:b,key:c,iv:l.iv,algorithm:a,mode:l.mode,padding:l.padding,blockSize:a.blockSize,formatter:d.format})},
|
||||
decrypt:function(a,b,c,d){d=this.cfg.extend(d);b=this._parse(b,d.format);return a.createDecryptor(c,d).finalize(b.ciphertext)},_parse:function(a,b){return"string"==typeof a?b.parse(a,this):a}}),p=(p.kdf={}).OpenSSL={execute:function(a,b,c,d){d||(d=s.random(8));a=w.create({keySize:b+c}).compute(a,d);c=s.create(a.words.slice(b),4*c);a.sigBytes=4*b;return n.create({key:a,iv:c,salt:d})}},c=d.PasswordBasedCipher=a.extend({cfg:a.cfg.extend({kdf:p}),encrypt:function(b,c,d,l){l=this.cfg.extend(l);d=l.kdf.execute(d,
|
||||
b.keySize,b.ivSize);l.iv=d.iv;b=a.encrypt.call(this,b,c,d.key,l);b.mixIn(d);return b},decrypt:function(b,c,d,l){l=this.cfg.extend(l);c=this._parse(c,l.format);d=l.kdf.execute(d,b.keySize,b.ivSize,c.salt);l.iv=d.iv;return a.decrypt.call(this,b,c,d.key,l)}})}();
|
||||
(function(){for(var u=CryptoJS,p=u.lib.BlockCipher,d=u.algo,l=[],s=[],t=[],r=[],w=[],v=[],b=[],x=[],q=[],n=[],a=[],c=0;256>c;c++)a[c]=128>c?c<<1:c<<1^283;for(var e=0,j=0,c=0;256>c;c++){var k=j^j<<1^j<<2^j<<3^j<<4,k=k>>>8^k&255^99;l[e]=k;s[k]=e;var z=a[e],F=a[z],G=a[F],y=257*a[k]^16843008*k;t[e]=y<<24|y>>>8;r[e]=y<<16|y>>>16;w[e]=y<<8|y>>>24;v[e]=y;y=16843009*G^65537*F^257*z^16843008*e;b[k]=y<<24|y>>>8;x[k]=y<<16|y>>>16;q[k]=y<<8|y>>>24;n[k]=y;e?(e=z^a[a[a[G^z]]],j^=a[a[j]]):e=j=1}var H=[0,1,2,4,8,
|
||||
16,32,64,128,27,54],d=d.AES=p.extend({_doReset:function(){for(var a=this._key,c=a.words,d=a.sigBytes/4,a=4*((this._nRounds=d+6)+1),e=this._keySchedule=[],j=0;j<a;j++)if(j<d)e[j]=c[j];else{var k=e[j-1];j%d?6<d&&4==j%d&&(k=l[k>>>24]<<24|l[k>>>16&255]<<16|l[k>>>8&255]<<8|l[k&255]):(k=k<<8|k>>>24,k=l[k>>>24]<<24|l[k>>>16&255]<<16|l[k>>>8&255]<<8|l[k&255],k^=H[j/d|0]<<24);e[j]=e[j-d]^k}c=this._invKeySchedule=[];for(d=0;d<a;d++)j=a-d,k=d%4?e[j]:e[j-4],c[d]=4>d||4>=j?k:b[l[k>>>24]]^x[l[k>>>16&255]]^q[l[k>>>
|
||||
8&255]]^n[l[k&255]]},encryptBlock:function(a,b){this._doCryptBlock(a,b,this._keySchedule,t,r,w,v,l)},decryptBlock:function(a,c){var d=a[c+1];a[c+1]=a[c+3];a[c+3]=d;this._doCryptBlock(a,c,this._invKeySchedule,b,x,q,n,s);d=a[c+1];a[c+1]=a[c+3];a[c+3]=d},_doCryptBlock:function(a,b,c,d,e,j,l,f){for(var m=this._nRounds,g=a[b]^c[0],h=a[b+1]^c[1],k=a[b+2]^c[2],n=a[b+3]^c[3],p=4,r=1;r<m;r++)var q=d[g>>>24]^e[h>>>16&255]^j[k>>>8&255]^l[n&255]^c[p++],s=d[h>>>24]^e[k>>>16&255]^j[n>>>8&255]^l[g&255]^c[p++],t=
|
||||
d[k>>>24]^e[n>>>16&255]^j[g>>>8&255]^l[h&255]^c[p++],n=d[n>>>24]^e[g>>>16&255]^j[h>>>8&255]^l[k&255]^c[p++],g=q,h=s,k=t;q=(f[g>>>24]<<24|f[h>>>16&255]<<16|f[k>>>8&255]<<8|f[n&255])^c[p++];s=(f[h>>>24]<<24|f[k>>>16&255]<<16|f[n>>>8&255]<<8|f[g&255])^c[p++];t=(f[k>>>24]<<24|f[n>>>16&255]<<16|f[g>>>8&255]<<8|f[h&255])^c[p++];n=(f[n>>>24]<<24|f[g>>>16&255]<<16|f[h>>>8&255]<<8|f[k&255])^c[p++];a[b]=q;a[b+1]=s;a[b+2]=t;a[b+3]=n},keySize:8});u.AES=p._createHelper(d)})();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*CryptoJS v3.1.2
|
||||
code.google.com/p/crypto-js
|
||||
(c) 2009-2013 by Jeff Mott. All rights reserved.
|
||||
code.google.com/p/crypto-js/wiki/License*/
|
||||
/* Zero padding strategy.*/
|
||||
|
||||
CryptoJS.pad.ZeroPadding = {
|
||||
pad: function (data, blockSize) {
|
||||
// Shortcut
|
||||
var blockSizeBytes = blockSize * 4;
|
||||
|
||||
// Pad
|
||||
data.clamp();
|
||||
data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);
|
||||
},
|
||||
|
||||
unpad: function (data) {
|
||||
// Shortcut
|
||||
var dataWords = data.words;
|
||||
|
||||
// Unpad
|
||||
var i = data.sigBytes - 1;
|
||||
while (!((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {
|
||||
i--;
|
||||
}
|
||||
data.sigBytes = i + 1;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* ===============================================
|
||||
* Created by ZHIHUA·WEI.
|
||||
* Author: ZHIHUA·WEI <zhihua_wei@foxmail.com>
|
||||
* Date: 2018/2/27
|
||||
* Time: 10:20
|
||||
* Project: 基于PHP和JS的AES相互加密解密方法详解(CryptoJS)
|
||||
* Power: Javascript common function
|
||||
* ===============================================
|
||||
*/
|
||||
|
||||
/**
|
||||
* 接口数据加密函数
|
||||
* @param str string 需加密的json字符串
|
||||
* @param key string 加密key(16位)
|
||||
* @param iv string 加密向量(16位)
|
||||
* @return string 加密密文字符串
|
||||
*/
|
||||
function encrypt(str) {
|
||||
//密钥16位
|
||||
var key = CryptoJS.enc.Utf8.parse('1519699179001WZH');
|
||||
//加密向量16位
|
||||
var iv = CryptoJS.enc.Utf8.parse('ZZWBKJ_ZHIHUAWEI');
|
||||
var encrypted = CryptoJS.AES.encrypt(str, key, {
|
||||
iv: iv,
|
||||
mode: CryptoJS.mode.CBC,
|
||||
padding: CryptoJS.pad.ZeroPadding
|
||||
});
|
||||
return encrypted;
|
||||
}
|
||||
|
||||
/**
|
||||
* 接口数据解密函数
|
||||
* @param str string 已加密密文
|
||||
* @param key string 加密key(16位)
|
||||
* @param iv string 加密向量(16位)
|
||||
* @returns {*|string} 解密之后的json字符串
|
||||
*/
|
||||
|
||||
//********************************加密**********************************
|
||||
//获取当前时间戳13位 + 3位字符
|
||||
//var timestamp = new Date().getTime().toString() + "WZH";
|
||||
//加密密钥16位
|
||||
//var encrypt_key = timestamp;
|
||||
// var encrypt_key = '1519699179001WZH';
|
||||
//加密向量16位
|
||||
// var iv = 'ZZWBKJ_ZHIHUAWEI';
|
||||
|
||||
function decrypt(str) {
|
||||
//密钥16位
|
||||
var key = CryptoJS.enc.Utf8.parse('1519699179001WZH');
|
||||
//加密向量16位
|
||||
var iv = CryptoJS.enc.Utf8.parse('ZZWBKJ_ZHIHUAWEI');
|
||||
var decrypted = CryptoJS.AES.decrypt(str, key, {
|
||||
iv: iv,
|
||||
mode: CryptoJS.mode.CBC,
|
||||
padding: CryptoJS.pad.ZeroPadding
|
||||
});
|
||||
return decrypted.toString(CryptoJS.enc.Utf8);
|
||||
}
|
||||
|
||||
|
||||
|
||||
export { encrypt ,decrypt}
|
||||
@@ -0,0 +1,58 @@
|
||||
// router.js
|
||||
import { RouterMount, createRouter } from "uni-simple-router";
|
||||
import $store from "@/store";
|
||||
|
||||
const router = createRouter({
|
||||
platform: process.env.VUE_APP_PLATFORM,
|
||||
routes: [...ROUTES],
|
||||
});
|
||||
|
||||
// 权限逻辑处理
|
||||
const inlet = (to, from, next) => {
|
||||
const { api_token = null } = $store.state.app.userInfo;
|
||||
if (
|
||||
to.name != "Login" &&
|
||||
to.name != "Register" &&
|
||||
to.name != "Download" &&
|
||||
!api_token
|
||||
) {
|
||||
uni.reLaunch({
|
||||
url: "/pages/login",
|
||||
});
|
||||
next();
|
||||
} else {
|
||||
next();
|
||||
}
|
||||
};
|
||||
|
||||
//全局路由前置守卫
|
||||
router.beforeEach((to, from, next) => {
|
||||
const apiUrl = $store.state.app.apiUrl;
|
||||
if (!apiUrl) {
|
||||
// 入口配置
|
||||
uni.request({
|
||||
url: "./static/config.json",
|
||||
method: "GET",
|
||||
timeout: 10000,
|
||||
success: (res) => {
|
||||
if (res.data.title) {
|
||||
$store.commit("app/setConfig", res.data);
|
||||
inlet(to, from, next);
|
||||
} else {
|
||||
console.warn("配置文件不存在");
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
console.log(err);
|
||||
},
|
||||
});
|
||||
} else {
|
||||
inlet(to, from, next);
|
||||
}
|
||||
});
|
||||
// 全局路由后置守卫
|
||||
router.afterEach((to, from) => {
|
||||
// console.log('跳转结束')
|
||||
});
|
||||
|
||||
export { router, RouterMount };
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"apiUrl": "https://og-api.abc.com/pcapi",
|
||||
"sockUrl": "wss://og-ws.abc.com",
|
||||
"gapi": "https://gapi.abc.com/api/game",
|
||||
"h5": "http://localhost:8088",
|
||||
"loginLogo": "https://og-m.abc.com/static/images/ez-logo-login.png",
|
||||
"titlePng": "https://og-m.abc.com/static/images/ez-logo-v3.png",
|
||||
"customServiceUrl":"https://www.abc.com",
|
||||
"title": "EZ Online Casino",
|
||||
"language": "en",
|
||||
"gameUrl":"http://localhost:8080",
|
||||
"tripleUrl":"https://ww1.abc.com"
|
||||
}
|
||||
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 731 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 842 KiB |
|
After Width: | Height: | Size: 842 KiB |
|
After Width: | Height: | Size: 812 KiB |
|
After Width: | Height: | Size: 812 KiB |
|
After Width: | Height: | Size: 5.4 KiB |
|
After Width: | Height: | Size: 338 KiB |
|
After Width: | Height: | Size: 992 KiB |
|
After Width: | Height: | Size: 731 KiB |
|
After Width: | Height: | Size: 842 KiB |
|
After Width: | Height: | Size: 812 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 283 B |
|
After Width: | Height: | Size: 499 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 604 KiB |
|
After Width: | Height: | Size: 733 KiB |
|
After Width: | Height: | Size: 768 KiB |
|
After Width: | Height: | Size: 764 KiB |
|
After Width: | Height: | Size: 604 KiB |
|
After Width: | Height: | Size: 599 KiB |
|
After Width: | Height: | Size: 688 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 404 KiB |
|
After Width: | Height: | Size: 416 KiB |
|
After Width: | Height: | Size: 435 KiB |
|
After Width: | Height: | Size: 367 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 134 KiB |
|
After Width: | Height: | Size: 192 KiB |
|
After Width: | Height: | Size: 187 KiB |
|
After Width: | Height: | Size: 68 KiB |
|
After Width: | Height: | Size: 667 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 496 KiB |
|
After Width: | Height: | Size: 98 KiB |
|
After Width: | Height: | Size: 643 KiB |
|
After Width: | Height: | Size: 191 KiB |
|
After Width: | Height: | Size: 768 KiB |
|
After Width: | Height: | Size: 763 KiB |