This commit is contained in:
Teng 2026-01-09 16:23:18 +08:00
parent 5cfa85d0e8
commit c64ff8db7b
7 changed files with 4215 additions and 2223 deletions

View File

@ -724,7 +724,7 @@
const openleft = ref(false) const openleft = ref(false)
const menutarget = ref(0) const menutarget = ref(0)
const emit = defineEmits(['swip']) const emit = defineEmits(['swip',"gospecial"])
const clickmenu = (index : number) => { const clickmenu = (index : number) => {
menutarget.value = index menutarget.value = index
let data = filteredMenu(0)[index] let data = filteredMenu(0)[index]
@ -985,15 +985,7 @@
})) }))
) )
const nusing = ()=>{ const nusing = ()=>{
uni.setStorage({ emit('gospecial',1)
key: 'myArray',
data: timearr.value,
success: function () {
uni.navigateTo({
url: `/pages/timeMatrix/indexnew`
})
},
});
} }
const jszlshow = ref(false) const jszlshow = ref(false)

View File

@ -0,0 +1,549 @@
.super-card {
display: flex;
width: 100%;
.super-card-container {
background-blend-mode: screen;
isolation: isolate;
overflow: hidden;
margin-left: 10rpx;
width: 1455rpx;
border-left: 0;
position: relative;
border-radius: 30rpx;
overflow: hidden;
border: 3rpx dashed #dde1e6;
}
.super-card-right {
border-right: 1rpx solid transparent;
border-image: repeating-linear-gradient(180deg, #A9ACB1 0px, #A9ACB1 6rpx, transparent 6rpx, transparent 12rpx) 1;
}
.super-card-time {
display: flex;
justify-content: center;
align-items: center;
height: 50rpx;
width: 289.3rpx;
border-bottom: 1rpx solid transparent;
border-image: repeating-linear-gradient(90deg, #A9ACB1 0px, #A9ACB1 6rpx, transparent 6rpx, transparent 12rpx) 1;
/* font-weight: 700; */
z-index: -1;
font-size: 25rpx;
color: #A9ACB1;
background-color: #EDF3FD;
}
.super-card-time-und {
display: flex;
justify-content: center;
align-items: center;
width: 290rpx;
flex-direction: column;
border-right: 1rpx solid transparent;
border-image: repeating-linear-gradient(180deg, #A9ACB1 0px, #A9ACB1 6rpx, transparent 6rpx, transparent 12rpx) 1;
.title-time-img {
width: 65rpx;
height: 65rpx;
margin-top: -5rpx;
}
.title-time-font-rel {
font-size: 32rpx;
font-weight: 600;
/* margin-bottom: 5rpx; */
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: black;
}
.title-time-font-tags{
font-size: 24rpx;
font-weight: 600;
/* margin-bottom: 5rpx; */
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: #999;
}
.title-time-items {
display: flex;
justify-content: space-around;
align-items: center;
.right-box-items-button {
width: 35rpx;
height: 35rpx;
margin: 0 5rpx;
}
}
}
.super-card-time-card {
display: flex;
justify-content: center;
align-items: center;
height: 234rpx;
width: 100%;
transition: all 0.8s;
border-image: repeating-linear-gradient(90deg, #A9ACB1 0px, #A9ACB1 6rpx, transparent 6rpx, transparent 12rpx) 1;
flex-direction: column;
position: relative;
}
}
.right-container {
width: calc(100% - 260rpx);
height: 100vh;
transition: opacity 1s ease;
position: relative;
margin-left: -50rpx;
.joystick {
position: absolute;
bottom: 200rpx;
left: 20rpx;
width: 300rpx;
height: 300rpx;
z-index: 9999;
}
.outer-circle {
width: 100%;
height: 100%;
border-radius: 50%;
background-color: rgba(127, 127, 127, 0.1);
position: relative;
}
.inner-circle {
width: 120rpx;
height: 120rpx;
border-radius: 50%;
background-color: rgba(127, 127, 127, 0.3);
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.doctorsay-container-view {
width: 100%;
height: 1350rpx;
display: flex;
margin-top: 62rpx;
.doctorsay-container-container {
width: 100%;
overflow: hidden;
}
}
}
.title-time-blue {
/* 你的定位与尺寸保持不变 */
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 90%;
height: 88%;
z-index: 10;
--color: #99C9FD;
--thick: 2px;
--radius: 16px;
border: var(--thick) dashed var(--color);
border-radius: var(--radius);
background:
/* 上边 */
repeating-linear-gradient(90deg, var(--color) 0 var(--dash), transparent 0 calc(var(--dash) + var(--gap))) top left / 100% var(--thick) no-repeat,
/* 下边 */
repeating-linear-gradient(90deg, var(--color) 0 var(--dash), transparent 0 calc(var(--dash) + var(--gap))) bottom left / 100% var(--thick) no-repeat,
/* 左边 */
repeating-linear-gradient(0deg, var(--color) 0 var(--dash), transparent 0 calc(var(--dash) + var(--gap))) top left / var(--thick) 100% no-repeat,
/* 右边 */
repeating-linear-gradient(0deg, var(--color) 0 var(--dash), transparent 0 calc(var(--dash) + var(--gap))) top right / var(--thick) 100% no-repeat;
}
.time-button-orange-spe {
transition: all 1s;
position: absolute;
width: 280rpx;
height: 100rpx;
padding: 0 20rpx;
border-radius: 20rpx;
border-top-right-radius: 0rpx;
border: 2rpx solid #e8e9eb;
background-color: #fff;
color: #545569;
bottom: -100rpx;
left: -130rpx;
display: flex;
justify-content: center;
align-items: center;
z-index: 999;
}
.time-button-orange {
transition: all 1s;
position: absolute;
width: 280rpx;
height: 100rpx;
border-radius: 20rpx;
padding: 0 20rpx;
border: 2rpx solid #e8e9eb;
border-bottom-right-radius: 0rpx;
background-color: #fff;
top: -90rpx;
left: -130rpx;
color: #545569;
display: flex;
justify-content: center;
align-items: center;
z-index: 999;
}
.title-time {
display: flex;
width: 100%;
position: relative;
height: 100%;
padding: 20rpx;
.card-time{
position: absolute;
bottom: 20rpx;
left: 20rpx;
font-size: 27rpx;
}
.card-time-red{
position: absolute;
bottom: 20rpx;
left: 20rpx;
font-size: 27rpx;
color: #E33B3B;
}
.card-time-blue{
position: absolute;
bottom: 20rpx;
left: 20rpx;
font-size: 27rpx;
color: #4690FF;
}
.title-time-time {
font-size: 32rpx;
margin: 0 auto;
font-weight: 600;
}
.title-time-button {
position: absolute;
top: -6rpx;
right: -4rpx;
width: 55rpx;
height: 40rpx;
}
.title-time-font {
position: absolute;
top: 0rpx;
right: 4rpx;
font-size: 20rpx;
color: #1083f8;
}
}
.title-time-border {
margin-top: 4rpx;
margin-left: 4rpx;
width: calc(100% - 8rpx);
height: calc(100% - 8rpx);
border-radius: 20rpx;
display: flex;
align-items: center;
flex-direction: column;
}
.title-time-border-big {
transform: scale(1.3);
transform-origin: top;
border-top: 0rpx solid #fff;
transition: transform 0.5s ease-out, opacity 0.5s ease-out;
z-index: 999;
display: flex;
justify-content: center;
align-items: center;
height: 226rpx;
width: 100%;
border-image: repeating-linear-gradient(90deg, #0184db 0px, #0184db 6rpx, transparent 6rpx, transparent 12rpx) 1;
flex-direction: column;
position: relative;
}
.title-time-border-big-top {
transform: scale(1.3);
transform-origin: top;
border-top: 0rpx solid #fff;
transition: transform 0.5s ease-out, opacity 0.5s ease-out;
z-index: 999;
display: flex;
justify-content: center;
align-items: center;
height: 226rpx;
width: 100%;
border-image: repeating-linear-gradient(90deg, #0184db 0px, #0184db 6rpx, transparent 6rpx, transparent 12rpx) 1;
flex-direction: column;
position: relative;
}
.title-time-border-yellow {
margin: 10rpx;
border: 2rpx solid #e5e6e6;
width: calc(100% - 40rpx);
height: calc(100% - 40rpx);
border-radius: 20rpx;
display: flex;
align-items: center;
background-color: #F7F8F9;
flex-direction: column;
}
.title-time-border-hisOk{
margin: 10rpx;
border: 2rpx solid #D4E4FE;
width: calc(100% - 40rpx);
height: calc(100% - 40rpx);
border-radius: 20rpx;
display: flex;
align-items: center;
background-color: #F6F9FF;
flex-direction: column;
}
.title-time-border-current{
margin: 10rpx;
border: 3rpx dashed #4690FF;
width: calc(100% - 40rpx);
height: calc(100% - 40rpx);
border-radius: 20rpx;
display: flex;
align-items: center;
background-color: #F6F9FF;
flex-direction: column;
}
.title-time-border-hisFaild{
margin: 10rpx;
border: 2rpx dashed #FFE2E2;
width: calc(100% - 40rpx);
height: calc(100% - 40rpx);
border-radius: 20rpx;
display: flex;
align-items: center;
background-color: #FFF8F8;
flex-direction: column;
}
.title-time-border-yellow-active-transparent {
margin: 10rpx;
width: calc(100% - 40rpx);
height: calc(100% - 40rpx);
border-radius: 20rpx;
display: flex;
align-items: center;
flex-direction: column;
opacity: 0.3;
background-color: rgba(255, 255, 255, 0.5);
}
.title-time-border-yellow-active {
margin: 10rpx;
border: 1rpx solid #dae8fa;
width: calc(100% - 40rpx);
height: calc(100% - 40rpx);
border-radius: 20rpx;
display: flex;
align-items: center;
flex-direction: column;
animation: shakesmall 0.8s infinite;
background-color: rgba(255, 255, 255, 0.5);
}
@keyframes shakesmall {
0% {
transform: rotate(-2deg);
}
25% {
transform: rotate(2deg);
}
50% {
transform: rotate(-2deg);
}
75% {
transform: rotate(2deg);
}
100% {
transform: rotate(-2deg);
}
}
.boom-father {
position: absolute;
top: 110rpx;
left: -17rpx;
width: 60rpx;
height: 1170rpx;
margin-top: 0rpx;
overflow: hidden;
z-index: 999;
}
.boom {
height: 3000rpx;
display: flex;
flex-direction: column;
overflow: hidden;
z-index: 0;
.boom-son {
height: 234rpx;
width: 60rpx;
font-size: 30rpx;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
z-index: 10;
font-size: 22rpx;
color: #A9ACB1;
.boom-text {
width: 30rpx;
height: 50rpx;
border: 2rpx dashed #A9ACB1;
border-radius: 20rpx;
display: flex;
justify-content: center;
align-items: center;
z-index: 1;
background-color: #eff0f4;
}
}
.boom-son-target {
height: 250rpx;
width: 60rpx;
font-size: 30rpx;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
z-index: 10;
font-weight: 700;
font-size: 25rpx;
color: #A9ACB1;
background: linear-gradient(to bottom, #ff8a00, #eceaff);
}
}
.left-top {
border-top-left-radius: 0 !important;
}
.right-top {
border-top-right-radius: 0 !important;
}
.left-bottom {
border-bottom-left-radius: 0 !important
}
.right-bottom {
border-bottom-right-radius: 0 !important;
}
.xian-bian {
height: 100%;
position: absolute;
top: 0;
left: 0;
z-index: 999;
border-right: 1rpx solid transparent;
border-image: repeating-linear-gradient(180deg, #A9ACB1 0px, #A9ACB1 6rpx, transparent 6rpx, transparent 12rpx) 1;
}
.pulic-time {
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
color: #99C9FD;
font-size: 35rpx;
font-weight: 600;
}
.right-order{
position: fixed;
right: 20rpx;
top: 62rpx;
height: 1220rpx;
width: 430rpx;
background-color: #fff;
border-radius: 30rpx;
.order-title{
width: 100%;
height: 100rpx;
display: flex;
align-items: center;
.order-month{
margin-left: 30rpx;
font-size: 30rpx;
font-weight: 600;
width: 80rpx;
}
.order-day{
width: 300rpx;
height: 100rpx;
.days-father{
display: flex;
align-items: center;
.days{
height: 100rpx;
min-width: 50rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 26rpx;
color: #BBBABA;
}
.targetdays{
height: 50rpx;
min-width: 50rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 26rpx;
color: #fff;
border-radius: 50%;
background-color: #4690FF;
}
}
}
}
}

View File

@ -0,0 +1,619 @@
<!-- 护嘱 -->
<template>
<view class="right-container" :style="isshow?{opacity: `1`}:{opacity: `0`}">
<view class="doctorsay-container-view">
<view class="doctorsay-container-container">
<view class="super-card">
<view class="boom-father">
<view class="boom" :style="{ transform: transformStyle }">
<view>
<view v-for="(item,index) in timeArray" :key="index">
<view class="boom-son">
<text class="boom-text">
{{item}}
</text>
</view>
</view>
</view>
</view>
</view>
<view class="super-card-container">
<scroll-view style="width: 100%;" scroll-with-animation :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" class="super-card-right">
<view class="super-card-time">
{{(item0.positioning.length == 1 ? ('0' + item0.positioning) : item0.positioning) + ":00"}}
</view>
</view>
</view>
<view style="display: flex;height: 1165rpx;position: relative;">
<view class="xian-bian"></view>
<scroll-view style="height: 100%;width:6960rpx;background-color: #fff;"
:scroll-top="scrollTop" scroll-with-animation :scroll-y="true"
@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)"
:data-index0="index0" :data-index1="index1">
<view class="title-time-blue"
v-show="saveEditIndex.index0 == index0 && saveEditIndex.index1 == index1 && isRule">
</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"
style="flex-direction: column;">
<view v-if="item1.startTime"
class="title-time-font-rel">
{{ item1.directiveName?splitString(item1.directiveName)[0]:""}}
</view>
<view
v-if="item1.startTime&&splitString(item1.directiveName)[1]"
class="title-time-font-tags">
({{ item1.directiveName?splitString(item1.directiveName)[1]:""}})
</view>
<view v-if="item1.startTime" :class="getFontClass(item1)" >
{{ `${parseHourMinutestring(item1.startTime).hour}:${parseHourMinutestring(item1.startTime).minute}-${parseHourMinutestring(item1.endTime).hour}:${parseHourMinutestring(item1.endTime).minute}` }}
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</scroll-view>
</view>
</scroll-view>
</view>
<view class="right-order">
<view class="order-title">
<view class="order-month">
{{ selectdata.month }}
</view>
<scroll-view class="order-day" scroll-with-animation :scroll-x="true"
:scroll-left="movetime">
<view class="days-father">
<view :class="daytarget===index? `targetdays` :`days`"
v-for="(item,index) in daysarray" :key="index" @click="clickday(item,index)">
{{ item }}
</view>
</view>
</scroll-view>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script setup lang="ts">
import { ref, onMounted, onBeforeUnmount, computed, nextTick, watch } from 'vue';
import { onShow, onHide } from '@dcloudio/uni-app';
import { getNclist, addBatch, addDirective, addInstant, deleteDirective, deleteInstant, editDirective, getDirectiveOrders } from "./api.js";
import { myArray } from './yaoshandiao.js';
const props = defineProps({
isshow: {
type: Boolean,
required: true,
},
});
// watch(
// () => props.isshow,
// (newVal, oldVal) => {
// //
// if (newVal !== oldVal) {
// }
// }
// )
const bodystatus = ref(false);
const bodystatustarget = ref(-1);
const facestatus = ref(false);
const facestatustarget = ref(-1);
/* ---- transform ----
注意虽然这是响应式但我们只在 rAF 里更新它受控更新避免频繁触发 Vue 渲染 */
const transformStyle = ref('translate3d(0, 0, 0)');
/* rAF / 计数器变量 */
let lastY = 0;
let ticking = false;
const bodydonghua = ref(false)
const openbody = ref(false)
const openface = ref(false)
const hournow = ref(new Date().getHours());
//
const dateref = ref(getTodayObj())
function getTodayObj() {
const d = new Date()
const month = String(d.getMonth() + 1).padStart(2, '0')
const day = String(d.getDate()).padStart(2, '0')
return {
year: d.getFullYear(),
month,
day
}
}
const selectdata = ref({
year: 0,
month: "",
day: ""
})
const daysarray = ref([]);
const movetime = ref(0)
function generateDayArray() {
const selY = Number(selectdata.value.year)
const selM = Number(selectdata.value.month)
// / 1-12
if (!Number.isFinite(selY) || !Number.isFinite(selM) || selM < 1 || selM > 12) {
return []
}
const todayY = Number(dateref.value.year)
const todayM = Number(dateref.value.month) // dateref.month "01"
const todayD = Number(dateref.value.day)
let endDay = 0
if (selY === todayY && selM === todayM) {
//
endDay = todayD;
} else {
// new Date(year, month, 0).getDate()
// month 1-12
endDay = new Date(selY, selM, 0).getDate()
}
daysarray.value = Array.from({ length: endDay }, (_, i) => String(i + 1).padStart(2, '0'))
// console.log("", daysarray.value)
if (selY === todayY && selM === todayM) {
movetime.value = 9998;
daytarget.value = daysarray.value.length - 1
} else {
movetime.value = 0.001;
daytarget.value = 0
setTimeout(() => {
movetime.value = 0;
}, 50)
}
// ["01","02",...]
}
const daytarget = ref(0)
const clickday = (item : string, index : number) => {
daytarget.value = index
}
const facedonghua = ref(false)
const open = ref(false);
const bottomItems = ref([])
const nameArray = [
`标准`, `超重`, `强直`, `偏瘫`, `佝偻`, `稳定`, `焦虑`, `抑郁`, `暴力`, `恐惧`, `烦躁`, `易怒`, `臆想`,
]
const timeArray = [
`00`, `05`, `10`, `15`, `20`, `25`, `30`, `35`, `40`, `45`, `50`, `55`
];
const weekDays = ["周一", "周二", "周三", "周四", "周五", "周六", "周日"];
const days = Array.from({ length: 31 }, (_, i) => (i + 1).toString().padStart(2, "0"));
const isweek = ref(true);
//
const iszhouqi = ref(false);
//
const firsttop = ref(0);
const secondtop = ref(0);
const scrollLeft = ref(0);
const cardLeft = ref(678);
//
const scrollTop = ref(0)
//
const downList = ref<any>()
const isop = ref(false);
const bigArray = ref([]);
const isopen = ref(false)
const songisopen = ref(false)
const isopacity = ref(false)
const songisopacity = ref(false)
//
const deleteisopen = ref(false);
const deletename = ref("")
const deleteisopacity = ref(false)
//
const sayisopen = ref(false);
const sayname = ref("")
const sayisopacity = ref(false)
const saveleft = ref(6);
const saveright = ref(11);
const savetop = ref(0);
const savebottom = ref(3);
const isMove = ref(false);
const getjiao = computed(() => {
if (jiao.value[0] && jiao.value[1]) {
return "left-bottom"
} else if (!jiao.value[0] && jiao.value[1]) {
return "right-bottom"
} else if (jiao.value[0] && !jiao.value[1]) {
return "left-top"
} else {
return "right-top"
}
})
const getFontClass = (item:any) => {
switch (item.executeStatus) {
case 'hisFaild':
return 'card-time-red';
case 'current':
return 'card-time-blue';
default:
return 'card-time';
}
}
//
const secondtemp = ref([])
//
const lastTap = ref(0)
// ms
const DOUBLE_TAP_DELAY = 300
//
const isempty = ref(false);
const isRule = ref(false);
const topindex = ref(-1)
const isDelete = ref(false);
//
function pseudoRandom(index0, index1) {
const seed = index0 * 55.9898 + index1 * 78.233;
//
return Math.abs(Math.sin(seed) * 43758.5453) % 1;
}
function computeDelay(index0, index1) {
const range = 2; // 0 ~ 2
return pseudoRandom(index0, index1) * range;
}
//
let throttleTimer = null;
//
/* 兼容:如果不支持 requestAnimationFrame就用 setTimeout */
const requestAnimationFrame =
typeof window !== 'undefined' && window.requestAnimationFrame
? window.requestAnimationFrame
: (cb) => setTimeout(cb, 16);
function handleScrolltime(e) {
// uni-app scroll e.detail.scrollTop
//
const scrollTop = (e && e.detail && (e.detail.scrollTop ?? e.detail.scrollY)) || 0;
lastY = scrollTop;
//
if (!ticking) {
ticking = true;
requestAnimationFrame(() => {
// transform scrollTop
// 使 translate3d GPU
transformStyle.value = `translate3d(0, -${lastY}px, 0)`;
ticking = false;
});
}
}
const leftIn = ref(0)
function handleTop(e) {
leftIn.value = e.detail.scrollLeft
}
//
const getClass = (item, index0, index1) => {
if (item.startTime) {
switch (item.executeStatus) {
case 'hisOk':
return 'title-time-border-hisOk';
case 'hisFaild':
return 'title-time-border-hisFaild';
case 'current':
return 'title-time-border-current';
case 'future':
return 'title-time-border-yellow';
}
}
return 'title-time-border';
}
//
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 upmenuIndex = ref<number>(1);
const downmenuIndex = ref<number>(0);
const downdonghua = ref(-1);
const thirdmenuIndex = ref<number>(0);
const forthmenuIndex = ref<number>(0);
const saveEditIndex = ref({
index0: -1,
index1: -1
})
const timer = ref(null);//
const elementsInfo = ref({})//
const moveX = ref(0)
const moveY = ref(0)
const openX = ref(0)
const openY = ref(0)
const flyNumber = ref({
index0: 999,
index1: 999,
// tagName: ''
})
const deletedownisopacity = ref(false);
const touchindex1 = ref(-1);
const jiao = ref([false, false])
//
const showDetail = ref([-1, -1])
const rulerTouchClick = (item : any, index0 : number, index1 : number) => {
isDelete.value = false;
saveEditIndex.value.index0 = index0;
saveEditIndex.value.index1 = index1;
centerCell();
isRule.value = true;
}
const shakyTable = ref(false);
const saveX = ref(0);
const saveY = ref(0);
const indexsave = ref([-1, -1]);
const buttonBlue = ref(false)
let animTimer = null
//
const saveRulerTime = ref({
index0: -1,
index1: -1
})
const targetRuler = ref({
index0: -1,
index1: -1,
current: -1,
bordershow: true
})
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;
saveRulerTime.value.index1 = targetRuler.value.index1;
targetRuler.value.bordershow = false;
setTimeout(() => {
targetRuler.value.index0 = -1;
targetRuler.value.index1 = -1;
targetRuler.value.current = -1
}, 400)
setTimeout(() => {
targetRuler.value.bordershow = true;
saveRulerTime.value.index0 = -1;
saveRulerTime.value.index1 = -1;
}, 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 => ({
// tagName: time, // '00', '05'
directiveName: '' // directiveName
}))
}))
)
const geteverything = () => {
if (uni.getStorageSync('nuId') && uni.getStorageSync('elderId')) {
getTable()
}
}
//
function parseHourMinutestring(startTime) {
// "YYYY-MM-DD HH:MM:SS"
const parts = startTime.split(' ');
if (parts.length < 2) return { hour: NaN, minute: NaN };
const [hh, mm] = parts[1].split(':');
return { hour: hh, minute: mm };
}
// (number)
function parseHourMinute(startTime) {
// "YYYY-MM-DD HH:MM:SS"
const parts = startTime.split(' ');
if (parts.length < 2) return { hour: NaN, minute: NaN };
const [hh, mm] = parts[1].split(':');
return { hour: Number(hh), minute: Number(mm) };
}
const getTable = () => {
let time = `${selectdata.value.year}-${selectdata.value.month}-${selectdata.value.day}`
getDirectiveOrders(time).then((data) => {
// console.log("data",data.result.all)
timearr.value = Array.from({ length: 24 }, (_, hour) => ({
positioning: hour.toString(),
children: minuteArr.map(time => ({
// tagName: time, // '00', '05'
directiveName: '' // directiveName
}))
}))
data.result.all.forEach((element : any) => {
element.positioning = parseHourMinute(element.startTime).hour;
element.positioningLong = parseHourMinute(element.startTime).minute / 5;
timearr.value[element.positioning].children[element.positioningLong] = element;
})
})
}
const savePackagelist = ref([]);
onMounted(() => {
selectdata.value = dateref.value;
generateDayArray()
savePackagelist.value = uni.getStorageSync('Packagelist') || []
let res = uni.getStorageSync('saveTree0')
let goodArray = []
myArray.forEach((element : any) => {
element.children.forEach((element1 : any) => {
goodArray.push({
name: element1.title,
url: element1.url,
})
})
})
secondtemp.value = goodArray
if (res.result) {
bigArray.value = res.result;
}
downList.value = bigArray.value[0].children
upmenuIndex.value = -1;
downdonghua.value = -1;
setTimeout(() => {
upmenuIndex.value = 0;
downdonghua.value = 0;
}, 50)
uni.$on('where', findback);
downdonghua.value = 0;
geteverything()
scrollTop.value = 0.001
nextTick(() => {
scrollTop.value = 0
timeNowMove()
})
})
const bodyTagListLook = ref([]);
const emotionTagListLook = ref([]);
const cansumit = ref(false);
onBeforeUnmount(() => {
if (animTimer) clearTimeout(animTimer)
uni.$off('where', findback);
ticking = false;
})
function findback(data : any) {
// solveWatch.value = 3;
whereEvent(data)
}
// bigArray
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;
}
const totalColumns = 24; //
const totalRows = 11; //
const visibleWidth = 1455; // (rpx) scalcType * widthType 2220
const visibleHeight = 1170; // (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) * 290;
const cellCenterY = (saveEditIndex.value.index1 + 0.5) * 234;
// scrollLeft scrollTop使
cardLeft.value = cellCenterX - visibleWidth / 2;
scrollTop.value = cellCenterY - visibleHeight / 2;
//
const totalWidth = totalColumns * 290;
const totalHeight = totalRows * 234;
// scrollLeft scrollTop
cardLeft.value = Math.max(0, Math.min(cardLeft.value, totalWidth - visibleWidth)) / 2 + 0.7;
// scrollTop.value = 0
scrollTop.value = Math.max(0, Math.min(scrollTop.value, totalHeight - visibleHeight)) / 2;
}
}
//
function timeNowMove() {
const cellCenterX = (hournow.value + 0.5) * 290;
let width = cellCenterX - visibleWidth / 2;
const totalWidth = totalColumns * 290;
cardLeft.value = Math.max(0, Math.min(width, totalWidth - visibleWidth)) / 2 + 0.7;
}
const iszhiling = ref(false)
const zhilingbao = () => {
iszhiling.value = !iszhiling.value
forthmenuIndex.value = 0;
}
const deletedonghua = ref(false);
</script>
<style lang="less" scoped>
// css
@import './bigindex';
</style>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,8 @@
<!-- 左侧菜单 --> <!-- 左侧菜单 -->
<leftcontent :list="arrlist" @navurl="navurl"></leftcontent> <leftcontent :list="arrlist" @navurl="navurl"></leftcontent>
<!-- 主页 --> <!-- 主页 -->
<index :isShow="menuIndex==0" v-if="swipedex==0" @swip="swip"/> <index :isShow="menuIndex==0" v-if="swipedex==0&&!specialPage" @swip="swip" @gospecial="gospecial" />
<bignurse :isshow="menuIndex==0" v-if="swipedex==0&&specialPage==1&&uni.getStorageSync('elderId')&&uni.getStorageSync('nuId')" />
<!-- 户嘱页 --> <!-- 户嘱页 -->
<nurse :isshow="menuIndex==1" v-if="swipedex==1&&uni.getStorageSync('elderId')&&uni.getStorageSync('nuId')" /> <nurse :isshow="menuIndex==1" v-if="swipedex==1&&uni.getStorageSync('elderId')&&uni.getStorageSync('nuId')" />
<!-- 医嘱 --> <!-- 医嘱 -->
@ -36,11 +37,22 @@
import requestform from "./component/pleasetake/takehome.vue" import requestform from "./component/pleasetake/takehome.vue"
import doctorask from "./component/doctorask/doctorask.vue" import doctorask from "./component/doctorask/doctorask.vue"
import nurse from "./component/nurse/index.vue" import nurse from "./component/nurse/index.vue"
import { onShow } from '@dcloudio/uni-app'; import bignurse from "./component/nurse/bigindex.vue"
import { onBackPress,onShow } from '@dcloudio/uni-app';
import { getNcPackagelist } from './component/nurse/api.js' import { getNcPackagelist } from './component/nurse/api.js'
import leftcontent from "./component/leftcontent/leftcontent.vue" import leftcontent from "./component/leftcontent/leftcontent.vue"
import defaultr from '@/pages/procurement/components/default.vue'; import defaultr from '@/pages/procurement/components/default.vue';
onBackPress(() => {
if(specialPage.value){
specialPage.value --
return true; //
}else{
return false; //
}
})
const listarr = ref([]); const listarr = ref([]);
onMounted(() => { onMounted(() => {
menuIndex.value = 0; menuIndex.value = 0;
@ -55,7 +67,9 @@
listarr.value = res.result ; listarr.value = res.result ;
}) })
}) })
const gospecial = (index:number) => {
specialPage.value = index
}
// //
function genPaths(base, prefix, count, ext = 'png', startIndex = 0, pad = false) { function genPaths(base, prefix, count, ext = 'png', startIndex = 0, pad = false) {
return Array.from({ length: count }, (_, i) => { return Array.from({ length: count }, (_, i) => {
@ -71,8 +85,10 @@
{ name: '后勤矩阵', url: '/static/shouye/sy/l0.png', urls: '/static/shouye/sy/l1.png' ,type:'kzgn_hqjz'}, { name: '后勤矩阵', url: '/static/shouye/sy/l0.png', urls: '/static/shouye/sy/l1.png' ,type:'kzgn_hqjz'},
{ name: '库房矩阵', url: '/static/shouye/sy/l0.png', urls: '/static/shouye/sy/l1.png' ,type:'kzgn_kfjz'}, { name: '库房矩阵', url: '/static/shouye/sy/l0.png', urls: '/static/shouye/sy/l1.png' ,type:'kzgn_kfjz'},
]) ])
const specialPage = ref(0)
const navurl = (e,v) => { const navurl = (e,v) => {
swipedex.value = -1; swipedex.value = -1;
specialPage.value = 0
switch (v.type){ switch (v.type){
case 'hldy': case 'hldy':
swipedex.value = 0; swipedex.value = 0;
@ -278,7 +294,7 @@
position: relative; position: relative;
width: 100%; width: 100%;
height: 100vh; height: 100vh;
background-color: #eff0f4; background-color: #f2f3f8;
overflow: hidden; overflow: hidden;
z-index: 12; z-index: 12;
} }