This commit is contained in:
wangweidong 2026-01-29 17:34:47 +08:00
commit a4e24d4993
12 changed files with 542 additions and 319 deletions

View File

@ -791,8 +791,8 @@
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 98%;
height: 98%;
width: 100%;
height: 103%;
z-index: 10;
.blue-img {
@ -1332,15 +1332,32 @@
.title-time-border-yellow {
margin: 10rpx;
border: 2rpx solid transparent;
/* background: linear-gradient(to bottom, #fff1db, #ffe2b2); */
width: calc(100% - 40rpx);
height: calc(100% - 40rpx);
border-radius: 20rpx;
display: flex;
justify-content: center;
align-items: center;
background-color: rgba(255, 255, 255, 0.5);
flex-direction: column;
/* box-shadow: 8rpx 8rpx 16rpx rgba(255, 138, 0, 0.7); */
font-size: 30rpx;
overflow: hidden;
width: 240rpx;
height: 170rpx;
/* background-color: red; */
.kill-icon {
margin-top: 10rpx;
width: 70rpx;
height: 70rpx;
/* 性能关键 */
will-change: transform;
transform-origin: 50% 52%;
}
.kill-text {
white-space: nowrap;
color: #818181;
font-size: 30rpx;
}
}
.title-time-border-yellow-active-transparent {
@ -1739,7 +1756,7 @@
.neuro-box {
position: relative;
width: 600rpx;
height: 450rpx;
height: 550rpx;
border-radius: 30rpx;
background-color: #fff;
display: flex;
@ -1749,17 +1766,7 @@
padding: 0 5%;
}
.button {
width: 47%;
background-color: #ddf0ff;
display: flex;
justify-content: center;
align-items: center;
color: #007CFF;
border: 1rpx solid #007CFF;
font-size: 25rpx;
border-radius: 30rpx;
}
.title {
margin-top: 70rpx;
@ -1775,13 +1782,26 @@
}
.button-white {
width: 47%;
width: 30%;
border: 2rpx solid #c3cacd;
background: linear-gradient(to bottom, #f3f3f5, #dee4e9);
display: flex;
justify-content: center;
align-items: center;
font-size: 25rpx;
font-size: 30rpx;
border-radius: 30rpx;
margin-right: 20rpx;
}
.button {
width: 30%;
background-color: #ddf0ff;
display: flex;
justify-content: center;
align-items: center;
color: #007CFF;
border: 1rpx solid #007CFF;
font-size: 30rpx;
border-radius: 30rpx;
}
@ -1793,8 +1813,9 @@
width: 100%;
height: 70rpx;
display: flex;
justify-content: space-between;
padding: 0 50rpx;
/* justify-content: space-between; */
justify-content: center;
/* padding: 0 100rpx; */
}
.right-container-title-nav {
@ -2162,7 +2183,6 @@
.setting-warn {
width: 89%;
margin-left: 5.5%;
height: 47rpx;
border: 2rpx dashed #EE2C35;
display: flex;
align-items: center;
@ -2171,9 +2191,14 @@
border-radius: 10rpx;
background-color: #FFF6F6;
font-size: 25rpx;
/* margin-top: 0 10rpx; */
margin-top: -10rpx;
margin-bottom: 10rpx;
overflow: hidden;
transition: max-height 500ms ease, opacity 500ms ease;
height: 47rpx;
/* 写死 */
line-height: 47rpx;
/* 文字垂直居中 */
}
.triangle {
@ -2298,7 +2323,27 @@
background-color: #F6F9FF;
flex-direction: column;
}
.title-time-border-error{
border: 2rpx solid red;
width: calc(100% - 15rpx);
height: calc(100% - 15rpx);
border-radius: 20rpx;
display: flex;
align-items: center;
background-color: rgba(238, 44, 53, 0.05);
flex-direction: column;
}
.title-time-border-own{
border: 2rpx dashed #5E8EF6;
width: calc(100% - 15rpx);
height: calc(100% - 15rpx);
border-radius: 20rpx;
display: flex;
align-items: center;
background-color: #F6F9FF;
flex-direction: column;
opacity: 0.3;
}
.title-time {
display: flex;
width: 100%;
@ -3293,10 +3338,10 @@
width: 100%;
height: 200rpx;
display: flex;
padding-top:15rpx;
padding-top: 15rpx;
position: relative;
.target-edit {
position: absolute;
right: 5rpx;
@ -3339,7 +3384,8 @@
font-size: 23rpx;
color: #222222;
}
.target-black{
.target-black {
position: absolute;
top: 2.5rpx;
right: 0;
@ -3354,13 +3400,127 @@
color: #919191;
}
}
.packtarget-serviceContent{
.packtarget-serviceContent {
width: 430rpx;
height: 100rpx;
margin-top: 10rpx;
font-size: 25rpx;
color: #666666;
}
/* 隐藏状态 */
.collapsed {
max-height: 0;
opacity: 0;
padding-top: 0;
/* 如需彻底压缩可把内边距也为0 */
padding-bottom: 0;
}
/* 展开状态 */
.expanded {
max-height: 47rpx;
opacity: 1;
}
.card-box {
margin-top: 20rpx;
width: 259rpx;
height: 245rpx;
border-radius: 20rpx;
background: #fff;
will-change: transform;
pointer-events: none;
z-index: 200;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
.title-time-blue-card {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 98%;
height: 98%;
z-index: 10;
.blue-img {
width: 100%;
height: 100%;
}
}
.card-bao {
position: absolute;
left: 35rpx;
top: 110rpx;
width: 32rpx;
height: 32rpx;
font-size: 24rpx;
display: flex;
justify-content: center;
align-items: center;
background-color: #4690FF;
color: #fff;
border-radius: 5rpx;
}
.title-time-border-hisOk {
border: 2rpx solid #D4E4FE;
width: calc(100% - 15rpx);
height: calc(100% - 15rpx);
border-radius: 20rpx;
display: flex;
align-items: center;
background-color: #F6F9FF;
flex-direction: column;
font-size: 30rpx;
overflow: hidden;
border: 2rpx solid #46B2F6;
.title-time {
display: flex;
width: 100%;
position: relative;
height: 100%;
padding: 25rpx;
padding-top: 18rpx;
flex-direction: column;
.title-time-font-rel {
margin-top: 9rpx;
font-size: 33rpx;
font-weight: 800;
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;
}
.card-time {
position: absolute;
bottom: 30rpx;
left: 30rpx;
font-size: 30rpx;
.weight-time {
display: flex;
}
}
}
}
}

View File

@ -23,7 +23,7 @@
<view class="super-card-container">
<scroll-view style="width: 100%;" scroll-with-animation :scroll-left="cardLeft"
:scroll-x="canmove" @scroll="handleTop" :show-scrollbar="false">
:scroll-x="canmovechange" @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">
@ -34,7 +34,7 @@
<view style="display: flex;height: 1225rpx;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="canmove"
:scroll-top="scrollTop" scroll-with-animation :scroll-y="canmovechange"
@scroll="handleScrolltime" :show-scrollbar="false">
<view style="display: flex;height: 100%;">
<view v-for="(item0,index0) in timearr" :key="index0">
@ -49,16 +49,20 @@
@click="rulerTouchClick(item1,index0,index1)"
:data-index0="index0" :data-index1="index1">
<view class="title-time-blue"
v-show="saveEditIndex.index0 == index0 && saveEditIndex.index1 == index1">
v-show="saveEditIndex.index0 == index0 && saveEditIndex.index1 == index1 && !isTuoing">
<image class="blue-img" src="/static/index/newtarget.png" />
</view>
<view class="title-time-blue"
v-show="targetrule[0] == index0 && targetrule[1] == index1 && isTuoing">
<image class="blue-img"
src="/static/index/bluetarget.png" />
:src="`/static/index/newtarget${timearr[index0]?.children[index1]?.id?`red`:``}.png`" />
</view>
<view class="card-bao" v-if="item1.izPackage==`Y`">
</view>
<view :class="getClass(item1,index0,index1)"
style="font-size: 30rpx;overflow: hidden;"
:style="{ animationDelay:`-${computeDelay(index0, index1).toFixed(2)}s`,border:saveEditIndex.index0 == index0 && saveEditIndex.index1 == index1? `2rpx solid #46B2F6`:'' }">
:style="{ animationDelay:`-${computeDelay(index0, index1).toFixed(2)}s`,border:saveEditIndex.index0 == index0 && saveEditIndex.index1 == index1 && !isTuoing? `2rpx solid #46B2F6`:'' }">
<view class="title-time" v-if="item1.startTime"
style="flex-direction: column;">
@ -114,8 +118,9 @@
<view class="tags-img-father">
<view v-for="(item,index) in bodyTagListLook" :key="index"
class="tags-img-view">
<image class="tags-img" :src="serverUrl + item.pic" />
<view class="">
<image class="tags-img"
:src="item.pic ? (serverUrl + item.pic) : noimageshow" />
<view style="white-space: nowrap;">
{{ item.tagName }}
</view>
</view>
@ -130,7 +135,8 @@
<view class="tags-img-father" style="margin-left: 10rpx;">
<view v-for="(item,index) in emotionTagListLook" :key="index"
class="tags-img-view">
<image class="tags-img" :src="serverUrl + item.pic" />
<image class="tags-img"
:src="item.pic ? (serverUrl + item.pic) : noimageshow" />
<view class="">
{{ item.tagName }}
</view>
@ -153,8 +159,8 @@
</view>
<view class="menu-heng" :style="menutype?{left:`222rpx`}:{}"></view>
</view>
<view class="setting-warn">
{{ menutype?`情绪`:`体型`}}标签可复选两项
<view class="setting-warn" :class="[showtomuch ? 'expanded' : 'collapsed']">
{{ (menutype ? '情绪' : '体型') + '标签可复选两项' }}
</view>
<view class="setting-list">
<scroll-view style="height: 100%;width:100%;" scroll-with-animation scroll-y>
@ -163,9 +169,11 @@
<view :class="item.izSelected==`Y`?`check-box-target`: `check-box`">
</view>
<image class="check-img"
:src="serverUrl + (item.izSelected==`Y`?item.picFocus: item.pic)" />
<view class="check-text-view">
<image class="check-img" :src="
item.izSelected === 'Y'
? (item.picFocus ? serverUrl + item.picFocus : noimageshow)
: (item.pic ? serverUrl + item.pic : noimageshow)" />
<view class=" check-text-view">
<view class="check-weight"
:style="item.izSelected==`Y`?{color:`#0074E1`}: {}">
{{ item.tagName }}
@ -186,7 +194,7 @@
<view class="forfixed" @click.stop>
<view class="right-instant" v-show="!openmore"
:style="isblue==`1`?{border:`4rpx dashed #0089FE`}:{border:`4rpx dashed #fff`}">
:style="isblue==`1`&&isTuoing?{border:`4rpx dashed #0089FE`}:{border:`4rpx dashed #fff`}">
<view class="right-instant-title">
<view class="blue-shu" style="margin-left: 30rpx;"></view>
<view class="blue-font">
@ -201,20 +209,19 @@
<view class="forscroll" @touchstart="startdelete" @touchend="enddelete">
<view class="instant" :class="{ pop: popping && index === 0 }"
v-for="(item,index) in bottomItems.slice(0,3)">
<image class="instant-icon" :src="serverUrl+item.immediateFile"
<image class="instant-icon"
:src="item.immediateFile? (serverUrl + item.immediateFile ) : noimageshow "
:class="deleteshake?`wiggle`:``" mode="aspectFill"></image>
<view class="instant-text">
{{ item.directiveName }}
</view>
<view class="instant-close" v-show="deleteshake"
@click.stop="killjishi(item.id)">
<image style="width: 100%;height: 100%;"
@click.stop="killinstantopen(item)">
<image style="width: 80%;height: 80%;"
src="/static/index/deleticon.png" mode="aspectFill"></image>
</view>
</view>
</view>
</view>
<view class="instant-more" v-if="bottomItems.length > 3" @click="clickopenmore">
<image class="more-imge" src="/static/index/down.png" />
@ -222,7 +229,7 @@
</view>
</view>
<view class="right-instant-more" v-if="openmore" @click="deleteshake = false"
:style="isblue?{border:`4rpx dashed #0089FE`}:{border:`4rpx dashed #fff`}">
:style="isblue==`1`&&isTuoing?{border:`4rpx dashed #0089FE`}:{border:`4rpx dashed #fff`}">
<view class="right-instant-title">
<view class="blue-shu" style="margin-left: 30rpx;"></view>
<view class="blue-font">
@ -236,16 +243,18 @@
<view class="forscroll" @touchstart="startdelete" @touchend="enddelete">
<view class="instant" v-for="(item,index) in bottomItems"
@click="clickinstant(index)">
<image class="instant-icon" :class="deleteshake?`wiggle`:``"
:src="index === moreindex?serverUrl+item.immediateFileFocus:serverUrl+item.immediateFile"
mode="aspectFill"></image>
<image class="instant-icon" :class="deleteshake?`wiggle`:``" :src="
index === moreindex
? (item.immediateFileFocus ? serverUrl + item.immediateFileFocus : noimageshow)
: (item.immediateFile ? serverUrl + item.immediateFile : noimageshow)
" mode="aspectFill"></image>
<view class="instant-text"
:style="index === moreindex?{color:`#0084ff`}:{}">
{{ item.directiveName }}
</view>
<view class="instant-close" v-show="deleteshake"
@click.stop="killjishi(item.id)">
<image style="width: 100%;height: 100%;"
@click.stop="killinstantopen(item)">
<image style="width: 80%;height: 80%;"
src="/static/index/deleticon.png" mode="aspectFill"></image>
</view>
</view>
@ -309,15 +318,17 @@
</view>
<view class="three-items" v-show="!ruleritem.directiveName && !servertype">
<view class="tree-item">
<scroll-view style="height: 100%;width:100%;" :scroll-y="canmove"
<scroll-view style="height: 100%;width:100%;" :scroll-y="canmovechange"
@scroll="handleScroll">
<view class="tree-card"
v-for="(item,index) in bigArray[upmenuIndex]?.children[downmenuIndex]?.children"
:key="index" @touchstart="handleTouchStart(item,$event)"
@click="clickaddnew(item,index)">
<image class="card-icon"
:src="index === thirdmenuIndex?serverUrl+item.immediateFileFocus:serverUrl+item.immediateFile"
mode="aspectFill"></image>
<image class="card-icon" :src="
index === thirdmenuIndex
? (item.immediateFileFocus ? serverUrl + item.immediateFileFocus : noimageshow)
: (item.immediateFile ? serverUrl + item.immediateFile : noimageshow)
" mode="aspectFill"></image>
<view class="card-text" style="margin-top: 0;"
:style="index === thirdmenuIndex?{color:`#0084ff`}:{}">
{{ item.title }}
@ -327,7 +338,7 @@
</view>
<view class="tree-item">
<scroll-view style="height: 100%;width:100%;" scroll-with-animation
:scroll-y="canmove">
:scroll-y="canmovechange">
<view class="tree-card" v-for="(item,index) in bigArray[upmenuIndex]?.children"
:key="index" @click="secondContant(index)">
<donghua :width="`50rpx`" :height="`50rpx`" :links="item.url"
@ -341,7 +352,7 @@
</view>
<view class="tree-item" style="width: 28%;">
<scroll-view style="height: 100%;width:100%;" scroll-with-animation
:scroll-y="canmove">
:scroll-y="canmovechange">
<view class="tree-card" v-for="(item,index) in bigArray" :key="index"
@click="changLeft(index)">
<donghua :width="`50rpx`" :height="`50rpx`" :links="item.url"
@ -355,7 +366,7 @@
</view>
<view class="three-items" v-show="!ruleritem.directiveName && servertype"
style="flex-direction: column;">
<scroll-view class="pack-title" scroll-with-animation :scroll-x="canmove">
<scroll-view class="pack-title" scroll-with-animation :scroll-x="canmovechange">
<view class="pack-father">
<view class="packs" :style="packnumber==index?{color:`#0089FE`}:{}"
v-for="(item,index) in savePackagelist" :key="index"
@ -371,12 +382,13 @@
<view class="pack-heng">
</view>
<scroll-view class="pack-detail" scroll-with-animation :scroll-y="canmove">
<scroll-view class="pack-detail" scroll-with-animation :scroll-y="canmovechange">
<view class="detail-father">
<view class="details"
v-for="(item,index) in savePackagelist[packnumber]?.directives"
:key="index">
<image class="detail-icon" :src="serverUrl+item.immediateFile"
<image class="detail-icon"
:src="item.immediateFile ? serverUrl + item.immediateFile : noimageshow"
mode="aspectFill">
</image>
<view class="">
@ -405,7 +417,8 @@
</view>
<view class="target-contain">
<view class="image-father">
<image class="target-img" :src="serverUrl + ruleritem.immediateFile" />
<image class="target-img"
:src="ruleritem.immediateFile ? serverUrl + ruleritem.immediateFile : noimageshow" />
</view>
<view class="image-right">
<view class="right-title">
@ -436,6 +449,10 @@
<view class="target-smalltext">
{{ ruleritem.serviceContent }}
</view>
<view class="target-edit" style="right: 150rpx;" @click.stop="editcardname"
v-show="editingmode">
修改
</view>
<view class="target-edit" @click.stop="edititems(ruleritem)" v-show="editingmode">
编辑
</view>
@ -468,14 +485,16 @@
</view>
</view>
<view class="packtarget-heng"></view>
<scroll-view class="packtarget-detail" scroll-with-animation :scroll-y="canmove">
<scroll-view class="packtarget-detail" scroll-with-animation :scroll-y="canmovechange">
<view class="detail-father">
<view class="details" :style="packtargetindex==index?{color:`#0089FE`}:{}"
v-for="(item,index) in ruleritem?.directivesList"
@click="packtargetindex=index" :key="index">
<image class="detail-icon"
:src="index === packtargetindex?serverUrl+item.immediateFileFocus:serverUrl+item.immediateFile"
mode="aspectFill">
<image class="detail-icon" :src="
index === packtargetindex
? (item.immediateFileFocus ? serverUrl + item.immediateFileFocus : noimageshow)
: (item.immediateFile ? serverUrl + item.immediateFile : noimageshow)
" mode="aspectFill">
</image>
<view class="">
{{ splitString(item.directiveName)[0] }}
@ -489,9 +508,11 @@
<view class="packtarget-heng"></view>
<view class="packtarget-end">
<image class="end-icon"
:src="serverUrl+ruleritem?.directivesList[packtargetindex]?.immediateFile"
mode="aspectFill">
<image class="end-icon" :src="
ruleritem?.directivesList?.[packtargetindex]?.immediateFile
? serverUrl + ruleritem.directivesList[packtargetindex].immediateFile
: noimageshow
" mode="aspectFill">
</image>
<view class="">
<view class="packtarget-title">
@ -512,59 +533,15 @@
{{ ruleritem?.directivesList[packtargetindex]?.serviceContent }}
</view>
</view>
<view class="target-edit" style="right: 150rpx;" @click.stop="editcardname"
v-show="editingmode">
修改
</view>
<view class="target-edit" @click.stop="edititems(ruleritem)" v-show="editingmode">
编辑
</view>
</view>
<!-- <view class="target-items">
<view class="target-gray">
{{ ruleritem.categoryName }}
</view>
<view class="target-shu">
|
</view>
<view class="target-gray">
{{ ruleritem.typeName }}
</view>
</view>
<view class="target-contain">
<view class="image-father">
<image class="target-img" :src="serverUrl + ruleritem.immediateFile" />
</view>
<view class="image-right">
<view class="right-title">
{{ ruleritem.directiveName }}
</view>
<view class="target-many">
<view class="target-strart">
{{ ruleritem.startTime }}
</view>
<view class="target-other">
<view class="target-shu">
|
</view>
<text class="target-blue">
{{ ruleritem.newtypename }}
</text>
<view class="target-shu">
|
</view>
<view class="">
{{ ruleritem.serviceDuration }}分钟
</view>
</view>
</view>
</view>
</view>
<view class="target-smalltext">
{{ ruleritem.serviceContent }}
</view>
<view class="target-edit" @click.stop="edititems(ruleritem)" v-show="editingmode">
编辑
</view> -->
</view>
<view class="edit-open" v-show="editopen" @click.stop>
<view class="edit-menu">
@ -660,62 +637,7 @@
</view>
</view>
</view>
<!-- 点击的弹出层 -->
<view v-show="isopen" class="popup-overlay" @click="isopen=false;flyNumber.index0=999;touchindex1=-1">
<view class="popup-overlay-content" style="height: 390rpx;" popup-overlay:class="getjiao"
v-if="timearr[showDetail[0]]?.children[showDetail[1]]?.izPackage==='N'"
:style="{ top: (2*openY - 350) + 'rpx',left: (2*openX - 780) + 'rpx',opacity: isopacity ? 1 : 0 }"
@click.stop>
<view class="popup-overlay-content-left">
<image class="popup-overlay-content-left-img"
:src="timearr[showDetail[0]]?.children[showDetail[1]]?.netImmediateFileFocus" />
</view>
<view class="popup-overlay-content-right">
<view class="time-font">
{{ timearr[showDetail[0]]?.children[showDetail[1]]?.startTime }} -
{{ timearr[showDetail[0]]?.children[showDetail[1]]?.endTime }}
</view>
<view class="time-text">
{{ timearr[showDetail[0]]?.children[showDetail[1]]?.directiveName }}
</view>
</view>
</view>
<view class="popup-overlay-content" :class="getjiao" v-else
:style="{ top: (2*openY - 350) + 'rpx',left: (2*openX - 780) + 'rpx',opacity: isopacity ? 1 : 0 }"
@click.stop>
<view class="specia-onshow">
<view class="specia-title">
{{ timearr[showDetail[0]]?.children[showDetail[1]]?.startTime }} -
{{ timearr[showDetail[0]]?.children[showDetail[1]]?.endTime }}
</view>
<view class="specia-cards" v-if="timearr[showDetail[0]]?.children[showDetail[1]]?.directivesList">
<view class="title-time-border-yellow"
style="font-size: 30rpx;overflow: hidden;width: 232rpx;height: 150rpx;"
v-for="(item1,index1) in timearr[showDetail[0]]?.children[showDetail[1]]?.directivesList"
:key="index1">
<view class="title-time" style="flex-direction: column;">
<image style="width: 60rpx;height: 60rpx;margin: 0 auto;margin-top: 10rpx"
:src="item1.netImmediateFile" />
<view class="title-time-time" style="font-size: 30rpx;">
{{item1.serviceDuration + "分钟"}}
</view>
<image class="title-time-button" style="width: 80rpx;height: 48rpx;"
src="/static/index/newruler/jiao.png" />
<view class="title-time-font" style="right: 10rpx;top: 5rpx;font-size: 23rpx;">
{{ item1.cycleType }}
</view>
</view>
<view class="title-time-font-rel">
{{splitString(item1.directiveName)[0]}}
</view>
</view>
</view>
</view>
</view>
</view>
<!-- <view class="move-view" v-show="moveopen"></view> -->
<!-- 分享的弹出层 -->
<view v-show="shareShow" class="popup-share" @click="shareShow=false">
<view class="popup-share-content" :style="{ opacity: deletedownisopacity ? 1 : 0 }" @click.stop>
@ -751,29 +673,59 @@
<view class="delete-button-father">
<view class="button-white" @click="isDelete=false">取消</view>
<view class="button" @click="openDelete()">确定</view>
<view class="button" @click="killruleclick">确定</view>
</view>
<view class="title">确定要删除指令吗</view>
<view class="title-time-border-yellow"
style="font-size: 30rpx;overflow: hidden;width: 240rpx;height: 170rpx;">
<view class="card-box">
<view class="title-time-blue-card">
<image class="blue-img" src="/static/index/bluetarget.png" />
</view>
<view class="card-bao" v-if="postitem.izPackage==`Y`">
</view>
<view class="title-time-border-hisOk">
<view class="title-time">
<view class="title-time-font-rel">
{{ splitString(postitem.directiveName)[0]}}
</view>
<view v-if="splitString(postitem.directiveName)[1]" class="title-time-font-tags">
({{ splitString(postitem.directiveName)[1]}})
</view>
<view class="card-time">
<view class="title-time" style="flex-direction: column;">
<image style="width: 60rpx;height: 60rpx;margin: 0 auto;margin-top: 10rpx"
:src="timearr[saveEditIndex.index0]?.children[saveEditIndex.index1].netImmediateFile?timearr[saveEditIndex.index0].children[saveEditIndex.index1].netImmediateFile:`/static/logo.png`" />
<view class="title-time-time" style="font-size: 30rpx;">
{{timearr[saveEditIndex.index0].children[saveEditIndex.index1].startTime + `-` + timearr[saveEditIndex.index0].children[saveEditIndex.index1].endTime}}
</view>
<image class="title-time-button" style="width: 80rpx;height: 48rpx;"
v-if="timearr[saveEditIndex.index0]?.children[saveEditIndex.index1].cycleTypeId!=1"
src="/static/index/newruler/jiao.png" />
<view class="title-time-font" style="right: 10rpx;top: 5rpx;font-size: 23rpx;"
v-if="timearr[saveEditIndex.index0].children[saveEditIndex.index1].cycleTypeId!=1">
{{ timearr[saveEditIndex.index0]?.children[saveEditIndex.index1].cycleType }}
<view class="weight-time">
{{ postitem.startTime }}
<text style="margin: 0 3rpx;">
-
</text>
{{ postitem.endTime }}
</view>
</view>
</view>
</view>
<view class="title-time-font-rel">
{{splitString(timearr[saveEditIndex.index0]?.children[saveEditIndex.index1].directiveName)[0]}}
</view>
</view>
</view>
<view :class="['neuro-wrapper', deletedonghua ? 'is-active' : '']" v-if="killisopen">
<!-- 遮罩层点击触发关闭 -->
<view class="neuro-mask" @click="killisopen=false"></view>
<!-- 拟态框阻止冒泡点击 -->
<view class="neuro-box" @click.stop style="height: 450rpx;">
<view class="delete-button-father">
<view class="button-white" @click="killisopen=false">取消</view>
<view class="button" @click="killjishi">确定</view>
</view>
<view class="title">确定要删除指令吗</view>
<view class="title-time-border-yellow">
<image class="kill-icon"
:src="killthisid.immediateFile? (serverUrl + killthisid.immediateFile ) : noimageshow"
mode="aspectFill"></image>
<view class="kill-text">
{{ killthisid.directiveName }}
</view>
</view>
@ -784,7 +736,7 @@
</template>
<script setup lang="ts">
import { ref, onMounted, onBeforeUnmount, computed, nextTick, watch } from 'vue';
import { ref, onMounted, onBeforeUnmount, computed, nextTick, watch, onUnmounted } from 'vue';
import { onShow, onHide } from '@dcloudio/uni-app';
import { getNclist, addBatch, addDirective, addInstant, deleteDirective, editDirective } from "./api.js";
import { myArray } from './yaoshandiao.js';
@ -811,16 +763,47 @@
required: true
},
});
const canmovechange = ref(true)
watch(() => props.canmove, (newVal, oldVal) => {
if (oldVal === false && newVal === true) {
// console.log("aaaaa", inArea(props.sendxy[0],props.sendxy[1]))
if (inArea(props.sendxy[0], props.sendxy[1])) {
isTuoing.value = false;
canmovechange.value = true;
if (props.isblue == 1) {
addinstantcommand()
} else if (props.isblue == 2) {
// console.log("", postitem.value,props.sendxy)
// console.log("",props.sendxy[0])
getNew()
}
else if (props.isblue == 3) {
// console.log("", postitem.value)
isDelete.value = true;
deletedonghua.value = false;
setTimeout(() => deletedonghua.value = true, 50)
}
}
});
const killruleclick = () => {
isDelete.value = false;
deleteDirective({ id: postitem.value.id }).then((res) => {
if (res.success) {
geteverything()
if (saveEditIndex.value.index0 != -1) {
setTimeout(() => {
rulerTouchClick(timearr.value[saveEditIndex.value.index0].children[saveEditIndex.value.index1], saveEditIndex.value.index0, saveEditIndex.value.index1)
}, 300)
}
}
})
}
const noimageshow = `/static/logo.png`;
const clickrighttoclean = () => {
// console.log("")
openmore.value = false;
@ -1147,26 +1130,23 @@
}
//
const getNew = () => {
if (flyNumber.value.index0 === saveEditIndex.value.index0 && flyNumber.value.index1 === saveEditIndex.value.index1) {
isMove.value = false;
flyNumber.value.index0 = -1;
flyNumber.value.index1 = -1;
return
}
if (timearr.value[saveEditIndex.value.index0]?.children[saveEditIndex.value.index1].id) {
deleteDirective(timearr.value[saveEditIndex.value.index0]?.children[saveEditIndex.value.index1]).then((res : any) => {
doChangeNew()
})
let item = timearr.value[Number(props.sendxy[0])]?.children[Number(Number(props.sendxy[1]))]
if (item.id) {
// deleteDirective(postitem.value.id).then((res : any) => {
// doChangeNew()
// })
} else {
doChangeNew()
}
}
const doChangeNew = () => {
let object = JSON.parse(JSON.stringify(timearr.value[flyNumber.value.index0]?.children[flyNumber.value.index1]))
indexsave.value = [saveEditIndex.value.index0, saveEditIndex.value.index1]
let object = postitem.value;
indexsave.value = [Number(props.sendxy[0]), Number(props.sendxy[1])]
// tagName
let tagName = timearr.value[flyNumber.value.index0]?.children[flyNumber.value.index1].tagName
timearr.value[flyNumber.value.index0].children[flyNumber.value.index1] = { directiveName: '', tagName: tagName }
let tagName = postitem.value.tagName
timearr.value[Number(postitem.value.positioning)].children[Number(postitem.value.positioningLong)] = { directiveName: '', tagName: tagName }
//
let newtagName = timearr.value[indexsave.value[0]].children[indexsave.value[1]].tagName
timearr.value[indexsave.value[0]].children[indexsave.value[1]] = object
@ -1217,25 +1197,34 @@
//
const pad2 = (n) => String(n).padStart(2, '0');
let data = {
index0: indexsave.value[0],
index1: indexsave.value[1]
}
whereEvent(data);
// console.log("start",`${String(newHour)}:${pad2(newStartMin)}`,`${String(newEndHour)}:${pad2(newEndMin)}`,indexsave.value)
timearr.value[indexsave.value[0]].children[indexsave.value[1]].startTime =
`${String(newHour)}:${pad2(newStartMin)}`;
timearr.value[indexsave.value[0]].children[indexsave.value[1]].endTime =
`${String(newEndHour)}:${pad2(newEndMin)}`;
flyNumber.value.index1 = -1;
isMove.value = false;
let data = {
index0: saveEditIndex.value.index0,
index1: saveEditIndex.value.index1
}
whereEvent(data);
let infoValue = timearr.value[saveEditIndex.value.index0].children[saveEditIndex.value.index1]
infoValue.positioning = saveEditIndex.value.index0;
infoValue.positioningLong = saveEditIndex.value.index1;
let infoValue = object
infoValue.positioning = indexsave.value[0];
infoValue.positioningLong = indexsave.value[1];
infoValue.startTime = timearr.value[indexsave.value[0]].children[indexsave.value[1]].startTime;
infoValue.endTime = timearr.value[indexsave.value[0]].children[indexsave.value[1]].endTime;
editDirective(infoValue).then((res : any) => {
if (res.success) {
geteverything()
}
setTimeout(() => {
rulerTouchClick(timearr.value[indexsave.value[0]].children[indexsave.value[1]], indexsave.value[0], indexsave.value[1])
// whereEvent(indexsave.value);
}, 200)
})
}
//
@ -1393,6 +1382,15 @@
//
const getClass = (item, index0, index1) => {
if (item.startTime) {
if (props.targetrule[0] == index0 && props.targetrule[1] == index1 && isTuoing.value) {
if (timearr.value[index0]?.children[index1]?.id) {
return `title-time-border-error`
}
} else if (Number(postitem.value.positioning) == index0 && Number(postitem.value.positioningLong) == index1 && isTuoing.value) {
return `title-time-border-own`
}
return 'title-time-border-hisOk';
}
return 'title-time-border';
@ -1565,6 +1563,12 @@
//
const ruleritem = ref({})
const editcardname = () => {
ruleritem.value = {
directiveName: ""
}
}
const packtargetindex = ref(0)
const rulerTouchClick = (item : any, index0 : number, index1 : number) => {
// isDelete.value = false;
@ -1673,10 +1677,21 @@
})
}
const killjishi = (id : string) => {
console.log("id有吗", id)
deleteDirective({ id: id }).then((res) => {
console.log("返回啥了", res)
const killisopen = ref(false)
const killthisid = ref("")
const killinstantopen = (item) => {
killthisid.value = item;
killisopen.value = true;
deletedonghua.value = true;
setTimeout(() => deletedonghua.value = true, 50)
}
const killjishi = () => {
killisopen.value = false;
deleteshake.value = false;
// console.log("id", id)
deleteDirective({ id: killthisid.value.id }).then((res) => {
if (res.success) {
geteverything()
}
@ -2014,10 +2029,10 @@
const emotionTagList = ref([]);
const bodyTagList = ref([]);
const geteverything = () => {
console.log("啥玩意啊", uni.getStorageSync('elderId'))
// console.log("", uni.getStorageSync('elderId'))
if (uni.getStorageSync('nuId') && uni.getStorageSync('elderId')) {
getNclist(uni.getStorageSync('nuId'), uni.getStorageSync('elderId')).then((res : any) => {
console.log("即时指令", res.result.serviceList)
// console.log("", res.result.serviceList)
timearr.value = Array.from({ length: 24 }, (_, hour) => ({
positioning: hour.toString(),
children: minuteArr.map(time => ({
@ -2207,13 +2222,9 @@
const edittype = ref(0)
const clickedit = (index : number) => {
edittype.value = index;
// if (index) {
// listsave.value = emotionTagListLooksave.value
// } else {
// listsave.value = bodyTagListLooksave.value
// }
}
let timerId : ReturnType<typeof setTimeout> | null = null
const showtomuch = ref(false)
const clickcard = (index : number) => {
let data = menutype.value ? emotionTagListLooksave.value : bodyTagListLooksave.value
if (data[index].izSelected === 'Y') {
@ -2221,11 +2232,28 @@
} else {
if (data.filter(item => item.izSelected === 'Y').length !== 2) {
data[index].izSelected = 'Y'
} else {
showtomuch.value = true;
//
if (timerId !== null) {
clearTimeout(timerId)
}
// 2
timerId = setTimeout(() => {
showtomuch.value = false
timerId = null
}, 2000)
}
}
listsave.value = data
}
onUnmounted(() => {
if (timerId !== null) {
clearTimeout(timerId)
timerId = null
}
})
const openserver = (index : number) => {
servertype.value = index
}
@ -2301,14 +2329,14 @@
const istargetblue = ref(false);
function inArea(x, y) {
return (
x >= 790 &&
x <= 1062 &&
y >= 147 &&
y <= 255
)
}
// function inArea(x, y) {
// return (
// x >= 790 &&
// x <= 1062 &&
// y >= 147 &&
// y <= 255
// )
// }
const addontime = () => {
// scrollLeft.value = 1;
@ -2392,7 +2420,7 @@
longPressTimer.value = setTimeout(() => {
if (isScrolling.value) return
if (item.directiveName) {
let reldata = []
const query = uni.createSelectorQuery()
@ -2406,6 +2434,7 @@
}
})
if (killbaddata.value) return
canmovechange.value = false;
isTuoing.value = true;
emit('handsend', item)
emit('rulepush', reldata)
@ -2414,33 +2443,35 @@
})
.exec()
}
}, 500)
}, 800)
}
const handleTouchStart = (item : any, e : any) => {
//
console.log("长按了", item)
if (!editingmode.value) return
// thirdmenuIndex.value = index
shakyTable.value = false
saveX.value = Math.floor(e.touches[0].pageX);
saveY.value = Math.floor(e.touches[0].pageY);
killbaddata.value = false
longPressTimer.value = setTimeout(() => {
console.log("长按了", item)
if (isScrolling.value) return
// console.log("/////",killbaddata.value)
// if (killbaddata.value) return
if (killbaddata.value) return
canmovechange.value = false;
isTuoing.value = true;
emit('handsend', item)
postitem.value = item
}, 200)
}, 800)
}
const isScrolling = ref(false)
//
let scrollTimeout = null
function handleScroll(e) {
killbaddata.value = true
isScrolling.value = true
//
if (scrollTimeout) clearTimeout(scrollTimeout)
@ -2477,6 +2508,7 @@
const lastClick = ref(0)
let singleTimer = null
const clickaddnew = (item, index) => {
killbaddata.value = true
thirdmenuIndex.value = index
const now = Date.now()
if (now - lastClick.value < dblDelay) {
@ -2502,6 +2534,9 @@
lastClick.value = now
}
const newaddruler = (item) => {
let cardvalue = JSON.parse(JSON.stringify(timearr.value[saveEditIndex.value.index0].children[saveEditIndex.value.index1]))
let allobject = item
// console.log("")
let cycleType = "";
@ -2592,16 +2627,30 @@
izPackage: servertype.value ? `Y` : `N`,
cycleTypeId: 1,
}
addDirective(postdata).then((res) => {
// console.log("kankan", postdata, res)
if (res.success) {
geteverything()
setTimeout(() => {
rulerTouchClick(timearr.value[saveEditIndex.value.index0].children[saveEditIndex.value.index1], saveEditIndex.value.index0, saveEditIndex.value.index1)
}, 200)
if (cardvalue.directiveId) {
postdata.id = cardvalue.id,
editDirective(postdata).then((res) => {
if (res.success) {
// console.log("")
geteverything()
setTimeout(() => {
rulerTouchClick(timearr.value[saveEditIndex.value.index0].children[saveEditIndex.value.index1], saveEditIndex.value.index0, saveEditIndex.value.index1)
}, 200)
}
})
} else {
addDirective(postdata).then((res) => {
// console.log("kankan", postdata, res)
if (res.success) {
geteverything()
setTimeout(() => {
rulerTouchClick(timearr.value[saveEditIndex.value.index0].children[saveEditIndex.value.index1], saveEditIndex.value.index0, saveEditIndex.value.index1)
}, 200)
}
})
}
}
})
}
onBeforeUnmount(() => {
if (singleTimer) clearTimeout(singleTimer)

View File

@ -40,7 +40,9 @@
</view>
</view>
</view>
</view>
<view class="delete-view" :style="isblue==`3`?{backgroundColor:`#0080FC`}:{}" v-if="!startmoveit&&whoisit">
<image class="delete-img" src="/static/index/trash.png" />
</view>
<!-- 左侧菜单 -->
<leftcontent :list="arrlist" @navurl="navurl" :userInfo="userInfo"></leftcontent>
@ -52,8 +54,8 @@
<bignurse :isshow="menuIndex==0"
v-if="swipedex==0&&specialPage==1&&uni.getStorageSync('elderId')&&uni.getStorageSync('nuId')" />
<!-- 户嘱页 -->
<newnurse :isshow="menuIndex==1" v-if="swipedex==1" :canmove="startmoveit" :sendxy="sendxy" :isblue='isblue' :targetrule="targetrule"
@handsend="handsend" @rulepush="rulepush" />
<newnurse :isshow="menuIndex==1" v-if="swipedex==1" :canmove="startmoveit" :sendxy="targetrule" :isblue='isblue'
:targetrule="targetrule" @handsend="handsend" @rulepush="rulepush" />
<!-- 医嘱 -->
<doctorask v-if="swipedex==2&&uni.getStorageSync('elderId')&&uni.getStorageSync('nuId')" />
<logistics :isshow="menuIndex==3"
@ -110,12 +112,12 @@
getNcPackagelist().then((res : any) => {
//
console.log("缓存指令包", res)
// console.log("", res)
uni.setStorageSync("Packagelist", res.result)
})
getPermissionList({ employessId: uni.getStorageSync('userInfo').employessId }).then(res => {
listarr.value = res.result;
console.log("这个是啥", listarr.value)
// console.log("", listarr.value)
})
})
const gospecial = (index : number) => {
@ -353,9 +355,17 @@
const nx = Number(wh[0]) || 0;
const ny = Number(wh[1]) || 0;
// console.log("----", nx, ny)
boxStyle.value = {
transform: `translate3d(${nx - 100}px, ${ny - 70}px, 0)`
};
if (whoisit.value) {
boxStyle.value = {
transform: `translate3d(${nx - 70}px, ${ny - 60}px, 0)`
};
} else {
boxStyle.value = {
transform: `translate3d(${nx - 100}px, ${ny - 70}px, 0)`
};
}
}
const movelook = ref({
url: "",
@ -371,6 +381,7 @@
})
function handsend(look : any) {
isblue.value = 0;
if (look.levle) {
whoisit.value = 0;
movelook.value.url = uni.getStorageSync('imagebase') + look.immediateFileFocus;
@ -385,16 +396,8 @@
simpleobj.value.endTime = look.endTime;
simpleobj.value.directiveName = look.directiveName;
simpleobj.value.izPackage = look.izPackage;
startmoveit.value = false
// console.log("",look)
}
// movelook.value.url = uni.getStorageSync('imagebase') + look.immediateFileFocus;
// if (!movelook.value.url) {
// movelook.value.url = `/static/index/sharelogo.png`
// }
// movelook.value.title = look.title;
// startmoveit.value = false
}
//
@ -432,12 +435,12 @@
handmove([a, b])
}
}
const rules = ref([])
const rules = ref([])
const rulepush = (array : any) => {
console.log("array", array)
targetrule.value = [-1, -1]
rules.value = array
}
const targetrule = ref([-1,-1])
const targetrule = ref([-1, -1])
function inArea(x, y) {
if (!whoisit.value) {
if (x >= 790 &&
@ -448,50 +451,43 @@
} else {
return 0
}
}else{
for (let i = rules.value.length - 1; i >= 0; i--) {
const it = rules.value[i]
if (x >= it.left && x <= it.right && y >= it.top && y <= it.bottom) {
const raw0 = it.dataset?.index0
const raw1 = it.dataset?.index1
const n0 = raw0 === undefined ? NaN : Number(raw0)
const n1 = raw1 === undefined ? NaN : Number(raw1)
if (!isNaN(n0) && !isNaN(n1)) {
if(n0 != targetrule.value[0] || n1 != targetrule.value[1]){
targetrule.value = [0,1]
}
return 2
}
return 0
}
} else {
// console.log("000",x)
if(x>1000){
return 3
}
return 0
for (let i = rules.value.length - 1; i >= 0; i--) {
const it = rules.value[i]
if (x >= it.left && x <= it.right && y >= it.top && y <= it.bottom) {
const raw0 = it.dataset?.index0
const raw1 = it.dataset?.index1
const n0 = raw0 === undefined ? NaN : Number(raw0)
const n1 = raw1 === undefined ? NaN : Number(raw1)
if (!isNaN(n0) && !isNaN(n1)) {
if (n0 != targetrule.value[0] || n1 != targetrule.value[1]) {
targetrule.value = [n0, n1]
}
return 2
}
}
}
// [-1, -1] 0
if (targetrule.value[0] !== -1 || targetrule.value[1] !== -1) {
targetrule.value = [-1, -1]
}
return 2
}
}
// function inArea(x: number, y: number): [number, number] {
// for (let i = rules.value.length - 1; i >= 0; i--) {
// const it = rules.value[i]
// if (x >= it.left && x <= it.right && y >= it.top && y <= it.bottom) {
// const raw0 = it.dataset?.index0
// const raw1 = it.dataset?.index1
// const n0 = raw0 === undefined ? NaN : Number(raw0)
// const n1 = raw1 === undefined ? NaN : Number(raw1)
// if (!isNaN(n0) && !isNaN(n1)) return [n0, n1]
// return [-1, -1]
// }
// }
// return [-1, -1]
// }
const getxy = throttle(getxyrel, 40);
const cleanall = (event) => {
// console.log("zzzz",event)
const touch = event.changedTouches[0];
const a = touch.clientX.toFixed(2);
const b = touch.clientY.toFixed(2);
sendxy.value = [a, b]
// const touch = event.changedTouches[0];
// const a = touch.clientX.toFixed(2);
// const b = touch.clientY.toFixed(2);
// sendxy.value = [a, b]
handmove([-200, -200])
startmoveit.value = true;
isblue.value = 0
// isblue.value = 0
}
// bigArray
function splitString(str) {
@ -687,4 +683,22 @@
}
}
.delete-view{
position: fixed;
right: -950rpx;
top: 3%;
width: 1100rpx;
height: 1100rpx;
border-radius: 50%;
background-color: rgba(228, 230, 236, 0.8);
z-index: 200;
.delete-img{
position: absolute;
top: 50%;
transform: translateY(-50%);
left: 50rpx;
width: 60rpx;
height: 65rpx;
}
}
</style>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
static/index/newtarget.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

BIN
static/index/trash.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long