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 |