|
@ -557,7 +557,6 @@
|
|||
const clicktab = (index : number) => {
|
||||
if (tabnumber.value !== index) {
|
||||
tabnumber.value = index;
|
||||
console.log("???", index)
|
||||
switch (index) {
|
||||
case 0:
|
||||
changearray.value = JSON.parse(JSON.stringify(cardarray.value))
|
||||
|
@ -573,11 +572,6 @@
|
|||
case 2:
|
||||
changearray.value = []
|
||||
break
|
||||
// cardarray.value.forEach((element:any)=>{
|
||||
// if(!element.cardtype){
|
||||
// changearray.value.push(element)
|
||||
// }
|
||||
// })
|
||||
case 3:
|
||||
changearray.value = []
|
||||
cardarray.value.forEach((element : any) => {
|
||||
|
@ -595,7 +589,7 @@
|
|||
|
||||
const jumptodanyuan = () => {
|
||||
uni.navigateTo({
|
||||
url: "/pages/Nursing/index"
|
||||
url: "/pages/NursingNew/index"
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -86,14 +86,16 @@
|
|||
import { ref, onMounted, watch, nextTick } from 'vue'
|
||||
import { defineProps, defineEmits } from 'vue'
|
||||
import { getCardList } from "./api.js"
|
||||
|
||||
// import { throttle } from '@/component/public/throttle.js'
|
||||
|
||||
// const getCardListThrottled = throttle(getCardList(), 1000)
|
||||
const emit = defineEmits(['nav'])
|
||||
const props = defineProps({ isShow: { type: Boolean, required: true } })
|
||||
const savevalue = ref("");
|
||||
|
||||
const renamenummber = ref(-1)
|
||||
const transition = ref(true)
|
||||
const progress = ref(0)
|
||||
const progress = ref(1)
|
||||
const scrollTop = ref(0)
|
||||
const scrollViewRef = ref(null)
|
||||
const rightbutton = ref([
|
||||
|
@ -104,6 +106,7 @@
|
|||
])
|
||||
const cardarray = ref<Array<{ menu : any; isNew : boolean; nuName : string }>>([])
|
||||
const relArray = ref([]);
|
||||
|
||||
// 区分首次渲染与动态添加
|
||||
watch(
|
||||
() => props.isShow,
|
||||
|
@ -111,21 +114,15 @@
|
|||
if (!oldVal && newVal) {
|
||||
transition.value = false
|
||||
setTimeout(() => (transition.value = true), 50)
|
||||
|
||||
|
||||
getCardList().then(res => {
|
||||
res.result.records.forEach((element:any)=>{
|
||||
res.result.records.forEach((element : any) => {
|
||||
element.menu = JSON.parse(JSON.stringify(rightbutton.value))
|
||||
element.isNew = true
|
||||
})
|
||||
relArray.value = res.result.records
|
||||
console.log("????", relArray.value)
|
||||
again()
|
||||
})
|
||||
// suiji()
|
||||
// const timer = setInterval(() => {
|
||||
// progress.value += 0.01
|
||||
// if (progress.value >= 1) clearInterval(timer)
|
||||
// }, 50)
|
||||
}
|
||||
}
|
||||
)
|
||||
|
@ -158,13 +155,21 @@
|
|||
}
|
||||
|
||||
function again() {
|
||||
renamenummber.value = -1
|
||||
suiji()
|
||||
progress.value = 0
|
||||
const timer = setInterval(() => {
|
||||
progress.value += 0.01
|
||||
if (progress.value >= 1) clearInterval(timer)
|
||||
}, 50)
|
||||
if(progress.value == 1){
|
||||
renamenummber.value = -1
|
||||
suiji()
|
||||
progress.value = 0
|
||||
const timer = setInterval(() => {
|
||||
progress.value += 0.01
|
||||
if (progress.value >= 1) {
|
||||
progress.value = 1
|
||||
clearInterval(timer)
|
||||
}
|
||||
|
||||
|
||||
}, 50)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 监听动画结束,清除标记
|
||||
|
|
|
@ -0,0 +1,266 @@
|
|||
<template>
|
||||
<view class="index-content-other" v-show="isShow" :style="transition?{opacity: `1`}:{opacity: `0`}">
|
||||
<view class="index-content-right">
|
||||
<view style="margin-right: 40rpx;">长春市朝阳区久泰开运养老服务有限公司</view>
|
||||
</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" style="margin: 30rpx 0;">
|
||||
<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>
|
||||
<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" @click="openany=false"></view>
|
||||
<view class="box-any">
|
||||
<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>
|
||||
</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 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("")
|
||||
|
||||
// 区分首次渲染与动态添加
|
||||
watch(
|
||||
() => props.isShow,
|
||||
(newVal, oldVal) => {
|
||||
if (!oldVal && newVal) {
|
||||
transition.value = false
|
||||
setTimeout(() => (transition.value = true), 50)
|
||||
|
||||
}
|
||||
}
|
||||
)
|
||||
const animation = ref(false)
|
||||
const jumpToTarget = (index : number) => {
|
||||
switch (index) {
|
||||
case 0:
|
||||
emit("jump", index)
|
||||
break
|
||||
case 1:
|
||||
emit("jump", index)
|
||||
break
|
||||
case 2:
|
||||
emit("jump", index)
|
||||
break
|
||||
case 3:
|
||||
resetshow.value = true
|
||||
break
|
||||
case 4:
|
||||
|
||||
break
|
||||
case 5:
|
||||
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(props.isShow){
|
||||
uni.showToast({
|
||||
title: '已经是最新版了',
|
||||
icon: 'none', // 无图标,仅文字
|
||||
duration: 2000 // 显示时长,单位毫秒
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.index-content-other {
|
||||
width: calc(100% - 170rpx);
|
||||
height: 100%;
|
||||
transition: opacity 1s ease;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.index-content-right {
|
||||
width: 100%;
|
||||
border-radius: 50rpx;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
height: 120rpx;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.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: 98.2%;
|
||||
border-radius: 30rpx;
|
||||
}
|
||||
|
||||
.bottom-button {
|
||||
margin-top: 30rpx;
|
||||
background-color: rgba(255, 255, 255, 0.6);
|
||||
width: 98.2%;
|
||||
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;
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
.mask {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
}
|
||||
|
||||
.box-any {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
width: 1000rpx;
|
||||
height: 1500rpx;
|
||||
background: #fff;
|
||||
border-radius: 50rpx;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 65rpx 40rpx;
|
||||
}
|
||||
.title-left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.back-img {
|
||||
width: 60rpx;
|
||||
height: 60rpx;
|
||||
margin-right: 30rpx;
|
||||
}
|
||||
|
||||
.back-font {
|
||||
font-size: 35rpx;
|
||||
font-weight: 600;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,121 @@
|
|||
<template>
|
||||
<view>
|
||||
<image :src="isError ? defaultImage : links[currentIndex]" :style="{ width: width, height: height }"
|
||||
:mode="objectFit" @error="isError = true" @load="isError = false" />
|
||||
<button v-if="showButton" @click="$emit('update:playing', !playing)">
|
||||
{{ playing ? '停止播放' : '开始播放' }}
|
||||
</button>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
ref,
|
||||
watch,
|
||||
onUnmounted
|
||||
} from 'vue'
|
||||
|
||||
// 定义组件的 props
|
||||
const props = defineProps({
|
||||
links: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
width: {
|
||||
type: String,
|
||||
default: '60rpx'
|
||||
},
|
||||
height: {
|
||||
type: String,
|
||||
default: '60rpx'
|
||||
},
|
||||
objectFit: {
|
||||
type: String,
|
||||
default: 'aspectFill'
|
||||
},
|
||||
defaultImage: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
interval: {
|
||||
type: Number,
|
||||
default: 80
|
||||
},
|
||||
playing: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
showButton: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
loop: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
})
|
||||
|
||||
// 定义组件发出的事件
|
||||
const emit = defineEmits(['update:playing'])
|
||||
|
||||
// 组件内部状态
|
||||
const currentIndex = ref(0) // 当前播放的图片索引
|
||||
const isPlaying = ref(false) // 是否正在播放
|
||||
const isError = ref(false) // 当前图片是否加载失败
|
||||
let timer = null // 定时器
|
||||
|
||||
// 开始播放
|
||||
const startPlay = () => {
|
||||
if (isPlaying.value) return
|
||||
isPlaying.value = true
|
||||
timer = setInterval(() => {
|
||||
if (props.loop) {
|
||||
// 循环播放:使用模运算循环索引
|
||||
currentIndex.value = (currentIndex.value + 1) % props.links.length
|
||||
isError.value = false
|
||||
} else {
|
||||
// 非循环播放:到末尾时停止
|
||||
if (currentIndex.value < props.links.length - 1) {
|
||||
currentIndex.value++
|
||||
isError.value = false
|
||||
} else {
|
||||
stopPlay()
|
||||
}
|
||||
}
|
||||
}, props.interval)
|
||||
}
|
||||
|
||||
// 停止播放
|
||||
const stopPlay = () => {
|
||||
isPlaying.value = false
|
||||
clearInterval(timer)
|
||||
}
|
||||
|
||||
// 监听 playing 属性变化
|
||||
watch(() => props.playing, (val) => {
|
||||
currentIndex.value = 0
|
||||
if (val) {
|
||||
startPlay()
|
||||
} else {
|
||||
stopPlay()
|
||||
setTimeout(() => currentIndex.value = 0, 50)
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
// 监听 links 数组变化
|
||||
watch(() => props.links, () => {
|
||||
currentIndex.value = 0
|
||||
isError.value = false
|
||||
if (isPlaying.value) {
|
||||
stopPlay()
|
||||
}
|
||||
}, {
|
||||
deep: true
|
||||
})
|
||||
|
||||
// 组件销毁时清理定时器
|
||||
onUnmounted(() => {
|
||||
stopPlay()
|
||||
})
|
||||
</script>
|
|
@ -0,0 +1,151 @@
|
|||
<template>
|
||||
<!-- 通过 v-show 控制显隐,并根据 show 添加 is-active 类触发 CSS 过渡 -->
|
||||
<view :class="['neuro-wrapper', donghua ? 'is-active' : '']" v-show="show">
|
||||
<!-- 遮罩层,点击触发关闭 -->
|
||||
<view class="neuro-mask" @click="handleClose"></view>
|
||||
<!-- 拟态框,阻止冒泡点击 -->
|
||||
<view class="neuro-box" @click.stop>
|
||||
|
||||
<view class="button-father">
|
||||
<view class="button-white" @click="handleClose">取消</view>
|
||||
<view class="button" @click="go">确定</view>
|
||||
</view>
|
||||
|
||||
<view class="title">退出登录</view>
|
||||
<view class="card-font">
|
||||
确定要注销155******76账户吗
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
ref,
|
||||
watch
|
||||
} from 'vue'
|
||||
|
||||
// 接收 show 属性并支持 update:show 事件
|
||||
const props = defineProps({
|
||||
show: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
|
||||
});
|
||||
// 区分首次渲染与动态添加
|
||||
const donghua = ref(false);
|
||||
watch(
|
||||
() => props.show,
|
||||
(newVal, oldVal) => {
|
||||
if (!oldVal && newVal) {
|
||||
donghua.value = false
|
||||
setTimeout(()=>donghua.value = true,50)
|
||||
|
||||
}
|
||||
}
|
||||
)
|
||||
const emit = defineEmits(["close"]);
|
||||
|
||||
// 关闭方法,通知父组件更新 show
|
||||
function handleClose() {
|
||||
emit('close');
|
||||
}
|
||||
const go = () => {
|
||||
uni.setStorageSync('token', 1);
|
||||
plus.runtime.quit();
|
||||
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
/* 容器默认隐藏,透明度为 0,不接受点击 */
|
||||
.neuro-wrapper {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
z-index: 999;
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity 0.3s ease;
|
||||
}
|
||||
|
||||
/* 显示时透明度过渡到 1,可接受点击 */
|
||||
.neuro-wrapper.is-active {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
/* 遮罩层,半透明黑色 */
|
||||
.neuro-mask {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
/* 拟态框 固定尺寸 + 阴影样式 + 相对定位于 wrapper */
|
||||
.neuro-box {
|
||||
position: relative;
|
||||
width: 600rpx;
|
||||
height: 450rpx;
|
||||
border-radius: 30rpx;
|
||||
background-color: #fff;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
// justify-content: center;
|
||||
align-items: center;
|
||||
background-image: url('https://www.focusnu.com/media/directive/index/whitepeople.png');
|
||||
// background-size: 100% auto;
|
||||
background-position: top center;
|
||||
background-repeat: no-repeat;
|
||||
z-index: 1;
|
||||
padding: 0 10%;
|
||||
}
|
||||
|
||||
.button {
|
||||
width: 47%;
|
||||
background: linear-gradient(to left, #00C9FF, #0076FF);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #fff;
|
||||
font-size: 25rpx;
|
||||
border-radius: 30rpx;
|
||||
}
|
||||
|
||||
.title {
|
||||
margin-top: 70rpx;
|
||||
}
|
||||
|
||||
.card-font {
|
||||
margin-top: 70rpx;
|
||||
width: 600rpx;
|
||||
justify-content: center;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.button-white {
|
||||
width: 47%;
|
||||
border: 2rpx solid #c3cacd;
|
||||
background: linear-gradient(to bottom, #f3f3f5, #dee4e9);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: 25rpx;
|
||||
border-radius: 30rpx;
|
||||
}
|
||||
|
||||
.button-father {
|
||||
position: absolute;
|
||||
bottom: 60rpx;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
width: 100%;
|
||||
height: 70rpx;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 0 50rpx;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,243 @@
|
|||
<template>
|
||||
<!-- 通过 v-show 控制显隐,并根据 show 添加 is-active 类触发 CSS 过渡 -->
|
||||
<view :class="['neuro-wrapper', donghua ? 'is-active' : '']" v-show="show">
|
||||
<!-- 遮罩层,点击触发关闭 -->
|
||||
<view class="neuro-mask" @click="handleClose"></view>
|
||||
<!-- 拟态框,阻止冒泡点击 -->
|
||||
<view class="neuro-box" @click.stop>
|
||||
|
||||
<view class="button-father">
|
||||
<!-- <view class="button-white" @click="handleClose">取消</view> -->
|
||||
<view class="button" @click="go">确定</view>
|
||||
</view>
|
||||
|
||||
<view class="title">修改账号登录密码</view>
|
||||
<view class="password-father" style="margin-top: 50rpx;">
|
||||
<input class="password" :password="false" v-model="form.oldpassword" maxlength="15"
|
||||
placeholder="请输入旧密码" />
|
||||
</view>
|
||||
<view class="password-father">
|
||||
<input class="password" :password="false" v-model="form.password" maxlength="15" placeholder="请输入新密码" />
|
||||
</view>
|
||||
<view class="password-father">
|
||||
<input class="password" :password="false" v-model="form.confirmpassword" maxlength="15"
|
||||
placeholder="请再次输入新密码" />
|
||||
</view>
|
||||
|
||||
<view class="card-font">
|
||||
<!-- 确定要退出155******76账户吗 -->
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
ref,
|
||||
reactive,
|
||||
watch
|
||||
} from 'vue'
|
||||
import {
|
||||
updatePassword
|
||||
} from '@/pages/Initialization/api.js'
|
||||
|
||||
// 接收 show 属性并支持 update:show 事件
|
||||
const props = defineProps({
|
||||
show: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
const form = reactive({
|
||||
username: uni.getStorageSync('username'),
|
||||
oldpassword: "",
|
||||
password: "",
|
||||
confirmpassword: ""
|
||||
})
|
||||
|
||||
// 区分首次渲染与动态添加
|
||||
const donghua = ref(false);
|
||||
watch(
|
||||
() => props.show,
|
||||
(newVal, oldVal) => {
|
||||
if (!oldVal && newVal) {
|
||||
donghua.value = false
|
||||
setTimeout(() => donghua.value = true, 50)
|
||||
|
||||
}
|
||||
}
|
||||
)
|
||||
const emit = defineEmits(["close"]);
|
||||
|
||||
// 关闭方法,通知父组件更新 show
|
||||
function handleClose() {
|
||||
emit('close');
|
||||
}
|
||||
const go = () => {
|
||||
if (!form.username || !form.oldpassword || !form.password || !form.confirmpassword) {
|
||||
uni.showToast({
|
||||
title: '请完善信息',
|
||||
icon: 'error', // 无图标,表示普通文本
|
||||
duration: 2000
|
||||
})
|
||||
return
|
||||
}
|
||||
if (form.password.length < 6 || form.confirmpassword.length < 6) {
|
||||
uni.showToast({
|
||||
title: '密码要多于六位',
|
||||
icon: 'none', // 无图标,表示普通文本
|
||||
duration: 2000
|
||||
})
|
||||
return
|
||||
}
|
||||
if (form.password !== form.confirmpassword) {
|
||||
uni.showToast({
|
||||
title: '新密码与确认密码不一致',
|
||||
icon: 'none', // 无图标,表示普通文本
|
||||
duration: 2000
|
||||
})
|
||||
return
|
||||
}
|
||||
// plus.runtime.quit();
|
||||
updatePassword(form).then(res => {
|
||||
console.log("res", res)
|
||||
if (res.success) {
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none', // 无图标,表示普通文本
|
||||
duration: 2000
|
||||
})
|
||||
// uni.clearStorageSync();
|
||||
setTimeout(() => {
|
||||
// 1. 清除缓存
|
||||
|
||||
uni.setStorageSync('token', 1);
|
||||
// 2. 跳转到登录页(使用 reLaunch 关闭所有页面栈)
|
||||
uni.reLaunch({
|
||||
url: '/pages/login/login' // 请根据你项目的路径修改
|
||||
});
|
||||
}, 1000)
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none', // 无图标,表示普通文本
|
||||
duration: 2000
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
/* 容器默认隐藏,透明度为 0,不接受点击 */
|
||||
.neuro-wrapper {
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
z-index: 999;
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: opacity 0.3s ease;
|
||||
}
|
||||
|
||||
/* 显示时透明度过渡到 1,可接受点击 */
|
||||
.neuro-wrapper.is-active {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
}
|
||||
|
||||
/* 遮罩层,半透明黑色 */
|
||||
.neuro-mask {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
/* 拟态框 固定尺寸 + 阴影样式 + 相对定位于 wrapper */
|
||||
.neuro-box {
|
||||
position: relative;
|
||||
width: 750rpx;
|
||||
height: 700rpx;
|
||||
border-radius: 30rpx;
|
||||
background-color: #fff;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
// justify-content: center;
|
||||
align-items: center;
|
||||
background-image: url('https://www.focusnu.com/media/directive/index/whitepeople.png');
|
||||
// background-size: 100% auto;
|
||||
background-position: top center;
|
||||
background-repeat: no-repeat;
|
||||
z-index: 1;
|
||||
padding: 0 10%;
|
||||
}
|
||||
|
||||
.button {
|
||||
width: 100%;
|
||||
background: linear-gradient(to left, #00C9FF, #0076FF);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #fff;
|
||||
font-size: 25rpx;
|
||||
border-radius: 35rpx;
|
||||
margin-left: 20rpx;
|
||||
}
|
||||
|
||||
.title {
|
||||
margin-top: 70rpx;
|
||||
font-weight: 600;
|
||||
font-size: 35rpx;
|
||||
}
|
||||
|
||||
.card-font {
|
||||
margin-top: 70rpx;
|
||||
width: 600rpx;
|
||||
justify-content: center;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.button-white {
|
||||
width: 47%;
|
||||
border: 2rpx solid #c3cacd;
|
||||
background: linear-gradient(to bottom, #f3f3f5, #dee4e9);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
font-size: 25rpx;
|
||||
border-radius: 30rpx;
|
||||
}
|
||||
|
||||
.button-father {
|
||||
position: absolute;
|
||||
bottom: 70rpx;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
width: 100%;
|
||||
height: 80rpx;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
padding: 0 110rpx;
|
||||
}
|
||||
|
||||
.password-father {
|
||||
margin-top: 30rpx;
|
||||
width: 750rpx;
|
||||
padding: 0 120rpx;
|
||||
height: 80rpx;
|
||||
|
||||
.password {
|
||||
width: 100%;
|
||||
background-color: #edf0f9;
|
||||
border-radius: 23rpx;
|
||||
height: 80rpx;
|
||||
padding-left: 20rpx;
|
||||
// margin-left: -20rpx;
|
||||
font-size: 27rpx;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -19,6 +19,7 @@
|
|||
<image class="right-icons-img-icon"
|
||||
:src="darkFans?`/static/index/undericons/out.png`:`/static/index/undericons/outlight.png`" />
|
||||
</view>
|
||||
|
||||
<view class="right-container-title-class-anhei-button" @click="darkFanschange()" v-show="!darkFans">
|
||||
<text class="right-container-title-class-anhei">
|
||||
切换到暗黑模式
|
||||
|
@ -30,6 +31,11 @@
|
|||
取消暗黑模式
|
||||
</text>
|
||||
</view>
|
||||
<view class="right-container-title-class-anhei-button" style="background-color: #fff;">
|
||||
<text class="right-container-title-class-anhei" style="color: black;" @click="goToNew" >
|
||||
切换到新版主页
|
||||
</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="right-container-fir">
|
||||
|
@ -517,6 +523,12 @@
|
|||
const secondcurrentIndex = ref<number>(0);
|
||||
const thirdcurrentIndex = ref<number>(0);
|
||||
const emit = defineEmits(['darkchange']);
|
||||
|
||||
const goToNew = () => {
|
||||
uni.navigateTo({
|
||||
url:'/pages/NursingNew/index'
|
||||
})
|
||||
}
|
||||
// 暗黑模式改变
|
||||
const darkFanschange = () => {
|
||||
emit('darkchange', !props.darkFans);
|
||||
|
|
|
@ -111,7 +111,7 @@
|
|||
<view v-show="showVideo" class="modal" @click="closeVideo">
|
||||
<view class="modal-content" @click.stop>
|
||||
<!-- 视频组件,可替换 src 地址 -->
|
||||
<video id="myVideo" src="@/static/index/ceshi.mp4" controls style="width:100%;height:100%;"></video>
|
||||
<!-- <video id="myVideo" src="@/static/index/ceshi.mp4" controls style="width:100%;height:100%;"></video> -->
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
|
|
@ -145,7 +145,8 @@
|
|||
<view class="title-time" v-if="item1.startTime"
|
||||
v-show=" liang.index0 !== index0 || liang.index1 !== index1 || canmove"
|
||||
style="margin-top: 5rpx;">
|
||||
<view class="title-time-time" style="font-size: 25rpx;margin-top: 20rpx;">
|
||||
<view class="title-time-time"
|
||||
style="font-size: 25rpx;margin-top: 20rpx;">
|
||||
{{item1.startTime + `-` + item1.endTime}}
|
||||
</view>
|
||||
<image class="title-time-button"
|
||||
|
@ -154,7 +155,7 @@
|
|||
{{item1.cycleType}}
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
||||
<!-- <image v-if="item1.startTime" class="title-time-img"
|
||||
src="/static/index/tu.png" /> -->
|
||||
<view v-if="item1.startTime" class="title-time-font-rel">
|
||||
|
@ -166,7 +167,7 @@
|
|||
<image class="right-box-items-button"
|
||||
src="/static/index/ren.png" />
|
||||
</view>
|
||||
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
@ -445,15 +446,16 @@
|
|||
() => props.isold,
|
||||
() => {
|
||||
if (props.isold) {
|
||||
saveEditIndex.value.index0 = 10;
|
||||
saveEditIndex.value.index0 = 9;
|
||||
saveEditIndex.value.index1 = 0;
|
||||
centerCell();
|
||||
cardLeft.value = 1;
|
||||
scrollTop.value = 1;
|
||||
nextTick(() => {
|
||||
scrollTop.value = 0;
|
||||
cardLeft.value = 704;
|
||||
})
|
||||
cardLeft.value = 605;
|
||||
|
||||
})
|
||||
}
|
||||
})
|
||||
watch(
|
||||
|
@ -463,17 +465,28 @@
|
|||
})
|
||||
watch(
|
||||
() => props.isshow,
|
||||
() => {
|
||||
bottomisShaking.value = false
|
||||
shakyTable.value = false;
|
||||
|
||||
cardLeft.value = 1;
|
||||
scrollTop.value = 1;
|
||||
nextTick(() => {
|
||||
scrollTop.value = 0;
|
||||
cardLeft.value = 704;
|
||||
})
|
||||
})
|
||||
(newVal, oldVal) => {
|
||||
// 只有当新旧值不相同时才执行
|
||||
if (newVal !== oldVal) {
|
||||
bottomisShaking.value = false
|
||||
shakyTable.value = false
|
||||
if(solveWatch.value){
|
||||
solveWatch.value --
|
||||
}else{
|
||||
saveEditIndex.value.index0 = 9
|
||||
saveEditIndex.value.index1 = 0
|
||||
centerCell();
|
||||
cardLeft.value = 1
|
||||
scrollTop.value = 1
|
||||
|
||||
nextTick(() => {
|
||||
scrollTop.value = 0
|
||||
cardLeft.value = 605
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
const bottomItems = ref([
|
||||
{
|
||||
name: '纸尿裤',
|
||||
|
@ -584,6 +597,11 @@
|
|||
const savebottom = ref(3);
|
||||
const isMove = ref(false);
|
||||
|
||||
onMounted(() => {
|
||||
// getServiceTree().then(res=>{
|
||||
// console.log("res",res)
|
||||
// })
|
||||
})
|
||||
// 上次点击时间
|
||||
const lastTap = ref(0)
|
||||
// 双击的最大间隔(ms),可根据体验调整
|
||||
|
@ -689,80 +707,37 @@
|
|||
}
|
||||
const selectType = ref(true);
|
||||
const deleteButton = ref(false);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// 给摇杆用的
|
||||
//看完迷糊不,我都迷糊了
|
||||
//0上1右2下3左
|
||||
// songisopen.value是弹窗打没打开
|
||||
// clickstauts.value是弹窗的第几步
|
||||
// selectType.value是选择周和月的状态
|
||||
|
||||
const movecard = (where : number) => {
|
||||
isDelete.value = false;
|
||||
// console.log("?????",leftIn.value,saveleft.value*117)
|
||||
// if (((saveleft.value * 117 - leftIn.value) > 5) || ((leftIn.value - saveleft.value * 117) > 0)) {
|
||||
// cardLeft.value = 1;
|
||||
// nextTick(() => {
|
||||
// cardLeft.value = saveleft.value * 117;
|
||||
// })
|
||||
// }
|
||||
// if (((savetop.value * 104.5 - topIn.value) > 5) || ((topIn.value - savetop.value * 104.5) > 0)) {
|
||||
// scrollTop.value = 1;
|
||||
// nextTick(() => {
|
||||
// scrollTop.value = savetop.value * 104.5;
|
||||
// })
|
||||
// }
|
||||
|
||||
switch (where) {
|
||||
case 0:
|
||||
if (saveEditIndex.value.index1) {
|
||||
saveEditIndex.value.index1--
|
||||
centerCell();
|
||||
}
|
||||
// if (saveEditIndex.value.index1 < savetop.value) {
|
||||
// savetop.value = saveEditIndex.value.index1;
|
||||
// savebottom.value = saveEditIndex.value.index1 + 3
|
||||
// scrollTop.value = saveEditIndex.value.index1 * 104.5;
|
||||
// }
|
||||
// isHave()
|
||||
break
|
||||
case 1:
|
||||
if (saveEditIndex.value.index0 == 23) {
|
||||
return
|
||||
}
|
||||
saveEditIndex.value.index0++
|
||||
// if (saveEditIndex.value.index0 > saveright.value) {
|
||||
// saveleft.value = saveEditIndex.value.index0 - 5;
|
||||
// saveright.value = saveEditIndex.value.index0
|
||||
// cardLeft.value = saveleft.value * 117;
|
||||
// }
|
||||
|
||||
// isHave()
|
||||
centerCell();
|
||||
break
|
||||
case 2:
|
||||
if (saveEditIndex.value.index1 == 11) {
|
||||
return
|
||||
}
|
||||
saveEditIndex.value.index1++
|
||||
// if (saveEditIndex.value.index1 > savebottom.value) {
|
||||
// savetop.value = saveEditIndex.value.index1 - 3;
|
||||
// savebottom.value = saveEditIndex.value.index1;
|
||||
// scrollTop.value = savetop.value * 104.5;
|
||||
// }
|
||||
// isHave()
|
||||
centerCell();
|
||||
break
|
||||
case 3:
|
||||
if (saveEditIndex.value.index0 == 0) {
|
||||
return
|
||||
}
|
||||
saveEditIndex.value.index0--
|
||||
// if (saveEditIndex.value.index0 < saveleft.value) {
|
||||
// saveleft.value = saveEditIndex.value.index0;
|
||||
// saveright.value = saveEditIndex.value.index0 + 5;
|
||||
// cardLeft.value = saveleft.value * 117;
|
||||
// }
|
||||
// isHave()
|
||||
centerCell();
|
||||
break
|
||||
}
|
||||
}
|
||||
|
@ -1139,35 +1114,9 @@
|
|||
default:
|
||||
break;
|
||||
}
|
||||
// if (cardsumit.value.op.index[2] === index) {
|
||||
// cardsumit.value.op.index[2] = -1;
|
||||
// cardsumit.value.op.name = ""
|
||||
// openOp.value = -1
|
||||
// } else {
|
||||
// cardsumit.value.op.index[2] = index
|
||||
// cardsumit.value.op.name = item.relName
|
||||
// switch (item.cycleType) {
|
||||
// case `日常护理`:
|
||||
// openOp.value = 0
|
||||
// break;
|
||||
// case `周期护理`:
|
||||
// openOp.value = 1
|
||||
// break;
|
||||
// case `即时护理`:
|
||||
// openOp.value = 2
|
||||
// break;
|
||||
// default:
|
||||
// break;
|
||||
// }
|
||||
|
||||
// }
|
||||
}
|
||||
// const clickweek = (index : string) => {
|
||||
// cardsumit.value.weekTime = index
|
||||
// }
|
||||
// const clickmonth = (index : string) => {
|
||||
// cardsumit.value.monthTime = index
|
||||
// }
|
||||
|
||||
const indexsave = ref([-1, -1]);
|
||||
// (长按表格后)表格拖动结束
|
||||
const rulerMoveEnd = (object : any) => {
|
||||
|
@ -1363,7 +1312,11 @@
|
|||
current: -1,
|
||||
bordershow: true
|
||||
})
|
||||
const solveWatch = ref(0)
|
||||
const whereEvent = (data : any) => {
|
||||
saveEditIndex.value.index0 = data.index0;
|
||||
saveEditIndex.value.index1 = data.index1;
|
||||
centerCell();
|
||||
targetRuler.value.index0 = data.index0;
|
||||
targetRuler.value.index1 = data.index1;
|
||||
saveRulerTime.value.index0 = targetRuler.value.index0;
|
||||
|
@ -1394,12 +1347,15 @@
|
|||
onShow(() => {
|
||||
bigArray.value = myArray
|
||||
downList.value = bigArray.value[0].children
|
||||
uni.$on('where', whereEvent);
|
||||
console.log("???",saveEditIndex.value)
|
||||
uni.$on('where', findback);
|
||||
})
|
||||
onHide(() => {
|
||||
uni.$off('where', whereEvent);
|
||||
uni.$off('where', findback);
|
||||
});
|
||||
function findback (data:any){
|
||||
solveWatch.value = 3;
|
||||
whereEvent(data)
|
||||
}
|
||||
defineExpose({
|
||||
rulerMoveEnd,
|
||||
})
|
||||
|
@ -1452,39 +1408,29 @@
|
|||
}
|
||||
return result;
|
||||
}
|
||||
watch(
|
||||
[() => saveEditIndex.value.index0, () => saveEditIndex.value.index1],
|
||||
() => {
|
||||
centerCell();
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
const totalColumns = 24; // 总列数
|
||||
const totalRows = 11; // 总行数
|
||||
const visibleWidth = 1405; // 可视区域宽度 (rpx),基于 scalcType * widthType ≈ 2220
|
||||
const visibleHeight = 480; // 可视区域高度 (rpx),假设显示约5行时 heightType = 102.5
|
||||
function centerCell() {
|
||||
if (saveEditIndex.value.index0 >= 0 && saveEditIndex.value.index0 <= totalColumns && saveEditIndex.value.index1 >= 0 && saveEditIndex.value.index1 <= totalRows) {
|
||||
// 计算点击格子的中心位置 (rpx)
|
||||
const cellCenterX = (saveEditIndex.value.index0 + 0.5 ) * 201;
|
||||
const cellCenterY = (saveEditIndex.value.index1 - 0.5 ) * 167;
|
||||
// console.log("!!!!",saveEditIndex.value.index0)
|
||||
// 计算 scrollLeft 和 scrollTop,使格子中心位于可视区域中心
|
||||
cardLeft.value = cellCenterX - visibleWidth / 2;
|
||||
scrollTop.value = cellCenterY - visibleHeight / 2;
|
||||
|
||||
// 计算网格总宽高
|
||||
const totalWidth = totalColumns * 201;
|
||||
const totalHeight = totalRows * 167;
|
||||
|
||||
// 限制 scrollLeft 和 scrollTop 在有效范围内
|
||||
cardLeft.value = Math.max(0, Math.min(cardLeft.value, totalWidth - visibleWidth)) /2;
|
||||
// scrollTop.value = 0
|
||||
scrollTop.value = Math.max(0, Math.min(scrollTop.value, totalHeight - visibleHeight)) /2;
|
||||
|
||||
// console.log("????",cardLeft.value,scrollTop.value)
|
||||
// console.log("????",scrollLeft.value,scrollTop.value,rpx2px)
|
||||
}
|
||||
if (saveEditIndex.value.index0 >= 0 && saveEditIndex.value.index0 <= totalColumns && saveEditIndex.value.index1 >= 0 && saveEditIndex.value.index1 <= totalRows) {
|
||||
// 计算点击格子的中心位置 (rpx)
|
||||
const cellCenterX = (saveEditIndex.value.index0 + 0.5) * 201;
|
||||
const cellCenterY = (saveEditIndex.value.index1 - 0.5) * 167;
|
||||
// 计算 scrollLeft 和 scrollTop,使格子中心位于可视区域中心
|
||||
cardLeft.value = cellCenterX - visibleWidth / 2;
|
||||
scrollTop.value = cellCenterY - visibleHeight / 2;
|
||||
|
||||
// 计算网格总宽高
|
||||
const totalWidth = totalColumns * 201;
|
||||
const totalHeight = totalRows * 167;
|
||||
|
||||
// 限制 scrollLeft 和 scrollTop 在有效范围内
|
||||
cardLeft.value = Math.max(0, Math.min(cardLeft.value, totalWidth - visibleWidth)) / 2;
|
||||
// scrollTop.value = 0
|
||||
scrollTop.value = Math.max(0, Math.min(scrollTop.value, totalHeight - visibleHeight)) / 2;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
|
|
@ -137,7 +137,8 @@
|
|||
method: 'GET',
|
||||
dataType:'json',
|
||||
success: (res) => {
|
||||
console.log("?????",res.data.code)
|
||||
// console.log("?????",res.data.code)
|
||||
// this.$emit('chuandinew',this.updated2version)
|
||||
if(res.statusCode===404){
|
||||
return
|
||||
}
|
||||
|
@ -154,10 +155,10 @@
|
|||
that.size = res.data.data.size;
|
||||
that.getnewbanben();
|
||||
}else{
|
||||
// if(that.noticeflag){
|
||||
// //通知父组件,当前版为最新版本
|
||||
// that.$emit("showupdateTips",0)
|
||||
// }
|
||||
if(that.noticeflag){
|
||||
//通知父组件,当前版为最新版本
|
||||
that.$emit("showupdateTips",0)
|
||||
}
|
||||
}
|
||||
}else{
|
||||
uni.showToast({
|
||||
|
|
21
main.js
|
@ -9,19 +9,24 @@ import './uni.promisify.adaptor'
|
|||
Vue.config.productionTip = false
|
||||
App.mpType = 'app'
|
||||
const app = new Vue({
|
||||
...App
|
||||
...App
|
||||
})
|
||||
app.$mount()
|
||||
// #endif
|
||||
|
||||
// #ifdef VUE3
|
||||
import { createSSRApp } from 'vue'
|
||||
import {
|
||||
createSSRApp
|
||||
} from 'vue'
|
||||
import donghua from '@/component/public/donghua.vue'
|
||||
export function createApp() {
|
||||
const app = createSSRApp(App)
|
||||
|
||||
// 使用 uView UI
|
||||
app.use(uView)
|
||||
|
||||
return { app }
|
||||
const app = createSSRApp(App)
|
||||
|
||||
// 使用 uView UI
|
||||
app.use(uView)
|
||||
app.component('donghua', donghua)
|
||||
return {
|
||||
app
|
||||
}
|
||||
}
|
||||
// #endif
|
|
@ -2,8 +2,8 @@
|
|||
"name" : "护理单元",
|
||||
"appid" : "__UNI__FB2D473",
|
||||
"description" : "护理单元",
|
||||
"versionName" : "1.3.0",
|
||||
"versionCode" : 130,
|
||||
"versionName" : "1.3.4",
|
||||
"versionCode" : 134,
|
||||
"transformPx" : false,
|
||||
/* 5+App特有相关 */
|
||||
"app-plus" : {
|
||||
|
|
|
@ -24,6 +24,13 @@
|
|||
"navigationStyle": "custom"
|
||||
}
|
||||
|
||||
},
|
||||
{
|
||||
"path": "pages/NursingNew/index",
|
||||
"style": {
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
|
||||
},
|
||||
// 仓储
|
||||
{
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
// 引入 request 文件
|
||||
import request from '@/request/index.js'
|
||||
|
||||
// 以下 api 为博主项目示例,实际与项目相匹配
|
||||
|
||||
//修改密码
|
||||
export const updatePassword = (form) => {
|
||||
return request({
|
||||
url: `${uni.getStorageSync('serverUrl')}/sys/user/updatePassword`,
|
||||
method: 'put',
|
||||
data: {
|
||||
username: form.username,
|
||||
oldpassword: form.oldpassword,
|
||||
password: form.password,
|
||||
confirmpassword: form.confirmpassword,
|
||||
}
|
||||
})
|
||||
}
|
|
@ -1,39 +1,6 @@
|
|||
<template>
|
||||
<view :class="darkFans?`darkbackgroundContainer`:`backgroundContainer`">
|
||||
<!-- <view class="index-title">
|
||||
<view class="index-title-left">
|
||||
<image class="index-title-left-img" src="/static/index/customer.png" />
|
||||
<view class="index-title-left-font">
|
||||
{{name}}
|
||||
</view>
|
||||
<view class="index-title-left-wel">
|
||||
长春市朝阳区久泰开运养老服务有限公司
|
||||
</view>
|
||||
<view class="index-title-left-weight">
|
||||
{{name}}
|
||||
</view>
|
||||
<view class="">
|
||||
长春市朝阳区久泰开运养老服务有限公司
|
||||
</view>
|
||||
</view>
|
||||
<view class="index-title-right">
|
||||
长春市朝阳区久泰开运养老服务有限公司
|
||||
<view v-for="(item,index) in ballList" :key="index">
|
||||
<view class="ball-bgc" @click="jumpToIndex(index)">
|
||||
<image class="ball-img" :src="item.url" />
|
||||
</view>
|
||||
</view>
|
||||
<view v-for="(item,index) in iconTop" :key="index">
|
||||
<view class="top-card" @click="clicktopright(index)">
|
||||
<image class="top-card-img" :src="item.url" />
|
||||
<view class="top-card-font">
|
||||
{{ item.name }}
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="index-content">
|
||||
<view class="index-content-leftMenus">
|
||||
<view class="index-title-title">
|
||||
|
@ -60,13 +27,12 @@
|
|||
</view>
|
||||
</view>
|
||||
<!-- 首页 -->
|
||||
|
||||
<fuwu :isShow="menuIndex == 0" />
|
||||
<settings :isShow="menuIndex == 5" @jump="jumpToIndex" />
|
||||
<storeroomindex :isShow="menuIndex == -1" @nav="navMenu" />
|
||||
<leidaindex :isShow="menuIndex==-2" />
|
||||
<saoma :isShow="menuIndex==-3" />
|
||||
<put :isShow="menuIndex==-4" />
|
||||
<!-- <storeroomorders :isShow="menuIndex===1" /> -->
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
@ -77,12 +43,12 @@
|
|||
import { onLoad } from '@dcloudio/uni-app';
|
||||
// 首页
|
||||
import fuwu from "@/component/Initialization/fuwu.vue";
|
||||
//设置
|
||||
import settings from "@/component/Initialization/settings.vue";
|
||||
import storeroomindex from "@/component/Initialization/fuwu.vue";
|
||||
import leidaindex from "@/component/Initialization/leida.vue";
|
||||
import saoma from "@/component/Initialization/saoma.vue";
|
||||
import put from "@/component/Initialization/input.vue";
|
||||
// 订单页
|
||||
// import storeroomorders from "@/component/storeroom/orders.vue"
|
||||
// 暗黑模式
|
||||
const darkFans = ref(false);
|
||||
const menuIndex = ref(0);
|
||||
|
@ -120,10 +86,6 @@
|
|||
}
|
||||
// 变更菜单
|
||||
const changeMenu = (index : number) => {
|
||||
// if (index === 5) {
|
||||
// // uni.navigateBack()
|
||||
// return
|
||||
// }
|
||||
menuIndex.value = index;
|
||||
};
|
||||
const clicktopright = (index : number) => {
|
||||
|
|
|
@ -54,9 +54,9 @@
|
|||
:darkFans="darkFans" v-show="menuIndex==1&&!isOld" @darkchange="darkchange" @savename="openname"
|
||||
@saveruler="openruler" @changefangkuang="changefangkuang" @cleanname="closename" @changeold="isOldchange" />
|
||||
<!-- 新表格 -->
|
||||
<specialruler ref="rulernew" :isold="isOld===1" :liang="indexNumber" :isshow="menuIndexshowsecond" :canmove="canmove"
|
||||
<!-- <specialruler ref="rulernew" :isold="isOld===1" :liang="indexNumber" :isshow="menuIndexshowsecond" :canmove="canmove"
|
||||
:darkFans="darkFans" v-show="menuIndex==1&&isOld===1" @darkchange="darkchange" @savename="openname"
|
||||
@saveruler="openruler" @changefangkuang="changefangkuang" @cleanname="closename" @changeold="isOldchange" />
|
||||
@saveruler="openruler" @changefangkuang="changefangkuang" @cleanname="closename" @changeold="isOldchange" /> -->
|
||||
<!-- 新表格 -->
|
||||
<rightItemssecondrelnew ref="rulernew" :isold="isOld===2" :liang="indexNumber" :isshow="menuIndexshowsecond" :canmove="canmove"
|
||||
:darkFans="darkFans" v-show="menuIndex==1&&isOld===2" @darkchange="darkchange" @savename="openname"
|
||||
|
@ -69,7 +69,7 @@
|
|||
import type { Link } from "./index";
|
||||
import rightItemsfirst from "../../component/rightItemsindex/index.vue"
|
||||
import rightItemssecond from "../../component/rightItemssecond/index.vue"
|
||||
import specialruler from "../../component/specialruler/index.vue"
|
||||
// import specialruler from "../../component/specialruler/index.vue"
|
||||
import rightItemssecondrelnew from "../../component/rightItemssecondrelnew/index.vue"
|
||||
import { onShow } from '@dcloudio/uni-app';
|
||||
|
||||
|
|
|
@ -0,0 +1,773 @@
|
|||
<template>
|
||||
<view class="index-content-other" v-show="isShow" :style="transition?{opacity: `1`}:{opacity: `0`}">
|
||||
<view class="right-container-title-nav">
|
||||
<text style="margin-left: 30rpx;">
|
||||
NUID:2508000001
|
||||
</text>
|
||||
<text class="new-weight">
|
||||
护理单元01
|
||||
</text>
|
||||
<view class="right-icons">
|
||||
<view class="right-container-tem">
|
||||
<image class="right-container-tem-img" src="/static/index/newindex/wendu/0.png" />
|
||||
<text class="right-container-tem-text">23°C</text>
|
||||
<image class="right-container-tem-img" src="/static/index/newindex/wendu/1.png" />
|
||||
<text class="right-container-tem-text">39%</text>
|
||||
</view>
|
||||
|
||||
<image class="right-icons-img" :src="`/static/index/undericons/man.png`" />
|
||||
<view>{{name}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="scroll-vi">
|
||||
<view class="zhezhao-left"></view>
|
||||
<view class="zhezhao-right"></view>
|
||||
<scroll-view scroll-x="true" style="width: 100%;height: 100%;">
|
||||
<view style="display: flex;align-items: center;">
|
||||
<view style="width: 100rpx;">
|
||||
|
||||
</view>
|
||||
<view v-for="(item,index) in typeArray" :key="index" class="menu" @click="typeNow=index;">
|
||||
|
||||
<donghua :links="item.url" :playing="typeNow===index" />
|
||||
<text class="menu-font" :class="{ zoom: typeNow===index }"
|
||||
:style="typeNow===index?{color:`#008FF5`}:{}">
|
||||
{{item.name}}
|
||||
</text>
|
||||
</view>
|
||||
<view style="width: 100rpx;">
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
|
||||
|
||||
<view class="photo-father">
|
||||
<view class="juzhong" style="margin-left: -50rpx;">
|
||||
<donghua :width="`1500rpx`" :height="`1000rpx`" :links="blueArray" :playing="photoplay" :loop="true"
|
||||
:interval="120" />
|
||||
</view>
|
||||
<view class="juzhong" style="z-index: 2;margin-top: 120rpx;">
|
||||
<donghua :width="`800rpx`" :height="`500rpx`" :links="bluesmallArray" :playing="photoplay" :loop="true"
|
||||
:interval="120" />
|
||||
</view>
|
||||
<view class="weight-time">
|
||||
10:00 - 10:10
|
||||
<view class="pao-father">
|
||||
<image class="pao-img" :src="`/static/index/newindex/states/pao.png`" />
|
||||
<view style="z-index: 1;">
|
||||
待执行
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
<image class="big-img" :src="`/static/index/newindex/wendu/2.png`" />
|
||||
<view style="display: flex;align-items: center;margin-top: 5rpx;">
|
||||
<view class="server-name">
|
||||
一级压疮防护
|
||||
</view>
|
||||
<!-- <view class="server-bgc">
|
||||
<image class="bgc-img" :src="`/static/index/newindex/wendu/bgc.png`" />
|
||||
<view class="bgc-font">
|
||||
日常防护
|
||||
</view>
|
||||
</view> -->
|
||||
</view>
|
||||
<view style="display: flex;align-items: center;margin-top: 40rpx;">
|
||||
<image class="down-img" :src="`/static/index/newindex/states/left.png`" />
|
||||
<view v-for="(item,index) in downStates" :key="index" class="states-father">
|
||||
<image class="icon-img" :src="item.url" />
|
||||
<view style="margin-top: 15rpx;margin-left: 10rpx;">
|
||||
{{item.name}}
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<image class="down-img" :src="`/static/index/newindex/states/right.png`" />
|
||||
</view>
|
||||
<view style="display: flex;margin-top: 60rpx;">
|
||||
<view class="start-button">
|
||||
开始服务
|
||||
</view>
|
||||
<view class="end-button">
|
||||
结束服务
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
||||
|
||||
<!-- <view class="abs-time">
|
||||
<view class="big-time">
|
||||
{{currentTime}}
|
||||
</view>
|
||||
<view class="date">
|
||||
<view class="">
|
||||
{{fullDate}}
|
||||
</view>
|
||||
<view class="">
|
||||
{{weekDay}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="right-container-tem">
|
||||
<image class="right-container-tem-img" src="/static/index/newindex/wendu/0.png" />
|
||||
<text class="right-container-tem-text">23°C</text>
|
||||
<image class="right-container-tem-img" src="/static/index/newindex/wendu/1.png" />
|
||||
<text class="right-container-tem-text">39%</text>
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="left-menu">
|
||||
<view v-for="(item,index) in leftArray" :key="index" class="left-ball">
|
||||
<image class="left-menu-img" :src="item" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="right-menu">
|
||||
<view class="zhezhao-top" @click="scrollTop -= 115"></view>
|
||||
<view class="zhezhao-bottom" @click="scrollTop += 115"></view>
|
||||
<image class="top-img" :src="`/static/index/newindex/rightmenu/top.png`" @click="scrollTop>0? scrollTop -= 115:scrollTop=0" />
|
||||
<scroll-view scroll-y="true" class="right-scroll" :scroll-top="scrollTop" @scroll="onScroll">
|
||||
<view style="height: 30rpx;">
|
||||
|
||||
</view>
|
||||
<view v-for="(item,index) in rightMenu" class="white-circle">
|
||||
<image class="right-menu-img" :src="item.url" />
|
||||
<view class="right-menu-name">
|
||||
{{ item.name }}
|
||||
</view>
|
||||
|
||||
</view>
|
||||
<view style="height: 30rpx;">
|
||||
|
||||
</view>
|
||||
</scroll-view>
|
||||
<image class="top-img" :src="`/static/index/newindex/rightmenu/bottom.png`" @click="scrollTop > (55* rightMenu.length) ? scrollTop = (55* rightMenu.length) : scrollTop += 115 "/>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, onBeforeUnmount, computed, nextTick, defineProps, watch } from 'vue';
|
||||
|
||||
const props = defineProps({
|
||||
isShow: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
},
|
||||
});
|
||||
|
||||
const typeNow = ref(-1);
|
||||
const photoplay = ref(false)
|
||||
const downArray = ref()
|
||||
const scrollTop = ref(0);
|
||||
function onScroll(e) {
|
||||
// e.detail.scrollTop 就是当前滚动距离
|
||||
scrollTop.value = e.detail.scrollTop
|
||||
}
|
||||
// 通用的生成函数
|
||||
function genPaths(base, prefix, count, ext = 'png', startIndex = 0, pad = false) {
|
||||
return Array.from({ length: count }, (_, i) => {
|
||||
const idx = pad
|
||||
? String(i + startIndex).padStart(2, '0')
|
||||
: i + startIndex
|
||||
return `${base}/${prefix}${idx}.${ext}`
|
||||
})
|
||||
}
|
||||
const rightMenu = ref([
|
||||
{
|
||||
url: "/static/index/newindex/rightmenu/0.png",
|
||||
name: '重点追踪'
|
||||
},
|
||||
{
|
||||
url: "/static/index/newindex/rightmenu/1.png",
|
||||
name: '转单执行'
|
||||
},
|
||||
{
|
||||
url: "/static/index/newindex/rightmenu/2.png",
|
||||
name: '协助执行'
|
||||
},
|
||||
// {
|
||||
// url: "/static/index/newindex/rightmenu/0.png",
|
||||
// name: '重点追踪'
|
||||
// },
|
||||
// {
|
||||
// url: "/static/index/newindex/rightmenu/1.png",
|
||||
// name: '转单执行'
|
||||
// },
|
||||
// {
|
||||
// url: "/static/index/newindex/rightmenu/2.png",
|
||||
// name: '协助执行'
|
||||
// },
|
||||
])
|
||||
const downStates = ref([
|
||||
{
|
||||
url: "/static/index/newindex/states/0.png",
|
||||
name: '狂躁'
|
||||
},
|
||||
{
|
||||
url: "/static/index/newindex/states/1.png",
|
||||
name: '易怒'
|
||||
},
|
||||
{
|
||||
url: "/static/index/newindex/states/2.png",
|
||||
name: '大体重'
|
||||
},
|
||||
{
|
||||
url: "/static/index/newindex/states/3.png",
|
||||
name: '四肢'
|
||||
},
|
||||
])
|
||||
const leftArray = ref(genPaths(
|
||||
'/static/index/newindex/leftmenu',
|
||||
'',
|
||||
3, // 张数
|
||||
'png',
|
||||
0, // 起始索引
|
||||
false // 不补零
|
||||
))
|
||||
const huliArray = ref(genPaths(
|
||||
'/static/index/newindex/huli',
|
||||
'care',
|
||||
9, // 张数
|
||||
'png',
|
||||
0, // 起始索引
|
||||
false // 不补零
|
||||
))
|
||||
const base = genPaths(
|
||||
'/static/index/newindex/curve',
|
||||
'curve_',
|
||||
9,
|
||||
'png',
|
||||
1,
|
||||
false
|
||||
)
|
||||
const blueArray = ref([
|
||||
...base,
|
||||
...[...base].reverse() // 先拷贝一份再反转,避免修改原 base
|
||||
])
|
||||
const basesmall = genPaths(
|
||||
'/static/index/newindex/curve',
|
||||
'breathe_',
|
||||
9,
|
||||
'png',
|
||||
1,
|
||||
false
|
||||
)
|
||||
const bluesmallArray = ref([
|
||||
...basesmall,
|
||||
...[...basesmall].reverse() // 先拷贝一份再反转,避免修改原 base
|
||||
])
|
||||
const typeArray = ref([
|
||||
{
|
||||
url: genPaths(
|
||||
'/static/index/newindex/huli',
|
||||
'care',
|
||||
8, // 张数
|
||||
'png',
|
||||
0, // 起始索引为 1
|
||||
false // 不补零
|
||||
), name: '护理类'
|
||||
},
|
||||
{
|
||||
|
||||
url: genPaths(
|
||||
'/static/index/newindex/yiliao',
|
||||
'health_',
|
||||
9, // 张数
|
||||
'png',
|
||||
1, // 起始索引为 1
|
||||
false // 不补零
|
||||
), name: '医疗类'
|
||||
|
||||
},
|
||||
{
|
||||
|
||||
url: genPaths(
|
||||
'/static/index/newindex/kufang',
|
||||
'storeroom_',
|
||||
11, // 张数
|
||||
'png',
|
||||
1, // 起始索引为 1
|
||||
false // 不补零
|
||||
), name: '库房类'
|
||||
|
||||
},
|
||||
{
|
||||
|
||||
url: genPaths(
|
||||
'/static/index/newindex/baojie',
|
||||
'clean_',
|
||||
12, // 张数
|
||||
'png',
|
||||
1, // 起始索引为 1
|
||||
false // 不补零
|
||||
), name: '保洁类'
|
||||
|
||||
},
|
||||
{
|
||||
|
||||
url: genPaths(
|
||||
'/static/index/newindex/xiaoxi',
|
||||
'wash_',
|
||||
14, // 张数
|
||||
'png',
|
||||
1, // 起始索引为 1
|
||||
false // 不补零
|
||||
), name: '消洗类'
|
||||
|
||||
},
|
||||
{
|
||||
|
||||
url: genPaths(
|
||||
'/static/index/newindex/kangfu',
|
||||
'recovery_',
|
||||
6, // 张数
|
||||
'png',
|
||||
1, // 起始索引为 1
|
||||
false // 不补零
|
||||
), name: '康复类'
|
||||
|
||||
},
|
||||
|
||||
])
|
||||
|
||||
// 使用watch监听isShow变化
|
||||
const transition = ref(true);
|
||||
|
||||
|
||||
watch(
|
||||
() => props.isShow,
|
||||
(newVal, oldVal) => {
|
||||
// 当旧值为false,新值为true时延迟0.2秒调用方法
|
||||
if (!oldVal && newVal) {
|
||||
transition.value = false;
|
||||
// photoplay.value = false;
|
||||
setTimeout(() => {
|
||||
transition.value = true;
|
||||
// photoplay.value = true;
|
||||
}, 50)
|
||||
} else {
|
||||
// photoplay.value = false;
|
||||
}
|
||||
}
|
||||
)
|
||||
const name = ref("");
|
||||
|
||||
// 定义响应式数据现在时间
|
||||
// const currentTime = ref('');
|
||||
// const fullDate = ref('');
|
||||
// const weekDay = ref('');
|
||||
// let timerId = null;
|
||||
// // 更新时间、日期和星期的方法
|
||||
// const updateTime = () => {
|
||||
// const now = new Date();
|
||||
|
||||
// // 获取当前时间的时分
|
||||
// const hours = now.getHours().toString().padStart(2, '0');
|
||||
// const minutes = now.getMinutes().toString().padStart(2, '0');
|
||||
// currentTime.value = `${hours}:${minutes}`;
|
||||
|
||||
// // 获取完整的日期(年/月/日)
|
||||
// const year = now.getFullYear();
|
||||
// const month = (now.getMonth() + 1).toString().padStart(2, '0');
|
||||
// const day = now.getDate().toString().padStart(2, '0');
|
||||
// fullDate.value = `${month}-${day}`;
|
||||
|
||||
// // 获取星期几
|
||||
// const weekDays = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
|
||||
// const week = weekDays[now.getDay()];
|
||||
// weekDay.value = week;
|
||||
// };
|
||||
onMounted(() => {
|
||||
name.value = uni.getStorageSync('realname')
|
||||
typeNow.value = 0;
|
||||
// timerId = updateTime();
|
||||
// // 每秒更新一次时间
|
||||
// setInterval(updateTime, 1000);
|
||||
photoplay.value = true;
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.index-content-other {
|
||||
width: calc(100% - 310rpx);
|
||||
height: 100%;
|
||||
transition: opacity 1s ease;
|
||||
position: relative;
|
||||
|
||||
.abs-time {
|
||||
position: absolute;
|
||||
right: 20rpx;
|
||||
top: 150rpx;
|
||||
// width: 300rpx;
|
||||
|
||||
.big-time {
|
||||
font-size: 90rpx;
|
||||
font-weight: 600;
|
||||
width: 100%;
|
||||
justify-content: center;
|
||||
// padding: 0 40rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.right-container-title-nav {
|
||||
margin-top: 60rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 60rpx;
|
||||
position: relative;
|
||||
font-size: 28rpx;
|
||||
|
||||
.new-weight {
|
||||
margin-left: 30rpx;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.right-icons {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
// transform: translateY(-50%);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 60rpx;
|
||||
}
|
||||
|
||||
.right-icons-img {
|
||||
width: 60rpx;
|
||||
height: 60rpx;
|
||||
margin-left: 20rpx;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.scroll-vi {
|
||||
height: 100rpx;
|
||||
width: 95%;
|
||||
margin-left: 20rpx;
|
||||
margin-top: 30rpx;
|
||||
position: relative;
|
||||
margin-bottom: 80rpx;
|
||||
|
||||
.menu {
|
||||
flex: 0 0 auto; // 👈 关键点
|
||||
height: 100rpx;
|
||||
width: 220rpx;
|
||||
border-radius: 50rpx;
|
||||
// margin: 45rpx auto;
|
||||
margin-right: 20rpx;
|
||||
background-color: #fff;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding-top: 9rpx;
|
||||
|
||||
.menu-img {
|
||||
width: 55rpx;
|
||||
height: 55rpx;
|
||||
margin-right: 15rpx;
|
||||
}
|
||||
|
||||
.menu-font {
|
||||
margin-top: 18rpx;
|
||||
font-size: 25rpx;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.date {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
margin-top: 10rpx;
|
||||
}
|
||||
|
||||
.right-container-tem {
|
||||
display: flex;
|
||||
// justify-content: space-around;
|
||||
// margin-top: 30rpx;
|
||||
// margin-bottom: 20rpx;
|
||||
|
||||
.right-container-tem-text {
|
||||
font-size: 30rpx;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
|
||||
.right-container-tem-img {
|
||||
width: 38rpx;
|
||||
height: 38rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.photo-father {
|
||||
width:100%;
|
||||
height: 1200rpx;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
margin-top: 0rpx;
|
||||
}
|
||||
|
||||
.juzhong {
|
||||
position: absolute;
|
||||
top: 0%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -10%);
|
||||
|
||||
}
|
||||
|
||||
.weight-time {
|
||||
font-weight: 800;
|
||||
font-size: 100rpx;
|
||||
margin-bottom: 0rpx;
|
||||
position: relative;
|
||||
margin-left: -50rpx;
|
||||
// z-index: 3;
|
||||
}
|
||||
|
||||
.big-img {
|
||||
width: 1000rpx;
|
||||
height: 700rpx;
|
||||
}
|
||||
|
||||
.server-name {
|
||||
font-size: 45rpx;
|
||||
margin-right: 10rpx;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.server-bgc {
|
||||
width: 160rpx;
|
||||
height: 50rpx;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
|
||||
}
|
||||
|
||||
.bgc-img {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.bgc-font {
|
||||
color: #fff;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.down-img {
|
||||
width: 35rpx;
|
||||
height: 35rpx;
|
||||
}
|
||||
|
||||
.states-father {
|
||||
display: flex;
|
||||
margin: 0 20rpx;
|
||||
}
|
||||
|
||||
.icon-img {
|
||||
width: 55rpx;
|
||||
height: 55rpx;
|
||||
}
|
||||
|
||||
.start-button {
|
||||
width: 240rpx;
|
||||
height: 90rpx;
|
||||
background: linear-gradient(to bottom, #009DEF, #0076FF);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-radius: 40rpx;
|
||||
color: #fff;
|
||||
font-size: 30rpx;
|
||||
margin-right: 40rpx;
|
||||
}
|
||||
|
||||
.end-button {
|
||||
width: 240rpx;
|
||||
height: 90rpx;
|
||||
background: linear-gradient(to bottom, #FFFFFF, #C8D0D9);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-radius: 40rpx;
|
||||
// color: #fff;
|
||||
font-size: 30rpx;
|
||||
}
|
||||
|
||||
.pao-father {
|
||||
position: absolute;
|
||||
top: 25rpx;
|
||||
right: -110rpx;
|
||||
font-size: 22rpx;
|
||||
width: 100rpx;
|
||||
height: 50rpx;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
color: #FFFFFF;
|
||||
|
||||
.pao-img {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.left-menu {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 150rpx;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
|
||||
.zoom {
|
||||
transform: scale(1.2);
|
||||
transform-origin: bottom left;
|
||||
transition: transform 1s ease;
|
||||
}
|
||||
|
||||
.left-ball {
|
||||
|
||||
width: 100rpx;
|
||||
height: 100rpx;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin: 30rpx 0;
|
||||
background-color: #fff;
|
||||
|
||||
.left-menu-img {
|
||||
width: 50rpx;
|
||||
height: 50rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.right-menu {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
right: 150rpx;
|
||||
transform: translateY(-50%);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
width: 140rpx;
|
||||
|
||||
.top-img {
|
||||
width: 140rpx;
|
||||
height: 110rpx;
|
||||
padding: 0 50rpx;
|
||||
}
|
||||
|
||||
// .top-img ::before {
|
||||
// content: "";
|
||||
// position: absolute;
|
||||
// top: 0;
|
||||
// left: 0;
|
||||
// width: 100%;
|
||||
// height: 100%;
|
||||
// background: linear-gradient(to bottom, rgba(255, 255, 255, 0.8) 0%, rgba(255, 255, 255, 0) 100%);
|
||||
// filter: blur(10px);
|
||||
// /* 模糊强度 */
|
||||
// z-index: 1;
|
||||
// }
|
||||
|
||||
.right-scroll {
|
||||
width: 100%;
|
||||
height: 750rpx;
|
||||
// background-color: red;
|
||||
}
|
||||
|
||||
.white-circle {
|
||||
width: 80%;
|
||||
height: 200rpx;
|
||||
margin: 20rpx auto;
|
||||
border-radius: 60rpx;
|
||||
background-color: #fff;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
|
||||
.right-menu-img {
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
}
|
||||
|
||||
.right-menu-name {
|
||||
width: 80rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.zhezhao-top {
|
||||
position: absolute;
|
||||
top: 105rpx;
|
||||
left: 0%;
|
||||
width: 120%;
|
||||
height: 120rpx;
|
||||
background: linear-gradient(to bottom,
|
||||
rgba(239, 240, 244, 1) 0%,
|
||||
/* #eff0f4 全不透明 */
|
||||
rgba(239, 240, 244, 0) 100%
|
||||
/* #eff0f4 完全透明 */
|
||||
);
|
||||
z-index: 4;
|
||||
}
|
||||
.zhezhao-bottom {
|
||||
position: absolute;
|
||||
bottom: 105rpx;
|
||||
left: 0%;
|
||||
width: 120%;
|
||||
height: 120rpx;
|
||||
background: linear-gradient(to top,
|
||||
rgba(239, 240, 244, 1) 0%,
|
||||
/* #eff0f4 全不透明 */
|
||||
rgba(239, 240, 244, 0) 100%
|
||||
/* #eff0f4 完全透明 */
|
||||
);
|
||||
z-index: 4;
|
||||
}
|
||||
.zhezhao-left{
|
||||
position: absolute;
|
||||
top: 0rpx;
|
||||
left: 0%;
|
||||
height: 100%;
|
||||
width: 120rpx;
|
||||
background: linear-gradient(to right,
|
||||
rgba(239, 240, 244, 1) 0%,
|
||||
/* #eff0f4 全不透明 */
|
||||
rgba(239, 240, 244, 0) 100%
|
||||
/* #eff0f4 完全透明 */
|
||||
);
|
||||
z-index: 4;
|
||||
}
|
||||
.zhezhao-right{
|
||||
position: absolute;
|
||||
top: 0rpx;
|
||||
right: 0%;
|
||||
height: 100%;
|
||||
width: 120rpx;
|
||||
background: linear-gradient(to left,
|
||||
rgba(239, 240, 244, 1) 0%,
|
||||
/* #eff0f4 全不透明 */
|
||||
rgba(239, 240, 244, 0) 100%
|
||||
/* #eff0f4 完全透明 */
|
||||
);
|
||||
z-index: 4;
|
||||
}
|
||||
</style>
|
|
@ -2,7 +2,7 @@
|
|||
display: flex;
|
||||
/* justify-content: center; */
|
||||
width: 100%;
|
||||
height: calc(100% - 400rpx);
|
||||
/* height: calc(100% - 400rpx); */
|
||||
|
||||
.scroll-x {
|
||||
height: 100%;
|
||||
|
@ -67,7 +67,7 @@
|
|||
position: absolute;
|
||||
top: 0rpx;
|
||||
right: 0rpx;
|
||||
width: 50rpx;
|
||||
width: 55rpx;
|
||||
height: 45rpx;
|
||||
}
|
||||
|
||||
|
@ -454,19 +454,19 @@
|
|||
|
||||
.super-card-container {
|
||||
/* 设置背景图和白色背景 */
|
||||
background: url("/static/index/whitemountain.png") center/cover, rgba(255, 255, 255, 0.5);
|
||||
/* background: url("/static/index/whitemountain.png") center/cover, rgba(255, 255, 255, 0.5); */
|
||||
/* 使用 screen 混合模式,让图像与白色混合变淡 */
|
||||
background-blend-mode: screen;
|
||||
isolation: isolate;
|
||||
overflow: hidden;
|
||||
margin-left: 120rpx;
|
||||
margin-left: 60rpx;
|
||||
width: 1405rpx;
|
||||
height: 1190rpx;
|
||||
/* border-top-right-radius: 20rpx;
|
||||
border-bottom-right-radius: 20rpx; */
|
||||
border: 2rpx solid #fff;
|
||||
/* border: 2rpx solid #fff; */
|
||||
border-left: 0;
|
||||
box-shadow: 10rpx 10rpx 20px rgba(0, 0, 0, 0.1);
|
||||
/* box-shadow: 10rpx 10rpx 20px rgba(0, 0, 0, 0.1); */
|
||||
position: relative;
|
||||
}
|
||||
|
||||
|
@ -476,9 +476,9 @@
|
|||
align-items: center;
|
||||
// background-color: rgb(233, 239, 257);
|
||||
height: 80rpx;
|
||||
width: 234rpx;
|
||||
width: 201rpx;
|
||||
border-right: 1rpx solid transparent;
|
||||
border-image: repeating-linear-gradient(180deg, #0184db 0px, #0184db 6rpx, transparent 6rpx, transparent 12rpx) 1;
|
||||
/* border-image: repeating-linear-gradient(180deg, #0184db 0px, #0184db 6rpx, transparent 6rpx, transparent 12rpx) 1; */
|
||||
font-weight: 700;
|
||||
z-index: -1;
|
||||
}
|
||||
|
@ -487,7 +487,7 @@
|
|||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 234rpx;
|
||||
width: 201rpx;
|
||||
flex-direction: column;
|
||||
border-right: 1rpx solid transparent;
|
||||
border-image: repeating-linear-gradient(180deg, #0184db 0px, #0184db 6rpx, transparent 6rpx, transparent 12rpx) 1;
|
||||
|
@ -499,8 +499,11 @@
|
|||
}
|
||||
|
||||
.title-time-font-rel {
|
||||
font-size: 30rpx;
|
||||
margin-top: -5rpx;
|
||||
font-size: 25rpx;
|
||||
margin-bottom: 5rpx;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.title-time-items {
|
||||
|
@ -520,7 +523,7 @@
|
|||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 209rpx;
|
||||
height: 167rpx;
|
||||
width: calc(100%);
|
||||
transition: all 0.8s;
|
||||
border-image: repeating-linear-gradient(90deg, #0184db 0px, #0184db 6rpx, transparent 6rpx, transparent 12rpx) 1;
|
||||
|
@ -530,7 +533,7 @@
|
|||
}
|
||||
|
||||
.right-container {
|
||||
width: calc(100% - 235rpx);
|
||||
width: calc(100% - 310rpx);
|
||||
height: 100vh;
|
||||
transition: opacity 1s ease;
|
||||
position: relative;
|
||||
|
@ -569,17 +572,7 @@
|
|||
display: flex;
|
||||
|
||||
.doctorsay-container-container {
|
||||
border: 2rpx solid #fff;
|
||||
width: 2050rpx;
|
||||
height: 1340rpx;
|
||||
/* 设置背景图和白色背景 */
|
||||
background: url("/static/index/lightbgcnew.png") center/cover, rgba(255, 255, 255, 0.3);
|
||||
backdrop-filter: blur(20rpx);
|
||||
/* 使用 screen 混合模式,让图像与白色混合变淡 */
|
||||
background-blend-mode: screen;
|
||||
border-radius: 30rpx;
|
||||
box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.1);
|
||||
/* 右下角阴影 */
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
|
||||
.doctorsay-container-title {
|
||||
|
@ -589,105 +582,8 @@
|
|||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
.doctorsay-container-right {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-right: 50rpx;
|
||||
/* width: 550rpx; */
|
||||
|
||||
.doctorsay-container-juzhen {
|
||||
background: linear-gradient(to right bottom, #00c9ff, #0076ff);
|
||||
color: #fff;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 10rpx 20rpx;
|
||||
border-radius: 20rpx;
|
||||
font-size: 27rpx;
|
||||
margin-right: 10rpx;
|
||||
}
|
||||
|
||||
.doctorsay-container-button-father {
|
||||
display: flex;
|
||||
|
||||
.doctorsay-container-button-target {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: #3FA9F5;
|
||||
color: #fff;
|
||||
width: 140rpx;
|
||||
height: 60rpx;
|
||||
margin-right: 20rpx;
|
||||
font-size: 28rpx;
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
|
||||
.doctorsay-container-button {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
background-color: #fff;
|
||||
width: 140rpx;
|
||||
height: 60rpx;
|
||||
margin-right: 20rpx;
|
||||
font-size: 28rpx;
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.doctorsay-container-right-kuai-cheng {
|
||||
background-color: #FFDBA1;
|
||||
height: 35rpx;
|
||||
width: 35rpx;
|
||||
border-radius: 7rpx;
|
||||
}
|
||||
|
||||
.doctorsay-container-right-kuai-zi {
|
||||
background-color: #7B61FF;
|
||||
height: 35rpx;
|
||||
width: 35rpx;
|
||||
border-radius: 7rpx;
|
||||
}
|
||||
|
||||
.doctorsay-container-kuai-font {
|
||||
font-size: 32rpx;
|
||||
margin-left: 10rpx;
|
||||
margin-right: 25rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.doctorsay-container-left {
|
||||
display: flex;
|
||||
|
||||
.doctorsay-container-share {
|
||||
background: linear-gradient(to right bottom, #00c9ff, #0076ff);
|
||||
color: #fff;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 10rpx 20rpx;
|
||||
border-radius: 20rpx;
|
||||
font-size: 27rpx;
|
||||
margin-left: 20rpx;
|
||||
margin-top: -3rpx;
|
||||
}
|
||||
|
||||
.doctorsay-container-left-gun {
|
||||
margin-top: 7rpx;
|
||||
margin-left: 40rpx;
|
||||
margin-right: 20rpx;
|
||||
width: 13rpx;
|
||||
height: 40rpx;
|
||||
background: linear-gradient(to bottom, #04BCED, #0160CE);
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
|
||||
.doctorsay-container-left-font {
|
||||
font-size: 38rpx;
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -695,9 +591,9 @@
|
|||
}
|
||||
|
||||
.right-container-title-nav {
|
||||
margin-top: 75rpx;
|
||||
/* margin-top: 75rpx; */
|
||||
margin-bottom: 20rpx;
|
||||
margin-left: 20rpx;
|
||||
/* margin-left: 20rpx; */
|
||||
|
||||
.right-icons {
|
||||
display: flex;
|
||||
|
@ -713,14 +609,6 @@
|
|||
margin-top: -30rpx;
|
||||
}
|
||||
|
||||
.right-icons-font-dark {
|
||||
color: #fff;
|
||||
margin-left: 10rpx;
|
||||
margin-right: 10rpx;
|
||||
font-size: 35rpx;
|
||||
margin-top: -30rpx;
|
||||
}
|
||||
|
||||
.right-icons-img {
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
|
@ -738,19 +626,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
.right-container-title-no {
|
||||
font-size: 35rpx;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
.right-container-title-no-dark {
|
||||
font-size: 35rpx;
|
||||
background: linear-gradient(to bottom, #FFFFFF, #B2C8E2);
|
||||
-webkit-background-clip: text;
|
||||
color: transparent;
|
||||
margin-right: 20rpx;
|
||||
}
|
||||
|
||||
.right-container-title-class {
|
||||
font-size: 35rpx;
|
||||
font-weight: 800;
|
||||
|
@ -765,44 +640,6 @@
|
|||
-webkit-background-clip: text;
|
||||
color: transparent;
|
||||
}
|
||||
|
||||
.right-container-title-class-anhei-button-wrong {
|
||||
float: right;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-radius: 30rpx;
|
||||
margin-right: 15rpx;
|
||||
width: 200rpx;
|
||||
height: 50rpx;
|
||||
background-color: #fff;
|
||||
/* border: 2rpx solid; */
|
||||
|
||||
.right-container-title-class-anhei {
|
||||
font-size: 30rpx;
|
||||
font-weight: 800;
|
||||
/* color: white; */
|
||||
}
|
||||
}
|
||||
|
||||
.right-container-title-class-anhei-button {
|
||||
float: right;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-radius: 30rpx;
|
||||
margin-right: 20rpx;
|
||||
width: 200rpx;
|
||||
height: 50rpx;
|
||||
background: linear-gradient(to right bottom, #00c9ff, #0076ff);
|
||||
/* border: 2rpx solid; */
|
||||
|
||||
.right-container-title-class-anhei {
|
||||
font-size: 30rpx;
|
||||
font-weight: 800;
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -831,8 +668,8 @@
|
|||
z-index: 10;
|
||||
|
||||
.title-time-blue-img {
|
||||
height: 209rpx;
|
||||
width: 230rpx;
|
||||
height: 167rpx;
|
||||
width: 200rpx;
|
||||
}
|
||||
}
|
||||
.time-button-black-spe {
|
||||
|
@ -975,8 +812,8 @@
|
|||
position: absolute;
|
||||
top: -6rpx;
|
||||
right: -4rpx;
|
||||
width: 65rpx;
|
||||
height: 60rpx;
|
||||
width: 55rpx;
|
||||
height: 40rpx;
|
||||
}
|
||||
|
||||
.title-time-zhejiao {
|
||||
|
@ -989,9 +826,9 @@
|
|||
|
||||
.title-time-font {
|
||||
position: absolute;
|
||||
top: 3rpx;
|
||||
top: 0rpx;
|
||||
right: 5rpx;
|
||||
font-size: 20rpx;
|
||||
font-size: 14rpx;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
|
@ -1710,7 +1547,7 @@
|
|||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 209rpx;
|
||||
height: 167rpx;
|
||||
width: calc(100%);
|
||||
border-image: repeating-linear-gradient(90deg, #0184db 0px, #0184db 6rpx, transparent 6rpx, transparent 12rpx) 1;
|
||||
flex-direction: column;
|
||||
|
@ -1727,7 +1564,7 @@
|
|||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
height: 209rpx;
|
||||
height: 167rpx;
|
||||
width: calc(100%);
|
||||
border-image: repeating-linear-gradient(90deg, #0184db 0px, #0184db 6rpx, transparent 6rpx, transparent 12rpx) 1;
|
||||
flex-direction: column;
|
||||
|
@ -1944,8 +1781,8 @@
|
|||
|
||||
.boom-title {
|
||||
position: absolute;
|
||||
top: 105rpx;
|
||||
left: 60rpx;
|
||||
top: 140rpx;
|
||||
left: 0rpx;
|
||||
width: 60rpx;
|
||||
height: 80rpx;
|
||||
background-color: #c4dbf4;
|
||||
|
@ -1977,14 +1814,14 @@
|
|||
|
||||
.boom-father {
|
||||
position: absolute;
|
||||
top: 186rpx;
|
||||
left: 60rpx;
|
||||
top: 220rpx;
|
||||
left: 0rpx;
|
||||
width: 60rpx;
|
||||
height: 1110rpx;
|
||||
background: linear-gradient(to bottom, #c4dbf4, #c9c2ef, #c6dcf3);
|
||||
border-bottom: 2rpx solid #fff;
|
||||
border-left: 2rpx solid #fff;
|
||||
border-bottom-left-radius: 20rpx;
|
||||
/* background: linear-gradient(to bottom, #c4dbf4, #c9c2ef, #c6dcf3); */
|
||||
/* border-bottom: 2rpx solid #fff; */
|
||||
/* border-left: 2rpx solid #fff; */
|
||||
/* border-bottom-left-radius: 20rpx; */
|
||||
}
|
||||
|
||||
.scroll-bottom-bgc {
|
||||
|
@ -2008,7 +1845,7 @@
|
|||
|
||||
|
||||
.boom-son {
|
||||
height: 209rpx;
|
||||
height: 167rpx;
|
||||
width: 60rpx;
|
||||
font-size: 30rpx;
|
||||
display: flex;
|
||||
|
@ -2019,11 +1856,11 @@
|
|||
font-weight: 700;
|
||||
border-top: 1rpx solid transparent;
|
||||
border-bottom: 1rpx solid transparent;
|
||||
border-image: repeating-linear-gradient(90deg, #0184db 0px, #0184db 6rpx, transparent 6rpx, transparent 12rpx) 1;
|
||||
/* border-image: repeating-linear-gradient(90deg, #0184db 0px, #0184db 6rpx, transparent 6rpx, transparent 12rpx) 1; */
|
||||
}
|
||||
|
||||
.boom-son-target {
|
||||
height: 209rpx;
|
||||
height: 167rpx;
|
||||
width: 60rpx;
|
||||
font-size: 30rpx;
|
||||
display: flex;
|
||||
|
@ -2034,7 +1871,7 @@
|
|||
font-weight: 700;
|
||||
border-top: 1rpx solid transparent;
|
||||
border-bottom: 1rpx solid transparent;
|
||||
border-image: repeating-linear-gradient(90deg, #0184db 0px, #0184db 6rpx, transparent 6rpx, transparent 12rpx) 1;
|
||||
/* border-image: repeating-linear-gradient(90deg, #0184db 0px, #0184db 6rpx, transparent 6rpx, transparent 12rpx) 1; */
|
||||
/* 确保文字在容器内居中 */
|
||||
background: linear-gradient(to bottom, #ff8a00, #eceaff);
|
||||
/* border-bottom-right-radius: 40rpx;
|
||||
|
@ -2058,11 +1895,9 @@
|
|||
|
||||
.popup-share-content {
|
||||
position: absolute;
|
||||
right: 515rpx;
|
||||
/* right: 515rpx; */
|
||||
display: flex;
|
||||
// justify-content: center;
|
||||
flex-direction: column;
|
||||
// align-items: center;
|
||||
width: 800rpx;
|
||||
height: 380rpx;
|
||||
background: url("/static/index/lightbgcnew.png") center/cover, rgba(255, 255, 255, 0.7);
|
|
@ -6,71 +6,37 @@
|
|||
<!-- 轮盘 -->
|
||||
<joystick @movecard="movecard" />
|
||||
<view class="right-container-title-nav">
|
||||
<text :class="darkFans?`right-container-title-no-dark`:`right-container-title-no`">
|
||||
ID:12345678
|
||||
<text style="margin-left: 30rpx;">
|
||||
NUID:2508000001
|
||||
</text>
|
||||
<text :class="darkFans?`right-container-title-no-dark`:`right-container-title-no`">
|
||||
名称:未命名01
|
||||
<text class="new-weight">
|
||||
护理单元01
|
||||
</text>
|
||||
|
||||
<view class="right-icons">
|
||||
<image class="right-icons-img" :src="`/static/index/undericons/man.png`" />
|
||||
<view :class="darkFans?`right-icons-font-dark`: `right-icons-font` ">王金福</view>
|
||||
<image class="right-icons-img-icon"
|
||||
:src="darkFans?`/static/index/undericons/face.png`:`/static/index/undericons/facelight.png`" />
|
||||
<image class="right-icons-img-icon"
|
||||
:src="darkFans?`/static/index/undericons/hand.png`:`/static/index/undericons/handlight.png`" />
|
||||
<image class="right-icons-img-icon"
|
||||
:src="darkFans?`/static/index/undericons/out.png`:`/static/index/undericons/outlight.png`" />
|
||||
</view>
|
||||
<view class="right-container-title-class-anhei-button-wrong" @click="newchange(0)">
|
||||
<text class="right-container-title-class-anhei">
|
||||
拖动模式
|
||||
</text>
|
||||
</view>
|
||||
<!-- <view class="right-container-title-class-anhei-button">
|
||||
<text class="right-container-title-class-anhei">
|
||||
手柄模式1
|
||||
</text>
|
||||
</view> -->
|
||||
<view class="right-container-title-class-anhei-button-wrong" @click="newchange(2)">
|
||||
<text class="right-container-title-class-anhei">
|
||||
手柄模式
|
||||
</text>
|
||||
<view class="doctorsay-container-share">
|
||||
立即生效
|
||||
</view>
|
||||
<view class="doctorsay-container-juzhen" @click="routerPush">
|
||||
预览
|
||||
</view>
|
||||
<view class="doctorsay-container-share" @click="shareToWeixin">
|
||||
分享
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
<view class="doctorsay-container-view">
|
||||
<view class="doctorsay-container-container">
|
||||
<view class="doctorsay-container-title">
|
||||
<view class="doctorsay-container-left">
|
||||
<view class="doctorsay-container-left-gun"></view>
|
||||
<view class="doctorsay-container-left-font">护理流程</view>
|
||||
<view class="doctorsay-container-share" @click="shareToWeixin">
|
||||
分享
|
||||
</view>
|
||||
<view class="doctorsay-container-share">
|
||||
立即生效
|
||||
</view>
|
||||
</view>
|
||||
<view class="doctorsay-container-right">
|
||||
<view class="doctorsay-container-right-kuai-cheng"></view>
|
||||
<view class="doctorsay-container-kuai-font">日常</view>
|
||||
<view class="doctorsay-container-right-kuai-zi"></view>
|
||||
<view class="doctorsay-container-kuai-font">周期</view>
|
||||
<view class="doctorsay-container-juzhen" @click="routerPush">
|
||||
预览
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="super-card">
|
||||
<view class="boom-title">
|
||||
<!-- <view class="boom-title">
|
||||
<view class="boom-title-left">
|
||||
分
|
||||
</view>
|
||||
<view class="boom-title-right">
|
||||
时
|
||||
</view>
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="boom-father">
|
||||
<view class="boom">
|
||||
<view :style="{ marginTop: `-${2 *moveDownNumber}rpx` }">
|
||||
|
@ -86,104 +52,97 @@
|
|||
</view>
|
||||
|
||||
<view class="super-card-container">
|
||||
<!-- <scroll-view style="height: 920rpx;width: 100%;" :scroll-left="cardLeft" scroll-x
|
||||
@scroll="handleTop" :show-scrollbar="false"> -->
|
||||
<view class="scroll-wrapper" @touchstart="onTouchStart" @touchmove="onTouchMove"
|
||||
@touchend="onTouchEnd">
|
||||
<view class="scroll-content" :style="{ transform: `translateX(${translateX}px)` }">
|
||||
<view
|
||||
style="display: flex;box-shadow: 10rpx 10rpx 20rpx rgba(0, 0, 0, 0.1);width:5610rpx;background: linear-gradient(to right, #c4dbf4,#c9c2ef, #c6dcf3);">
|
||||
<view v-for="(item0,index0) in renderList" :key="index0">
|
||||
<view class="super-card-time">
|
||||
{{(item0.positioning.length == 1 ? ('0' + item0.positioning) : item0.positioning) + ":00"}}
|
||||
|
||||
</view>
|
||||
<scroll-view style="height: 920rpx;width: 100%;" :scroll-left="cardLeft" scroll-x
|
||||
@scroll="handleTop" :show-scrollbar="false">
|
||||
<view
|
||||
style="display: flex;width:4824rpx;">
|
||||
<view v-for="(item0,index0) in timearr" :key="index0">
|
||||
<view class="super-card-time">
|
||||
{{(item0.positioning.length == 1 ? ('0' + item0.positioning) : item0.positioning) + ":00"}}
|
||||
</view>
|
||||
</view>
|
||||
<view style="display: flex;height: calc(100% - 80rpx);">
|
||||
</view>
|
||||
<view style="display: flex;height: calc(100% - 80rpx);">
|
||||
|
||||
<scroll-view style="height: 100%;width:5610rpx" :scroll-top="scrollTop"
|
||||
:scroll-y="canmove && !shakyTable" @scroll="handleScrolltime"
|
||||
:show-scrollbar="false">
|
||||
<view style="display: flex;height: 100%;">
|
||||
<view v-for="(item0,index0) in timearr" :key="index0">
|
||||
<view class="super-card-time-und">
|
||||
<view v-for="(item1,index1) in item0.children" style="width: 100%;"
|
||||
:key="index1">
|
||||
<view
|
||||
:class=" targetRuler.index0 === index0 && targetRuler.index1 === index1 ? targetRuler.index1 ?`title-time-border-big`:`title-time-border-big-top` : `super-card-time-card` "
|
||||
:style="!targetRuler.bordershow && saveRulerTime.index0 === index0 && saveRulerTime.index1 === index1 ? {zIndex:999} : {borderBottom: '1rpx solid transparent'}"
|
||||
:id="`a${index0}_${index1}`" style="position: relative;"
|
||||
@click="rulerTouchClick(item1,index0,index1,$event)"
|
||||
@touchstart="rulerTouchStart(item1,index0,index1,$event)"
|
||||
@touchmove="rulerTouchMove" @touchend="rulerTouchEnd()"
|
||||
:data-index0="index0" :data-index1="index1">
|
||||
<view class="time-button-orange-spe"
|
||||
v-if="flyNumber.index0 === index0 && flyNumber.index1 === index1 && index1==0">
|
||||
请选择服务指令迁移的目标单元格
|
||||
<view class="under-button-three"></view>
|
||||
</view>
|
||||
<view class="time-button-orange"
|
||||
v-if="flyNumber.index0 === index0 && flyNumber.index1 === index1 && index1">
|
||||
请选择服务指令迁移的目标单元格
|
||||
<view class="under-button-three"></view>
|
||||
</view>
|
||||
<view class="time-button-black-spe"
|
||||
v-if="saveEditIndex.index0 == index0 && saveEditIndex.index1 == index1 && index1==0 && isDelete">
|
||||
是否确认删除该服务指令
|
||||
<view class="under-button-three"></view>
|
||||
</view>
|
||||
<view class="time-button-black"
|
||||
v-if="saveEditIndex.index0 == index0 && saveEditIndex.index1 == index1 && index1 && isDelete">
|
||||
是否确认删除该服务指令
|
||||
<view class="under-button-three"></view>
|
||||
</view>
|
||||
<view class="title-time-blue"
|
||||
v-show="saveEditIndex.index0 == index0 && saveEditIndex.index1 == index1">
|
||||
<image class="title-time-blue-img"
|
||||
:src="isMove?`/static/index/movemode/targetcheng.png`: `/static/index/movemode/target.png`" />
|
||||
</view>
|
||||
<view :class="getClass(item1,index0,index1)"
|
||||
style="font-size: 30rpx;overflow: hidden;"
|
||||
:style="{ animationDelay:`-${computeDelay(index0, index1).toFixed(2)}s` }">
|
||||
<view class="title-time" v-if="item1.startTime"
|
||||
v-show=" liang.index0 !== index0 || liang.index1 !== index1 || canmove"
|
||||
style="margin-top: 5rpx;">
|
||||
<view class="title-time-time"
|
||||
style="font-size: 25rpx;">
|
||||
{{item1.startTime + `-` + item1.endTime}}
|
||||
</view>
|
||||
<image class="title-time-button"
|
||||
:src="item1.cycleType=='日常'?`/static/index/yellowbian.png`:`/static/index/puoplebian.png`" />
|
||||
<view class="title-time-font">
|
||||
{{item1.cycleType}}
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<image v-if="item1.startTime" class="title-time-img"
|
||||
src="/static/index/tu.png" />
|
||||
<view v-if="item1.startTime"
|
||||
class="title-time-font-rel">
|
||||
{{splitString(item1.directiveName)[0]}}
|
||||
</view>
|
||||
<view v-if="item1.startTime" class="title-time-items">
|
||||
<image class="right-box-items-button"
|
||||
src="/static/index/ku.png" />
|
||||
<image class="right-box-items-button"
|
||||
src="/static/index/ren.png" />
|
||||
<scroll-view style="height: 100%;width:4824rpx" :scroll-top="scrollTop"
|
||||
:scroll-y="canmove && !shakyTable" @scroll="handleScrolltime"
|
||||
:show-scrollbar="false">
|
||||
<view style="display: flex;height: 100%;">
|
||||
<view v-for="(item0,index0) in timearr" :key="index0">
|
||||
<view class="super-card-time-und">
|
||||
<view v-for="(item1,index1) in item0.children" style="width: 100%;"
|
||||
:key="index1">
|
||||
<view
|
||||
:class=" targetRuler.index0 === index0 && targetRuler.index1 === index1 ? targetRuler.index1 ?`title-time-border-big`:`title-time-border-big-top` : `super-card-time-card` "
|
||||
:style="!targetRuler.bordershow && saveRulerTime.index0 === index0 && saveRulerTime.index1 === index1 ? {zIndex:999} : {borderBottom: '1rpx solid transparent'}"
|
||||
:id="`a${index0}_${index1}`" style="position: relative;"
|
||||
@click="rulerTouchClick(item1,index0,index1,$event)"
|
||||
@touchstart="rulerTouchStart(item1,index0,index1,$event)"
|
||||
@touchmove="rulerTouchMove" @touchend="rulerTouchEnd()"
|
||||
:data-index0="index0" :data-index1="index1">
|
||||
<view class="time-button-orange-spe"
|
||||
v-if="flyNumber.index0 === index0 && flyNumber.index1 === index1 && index1==0">
|
||||
请选择服务指令迁移的目标单元格
|
||||
<view class="under-button-three"></view>
|
||||
</view>
|
||||
<view class="time-button-orange"
|
||||
v-if="flyNumber.index0 === index0 && flyNumber.index1 === index1 && index1">
|
||||
请选择服务指令迁移的目标单元格
|
||||
<view class="under-button-three"></view>
|
||||
</view>
|
||||
<view class="time-button-black-spe"
|
||||
v-if="saveEditIndex.index0 == index0 && saveEditIndex.index1 == index1 && index1==0 && isDelete">
|
||||
是否确认删除该服务指令
|
||||
<view class="under-button-three"></view>
|
||||
</view>
|
||||
<view class="time-button-black"
|
||||
v-if="saveEditIndex.index0 == index0 && saveEditIndex.index1 == index1 && index1 && isDelete">
|
||||
是否确认删除该服务指令
|
||||
<view class="under-button-three"></view>
|
||||
</view>
|
||||
<view class="title-time-blue"
|
||||
v-show="saveEditIndex.index0 == index0 && saveEditIndex.index1 == index1">
|
||||
<image class="title-time-blue-img"
|
||||
:src="isMove?`/static/index/movemode/targetcheng.png`: `/static/index/movemode/target.png`" />
|
||||
</view>
|
||||
<view :class="getClass(item1,index0,index1)"
|
||||
style="font-size: 30rpx;overflow: hidden;"
|
||||
:style="{ animationDelay:`-${computeDelay(index0, index1).toFixed(2)}s` }">
|
||||
<view class="title-time" v-if="item1.startTime"
|
||||
v-show=" liang.index0 !== index0 || liang.index1 !== index1 || canmove"
|
||||
style="margin-top: 5rpx;">
|
||||
<view class="title-time-time"
|
||||
style="font-size: 25rpx;margin-top: 20rpx;">
|
||||
{{item1.startTime + `-` + item1.endTime}}
|
||||
</view>
|
||||
<image class="title-time-button"
|
||||
:src="item1.cycleType=='日常'?`/static/index/yellowbian.png`:`/static/index/puoplebian.png`" />
|
||||
<view class="title-time-font">
|
||||
{{item1.cycleType}}
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- <image v-if="item1.startTime" class="title-time-img"
|
||||
src="/static/index/tu.png" /> -->
|
||||
<view v-if="item1.startTime" class="title-time-font-rel">
|
||||
{{splitString(item1.directiveName)[0]}}
|
||||
</view>
|
||||
<view v-if="item1.startTime" class="title-time-items">
|
||||
<image class="right-box-items-button"
|
||||
src="/static/index/ku.png" />
|
||||
<image class="right-box-items-button"
|
||||
src="/static/index/ren.png" />
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- </scroll-view> -->
|
||||
</scroll-view>
|
||||
<view class="scroll-bottom-bgc"></view>
|
||||
</view>
|
||||
<view class="right-cards">
|
||||
|
@ -421,7 +380,7 @@
|
|||
import { onShow, onHide } from '@dcloudio/uni-app';
|
||||
import type { roomBtttonType } from "./index";
|
||||
import { getServiceTree, getNclist, addBatch } from "./api.js";
|
||||
import index from '../../request';
|
||||
// import index from '../../request';
|
||||
import { myArray } from './yaoshandiao.js';
|
||||
import joystick from '@/component/public/newgame/joysticknew.vue';
|
||||
import skill from '@/component/public/game/skill.vue';
|
||||
|
@ -435,11 +394,11 @@
|
|||
},
|
||||
darkFans: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
// required: true,
|
||||
},
|
||||
canmove: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
// required: true,
|
||||
},
|
||||
liang: {
|
||||
type: Object,
|
||||
|
@ -453,15 +412,16 @@
|
|||
() => props.isold,
|
||||
() => {
|
||||
if (props.isold) {
|
||||
saveEditIndex.value.index0 = saveleft.value;
|
||||
saveEditIndex.value.index0 = 9;
|
||||
saveEditIndex.value.index1 = 0;
|
||||
centerCell();
|
||||
cardLeft.value = 1;
|
||||
scrollTop.value = 1;
|
||||
nextTick(() => {
|
||||
scrollTop.value = 0;
|
||||
cardLeft.value = saveleft.value * 117;
|
||||
})
|
||||
cardLeft.value = 605;
|
||||
|
||||
})
|
||||
}
|
||||
})
|
||||
watch(
|
||||
|
@ -471,14 +431,28 @@
|
|||
})
|
||||
watch(
|
||||
() => props.isshow,
|
||||
() => {
|
||||
bottomisShaking.value = false
|
||||
shakyTable.value = false;
|
||||
cardLeft.value = 1;
|
||||
nextTick(() => {
|
||||
cardLeft.value = 702;
|
||||
})
|
||||
})
|
||||
(newVal, oldVal) => {
|
||||
// 只有当新旧值不相同时才执行
|
||||
if (newVal !== oldVal) {
|
||||
bottomisShaking.value = false
|
||||
shakyTable.value = false
|
||||
if(solveWatch.value){
|
||||
solveWatch.value --
|
||||
}else{
|
||||
saveEditIndex.value.index0 = 9
|
||||
saveEditIndex.value.index1 = 0
|
||||
centerCell();
|
||||
cardLeft.value = 1
|
||||
scrollTop.value = 1
|
||||
|
||||
nextTick(() => {
|
||||
scrollTop.value = 0
|
||||
cardLeft.value = 605
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
const bottomItems = ref([
|
||||
{
|
||||
name: '纸尿裤',
|
||||
|
@ -588,91 +562,12 @@
|
|||
const savetop = ref(0);
|
||||
const savebottom = ref(3);
|
||||
const isMove = ref(false);
|
||||
const minuteArr = ['00', '05', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55']
|
||||
const timearr = ref(
|
||||
Array.from({ length: 24 }, (_, hour) => ({
|
||||
positioning: hour.toString(),
|
||||
children: minuteArr.map(time => ({
|
||||
typeName: time, // 表示分钟,如 '00', '05' 等
|
||||
directiveName: '' // 默认的 directiveName
|
||||
}))
|
||||
}))
|
||||
)
|
||||
const saveEditIndex = ref({
|
||||
index0: -1,
|
||||
index1: -1
|
||||
|
||||
onMounted(() => {
|
||||
// getServiceTree().then(res=>{
|
||||
// console.log("res",res)
|
||||
// })
|
||||
})
|
||||
//、、、、、、、、、、、、、、
|
||||
const renderList = [...timearr.value, ...timearr.value, ...timearr.value] // 3 组数据,中间用于实际展示
|
||||
const ITEM_WIDTH = 200
|
||||
const WRAPPER_WIDTH = 400
|
||||
const centerIndex = timearr.value.length // 中间那组的“00”
|
||||
const translateX = ref(WRAPPER_WIDTH / 2 - ITEM_WIDTH / 2 - centerIndex * ITEM_WIDTH)
|
||||
let currentOffset = translateX.value
|
||||
|
||||
let startX = 0
|
||||
let lastMoveTime = 0
|
||||
let lastMoveX = 0
|
||||
let velocity = 0
|
||||
let inertiaTimer = null
|
||||
|
||||
function onTouchStart(e) {
|
||||
clearInterval(inertiaTimer)
|
||||
startX = e.touches[0].clientX
|
||||
lastMoveTime = Date.now()
|
||||
lastMoveX = startX
|
||||
}
|
||||
|
||||
function onTouchMove(e) {
|
||||
const moveX = e.touches[0].clientX
|
||||
const delta = moveX - startX
|
||||
translateX.value = currentOffset + delta
|
||||
|
||||
// 计算速度
|
||||
const now = Date.now()
|
||||
const deltaTime = now - lastMoveTime
|
||||
if (deltaTime > 0) {
|
||||
velocity = (moveX - lastMoveX) / deltaTime
|
||||
lastMoveX = moveX
|
||||
lastMoveTime = now
|
||||
}
|
||||
}
|
||||
|
||||
function onTouchEnd() {
|
||||
currentOffset = translateX.value
|
||||
applyInertia()
|
||||
}
|
||||
|
||||
function applyInertia() {
|
||||
const friction = 0.95
|
||||
const threshold = 0.1
|
||||
|
||||
inertiaTimer = setInterval(() => {
|
||||
if (Math.abs(velocity) < threshold) {
|
||||
clearInterval(inertiaTimer)
|
||||
fixTranslateX()
|
||||
return
|
||||
}
|
||||
currentOffset += velocity * 16 // 每帧移动
|
||||
velocity *= friction
|
||||
translateX.value = currentOffset
|
||||
|
||||
fixTranslateX()
|
||||
}, 16)
|
||||
}
|
||||
|
||||
function fixTranslateX() {
|
||||
const totalWidth = ITEM_WIDTH * renderList.length
|
||||
const midOffset = timearr.value.length * ITEM_WIDTH
|
||||
|
||||
if (translateX.value < -totalWidth + ITEM_WIDTH) {
|
||||
currentOffset += midOffset
|
||||
translateX.value += midOffset
|
||||
} else if (translateX.value > -ITEM_WIDTH) {
|
||||
currentOffset -= midOffset
|
||||
translateX.value -= midOffset
|
||||
}
|
||||
}//、、、、、、、、、、、、、、、、、、
|
||||
// 上次点击时间
|
||||
const lastTap = ref(0)
|
||||
// 双击的最大间隔(ms),可根据体验调整
|
||||
|
@ -778,75 +673,37 @@
|
|||
}
|
||||
const selectType = ref(true);
|
||||
const deleteButton = ref(false);
|
||||
// 给摇杆用的
|
||||
//看完迷糊不,我都迷糊了
|
||||
//0上1右2下3左
|
||||
// songisopen.value是弹窗打没打开
|
||||
// clickstauts.value是弹窗的第几步
|
||||
// selectType.value是选择周和月的状态
|
||||
|
||||
const movecard = (where : number) => {
|
||||
isDelete.value = false;
|
||||
// console.log("?????",leftIn.value,saveleft.value*117)
|
||||
if (((saveleft.value * 117 - leftIn.value) > 5) || ((leftIn.value - saveleft.value * 117) > 0)) {
|
||||
cardLeft.value = 1;
|
||||
nextTick(() => {
|
||||
cardLeft.value = saveleft.value * 117;
|
||||
})
|
||||
}
|
||||
if (((savetop.value * 104.5 - topIn.value) > 5) || ((topIn.value - savetop.value * 104.5) > 0)) {
|
||||
scrollTop.value = 1;
|
||||
nextTick(() => {
|
||||
scrollTop.value = savetop.value * 104.5;
|
||||
})
|
||||
}
|
||||
|
||||
switch (where) {
|
||||
case 0:
|
||||
if (saveEditIndex.value.index1) {
|
||||
saveEditIndex.value.index1--
|
||||
centerCell();
|
||||
}
|
||||
if (saveEditIndex.value.index1 < savetop.value) {
|
||||
savetop.value = saveEditIndex.value.index1;
|
||||
savebottom.value = saveEditIndex.value.index1 + 3
|
||||
scrollTop.value = saveEditIndex.value.index1 * 104.5;
|
||||
}
|
||||
// isHave()
|
||||
break
|
||||
case 1:
|
||||
if (saveEditIndex.value.index0 == 23) {
|
||||
return
|
||||
}
|
||||
saveEditIndex.value.index0++
|
||||
if (saveEditIndex.value.index0 > saveright.value) {
|
||||
saveleft.value = saveEditIndex.value.index0 - 5;
|
||||
saveright.value = saveEditIndex.value.index0
|
||||
cardLeft.value = saveleft.value * 117;
|
||||
}
|
||||
|
||||
// isHave()
|
||||
centerCell();
|
||||
break
|
||||
case 2:
|
||||
if (saveEditIndex.value.index1 == 11) {
|
||||
return
|
||||
}
|
||||
saveEditIndex.value.index1++
|
||||
if (saveEditIndex.value.index1 > savebottom.value) {
|
||||
savetop.value = saveEditIndex.value.index1 - 3;
|
||||
savebottom.value = saveEditIndex.value.index1;
|
||||
scrollTop.value = savetop.value * 104.5;
|
||||
}
|
||||
// isHave()
|
||||
centerCell();
|
||||
break
|
||||
case 3:
|
||||
if (saveEditIndex.value.index0 == 0) {
|
||||
return
|
||||
}
|
||||
saveEditIndex.value.index0--
|
||||
if (saveEditIndex.value.index0 < saveleft.value) {
|
||||
saveleft.value = saveEditIndex.value.index0;
|
||||
saveright.value = saveEditIndex.value.index0 + 5;
|
||||
cardLeft.value = saveleft.value * 117;
|
||||
}
|
||||
// isHave()
|
||||
centerCell();
|
||||
break
|
||||
}
|
||||
}
|
||||
|
@ -979,7 +836,10 @@
|
|||
const emit = defineEmits(['darkchange', 'savename', 'saveruler', 'closename', 'changefangkuang', 'changeold']);
|
||||
const isEdit = ref(false);
|
||||
// const isLunpan = ref(false);
|
||||
|
||||
const saveEditIndex = ref({
|
||||
index0: 9,
|
||||
index1: 0
|
||||
})
|
||||
const clickstauts = ref(0)
|
||||
const secondopenValue = ref([]);
|
||||
|
||||
|
@ -1220,35 +1080,9 @@
|
|||
default:
|
||||
break;
|
||||
}
|
||||
// if (cardsumit.value.op.index[2] === index) {
|
||||
// cardsumit.value.op.index[2] = -1;
|
||||
// cardsumit.value.op.name = ""
|
||||
// openOp.value = -1
|
||||
// } else {
|
||||
// cardsumit.value.op.index[2] = index
|
||||
// cardsumit.value.op.name = item.relName
|
||||
// switch (item.cycleType) {
|
||||
// case `日常护理`:
|
||||
// openOp.value = 0
|
||||
// break;
|
||||
// case `周期护理`:
|
||||
// openOp.value = 1
|
||||
// break;
|
||||
// case `即时护理`:
|
||||
// openOp.value = 2
|
||||
// break;
|
||||
// default:
|
||||
// break;
|
||||
// }
|
||||
|
||||
// }
|
||||
}
|
||||
// const clickweek = (index : string) => {
|
||||
// cardsumit.value.weekTime = index
|
||||
// }
|
||||
// const clickmonth = (index : string) => {
|
||||
// cardsumit.value.monthTime = index
|
||||
// }
|
||||
|
||||
const indexsave = ref([-1, -1]);
|
||||
// (长按表格后)表格拖动结束
|
||||
const rulerMoveEnd = (object : any) => {
|
||||
|
@ -1444,7 +1278,11 @@
|
|||
current: -1,
|
||||
bordershow: true
|
||||
})
|
||||
const solveWatch = ref(0)
|
||||
const whereEvent = (data : any) => {
|
||||
saveEditIndex.value.index0 = data.index0;
|
||||
saveEditIndex.value.index1 = data.index1;
|
||||
centerCell();
|
||||
targetRuler.value.index0 = data.index0;
|
||||
targetRuler.value.index1 = data.index1;
|
||||
saveRulerTime.value.index0 = targetRuler.value.index0;
|
||||
|
@ -1462,16 +1300,28 @@
|
|||
}, 1000)
|
||||
}
|
||||
// 定义每小时中的分钟数组,表示每 5 分钟一个时间段,总共 12 个
|
||||
|
||||
|
||||
const minuteArr = ['00', '05', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55']
|
||||
const timearr = ref(
|
||||
Array.from({ length: 24 }, (_, hour) => ({
|
||||
positioning: hour.toString(),
|
||||
children: minuteArr.map(time => ({
|
||||
typeName: time, // 表示分钟,如 '00', '05' 等
|
||||
directiveName: '' // 默认的 directiveName
|
||||
}))
|
||||
}))
|
||||
)
|
||||
onShow(() => {
|
||||
bigArray.value = myArray
|
||||
downList.value = bigArray.value[0].children
|
||||
uni.$on('where', whereEvent);
|
||||
uni.$on('where', findback);
|
||||
})
|
||||
onHide(() => {
|
||||
uni.$off('where', whereEvent);
|
||||
uni.$off('where', findback);
|
||||
});
|
||||
function findback (data:any){
|
||||
solveWatch.value = 3;
|
||||
whereEvent(data)
|
||||
}
|
||||
defineExpose({
|
||||
rulerMoveEnd,
|
||||
})
|
||||
|
@ -1524,22 +1374,78 @@
|
|||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
const totalColumns = 24; // 总列数
|
||||
const totalRows = 11; // 总行数
|
||||
const visibleWidth = 1405; // 可视区域宽度 (rpx),基于 scalcType * widthType ≈ 2220
|
||||
const visibleHeight = 480; // 可视区域高度 (rpx),假设显示约5行时 heightType = 102.5
|
||||
function centerCell() {
|
||||
if (saveEditIndex.value.index0 >= 0 && saveEditIndex.value.index0 <= totalColumns && saveEditIndex.value.index1 >= 0 && saveEditIndex.value.index1 <= totalRows) {
|
||||
// 计算点击格子的中心位置 (rpx)
|
||||
const cellCenterX = (saveEditIndex.value.index0 + 0.5) * 201;
|
||||
const cellCenterY = (saveEditIndex.value.index1 - 0.5) * 167;
|
||||
// 计算 scrollLeft 和 scrollTop,使格子中心位于可视区域中心
|
||||
cardLeft.value = cellCenterX - visibleWidth / 2;
|
||||
scrollTop.value = cellCenterY - visibleHeight / 2;
|
||||
|
||||
// 计算网格总宽高
|
||||
const totalWidth = totalColumns * 201;
|
||||
const totalHeight = totalRows * 167;
|
||||
|
||||
// 限制 scrollLeft 和 scrollTop 在有效范围内
|
||||
cardLeft.value = Math.max(0, Math.min(cardLeft.value, totalWidth - visibleWidth)) / 2;
|
||||
// scrollTop.value = 0
|
||||
scrollTop.value = Math.max(0, Math.min(scrollTop.value, totalHeight - visibleHeight)) / 2;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
// 主页的css
|
||||
@import './index';
|
||||
.scroll-wrapper {
|
||||
height: 920rpx;
|
||||
width: 100%;
|
||||
overflow: hidden;
|
||||
background-color: #f5f5f5;
|
||||
position: relative;
|
||||
}
|
||||
.right-container-title-nav {
|
||||
margin-top: 60rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 60rpx;
|
||||
position: relative;
|
||||
font-size: 28rpx;
|
||||
|
||||
.scroll-content {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
will-change: transform;
|
||||
.new-weight {
|
||||
margin-left: 30rpx;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.right-icons {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
height: 60rpx;
|
||||
}
|
||||
.doctorsay-container-share {
|
||||
background: linear-gradient(to right bottom, #00c9ff, #0076ff);
|
||||
color: #fff;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 10rpx 20rpx;
|
||||
border-radius: 20rpx;
|
||||
font-size: 27rpx;
|
||||
margin-left: 10rpx;
|
||||
}
|
||||
.doctorsay-container-juzhen {
|
||||
background: linear-gradient(to right bottom, #00c9ff, #0076ff);
|
||||
color: #fff;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
padding: 10rpx 20rpx;
|
||||
border-radius: 20rpx;
|
||||
font-size: 27rpx;
|
||||
margin: 0 20rpx;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,4 @@
|
|||
export type Link = {
|
||||
url : string;
|
||||
targetUrl : string;
|
||||
};
|
|
@ -0,0 +1,639 @@
|
|||
<template>
|
||||
<view :class="darkFans?`darkbackgroundContainer`:`backgroundContainer`" @touchmove="getxy" @touchend="cleanall">
|
||||
<!-- 这些东西是为了拖动模式来设计的 -->
|
||||
<view class="move-font" v-show="savename && clientX" :animation="animationData">
|
||||
{{savename}}
|
||||
</view>
|
||||
<view v-show="saveruler.cycleType"
|
||||
:class="saveruler.cycleType=='日常' ? `title-time-border-yellow`:`title-time-border-pouple`"
|
||||
:animation="animationData" style="font-size: 30rpx;overflow: hidden;">
|
||||
<view class="title-time" v-show="saveruler.startTime" style="margin-top: 5rpx;">
|
||||
<view class="title-time-time" style="font-size: 30rpx;">
|
||||
{{saveruler.startTime + `-` + saveruler.endTime}}
|
||||
</view>
|
||||
<image class="title-time-button"
|
||||
:src="saveruler.cycleType=='日常'?`/static/index/yellowbian.png`:`/static/index/puoplebian.png`" />
|
||||
<view class="title-time-font">
|
||||
{{saveruler.cycleType}}
|
||||
</view>
|
||||
</view>
|
||||
<view style="margin-top: 20rpx;font-weight: 700;">
|
||||
{{splitString(saveruler.directiveName)[0]}}
|
||||
</view>
|
||||
<view class="down-icons" :style="saveruler.cycleType!='日常'?{backgroundColor:`rgb(212,203,255)`}:{}"
|
||||
v-show="splitString(saveruler.directiveName)[1]">
|
||||
<view class="" v-for="(item,index) in splitString(saveruler.directiveName).slice(1)" :key="index">
|
||||
<view class="icon" :style="saveruler.cycleType!='日常'?{backgroundColor:`rgb(123,97,255)`}:{}">
|
||||
{{splitString(saveruler.directiveName)[1]}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="left-container">
|
||||
<view class="left-head">
|
||||
<image class="left-head-img" src="/static/index/oldman.png" />
|
||||
<text :class="darkFans?`left-head-font-dark`:`left-head-font`">
|
||||
王金福
|
||||
</text>
|
||||
</view>
|
||||
<view class="menus-father">
|
||||
<view v-for="(item,index) in leftMenuArray" :key="index" class="menu" :style="index === menuIndex?{backgroundColor:`#fff`}:{} " @click="changeMenu(index)">
|
||||
<!-- <image class="menu-img" :src="item.url" /> -->
|
||||
<donghua :width="`65rpx`" :height="`65rpx`" :links="item.url" :playing="index === menuIndex" />
|
||||
|
||||
<text style="font-size: 33rpx;margin-left: 15rpx;">
|
||||
{{item.name}}
|
||||
</text>
|
||||
<!-- <view class="blue-circle" v-show="index === menuIndex">
|
||||
<image class="blue-circle-size" :src="`/static/index/ray.png`" />
|
||||
</view>
|
||||
<image class="left-img" :src="index === menuIndex ? item.targetUrl : item.url"
|
||||
@click="changeMenu(index)" /> -->
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="left-img-container">
|
||||
<view v-for="(item,index) in iconList" :key="index" class="blue-circle-pos">
|
||||
<view class="blue-circle" v-show="index === menuIndex">
|
||||
<image class="blue-circle-size" :src="`/static/index/ray.png`" />
|
||||
</view>
|
||||
<image class="left-img" :src="index === menuIndex ? item.targetUrl : item.url"
|
||||
@click="changeMenu(index)" />
|
||||
</view>
|
||||
</view> -->
|
||||
</view>
|
||||
<!-- 主页 -->
|
||||
<index :isShow="menuIndexshow" v-show="!menuIndex" />
|
||||
|
||||
<nurse :isold="isOld===2" :liang="indexNumber" :isshow="menuIndexshowsecond" v-show="menuIndex==1&&isOld===2" />
|
||||
<!-- 超凶表格 -->
|
||||
<!-- 旧表格 -->
|
||||
<!-- <rightItemssecond ref="ruler" :liang="indexNumber" :isshow="menuIndexshowsecond" :canmove="canmove"
|
||||
:darkFans="darkFans" v-show="menuIndex==1&&!isOld" @darkchange="darkchange" @savename="openname"
|
||||
@saveruler="openruler" @changefangkuang="changefangkuang" @cleanname="closename" @changeold="isOldchange" /> -->
|
||||
<!-- 新表格 -->
|
||||
<!-- <specialruler ref="rulernew" :isold="isOld===1" :liang="indexNumber" :isshow="menuIndexshowsecond" :canmove="canmove"
|
||||
:darkFans="darkFans" v-show="menuIndex==1&&isOld===1" @darkchange="darkchange" @savename="openname"
|
||||
@saveruler="openruler" @changefangkuang="changefangkuang" @cleanname="closename" @changeold="isOldchange" /> -->
|
||||
<!-- 新表格 -->
|
||||
<!-- <rightItemssecondrelnew ref="rulernew" :isold="isOld===2" :liang="indexNumber" :isshow="menuIndexshowsecond" :canmove="canmove"
|
||||
:darkFans="darkFans" v-show="menuIndex==1&&isOld===2" @darkchange="darkchange" @savename="openname"
|
||||
@saveruler="openruler" @changefangkuang="changefangkuang" @cleanname="closename" @changeold="isOldchange" /> -->
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, onBeforeUnmount } from 'vue';
|
||||
import type { Link } from "./index";
|
||||
import index from "./component/index.vue"
|
||||
import nurse from "./component/nurse/index.vue"
|
||||
// import rightItemssecond from "../../component/rightItemssecond/index.vue"
|
||||
// import specialruler from "../../component/specialruler/index.vue"
|
||||
// import rightItemssecondrelnew from "../../component/rightItemssecondrelnew/index.vue"
|
||||
import { onShow } from '@dcloudio/uni-app';
|
||||
|
||||
onMounted(() => {
|
||||
menuIndex.value = 0
|
||||
isOld.value = 2;
|
||||
uni.getSystemInfoSync(); // 确保 global 注入生效
|
||||
uni.pageScrollTo; // 避免某些平台热更新惊群
|
||||
// 被动监听提升拖拽性能
|
||||
name.value = uni.getStorageSync('realname')
|
||||
})
|
||||
|
||||
const name = ref("");
|
||||
// 通用的生成函数
|
||||
function genPaths(base, prefix, count, ext = 'png', startIndex = 0, pad = false) {
|
||||
return Array.from({ length: count }, (_, i) => {
|
||||
const idx = pad
|
||||
? String(i + startIndex).padStart(2, '0')
|
||||
: i + startIndex
|
||||
return `${base}/${prefix}${idx}.${ext}`
|
||||
})
|
||||
}
|
||||
const leftMenuArray = ref([
|
||||
{
|
||||
url: genPaths(
|
||||
'/static/index/newindex/curve',
|
||||
'home_',
|
||||
5, // 张数
|
||||
'png',
|
||||
1, // 起始索引为 1
|
||||
false // 不补零
|
||||
),name:'首页'
|
||||
},
|
||||
{
|
||||
url: genPaths(
|
||||
'/static/index/newindex/curve',
|
||||
'nurse_',
|
||||
8, // 张数
|
||||
'png',
|
||||
1, // 起始索引为 1
|
||||
false // 不补零
|
||||
),name:'护嘱'
|
||||
},
|
||||
{
|
||||
url: genPaths(
|
||||
'/static/index/newindex/curve',
|
||||
'doctor_',
|
||||
6, // 张数
|
||||
'png',
|
||||
1, // 起始索引为 1
|
||||
false // 不补零
|
||||
),name:'医嘱'
|
||||
},
|
||||
{
|
||||
url: genPaths(
|
||||
'/static/index/newindex/curve',
|
||||
'lead_',
|
||||
12, // 张数
|
||||
'png',
|
||||
1, // 起始索引为 1
|
||||
false // 不补零
|
||||
),name:'请领'
|
||||
},
|
||||
{
|
||||
url: genPaths(
|
||||
'/static/index/newindex/curve',
|
||||
'device_',
|
||||
7, // 张数
|
||||
'png',
|
||||
1, // 起始索引为 1
|
||||
false // 不补零
|
||||
),name:'设备'
|
||||
},
|
||||
{
|
||||
url: genPaths(
|
||||
'/static/index/newindex/curve',
|
||||
'return_',
|
||||
8, // 张数
|
||||
'png',
|
||||
1, // 起始索引为 1
|
||||
false // 不补零
|
||||
),name:'返回'
|
||||
},
|
||||
])
|
||||
const menuArray = ref([
|
||||
{ url: '/static/index/lefticon/index.png',name:'首页' },
|
||||
{ url: '/static/index/lefticon/nurse.png',name:'护嘱' },
|
||||
{ url: '/static/index/lefticon/doctor.png',name:'医嘱' },
|
||||
{ url: '/static/index/lefticon/give.png',name:'请领' },
|
||||
{ url: '/static/index/lefticon/wifi.png' ,name:'设备'},
|
||||
{ url: '/static/index/lefticon/back.png',name:'返回' }
|
||||
])
|
||||
|
||||
// 初始化左侧菜单列表
|
||||
const iconList = ref<Link[]>([
|
||||
{ url: '/static/index/lefticon/index.png', targetUrl: '/static/index/lefticontarget/blueindex.png' },
|
||||
{ url: '/static/index/lefticon/nurse.png', targetUrl: '/static/index/lefticontarget/bluenurse.png' },
|
||||
{ url: '/static/index/lefticon/doctor.png', targetUrl: '/static/index/lefticontarget/bluedoctor.png' },
|
||||
{ url: '/static/index/lefticon/give.png', targetUrl: '/static/index/lefticontarget/givedark.png' },
|
||||
{ url: '/static/index/lefticon/wifi.png', targetUrl: '/static/index/lefticontarget/bluewifi.png' },
|
||||
{ url: '/static/index/lefticon/back.png', targetUrl: '/static/index/lefticontarget/blueback.png' }
|
||||
]);
|
||||
|
||||
// 当前选中的菜单索引
|
||||
const menuIndex = ref<number>(-1);
|
||||
const menuIndexshow = ref<boolean>(false);
|
||||
const menuIndexshowsecond = ref<boolean>(false);
|
||||
// 暗黑模式
|
||||
const darkFans = ref<boolean>(false);
|
||||
//旧表格还是新表格
|
||||
const isOld = ref(-1);
|
||||
// 当前选中的菜单索引
|
||||
const roomTar = ref<number[]>([]);
|
||||
//滑块按钮
|
||||
const firstcurrentIndex = ref<number>(0);
|
||||
const firstcurrentIndexup = ref<number>(0);
|
||||
const secondcurrentIndexup = ref<number>(0);
|
||||
const secondcurrentIndex = ref<number>(0);
|
||||
const thirdcurrentIndex = ref<number>(0);
|
||||
// 暗黑模式改变
|
||||
const darkchange = (res : boolean) => {
|
||||
darkFans.value = res
|
||||
}
|
||||
//切换表格新旧
|
||||
const isOldchange = (res : number) => {
|
||||
isOld.value = res;
|
||||
}
|
||||
// 变更菜单
|
||||
const changeMenu = (index : number) => {
|
||||
// if (index === 3) {
|
||||
// menuIndexshow.value = false;
|
||||
// menuIndexshowsecond.value = false;
|
||||
// uni.navigateTo({
|
||||
// url: `/pages/somethingmove/index?darkFans=${darkFans.value}`,
|
||||
// animationType: 'slide-in-right',
|
||||
// animationDuration: 400// 设置动画时长为300毫秒, // 动画持续时间,单位为毫秒
|
||||
// });
|
||||
// return
|
||||
// }
|
||||
// else if (index === 5) {
|
||||
// uni.navigateBack()
|
||||
// return
|
||||
// }
|
||||
if(menuIndex.value===index){
|
||||
return
|
||||
}
|
||||
menuIndex.value = index;
|
||||
menuIndexshow.value = false
|
||||
menuIndexshowsecond.value = false
|
||||
if (index === 5) {
|
||||
uni.navigateBack()
|
||||
return
|
||||
}
|
||||
setTimeout(() => {
|
||||
switch (index) {
|
||||
case 0:
|
||||
menuIndexshow.value = true
|
||||
break;
|
||||
case 1:
|
||||
menuIndexshowsecond.value = true
|
||||
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}, 50)
|
||||
};
|
||||
const clientX = ref(0);
|
||||
const clientY = ref(0);
|
||||
const savename = ref("")
|
||||
const canmove = ref(true)
|
||||
const indexNumber = ref({
|
||||
index0: 999,
|
||||
index1: 999,
|
||||
})
|
||||
//翻页计时器
|
||||
const canTrigger = ref(true);
|
||||
//全局获得x轴和y轴
|
||||
const animation = uni.createAnimation({
|
||||
duration: 0,
|
||||
timingFunction: 'linear',
|
||||
delay: 0
|
||||
});
|
||||
const animationData = ref({});
|
||||
let ticking = false;
|
||||
let handle = null;
|
||||
|
||||
const getxyrel = (event) => {
|
||||
const touch = event.touches[0];
|
||||
clientX.value = 2 * (Math.floor(touch.clientX) - 100);
|
||||
clientY.value = 2 * (Math.floor(touch.clientY) - 55);
|
||||
animation.translate3d(clientX.value / 2, clientY.value / 2, 0).step({ duration: 0 });
|
||||
animationData.value = animation.export();
|
||||
|
||||
|
||||
// 遍历数组,找到点击区域所在的对
|
||||
const translateX = Math.floor(touch.clientX) - 50;
|
||||
const translateY = Math.floor(touch.clientY) - 25;
|
||||
|
||||
const clickedItem = fangkuaiValue.value.find(item => {
|
||||
return translateX >= Math.floor(item.left) && translateX <= Math.floor(item.right) &&
|
||||
translateY >= Math.floor(item.top) && translateY <= Math.floor(item.bottom);
|
||||
});
|
||||
if (clickedItem) {
|
||||
const { index0, index1 } = clickedItem.dataset;
|
||||
indexNumber.value.index0 = index0
|
||||
indexNumber.value.index1 = index1
|
||||
if (clientX.value < 200 && canTrigger.value && !isOld.value) {
|
||||
ruler.value?.nextItems();
|
||||
canTrigger.value = false;
|
||||
setTimeout(() => {
|
||||
canTrigger.value = true;
|
||||
}, 1000);
|
||||
}
|
||||
// if (clientX.value < 350 && canTrigger.value && isOld.value===1) {
|
||||
|
||||
// rulernew.value?.nextItems();
|
||||
// canTrigger.value = false;
|
||||
// setTimeout(() => {
|
||||
// canTrigger.value = true;
|
||||
// }, 1000);
|
||||
// }
|
||||
} else {
|
||||
indexNumber.value.index0 = 999
|
||||
indexNumber.value.index1 = 999
|
||||
}
|
||||
}
|
||||
//节流
|
||||
const getxy = throttle(getxyrel, 40);
|
||||
|
||||
const fangkuaiValue = ref([])
|
||||
//所有适合的方块
|
||||
const openname = (res : string, fangkuai : any) => {
|
||||
savename.value = res;
|
||||
canmove.value = false;
|
||||
fangkuaiValue.value = fangkuai
|
||||
}
|
||||
const changefangkuang = (fangkuang : any) => {
|
||||
fangkuaiValue.value = fangkuang
|
||||
}
|
||||
//移动方块
|
||||
const saveruler = ref({
|
||||
directiveName: "",
|
||||
cycleType: "",
|
||||
positioningLong: "0",
|
||||
typeName: "",
|
||||
startTime: "",
|
||||
id: "",
|
||||
endTime: "",
|
||||
tagName: null
|
||||
})
|
||||
const openruler = (res : any, fangkuai : any) => {
|
||||
saveruler.value = res
|
||||
canmove.value = false;
|
||||
fangkuaiValue.value = fangkuai
|
||||
}
|
||||
//解决拖动bug
|
||||
const closename = () => {
|
||||
savename.value = "";
|
||||
canmove.value = true;
|
||||
}
|
||||
const ruler = ref(null)
|
||||
const rulernew = ref(null)
|
||||
//结束、禁止滑动
|
||||
const cleanall = () => {
|
||||
clientX.value = 9999;
|
||||
clientY.value = 9999;
|
||||
animation.translate3d(clientX.value / 2, clientY.value / 2, 0).step({ duration: 0 });
|
||||
animationData.value = animation.export();
|
||||
canmove.value = true;
|
||||
indexNumber.value = {
|
||||
index0: 999,
|
||||
index1: 999,
|
||||
};
|
||||
if (savename.value) {
|
||||
if (!isOld.value) {
|
||||
ruler.value?.rulerEnd(savename.value);
|
||||
} else {
|
||||
}
|
||||
} else if (saveruler.value.typeName) {
|
||||
if (isOld.value===0) {
|
||||
ruler.value?.rulerMoveEnd(saveruler.value);
|
||||
} else {
|
||||
rulernew.value?.rulerMoveEnd(saveruler.value);
|
||||
}
|
||||
}
|
||||
savename.value = "";
|
||||
saveruler.value = {
|
||||
directiveName: "",
|
||||
cycleType: "",
|
||||
positioningLong: "0",
|
||||
typeName: "",
|
||||
startTime: "",
|
||||
id: "",
|
||||
endTime: "",
|
||||
tagName: null
|
||||
};
|
||||
}
|
||||
//节流函数
|
||||
function throttle(fn, delay) {
|
||||
let lastExecutionTime = 0;
|
||||
return function (...args) {
|
||||
const now = Date.now();
|
||||
if (now - lastExecutionTime >= delay) {
|
||||
lastExecutionTime = now;
|
||||
fn.apply(this, args);
|
||||
}
|
||||
};
|
||||
}
|
||||
function splitString(str) {
|
||||
// 使用正则表达式找到所有括号的内容
|
||||
let result = [];
|
||||
let remainingStr = str;
|
||||
// 正则匹配最外层括号(支持全角和半角)
|
||||
let regex = /([^((]*)[((]([^))]+)[))]/;
|
||||
while (regex.test(remainingStr)) {
|
||||
let match = remainingStr.match(regex);
|
||||
if (match) {
|
||||
// 添加括号前的部分(去掉空白)
|
||||
if (match[1].trim()) {
|
||||
result.push(match[1].trim());
|
||||
}
|
||||
// 添加括号内的内容
|
||||
if (match[2].trim()) {
|
||||
result.push(match[2].trim());
|
||||
}
|
||||
// 更新剩余的字符串
|
||||
remainingStr = remainingStr.replace(match[0], '').trim();
|
||||
}
|
||||
}
|
||||
// 如果最后还有剩余部分,也加入结果
|
||||
if (remainingStr.trim()) {
|
||||
result.push(remainingStr.trim());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// 生命周期钩子
|
||||
onShow(() => {
|
||||
//首次加载和跳转回来需要重新做个动画
|
||||
setTimeout(() => {
|
||||
changeMenu(menuIndex.value)
|
||||
}, 50)
|
||||
});
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
|
||||
.menus-father{
|
||||
margin-top: 50rpx;
|
||||
width: 100%;
|
||||
.menu{
|
||||
height: 110rpx;
|
||||
width: 230rpx;
|
||||
// background-color: #fff;
|
||||
border-radius: 60rpx;
|
||||
margin: 45rpx auto;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
// .menu-img{
|
||||
// width: 65rpx;
|
||||
// height: 65rpx;
|
||||
// margin-right: 15rpx;
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
.backgroundContainer {
|
||||
display: flex;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
// background-image: url('/static/index/lightbgcnew.png');
|
||||
// background-size: cover;
|
||||
// background-position: center center;
|
||||
background-color: #eff0f4;
|
||||
overflow: hidden;
|
||||
z-index: 12;
|
||||
}
|
||||
|
||||
//暗黑模式
|
||||
.darkbackgroundContainer {
|
||||
display: flex;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
background-image: url('/static/index/background.png');
|
||||
background-size: cover;
|
||||
background-position: center center;
|
||||
overflow: hidden;
|
||||
z-index: 11;
|
||||
}
|
||||
|
||||
.move-font {
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
pointer-events: none;
|
||||
background-color: rgb(201, 232, 255);
|
||||
border-radius: 20rpx;
|
||||
border: 2rpx solid #fff;
|
||||
width: 220rpx;
|
||||
height: 100rpx;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
font-size: 40rpx;
|
||||
box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.1);
|
||||
will-change: transform;
|
||||
}
|
||||
|
||||
.left-container {
|
||||
width: 280rpx;
|
||||
height: 100%;
|
||||
|
||||
.blue-circle-pos {
|
||||
position: relative;
|
||||
|
||||
.blue-circle {
|
||||
position: absolute;
|
||||
top: -50rpx;
|
||||
left: -68rpx;
|
||||
|
||||
.blue-circle-size {
|
||||
width: 170rpx;
|
||||
height: 250rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.left-head {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
|
||||
.left-head-img {
|
||||
width: 120rpx;
|
||||
height: 120rpx;
|
||||
margin-top: 80rpx;
|
||||
}
|
||||
|
||||
.left-head-font {
|
||||
font-weight: 700;
|
||||
font-size: 32rpx;
|
||||
}
|
||||
|
||||
.left-head-font-dark {
|
||||
font-weight: 700;
|
||||
font-size: 40rpx;
|
||||
background: linear-gradient(to right, #EBF4FF, #ADC4E0);
|
||||
-webkit-background-clip: text;
|
||||
color: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
.left-img-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
|
||||
.left-img {
|
||||
width: 93rpx;
|
||||
height: 93rpx;
|
||||
margin: 50rpx 0;
|
||||
z-index: 100;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.title-time-border-yellow {
|
||||
width: 255rpx;
|
||||
height: 189rpx;
|
||||
margin: 10rpx;
|
||||
border: 1rpx solid #dae8fa;
|
||||
background: linear-gradient(to bottom, #fff1db, #ffe2b2);
|
||||
border-radius: 20rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.title-time-border-pouple {
|
||||
width: 255rpx;
|
||||
height: 189rpx;
|
||||
margin: 10rpx;
|
||||
border: 1rpx solid #dae8fa;
|
||||
background: linear-gradient(to bottom, #f1eeff, #e3deff);
|
||||
border-radius: 20rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.title-time {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
position: relative;
|
||||
|
||||
.title-time-time {
|
||||
font-size: 32rpx;
|
||||
margin-left: 27rpx;
|
||||
margin-top: 12rpx;
|
||||
}
|
||||
|
||||
.title-time-button {
|
||||
position: absolute;
|
||||
top: -5rpx;
|
||||
right: 0rpx;
|
||||
width: 70rpx;
|
||||
height: 70rpx;
|
||||
}
|
||||
|
||||
.title-time-font {
|
||||
position: absolute;
|
||||
top: 7rpx;
|
||||
right: 5rpx;
|
||||
font-size: 23rpx;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
.down-icons {
|
||||
margin-top: 20rpx;
|
||||
width: 100%;
|
||||
height: 50rpx;
|
||||
background-color: rgb(255, 216, 126);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
.icon {
|
||||
margin: 0 5rpx;
|
||||
font-size: 20rpx;
|
||||
padding: 5rpx 10rpx;
|
||||
background-color: rgb(255, 138, 0);
|
||||
color: #fff;
|
||||
border-radius: 5rpx;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -4,7 +4,7 @@
|
|||
<view class="input-father">
|
||||
<view class="add">+86</view>
|
||||
<view class="shu"></view>
|
||||
<input style="font-size: 27rpx;" type="number" v-model="form.username" maxlength="11" placeholder="请输入手机号"
|
||||
<input style="font-size: 27rpx;height: 350rpx;" type="number" v-model="form.username" maxlength="11" placeholder="请输入手机号"
|
||||
@blur="getImg" />
|
||||
</view>
|
||||
<view class="input-father">
|
||||
|
@ -163,6 +163,9 @@
|
|||
function closebottom() {
|
||||
openbottom.value = false;
|
||||
isTarget.value = true;
|
||||
login()
|
||||
|
||||
|
||||
}
|
||||
|
||||
function closePopup() {
|
||||
|
@ -239,6 +242,7 @@
|
|||
duration: 500 // 持续时间,单位ms
|
||||
})
|
||||
uni.setStorageSync('token', res.result.token);
|
||||
uni.setStorageSync('username', form.username);
|
||||
uni.setStorageSync('realname', res.result.userInfo.realname);
|
||||
setTimeout(() => {
|
||||
jumpTo(`/pages/Initialization/index`)
|
||||
|
@ -260,7 +264,10 @@
|
|||
});
|
||||
// 生命周期钩子
|
||||
onShow(() => {
|
||||
zyupgrade.value?.check_update()
|
||||
zyupgrade.value?.check_update();
|
||||
if(uni.getStorageSync('token') && uni.getStorageSync('token')!==1){
|
||||
jumpTo(`/pages/Initialization/index`)
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
|
|
|
@ -26,8 +26,8 @@ const ballHeight = 60; // 悬浮球高度
|
|||
const longPressThreshold = 300; // 长按时间阈值(毫秒)
|
||||
|
||||
// 悬浮球当前位置
|
||||
const ballLeft = ref(1070);
|
||||
const ballTop = ref(650);
|
||||
const ballLeft = ref(600);
|
||||
const ballTop = ref(5);
|
||||
|
||||
// 用于判断是否进入拖动状态
|
||||
const isDragging = ref(false);
|
||||
|
@ -53,7 +53,6 @@ onMounted(() => {
|
|||
// 触摸开始:记录初始位置,同时启动长按定时器
|
||||
function handleTouchStart(e) {
|
||||
const touch = e.touches[0];
|
||||
// console.log("????0",touch.clientX )
|
||||
startTouchX = touch.clientX.toFixed(2);
|
||||
startTouchY = touch.clientY.toFixed(2);
|
||||
initialLeft = ballLeft.value;
|
||||
|
@ -84,14 +83,12 @@ function handleTouchMove(e) {
|
|||
if(isDragging.value){
|
||||
|
||||
const touch = e.touches[0];
|
||||
// console.log("????0",touch.clientX )
|
||||
let newLeft = initialLeft + (touch.clientX.toFixed(2) - startTouchX);
|
||||
let newTop = initialTop + (touch.clientY.toFixed(2) - startTouchY);
|
||||
// 限制左右边界:不让超出屏幕(计算时需要考虑悬浮球自身尺寸)
|
||||
newLeft = Math.max(0, Math.min(newLeft, windowWidth - ballWidth));
|
||||
// 限制上下边界
|
||||
newTop = Math.max(0, Math.min(newTop, windowHeight - ballHeight));
|
||||
|
||||
ballLeft.value = newLeft;
|
||||
ballTop.value = newTop;
|
||||
}
|
||||
|
|
|
@ -26,8 +26,8 @@ const ballHeight = 60; // 悬浮球高度
|
|||
const longPressThreshold = 300; // 长按时间阈值(毫秒)
|
||||
|
||||
// 悬浮球当前位置
|
||||
const ballLeft = ref(980);
|
||||
const ballTop = ref(650);
|
||||
const ballLeft = ref(680);
|
||||
const ballTop = ref(5);
|
||||
|
||||
// 用于判断是否进入拖动状态
|
||||
const isDragging = ref(false);
|
||||
|
|
|
@ -7,6 +7,13 @@
|
|||
</view>
|
||||
|
||||
<view class="doctorsay-container-right">
|
||||
<view class="titlebutton-father">
|
||||
<view v-for="(item,index) in jiajianArray" :key="index">
|
||||
<view class="titlebutton" @click="changeType(index)">
|
||||
{{item}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="titlebutton-father">
|
||||
<view v-for="(item,index) in buttonArray" :key="index">
|
||||
<view :class="getClassItem(index)" @click="changeTarget(index)">
|
||||
|
@ -96,15 +103,15 @@
|
|||
</scroll-view>
|
||||
</view>
|
||||
</view>
|
||||
<addball :isShow="true" @clickBall="changeType(0)" />
|
||||
<decball :isShow="true" @clickBall="changeType(1)" />
|
||||
<!-- <addball :isShow="true" @clickBall="changeType(0)" />
|
||||
<decball :isShow="true" @clickBall="changeType(1)" /> -->
|
||||
<max :isShow="true" :isZhengti="scalcType!==6" @clickBall="changeRuler" />
|
||||
<!-- <min :isShow="true" @clickBall="scalcType=24" /> -->
|
||||
<!-- 轮盘 -->
|
||||
<joystick @movecard="movecard" />
|
||||
<!-- 长按的弹出层` -->
|
||||
<view v-show="isopen" class="popup-overlay" @click="isopen=false">
|
||||
<view class="popup-overlay-content"
|
||||
<!-- <view v-show="isopen" class="popup-overlay" @click="isopen=false"> -->
|
||||
<view class="popup-overlay-content" v-show="isopen"
|
||||
:style="{ top: (2*openY - 350) + 'rpx',left: (2*openX - 780) + 'rpx',opacity: isopacity ? 1 : 0,backgroundColor:timearr[clickY]?.children[clickX]?.type==='日常'? '#fffcf6':'rgb(246, 244, 254)' }"
|
||||
@click.stop>
|
||||
<view class="popup-overlay-content-left">
|
||||
|
@ -122,7 +129,7 @@
|
|||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- </view> -->
|
||||
</view>
|
||||
</template>
|
||||
|
||||
|
@ -142,6 +149,7 @@
|
|||
darkFans : boolean
|
||||
}
|
||||
const buttonArray = ref(["全部", "日常", "周期"]);
|
||||
const jiajianArray = ref(["放大", "缩小"]);
|
||||
const buttonTarget = ref(0);
|
||||
const sysInfo = uni.getSystemInfoSync();
|
||||
const rpx2px = sysInfo.windowWidth / 750;
|
||||
|
@ -269,10 +277,9 @@
|
|||
|
||||
// 限制 scrollLeft 和 scrollTop 在有效范围内
|
||||
scrollLeft.value = Math.max(0, Math.min(scrollLeft.value, totalWidth - visibleWidth)) /2;
|
||||
// scrollTop.value = 0
|
||||
// scrollTop.value = 0// scrollTop.value = 0
|
||||
scrollTop.value = Math.max(0, Math.min(scrollTop.value, totalHeight - visibleHeight)) /2;
|
||||
|
||||
// console.log("????",scrollLeft.value,scrollTop.value,rpx2px)
|
||||
setTimeout(()=>rulerTouchClick(setTimeout(()=>rulerTouchClick(changetimearr.value[clickX.value].children[clickY.value],clickX.value,clickY.value) ,50),clickX.value,clickY.value) ,50)
|
||||
}
|
||||
}
|
||||
const clickX = ref(10);
|
||||
|
@ -288,182 +295,96 @@
|
|||
switch (newVal) {
|
||||
case 24:
|
||||
widthType.value = 92.5;
|
||||
// scrollLeft.value = 0;
|
||||
heightType.value = 102.5
|
||||
cardFont.value = 18
|
||||
centerCell();
|
||||
return
|
||||
case 23:
|
||||
widthType.value = 96.5;
|
||||
|
||||
// if(clickX.value>10){
|
||||
// scrollLeft.value = 50
|
||||
// }else{
|
||||
// scrollLeft.value = 0
|
||||
// }
|
||||
heightType.value = 102.5
|
||||
cardFont.value = 18
|
||||
centerCell();
|
||||
return
|
||||
case 22:
|
||||
widthType.value = 101;
|
||||
|
||||
// if(clickX.value>10){
|
||||
// scrollLeft.value = 100
|
||||
// }else{
|
||||
// scrollLeft.value = 0
|
||||
// }
|
||||
heightType.value = 102.5
|
||||
cardFont.value = 18
|
||||
centerCell();
|
||||
return
|
||||
case 21:
|
||||
widthType.value = 106;
|
||||
// scrollLeft.value = 159
|
||||
// if(clickX.value>10){
|
||||
// scrollLeft.value = 159
|
||||
// }else{
|
||||
// scrollLeft.value = 0
|
||||
// }
|
||||
heightType.value = 102.5
|
||||
cardFont.value = 19
|
||||
centerCell();
|
||||
return
|
||||
case 20:
|
||||
widthType.value = 112;
|
||||
// scrollLeft.value = 230
|
||||
// if(clickX.value>10){
|
||||
// scrollLeft.value = 230
|
||||
// }else{
|
||||
// scrollLeft.value = 0
|
||||
// }
|
||||
heightType.value = 102.5
|
||||
cardFont.value = 20
|
||||
centerCell();
|
||||
return
|
||||
case 19:
|
||||
widthType.value = 117;
|
||||
// scrollLeft.value = 292
|
||||
// if(clickX.value>10){
|
||||
// scrollLeft.value = 292
|
||||
// }else{
|
||||
// scrollLeft.value = 0
|
||||
// }
|
||||
heightType.value = 102.5
|
||||
cardFont.value = 21
|
||||
centerCell();
|
||||
return
|
||||
case 18:
|
||||
widthType.value = 124;
|
||||
// scrollLeft.value = 373
|
||||
// if(clickX.value>10){
|
||||
// scrollLeft.value = 373
|
||||
// }else{
|
||||
// scrollLeft.value = 0
|
||||
// }
|
||||
heightType.value = 102.5
|
||||
cardFont.value = 22
|
||||
centerCell();
|
||||
return
|
||||
case 17:
|
||||
widthType.value = 131;
|
||||
// scrollLeft.value = 395
|
||||
// if(clickX.value>10){
|
||||
// scrollLeft.value = 395
|
||||
// }else{
|
||||
// scrollLeft.value = 0
|
||||
// }
|
||||
heightType.value = 102.5
|
||||
cardFont.value = 23
|
||||
centerCell();
|
||||
return
|
||||
case 16:
|
||||
widthType.value = 139;
|
||||
// scrollLeft.value = 416
|
||||
// if(clickX.value>10){
|
||||
// scrollLeft.value = 416
|
||||
// }else{
|
||||
// scrollLeft.value = 0
|
||||
// }
|
||||
heightType.value = 102.5
|
||||
cardFont.value = 24
|
||||
centerCell();
|
||||
return
|
||||
case 15:
|
||||
widthType.value = 148;
|
||||
// scrollLeft.value = 445
|
||||
// if(clickX.value>10){
|
||||
// scrollLeft.value = 445
|
||||
// }else{
|
||||
// scrollLeft.value = 0
|
||||
// }
|
||||
heightType.value = 102.5
|
||||
cardFont.value = 25
|
||||
centerCell();
|
||||
return
|
||||
case 14:
|
||||
widthType.value = 159;
|
||||
// scrollLeft.value = 477
|
||||
// if(clickX.value>10){
|
||||
// scrollLeft.value = 477
|
||||
// }else{
|
||||
// scrollLeft.value = 0
|
||||
// }
|
||||
heightType.value = 102.5
|
||||
cardFont.value = 26
|
||||
centerCell();
|
||||
return
|
||||
case 13:
|
||||
widthType.value = 171;
|
||||
// scrollLeft.value = 515
|
||||
// if(clickX.value>10){
|
||||
// scrollLeft.value = 515
|
||||
// }else{
|
||||
// scrollLeft.value = 0
|
||||
// }
|
||||
heightType.value = 102.5
|
||||
cardFont.value = 27
|
||||
centerCell();
|
||||
return
|
||||
case 12:
|
||||
widthType.value = 185;
|
||||
// scrollLeft.value = 555
|
||||
// if(clickX.value>10){
|
||||
// scrollLeft.value = 555
|
||||
// }else{
|
||||
// scrollLeft.value = 0
|
||||
// }
|
||||
heightType.value = 102.5
|
||||
cardFont.value = 28
|
||||
centerCell();
|
||||
return
|
||||
case 11:
|
||||
widthType.value = 202;
|
||||
// scrollLeft.value = 607
|
||||
// if(clickX.value>10){
|
||||
// scrollLeft.value = 607
|
||||
// }else{
|
||||
// scrollLeft.value = 0
|
||||
// }
|
||||
heightType.value = 102.5
|
||||
cardFont.value = 29
|
||||
centerCell();
|
||||
return
|
||||
case 10:
|
||||
widthType.value = 222;
|
||||
// scrollLeft.value = 665
|
||||
// if(clickX.value>10){
|
||||
// scrollLeft.value = 665
|
||||
// }else{
|
||||
// scrollLeft.value = 0
|
||||
// }
|
||||
heightType.value = 102.5;
|
||||
cardFont.value = 30
|
||||
centerCell();
|
||||
return
|
||||
case 9:
|
||||
widthType.value = 247;
|
||||
// scrollLeft.value = 740;
|
||||
heightType.value = 140
|
||||
cardFont.value = 30
|
||||
centerCell();
|
||||
|
@ -471,28 +392,23 @@
|
|||
|
||||
case 8:
|
||||
widthType.value = 280;
|
||||
// scrollLeft.value = 850
|
||||
heightType.value = 150
|
||||
cardFont.value = 30
|
||||
centerCell();
|
||||
return
|
||||
case 7:
|
||||
widthType.value = 320;
|
||||
// scrollLeft.value = 960
|
||||
heightType.value = 160
|
||||
cardFont.value = 30
|
||||
centerCell();
|
||||
return
|
||||
case 6:
|
||||
widthType.value = 380;
|
||||
// scrollLeft.value = 1150
|
||||
heightType.value = 170
|
||||
cardFont.value = 30
|
||||
centerCell();
|
||||
return
|
||||
|
||||
}
|
||||
// centerCell();
|
||||
}
|
||||
}
|
||||
)
|
||||
|
@ -501,7 +417,7 @@
|
|||
const lastTap = ref(0)
|
||||
// 单击逻辑的定时器 ID
|
||||
const clickTimer = ref(null)
|
||||
function handleTap(item : any, index0 : number, index1 : number, e : any) {
|
||||
function handleTap(item : any, index0 : number, index1 : number) {
|
||||
const now = Date.now()
|
||||
// 先清除之前的单击定时器,防止误触
|
||||
if (clickTimer.value != null) {
|
||||
|
@ -518,11 +434,14 @@
|
|||
lastTap.value = 0 // 重置,避免连续三次触发
|
||||
} else {
|
||||
// 延迟 250ms 执行单击逻辑,以等待可能的第二次触摸
|
||||
clickTimer.value = setTimeout(() => {
|
||||
// message.value = '检测到单击事件'
|
||||
// console.log('单击逻辑执行')
|
||||
rulerTouchClick(item, index0, index1, e)
|
||||
}, 250)
|
||||
// clickTimer.value = setTimeout(() => {
|
||||
// rulerTouchClick(item, index0, index1, e)
|
||||
// }, 250)
|
||||
if(item.directiveName){
|
||||
clickX.value = index0;
|
||||
clickY.value = index1;
|
||||
}
|
||||
|
||||
lastTap.value = now
|
||||
}
|
||||
}
|
||||
|
@ -534,10 +453,9 @@
|
|||
const timer = ref<number | null>(null)
|
||||
|
||||
//表格点击开始
|
||||
const rulerTouchClick = (item : any, index0 : number, index1 : number, e : any) => {
|
||||
const rulerTouchClick = (item : any, index0 : number, index1 : number) => {
|
||||
if (item.directiveName) {
|
||||
clickX.value = index0;
|
||||
clickY.value = index1;
|
||||
|
||||
nextTick(()=>{
|
||||
const query = uni.createSelectorQuery()
|
||||
query
|
||||
|
@ -656,7 +574,6 @@
|
|||
}
|
||||
})
|
||||
})
|
||||
// changeWhiteLine()
|
||||
break;
|
||||
case 2:
|
||||
changetimearr.value = JSON.parse(JSON.stringify(timearr.value));
|
||||
|
@ -669,8 +586,6 @@
|
|||
}
|
||||
})
|
||||
})
|
||||
|
||||
// changeWhiteLine()
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -880,7 +795,7 @@
|
|||
height: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: 800rpx;
|
||||
// width: 800rpx;
|
||||
|
||||
.doctorsay-container-juzhen {
|
||||
background: linear-gradient(to right bottom, #00c9ff, #0076ff);
|
||||
|
@ -891,6 +806,7 @@
|
|||
padding: 10rpx 20rpx;
|
||||
border-radius: 20rpx;
|
||||
font-size: 27rpx;
|
||||
margin-right: 50rpx;
|
||||
}
|
||||
|
||||
.doctorsay-container-button-father {
|
||||
|
@ -1146,22 +1062,21 @@
|
|||
}
|
||||
}
|
||||
|
||||
.popup-overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
/* 添加毛玻璃效果 */
|
||||
z-index: 998;
|
||||
// .popup-overlay {
|
||||
// position: fixed;
|
||||
// top: 0;
|
||||
// left: 0;
|
||||
// right: 0;
|
||||
// bottom: 0;
|
||||
// display: flex;
|
||||
// justify-content: center;
|
||||
// align-items: center;
|
||||
// /* 添加毛玻璃效果 */
|
||||
// z-index: 998;
|
||||
|
||||
.popup-overlay-content {
|
||||
position: absolute;
|
||||
position: fixed;
|
||||
display: flex;
|
||||
// justify-content: center;
|
||||
align-items: center;
|
||||
width: 800rpx;
|
||||
height: 390rpx;
|
||||
|
@ -1172,7 +1087,6 @@
|
|||
transition: opacity 0.4s ease;
|
||||
|
||||
.popup-overlay-content-left {
|
||||
// background-color: red;
|
||||
height: 100%;
|
||||
width: 350rpx;
|
||||
display: flex;
|
||||
|
@ -1187,7 +1101,6 @@
|
|||
}
|
||||
|
||||
.popup-overlay-content-left-font {
|
||||
// margin-top: 20rpx;
|
||||
font-size: 30rpx;
|
||||
}
|
||||
}
|
||||
|
@ -1210,7 +1123,6 @@
|
|||
.time-text {
|
||||
margin-left: 10rpx;
|
||||
font-size: 30rpx;
|
||||
// font-weight: 700;
|
||||
width: 380rpx;
|
||||
margin-bottom: 50rpx;
|
||||
line-height: 35rpx;
|
||||
|
@ -1246,7 +1158,7 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// }
|
||||
|
||||
.titlebutton-father {
|
||||
display: flex;
|
||||
|
|
|
@ -33,8 +33,8 @@
|
|||
const longPressThreshold = 300; // 长按时间阈值(毫秒)
|
||||
|
||||
// 悬浮球当前位置
|
||||
const ballLeft = ref(1070);
|
||||
const ballTop = ref(550);
|
||||
const ballLeft = ref(1050);
|
||||
const ballTop = ref(650);
|
||||
|
||||
// 用于判断是否进入拖动状态
|
||||
const isDragging = ref(false);
|
||||
|
|
|
@ -9,10 +9,10 @@ export default (params) => {
|
|||
let method = params.method || "get";
|
||||
let data = params.data || {};
|
||||
let header = {
|
||||
'Blade-Auth': uni.getStorageSync('token') || '',
|
||||
'X-Access-Token': uni.getStorageSync('token') || '',
|
||||
'Content-Type': 'application/json;charset=UTF-8',
|
||||
'Authorization': 'Basic c2FiZXI6c2FiZXJfc2VjcmV0',
|
||||
'Tenant-Id': uni.getStorageSync('tenantId') || 'xxx', // avue配置相关
|
||||
// 'Tenant-Id': uni.getStorageSync('tenantId') || 'xxx', // avue配置相关
|
||||
...params.header
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
|
@ -31,7 +31,7 @@ export default (params) => {
|
|||
if (res.statusCode == 200) {
|
||||
resolve(res.data);
|
||||
} else {
|
||||
uni.clearStorageSync()
|
||||
// uni.clearStorageSync()
|
||||
switch (res.statusCode) {
|
||||
case 401:
|
||||
uni.showModal({
|
||||
|
@ -39,6 +39,7 @@ export default (params) => {
|
|||
content: "登录过期",
|
||||
showCancel: false,
|
||||
success() {
|
||||
uni.clearStorageSync()
|
||||
setTimeout(() => {
|
||||
uni.navigateTo({
|
||||
url: "/pages/login/login",
|
||||
|
|
BIN
static/ceshi.png
Before Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 1.5 MiB After Width: | Height: | Size: 706 KiB |
Before Width: | Height: | Size: 5.8 MiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.8 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 69 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 63 KiB |
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 609 KiB |
After Width: | Height: | Size: 607 KiB |
After Width: | Height: | Size: 604 KiB |
After Width: | Height: | Size: 600 KiB |
After Width: | Height: | Size: 627 KiB |
After Width: | Height: | Size: 679 KiB |
After Width: | Height: | Size: 682 KiB |
After Width: | Height: | Size: 672 KiB |
After Width: | Height: | Size: 665 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 2.2 KiB |