Merge branch 'main' of http://47.115.223.229:8888/yangjun/hldy_app_mini
This commit is contained in:
commit
16085eb4dd
|
|
@ -740,7 +740,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]
|
||||||
|
|
@ -1005,15 +1005,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)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -105,4 +105,12 @@ export const editDirective = (params) => {
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: params,
|
data: params,
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据日期查询日程表
|
||||||
|
export const getDirectiveOrders = (date) => {
|
||||||
|
return request({
|
||||||
|
url: `${uni.getStorageSync('serverUrl')}/api/pad/care/directive/getDirectiveOrders?nuId=${uni.getStorageSync('nuId')}&elderId=${uni.getStorageSync('elderId')}&queryDate=${date}`,
|
||||||
|
method: 'get',
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -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
|
|
@ -551,44 +551,33 @@
|
||||||
isolation: isolate;
|
isolation: isolate;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
margin-left: 10rpx;
|
margin-left: 10rpx;
|
||||||
width: 1455rpx;
|
width: 1300rpx;
|
||||||
/* height: 1460rpx; */
|
height: 1350rpx;
|
||||||
border-left: 0;
|
border-left: 0;
|
||||||
position: relative;
|
position: relative;
|
||||||
border-radius: 30rpx;
|
|
||||||
overflow: hidden;
|
|
||||||
border: 3rpx dashed #dde1e6;
|
|
||||||
|
|
||||||
/* border-image: repeating-linear-gradient(90deg, #A9ACB1 0px, #A9ACB1 6rpx, transparent 6rpx, transparent 12rpx) 1; */
|
|
||||||
/* background-color: red; */
|
|
||||||
}
|
|
||||||
.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 {
|
.super-card-time {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
|
||||||
height: 50rpx;
|
height: 80rpx;
|
||||||
width: 289.3rpx;
|
width: 259rpx;
|
||||||
border-bottom: 1rpx solid transparent;
|
border-bottom: 1rpx solid transparent;
|
||||||
border-image: repeating-linear-gradient(90deg, #A9ACB1 0px, #A9ACB1 6rpx, transparent 6rpx, transparent 12rpx) 1;
|
border-image: repeating-linear-gradient(90deg, #A9ACB1 0px, #A9ACB1 6rpx, transparent 6rpx, transparent 12rpx) 1;
|
||||||
/* font-weight: 700; */
|
/* font-weight: 700; */
|
||||||
z-index: -1;
|
z-index: -1;
|
||||||
font-size: 25rpx;
|
font-size: 25rpx;
|
||||||
color: #A9ACB1;
|
color: #A9ACB1;
|
||||||
background-color: #EDF3FD;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.super-card-time-und {
|
.super-card-time-und {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
width: 290rpx;
|
width: 259rpx;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
border-right: 1rpx solid transparent;
|
border-right: 1rpx solid transparent;
|
||||||
border-image: repeating-linear-gradient(180deg, #A9ACB1 0px, #A9ACB1 6rpx, transparent 6rpx, transparent 12rpx) 1;
|
border-image: repeating-linear-gradient(180deg, #A9ACB1 0px, #A9ACB1 6rpx, transparent 6rpx, transparent 12rpx) 1;
|
||||||
|
|
||||||
|
|
@ -624,13 +613,12 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
height: 227rpx;
|
height: 200rpx;
|
||||||
width: 100%;
|
width: calc(100%);
|
||||||
transition: all 0.8s;
|
transition: all 0.8s;
|
||||||
border-image: repeating-linear-gradient(90deg, #A9ACB1 0px, #A9ACB1 6rpx, transparent 6rpx, transparent 12rpx) 1;
|
border-image: repeating-linear-gradient(90deg, #A9ACB1 0px, #A9ACB1 6rpx, transparent 6rpx, transparent 12rpx) 1;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
position: relative;
|
position: relative;
|
||||||
/* background-color: #fff; */
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -639,7 +627,6 @@
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
transition: opacity 1s ease;
|
transition: opacity 1s ease;
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-left: -30rpx;
|
|
||||||
|
|
||||||
.joystick {
|
.joystick {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
|
@ -673,7 +660,8 @@
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 1350rpx;
|
height: 1350rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
margin-top: 80rpx;
|
/* background-color: red; */
|
||||||
|
/* margin-top: 10rpx; */
|
||||||
|
|
||||||
.doctorsay-container-container {
|
.doctorsay-container-container {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
@ -1314,7 +1302,6 @@
|
||||||
// justify-content: center;
|
// justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1328,8 +1315,8 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
height: 226rpx;
|
height: 200rpx;
|
||||||
width: 100%;
|
width: calc(100%);
|
||||||
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;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
@ -1345,8 +1332,8 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
height: 226rpx;
|
height: 200rpx;
|
||||||
width: 100%;
|
width: calc(100%);
|
||||||
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;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
@ -1499,13 +1486,18 @@
|
||||||
|
|
||||||
.boom-father {
|
.boom-father {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 130rpx;
|
top: 220rpx;
|
||||||
left: -17rpx;
|
left: -17rpx;
|
||||||
width: 60rpx;
|
width: 60rpx;
|
||||||
height: 1130rpx;
|
height: 1000rpx;
|
||||||
margin-top: 0rpx;
|
margin-top: 10rpx;
|
||||||
|
/* background-color: red; */
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
|
/* background: linear-gradient(to bottom, #c4dbf4, #c9c2ef, #c6dcf3); */
|
||||||
|
/* border-bottom: 2rpx solid #fff; */
|
||||||
|
/* border-left: 2rpx solid #fff; */
|
||||||
|
/* border-bottom-left-radius: 20rpx; */
|
||||||
}
|
}
|
||||||
|
|
||||||
.doctorsay-container-card-font-dark {
|
.doctorsay-container-card-font-dark {
|
||||||
|
|
@ -1516,7 +1508,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.boom {
|
.boom {
|
||||||
height: 3000rpx;
|
height: 2500rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
/* // justify-content: center; */
|
/* // justify-content: center; */
|
||||||
|
|
@ -1526,7 +1518,7 @@
|
||||||
|
|
||||||
|
|
||||||
.boom-son {
|
.boom-son {
|
||||||
height: 226rpx;
|
height: 200rpx;
|
||||||
width: 60rpx;
|
width: 60rpx;
|
||||||
font-size: 30rpx;
|
font-size: 30rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,123 @@
|
||||||
<template>
|
<template>
|
||||||
<view class="right-container" :style="isshow?{opacity: `1`}:{opacity: `0`}"
|
<view class="right-container" :style="isshow?{opacity: `1`}:{opacity: `0`}"
|
||||||
@click="bottomisShaking=false;shakyTable = false">
|
@click="bottomisShaking=false;shakyTable = false">
|
||||||
|
<view class="right-container-title-nav">
|
||||||
|
<text style="margin-left: 30rpx;">
|
||||||
|
NUID:{{ uni.getStorageSync('nuId')}}
|
||||||
|
</text>
|
||||||
|
<text class="new-weight">
|
||||||
|
{{ uni.getStorageSync('nuName')}}
|
||||||
|
</text>
|
||||||
|
<view class="right-icons">
|
||||||
|
<view style="display: flex;align-items: center;margin-right: 25rpx;padding: 0 15rpx;"
|
||||||
|
:class="!topindex&&!bodystatus&&!facestatus?'firsttarget':''">
|
||||||
|
<view class="mark">
|
||||||
|
<view style="margin-right: 15rpx;">
|
||||||
|
老人标签:
|
||||||
|
</view>
|
||||||
|
<view class="overlay" v-show="openbody" @click="openbody=false"></view>
|
||||||
|
</view>
|
||||||
|
<view class="marknone" @click="openbody=!openbody;openface=false">
|
||||||
|
<view v-if="!bodyTagListLook.length&&!emotionTagListLook.length" style="margin-top: -3rpx;">
|
||||||
|
未选择
|
||||||
|
</view>
|
||||||
|
<view v-for="(item,index) in bodyTagListLook" :key="index">
|
||||||
|
<image class="tags-img" style="width: 40rpx;height: 40rpx;margin: 0 10rpx;" :src="item" />
|
||||||
|
</view>
|
||||||
|
<view v-for="(item,index) in emotionTagListLook" :key="index">
|
||||||
|
<image class="tags-img" style="width: 40rpx;height: 40rpx;margin: 0 10rpx;" :src="item" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="tri-down" @click="openbody=!openbody;openface=false">
|
||||||
|
|
||||||
|
<view class="mark-bgc" v-show="openbody" :style="{opacity:bodydonghua?1:0}" @click.stop>
|
||||||
|
<view style="margin-top: 40rpx;margin-bottom: 30rpx;;margin-left: 50rpx;font-size: 32rpx;">
|
||||||
|
<view>
|
||||||
|
体型标签
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="display: flex;flex-wrap: wrap;">
|
||||||
|
<view v-for="(item,index) in bodyTagList" :key="index" @click="addbody(index)">
|
||||||
|
<view class="tags-father" :class="bodystatustarget===index?'secondtarget':''">
|
||||||
|
<image class="tags-img"
|
||||||
|
:src="item.izSelected==`Y`?item.netPicFocus: item.netPic" />
|
||||||
|
<view class="tags-font"
|
||||||
|
:style="item.izSelected==`Y`?{color:`rgb(54, 159, 239)`}:{}">
|
||||||
|
{{item.tagName}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="margin-top: 40rpx;margin-bottom: 30rpx;;margin-left: 50rpx;font-size: 32rpx;">
|
||||||
|
<view>
|
||||||
|
情绪标签
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="display: flex;flex-wrap: wrap;">
|
||||||
|
<view v-for="(item,index) in emotionTagList" :key="index" @click="addface(index)">
|
||||||
|
<view class="tags-father" :class="facestatustarget===index?'secondtarget':''">
|
||||||
|
<image class="tags-img"
|
||||||
|
:src="item.izSelected==`Y`?item.netPicFocus: item.netPic" />
|
||||||
|
<view class="tags-font"
|
||||||
|
:style="item.izSelected==`Y`?{color:`rgb(54, 159, 239)`}:{}">
|
||||||
|
{{item.tagName}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<!-- <view style="display: flex;align-items: center;margin-right: 15rpx;padding: 0 15rpx;"
|
||||||
|
:class="topindex===1&&!bodystatus&&!facestatus?'firsttarget':''">
|
||||||
|
<view class="mark">
|
||||||
|
情绪标签:
|
||||||
|
<view class="overlay" v-show="openface" @click="openface=false"></view>
|
||||||
|
<view class="mark-bgc" v-show="openface" :style="{opacity:facedonghua?1:0}" @click.stop>
|
||||||
|
<view style="margin-top: 40rpx;margin-bottom: 30rpx;;margin-left: 50rpx;font-size: 32rpx;">
|
||||||
|
<view>
|
||||||
|
情绪标签
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view style="display: flex;flex-wrap: wrap;">
|
||||||
|
<view v-for="(item,index) in emotionTagList" :key="index" @click="addface(index)">
|
||||||
|
<view class="tags-father" :class="facestatustarget===index?'secondtarget':''">
|
||||||
|
<image class="tags-img"
|
||||||
|
:src="item.izSelected==`Y`?item.netPicFocus: item.netPic" />
|
||||||
|
<view class="tags-font"
|
||||||
|
:style="item.izSelected==`Y`?{color:`rgb(54, 159, 239)`}:{}">
|
||||||
|
{{item.tagName}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="marknone" @click="openface=!openface;openbody=false">
|
||||||
|
<view v-if="!emotionTagListLook.length" style="margin-top: -3rpx;">
|
||||||
|
未选择
|
||||||
|
</view>
|
||||||
|
<view v-for="(item,index) in emotionTagListLook" :key="index">
|
||||||
|
<image class="tags-img" style="width: 40rpx;height: 40rpx;margin: 0 10rpx;" :src="item" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="tri-down" @click="openface=!openface;openbody=false"></view>
|
||||||
|
</view> -->
|
||||||
|
<view class="white-button" @click="routerPush">
|
||||||
|
<image class="white-img" :src="`/static/index/newruler/yulan.png`" />
|
||||||
|
预览
|
||||||
|
</view>
|
||||||
|
<view class="white-button" @click="shareToWeixin">
|
||||||
|
<image class="white-img" :src="`/static/index/newruler/fenxiang.png`" />
|
||||||
|
分享
|
||||||
|
</view>
|
||||||
|
<view class="white-button" @click="changLeft(5)">
|
||||||
|
<image class="white-img" style="width: 45rpx;height: 45rpx;" :src="`/static/index/newruler/watch.png`" />
|
||||||
|
监控
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
<view class="doctorsay-container-view">
|
<view class="doctorsay-container-view">
|
||||||
<view class="doctorsay-container-container">
|
<view class="doctorsay-container-container">
|
||||||
<view class="super-card">
|
<view class="super-card">
|
||||||
|
|
@ -21,19 +138,18 @@
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="super-card-container">
|
<view class="super-card-container">
|
||||||
<scroll-view style="width: 100%;" scroll-with-animation
|
<scroll-view style="height: 1330rpx;width: 100%;border: 2rpx solid balck;" scroll-with-animation
|
||||||
:scroll-left="cardLeft" scroll-x @scroll="handleTop" :show-scrollbar="false">
|
:scroll-left="cardLeft" scroll-x @scroll="handleTop" :show-scrollbar="false">
|
||||||
<view style="display: flex;width:4824rpx;">
|
<view style="display: flex;width:4824rpx;">
|
||||||
<view v-for="(item0,index0) in timearr" :key="index0" class="super-card-right">
|
<view v-for="(item0,index0) in timearr" :key="index0">
|
||||||
<view class="super-card-time">
|
<view class="super-card-time">
|
||||||
{{(item0.positioning.length == 1 ? ('0' + item0.positioning) : item0.positioning) + ":00"}}
|
{{(item0.positioning.length == 1 ? ('0' + item0.positioning) : item0.positioning) + ":00"}}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view style="display: flex;height: 1130rpx;position: relative;">
|
<view style="display: flex;height: calc(100% - 330rpx);position: relative;">
|
||||||
|
|
||||||
<view class="xian-bian"></view>
|
<view class="xian-bian"></view>
|
||||||
<scroll-view style="height: 100%;width:6960rpx;background-color: #fff;" :scroll-top="scrollTop"
|
<scroll-view style="height: 100%;width:6744rpx;" :scroll-top="scrollTop"
|
||||||
scroll-with-animation :scroll-y="true" @scroll="handleScrolltime"
|
scroll-with-animation :scroll-y="true" @scroll="handleScrolltime"
|
||||||
:show-scrollbar="false">
|
:show-scrollbar="false">
|
||||||
<view style="display: flex;height: 100%;">
|
<view style="display: flex;height: 100%;">
|
||||||
|
|
@ -104,7 +220,7 @@
|
||||||
</view>
|
</view>
|
||||||
</scroll-view>
|
</scroll-view>
|
||||||
</view>
|
</view>
|
||||||
<!-- <view class="right-cards">
|
<view class="right-cards">
|
||||||
<view style="margin-top: 20rpx;margin-left: 30rpx;">
|
<view style="margin-top: 20rpx;margin-left: 30rpx;">
|
||||||
<view class="">
|
<view class="">
|
||||||
即时指令
|
即时指令
|
||||||
|
|
@ -298,7 +414,7 @@
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view> -->
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
@ -478,11 +594,13 @@
|
||||||
if (solveWatch.value) {
|
if (solveWatch.value) {
|
||||||
solveWatch.value--
|
solveWatch.value--
|
||||||
} else {
|
} else {
|
||||||
scrollTop.value = 0.001
|
centerCell();
|
||||||
|
cardLeft.value = 1
|
||||||
|
scrollTop.value = 1
|
||||||
|
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
scrollTop.value = 0
|
scrollTop.value = 0
|
||||||
timeNowMove()
|
cardLeft.value = 775
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
upmenuIndex.value = 0
|
upmenuIndex.value = 0
|
||||||
|
|
@ -504,9 +622,6 @@
|
||||||
const bodydonghua = ref(false)
|
const bodydonghua = ref(false)
|
||||||
const openbody = ref(false)
|
const openbody = ref(false)
|
||||||
const openface = ref(false)
|
const openface = ref(false)
|
||||||
|
|
||||||
const hournow = ref(new Date().getHours());
|
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => openbody.value,
|
() => openbody.value,
|
||||||
() => {
|
() => {
|
||||||
|
|
@ -1668,32 +1783,25 @@
|
||||||
|
|
||||||
const totalColumns = 24; // 总列数
|
const totalColumns = 24; // 总列数
|
||||||
const totalRows = 11; // 总行数
|
const totalRows = 11; // 总行数
|
||||||
const visibleWidth = 1455; // 可视区域宽度 (rpx),基于 scalcType * widthType ≈ 2220
|
const visibleWidth = 1300; // 可视区域宽度 (rpx),基于 scalcType * widthType ≈ 2220
|
||||||
const visibleHeight = 1130; // 可视区域高度 (rpx),假设显示约5行时 heightType = 102.5
|
const visibleHeight = 400; // 可视区域高度 (rpx),假设显示约5行时 heightType = 102.5
|
||||||
function centerCell() {
|
function centerCell() {
|
||||||
if (saveEditIndex.value.index0 >= 0 && saveEditIndex.value.index0 <= totalColumns && saveEditIndex.value.index1 >= 0 && saveEditIndex.value.index1 <= totalRows) {
|
if (saveEditIndex.value.index0 >= 0 && saveEditIndex.value.index0 <= totalColumns && saveEditIndex.value.index1 >= 0 && saveEditIndex.value.index1 <= totalRows) {
|
||||||
// 计算点击格子的中心位置 (rpx)
|
// 计算点击格子的中心位置 (rpx)
|
||||||
const cellCenterX = (saveEditIndex.value.index0 + 0.5) * 290;
|
const cellCenterX = (saveEditIndex.value.index0 + 0.5) * 259;
|
||||||
const cellCenterY = (saveEditIndex.value.index1 + 0.5 ) * 227;
|
const cellCenterY = (saveEditIndex.value.index1 - 1) * 200;
|
||||||
// 计算 scrollLeft 和 scrollTop,使格子中心位于可视区域中心
|
// 计算 scrollLeft 和 scrollTop,使格子中心位于可视区域中心
|
||||||
cardLeft.value = cellCenterX - visibleWidth / 2;
|
cardLeft.value = cellCenterX - visibleWidth / 2;
|
||||||
scrollTop.value = cellCenterY - visibleHeight / 2;
|
scrollTop.value = cellCenterY - visibleHeight / 2;
|
||||||
// 计算网格总宽高
|
// 计算网格总宽高
|
||||||
const totalWidth = totalColumns * 290;
|
const totalWidth = totalColumns * 259;
|
||||||
const totalHeight = totalRows * 227;
|
const totalHeight = totalRows * 200;
|
||||||
// 限制 scrollLeft 和 scrollTop 在有效范围内
|
// 限制 scrollLeft 和 scrollTop 在有效范围内
|
||||||
cardLeft.value = Math.max(0, Math.min(cardLeft.value, totalWidth - visibleWidth)) / 2 + 0.7;
|
cardLeft.value = Math.max(0, Math.min(cardLeft.value, totalWidth - visibleWidth)) / 2;
|
||||||
// scrollTop.value = 0
|
// scrollTop.value = 0
|
||||||
scrollTop.value = Math.max(0, Math.min(scrollTop.value, totalHeight - visibleHeight)) / 2;
|
scrollTop.value = Math.max(0, Math.min(scrollTop.value, totalHeight - visibleHeight)) / 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 表格进来就给我居中
|
|
||||||
function timeNowMove() {
|
|
||||||
const cellCenterX = (hournow.value + 0.5) * 290;
|
|
||||||
cardLeft.value = cellCenterX - visibleWidth / 2;
|
|
||||||
const totalWidth = totalColumns * 290;
|
|
||||||
cardLeft.value = Math.max(0, Math.min(cardLeft.value, totalWidth - visibleWidth)) / 2 + 0.7;
|
|
||||||
}
|
|
||||||
const iszhiling = ref(false)
|
const iszhiling = ref(false)
|
||||||
const zhilingbao = () => {
|
const zhilingbao = () => {
|
||||||
iszhiling.value = !iszhiling.value
|
iszhiling.value = !iszhiling.value
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,8 @@
|
||||||
<!-- 左侧菜单 -->
|
<!-- 左侧菜单 -->
|
||||||
<leftcontent :list="arrlist" @navurl="navurl" :userInfo="userInfo"></leftcontent>
|
<leftcontent :list="arrlist" @navurl="navurl" :userInfo="userInfo"></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;
|
||||||
|
|
@ -282,7 +298,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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue