<!-- 护嘱 -->
<template>
	<!-- click是让抖动停止 -->
	<view class="right-container" :style="isshow?{opacity: `1`}:{opacity: `0`}"
		@click="bottomisShaking=false;shakyTable = false">
		<!-- 轮盘 -->
		<!-- <joystick v-show="isEdit" @movecard="movecard" /> -->
		<joystick @movecard="movecard" />
		<!-- 测试 -->
		<!-- <ceshi /> -->
		<!-- 新增后的按钮 -->
		<!-- <skill v-show="isEdit && songisopen && !isMove && !deleteisopen" @clickcircle="clickcircle" /> -->
		<!-- 新增 -->
		<!-- <skilladd v-show="!haveName && isEdit && !songisopen && !isMove&& !deleteisopen" @getDownListIndex="openAdd" /> -->
		<!-- 移动 -->
		<!-- <skillmove v-show="((haveName && isEdit && !songisopen) ||(isEdit && !songisopen && isMove)) && !deleteisopen"
			:ismove="isMove" @clickcard="changecard" /> -->
		<!-- 删除 -->
		<!-- <skilmovedelete v-show="deleteisopen" @clickdelete="clickdelete" /> -->
		<view class="right-container-title-nav">
			<text :class="darkFans?`right-container-title-no-dark`:`right-container-title-no`">
				ID：12345678
			</text>
			<text :class="darkFans?`right-container-title-no-dark`:`right-container-title-no`">
				名称：未命名01
			</text>

			<view class="right-icons">
				<image class="right-icons-img" :src="`/static/index/undericons/man.png`" />
				<view :class="darkFans?`right-icons-font-dark`: `right-icons-font` ">王金福</view>
				<image class="right-icons-img-icon"
					:src="darkFans?`/static/index/undericons/face.png`:`/static/index/undericons/facelight.png`" />
				<image class="right-icons-img-icon"
					:src="darkFans?`/static/index/undericons/hand.png`:`/static/index/undericons/handlight.png`" />
				<image class="right-icons-img-icon"
					:src="darkFans?`/static/index/undericons/out.png`:`/static/index/undericons/outlight.png`" />
			</view>
			<view class="right-container-title-class-anhei-button-wrong" @click="newchange(0)">
				<text class="right-container-title-class-anhei">
					拖动模式
				</text>
			</view>
			<!-- <view class="right-container-title-class-anhei-button-wrong" @click="newchange(1)">
				<text class="right-container-title-class-anhei">
					手柄模式1
				</text>
			</view> -->
			<view class="right-container-title-class-anhei-button">
				<text class="right-container-title-class-anhei">
					手柄模式
				</text>
			</view>
		</view>
		<view class="doctorsay-container-view">
			<view class="doctorsay-container-container">
				<view class="doctorsay-container-title">
					<view class="doctorsay-container-left">
						<view class="doctorsay-container-left-gun"></view>
						<view class="doctorsay-container-left-font">护理流程</view>
						<view class="doctorsay-container-share" @click="shareToWeixin">
							分享
						</view>
						<view class="doctorsay-container-share">
							立即生效
						</view>
					</view>
					<view class="doctorsay-container-right">
						<view class="doctorsay-container-right-kuai-cheng"></view>
						<view class="doctorsay-container-kuai-font">日常</view>
						<view class="doctorsay-container-right-kuai-zi"></view>
						<view class="doctorsay-container-kuai-font">周期</view>
						<view class="doctorsay-container-juzhen" @click="routerPush">
							预览
						</view>
						<!-- <view class="doctorsay-container-juzhen" @click="openEdit">
							{{isEdit?"取消编辑":"编辑"}}
						</view> -->
						<!-- <view v-show="isEdit" class="doctorsay-container-juzhen" @click="openLunpan">
							{{isLunpan?"取消轮盘":"开启轮盘"}}
						</view> -->
					</view>
				</view>
				<view class="super-card">
					<view class="boom-title">
						<view class="boom-title-left">
							分
						</view>
						<view class="boom-title-right">
							时
						</view>
					</view>
					<view class="boom-father">
						<view class="boom">
							<view :style="{ marginTop: `-${2 *moveDownNumber}rpx` }">
								<view v-for="(item,index) in timearr[0].children" :key="index">
									<view
										:class="touchindex1 === index ||(liang.index1 === index && !canmove) || (flyNumber.index1 === index && shakyTable) ? `boom-son-target`:  `boom-son`"
										v-show="item.typeName">
										{{item.typeName}}
									</view>
								</view>
							</view>
						</view>
					</view>

					<view class="super-card-container">
						<!-- <swiper :disable-touch="!canmove || shakyTable" :current="currentNumber" class="scroll-x"
							circular :indicator-dots="false" @change="changecurrentNumber" :interval="4000"
							:duration="500">
							<swiper-item v-for="(item,index) in [1,2,3]" :key="index"> -->
						<scroll-view style="height: 920rpx;width: 100%;" :scroll-left="cardLeft" scroll-x
							@scroll="handleTop" :show-scrollbar="false">
							<view
								style="display: flex;box-shadow: 10rpx 10rpx 20rpx rgba(0, 0, 0, 0.1);width:5610rpx;background: linear-gradient(to right, #c4dbf4,#c9c2ef, #c6dcf3);">
								<view v-for="(item0,index0) in timearr" :key="index0">
									<view class="super-card-time">
										{{(item0.positioning.length == 1 ? ('0' + item0.positioning) : item0.positioning) + ":00"}}
									</view>
								</view>
							</view>
							<view style="display: flex;height: calc(100% - 80rpx);">

								<scroll-view style="height: 100%;width:5610rpx" :scroll-top="scrollTop"
									:scroll-y="canmove && !shakyTable" @scroll="handleScrolltime"
									:show-scrollbar="false">
									<view style="display: flex;height: 100%;">
										<view v-for="(item0,index0) in timearr" :key="index0">
											<view class="super-card-time-und">
												<view v-for="(item1,index1) in item0.children" style="width: 100%;"
													:key="index1">
													<view
														:class=" targetRuler.index0 === index0 && targetRuler.index1 === index1 ? targetRuler.index1 ?`title-time-border-big`:`title-time-border-big-top` : `super-card-time-card` "
														:style="!targetRuler.bordershow && saveRulerTime.index0 === index0 && saveRulerTime.index1 === index1 ? {zIndex:999} : {borderTop: '1rpx solid transparent'}"
														:id="`a${index0}_${index1}`" style="position: relative;"
														@click="rulerTouchClick(item1,index0,index1,$event)"
														@touchstart="rulerTouchStart(item1,index0,index1,$event)"
														@touchmove="rulerTouchMove" @touchend="rulerTouchEnd()"
														:data-index0="index0" :data-index1="index1">
														<view class="time-button-orange-spe"
															v-if="flyNumber.index0 === index0 && flyNumber.index1 === index1 && index1==0">
															请选择服务指令迁移的目标单元格
															<view class="under-button-three"></view>
														</view>
														<view class="time-button-orange"
															v-if="flyNumber.index0 === index0 && flyNumber.index1 === index1 && index1">
															请选择服务指令迁移的目标单元格
															<view class="under-button-three"></view>
														</view>
														<view class="time-button-black-spe"
															v-if="saveEditIndex.index0 == index0 && saveEditIndex.index1 == index1 && index1==0 && isDelete">
															是否确认删除该服务指令
															<view class="under-button-three"></view>
														</view>
														<view class="time-button-black"
															v-if="saveEditIndex.index0 == index0 && saveEditIndex.index1 == index1 && index1 && isDelete">
															是否确认删除该服务指令
															<view class="under-button-three"></view>
														</view>
														<view class="title-time-blue"
															v-show="saveEditIndex.index0 == index0 && saveEditIndex.index1 == index1">
															<image class="title-time-blue-img"
																:src="isMove?`/static/index/movemode/targetcheng.png`: `/static/index/movemode/target.png`" />
														</view>
														<view :class="getClass(item1,index0,index1)"
															style="font-size: 30rpx;overflow: hidden;"
															:style="{ animationDelay:`-${computeDelay(index0, index1).toFixed(2)}s` }">
															<view class="title-time" v-if="item1.startTime"
																v-show=" liang.index0 !== index0 || liang.index1 !== index1 || canmove"
																style="margin-top: 5rpx;">
																<view class="title-time-time" style="font-size: 25rpx;">
																	{{item1.startTime + `-` + item1.endTime}}
																</view>
																<image class="title-time-button"
																	:src="item1.cycleType=='日常'?`/static/index/yellowbian.png`:`/static/index/puoplebian.png`" />
																<view class="title-time-font">
																	{{item1.cycleType}}
																</view>
															</view>
															<!-- <view style="margin-top: 20rpx;font-weight: 700;"
																v-show=" liang.index0 !== index0 || liang.index1 !== index1 || canmove">
																{{splitString(item1.directiveName)[0]}}
															</view> -->
															<image v-if="item1.startTime" class="title-time-img"
																src="/static/index/tu.png" />
															<view v-if="item1.startTime" class="title-time-font-rel">
																{{splitString(item1.directiveName)[0]}}
															</view>
															<view v-if="item1.startTime" class="title-time-items">
																<image class="right-box-items-button"
																	src="/static/index/ku.png" />
																<image class="right-box-items-button"
																	src="/static/index/ren.png" />
															</view>
															<!-- <view class="down-icons"
																v-show=" liang.index0 !== index0 || liang.index1 !== index1 || canmove"
																:style="item1.cycleType!='日常'?{backgroundColor:`rgb(212,203,255)`}:{}"
																v-if="splitString(item1.directiveName)[1]">
																<view class=""
																	v-for="(item,index) in splitString(item1.directiveName).slice(1)"
																	:key="index">
																	<view class="icon"
																		:style="item1.cycleType!='日常'?{backgroundColor:`rgb(123,97,255)`}:{}">
																		{{splitString(item1.directiveName)[index + 1]}}
																	</view>
																</view>
															</view> -->
														</view>
													</view>
												</view>
											</view>
										</view>
									</view>
								</scroll-view>
							</view>
						</scroll-view>
						<view class="scroll-bottom-bgc"></view>
					</view>
					<view class="right-cards">
						<scroll-view scroll-x class="scroll-box" :scroll-left="scrollLeft">
							<view class="right-box">
								<view v-for="(item,index) in bottomItems" :key="index">
									<view class="right-box-item" @touchstart="bottomTouchStart"
										@touchmove="bottomTouchMove" @touchend="bottomTouchEnd"
										:style="item.target?{background: item.target,transition:`all 1.5s ease-in-out`}:{transition:`all 1.5s ease-in-out`}">
										<image class="title-time-button" src="/static/index/redbian.png" />
										<view class="title-time-font">
											即时
										</view>
										<view :style="{ animationDelay:`-${index * 0.1}s` }"
											:class="bottomisShaking?`super-end-items-img-father-active`:`super-end-items-img-father`">
											<image class="right-box-img" :src="item.url" />
										</view>

										<view class="right-box-font">{{item.name}}</view>
										<view class="right-box-items">
											<image class="right-box-items-button" src="/static/index/ku.png" />
											<image class="right-box-items-button" src="/static/index/ren.png" />
										</view>
										<view class="super-end-items-father-close-father" v-show="bottomisShaking"
											@click.stop="bottomItems.splice(index, 1)">
											-
										</view>
									</view>
								</view>
							</view>
							<!-- <view style="width: 20rpx;"></view> -->
						</scroll-view>
						<view class="middle-box">
							<view class="middle-left-box">
								<view class="first-contant">
									<view class="time-father" v-show="iszhouqi">
										<view class="time-button" v-show="isweek">
											<view class="time-button-month">周</view>
											<view class="time-button-week"
												@click="isweek=false;weekIndex = -1;weekValue = ''">月</view>
										</view>
										<view class="time-button" v-show="!isweek">
											<view class="time-button-month-target"
												@click="isweek=true;monthIndex = -1;monthValue = ''">周</view>
											<view class="time-button-week-target">月</view>
										</view>
										<scroll-view scroll-y style="width: 100%;height: 600rpx;"
											:show-scrollbar="false" :scroll-top="firsttop">
											<view v-for="(item,index) in weekDays" :key="index"
												@click="clickWeek(item,index)" v-if="isweek">
												<view :class="weekIndex===index?`items-card-target`:`items-card`">
													{{item}}
												</view>
											</view>
											<view v-for="(item,index) in days" :key="index"
												@click="clickMonth(item,index)" v-if="!isweek">
												<view :class="monthIndex===index?`items-card-target`:`items-card`">
													{{item}}
												</view>
											</view>
											<view style="height: 40rpx;"></view>
										</scroll-view>
									</view>

									<scroll-view scroll-y style="height: 100%;width:100%;" :show-scrollbar="false"
										:scroll-top="firsttop" v-show="!iszhouqi">
										<view
											v-for="(item,index) in bigArray[upmenuIndex].children[downmenuIndex].children"
											:key="index" @click="thirdmenuIndex=index">
											<view class="right-box-item"
												:style="thirdmenuIndex==index?{border: `2rpx solid rgb(54, 159, 239)`,backgroundColor:`#fff`}:{border: `2rpx solid rgb(229, 233, 249)`}">
												<image class="title-time-button" v-show="item.cycleType ==='日常护理'"
													src="/static/index/ri.png" />
												<image class="title-time-button" v-show="item.cycleType ==='周期护理'"
													src="/static/index/zhou.png" />
												<image class="title-time-button" v-show="item.cycleType ==='即时护理'"
													src="/static/index/ji.png" />
												<image class="right-box-img" src="/static/index/tu.png" />
												<view class="right-box-font"
													:style="thirdmenuIndex==index?{color:`rgb(54, 159, 239)`}:{}">
													{{item.title}}
												</view>
												<view class="right-box-items">
													<image class="right-box-items-button" src="/static/index/ku.png" />
													<image class="right-box-items-button" src="/static/index/ren.png" />
												</view>
											</view>
										</view>
										<view style="height: 20rpx;"></view>
									</scroll-view>
								</view>
								<view class="second-contant">
									<scroll-view scroll-y style="height: 100%;width:100%;" :show-scrollbar="false"
										:scroll-top="secondtop">
										<view v-for="(item,index) in downList" :key="index"
											@click="secondContant(index)">
											<view :class="downmenuIndex==index? `downList-box-target` : `downList-box`">
												<image class="downList-box-img" src="/static/index/tu.png" />
												<view class="downList-box-text">
													{{ item.title }}
												</view>

											</view>
										</view>
										<view style="height: 20rpx;"></view> <!-- 空白元素 -->
									</scroll-view>
								</view>
							</view>
							<view class="middle-right-box">
								<view v-for="(item,index) in doctorsayList" :key="index" @click="changLeft(index)">
									<view
										:class="index === upmenuIndex ? `doctorsay-container-card-target`:`doctorsay-container-card`">
										<image class="doctorsay-container-card-img"
											:src="index === upmenuIndex ? item.targetUrl : item.url" />
										<view
											:class="(index === upmenuIndex) ? `doctorsay-container-card-font-dark`:`doctorsay-container-card-font`">
											{{ item.name }}
										</view>
										<view class="bad-circle-up" v-show="index === upmenuIndex && index">
										</view>
										<view class="bad-circle-down" v-show="index === upmenuIndex && index!==5">
										</view>
									</view>
								</view>
							</view>
						</view>
						<view class="under-button">
							<view class="under-button-black" :style="isop?{opacity: 1}:{opacity: 0}">
								不能重复添加相同的即时服务指令
								<view class="under-button-three"></view>
							</view>
							<view class="white-circle" @click="changecard">
								<image class="white-circle-img" src="/static/index/keyimg/movebutton.png" />
							</view>
							<view class="white-circle" @click="openDelete">
								<image class="white-circle-img" src="/static/index/keyimg/deletebutton.png" />
							</view>
							<view class="white-circle" @click="opensay">
								<image class="white-circle-img" src="/static/index/keyimg/notebutton.png" />
							</view>
							<view class="white-circle-click-father" @click="addnew">
								<image class="white-circle-click" src="/static/index/keyimg/okbutton.png" />
								<view class="white-circle-font">
									确定
								</view>
							</view>
						</view>
					</view>

				</view>
			</view>
		</view>
		<!-- 点击的弹出层 -->
		<view v-show="isopen" class="popup-overlay" @click="isopen=false;flyNumber.index0=999;touchindex1=-1">
			<view class="popup-overlay-content"
				:style="{ top: (2*openY - 350) + 'rpx',left: (2*openX - 780) + 'rpx',opacity: isopacity ? 1 : 0,backgroundColor:timearr[flyNumber.index0]?.children[flyNumber.index1]?.type==='日常'? '#fffcf6':'rgb(246, 244, 254)' }"
				@click.stop>
				<view class="popup-overlay-content-left">
					<image class="popup-overlay-content-left-img" :src="`/static/index/teeth.png`" />
					<text class="popup-overlay-content-left-font">
						{{ timearr[flyNumber.index0]?.children[flyNumber.index1]?.value }}
					</text>
				</view>
				<view class="popup-overlay-content-right">
					<view class="time-font">
						10:00 - 10:10
					</view>
					<view class="time-text">
						为老人提供口腔清洁器具，牙膏、牙刷及水杯，看护完成
					</view>
				</view>
			</view>
		</view>
		<!-- 选择的弹出层 -->
		<!-- 	<view v-if="songisopen" class="popup-song">
			<view class="popup-song-contain" :style="{opacity: songisopacity ? 1 : 0}" @click.stop>
				<view class="popup-song-father">
					<image class="shu-up-img" src="/static/index/cheng.png" />
					<view class="shu-up-font">
						<view class="">
							服务时段：{{ openValue.time + ":" + openValue.minute}}
						</view>
						<view style="margin-left: 30rpx;">
							护理时长：10分钟
						</view>
					</view>
					<view class="shu-container-left" v-show="!clickstauts">
						<view class="shu-container-left-gun"></view>
						<view class="shu-container-left-font">服务类型</view>
					</view>
					<view class="arrayindex" v-show="!clickstauts">
						<view v-for="(item,index) in openValue.array" :key="index">
							<view style="position: relative;box-shadow: 10rpx 10rpx 20rpx rgba(105, 129, 178, 0.4)"
								:class="cardsumit.op.index[1]===index?`arrayindex-one-target`:`arrayindex-one`"
								@click="cardsumit.op.index[1]=index">
								{{item.title}}
							</view>
						</view>
					</view>
					<view class="shu-container-left" v-show="clickstauts===1">
						<view class="shu-container-left-gun"></view>
						<view class="shu-container-left-font">服务指令</view>
					</view>
					<view class="secondarrayindex" v-show="clickstauts===1">
						<view v-for="(item,index) in secondopenValue" :key="index">
							<view style="position: relative;box-shadow: 10rpx 10rpx 20rpx rgba(105, 129, 178, 0.4)"
								:class="cardsumit.op.index[2]===index?`arrayindex-one-target`:`arrayindex-one`"
								@click="clickOp(index,item)">
								<image class="ri-img" v-show="item.cycleType ==='日常护理'"
									:src="cardsumit.op.index[2]!==index? `/static/index/ridark.png`:`/static/index/ri.png`" />
								<image class="ri-img" v-show="item.cycleType ==='周期护理'"
									:src="cardsumit.op.index[2]==index? `/static/index/zhoudark.png`:`/static/index/zhou.png`" />
								<image class="ri-img" v-show="item.cycleType ==='即时护理'"
									:src="cardsumit.op.index[2]==index? `/static/index/jidark.png`:`/static/index/ji.png`" />
								{{ item.relName }}
							</view>
						</view>
					</view>
					<view class="shu-container-left" v-show="clickstauts===2">
						<view class="shu-container-left-gun"></view>
						<view class="shu-container-left-font">周期类型</view>
					</view>
					<view class="radio-father" v-show="clickstauts===2">
						<view :class="isweek?`radio-circle-target`: `radio-circle`" @click="clickWeek"></view>
						<view :class="isweek&&selectType? `radio-font-target` : `radio-font`" @click="clickWeek">每周
						</view>
						<view :class="!isweek?`radio-circle-target`: `radio-circle`" @click="clickMonth"></view>
						<view :class="!isweek&&selectType? `radio-font-target` : `radio-font`" @click="clickMonth">每月
						</view>
					</view>
					<view class="week-father" v-show="isweek&&clickstauts===2">
						<view v-for="(item,index) in weekDays" :key="index">
							<view :class="cardsumit.weekTimeNumber===index?`week-one-target`:`week-one`"
								@click="cardsumit.weekTime=item;cardsumit.weekTimeNumber=index;selectType=false">
								{{item}}
							</view>
						</view>
					</view>
					<view class="month-father" v-show="!isweek&&clickstauts===2">
						<view v-for="(item,index) in days" :key="index">
							<view :class="cardsumit.monthTimeNumber===index?`month-one-target`:`month-one`"
								@click="cardsumit.monthTime=item;cardsumit.monthTimeNumber=index;selectType=false">
								{{item}}
							</view>
						</view>
					</view>
				</view>

			</view>
		</view> -->
		<!-- 删除表格的的弹出层 -->
		<!-- <view v-show="deleteisopen" class="popup-delete" @click="deleteisopen=false">
			<view class="popup-delete-content" style="padding-top: 30rpx;" :style="{ opacity: deleteisopacity ? 1 : 0 }"
				@click.stop>
				<image class="popup-delete-img" src="/static/index/deleteicon.png" />
				<view style="margin-top: 30rpx;" class="popup-delete-text">
					确定要删除 {{deletename}} 吗?
				</view>
			</view>
		</view> -->
		<!-- 替换表格的的弹出层 -->
		<view v-show="sayisopen" class="popup-say" @click="sayisopen=false">
			<view class="popup-say-content" style="padding-top: 30rpx;" :style="{ opacity: sayisopacity ? 1 : 0 }"
				@click.stop>
				<view class="popup-say-content-flex">
					<view class="popup-say-content-gun"></view>
					<view class="popup-say-content-font">情绪标签</view>
				</view>
				<view style="display: flex;">
					<view v-for="(item,index) in nameArray.slice(0,2)" :key="index">
						<view class="tags-father">
							<image class="tags-img" :src="`/static/index/tagNames/${index}.png`" />
							<view class="tags-font">{{item}}</view>
						</view>
					</view>
				</view>
				<view class="popup-say-content-flex" style="margin-top: 25rpx;">
					<view class="popup-say-content-gun"></view>
					<view class="popup-say-content-font">体型标签</view>
				</view>
				<view style="display: flex;flex-wrap: wrap;">
					<view v-for="(item,index) in nameArray.slice(2,11)" :key="index">
						<view class="tags-father">
							<image class="tags-img" :src="`/static/index/tagNames/${index+2}.png`" />
							<view class="tags-font">{{item}}</view>
						</view>
					</view>
				</view>
				<view class="popup-say-three"></view>
			</view>
		</view>
		<!-- 删除下方菜单的的弹出层 -->
		<!-- <view v-show="deletedownisopen" class="popup-delete" @click="deletedownisopen=false">
			<view class="popup-delete-content" :style="{ opacity: deletedownisopacity ? 1 : 0 }" @click.stop>
				<image class="popup-delete-img" src="/static/index/deleteicon.png" />
				<view class="popup-delete-text">
					确定要删除 {{deletename}} 吗?
				</view>
				<view class="popup-delete-button">
					<view class="popup-delete-button-right" @click="deletedownisopen=false">
						取消
					</view>
					<view class="popup-delete-button-left"
						@click="bottomItems.splice(deletebottomindex, 1);deletedownisopen=false">
						确定
					</view>
				</view>
			</view>
		</view> -->
		<!-- 分享的弹出层 -->
		<view v-show="shareShow" class="popup-share" @click="shareShow=false">
			<view class="popup-share-content" :style="{ opacity: deletedownisopacity ? 1 : 0 }" @click.stop>
				<view class="popup-share-title">
					护理日程分享
					<image class="popup-share-img" src="/static/index/NU.png" />
				</view>
				<view class="popup-share-upcontent">
					<view class="popup-share-font">久泰护理日程分享测试</view>

				</view>
				<view class="popup-share-gray"></view>
				<view class="popup-share-downcontent">
					<view class="popup-share-downcontent-left">
						<image class="popup-downcontent-img" src="/static/index/NU.png" />
						<view class="popup-downcontent-font">久泰护理</view>
					</view>
					<view class="popup-share-downcontent-button" @click="clickshare">
						分享
					</view>
				</view>
			</view>
		</view>
	</view>
</template>

<script setup lang="ts">
	import { ref, onMounted, onBeforeUnmount, computed, nextTick, defineProps, defineEmits, watch } from 'vue';
	import { onShow, onHide } from '@dcloudio/uni-app';
	import type { roomBtttonType } from "./index";
	import { getServiceTree, getNclist, addBatch } from "./api.js";
	import index from '../../request';
	import { myArray } from './yaoshandiao.js';
	import joystick from '@/component/public/newgame/joysticknew.vue';
	// import joysticknew from '@/component/public/game/joysticknew.vue';
	import skill from '@/component/public/game/skill.vue';
	import skilladd from '@/component/public/game/skilladd.vue'
	import skillmove from '@/component/public/game/skilmove.vue'
	import skilmovedelete from '@/component/public/game/skilmovedelete.vue'
	// import ceshi from '@/component/public/game/ceshi.vue'
	const props = defineProps({
		isshow: {
			type: Boolean,
			required: true,
		},
		darkFans: {
			type: Boolean,
			required: true,
		},
		canmove: {
			type: Boolean,
			required: true,
		},
		liang: {
			type: Object,
		},
		isold: {
			type: Boolean,
			required: true,
		}
	});
	watch(
		() => props.isold,
		() => {
			if (props.isold) {
				saveEditIndex.value.index0 = saveleft.value;
				saveEditIndex.value.index1 = 0;
				cardLeft.value = 1;
				scrollTop.value = 1;
				nextTick(() => {
					scrollTop.value = 0;
					cardLeft.value = saveleft.value * 117;
					// isHave()
				})

			}
		})
	watch(
		() => props.canmove,
		() => {
			bottomisShaking.value = false;
		})
	watch(
		() => props.isshow,
		() => {
			bottomisShaking.value = false
			shakyTable.value = false
		})
	const bottomItems = ref([
		{
			name: '纸尿裤',
			url: "/static/index/niao.png",
			target: "#fff",
			id: -1
		},
		{
			name: '呕吐',
			url: "/static/index/tu.png",
			target: "#fff",
			id: -1
		},
		{
			name: '吸痰',
			url: "/static/index/ou.png",
			target: "#fff",
			id: -1
		},
		{
			name: '大便',
			url: "/static/index/baba.png",
			target: "#fff",
			id: -1
		},
		{
			name: '纸尿裤',
			url: "/static/index/niao.png",
			target: "#fff",
			id: -1
		},
		{
			name: '呕吐',
			url: "/static/index/tu.png",
			target: "#fff",
			id: -1
		},
		{
			name: '吸痰',
			url: "/static/index/ou.png",
			target: "#fff",
			id: -1
		},
		{
			name: '大便',
			url: "/static/index/baba.png",
			target: "#fff",
			id: -1
		},
	])
	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 containerRef = ref(null);
	const scrollLeft = ref(0);
	const cardLeft = ref(678);
	//移动表格
	const scrollTop = ref(0)
	//左下的数组
	const downList = ref<any>()
	//左下的数组
	const rightList = ref<String[]>([
		// "三分段",
		// "四分段",
	])
	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 currentNumber = ref(0);
	const scrollKey = ref(0);
	// const updo = ref(0);
	// const rightdo = ref(0);
	// const leftdo = ref(0);
	// const downdo = ref(0);
	const saveleft = ref(6);
	const saveright = ref(11);
	const savetop = ref(0);
	const savebottom = ref(3);
	const isMove = ref(false);
	// 替换新的
	const getNew = () => {
		let object = JSON.parse(JSON.stringify(timearr.value[flyNumber.value.index0].children[flyNumber.value.index1]))
		indexsave.value = [saveEditIndex.value.index0, saveEditIndex.value.index1]
		// 旧的typeName保存了
		let typeName = timearr.value[flyNumber.value.index0].children[flyNumber.value.index1].typeName
		timearr.value[flyNumber.value.index0].children[flyNumber.value.index1] = { directiveName: '', typeName: typeName }
		//然后保存新的
		let newtypeName = timearr.value[indexsave.value[0]].children[indexsave.value[1]].typeName
		timearr.value[indexsave.value[0]].children[indexsave.value[1]] = object
		timearr.value[indexsave.value[0]].children[indexsave.value[1]].typeName = newtypeName
		let startTime = timearr.value[indexsave.value[0]].children[indexsave.value[1]].startTime;
		let endTime = timearr.value[indexsave.value[0]].children[indexsave.value[1]].endTime;
		let positioning = timearr.value[indexsave.value[0]].positioning
		const rest = startTime.split(":")[1]; // ":20"
		const rest0 = endTime.split(":")[1];; // ":20"
		let many = Number(rest0) - Number(rest);
		let start = newtypeName
		let end = Number(start) + many
		// 用 positioning 替换原来的小时部分
		timearr.value[indexsave.value[0]].children[indexsave.value[1]].startTime = positioning + ":" + start.padStart(2, '0'); // "9:20"
		timearr.value[indexsave.value[0]].children[indexsave.value[1]].endTime = positioning + ":" + String(end % 60).padStart(2, '0'); // "9:20"
		flyNumber.value.index0 = -1;
		flyNumber.value.index1 = -1;
		isMove.value = false;
		let data = {
			index0: saveEditIndex.value.index0,
			index1: saveEditIndex.value.index1
		}
		whereEvent(data);
		// isHave()
	}
	//变更左侧菜单
	const changLeft = (index : number) => {
		if (index === 5) {
			return
		}
		iszhouqi.value = false;
		weekIndex.value = -1;
		monthIndex.value = -1;
		weekValue.value = "";
		monthValue.value = "";

		secondtop.value = 1
		firsttop.value = 1
		nextTick(() => {
			secondtop.value = 0
			firsttop.value = 0
		})
		upmenuIndex.value = index
		downList.value = bigArray.value[index].children
		downmenuIndex.value = 0;
		thirdmenuIndex.value = 0;
	}
	const changecard = () => {

		if (isMove.value) {
			getNew()
		} else {
			if (timearr.value[saveEditIndex.value.index0].children[saveEditIndex.value.index1].directiveName) {
				flyNumber.value.index0 = saveEditIndex.value.index0;
				flyNumber.value.index1 = saveEditIndex.value.index1;
				isMove.value = true
			}
		}
	}
	// const openAdd = (index : number) => {
	// 	selectType.value = true;
	// 	cardsumit.value = {
	// 		op: {
	// 			name: "",
	// 			index: [-1, -1, -1],
	// 		},
	// 		startTime: "",
	// 		monthTimeNumber: -1,
	// 		monthTime: "",
	// 		weekTime: "",
	// 		weekTimeNumber: -1,
	// 	}
	// 	//虚化的动画
	// 	songisopen.value = true;
	// 	songisopacity.value = false;
	// 	setTimeout(() => {
	// 		songisopacity.value = true
	// 	}, 100)
	// 	// 存储 两个index
	// 	cardsumit.value.op.index[0] = index
	// 	cardsumit.value.op.index[1] = 0
	// 	// 存储时间和二级数组
	// 	openValue.value.time = timearr.value[saveEditIndex.value.index0].positioning;
	// 	openValue.value.minute = timearr.value[saveEditIndex.value.index0].children[saveEditIndex.value.index1].typeName
	// 	openValue.value.array = bigArray.value[index].children;
	// 	//存储选中表格的坐标
	// 	indexsave.value = [saveEditIndex.value.index0, saveEditIndex.value.index1]
	// }
	function dosomesave() {
		cardsumit.value.op.name = secondopenValue.value[cardsumit.value.op.index[2]].relName
		switch (secondopenValue.value[cardsumit.value.op.index[2]].cycleType) {
			case `日常护理`:
				openOp.value = 0
				break;
			case `周期护理`:
				openOp.value = 1
				break;
			case `即时护理`:
				openOp.value = 2
				break;
			default:
				break;
		}
	}
	const selectType = ref(true);
	const deleteButton = ref(false);
	// 给摇杆用的
	//看完迷糊不，我都迷糊了 
	//0上1右2下3左
	// songisopen.value是弹窗打没打开
	// clickstauts.value是弹窗的第几步
	// selectType.value是选择周和月的状态
	const movecard = (where : number) => {
		isDelete.value = false;
		switch (where) {
			case 0:
				if (saveEditIndex.value.index1) {
					saveEditIndex.value.index1--
				}
				if (saveEditIndex.value.index1 < savetop.value) {
					savetop.value = saveEditIndex.value.index1;
					savebottom.value = saveEditIndex.value.index1 + 3
					scrollTop.value = saveEditIndex.value.index1 * 104.5;
				}
				// isHave()
				break
			case 1:
				if (saveEditIndex.value.index0 == 23) {
					return
				}
				saveEditIndex.value.index0++
				if (saveEditIndex.value.index0 > saveright.value) {
					saveleft.value = saveEditIndex.value.index0 - 5;
					saveright.value = saveEditIndex.value.index0
					cardLeft.value = saveleft.value * 117;
				}

				// isHave()
				break
			case 2:
				if (saveEditIndex.value.index1 == 11) {
					return
				}
				saveEditIndex.value.index1++
				if (saveEditIndex.value.index1 > savebottom.value) {
					savetop.value = saveEditIndex.value.index1 - 3;
					savebottom.value = saveEditIndex.value.index1;
					scrollTop.value = savetop.value * 104.5;
				}
				// isHave()
				break
			case 3:
				if (saveEditIndex.value.index0 == 0) {
					return
				}
				saveEditIndex.value.index0--
				if (saveEditIndex.value.index0 < saveleft.value) {
					saveleft.value = saveEditIndex.value.index0;
					saveright.value = saveEditIndex.value.index0 + 5;
					cardLeft.value = saveleft.value * 117;
				}
				// isHave()
				break
		}
	}
	const weekValue = ref("");
	const weekIndex = ref(-1);
	const monthValue = ref("");
	const monthIndex = ref(-1);
	const clickWeek = (item, index) => {
		weekValue.value = item;
		weekIndex.value = index;

		// selectType.value = true;
		// isweek.value = true;
		// cardsumit.value.monthTime = '';
		// cardsumit.value.monthTimeNumber = -1;
	}
	const clickMonth = (item, index) => {
		// console.log("item", item)
		monthValue.value = item;
		monthIndex.value = index;

		// selectType.value = true;
		// isweek.value = false;
		// cardsumit.value.weekTime = '';
		// cardsumit.value.weekTimeNumber = -1;
	}
	const isDelete = ref(false);
	const openDelete = () => {
		if (timearr.value[saveEditIndex.value.index0].children[saveEditIndex.value.index1].directiveName) {
			if (!isDelete.value) {
				isDelete.value = true;
			} else {
				isDelete.value = false;
				deleteRuler(saveEditIndex.value.index0, saveEditIndex.value.index1);
			}
		}
		
	}
	const haveName = ref(false);
	const isHave = () => {
		if (timearr.value[saveEditIndex.value.index0].children[saveEditIndex.value.index1].directiveName) {
			haveName.value = true;
		} else {
			haveName.value = false;
		}
	}
	// const clickdelete = (type : number) => {
	// 	if (type) {
	// 		deleteisopen.value = false;
	// 		deleteButton.value = false;
	// 	} else {
	// 		deleteRuler(deleteindex.value[0], deleteindex.value[1]);
	// 		isHave()
	// 	}
	// }
	// 给抖动用的
	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;

	// const changecurrentNumber = (event : any) => {
	// 	// 进行你想要的操作
	// 	currentNumber.value = event.detail.current;
	// 	nextTick(() => {
	// 		scrollTop.value = moveDownNumber.value;
	// 	});
	// };
	//监听拖拽
	const dragOffset = ref(0);
	const moveDownNumber = ref(0)
	function handleScrolltime(e) {
		let num = e.detail.scrollTop
		let formattedNum = parseFloat(num.toFixed(2));
		moveDownNumber.value = formattedNum
	}
	function handleTop(e) {
		// console.log(e.detail.scrollLeft)
		// if(e.detail.scrollLeft>7000){
		// 	cardLeft.value = 0;

		// }else if(e.detail.scrollLeft<1000){
		// 	// cardLeft.value = 7234;
		// 	cardLeft.value = 7000;
		// }

	}

	const changeBug = ref(true);

	// 方法：根据条件返回不同的类名
	const getClass = (item, index0, index1) => {
		if (item.cycleType === '日常') {
			if (flyNumber.value.index0 === (index0) && flyNumber.value.index1 === index1) {
				return 'title-time-border-yellow-active-transparent';
			} else if (shakyTable.value) {
				return 'title-time-border-yellow-active';
			} else {
				return 'title-time-border-yellow';
			}
		} else if (item.cycleType) {
			//为啥这么写，是因为动画写行内无效！！！
			if (flyNumber.value.index0 === (index0) && flyNumber.value.index1 === index1) {
				return 'title-time-border-pouple-active-transparent';
			}
			else if (shakyTable.value) {
				return 'title-time-border-pouple-active';
			} else {
				return 'title-time-border-pouple';
			}
		}
		return 'title-time-border';
	}
	// 初始化下面侧单列表
	const doctorsayList = ref<roomBtttonType[]>([
		{ url: '/static/index/firstTags/30.png', targetUrl: '/static/index/firstTags/21.png', name: '日常' },
		{ url: '/static/index/firstTags/10.png', targetUrl: '/static/index/firstTags/99.png', name: '清洁' },
		{ url: '/static/index/firstTags/40.png', targetUrl: '/static/index/firstTags/31.png', name: '饮食' },
		{ url: '/static/index/firstTags/00.png', targetUrl: '/static/index/firstTags/01.png', name: '睡眠' },
		{ url: '/static/index/firstTags/20.png', targetUrl: '/static/index/firstTags/11.png', name: '排泻' },
		{ url: '/static/index/firstTags/50.png', targetUrl: '/static/index/firstTags/41.png', name: '影像' },
	]);
	// 当前选中的菜单索引
	const upmenuIndex = ref<number>(0);
	const downmenuIndex = ref<number>(0);
	const thirdmenuIndex = ref<number>(0);
	// 暗黑模式
	const underFans = ref<boolean>(false);
	// 当前选中的菜单索引
	const roomTar = ref<number[]>([]);
	const emit = defineEmits(['darkchange', 'savename', 'saveruler', 'closename', 'changefangkuang', 'changeold']);
	const isEdit = ref(false);
	// const isLunpan = ref(false);
	const saveEditIndex = ref({
		index0: -1,
		index1: -1
	})
	const clickstauts = ref(0)
	const secondopenValue = ref([]);

	const secondContant = (index : number) => {
		iszhouqi.value = false;
		weekIndex.value = -1;
		monthIndex.value = -1;
		weekValue.value = "";
		monthValue.value = "";
		downmenuIndex.value = index;
		thirdmenuIndex.value = 0;
		firsttop.value = 1;
		nextTick(() => {
			firsttop.value = 0;
		})
	}
	// const clickcircle = (index : number) => {
	// 	if (clickstauts.value === 2 && selectType.value) {
	// 		return
	// 	}
	// 	if (!index) {
	// 		clickstauts.value++
	// 	} else {
	// 		if (clickstauts.value) {
	// 			clickstauts.value--
	// 		} else {
	// 			songisopen.value = false
	// 		}
	// 	}
	// 	if (clickstauts.value === 1) {

	// 		cardsumit.value.op.index[2] = 1
	// 		secondopenValue.value = []
	// 		secondopenValue.value = openValue.value.array[cardsumit.value.op.index[1]].children
	// 		secondopenValue.value.forEach((element : any) => {
	// 			element.relName = element.title + (element.tagName ? element.tagName.split(",").map(item => `（${item}）`).join("") : "")
	// 		})
	// 		clickOp(0, secondopenValue.value[0])
	// 	}
	// 	else if (clickstauts.value === 2) {

	// 		if (openOp.value == 1) {
	// 			cardsumit.value.weekTime = "";
	// 			cardsumit.value.monthTime = "";
	// 			isweek.value = true
	// 			// clickstauts.value = 
	// 		} else {
	// 			clickstauts.value = 0
	// 			movetoruler()
	// 		}

	// 	} else if (clickstauts.value === 3) {

	// 		clickstauts.value = 0
	// 		movetoruler()
	// 	}

	// }
	// const openEdit = () => {
	// 	isEdit.value = !isEdit.value;
	// 	if (isEdit.value) {
	// 		saveEditIndex.value.index0 = saveleft.value;
	// 		saveEditIndex.value.index1 = 0;
	// 		cardLeft.value = 1;
	// 		scrollTop.value = 1;
	// 		nextTick(() => {
	// 			scrollTop.value = 0;
	// 			cardLeft.value = saveleft.value * 117;
	// 		})
	// 		isHave()
	// 	} else {
	// 		saveEditIndex.value.index0 = -1;
	// 		saveEditIndex.value.index1 = -1;
	// 	}
	// };
	// const openLunpan = () => {
	// 	isLunpan.value = !isLunpan.value;
	// 	isEdit.value = false;
	// 	// nnd必须这样写
	// 	if (isLunpan.value) {
	// 		scrollTop.value = 1;
	// 		nextTick(() => {
	// 			scrollTop.value = 0;
	// 		})
	// 	}

	// 	if (isLunpan.value) {
	// 		saveEditIndex.value.index0 = saveleft.value;
	// 		saveEditIndex.value.index1 = 0;
	// 		isHave()
	// 	} else {
	// 		saveEditIndex.value.index0 = -1;
	// 		saveEditIndex.value.index1 = -1;
	// 	}
	// };
	const newchange = (type : number) => {
		emit('changeold', type)
	}

	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,
		typeName: ''
	})
	const deletebottomindex = ref(-1);
	const deletedownisopen = ref(false);
	const deletedownisopacity = ref(false);
	const deletebottom = (index : number, name : string) => {
		bottomisShaking.value = false;
		deletebottomindex.value = index;
		shakyTable.value = false;
		deletedownisopacity.value = false;
		deletedownisopen.value = true;
		deletename.value = name;
		setTimeout(() => {
			deletedownisopacity.value = true
		}, 100)
	}
	// const deleteindex = ref([-1, -1])
	// const deleteId = ref("");
	// const deleteItems = (item : any, index0 : number, index1 : number) => {
	// 	deleteindex.value = [-1, -1];
	// 	shakyTable.value = false;
	// 	bottomisShaking.value = false;
	// 	deleteisopacity.value = false;
	// 	deleteisopen.value = true;
	// 	deleteindex.value = [index0, index1]
	// 	deletename.value = item.directiveName;
	// 	deleteId.value = item.id
	// 	setTimeout(() => {
	// 		deleteisopacity.value = true
	// 	}, 100)
	// }
	const touchindex1 = ref(-1);
	// 分享矩阵到微信
	const shareShow = ref(false);
	const shareToWeixin = () => {

		shareShow.value = true;
		deletedownisopacity.value = false;
		setTimeout(() => {
			deletedownisopacity.value = true
		}, 100)

	}
	const clickshare = () => {
		uni.share({
			provider: "weixin",
			scene: "WXSceneSession",
			type: 0,
			href: "http://192.168.2.31:3101/daytoday",
			title: "护理日程分享",
			summary: "九泰护理日程测试",
			imageUrl: "https://qiniu-web-assets.dcloud.net.cn/unidoc/zh/uni@2x.png",
			success: function (res) {
				console.log("success:");
			},
			fail: function (err) {
				console.log("fail:");
			}
		});
	}
	//表格点击开始
	const rulerTouchClick = (item : any, index0 : number, index1 : number, e : any) => {
		if (item.directiveName) {
			touchindex1.value = index1;
			const query = uni.createSelectorQuery()
			query
				.selectAll('.super-card-time-card')
				.boundingClientRect((data : any) => {
					data.forEach(async (res : any) => {
						// 根据你的条件筛选元素
						if (res.left > 200 && res.left < 1067 && res.top < 570 && res.top > 140 && res.dataset.index0 == index0 && res.dataset.index1 == index1) {
							if (res.left > 200 && res.left < 500) {
								// 表格太靠左侧，修改到右面
								openX.value = Math.floor(res.left) + 520;
							} else {
								openX.value = Math.floor(res.left)
							}
							if (res.top > 140 && res.top < 300) {
								// 表格太靠上侧，修改到下面
								openY.value = Math.floor(res.top) + 250;
							} else {
								openY.value = Math.floor(res.top)
							}
							// openY.value = Math.floor(res.top);
							await nextTick()
							isopen.value = true;
							isopacity.value = false;
							//加动画
							setTimeout(() => {
								isopacity.value = true;
							}, 100)
						}
					})
				})
				.exec()
		}
	}
	const shakyTable = ref(false);
	const reldata = ref([]);
	//表格长按开始
	const rulerTouchStart = (item : any, index0 : number, index1 : number, e : any) => {
		// scrollTop.value = moveDownNumber.value;
		// moveX.value = Math.floor(e.touches[0].pageX);
		// moveY.value = Math.floor(e.touches[0].pageY);
		// timer.value = setTimeout(() => {
		// 	if (item.directiveName) {
		// 		flyNumber.value.typeName = item.typeName
		// 		flyNumber.value.index0 = index0;
		// 		flyNumber.value.index1 = index1;
		// 		indexsave.value = [-1, -1]
		// 		reldata.value = []
		// 		isTuoing.value = true;
		// 		const query = uni.createSelectorQuery()
		// 		query
		// 			.selectAll('.super-card-time-card')
		// 			.boundingClientRect((data : any) => {
		// 				data.forEach(async (res : any) => {
		// 					// 根据你的条件筛选元素
		// 					if (res.left > 200 && res.left < 1067 && res.top < 570 && res.top > 140) {
		// 						shakyTable.value = true;
		// 						reldata.value.push(res)
		// 					}
		// 				})
		// 			})
		// 			.exec()
		// 		emit('saveruler', item, reldata.value);
		// 	}
		// }, 100); // 2秒后触发
	}
	const rulerTouchMove = (e : any) => {
		const moveXa = Math.floor(e.touches[0].pageX);
		const moveYa = Math.floor(e.touches[0].pageY);
		// 计算移动距离
		if (
			Math.abs(moveXa - moveX.value) > 0 ||
			Math.abs(moveYa - moveY.value) > 0
		) {
			// 移动时取消长按计时器
			if (timer.value) {
				clearTimeout(timer.value);
				timer.value = null;
			}
		}
	}
	//表格长按结束
	const rulerTouchEnd = () => {
		isTuoing.value = false;
		if (timer.value) {
			clearTimeout(timer.value);
			timer.value = null;
		}
	}
	const deleteRuler = (index0 : number, index1 : number) => {
		let typeName = timearr.value[index0].children[index1].typeName
		timearr.value[index0].children[index1] = { directiveName: "", typeName: typeName };
	}
	const longPressTimer = ref(null);
	const isScrolling = ref(false)
	//长按计时器
	let scrollTimeout = null
	function handleScroll(e) {
		isScrolling.value = true
		// 清除之前的定时器
		if (scrollTimeout) clearTimeout(scrollTimeout)
		// 设置新的定时器
		scrollTimeout = setTimeout(() => {
			isScrolling.value = false;
		}, 400)
	}
	const isBack = ref(false)
	const saveX = ref(0);
	const saveY = ref(0);
	const isTuoing = ref(false);

	// 存储菜单的id
	const saveId = ref("");
	const saveTagName = ref("");
	function isblue() {
		if (openOp.value !== -1) {
			return true
		} else {
			return false
		}
	}

	const bottomTimer = ref(null);
	const bottomisShaking = ref(false);
	const bottomTouchStart = (e) => {
		saveX.value = Math.floor(e.touches[0].pageX);
		saveY.value = Math.floor(e.touches[0].pageY);
		// 2秒后触发抖动效果
		bottomTimer.value = setTimeout(() => {
			bottomisShaking.value = true
		}, 500)
	}
	const bottomTouchMove = (e) => {
		const moveX = Math.floor(e.touches[0].pageX);
		const moveY = Math.floor(e.touches[0].pageY);
		// 计算移动距离
		if (
			Math.abs(moveX - saveX.value) > 0 ||
			Math.abs(moveY - saveY.value) > 0
		) {
			if (bottomTimer.value) {
				clearTimeout(bottomTimer.value)
				bottomTimer.value = null
			}
		}
	}
	const bottomTouchEnd = () => {
		if (bottomTimer.value) {
			clearTimeout(bottomTimer.value)
			bottomTimer.value = null
		}
	}
	const openValue = ref({
		time: "",
		minute: "",
		array: []
	})
	const cardsumit = ref({
		op: {
			name: "",
			index: [-1, -1, -1],
		},
		startTime: "",
		weekTimeNumber: -1,
		monthTimeNumber: -1,
		monthTime: "",
		weekTime: ""
	})
	const openOp = ref(0);
	const clickOp = (index : number, item : any) => {
		saveId.value = item.id;
		saveTagName.value = item.tagName
		cardsumit.value.op.index[2] = index
		cardsumit.value.op.name = item.relName
		switch (item.cycleType) {
			case `日常护理`:
				openOp.value = 0
				break;
			case `周期护理`:
				openOp.value = 1
				break;
			case `即时护理`:
				openOp.value = 2
				break;
			default:
				break;
		}
		// if (cardsumit.value.op.index[2] === index) {
		// 	cardsumit.value.op.index[2] = -1;
		// 	cardsumit.value.op.name = ""
		// 	openOp.value = -1
		// } else {
		// 	cardsumit.value.op.index[2] = index
		// 	cardsumit.value.op.name = item.relName
		// 	switch (item.cycleType) {
		// 		case `日常护理`:
		// 			openOp.value = 0
		// 			break;
		// 		case `周期护理`:
		// 			openOp.value = 1
		// 			break;
		// 		case `即时护理`:
		// 			openOp.value = 2
		// 			break;
		// 		default:
		// 			break;
		// 	}

		// }
	}
	// const clickweek = (index : string) => {
	// 	cardsumit.value.weekTime = index
	// }
	// const clickmonth = (index : string) => {
	// 	cardsumit.value.monthTime = index
	// }
	const indexsave = ref([-1, -1]);
	// (长按表格后)表格拖动结束
	const rulerMoveEnd = (object : any) => {
		if (props.liang.index0 !== 999 && object.cycleType) {
			indexsave.value = [props.liang.index0, props.liang.index1]
			// 旧的typeName保存了
			let typeName = timearr.value[flyNumber.value.index0].children[flyNumber.value.index1].typeName
			timearr.value[flyNumber.value.index0].children[flyNumber.value.index1] = { directiveName: '', typeName: typeName }
			//然后保存新的
			let newtypeName = timearr.value[indexsave.value[0]].children[indexsave.value[1]].typeName
			timearr.value[indexsave.value[0]].children[indexsave.value[1]] = object
			timearr.value[indexsave.value[0]].children[indexsave.value[1]].typeName = newtypeName
			let startTime = timearr.value[indexsave.value[0]].children[indexsave.value[1]].startTime;
			let endTime = timearr.value[indexsave.value[0]].children[indexsave.value[1]].endTime;
			let positioning = timearr.value[indexsave.value[0]].positioning
			const rest = startTime.split(":")[1]; // ":20"
			const rest0 = endTime.split(":")[1];; // ":20"
			let many = Number(rest0) - Number(rest);
			let start = newtypeName
			let end = Number(start) + many
			// 用 positioning 替换原来的小时部分
			timearr.value[indexsave.value[0]].children[indexsave.value[1]].startTime = positioning + ":" + start.padStart(2, '0'); // "9:20"
			timearr.value[indexsave.value[0]].children[indexsave.value[1]].endTime = positioning + ":" + String(end % 60).padStart(2, '0'); // "9:20"
			// 检查是否有任意一个对象的 children 数组最后一个对象的 value 有值
			// saveAll()
		}
	}
	const scrollContainer = ref(null)
	const opensay = () => {
		sayisopacity.value = false;
		sayisopen.value = true;
		setTimeout(() => {
			sayisopacity.value = true
		}, 50)
	}
	const addnew = () => {
		if (isDelete.value) {
			isDelete.value = false;
			deleteRuler(saveEditIndex.value.index0, saveEditIndex.value.index1);
			return
		}
		if (isMove.value) {
			getNew()
			return
		}
		flyNumber.value.index0 = -1;
		flyNumber.value.index1 = -1;
		isMove.value = false;
		let stopIt = false;
		let allobject = bigArray.value[upmenuIndex.value].children[downmenuIndex.value].children[thirdmenuIndex.value]
		if (allobject.cycleType === "即时护理") {
			scrollLeft.value = 1;
				bottomItems.value.forEach((element : any, index : number) => {
					if (element.id === allobject.id) {
						stopIt = true
					}
				})
			nextTick(() => {
				if (!stopIt) {
					scrollLeft.value = 0;
					if (bottomItems.value.length && bottomItems.value[0].target === "#00a8ff") {
						bottomItems.value[0].target = "#fff"
						clearTimeout(cleansettimeout.value);
					}
					
					bottomItems.value.unshift({
						name: allobject.title,
						url: "/static/index/ou.png",
						target: `#00a8ff`,
						id: allobject.id
					})
					console.log("!!!!",bottomItems.value)
					// 实现即时指令动画
					cleansettimeout.value = setTimeout(() => {
						bottomItems.value[0].target = `#fff`;
					}, 1500)
				} else {
					clearTimeout(cleansettimeoutrel.value);
					isop.value = true;
					cleansettimeoutrel.value = setTimeout(() => {
						isop.value = false;
					}, 1000)
				}

			})
			return
		}

		if (allobject.cycleType === "周期护理" && iszhouqi.value && weekIndex.value == -1 && monthIndex.value == -1) {
			return
		}
		else if (allobject.cycleType === "周期护理" && !iszhouqi.value) {
			iszhouqi.value = true
			return
		}
		let cycleType = ""
		if (allobject.cycleType === "日常护理") {
			cycleType = "日常"
		} else {
			if (weekIndex.value !== -1) {
				cycleType = weekValue.value
			} else {
				cycleType = monthValue.value + "号"
			}
			iszhouqi.value = false;
			weekIndex.value = -1;
			monthIndex.value = -1;
			weekValue.value = "";
			monthValue.value = "";
		}
		const startHour = Number(saveEditIndex.value.index0)
		const startMinute = Number(timearr.value[saveEditIndex.value.index0].children[saveEditIndex.value.index1].typeName)
		const endMinute = startMinute + 10

		const endHour = startHour + Math.floor(endMinute / 60)
		const formattedStart = `${String(startHour)}:${String(startMinute).padStart(2, '0')}`
		const formattedEnd = `${String(endHour)}:${String(endMinute % 60).padStart(2, '0')}`

		timearr.value[saveEditIndex.value.index0].children[saveEditIndex.value.index1].startTime = formattedStart
		timearr.value[saveEditIndex.value.index0].children[saveEditIndex.value.index1].endTime = formattedEnd

		let param = {
			directiveId: allobject.id,
			directiveName: allobject.title,
			startTime: formattedStart,
			endTime: formattedEnd,
			positioning: saveEditIndex.value.index0.toString(),
			positioningLong: saveEditIndex.value.index1.toString(),
			tagName: allobject.tagName,
			cycleType: cycleType,
			nuId: "1",
			customerId: "1",
			id: "",
			typeName: timearr.value[saveEditIndex.value.index0].children[saveEditIndex.value.index1].typeName,
		}
		//给表格赋值
		timearr.value[saveEditIndex.value.index0].children[saveEditIndex.value.index1] = param;
		// movecard(1)
		let data = {
			index0: saveEditIndex.value.index0,
			index1: saveEditIndex.value.index1
		}
		whereEvent(data);
		// isHave()
		saveAll()
		// console.log("!!!!!!!!",timearr.value)

	}
	const cleansettimeout = ref(null);
	const cleansettimeoutrel = ref(null);

	// const movetoruler = async () => {
	// 	//关闭弹窗
	// 	songisopen.value = false;
	// 	// 还原成默认选项
	// 	isweek.value = true;
	// 	//如果是即时指令直接干掉
	// 	if (openOp.value === 2) {
	// 		scrollLeft.value = 1;
	// 		nextTick(() => {
	// 			scrollLeft.value = 0;

	// 			if (bottomItems.value[0].target === "#00a8ff") {

	// 				bottomItems.value[0].target === "#fff"
	// 				clearTimeout(cleansettimeout.value);
	// 			}
	// 			nextTick(() => {
	// 				bottomItems.value.unshift({
	// 					name: cardsumit.value.op.name,
	// 					url: "/static/index/ou.png",
	// 					target: `#00a8ff`
	// 				})
	// 				// 实现即时指令动画
	// 				cleansettimeout.value = setTimeout(() => {
	// 					bottomItems.value[0].target = `#fff`;
	// 				}, 1500)
	// 			})




	// 		})
	// 		return
	// 	}
	// 	let cycleType = ""
	// 	//看看是啥指令
	// 	if (!openOp.value) {
	// 		cycleType = "日常";
	// 	} else if (openOp.value === 1) {
	// 		cycleType = cardsumit.value.weekTime || (cardsumit.value.monthTime + '号');
	// 	}

	// 	const startHour = Number(openValue.value.time)
	// 	const startMinute = Number(openValue.value.minute)
	// 	const endMinute = startMinute + 10

	// 	const endHour = startHour + Math.floor(endMinute / 60)
	// 	const formattedStart = `${String(startHour)}:${String(startMinute).padStart(2, '0')}`
	// 	const formattedEnd = `${String(endHour)}:${String(endMinute % 60).padStart(2, '0')}`

	// 	timearr.value[indexsave.value[0]].children[indexsave.value[1]].startTime = formattedStart
	// 	timearr.value[indexsave.value[0]].children[indexsave.value[1]].endTime = formattedEnd

	// 	let param = {
	// 		directiveId: saveId.value,
	// 		directiveName: cardsumit.value.op.name,
	// 		startTime: formattedStart,
	// 		endTime: formattedEnd,
	// 		positioning: indexsave.value[0].toString(),
	// 		positioningLong: indexsave.value[1].toString(),
	// 		tagName: saveTagName.value,
	// 		cycleType: cycleType,
	// 		nuId: "1",
	// 		customerId: "1",
	// 		id: "",
	// 		typeName: timearr.value[indexsave.value[0]].children[indexsave.value[1]].typeName,
	// 	}
	// 	//给表格赋值
	// 	timearr.value[indexsave.value[0]].children[indexsave.value[1]] = param;
	// 	movecard(1)
	// 	isHave()
	// 	saveAll()
	// }
	const saveAll = () => {
		//给后端编译一下
		let postArray = [];
		timearr.value.forEach((element0, index0) => {
			element0.children.forEach((element1, index1) => {
				let saveTypeName = ""
				if (!element1.directiveName && !element1.id) {
					let array = {};
					if (element1.typeName) {
						saveTypeName = element1.typeName
					}
					array = JSON.parse(JSON.stringify(moBan.value))
					saveTypeName ? array.typeName = saveTypeName : ""
					array.positioning = index0
					array.positioningLong = index1
					postArray.push(array)
				} else {
					element1.positioning = index0;
					element1.positioningLong = index1;
					postArray.push(element1)
				}

			})
		})
		// console.log("!!!!!!!!", postArray)
	}
	const routerPush = () => {
		uni.setStorage({
			key: 'myArray',
			data: timearr.value,
			success: function () {
				uni.navigateTo({
					url: `/pages/timeMatrix/indexnew`
				})
			},
		});
	}
	// 暂存器
	const saveRulerTime = ref({
		index0: -1,
		index1: -1
	})
	const targetRuler = ref({
		index0: -1,
		index1: -1,
		current: -1,
		bordershow: true
	})
	const whereEvent = (data : any) => {
		// scrollTop.value = 0;
		// scrollTop.value = data.index1 * 104;
		// cardLeft.value = 0;
		// cardLeft.value = data.index0 * 113;

		targetRuler.value.index0 = data.index0;
		targetRuler.value.index1 = data.index1;
		saveRulerTime.value.index0 = targetRuler.value.index0;
		saveRulerTime.value.index1 = targetRuler.value.index1;
		// targetRuler.value.current = currentNumber.value
		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)
		// if (currentNumber.value === Math.floor(data.index0 / 8)) {
		// 	targetRuler.value.index0 = data.index0 - currentNumber.value * 8;
		// 	targetRuler.value.index1 = data.index1;
		// 	saveRulerTime.value.index0 = targetRuler.value.index0;
		// 	saveRulerTime.value.index1 = targetRuler.value.index1;
		// 	targetRuler.value.current = currentNumber.value
		// 	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)
		// } else {
		// 	setTimeout(() => {
		// 		currentNumber.value = Math.floor(data.index0 / 8);
		// 	}, 100)
		// 	setTimeout(() => {
		// 		targetRuler.value.index0 = data.index0 - currentNumber.value * 8;
		// 		targetRuler.value.index1 = data.index1;
		// 		saveRulerTime.value.index0 = targetRuler.value.index0;
		// 		saveRulerTime.value.index1 = targetRuler.value.index1;
		// 		targetRuler.value.current = currentNumber.value
		// 		targetRuler.value.bordershow = false;
		// 	}, 800)
		// 	setTimeout(() => {
		// 		targetRuler.value.index0 = -1;
		// 		targetRuler.value.index1 = -1;
		// 		targetRuler.value.current = -1
		// 	}, 1400)
		// 	setTimeout(() => {
		// 		targetRuler.value.bordershow = true;
		// 		saveRulerTime.value.index0 = -1;
		// 		saveRulerTime.value.index1 = -1;
		// 	}, 2200)
		// }
	}
	// 定义每小时中的分钟数组，表示每 5 分钟一个时间段，总共 12 个
	const minuteArr = ['00', '05', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55']
	const timearr = ref(
		Array.from({ length: 24 }, (_, hour) => ({
			positioning: hour.toString(),
			children: minuteArr.map(time => ({
				typeName: time,           // 表示分钟，如 '00', '05' 等
				directiveName: '' // 默认的 directiveName
			}))
		}))
	)
	onShow(() => {
		// console.log("QQQQ", myArray)
		bigArray.value = myArray
		downList.value = bigArray.value[0].children
		// console.log("aaaaa", timearr.value)
		//暂时注释
		// getServiceTree().then((res : any) => {
		// 	console.log("!!!!!!!",res.result)
		// 	bigArray.value = res.result
		// 	downList.value = bigArray.value[0].children
		// })

		// getNclist().then((res : any) => {
		// 	console.log("!!!!!!!!!!!!!!!!!!!",res.result)
		// 	timearr.value = res.result
		// })
		// timearr.value = saveArray
		uni.$on('where', whereEvent);
	})
	onHide(() => {
		uni.$off('where', whereEvent);
	});
	defineExpose({
		// rulerEnd,
		rulerMoveEnd,
		// nextItems,
	})

	const moveNumber = ref({
		index0: 999,
		index1: 999
	})
	const moBan = ref({
		directiveId: "",
		directiveName: "",
		startTime: "",
		endTime: "",
		positioning: "",
		positioningLong: "",
		tagName: "",
		cycleType: "",
		nuId: "1",
		customerId: "1",
		id: "",
		typeName: ""

	})

	// 切割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>

<style lang="less" scoped>
	// 主页的css
	@import './index';
</style>