This commit is contained in:
li
2026-01-17 17:39:51 +08:00
commit 7073975960
353 changed files with 8837 additions and 0 deletions
+114
View File
@@ -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>
+190
View File
@@ -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>
+329
View File
@@ -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>
+261
View File
@@ -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>
+44
View File
@@ -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>
+185
View File
@@ -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>
+73
View File
@@ -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>
+213
View File
@@ -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>