jsy-app/pages/mine/index.vue
2025-02-19 12:59:57 +08:00

363 lines
10 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<custom-nav-bar :left="false" leftText="" @leftClick="" title="我的">
<template v-slot:right>
<view class="fixed">
<view align="right" class="iconfont icon-xiaoxi icon"></view>
</view>
</template>
</custom-nav-bar>
<view class="mine-container" :style="{height: `${windowHeight}px`}">
<!--顶部个人信息栏-->
<view class="header-section">
<view class="flex padding justify-between">
<view class="flex align-center">
<!-- <view v-if="!avatar" class="cu-avatar xl round bg-white">
<view class="iconfont icon-people text-gray icon"></view>
</view> -->
<image v-if="avatar" @click="toPage('avatar')" :src="avatar" class="cu-avatar xl round"
mode="widthFix">
</image>
<view @click="toPage('info')" class="user-info">
<view class="u_title">
<text>
<text style="font-size: 30rpx;">{{ user.userName }}</text>
{{user.role.roleName}}
</text>
<text>{{user.mobilePhone}}</text>
<text>{{user.company.companyName}}</text>
</view>
</view>
</view>
</view>
</view>
<view class="content-section">
<view class="menu-list">
<view class="list-cell list-cell-arrow" v-hasPermi="['system:land:list']" @click="toPage('land')">
<view class="menu-item-box">
<view class="iconfont icon-tudidiya menu-icon"></view>
<view>地块管理</view>
</view>
</view>
<view class="list-cell list-cell-arrow" v-hasPermi="['system:user:list']" @click="toPage('user')">
<view class="menu-item-box">
<view class="iconfont icon-yonghu menu-icon"></view>
<view>用户管理</view>
</view>
</view>
<view class="list-cell list-cell-arrow" v-hasPermi="['system:irrigation_runtime:list']"
@click="toPage('wh')">
<view class="menu-item-box">
<view class="iconfont icon-lvli menu-icon"></view>
<view>灌溉履历</view>
</view>
</view>
<view class="list-cell list-cell-arrow" v-hasPermi="['iotlog:userlog:list']" @click="toPage('dl')">
<view class="menu-item-box">
<view class="iconfont icon-caozuo menu-icon"></view>
<view>操作日志</view>
</view>
</view>
<view class="list-cell list-cell-arrow" v-hasPermi="['iot:head:list']" @click="toPage('nq')">
<view class="menu-item-box">
<view class="iconfont icon-nq2 menu-icon"></view>
<view>农情</view>
</view>
</view>
<!-- <view class="list-cell list-cell-arrow">
<view class="menu-item-box">
<view class="iconfont icon-weihu menu-icon"></view>
<view>设备维护</view>
</view>
</view> -->
<view class="list-cell list-cell-arrow" v-hasPermi="['mine:dev-ops']" @click="toPage('DevOps')">
<view class="menu-item-box">
<view class="iconfont icon-yunwei menu-icon"></view>
<view>运维</view>
</view>
</view>
<view class="list-cell list-cell-arrow" v-hasPermi="['mine:retrace']" @click="toPage('retrace')">
<view class="menu-item-box">
<view class="iconfont icon-zs1 menu-icon"></view>
<view>追溯</view>
</view>
</view>
<view class="list-cell list-cell-arrow" @click="toPage('textview')">
<view class="menu-item-box">
<view class="iconfont icon-v menu-icon"></view>
<view>我的权益</view>
</view>
</view>
<view class="list-cell list-cell-arrow" @click="showPop = true">
<view class="menu-item-box">
<view class="iconfont icon-bianji1 menu-icon"></view>
<view>用户协议和隐私协议</view>
</view>
</view>
<!-- <view class="list-cell list-cell-arrow" @click="toPage('help')">
<view class="menu-item-box">
<view class="iconfont icon-help menu-icon"></view>
<view>常见问题</view>
</view>
</view>
<view class="list-cell list-cell-arrow" @click="toPage('about')">
<view class="menu-item-box">
<view class="iconfont icon-aixin menu-icon"></view>
<view>关于我们</view>
</view>
</view> -->
<!-- <view class="list-cell list-cell-arrow" @click="toPage('setting')">
<view class="menu-item-box">
<view class="iconfont icon-setting menu-icon"></view>
<view>应用设置</view>
</view>
</view> -->
</view>
<view class="menu-list">
<view class="list-cell list-cell-arrow" style="border-radius: 10px;" @click="toPage('setting')">
<view class="menu-item-box">
<view class="iconfont icon-shezhi menu-icon"></view>
<view>设置</view>
</view>
</view>
</view>
</view>
<view style="position: absolute;bottom: 5px;width: 100vw;text-align: center;color: darkgray;">
版本 {{version.versionName}}
</view>
</view>
<custom-app-update ref="appUpdate" />
<!-- 协议弹窗 -->
<u-popup mode="center" :show="showPop" :is-mask-click="false">
<view style="background: #f3f3f3;max-width: 70vw;padding: 10px; border-radius: 5px;">
<view style="text-align: center;font-weight: bold;margin-bottom: 10px;">
<text>用户协议和隐私协议</text>
</view>
<view style="line-height: 24px; font-size: 14px; color: #555;">
我们依据相关法律制定了
<text class="text-blue" @click="handleUserAgrement">《用户协议》</text>
<text class="text-blue" @click="handlePrivacy">《隐私协议》</text>
,请您在点击同意之前仔细阅读并充分理解相关条款。为了便于您理解《隐私政策》,特向您说明如下:
<br>
1、为了向您提供服务,我们需要收集您的设备信息和操作日志;
<br>
2、我们会采取业界先进的安全措施保护您的信息安全,未经您同意,我们不会向第三方共享您的信息;
<br>
3、您可以对上述信息进行查询、更正、删除我们也在政策中提供专门的个人信息保护联系方式。
<br>
如您同意以上协议内容,请点击"同意"接受并开始使用我们的服务。
</view>
<view style=" display: flex;margin-top: 10px;grid-gap: 10px;">
<u-button type="success" size="large" text="确定" @click="showPop = false" />
</view>
</view>
</u-popup>
</template>
<script setup>
import {
ref
} from "vue";
import store from '@/store'
import storage from '@/utils/storage'
import config from '@/config.js'
const user = store.state.user.user;
const avatar = ref(store.state.user.avatar);
const windowHeight = ref(uni.getSystemInfoSync().windowHeight - 50);
const popup = ref(null);
const rolses = store.state.user.roles;
// const version = config.appInfo.version;
const version = getApp().version.oldV;
const appUpdate = ref(null)
const showPop = ref(false)
uni.$on('refresh', () => {
avatar.value = store.state.user.avatar;
})
//页面跳转
function toPage(type) {
switch (type) {
// case "info": //用户资料
// uni.navigateTo({
// url: '/pages/mine/info/index'
// });
// break;
case "avatar": //头像
uni.navigateTo({
url: '/pages/mine/avatar/index'
});
break;
case "edit": //用户编辑
uni.navigateTo({
url: '/pages/mine/info/edit'
});
break;
case "land": //地块
uni.navigateTo({
url: '/pages/work/land/index'
});
break;
case "user": //用户管理
uni.navigateTo({
url: '/pages/work/user/index'
});
break;
case "wh": //灌溉履历
uni.navigateTo({
url: '/pages/work/watering-history/index'
});
break;
case "dl": //操作日志
uni.navigateTo({
url: '/pages/work/operation-log/index'
});
break;
case "setting": //设置
uni.navigateTo({
url: '/pages/mine/setting/index'
});
break;
case "help": //帮助
uni.navigateTo({
url: '/pages/mine/help/index'
});
break;
case "about": //关于我们
uni.navigateTo({
url: '/pages/mine/about/index'
});
break;
case "video": //视频
uni.navigateTo({
url: '/pages/mine/video/index'
});
break;
case "nq": //农情
uni.navigateTo({
url: '/pages/fourmonitor/index'
});
break;
case "DevOps": //运维
// uni.navigateTo({
// url: '/pages/dev-ops/index'
// });
uni.navigateTo({
url: '/pages/dev-ops/device'
});
break;
case "retrace": //追溯
uni.navigateTo({
url: '/pages/retrace/index'
});
break;
case "textview": //我的权益
const title = "我的权益"
const content = store.state.user.user.role.remark;
uni.navigateTo({
url: `/pages/common/textview/index?title=${title}&content=${content}`
});
break;
}
}
const globalConfig = ref(config);
// 隐私协议
function handlePrivacy() {
let site = globalConfig.value.appInfo.agreements[0];
uni.navigateTo({
url: `/pages/common/webview/index?title=${site.title}&url=${site.url}`
});
};
// 用户协议
function handleUserAgrement() {
let site = globalConfig.value.appInfo.agreements[1]
uni.navigateTo({
url: `/pages/common/webview/index?title=${site.title}&url=${site.url}`
});
};
</script>
<style lang="scss">
// nav
::v-deep.uni-navbar__header-container {
align-items: center;
justify-content: center;
&>view {
font-size: 34rpx;
}
}
::v-deep.uni-navbar__header-btns-right .icon {
font-size: 44rpx;
margin-left: 10px;
}
.mine-container {
width: 100%;
height: 100%;
// 个人信息
.header-section {
padding: 0px 0px 30px 0px;
background-color: #39ac4f;
color: white;
border-radius: 0 0 30px 30px;
.cu-avatar {
width: 70px !important;
height: 70px !important;
border: 2px solid #1cb93a;
background-color: #fff;
}
.user-info {
margin-left: 15px;
.u_title {
font-size: 24rpx;
display: flex;
flex-direction: column;
&>text {
margin-bottom: 5px;
}
}
}
}
.content-section {
position: relative;
top: -50px;
.menu-list {
margin: 10px;
border-radius: 10px;
box-shadow: 0 1px 9px rgb(209, 209, 209, 0.5);
.list-cell:first-child {
border-radius: 10px 10px 0 0;
}
.list-cell:last-child {
border-radius: 0 0 10px 10px;
}
.list-cell {
.menu-item-box {
.menu-icon {
font-size: 40rpx;
color: #39ac4f;
}
}
}
}
}
}
</style>