hldy_app_mini/pages/watch/settings/settings.vue

404 lines
9.3 KiB
Vue
Raw Normal View History

2025-11-05 15:59:48 +08:00
<template>
<view class="index-content-other">
<view class="index-content-right" @click="goback">
<image class="back-img" :src="`/static/index/settings/back.png`" />
返回
</view>
<view class="array-father">
<view v-for="(item,index) in iconsArray.slice(0,3)" :key="index" class="item" @click="jumpToTarget(index)">
<view class="left-item">
<image class="left-icon" :src="`/static/index/settings/${index}.png`" />
<view class="left-font">
{{item}}
</view>
</view>
<view class="right-item">
<image class="right-icon" :src="`/static/index/settings/00.png`" />
</view>
</view>
</view>
<view class="array-father">
<view v-for="(item,index) in iconsArray.slice(3,5)" :key="index" class="item"
@click="jumpToTarget(index+3)">
<view class="left-item">
<image class="left-icon" :src="`/static/index/settings/${index+3}.png`" />
<view class="left-font">
{{item}}
</view>
</view>
<view class="right-item">
<image class="right-icon" :src="`/static/index/settings/00.png`" />
</view>
</view>
</view>
<view class="array-father">
<view v-for="(item,index) in iconsArray.slice(5,8)" :key="index" class="item"
@click="jumpToTarget(index+5)">
<view class="left-item">
<image class="left-icon" :src="`/static/index/settings/${index+5}.png`" />
<view class="left-font">
{{item}}
</view>
</view>
<view class="right-item">
<image class="right-icon" :src="`/static/index/settings/00.png`" />
</view>
</view>
</view>
<view class="bottom-button" @click="exitshow=true">
注销登录
</view>
<view class="text-center">
2025-11-21 14:45:52 +08:00
<view>{{ uni.getStorageSync('orgListName') }}</view>
2025-11-05 15:59:48 +08:00
</view>
<exit :show="exitshow" @close="exitshow=false" />
<reset :show="resetshow" @close="resetshow=false" />
<zy-update ref="zyupgrade" :noticeflag="true" theme="blue" :h5preview="false" oldversion="1.0.0"
:appstoreflag="true" :autocheckupdate="true" @showupdateTips="noNeed"></zy-update>
<!-- 弹出层 -->
<view v-if="openany" class="popup-any" :style="animation?{opacity:1}:{opacity:0}">
<view class="mask" @touchmove.prevent @click="openany=false"></view>
<view class="box-any" @touchmove.prevent>
<view class="title-left">
<!-- <image class="back-img" src="/static/left.png" @click="openany=false"></image> -->
<view v-if="!opentype" class="back-font">NU护理单元隐私信息保护政策</view>
<view v-if="opentype" class="back-font">NU护理单元用户服务协议</view>
</view>
<twoseven v-if="!opentype" />
<oneseven v-if="opentype" />
</view>
</view>
</view>
<view class="bg-mask" v-if="selectserve">
<view @click.stop class="white-select">
<view class="big-font">
请选择您的机构
</view>
<view class="">
<view class="small-father">
<view class="small-select"
:style="serverUrl==item.serverUrl?{color:`#0083FF`,borderColor:`#0083FF`}:{}"
2025-11-21 14:45:52 +08:00
v-for="(item,index) in allserve" @click="changeServe(item)">
2025-11-05 15:59:48 +08:00
{{ item.departName }}
</view>
</view>
</view>
</view>
</view>
</template>
<script setup lang="ts">
import { ref, onMounted, watch, nextTick } from 'vue'
import { defineProps, defineEmits } from 'vue'
import exit from "@/component/public/exit.vue"
import reset from "@/component/public/reset.vue"
import ZyUpdate from '@/component/zy-upgrade/zy-upgrade.vue'
import oneseven from '@/pages/login/oneseven.vue'
import twoseven from '@/pages/login/twoseven.vue'
const zyupgrade = ref(null);
const issay = ref(false)
const openany = ref(false);
const opentype = ref(false);
const exitshow = ref(false);
const resetshow = ref(false);
const emit = defineEmits(['jump'])
// const props = defineProps({ isShow: { type: Boolean, required: true } })
const iconsArray = ref(["雷达扫描", "扫码添加", "手动录入", "修改密码", "切换机构", "检查更新", "用户协议", "隐私政策"])
const transition = ref(true)
const uuid = ref("")
const selectserve = ref(false)
const allserve = ref(uni.getStorageSync('orgList'))
2025-11-21 14:45:52 +08:00
const changeServe = (item:any) => {
uni.setStorageSync('serverUrl', item.serverUrl);
uni.setStorageSync('orgListName', item.departName);
2025-11-05 15:59:48 +08:00
uni.showToast({
title: '切换机构成功',
icon: 'success', // 无图标,仅文字
duration: 2000 // 显示时长,单位毫秒
});
selectserve.value = false;
// setTimeout(() => {
// jumpTo(`/pages/watch/index`)
// }, 500)
}
// 区分首次渲染与动态添加
// watch(
// () => props.isShow,
// (newVal, oldVal) => {
// if (!oldVal && newVal) {
// transition.value = false
// setTimeout(() => (transition.value = true), 50)
// }
// }
// )
const animation = ref(false);
const serverUrl = ref("")
const jumpToTarget = (index : number) => {
switch (index) {
case 0:
uni.navigateTo({
url: '/pages/watch/settings/leida'
})
break
case 1:
uni.navigateTo({
url: '/pages/watch/settings/saoma'
})
break
case 2:
uni.navigateTo({
url: '/pages/watch/settings/input'
})
break
case 3:
resetshow.value = true
break
case 4:
if (allserve.value.length == 1) {
uni.showToast({
title: `您目前只绑定了一个机构。如需切换,请先申请新的机构。`,
icon: 'none', // 无图标,仅文字
duration: 2000 // 显示时长,单位毫秒
});
} else {
serverUrl.value = uni.getStorageSync('serverUrl')
selectserve.value = true;
// console.log("!!!!", allserve.value)
}
break
case 5:
issay.value = true;
zyupgrade.value?.check_update()
break
case 6:
openany.value = true;
opentype.value = true;
animation.value = false;
setTimeout(() => {
animation.value = true;
}, 50)
break
case 7:
openany.value = true;
opentype.value = false;
animation.value = false;
setTimeout(() => {
animation.value = true;
}, 50)
break
}
}
const noNeed = () => {
if (issay.value) {
uni.showToast({
title: '已经是最新版了',
icon: 'none', // 无图标,仅文字
duration: 2000 // 显示时长,单位毫秒
});
}
}
const goback = () => {
uni.navigateBack()
}
</script>
<style scoped lang="less">
.index-content-other {
width: 100%;
// height: 100%;
transition: opacity 1s ease;
position: relative;
background-color: #EFF0F4;
}
.index-content-right {
width: 100%;
border-radius: 50rpx;
display: flex;
align-items: center;
padding-top: 100rpx;
font-size: 32rpx;
}
.item {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
height: 130rpx;
.left-item {
display: flex;
align-items: center;
margin-left: 20rpx;
.left-icon {
margin: 0 20rpx;
width: 40rpx;
height: 40rpx;
}
.left-item {}
}
.right-item {
display: flex;
align-items: center;
margin-right: 50rpx;
.right-icon {
// margin: 0 20rpx;
width: 15rpx;
height: 30rpx;
}
}
}
.array-father {
background-color: rgba(255, 255, 255, 0.6);
width: 76%;
margin-left: 12%;
border-radius: 30rpx;
margin-top: 30rpx;
}
.bottom-button {
margin-top: 30rpx;
background-color: rgba(255, 255, 255, 0.6);
width: 76%;
margin-left: 12%;
border-radius: 30rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 30rpx;
height: 100rpx;
color: #0174D3;
}
.popup-any {
position: fixed;
inset: 0;
z-index: 999;
/* 初始透明度 */
opacity: 0;
/* 播放动画:名称 fadeIn时长 0.5s,缓动函数 ease保持最后状态 */
transition: opacity 0.5s ease;
backdrop-filter: blur(1rpx);
background-color: rgba(236, 237, 241, 0.4);
/* 添加毛玻璃效果 */
z-index: 999;
}
.mask {
position: absolute;
inset: 0;
}
.box-any {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 1000rpx;
height: 1300rpx;
background: #fff;
border-radius: 50rpx;
overflow: hidden;
display: flex;
flex-direction: column;
padding: 65rpx 60rpx;
}
.title-left {
display: flex;
align-items: center;
justify-content: center;
.back-img {
width: 60rpx;
height: 60rpx;
margin-right: 30rpx;
}
.back-font {
font-size: 35rpx;
font-weight: 600;
}
}
.back-img {
width: 30rpx;
height: 30rpx;
margin-left: 100rpx;
margin-right: 20rpx;
}
.text-center {
margin-top: 40rpx;
2025-11-21 14:45:52 +08:00
height: 60rpx;
2025-11-05 15:59:48 +08:00
width: 100%;
display: flex;
justify-content: center;
}
.bg-mask {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
background: rgba(0, 0, 0, 0.3);
backdrop-filter: blur(5rpx);
z-index: 998;
display: flex;
justify-content: center;
align-items: center;
.white-select {
display: flex;
justify-content: center;
align-items: center;
background-color: #fff;
width: 1200rpx;
height: 1200rpx;
border-radius: 30rpx;
flex-direction: column;
.big-font {
font-size: 35rpx;
}
.small-father {
display: flex;
align-items: center;
flex-wrap: wrap;
flex-direction: column;
}
.small-select {
display: flex;
justify-content: center;
align-items: center;
width: 600rpx;
height: 200rpx;
margin-top: 50rpx;
padding: 30rpx;
border-radius: 30rpx;
border: 2rpx solid;
font-size: 32rpx;
}
}
}
</style>