123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394 |
- <template>
- <view class="mine-container" :data-theme="'theme-' + proxy.$settingStore.themeColor.name">
- <!--顶部个人信息栏-->
- <view class="top-area" :class="'bg-' + themeColor.name" :style="{ paddingTop: proxy.$settingStore.StatusBar ? proxy.$settingStore.StatusBar + 20 + 'px' : '55px' }">
- <view class="flex padding justify-between">
- <view class="flex align-center">
- <view class="cu-avatar xl round bg-white" v-if="!avatar" @click="!data.nickName ? handleToLogin() : handleToAvatar(1)">
- <view class="iconfont ucicon-people text-gray icon"></view>
- </view>
- <image class="cu-avatar xl round" v-if="avatar" :src="avatar" @click="handleToAvatar(2)"> </image>
- <view class="login-tip" v-if="!data.nickName" @click="handleToLogin()"> 点击登录 </view>
- <view class="user-info" v-if="data.nickName">
- <view class="u_title"> {{ data.nickName }} </view>
- <view class="u_title"> {{ data.phone }} </view>
- </view>
- </view>
- <view class="flex align-center"> </view>
- </view>
- <view class="vip-card-box"> </view>
- </view>
- <oa-transForm>
- <template #content>
- <view class="menu-list">
- <view class="list-cell list-cell-arrow" @click="proxy.$settingStore.handleToEditInfo()">
- <view class="menu-item">
- <view class="iconfont ucicon-user menu-item-icon"></view>
- <view>我的信息</view>
- </view>
- </view>
- <view class="list-cell list-cell-arrow" @click="proxy.$settingStore.handleToSecure()" v-if="proxy.$common.isVisible()">
- <view class="menu-item">
- <view class="iconfont ucicon-yanzheng menu-item-icon"></view>
- <view>账号与安全</view>
- </view>
- </view>
- <view class="list-cell list-cell-arrow" @click="proxy.$settingStore.handleAbout()">
- <view class="menu-item">
- <view class="iconfont ucicon-aixin menu-item-icon"></view>
- <view>关于我们</view>
- </view>
- </view>
- <view class="list-cell list-cell-arrow" @click="proxy.$settingStore.handleHelp()" v-if="proxy.$common.isVisible()">
- <view class="menu-item">
- <view class="iconfont ucicon-Help menu-item-icon"></view>
- <view>常见问题</view>
- </view>
- </view>
- <view class="list-cell list-cell-arrow" @click="proxy.$settingStore.handleCleanTmp()">
- <view class="menu-item">
- <view class="iconfont ucicon-qinglihuancun menu-item-icon"></view>
- <view>清理缓存</view>
- <view style="margin: 0 15px 0 auto; font-size: 14px; color: #909399">{{ proxy.$settingStore.currentSize }}</view>
- </view>
- </view>
- <view class="list-cell list-cell-arrow" @click="handleToUpgrade" v-if="proxy.$common.isVisible()">
- <view class="menu-item">
- <view class="iconfont ucicon-jianchagengxin menu-item-icon"></view>
- <view>检查更新</view>
- </view>
- </view>
- <!-- <view class="list-cell list-cell-arrow" @click="proxy.$settingStore.handleSetting()">
- <view class="menu-item">
- <view class="iconfont ucicon-shezhi menu-item-icon"></view>
- <view>设置</view>
- </view>
- </view> -->
- </view>
- <!-- <view class="menu-list">
- <view class="list-cell list-cell-arrow" @click="goMessagePush()">
- <view class="menu-item">
- <view class="iconfont ucicon-aixin menu-item-icon"></view>
- <view>推送设置</view>
- </view>
- </view>
- <view class="list-cell list-cell-arrow" @click="goBuilding()">
- <view class="menu-item">
- <view class="iconfont ucicon-aixin menu-item-icon"></view>
- <view>建筑管理</view>
- </view>
- </view>
- <view class="list-cell list-cell-arrow" @click="goFunReport()">
- <view class="menu-item">
- <view class="iconfont ucicon-aixin menu-item-icon"></view>
- <view>功能报备</view>
- </view>
- </view>
- </view> -->
- <view class="cu-list menu">
- <view class="cu-item mt0">
- <view class="content flex align-center">
- <text class="iconfont ucicon-colorlens" :class="'text-' + themeColor.name"></text>
- <view class="padding solid radius shadow-blur ml10" :class="'bg-' + themeColor.name"></view>
- <view class="title ml10">
- 主题色:<text :class="'text-' + themeColor.name">{{ themeColor.title }}</text>
- </view>
- </view>
- <view class="action">
- <button class="cu-btn round shadow" @click="colorModal = true" :class="'bg-' + themeColor.name">
- <text class="iconfont ucicon-colorlens"></text>
- 选择主题
- </button>
- </view>
- </view>
- </view>
- <view class="menu-list" @click="proxy.$settingStore.handleLogout" v-if="proxy.$common.isVisible()">
- <view class="list-cell">
- <view class="menu-item">
- <view class="button">退 出 登 录</view>
- </view>
- </view>
- </view>
- <!-- <view class="menu-list">
- <view class="list-cell list-cell-arrow" @tap="goSiteManage" v-if="permissionLabel == 1">
- <view class="menu-item">
- <image class="menu-item-image" src="@/static/images/setting/setting-icon2.png" style="width: 15px; height: 15px"></image>
- <view>站点管理</view>
- </view>
- </view>
- <view class="list-cell list-cell-arrow" @tap="goAuthManage" v-if="permissionLabel == 1">
- <view class="menu-item">
- <image class="menu-item-image" src="@/static/images/setting/setting-icon4.png" style="width: 15px; height: 15px"></image>
- <view>权限管理</view>
- </view>
- </view>
- </view> -->
- </template>
- </oa-transForm>
- <!-- 选择颜色模态框 -->
- <view class="cu-modal" :class="{ show: colorModal }">
- <view class="cu-dialog">
- <view class="cu-bar justify-end solid-bottom">
- <view class="content">选择颜色</view>
- <view class="action" @tap="colorModal = false">
- <u-icon name="close" size="14"></u-icon>
- <text class="cuIcon-close text-red"></text>
- </view>
- </view>
- <view class="grid col-5 padding">
- <view class="padding-xs" v-for="(item, index) in themeList" :key="index" @tap="SetColor(item)" :data-color="item.name">
- <view class="padding-tb radius" :class="'bg-' + item.name">
- {{ item.title }}
- </view>
- </view>
- </view>
- </view>
- </view>
- <oa-upgrade ref="oaUpgradeRef" :themesColor="proxy.$settingStore.themeColor.color" />
- </view>
- <oa-tabbar :tabbarValue="2"></oa-tabbar>
- </template>
- <script setup>
- import config from "@/config";
- import storage from "@/utils/storage";
- import { onLoad, onShow, onReady, onHide, onLaunch, onNavigationBarButtonTap, onPageScroll } from "@dcloudio/uni-app";
- import { ref, reactive, computed, getCurrentInstance, toRefs, inject } from "vue";
- import { useStores, commonStores } from "@/store/modules/index";
- import { checkUpdates } from "@/api/system/setting";
- import { uploadAvatar, updateUserProfile } from "@/api/system/user";
- import { getAuthorization } from "@/api/business/zhxf/messagePush/index.js";
- const useStore = useStores();
- const { proxy } = getCurrentInstance();
- const avatar = computed(() => {
- return useStore.$state.avatar;
- });
- const themeColor = computed(() => {
- return proxy.$settingStore.themeColor;
- });
- const data = reactive({
- nickName: useStore.$state.nickName,
- phone: useStore.$state.phonenumber,
- version: config.appInfo.version,
- colorModal: false,
- themeList: proxy.$constData.themeList,
- modalShow: false,
- modalArray: {},
- });
- const { colorModal, themeList, modalShow, modalArray } = toRefs(data);
- /**
- * @检查更新
- */
- function handleToUpgrade() {
- proxy.$modal.loading("加载中");
- let data = {
- _api_key: "fba7440cd37400b6ff46e303896af4df",
- appKey: "cbd3508235d03365f4253f6aae6b68ab",
- buildVersion: config.appInfo.version,
- };
- checkUpdates(data).then((res) => {
- if (res.code == 0) {
- let platform = uni.getSystemInfoSync().platform; //手机平台
- if (res.data.buildHaveNewVersion == true) {
- //安卓手机弹窗升级
- if (platform === "android") {
- proxy.$refs["oaUpgradeRef"].openUpgrade({
- modalArray: res.data,
- });
- }
- //IOS无法在线升级提示到商店下载
- else {
- uni.showModal({
- title: "发现新版本 " + res.data.buildVersion,
- content: "请到App store进行升级",
- showCancel: false,
- });
- }
- } else {
- proxy.$modal.msg("您的软件版本已是最新");
- }
- proxy.$modal.closeLoading();
- }
- });
- }
- /**
- * @推送设置
- */
- function goMessagePush() {
- proxy.$tab.navigateTo("/pages/business/zhxf/messagePush/index");
- }
- /**
- * @建筑管理
- */
- function goBuilding() {
- proxy.$tab.navigateTo("/pages/business/zhxf/building/index");
- }
- /**
- * @功能报备
- */
- function goFunReport() {
- proxy.$tab.navigateTo("/pages/business/zhxf/funReport/index");
- }
- /**
- * @主题颜色选择
- */
- function SetColor(item) {
- colorModal.value = false;
- proxy.$settingStore.SET_THEMECOLOR(item);
- proxy.$settingStore.systemThemeColor([1, 2]);
- }
- /**
- * @点击登录
- */
- function handleToLogin() {
- proxy.$tab.reLaunch("/pages/login");
- }
- /**
- * @点击头像
- */
- function handleToAvatar(type) {
- if (type == 1) {
- uni.chooseImage({
- count: 1, //默认9
- sizeType: ["original", "compressed"], //可以指定是原图还是压缩图,默认二者都有
- sourceType: ["album", "camera"], //从相册选择、摄像头
- success: function (res) {
- uploadApi(res);
- },
- });
- } else if (type == 2) {
- proxy.$tab.navigateTo("/pages/mine/avatar/index");
- }
- }
- /**
- * @upload上传头像
- * @api接口请求
- */
- function uploadApi(res) {
- let data = { name: "file", filePath: res.tempFilePaths[0] };
- uploadAvatar(data).then((response) => {
- useStore.$state.avatar = response.data.url;
- updateUserProfile({
- avatar: response.data.url,
- }).then(() => {});
- });
- }
- onShow(() => {});
- onReady(() => {});
- onLoad((options) => {
- uni.hideTabBar(); //隐藏自带tabbar
- });
- // 自定义导航事件
- onNavigationBarButtonTap((e) => {
- if (e.float == "right") {
- proxy.$tab.navigateTo("/pages/mine/setting/index");
- }
- });
- </script>
- <style lang="scss" scoped>
- .mine-container {
- width: 100%;
- height: calc(100vh - (50px + constant(safe-area-inset-bottom)));
- height: calc(100vh - (50px + env(safe-area-inset-bottom)));
- .top-area {
- padding: 55px 0.625rem 0 0.625rem;
- .login-tip {
- font-size: 18px;
- margin-left: 10px;
- }
- .cu-avatar {
- border: 2px solid #eaeaea;
- .icon {
- font-size: 40px;
- }
- }
- .user-info {
- margin-left: 15px;
- .u_title {
- font-size: 18px;
- line-height: 30px;
- }
- }
- .vip-card-box {
- display: flex;
- flex-direction: column;
- color: #f7d680;
- height: 132px;
- background: url("@/static/images/mine/vip-card.png");
- background-size: 100% 100%;
- border-radius: 8px 8px 0 0;
- overflow: hidden;
- position: relative;
- padding: 11px 13px;
- }
- }
- .cu-list.menu-avatar .cu-item {
- border-radius: 5px;
- padding: 30rpx 0;
- box-shadow: 1px 1px 4px rgb(26 26 26 / 10%);
- .cu-avatar {
- background-color: rgba(0, 0, 0, 0);
- background-size: 100% 100%;
- left: 26rpx;
- }
- .content {
- left: 130rpx;
- font-size: 32rpx;
- }
- }
- }
- .item-box {
- background-color: #ffffff;
- margin: 30rpx;
- display: flex;
- flex-direction: row;
- justify-content: center;
- align-items: center;
- padding: 10rpx;
- border-radius: 8rpx;
- color: #303133;
- font-size: 32rpx;
- }
- </style>
|