合并代码

This commit is contained in:
Teng 2026-01-28 16:40:50 +08:00
parent 1a034f56b8
commit 54ec256661
15 changed files with 1431 additions and 233 deletions

View File

@ -120,7 +120,7 @@ export default {
cycle() {
let minutes = Math.floor(this.initTime / 60);
let time = this.initTime;
console.log(minutes,time)
// console.log(minutes,time)
this.timerTwo = setInterval(() => {
const flag = this.isDown ? time - 1 : time + 1;
if (flag === this.threshold) {

View File

@ -73,13 +73,13 @@ export const addElderTag = (params) => {
}
// 编排护理流程-删除服务指令
export const deleteDirective = (params) => {
return request({
url: `${uni.getStorageSync('serverUrl')}/api/pad/care/directive/deleteDirective`,
method: 'post',
data: params,
})
}
// export const deleteDirective = (params) => {
// return request({
// url: `${uni.getStorageSync('serverUrl')}/api/pad/care/directive/deleteDirective`,
// method: 'post',
// data: params,
// })
// }
// 编排护理流程-删除即时服务指令
export const deleteInstant = (params) => {
@ -98,14 +98,14 @@ export const deleteElderTag = (params) => {
data: params,
})
}
// 编排护理流程-修改服务指令
export const editDirective = (params) => {
return request({
url: `${uni.getStorageSync('serverUrl')}/api/pad/care/directive/editDirective`,
method: 'post',
data: params,
})
}
// // 编排护理流程-修改服务指令
// export const editDirective = (params) => {
// return request({
// url: `${uni.getStorageSync('serverUrl')}/api/pad/care/directive/editDirective`,
// method: 'post',
// data: params,
// })
// }
// 根据日期查询日程表
export const getDirectiveOrders = (date) => {
@ -122,4 +122,20 @@ export const addDirective = (params) => {
method: 'post',
data: params,
})
}
// 删除服务指令
export const deleteDirective = (params) => {
return request({
url: `${uni.getStorageSync('serverUrl')}/api/pad/care/directive/deleteDirective`,
method: 'post',
data: params,
})
}
// 修改服务指令
export const editDirective = (params) => {
return request({
url: `${uni.getStorageSync('serverUrl')}/api/pad/care/directive/editDirective`,
method: 'post',
data: params,
})
}

View File

@ -1010,4 +1010,9 @@
.spec-shu{
margin: 0 7rpx;
color: #BABABA;
}
.packtarget-serviceContent{
width: 100%;
height: 200rpx;
background-color: red;
}

View File

@ -591,7 +591,6 @@
}
.title-time-font-rel {
margin-top: 9rpx;
font-size: 33rpx;
font-weight: 800;
@ -675,8 +674,6 @@
position: relative;
margin-left: -50rpx;
/* background-color: blue; */
.joystick {
position: absolute;
bottom: 200rpx;
@ -2029,6 +2026,7 @@
height: 1278rpx;
width: 600rpx;
border-radius: 30rpx;
/* background-color: red; */
.right-tags {
background-color: #fff;
@ -2368,60 +2366,180 @@
transform: translate(-45%, -50%);
}
.forfixed {
width: 100%;
height: 240rpx;
position: relative;
margin-top: 18rpx;
}
.right-instant {
background-color: #fff;
width: 100%;
height: 240rpx;
border-radius: 35rpx;
position: absolute;
top: 0;
left: 0;
/* box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); */
}
.right-instant-more {
background-color: #fff;
width: 100%;
height: 580rpx;
border-radius: 35rpx;
position: absolute;
top: 0;
left: 0;
z-index: 20;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}
.right-instant-title {
width: 100%;
height: 80rpx;
display: flex;
align-items: center;
position: relative;
margin-top: 18rpx;
.right-instant-title {
width: 100%;
height: 80rpx;
.right-setting {
position: absolute;
right: 23rpx;
top: 20rpx;
width: 90rpx;
height: 46rpx;
background-color: #F2F3F8;
color: #555555;
font-size: 27rpx;
display: flex;
align-items: center;
position: relative;
.right-setting {
position: absolute;
right: 23rpx;
top: 20rpx;
width: 90rpx;
height: 46rpx;
background-color: #F2F3F8;
color: #555555;
font-size: 27rpx;
display: flex;
align-items: center;
justify-content: center;
border-radius: 10rpx;
border: 1rpx solid #E5E5E5;
}
.right-setting-target {
position: absolute;
right: 23rpx;
top: 20rpx;
width: 90rpx;
height: 46rpx;
background-color: #F2F3F8;
color: #0089FE;
font-size: 27rpx;
display: flex;
align-items: center;
justify-content: center;
border-radius: 10rpx;
border: 1rpx solid #0089FE;
}
justify-content: center;
border-radius: 10rpx;
border: 1rpx solid #E5E5E5;
}
.right-instant-items {
.right-setting-target {
position: absolute;
right: 23rpx;
top: 20rpx;
width: 90rpx;
height: 46rpx;
background-color: #F2F3F8;
color: #0089FE;
font-size: 27rpx;
display: flex;
align-items: center;
justify-content: center;
border-radius: 10rpx;
border: 1rpx solid #0089FE;
}
}
.right-instant-items {
width: 100%;
height: 120rpx;
position: relative;
margin-top: -15rpx;
/* background-color: red; */
.small-instant {
display: flex;
width: 100%;
height: 160rpx;
position: relative;
height: 100%;
}
.big-instant {
position: absolute;
top: 0;
left: 0;
display: flex;
margin-left: 5%;
width: 90%;
height: 200%;
}
.instant-more {
position: absolute;
left: 50%;
bottom: -40rpx;
transform: translateX(-50%);
/* transform: rotate(180deg); */
width: 40rpx;
height: 40rpx;
display: flex;
justify-content: center;
align-items: center;
.more-imge {
width: 21rpx;
height: 21rpx;
}
}
.instant {
width: 33%;
height: 155rpx;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
overflow: hidden;
/* 中心为轴心 */
transform-origin: center center;
/* 放大/缩回的过渡时间(这里设为 120ms感觉更顺滑 */
transition: transform 1s cubic-bezier(.2, .9, .3, 1);
position: relative;
.instant-close {
width: 30rpx;
height: 30rpx;
border-radius: 50%;
display: flex;
/* background-color: #0184db; */
justify-content: center;
align-items: center;
position: absolute;
top: 20rpx;
right: 20rpx;
z-index: 10;
color: #fff;
}
.instant-icon {
width: 60rpx;
height: 60rpx;
/* 性能关键 */
will-change: transform;
transform-origin: 50% 52%;
}
.instant-text {
white-space: nowrap;
color: #818181;
font-size: 27rpx;
}
}
}
/* iOS 风格抖动 */
@keyframes wiggle {
0% {
transform: rotate(-20deg);
}
50% {
transform: rotate(20deg);
}
100% {
transform: rotate(-20deg);
}
}
.wiggle {
animation: wiggle 0.3s linear infinite;
}
.right-tree {
@ -2582,7 +2700,7 @@
.image-right {
width: 500rpx;
height: 100%;
margin-left: 15rpx;
margin-left: 6rpx;
/* background-color: green; */
.right-title {
@ -2599,7 +2717,7 @@
/* background-color: red; */
.target-strart {
font-size: 65rpx;
font-size: 55rpx;
color: #2A2A2A;
font-weight: 800;
margin-right: 6rpx;
@ -2618,6 +2736,7 @@
.target-shu {
margin: 0 10rpx;
color: #919191;
}
}
}
@ -2644,6 +2763,65 @@
border-radius: 35rpx;
z-index: 1;
.edit-Frequency {
width: 90%;
margin-left: 5%;
font-size: 28rpx;
/* padding-top: 10rpx; */
.Frequency-one {
height: 80rpx;
width: 110%;
display: flex;
align-items: center;
.Frequency-box {
width: 40rpx;
height: 40rpx;
display: flex;
align-items: center;
justify-content: center;
border: 2rpx solid #D2D2D2;
border-radius: 10rpx;
margin-left: 10rpx;
margin-right: 15rpx;
.box {
width: 35rpx;
height: 35rpx;
}
}
.Frequency-add {
width: 58rpx;
height: 58rpx;
display: flex;
justify-content: center;
align-items: center;
font-size: 45rpx;
border: 2rpx solid #D2D2D2;
margin: 0 15rpx;
border-radius: 10rpx;
}
.Frequency-input {
width: 90rpx;
height: 58rpx;
font-size: 30rpx;
color: #0089FE;
border: 2rpx solid black;
border-radius: 10rpx;
.center-input {
width: 100%;
height: 100%;
text-align: center;
font-weight: 600;
}
}
}
}
.edit-week {
width: 90%;
margin-left: 5%;
@ -2686,8 +2864,8 @@
right: 30rpx;
bottom: 25rpx;
width: 120rpx;
height: 60rpx;
font-size: 30rpx;
height: 55rpx;
font-size: 32rpx;
display: flex;
justify-content: center;
align-items: center;
@ -2874,4 +3052,315 @@
background-color: #4690FF;
color: #fff;
border-radius: 5rpx;
}
.forscroll {
width: 90%;
margin-left: 5%;
display: flex;
flex-wrap: wrap;
position: relative;
.instant-detail {
position: absolute;
width: 104%;
left: -2%;
top: 0;
height: 150rpx;
background-color: #fff;
border: 2rpx solid rgba(0, 137, 254, 0.29);
border-radius: 25rpx;
padding-top: 17rpx;
padding-left: 25rpx;
.detail-title {
font-size: 30rpx;
}
.detail-contain {
width: 95%;
height: 100rpx;
margin-top: 5rpx;
color: #666666;
font-size: 25rpx;
/* background-color: red; */
}
.triangle-instant {
position: absolute;
top: -8.34rpx;
left: 0;
width: 0;
height: 0;
border-left: 14.44rpx solid transparent;
border-right: 14.44rpx solid transparent;
border-bottom: 8.34rpx solid rgba(0, 137, 254, 0.29);
.triangle-small-instant {
position: absolute;
top: 1.2rpx;
right: 50%;
transform: translateX(50%);
width: 0;
height: 0;
border-left: 14.44rpx solid transparent;
border-right: 14.44rpx solid transparent;
border-bottom: 8.34rpx solid #fff;
}
}
}
}
.pop {
transform: scale(1.3);
}
.pack-title {
width: 100%;
height: 160rpx;
.pack-father {
display: flex;
width: 100%;
height: 100%;
.packs {
height: 100%;
min-width: 180rpx;
/* border: 1rpx solid black; */
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
white-space: nowrap;
/* 不换行 */
overflow: hidden;
/* 超出隐藏 */
/* text-overflow: ellipsis; */
/* 显示省略号 */
.pack-icon {
width: 48rpx;
height: 48rpx;
margin-bottom: 5rpx;
}
}
}
}
.pack-detail {
width: 100%;
height: 300rpx;
margin-top: 20rpx;
.detail-father {
display: flex;
width: 100%;
height: 100%;
flex-wrap: wrap;
color: #666666;
.details {
height: 150rpx;
min-width: 180rpx;
max-width: 180rpx;
/* border: 1rpx solid black; */
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
white-space: nowrap;
/* 不换行 */
overflow: hidden;
.detail-icon {
width: 55rpx;
height: 55rpx;
margin-bottom: 5rpx;
}
}
}
}
.pack-heng {
width: 100%;
height: 1rpx;
background-color: #E5E5E5;
margin-top: 13rpx;
margin-left: -12rpx;
}
.packtargetmessage {
width: 200%;
height: 70rpx;
display: flex;
.packtargetmessage-icon {
width: 50rpx;
height: 50rpx;
margin-left: -5rpx;
margin-top: 10rpx;
}
.packtarget-font {
margin-left: 8rpx;
font-size: 27rpx;
color: #0089FE;
margin-top: 18rpx;
white-space: nowrap;
/* 不换行 */
overflow: hidden;
/* 超出隐藏 */
text-overflow: ellipsis;
/* 显示省略号 */
width: 140rpx;
}
.packtarget-strart {
/* margin-left: 8rpx; */
font-size: 50rpx;
color: #2A2A2A;
font-weight: 800;
margin-top: -2rpx;
}
.packtarget-other {
/* min-width: 800rpx; */
/* margin-top: 10rpx; */
display: flex;
align-items: center;
/* background-color: red; */
.packtarget-blue {
color: #0089FE;
}
.packtarget-shu {
margin: 0 10rpx;
color: #919191;
}
}
}
.packtarget-heng {
width: 100%;
height: 1rpx;
background-color: #E5E5E5;
margin-top: 3rpx;
margin-left: -12rpx;
}
.packtarget-detail {
width: 100%;
height: 250rpx;
.detail-father {
display: flex;
width: 100%;
height: 100%;
flex-wrap: wrap;
color: #666666;
.details {
height: 125rpx;
min-width: 180rpx;
max-width: 180rpx;
/* border: 1rpx solid black; */
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
white-space: nowrap;
/* 不换行 */
overflow: hidden;
font-size: 25rpx;
.detail-icon {
width: 50rpx;
height: 50rpx;
margin-bottom: 5rpx;
}
}
}
}
.packtarget-end {
width: 100%;
height: 200rpx;
display: flex;
padding-top:15rpx;
position: relative;
.target-edit {
position: absolute;
right: 5rpx;
bottom: 5rpx;
width: 130rpx;
height: 60rpx;
display: flex;
justify-content: center;
align-items: center;
background-color: #F5FAFF;
border: 2rpx solid #0080FC;
border-radius: 10rpx;
color: #0089FE;
font-size: 33rpx;
}
.end-icon {
width: 90rpx;
height: 90rpx;
margin-left: -5rpx;
margin-top: 5rpx;
margin-right: 5rpx;
}
}
.packtarget-title {
width: 100%;
height: 40rpx;
display: flex;
position: relative;
.target-gray {
background-color: #F8F8FA;
border: 1rpx solid #D5D5D5;
display: flex;
height: 100%;
align-items: center;
padding: 0 10rpx;
border-radius: 10rpx;
font-size: 23rpx;
color: #222222;
}
.target-black{
position: absolute;
top: 2.5rpx;
right: 0;
font-size: 29rpx;
/* margin-top: 3rpx; */
}
.target-shu {
margin: 0 7rpx;
margin-top: 5rpx;
font-size: 23rpx;
color: #919191;
}
}
.packtarget-serviceContent{
width: 430rpx;
height: 100rpx;
margin-top: 10rpx;
font-size: 25rpx;
color: #666666;
}

View File

@ -45,6 +45,7 @@
: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;"
@touchstart="handleTouchStart1(item1,$event)"
@click="rulerTouchClick(item1,index0,index1)"
:data-index0="index0" :data-index1="index1">
<view class="title-time-blue"
@ -91,7 +92,7 @@
</view>
</scroll-view>
</view>
<view class="right-order">
<view class="right-order" @click="clickrighttoclean">
<view class="right-tags">
<view class="right-tags-title">
<view class="blue-shu" style="margin-left: 35rpx;"></view>
@ -182,26 +183,119 @@
</view>
</view>
</view>
<view class="right-instant"
:style="isblue?{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">
即时标签
<view class="forfixed" @click.stop>
<view class="right-instant" v-show="!openmore"
:style="isblue==`1`?{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">
即时标签
</view>
</view>
<view class="right-instant-items">
<image class="haven-img" v-if="!bottomItems.length"
src="/static/index/procurement/haven.png" mode="aspectFill"></image>
<view class="small-instant" v-show="!openmore">
<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"
: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%;"
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" />
</view>
</view>
</view>
<view class="right-instant-items">
<image class="haven-img" v-if="!bottomItems.length"
src="/static/index/procurement/haven.png" mode="aspectFill"></image>
<view class="right-instant-more" v-if="openmore" @click="deleteshake = false"
:style="isblue?{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">
即时标签
</view>
</view>
<view class="right-instant-items" style="height: 430rpx;">
<view class="small-instant">
<scroll-view style="height: 100%;width:100%;" scroll-with-animation scroll-y
:scroll-top="gettop">
<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>
<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%;"
src="/static/index/deleticon.png" mode="aspectFill"></image>
</view>
</view>
<view class="instant-detail"
:style="{top:`${(secondinstantshow[0]+1) *155 - 10}rpx`}"
v-show="secondinstantshow[0]!==-1">
<view class="triangle-instant"
:style="{left:`${(secondinstantshow[1]) * 32 + 15}%`}">
<view class="triangle-small-instant"></view>
</view>
<view class="detail-title">
{{ bottomItems[moreindex]?.directiveName }}
</view>
<view class="detail-contain">
{{ bottomItems[moreindex]?.serviceContent }}
</view>
</view>
</view>
</scroll-view>
<view class="instant-more" style="bottom: -71rpx;" @click="openmore=false">
<image class="more-imge" style="transform: rotate(180deg)"
src="/static/index/down.png" />
</view>
</view>
</view>
</view>
</view>
<view class="right-tree" @click="editopen=false">
<view class="right-servers">
<view :class="servertype===index?`servertarget`:`server`"
v-for="(item,index) in [`服务指令`,`服务指令包`]" :key="index" @click="openserver(index)">
v-show="!ruleritem.directiveName" v-for="(item,index) in [`服务指令`,`服务指令包`]"
:key="index" @click="openserver(index)">
{{ item }}
</view>
<view class="servers-heng" :style="servertype?{left:`294rpx`}:{}"></view>
<view class="servers-heng" v-show="!ruleritem.directiveName"
:style="servertype?{left:`294rpx`}:{}"></view>
<view class="servertarget" v-show="ruleritem.directiveName && ruleritem.izPackage==`N` "
v-for="(item,index) in [`服务指令`]" :key="index">
{{ item }}
</view>
<view class="servertarget" v-show="ruleritem.directiveName && ruleritem.izPackage==`Y` "
v-for="(item,index) in [`服务指令包`]" :key="index">
{{ item }}
</view>
<view class="servers-heng" v-show="ruleritem.directiveName"></view>
<image class="explain-icon" @click="explainopen=!explainopen"
src="/static/index/procurement/explain.png" mode="aspectFill"></image>
@ -213,13 +307,13 @@
双击服务指令可编辑矩阵
</view>
</view>
<view class="three-items" v-show="!ruleritem.directiveName">
<view class="three-items" v-show="!ruleritem.directiveName && !servertype">
<view class="tree-item">
<scroll-view style="height: 100%;width:100%;" :scroll-y="canmove"
@scroll="handleScroll">
<view class="tree-card"
v-for="(item,index) in bigArray[upmenuIndex]?.children[downmenuIndex]?.children"
:key="index" @touchstart="handleTouchStart(item,index,$event)"
:key="index" @touchstart="handleTouchStart(item,$event)"
@click="clickaddnew(item,index)">
<image class="card-icon"
:src="index === thirdmenuIndex?serverUrl+item.immediateFileFocus:serverUrl+item.immediateFile"
@ -259,7 +353,45 @@
</scroll-view>
</view>
</view>
<view class="target-items-father" v-if="ruleritem.directiveName">
<view class="three-items" v-show="!ruleritem.directiveName && servertype"
style="flex-direction: column;">
<scroll-view class="pack-title" scroll-with-animation :scroll-x="canmove">
<view class="pack-father">
<view class="packs" :style="packnumber==index?{color:`#0089FE`}:{}"
v-for="(item,index) in savePackagelist" :key="index"
@click="packclick(item,index)">
<image class="pack-icon"
:src=" `/static/index/pack${packnumber==index?`target`:``}.png`"
mode="aspectFill">
</image>
{{ item.packageName }}
</view>
</view>
</scroll-view>
<view class="pack-heng">
</view>
<scroll-view class="pack-detail" scroll-with-animation :scroll-y="canmove">
<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"
mode="aspectFill">
</image>
<view class="">
{{ splitString(item.directiveName)[0] }}
</view>
<view style="height: 3rpx;font-size: 20rpx;">
{{ splitString(item.directiveName)[1] ? `(${splitString(item.directiveName)[1]})`:``}}
</view>
</view>
</view>
</scroll-view>
</view>
<view class="target-items-father"
v-if="ruleritem.directiveName && ruleritem.izPackage==`N`">
<view class="target-items">
<view class="target-gray">
{{ ruleritem.categoryName }}
@ -304,36 +436,202 @@
<view class="target-smalltext">
{{ ruleritem.serviceContent }}
</view>
<view class="target-edit" @click.stop="editopen = !editopen">
<view class="target-edit" @click.stop="edititems(ruleritem)" v-show="editingmode">
编辑
</view>
</view>
<view class="target-items-father"
v-if="ruleritem.directiveName && ruleritem.izPackage==`Y`">
<view class="packtargetmessage">
<image class="packtargetmessage-icon" :src=" `/static/index/packtarget.png`"
mode="aspectFill" />
<view class="packtarget-font">
{{ ruleritem.directiveName }}
</view>
<view class="packtarget-strart">
{{ ruleritem.startTime }}
</view>
<view class="packtarget-other">
<view class="packtarget-shu">
|
</view>
<text class="packtarget-blue">
{{ ruleritem.newtypename }}
</text>
<view class="packtarget-shu">
|
</view>
<view style="color: #919191;">
{{ ruleritem.serviceDuration }}分钟
</view>
</view>
</view>
<view class="packtarget-heng"></view>
<scroll-view class="packtarget-detail" scroll-with-animation :scroll-y="canmove">
<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>
<view class="">
{{ splitString(item.directiveName)[0] }}
</view>
<view style="height: 3rpx;font-size: 20rpx;">
{{ splitString(item.directiveName)[1] ? `(${splitString(item.directiveName)[1]})`:``}}
</view>
</view>
</view>
</scroll-view>
<view class="packtarget-heng"></view>
<view class="packtarget-end">
<image class="end-icon"
:src="serverUrl+ruleritem?.directivesList[packtargetindex]?.immediateFile"
mode="aspectFill">
</image>
<view class="">
<view class="packtarget-title">
<view class="target-gray">
{{ ruleritem?.directivesList[packtargetindex]?.categoryName }}
</view>
<view class="target-shu">
|
</view>
<view class="target-gray">
{{ ruleritem?.directivesList[packtargetindex]?.typeName }}
</view>
<view class="target-black">
{{ splitString(ruleritem?.directivesList[packtargetindex]?.directiveName)[0] }}
</view>
</view>
<view class="packtarget-serviceContent">
{{ ruleritem?.directivesList[packtargetindex]?.serviceContent }}
</view>
</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">
<view class="triangle">
<view class="triangle-small"></view>
</view>
<view class="edit-tags" :style="edittype===index?{fontWeight:`700`}:{}"
v-for="(item,index) in [`星期`,`日期`,`频率`]" :key="index"
<view class="edit-tags" :style="edittype===index?{fontWeight:`800`}:{}"
v-for="(item,index) in [`频率`,`星期`,`日期`]" :key="index"
@click="clickedit(index) ">
{{ item }}
</view>
<view class="edit-heng" :style="{left:`${40+edittype*100}rpx`}"></view>
</view>
<view class="edit-week">
<view class="week-day" v-for="(item,index) in weekDays" :key="index"
v-show="!edittype">
<view class="edit-Frequency" v-show="!edittype">
<view class="Frequency-one" @click="clickeveryday">
<view class="Frequency-box"
:style="nosave.cycleTypeId==`1`?{borderColor:`#0089FE`}:{}">
<image class="box"
:src=" `/static/right${nosave.cycleTypeId==`1`?`target`:``}.png`" />
</view>
每天执行一次
</view>
<view class="Frequency-one" @click="clickmanyday">
<view class="Frequency-box"
:style="nosave.cycleTypeId==`5`&&nosave.cycleValue?{borderColor:`#0089FE`}:{}">
<image class="box"
:src=" `/static/right${nosave.cycleTypeId==`5`&&nosave.cycleValue?`target`:``}.png`" />
</view>
每隔
<view class="Frequency-add" @click="inputnum>0? inputnum--:``">
-
</view>
<view class="Frequency-input">
<input class="center-input" type="number" v-model="inputnum"
:maxlength="5" />
</view>
<view class="Frequency-add" @click="inputnum++">
+
</view>
天执行一次
</view>
<view class="Frequency-one" @click="clickonetime">
<view class="Frequency-box"
:style="nosave.cycleTypeId==`5`&&!nosave.cycleValue?{borderColor:`#0089FE`}:{}">
<image class="box"
:src=" `/static/right${nosave.cycleTypeId==`5`&&!nosave.cycleValue?`target`:``}.png`" />
</view>
临时一次
</view>
</view>
<view class="edit-week" v-show="edittype==1">
<view class="week-day"
:style="nosave.cycleTypeId==`3`&&nosave.cycleValue==index?{color:`#0089FE`}:{}"
v-for="(item,index) in weekDays" :key="index" @click="clickweektarget(index)">
{{ item }}
</view>
</view>
<view class="edit-month">
<view class="month-day" v-for="(item,index) in monthDays" :key="index"
v-show="edittype==1">
<view class="edit-month" v-show="edittype==2" style="margin-top: 5rpx;">
<view class="month-day"
:style="nosave.cycleTypeId==`4`&&nosave.cycleValue==Number(item)?{color:`#0089FE`}:{}"
v-for="(item,index) in monthDays" :key="index" @click="clickmonthtarget(item)">
{{ item }}
</view>
</view>
<view class="edit-right">
<view class="edit-right" @click="allisright">
确定
</view>
</view>
@ -488,7 +786,7 @@
<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 } from "./api.js";
import { getNclist, addBatch, addDirective, addInstant, deleteDirective, editDirective } from "./api.js";
import { myArray } from './yaoshandiao.js';
const props = defineProps({
@ -501,29 +799,181 @@
required: true,
},
isblue: {
type: Boolean,
type: Number,
required: true,
},
sendxy: {
type: Array,
required: true
}
},
targetrule: {
type: Array,
required: 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])) {
console.log("添加即时指令")
addinstantcommand()
}
}
});
const clickrighttoclean = () => {
// console.log("")
openmore.value = false;
deleteshake.value = false
}
const clickeveryday = () => {
nosave.value.cycleTypeId = "1";
nosave.value.cycleValue = ""
nosave.value.optCount = ""
}
const clickmanyday = () => {
nosave.value.cycleTypeId = "5";
// 0
nosave.value.cycleValue = Number(inputnum.value).toString()
nosave.value.optCount = ""
}
const clickonetime = () => {
nosave.value.cycleTypeId = "5";
nosave.value.cycleValue = ""
nosave.value.optCount = "1"
}
const clickweektarget = (index : number) => {
nosave.value.cycleTypeId = "3";
nosave.value.cycleValue = index.toString()
nosave.value.optCount = ""
}
const clickmonthtarget = (index : string) => {
if (index) {
nosave.value.cycleTypeId = "4";
nosave.value.cycleValue = Number(index).toString()
nosave.value.optCount = ""
}
}
const allisright = () => {
//
if (nosave.value.cycleTypeId == `5` && nosave.value.cycleValue) {
nosave.value.cycleValue = Number(inputnum.value).toString()
}
let allobject = ruleritem.value
const now = new Date();
const ts = `${now.getFullYear()}-${(now.getMonth() + 1).toString().padStart(2, '0')}-${now.getDate().toString().padStart(2, '0')} ${now.getHours().toString().padStart(2, '0')}:${now.getMinutes().toString().padStart(2, '0')}:${now.getSeconds().toString().padStart(2, '0')}`;
let data = {
id: allobject.id,
nuId: uni.getStorageSync('nuId'),
directiveId: allobject.directiveId,
positioning: saveEditIndex.value.index0.toString(),
positioningLong: saveEditIndex.value.index1.toString(),
tagName: timearr.value[saveEditIndex.value.index0].children[saveEditIndex.value.index1].tagName,
startTime: allobject.startTime,
izPackage: ruleritem.value.izPackage,
cycleTypeId: nosave.value.cycleTypeId,
cycleValue: nosave.value.cycleValue,
optCount: nosave.value.optCount,
optTime: ts,
}
// console.log("zzzz",data)
// return
editDirective(data).then((res) => {
console.log("kankan", data, res)
if (res.success) {
geteverything()
setTimeout(() => {
editopen.value = false
rulerTouchClick(timearr.value[saveEditIndex.value.index0].children[saveEditIndex.value.index1], saveEditIndex.value.index0, saveEditIndex.value.index1)
}, 300)
}
})
}
const inputnum = ref(1)
const secondinstantshow = ref([-1, -1])
const gettop = ref(0)
const clickinstant = (index : number) => {
if (moreindex.value !== index) {
moreindex.value = index
secondinstantshow.value = [Math.floor(index / 3), index % 3]
// console.log("", bottomItems.value[index])
// bottomItems.value[index].serviceContent
setTimeout(() => {
gettop.value = 77.5 * secondinstantshow.value[0]
}, 200)
} else {
moreindex.value = -1
secondinstantshow.value = [-1, -1]
}
}
const nosave = ref({
cycleTypeId: "",
cycleValue: "",
optCount: "",
})
const edititems = (item : any) => {
nosave.value.cycleTypeId = item.cycleTypeId;
nosave.value.cycleValue = item.cycleValue
nosave.value.optCount = item.optCount
// console.log("0000", nosave.value)
editopen.value = true
if (item.cycleTypeId == "3") {
edittype.value = 1
} else if (item.cycleTypeId == "4") {
edittype.value = 2
} else {
edittype.value = 0
}
}
const deleteshake = ref(false);
let t
const startdelete = () => t = setTimeout(() => {
if (editingmode.value) {
deleteshake.value = true
}
}, 1000)
const enddelete = () => clearTimeout(t)
const addinstantcommand = () => {
const exists = bottomItems.value.some((element : any) => {
return element.directiveId === postitem.value.id
})
if (exists) {
errshow.value = "请勿添加相同的服务指令"
openerror.value = true
return // return
}
let allobject = postitem.value
let postdata = {
nuId: uni.getStorageSync('nuId'),
directiveId: allobject.id,
izPackage: `N`,
cycleTypeId: 2,
}
addDirective(postdata).then((res) => {
console.log("kankan", postdata, res)
if (res.success) {
geteverything()
setTimeout(() => {
playFirstPop()
}, 200)
}
})
}
const moreindex = ref(-1)
const editingmode = ref(false);
const openerror = ref(false)
const errshow = ref("")
const emit = defineEmits(['handmove', 'handsend'])
const emit = defineEmits(['handsend', `rulepush`])
const serverUrl = ref(uni.getStorageSync('imagebase'))
const bodystatus = ref(false);
@ -655,12 +1105,16 @@
return "right-top"
}
})
const editopen = ref(false)
const editopen = ref(false);
const openmore = ref(false)
//
const cleanallopen = () => {
settingopen.value = false;
explainopen.value = false;
editopen.value = false
editopen.value = false;
openmore.value = false;
deleteshake.value = false;
packtargetindex.value = 0
}
//
const secondtemp = ref([])
@ -685,7 +1139,12 @@
lastTap.value = now
}
}
const clickopenmore = () => {
openmore.value = true;
deleteshake.value = false
moreindex.value = -1;
secondinstantshow.value = [-1, -1]
}
//
const getNew = () => {
if (flyNumber.value.index0 === saveEditIndex.value.index0 && flyNumber.value.index1 === saveEditIndex.value.index1) {
@ -1040,13 +1499,7 @@
if (downmenuIndex.value === index) {
return
}
// iszhouqi.value = false;
// weekIndex.value = -1;
// monthIndex.value = -1;
// weekValue.value = "";
// monthValue.value = "";
downmenuIndex.value = index;
// downdonghua.value = index;
thirdmenuIndex.value = 0;
}
@ -1103,6 +1556,8 @@
const showDetail = ref([-1, -1])
//
const ruleritem = ref({})
const packtargetindex = ref(0)
const rulerTouchClick = (item : any, index0 : number, index1 : number) => {
// isDelete.value = false;
saveEditIndex.value.index0 = index0;
@ -1121,60 +1576,16 @@
ruleritem.value.newtypename = Number(ruleritem.value.cycleValue) + "日"
break
case `5`:
ruleritem.value.newtypename = `每隔` + Number(ruleritem.value.cycleValue) + "天执行一次"
if (ruleritem.value.cycleValue) {
ruleritem.value.newtypename = Number(ruleritem.value.cycleValue) + "天执行一次"
} else {
ruleritem.value.newtypename = "临时一次"
}
break
}
// if(ruleritem.value.cycleTypeId){
// if(ruleritem.value.cycleValue)
// ruleritem.value.typename =
// }
cleanallopen()
console.log("点击表格", item)
// isRule.value = true;
// setTimeout(() => {
// if (item.directiveName && open.value) {
// touchindex1.value = index1;
// const query = uni.createSelectorQuery()
// query
// .selectAll('.super-card-time-card')
// .boundingClientRect((data : any) => {
// data.forEach(async (res : any) => {
// //
// if (res.left > 100 && res.left < 1067 && res.top < 670 && res.top > 50 && res.dataset.index0 == index0 && res.dataset.index1 == index1) {
// if (res.left > 100 && res.left < 500) {
// //
// openX.value = Math.floor(res.left) + 528;
// jiao.value[0] = true
// } else {
// openX.value = Math.floor(res.left) - 18
// jiao.value[0] = false
// }
// if (res.top > 300) {
// //
// openY.value = Math.floor(res.top) + 100;
// jiao.value[1] = true
// } else {
// openY.value = Math.floor(res.top) + 180
// jiao.value[1] = false
// }
// await nextTick()
// isopen.value = true;
// showDetail.value[0] = index0;
// showDetail.value[1] = index1;
// // console.log("shaa",timearr.value[showDetail.value[0]]?.children[showDetail.value[1]]?.izPackage)
// isopacity.value = false;
// //
// setTimeout(() => {
// isopacity.value = true;
// }, 100)
// }
// })
// })
// .exec()
// }
// }, 400)
}
const shakyTable = ref(false);
const reldata = ref([]);
@ -1255,7 +1666,9 @@
}
const killjishi = (id : string) => {
deleteInstant({ id: id }).then((res) => {
console.log("id有吗", id)
deleteDirective({ id: id }).then((res) => {
console.log("返回啥了", res)
if (res.success) {
geteverything()
}
@ -1593,9 +2006,10 @@
const emotionTagList = ref([]);
const bodyTagList = ref([]);
const geteverything = () => {
console.log("啥玩意啊", uni.getStorageSync('elderId'))
if (uni.getStorageSync('nuId') && uni.getStorageSync('elderId')) {
getNclist(uni.getStorageSync('nuId'), uni.getStorageSync('elderId')).then((res : any) => {
console.log("zzzz11111111111", res.result.serviceList)
console.log("即时指令", res.result.serviceList)
timearr.value = Array.from({ length: 24 }, (_, hour) => ({
positioning: hour.toString(),
children: minuteArr.map(time => ({
@ -1607,6 +2021,9 @@
timearr.value[res.positioning].children[res.positioningLong] = res;
})
bottomItems.value = res.result.instantList
if (!res.result.instantList.length) {
deleteshake.value = false
}
cansumit.value = true;
emotionTagList.value = res.result.emotionTagList;
emotionTagListLook.value = []
@ -1633,8 +2050,7 @@
onMounted(() => {
savePackagelist.value = uni.getStorageSync('Packagelist') || []
let res = uni.getStorageSync('saveTree0')
console.log("包", savePackagelist.value
)
console.log("包", savePackagelist.value)
let goodArray = []
myArray.forEach((element : any) => {
element?.children.forEach((element1 : any) => {
@ -1828,26 +2244,26 @@
let match = remainingStr.match(regex);
if (match) {
//
if (match[1].trim()) {
if (match[1]?.trim()) {
result.push(match[1].trim());
}
//
if (match[2].trim()) {
if (match[2]?.trim()) {
result.push(match[2].trim());
}
//
remainingStr = remainingStr.replace(match[0], '').trim();
remainingStr = remainingStr.replace(match[0], '')?.trim();
}
}
//
if (remainingStr.trim()) {
result.push(remainingStr.trim());
if (remainingStr?.trim()) {
result.push(remainingStr?.trim());
}
return result;
}
const totalColumns = 24; //
const totalRows = 11; //
const totalRows = 12; //
const visibleWidth = 1295; // (rpx) scalcType * widthType 2220
const visibleHeight = 1225; // (rpx)5 heightType = 102.5
function centerCell() {
@ -1935,15 +2351,65 @@
}
})
}
const popping = ref(false);
//
function playFirstPop() {
//
popping.value = false;
requestAnimationFrame(() => {
popping.value = true;
// 0.2s
setTimeout(() => {
popping.value = false;
}, 1000);
});
}
/***** 组件卸载 *****/
// onBeforeUnmount(() => {
// cleanupAll()
// })
const longPressTimer = ref(null);
const redNameindex0 = ref([])
const isTuoing = ref(false)
const handleTouchStart = (item : any, index : number, e : any) => {
const isTuoing = ref(false);
//
const postitem = ref({});
const handleTouchStart1 = (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);
longPressTimer.value = setTimeout(() => {
if (isScrolling.value) return
if (item.directiveName) {
let reldata = []
const query = uni.createSelectorQuery()
query
.selectAll('.super-card-time-card')
.boundingClientRect((data : any) => {
data.forEach((res : any) => {
//
if (res.left > 88 && res.left < 723 && res.top < 622 && res.top > 32) {
reldata.push(res)
}
})
isTuoing.value = true;
emit('handsend', item)
emit('rulepush', reldata)
postitem.value = item
})
.exec()
}
}, 200)
}
const handleTouchStart = (item : any, e : any) => {
//
console.log("长按了", item)
if (!editingmode.value) return
// thirdmenuIndex.value = index
shakyTable.value = false
@ -1951,12 +2417,11 @@
saveY.value = Math.floor(e.touches[0].pageY);
longPressTimer.value = setTimeout(() => {
redNameindex0.value = [];
if (isScrolling.value) return
isTuoing.value = true;
emit('handsend', item)
// emit('savename', item.title, reldata.value);
postitem.value = item
}, 200)
}
const isScrolling = ref(false)
@ -2009,9 +2474,6 @@
singleTimer = null
}
lastClick.value = 0
// console.log('',item)
// const openerror = ref(false)
// const errshow = ref("")
if (!editingmode.value) {
errshow.value = "添加服务指令,请切换成编辑模式"
openerror.value = true;
@ -2115,38 +2577,11 @@
positioningLong: saveEditIndex.value.index1.toString(),
tagName: timearr.value[saveEditIndex.value.index0].children[saveEditIndex.value.index1].tagName,
startTime: formattedStart,
izPackage: `N`,
cycleTypeId: 3,
cycleValue: 0,
optTime: ts,
izPackage: servertype.value ? `Y` : `N`,
cycleTypeId: 1,
}
// let postdata = {
// nuId: 2512101001,
// directiveId: 2013784872664961025,
// positioning: 8,
// positioningLong: 3,
// tagName: ``,
// startTime: `08:15`,
// izPackage: `Y`,
// cycleTypeId: 3,
// cycleValue: 0,
// // optTime: ts,
// optTime: "2026-01-26 16:43:14"
// }
// {
// "nuId": "2512101001",
// "directiveId": "2013784872664961025",
// "positioning": "8",
// "positioningLong": "3",
// "tagName": "",
// "startTime": "08:15",
// "izPackage": "Y",
// "cycleTypeId": 3,
// "cycleValue": 0,
// "optTime": "2026-01-26 16:43:14"
// }
addDirective(postdata).then((res) => {
console.log("kankan", postdata, res)
// console.log("kankan", postdata, res)
if (res.success) {
geteverything()
setTimeout(() => {
@ -2178,6 +2613,32 @@
return arr;
}
const packnumber = ref(0)
const packclick = (item, index) => {
packnumber.value = index;
const now = Date.now()
if (now - lastClick.value < dblDelay) {
//
if (singleTimer) {
clearTimeout(singleTimer)
singleTimer = null
}
lastClick.value = 0
if (!editingmode.value) {
errshow.value = "添加服务指令,请切换成编辑模式"
openerror.value = true;
return
}
if (saveEditIndex.value.index0 === -1) {
errshow.value = "添加服务指令,请选择左侧的单元格"
openerror.value = true
return
}
newaddruler(item)
return
}
lastClick.value = now
}
</script>
<style lang="less" scoped>

View File

@ -2,7 +2,7 @@
<view class="backgroundContainer" @touchmove.stop="getxy" @touchend.stop="cleanall">
<!-- 手指拖动 -->
<view class="box" :style="boxStyle">
<view class="box" :style="boxStyle" v-if="!whoisit">
<view class="title-time-blue">
<image class="blue-img" lazy-load src="/static/index/target.png" />
</view>
@ -13,7 +13,35 @@
</view>
</view>
<view class="card-box" :style="boxStyle" v-if="whoisit">
<view class="title-time-blue-card">
<image class="blue-img" src="/static/index/bluetarget.png" />
</view>
<view class="card-bao" v-if="simpleobj.izPackage==`Y`">
</view>
<view class="title-time-border-hisOk">
<view class="title-time">
<view class="title-time-font-rel">
{{ splitString(simpleobj.directiveName)[0]}}
</view>
<view v-if="splitString(simpleobj.directiveName)[1]" class="title-time-font-tags">
({{ splitString(simpleobj.directiveName)[1]}})
</view>
<view class="card-time">
<view class="weight-time">
{{ simpleobj.startTime }}
<text style="margin: 0 3rpx;">
-
</text>
{{ simpleobj.endTime }}
</view>
</view>
</view>
</view>
</view>
<!-- 左侧菜单 -->
<leftcontent :list="arrlist" @navurl="navurl" :userInfo="userInfo"></leftcontent>
<!-- 主页 -->
@ -21,11 +49,11 @@
<index :isShow="menuIndex==0" v-if="swipedex==0&&!specialPage" @swip="swip" @gospecial="gospecial" />
<!-- 新主页 -->
<bignurse :isshow="menuIndex==0"
<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' @handmove="handmove" @handsend="handsend" />
<newnurse :isshow="menuIndex==1" v-if="swipedex==1" :canmove="startmoveit" :sendxy="sendxy" :isblue='isblue' :targetrule="targetrule"
@handsend="handsend" @rulepush="rulepush" />
<!-- 医嘱 -->
<doctorask v-if="swipedex==2&&uni.getStorageSync('elderId')&&uni.getStorageSync('nuId')" />
<logistics :isshow="menuIndex==3"
@ -82,12 +110,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) => {
@ -202,7 +230,7 @@
let nuName = uni.getStorageSync('nuName')
queryPadPageList({ 'pageNo': -1, 'nuName': nuName }).then((res => {
let arr = res.result.records[0].permissionList;
arrlist.value = [{ name: '首页', url: '/static/shouye/sy/h0.png', urls: '/static/shouye/sy/h1.png', type: 'hldy' }];
let tbr = [];
@ -334,13 +362,39 @@
title: ""
})
const startmoveit = ref(true)
const whoisit = ref(0);
const simpleobj = ref({
startTime: "",
endTime: "",
directiveName: "",
izPackage: '',
})
function handsend(look : any) {
movelook.value.url = uni.getStorageSync('imagebase') + look.immediateFileFocus;
if (!movelook.value.url) {
movelook.value.url = `/static/index/sharelogo.png`
if (look.levle) {
whoisit.value = 0;
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
} else {
whoisit.value = 1;
simpleobj.value.startTime = look.startTime;
simpleobj.value.endTime = look.endTime;
simpleobj.value.directiveName = look.directiveName;
simpleobj.value.izPackage = look.izPackage;
startmoveit.value = false
// console.log("",look)
}
movelook.value.title = look.title;
startmoveit.value = false
// 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
}
//
@ -364,37 +418,108 @@
const animationData = ref({});
let ticking = false;
let handle = null;
const sendxy = ref([0,0])
const isblue = ref(false)
const sendxy = ref([0, 0])
const isblue = ref(0)
const getxyrel = (event) => {
event.preventDefault()
if(!startmoveit.value){
if (!startmoveit.value) {
const touch = event.touches[0];
const a = touch.clientX.toFixed(2);
const b = touch.clientY.toFixed(2);
isblue.value = inArea(a,b)
handmove([a,b])
isblue.value = inArea(a, b)
// console.log(a, b)
handmove([a, b])
}
}
function inArea(x, y) {
return (
x >= 790 &&
x <= 1062 &&
y >= 147 &&
y <= 255
)
const rules = ref([])
const rulepush = (array : any) => {
console.log("array", array)
rules.value = array
}
const targetrule = ref([-1,-1])
function inArea(x, y) {
if (!whoisit.value) {
if (x >= 790 &&
x <= 1062 &&
y >= 147 &&
y <= 255) {
return 1
} 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
}
}
return 0
}
}
// 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]
handmove([-200,-200])
sendxy.value = [a, b]
handmove([-200, -200])
startmoveit.value = true;
isblue.value = false
isblue.value = 0
}
// 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;
}
</script>
@ -415,7 +540,6 @@
}
.box {
// pointer-events: none;
position: fixed;
left: 0;
top: 0;
@ -460,4 +584,107 @@
}
}
}
.card-box {
position: fixed;
left: 0;
top: 0;
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;
}
}
}
}
}
</style>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

After

Width:  |  Height:  |  Size: 167 KiB

BIN
static/down.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
static/index/deleticon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
static/index/pack.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 788 B

BIN
static/index/packtarget.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 729 B

BIN
static/right.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

BIN
static/righttarget.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -570,7 +570,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
)
]);
}
const camera = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["styles", [_style_0]], ["__file", "D:/项目/hldy_app_mini/pages/camera.nvue"]]);
const camera = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["styles", [_style_0]], ["__file", "D:/hldy_app_mini/pages/camera.nvue"]]);
export {
camera as default
};

View File

@ -578,7 +578,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
)
]);
}
const fullcamera = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["styles", [_style_0]], ["__file", "D:/项目/hldy_app_mini/pages/fullcamera.nvue"]]);
const fullcamera = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["styles", [_style_0]], ["__file", "D:/hldy_app_mini/pages/fullcamera.nvue"]]);
export {
fullcamera as default
};