This commit is contained in:
Teng 2025-07-31 17:26:06 +08:00
parent 44107b343e
commit 7e3211d192
533 changed files with 9555 additions and 4355 deletions

View File

@ -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"
});
}

View File

@ -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)
}
}
//

View File

@ -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>

View File

@ -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>

151
component/public/exit.vue Normal file
View File

@ -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>

243
component/public/reset.vue Normal file
View File

@ -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>

View File

@ -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);

View File

@ -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>

View File

@ -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);
//
//
//0123
// 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>

View File

@ -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
View File

@ -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

View File

@ -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" : {

View File

@ -24,6 +24,13 @@
"navigationStyle": "custom"
}
},
{
"path": "pages/NursingNew/index",
"style": {
"navigationStyle": "custom"
}
},
//
{

View File

@ -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,
}
})
}

View File

@ -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) => {

View File

@ -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';

View File

@ -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;">
NUID2508000001
</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: '康复类'
},
])
// 使watchisShow
const transition = ref(true);
watch(
() => props.isShow,
(newVal, oldVal) => {
// falsetrue0.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>

View File

@ -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);

View File

@ -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`">
ID12345678
<text style="margin-left: 30rpx;">
NUID2508000001
</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);
//
//
//0123
// 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>

View File

View File

@ -0,0 +1,4 @@
export type Link = {
url : string;
targetUrl : string;
};

639
pages/NursingNew/index.vue Normal file
View File

@ -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);
//xy
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>

View File

@ -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>

View File

@ -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;
}

View File

@ -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);

View File

@ -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;

View File

@ -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);

View File

@ -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",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 706 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 609 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 607 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 627 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 679 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 682 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 672 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 665 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Some files were not shown because too many files have changed in this diff Show More