Files
smart_storage_app/pages/tabbar/mine.vue
2025-06-30 10:21:25 +08:00

495 lines
10 KiB
Vue

<template>
<view class="wrap">
<view class="user-header">
<!-- <image
src="/static/aidex/login/login-bg.png"
class="logo"
></image> -->
<view class="logo">
</view>
<view class="bg-box">
<view class="userinfo">
<view class="image" @click="navTo('info')">
<image style="width: 100%" src="/static/aidex/images/user07.png"></image>
</view>
<view class="info" style="display: flex; justify-content: space-between">
<view>
<!-- <view class="username">
<view class="username-department">
{{ userData.deptName }}
</view>
</view> -->
<!-- <view class="join-day">已加入通联新合新能源集团 1005</view> -->
</view>
</view>
</view>
</view>
</view>
<view class="list">
<view>
<view class="top-list">
<!-- 账号安全 -->
<view class="personal-list shadow">
<view class="account-security" @click="navTo('pwd')">
<u-icon name="bell" size="40" color="#63D9B0" style="margin-right: 20rpx;"></u-icon>
<view class="account-contect"> {{ $t('homePage.mine.accountSec') }} </view>
<image src="/static/aidex/images/next.png" class="next"></image>
</view>
<!-- <u-cell-item icon="map" :iconStyle="{ color: '#316ede' }" title="账号安全" @click="navTo('pwd')"></u-cell-item> -->
<view class="u-line"></view>
<!-- 关于我们 -->
<view class="account-security" @click="navTo('about')">
<u-icon name="info-circle" size="40" color="#889cf6" style="margin-right: 20rpx;"></u-icon>
<view class="account-contect"> {{ $t('homePage.mine.aboutUs')}} </view>
<image src="/static/aidex/images/next.png" class="next"></image>
</view>
<view class="u-line"></view>
<!-- 关于我们 -->
<view class="account-security" @click="navTo('message')">
<u-icon name="email" size="40" color="#ffaa00" style="margin-right: 20rpx;"></u-icon>
<view class="account-contect"> {{ $t('homePage.mine.message')}} </view>
<image src="/static/aidex/images/next.png" class="next"></image>
</view>
</view>
</view>
<!-- 系统设置 -->
<view class="personal-list shadow margin-top">
<!-- 关于我们 -->
<view class="account-security" @click="show = true">
<u-icon name="/static/aidex/images/language.png" size="40" color="#ffaa00"
style="margin-right: 20rpx;"></u-icon>
<view class="account-contect"> {{ $t('homePage.mine.changeLanguage')}} </view>
<image src="/static/aidex/images/next.png" class="next"></image>
</view>
<view class="u-line"></view>
<view class="account-security" @click="navTo('setting')">
<u-icon name="setting" size="40" color="#59a4e8" style="margin-right: 20rpx;"></u-icon>
<view class="account-contect"> {{ $t('homePage.mine.sysSetting') }} </view>
<image src="/static/aidex/images/next.png" class="next"></image>
</view>
</view>
</view>
</view>
<u-select v-model="show" :list="list" @confirm="changeLanguage"></u-select>
</view>
</template>
<script>
export default {
components: {},
data() {
return {
iconSize: 38,
background: {
backgroundColor: "#f5f5f5",
},
show: false,
list: [{
value: 'zh_CN',
label: '中文'
},
{
value: 'en_US',
label: 'English'
}
],
};
},
onLoad() {
},
computed: {
userData() {
return this.vuex_user;
},
avatarUrl() {
// let url = this.vuex_user.avatarUrl || '/ctxPath/static/images/user1.jpg';
// url = url.replace('/ctxPath/', this.vuex_config.baseUrl + '/');
let url =
this.vuex_config.baseUrl + this.vuex_user.avatar ||
"/static/aidex/tabbar/my_2.png";
url = this.replaceAll(url, "\\", "/");
return url + "?t=" + new Date().getTime();
},
},
methods: {
changeLanguage(val){
this.$u.vuex("vuex_language", val[0].value);
this.$i18n.locale = val[0].value
this.getAllDict()
this.getStationByUser()
this.getProvinceStation()
uni.setTabBarItem({
index: 0,
text: this.$t('homePage.home.station'),
})
uni.setTabBarItem({
index: 1,
text: this.$t('homePage.home.electricityPrice'),
})
uni.setTabBarItem({
index: 2,
text: this.$t('homePage.home.mine'),
})
},
getStationByUser() {
this.$u.api.getStationByUser().then((res) => {
this.$u.vuex("vuex_station", res.data)
})
},
getProvinceStation() {
this.$u.api.alarm.GetNewStationlist().then((res) => {
this.$u.vuex("vuex_provinceStation", res.data.list)
this.$u.vuex("vuex_currentStation", res.data.list[0].list[0].list[0])
})
},
getAllDict() {
this.$u.api.getAllDict().then((res) => {
const {
data
} = res
const dicts = {}
data.forEach((element) => {
dicts[element.type] = element.list
})
this.$u.vuex("vuex_dicts", dicts)
})
},
to(url) {
uni.redirectTo({
url: url,
});
},
navTo(url) {
uni.navigateTo({
url: `/pages/sys/user/${url}`,
});
},
logout() {
this.$u.api.logout().then((res) => {
this.$u.toast(res.msg);
if (res.code == "200" || res.code == "401") {
let self = this;
setTimeout(() => {
uni.reLaunch({
url: "/pages/sys/login/index",
});
}, 500);
}
});
},
upgrade() {
// #ifdef APP-PLUS
this.$u.api.upgradeCheck().then((res) => {
if (res.result == "true") {
uni.showModal({
title: this.$t('homePage.mine.tip'),
content: res.message + this.$t('homePage.mine.downUpdate'),
showCancel: true,
success: function(res2) {
if (res2.confirm) {
plus.runtime.openURL(res.data.apkUrl);
}
},
});
} else {
this.$u.toast(res.message);
}
});
// #endif
// #ifndef APP-PLUS
this.$u.toast(this.$t('homePage.mine.noUpdate'));
// #endif
},
logout() {
this.$u.api.logout().then((res) => {
if (res.code == 200) {
setTimeout(() => {
uni.reLaunch({
url: "/pages/sys/login/index",
});
}, 500);
}
});
},
},
};
</script>
<style lang="scss" scoped>
page {
background-color: #f5f5f5;
}
.wrap .u-cell-box .u-cell_title {
color: #202328;
}
.sign-in-images {
width: 125rpx;
height: 50rpx;
position: absolute;
right: 0;
top: 5px;
uni-image {
width: 125rpx;
height: 50rpx;
}
}
.out-box {
width: 670rpx;
position: absolute;
bottom: 140rpx;
}
.user-header {
width: 100%;
height: 450rpx;
.logo {
width: 100%;
height: 400rpx;
border-radius: 0 0 50% 50%;
background-color: #069E7A;
position: absolute;
top: 0;
left: 0;
right: 0;
}
.bg-box {
position: absolute;
top: 0;
left: 0;
z-index: 2;
height: 450rpx;
width: 100%;
}
.userinfo {
display: flex;
align-items: center;
flex-direction: column;
.image {
flex-shrink: 0;
width: 60%;
height: 270rpx;
image {
width: 100%;
height: 100%;
}
}
.info {
display: flex;
flex-flow: wrap;
padding-left: 30rpx;
color: #fff;
height: 106rpx;
.username {
width: 100%;
display: flex;
align-items: center;
justify-content: center;
.username-name {
display: inline;
font-size: 30rpx;
color: #2a2a2a;
margin-right: 33rpx;
}
.username-department {
z-index: 9999999;
color: #ffffff;
text-align: center;
border-radius: 5rpx;
margin-right: 45rpx;
}
.username-edit {
width: 30rpx;
height: 30rpx;
}
}
.join-day {
display: inline;
font-size: 22rpx;
color: #979797;
}
}
}
.logout {
flex-shrink: 0;
position: absolute;
right: 70rpx;
top: 65rpx;
.u-btn {
font-size: 30rpx;
}
}
}
.list {
margin-top: 120rpx;
margin-left: 40rpx;
width: 670rpx;
height: 200rpx;
.u-line {
width: 630rpx;
height: 1rpx;
margin-left: 20rpx;
background-color: #f5f5f5;
}
.shadow {
box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.1);
border-radius: 10rpx;
}
.margin-top {
margin-top: 40rpx;
}
.personal-list {
background-color: #fff;
border-radius: 10rpx;
.account-security {
width: 670rpx;
height: 100rpx;
line-height: 100rpx;
padding-left: 35rpx;
padding-right: 35rpx;
display: flex;
border-radius: 10rpx;
align-items: center;
position: relative;
.account-icon {
width: 33rpx;
height: 33rpx;
margin-right: 33rpx;
}
.account-context {
// width: 33rpx;
font-size: 24rpx;
color: #2a2a2a;
}
.next {
position: absolute;
right: 38rpx;
width: 12rpx;
height: 21rpx;
}
}
}
}
.toolbar {
padding: 0 4%;
margin-bottom: 5rpx;
border-radius: 0 0 100% 100%;
background-color: #4094ff;
.box {
display: flex;
flex-direction: row;
justify-content: space-around;
padding: 10rpx;
border-radius: 15rpx;
box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.15);
background-color: #fefefe;
.item {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
// flex-flow: wrap;
height: 120rpx;
color: #666666;
font-size: 30rpx;
padding: 10rpx 10rpx;
.icon {
font-size: 50rpx;
}
.label {
padding: 10rpx;
}
}
.hover {
background-color: #f6f6f6;
border-radius: 15rpx;
}
}
}
.uni-input-input {
border: 1px solid red;
}
.userinfo-topbox {
padding: 10px 15px;
color: #ffffff;
.number {
font-size: 20px;
em {
font-style: normal;
font-size: 12px;
}
}
}
.user-order-top {
padding: 10px 15px;
background: #ffffff;
}
.user-order-box {
padding: 10px 15px;
background: #ffffff;
border-bottom: 1px solid #ededed;
.u-col {
position: relative;
}
.u-badge {
top: -8px !important;
right: 5px !important;
background: #ff7001;
border: 1px solid #ffffff;
box-sizing: content-box;
}
}
</style>