This commit is contained in:
Teng 2025-03-26 17:34:08 +08:00
parent 8646ab37d2
commit fa4bc8bf0c
10 changed files with 2122 additions and 5522 deletions

File diff suppressed because it is too large Load Diff

View File

@ -99,16 +99,23 @@
</view> </view>
</view> </view>
<view class="doctorsay-container-juzhen" @click="routerPush"> <view class="doctorsay-container-juzhen" @click="routerPush">
预览矩阵 预览
</view> </view>
</view> </view>
</view> </view>
<view class="super-card"> <view class="super-card">
<view class="super-card-container"> <view class="super-card-container">
<!-- 气泡 --> <!-- 气泡 top: `${2 * scrollTop - 253}rpx` -->
<view class="boom" :style="{ top: `${2 * saveBoomTop - 253}rpx` }" <view class="boom">
v-if="!canmove && liang.index0!==999 && saveBoomName"> <view :style="{ marginTop: `-${2 *moveDownNumber}rpx` }">
{{saveBoomName}} <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.serve">
{{item.serve}}
</view>
</view>
</view>
</view> </view>
<swiper :disable-touch="!canmove || shakyTable" :current="currentNumber" class="scroll-x" <swiper :disable-touch="!canmove || shakyTable" :current="currentNumber" class="scroll-x"
circular :indicator-dots="false" @change="changecurrentNumber" :interval="4000" circular :indicator-dots="false" @change="changecurrentNumber" :interval="4000"
@ -137,10 +144,9 @@
<view v-for="(item1,index1) in item0.children" style="width: 100%;" <view v-for="(item1,index1) in item0.children" style="width: 100%;"
:key="index1"> :key="index1">
<view <view
:class="targetRuler.current===currentNumber && targetRuler.index0 === index0 && targetRuler.index1 === index1 ?`title-time-border-big`:`super-card-time-card` " :class="targetRuler.current===currentNumber && targetRuler.index0 === index0 && targetRuler.index1 === index1 ? targetRuler.index1 ?`title-time-border-big`:`title-time-border-big-top` : `super-card-time-card` "
:style="targetRuler.bordershow ? {} : {}" :style="!targetRuler.bordershow && saveRulerTime.index0 === index0 && saveRulerTime.index1 === index1 ? {zIndex:999} : {borderTop: '1rpx solid transparent'}"
:id="`a${index0}_${index1}`" :id="`a${index0}_${index1}`" style="position: relative;"
style="position: relative;"
@click="rulerTouchClick(item1,index0,index1,$event)" @click="rulerTouchClick(item1,index0,index1,$event)"
@touchstart="rulerTouchStart(item1,index0,index1,$event)" @touchstart="rulerTouchStart(item1,index0,index1,$event)"
@touchmove="rulerTouchMove" @touchend="rulerTouchEnd()" @touchmove="rulerTouchMove" @touchend="rulerTouchEnd()"
@ -163,8 +169,6 @@
style="font-size: 30rpx;"> style="font-size: 30rpx;">
{{item1.time}} {{item1.time}}
</view> </view>
<!-- <image class="title-time-zhejiao"
:src="item1.type=='日常'?`/static/index/yellowzhejiao.png`:`/static/index/puoplezhejiao.png`" /> -->
<image class="title-time-button" <image class="title-time-button"
:src="item1.type=='日常'?`/static/index/yellowbian.png`:`/static/index/puoplebian.png`" /> :src="item1.type=='日常'?`/static/index/yellowbian.png`:`/static/index/puoplebian.png`" />
<view class="title-time-font"> <view class="title-time-font">
@ -232,7 +236,7 @@
</view> </view>
</view> </view>
<!-- 长按的弹出层 --> <!-- 长按的弹出层 -->
<view v-show="isopen" class="popup-overlay" @click="isopen=false;flyNumber.index0=999"> <view v-show="isopen" class="popup-overlay" @click="isopen=false;flyNumber.index0=999;touchindex1=-1">
<view class="popup-overlay-content" <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)' }" :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> @click.stop>
@ -419,19 +423,19 @@
bottomisShaking.value = false bottomisShaking.value = false
shakyTable.value = false shakyTable.value = false
}) })
watch( // watch(
() => props.liang.index1, // () => props.liang.index1,
() => { // () => {
if (props.liang.index1 != 999) { // if (props.liang.index1 != 999) {
saveBoomName.value = timearr.value[0].children[props.liang.index1].serve ? timearr.value[0].children[props.liang.index1].serve : ""; // saveBoomName.value = timearr.value[0].children[props.liang.index1].serve ? timearr.value[0].children[props.liang.index1].serve : "";
reldata.value.find(item => { // reldata.value.find(item => {
if (item.dataset.index0 === props.liang.index0 && item.dataset.index1 === props.liang.index1) { // if (item.dataset.index0 === props.liang.index0 && item.dataset.index1 === props.liang.index1) {
saveBoomTop.value = Math.floor(item.top) // saveBoomTop.value = Math.floor(item.top)
} // }
}) // })
} // }
} // }
) // )
onMounted(() => { onMounted(() => {
downList.value = bigArray[0].data downList.value = bigArray[0].data
}) })
@ -519,8 +523,8 @@
// "", // "",
// "", // "",
]) ])
const saveBoomName = ref("") // const saveBoomName = ref("")
const saveBoomTop = ref(0) // const saveBoomTop = ref(0)
const isopen = ref(false) const isopen = ref(false)
const songisopen = ref(false) const songisopen = ref(false)
const isopacity = ref(false) const isopacity = ref(false)
@ -564,7 +568,7 @@
// //
const getClass = (item, index0, index1) => { const getClass = (item, index0, index1) => {
if (!props.canmove && props.liang.index0 === index0 && redNameindex0.value.includes(index0 + (currentNumber.value * 6)) && props.liang.index1 === index1) { if (!props.canmove && props.liang.index0 === index0 && props.liang.index1 === index1 && (redNameindex0.value.includes(index0 + (currentNumber.value * 6)) || (redNameindex1.value != index1))) {
return 'title-time-border-red'; return 'title-time-border-red';
} }
else if (!props.canmove && props.liang.index0 === index0 && props.liang.index1 === index1) { else if (!props.canmove && props.liang.index0 === index0 && props.liang.index1 === index1) {
@ -667,9 +671,12 @@
deleteisopacity.value = true deleteisopacity.value = true
}, 200) }, 200)
} }
const touchindex1 = ref(-1);
// //
const rulerTouchClick = (item : any, index0 : number, index1 : number, e : any) => { const rulerTouchClick = (item : any, index0 : number, index1 : number, e : any) => {
if (item.value) { if (item.value) {
touchindex1.value = index1;
const query = uni.createSelectorQuery() const query = uni.createSelectorQuery()
query query
.selectAll('.super-card-time-card') .selectAll('.super-card-time-card')
@ -708,11 +715,27 @@
// //
const rulerTouchStart = (item : any, index0 : number, index1 : number, e : any) => { const rulerTouchStart = (item : any, index0 : number, index1 : number, e : any) => {
scrollTop.value = moveDownNumber.value; scrollTop.value = moveDownNumber.value;
redNameindex0.value = [];
let index1Number = -1
moveX.value = Math.floor(e.touches[0].pageX); moveX.value = Math.floor(e.touches[0].pageX);
moveY.value = Math.floor(e.touches[0].pageY); moveY.value = Math.floor(e.touches[0].pageY);
timer.value = setTimeout(() => { timer.value = setTimeout(() => {
if (item.value) { if (item.value) {
// console.log("???",item.serve) timearr.value.forEach((element0 : any, index0 : number) => {
element0.children.forEach((element1 : any) => {
if (element1.serve === item.serve && element1.value) {
redNameindex0.value.push(index0)
}
if (element1.value) {
index1Number = index0
}
})
})
if (redNameindex0.value.length) {
redNameindex1.value = index1
} else {
redNameindex1.value = index1Number + 1
}
flyNumber.value.serve = item.serve flyNumber.value.serve = item.serve
flyNumber.value.index0 = index0 + (currentNumber.value * 6); flyNumber.value.index0 = index0 + (currentNumber.value * 6);
flyNumber.value.index1 = index1; flyNumber.value.index1 = index1;
@ -817,25 +840,56 @@
const isTuoing = ref(false); const isTuoing = ref(false);
// //
const redNameindex0 = ref([]); const redNameindex0 = ref([]);
const redNameindex1 = ref(-1);
// //
const handleTouchStart = (item : string, index : number, e : any) => { const handleTouchStart = (item : string, index : number, e : any) => {
scrollTop.value = moveDownNumber.value; scrollTop.value = moveDownNumber.value;
redNameindex0.value = [];
shakyTable.value = false shakyTable.value = false
saveX.value = Math.floor(e.touches[0].pageX); saveX.value = Math.floor(e.touches[0].pageX);
saveY.value = Math.floor(e.touches[0].pageY); saveY.value = Math.floor(e.touches[0].pageY);
longPressTimer.value = setTimeout(()=>{
let noHave = false;
timearr.value[0].children.forEach((element : any,index0:number) => {
if (element.serve === item) {
scrollTop.value = 0
scrollTop.value = index0 * 104
noHave = true
}
})
if(!noHave){
scrollTop.value = 0
scrollTop.value = 999
}
},190)
// //
longPressTimer.value = setTimeout(() => { longPressTimer.value = setTimeout(() => {
redNameindex0.value = [];
if (isScrolling.value) return if (isScrolling.value) return
let index1save = -1;
let indexanthersave = -1;
timearr.value.forEach((element0 : any, index0 : number) => { timearr.value.forEach((element0 : any, index0 : number) => {
element0.children.forEach((element1 : any) => { element0.children.forEach((element1 : any, index1 : number) => {
if (element1.serve === item && element1.value) { if (element1.serve === item && element1.value) {
redNameindex0.value.push(index0) redNameindex0.value.push(index0)
index1save = index1
}
if (element1.value) {
if (index1 > indexanthersave) {
indexanthersave = index1
}
} }
}) })
}) })
// console.log("!!!!",redNameindex0.value) // console.log("1111",indexanthersave)
// redNameindex0.value = 0; if (redNameindex0.value.length) {
redNameindex1.value = index1save
} else {
redNameindex1.value = indexanthersave + 1
}
// redName.value = item;
isBack.value = true; isBack.value = true;
downmenuIndex.value = index downmenuIndex.value = index
indexsave.value = [-1, -1] indexsave.value = [-1, -1]
@ -968,7 +1022,12 @@
// //
const rulerEnd = async (res : any) => { const rulerEnd = async (res : any) => {
isBack.value = false; isBack.value = false;
if (props.liang.index0 !== 999 && res) { if (props.liang.index0 !== 999 && res) {
// console.log("cccc",redNameindex0.value,props.liang.index0)
if (redNameindex0.value.includes(props.liang.index0 + (currentNumber.value * 6)) || redNameindex1.value !== props.liang.index1) {
return false;
}
cardsumit.value = { cardsumit.value = {
op: { op: {
name: "", name: "",
@ -991,9 +1050,12 @@
clickOp(0, openValue.value.array[0].type, openValue.value.array[0].op) clickOp(0, openValue.value.array[0].type, openValue.value.array[0].op)
} }
} }
// () // ()
const rulerMoveEnd = (object : any) => { const rulerMoveEnd = (object : any) => {
if (props.liang.index0 !== 999 && object.type) { if (props.liang.index0 !== 999 && object.type) {
if (redNameindex0.value.includes(props.liang.index0 + (currentNumber.value * 6)) || redNameindex1.value !== props.liang.index1) {
return false;
}
indexsave.value = [props.liang.index0 + (currentNumber.value * 6), props.liang.index1] indexsave.value = [props.liang.index0 + (currentNumber.value * 6), props.liang.index1]
let savaIndex = -1; let savaIndex = -1;
let emptyChildIndices = []; let emptyChildIndices = [];
@ -1174,7 +1236,9 @@
await nextTick() await nextTick()
// scroll-view // scroll-view
scrollTop.value = 9999 scrollTop.value = 9999
} }
// console.log("?????", timearr.value[0].children)
} }
const routerPush = () => { const routerPush = () => {
uni.setStorageSync("timearr", timearr.value) uni.setStorageSync("timearr", timearr.value)
@ -1182,26 +1246,64 @@
url: `/pages/timeMatrix/index?currentNumber=${currentNumber.value}` url: `/pages/timeMatrix/index?currentNumber=${currentNumber.value}`
}) })
} }
const targetRuler = ref({index0: -1, //
const saveRulerTime = ref({
index0: -1,
index1: -1
})
const targetRuler = ref({
index0: -1,
index1: -1, index1: -1,
current: -1, current: -1,
bordershow:true bordershow: true
}) })
const whereEvent = (data : any) => { const whereEvent = (data : any) => {
currentNumber.value = Math.floor(data.index0 / 6); scrollTop.value = 0
targetRuler.value.index0 = data.index0 - currentNumber.value * 6; scrollTop.value = data.index1 * 104
targetRuler.value.index1 = data.index1;
targetRuler.value.current = currentNumber.value if (currentNumber.value === Math.floor(data.index0 / 6)) {
targetRuler.value.bordershow = false; targetRuler.value.index0 = data.index0 - currentNumber.value * 6;
setTimeout(()=>{ targetRuler.value.index1 = data.index1;
targetRuler.value.index0 = -1; saveRulerTime.value.index0 = targetRuler.value.index0;
targetRuler.value.index1 = -1; saveRulerTime.value.index1 = targetRuler.value.index1;
targetRuler.value.current = -1 targetRuler.value.current = currentNumber.value
},400) targetRuler.value.bordershow = false;
setTimeout(()=>{ setTimeout(() => {
targetRuler.value.bordershow = true; targetRuler.value.index0 = -1;
},1000) 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 / 6);
}, 100)
setTimeout(() => {
targetRuler.value.index0 = data.index0 - currentNumber.value * 6;
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)
}
} }
onShow(() => { onShow(() => {
uni.$on('where', whereEvent); uni.$on('where', whereEvent);
@ -1938,6 +2040,7 @@
flex-direction: column; flex-direction: column;
border-right: 1rpx solid transparent; border-right: 1rpx solid transparent;
border-image: repeating-linear-gradient(180deg, #0184db 0px, #0184db 6rpx, transparent 6rpx, transparent 12rpx) 1; border-image: repeating-linear-gradient(180deg, #0184db 0px, #0184db 6rpx, transparent 6rpx, transparent 12rpx) 1;
// z-index: -10;
} }
.super-card-time-card { .super-card-time-card {
@ -1947,8 +2050,8 @@
height: 209rpx; height: 209rpx;
width: calc(100%); width: calc(100%);
// transition: transform 0.5s ease-out, opacity 0.5s ease-out; // transition: transform 0.5s ease-out, opacity 0.5s ease-out;
transition : all 0.8s; transition: all 0.8s;
border-top: 1rpx solid transparent; // border-top: 1rpx solid transparent;
border-image: repeating-linear-gradient(90deg, #0184db 0px, #0184db 6rpx, transparent 6rpx, transparent 12rpx) 1; border-image: repeating-linear-gradient(90deg, #0184db 0px, #0184db 6rpx, transparent 6rpx, transparent 12rpx) 1;
flex-direction: column; flex-direction: column;
// background-color: #f3f6fc; // background-color: #f3f6fc;
@ -2268,7 +2371,7 @@
height: 100%; height: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
width: 450rpx; width: 400rpx;
.doctorsay-container-juzhen { .doctorsay-container-juzhen {
background: linear-gradient(to right bottom, #00c9ff, #0076ff); background: linear-gradient(to right bottom, #00c9ff, #0076ff);
@ -3078,6 +3181,26 @@
position: relative; position: relative;
} }
.title-time-border-big-top {
transform: scale(1.5);
transform-origin: top;
/* 将页面内容放大1.2倍 */
border-top: 0rpx solid #fff;
transition: transform 0.5s ease-out, opacity 0.5s ease-out;
z-index: 999;
display: flex;
justify-content: center;
align-items: center;
height: 209rpx;
width: calc(100%);
// border-right: 1rpx solid transparent;
// border-top: 1rpx solid transparent;
border-image: repeating-linear-gradient(90deg, #0184db 0px, #0184db 6rpx, transparent 6rpx, transparent 12rpx) 1;
flex-direction: column;
// background-color: #f3f6fc;
position: relative;
}
.title-time-border-blue { .title-time-border-blue {
background-color: #dae8fa; background-color: #dae8fa;
width: calc(100%); width: calc(100%);
@ -3154,6 +3277,7 @@
animation: shakesmall 0.8s infinite; animation: shakesmall 0.8s infinite;
// box-shadow: 8rpx 8rpx 16px rgba(0, 0, 0, 0.2); // box-shadow: 8rpx 8rpx 16px rgba(0, 0, 0, 0.2);
box-shadow: 8rpx 8rpx 16rpx rgba(255, 138, 0, 0.7); box-shadow: 8rpx 8rpx 16rpx rgba(255, 138, 0, 0.7);
// z-index: 999;
} }
.title-time-border-pouple-active-transparent { .title-time-border-pouple-active-transparent {
@ -3182,6 +3306,7 @@
align-items: center; align-items: center;
flex-direction: column; flex-direction: column;
box-shadow: 8rpx 8rpx 16rpx rgba(123, 97, 255, 0.7); box-shadow: 8rpx 8rpx 16rpx rgba(123, 97, 255, 0.7);
// z-index: 999;
} }
.title-time-border-pouple-active { .title-time-border-pouple-active {
@ -3266,20 +3391,49 @@
position: absolute; position: absolute;
top: 80rpx; top: 80rpx;
left: 0rpx; left: 0rpx;
background-color: #fff; // background-color: #fff;
width: 50rpx; width: 42rpx;
height: 211rpx; height: 840rpx;
display: flex; display: flex;
justify-content: center; flex-direction: column;
// justify-content: center;
align-items: center; align-items: center;
font-size: 30rpx; overflow: hidden;
letter-spacing: 5rpx;
box-shadow: 5rpx 5rpx 10rpx rgba(0, 0, 0, 0.1);
writing-mode: vertical-rl;
/* 竖排文字,从右往左 */
text-align: center;
z-index: 10; z-index: 10;
/* 确保文字在容器内居中 */
background: linear-gradient(to bottom, #ffe2b2, #e3deff); .boom-son {
height: 210rpx;
width: 100%;
font-size: 30rpx;
letter-spacing: 5rpx;
// box-shadow: 5rpx 5rpx 10rpx rgba(0, 0, 0, 0.1);s
writing-mode: vertical-rl;
/* 竖排文字,从右往左 */
text-align: center;
z-index: 10;
/* 确保文字在容器内居中 */
background: linear-gradient(to bottom, #ffe2b2, #e3deff);
// z-index: -1;
border-bottom-right-radius: 40rpx;
border-top-right-radius: 40rpx;
}
.boom-son-target {
height: 210rpx;
width: 100%;
font-size: 30rpx;
letter-spacing: 5rpx;
// box-shadow: 5rpx 5rpx 10rpx rgba(0, 0, 0, 0.1);s
writing-mode: vertical-rl;
/* 竖排文字,从右往左 */
text-align: center;
z-index: 10;
/* 确保文字在容器内居中 */
background: linear-gradient(to bottom, #ff8a00, #eceaff);
// color: #fff;
// z-index: -1;
border-bottom-right-radius: 40rpx;
border-top-right-radius: 40rpx;
}
} }
</style> </style>

View File

@ -137,12 +137,6 @@
const translateY = Math.floor(touch.clientY) - 25; const translateY = Math.floor(touch.clientY) - 25;
const clickedItem = fangkuaiValue.value.find(item => { const clickedItem = fangkuaiValue.value.find(item => {
if (translateX >= item.left && translateX <= item.right &&
translateY >= item.top && translateY <= item.bottom) {
// console.log("AAAA",item.left,item.right,item.top,item.bottom)
}
return translateX >= Math.floor(item.left) && translateX <= Math.floor(item.right) && return translateX >= Math.floor(item.left) && translateX <= Math.floor(item.right) &&
translateY >= Math.floor(item.top) && translateY <= Math.floor(item.bottom); translateY >= Math.floor(item.top) && translateY <= Math.floor(item.bottom);
}); });

View File

@ -6,21 +6,41 @@
<view class="doctorsay-container-left-font">时间矩阵</view> <view class="doctorsay-container-left-font">时间矩阵</view>
</view> </view>
<view class="doctorsay-container-right"> <view class="doctorsay-container-right">
<view class="titlebutton-father">
<view v-for="(item,index) in buttonArray" :key="index">
<view :class="getClassItem(index)"
@click="changeTarget(index)">
{{item}}
</view>
</view>
</view>
<view class="doctorsay-container-right-kuai-cheng"></view> <view class="doctorsay-container-right-kuai-cheng"></view>
<view class="doctorsay-container-kuai-font">日常</view> <view class="doctorsay-container-kuai-font">日常</view>
<view class="doctorsay-container-right-kuai-zi"></view> <view class="doctorsay-container-right-kuai-zi"></view>
<view class="doctorsay-container-kuai-font">周期</view> <view class="doctorsay-container-kuai-font">周期</view>
<view class="doctorsay-container-juzhen" @click="routerBack"> <view class="doctorsay-container-juzhen" @click="routerBack">
取消预览 返回
</view> </view>
</view> </view>
</view> </view>
<view class="super-card"> <view class="super-card">
<view class="super-card-container"> <view class="super-card-container">
<scroll-view style="height: 100%;width: 100%;" :scroll-left="scrollLeft" scroll-x <view class="boom">
<view :style="{ marginTop: `-${2 *moveDownNumber}rpx` }">
<view v-for="(item,index) in timearr[0].children" :key="index">
<view
:class="(clickY === index) ? `boom-son-target`: `boom-son`"
v-show="item.serve">
{{item.serve}}
</view>
</view>
</view>
</view>
<scroll-view style="height: 100%;width: 100%;" :scroll-left="scrollLeft" scroll-x
:show-scrollbar="false"> :show-scrollbar="false">
<view <view
style="display: flex;width: 6690rpx; box-shadow: 10rpx 10rpx 20rpx rgba(0, 0, 0, 0.1);background: linear-gradient(to right, #c4dbf4,#c9c2ef, #c6dcf3);"> style="display: flex;width: 5945rpx; box-shadow: 10rpx 10rpx 20rpx rgba(0, 0, 0, 0.1);background: linear-gradient(to right, #c4dbf4,#c9c2ef, #c6dcf3);">
<view v-for="(item0,index0) in timearr" :key="index0"> <view v-for="(item0,index0) in timearr" :key="index0">
<view class="super-card-time"> <view class="super-card-time">
{{item0.time}} {{item0.time}}
@ -28,10 +48,10 @@
</view> </view>
</view> </view>
<view style="display: flex;height: calc(100% - 80rpx);width: 6690rpx"> <view style="display: flex;height: calc(100% - 80rpx);width: 5945rpx">
<scroll-view scroll-y :show-scrollbar="false"> <scroll-view scroll-y :show-scrollbar="false" @scroll="handleScrolltime">
<view style="display: flex;height: 100%;"> <view style="display: flex;height: 100%;">
<view v-for="(item0,index0) in timearr" :key="index0"> <view v-for="(item0,index0) in changetimearr" :key="index0">
<view class="super-card-time-und"> <view class="super-card-time-und">
<view v-for="(item1,index1) in item0.children" style="width: 100%;" <view v-for="(item1,index1) in item0.children" style="width: 100%;"
:key="index1"> :key="index1">
@ -45,8 +65,8 @@
<view :class="getClass(item1,index0,index1)" <view :class="getClass(item1,index0,index1)"
style="font-size: 30rpx;overflow: hidden;"> style="font-size: 30rpx;overflow: hidden;">
<view class="title-time" v-if="item1.time" <view class="title-time" v-if="item1.time"
style="margin-top: 5rpx;"> style="margin-top: 0rpx;">
<view class="title-time-time" style="font-size: 30rpx;"> <view class="title-time-time" style="font-size: 25rpx;">
{{item1.time}} {{item1.time}}
</view> </view>
<image class="title-time-button" <image class="title-time-button"
@ -55,7 +75,7 @@
{{item1.type}} {{item1.type}}
</view> </view>
</view> </view>
<view style="margin-top: 20rpx;font-weight: 700;font-size: 35rpx;"> <view :style="splitString(item1.value)[1] ? {}:{marginTop:`20rpx`}" style="font-weight: 700;font-size: 24rpx;">
{{splitString(item1.value)[0]}} {{splitString(item1.value)[0]}}
</view> </view>
<view class="down-icons" <view class="down-icons"
@ -81,7 +101,7 @@
</scroll-view> </scroll-view>
</view> </view>
</view> </view>
<!-- 长按的弹出层 --> <!-- 长按的弹出层` -->
<view v-show="isopen" class="popup-overlay" @click="closeIsOpen"> <view v-show="isopen" class="popup-overlay" @click="closeIsOpen">
<view class="popup-overlay-content" <view class="popup-overlay-content"
:style="{ top: (2*openY - 350) + 'rpx',left: (2*openX - 780) + 'rpx',opacity: isopacity ? 1 : 0,backgroundColor:timearr[clickY]?.children[clickX]?.type==='日常'? '#fffcf6':'rgb(246, 244, 254)' }" :style="{ top: (2*openY - 350) + 'rpx',left: (2*openX - 780) + 'rpx',opacity: isopacity ? 1 : 0,backgroundColor:timearr[clickY]?.children[clickX]?.type==='日常'? '#fffcf6':'rgb(246, 244, 254)' }"
@ -114,6 +134,8 @@
type darkFanstype = { type darkFanstype = {
darkFans : boolean darkFans : boolean
} }
const buttonArray = ref(["全部", "日常", "周期"]);
const buttonTarget = ref(0);
// //
const getClass = (item : any, index0 : number, index1 : number) => { const getClass = (item : any, index0 : number, index1 : number) => {
if (item.type === '日常') { if (item.type === '日常') {
@ -124,6 +146,29 @@
} }
return 'title-time-border'; return 'title-time-border';
} }
const moveDownNumber = ref(0);
function handleScrolltime(e) {
let num = e.detail.scrollTop
let formattedNum = parseFloat(num.toFixed(2));
moveDownNumber.value = formattedNum
}
const getClassItem = (index) =>{
if(buttonTarget.value!==index){
return `titlebutton`
}else{
switch(index){
case 0:
return `titlebutton-target`
case 1:
return `titlebutton-target-yellow`
case 2:
return `titlebutton-target-pouple`
}
}
}
// bigArray // bigArray
function splitString(str : any) { function splitString(str : any) {
// 使 // 使
@ -157,18 +202,24 @@
return result; return result;
} }
const scrollLeft = ref(0); const scrollLeft = ref(0);
const changetimearr = ref([]);
// //
onLoad((options) => { onLoad((options) => {
if (options.currentNumber) {
scrollLeft.value = options.currentNumber * 836
}
timearr.value = uni.getStorageSync("timearr") if (options.currentNumber) {
if (timearr.value[0].children.length === 4) { scrollLeft.value = options.currentNumber * 745
timearr.value.forEach((element : any) => {
element.children.push({ value: "" })
})
} }
timearr.value = uni.getStorageSync("timearr")
if(timearr.value[0].children.length < 8){
timearr.value.forEach((element: any) => {
// 7
while (element.children.length < 8) {
element.children.push({ value: "" });
}
});
}
changetimearr.value = JSON.parse(JSON.stringify(timearr.value));
}); });
const openX = ref(0); const openX = ref(0);
const openY = ref(0); const openY = ref(0);
@ -190,9 +241,9 @@
if (res.dataset.index0 == index0 && res.dataset.index1 == index1) { if (res.dataset.index0 == index0 && res.dataset.index1 == index1) {
if (res.left < 500) { if (res.left < 500) {
// //
openX.value = Math.floor(res.left) + 520; openX.value = Math.floor(res.left) + 510;
} else { } else {
openX.value = Math.floor(res.left) openX.value = Math.floor(res.left) -10
} }
if (res.top < 300) { if (res.top < 300) {
// //
@ -200,7 +251,7 @@
} else { } else {
openY.value = Math.floor(res.top) openY.value = Math.floor(res.top)
} }
// openY.value = Math.floor(res.top); // openY.value = Math.floor(res.top)
await nextTick() await nextTick()
isopen.value = true; isopen.value = true;
isopacity.value = false; isopacity.value = false;
@ -227,6 +278,7 @@
uni.navigateBack() uni.navigateBack()
} }
const closeIsOpen = (event : any) => { const closeIsOpen = (event : any) => {
const touch = event.touches[0]; const touch = event.touches[0];
let clientX = (Math.floor(touch.clientX)) let clientX = (Math.floor(touch.clientX))
let clientY = (Math.floor(touch.clientY)) let clientY = (Math.floor(touch.clientY))
@ -237,18 +289,20 @@
data.forEach(async (res : any) => { data.forEach(async (res : any) => {
// //
if (res.dataset.index0 == clickX.value && res.dataset.index1 == clickY.value) { if (res.dataset.index0 == clickX.value && res.dataset.index1 == clickY.value) {
// console.log("?????",clientX,clientY)
if (clientX >= Math.floor(res.left) && clientX <= Math.floor(res.right) && if (clientX >= Math.floor(res.left) && clientX <= Math.floor(res.right) &&
clientY >= Math.floor(res.top) && clientY <= Math.floor(res.bottom)) { clientY >= Math.floor(res.top) && clientY <= Math.floor(res.bottom)) {
//
uni.navigateBack({ //
delta: 1, uni.navigateBack({
success: () => { delta: 1,
uni.$emit('where', { success: () => {
index0:clickX.value, uni.$emit('where', {
index1:clickY.value, index0: clickX.value,
}); index1: clickY.value,
} });
}) }
})
} }
} }
@ -262,6 +316,46 @@
}, 100) }, 100)
}
const changeTarget = (index : number) => {
if (buttonTarget.value !== index) {
changetimearr.value = []
buttonTarget.value = index
// console.log("????", index, buttonTarget.value)
switch (index) {
case 0:
changetimearr.value = JSON.parse(JSON.stringify(timearr.value));
break;
case 1:
changetimearr.value = JSON.parse(JSON.stringify(timearr.value));
changetimearr.value.forEach((element0 : any) => {
element0.children.forEach((element1 : any) => {
if (element1.value && element1.type !== "日常") {
element1.value = "";
element1.serve = "";
element1.type = "";
element1.time = "";
}
})
})
// console.log("chufa", changetimearr.value)
break;
case 2:
changetimearr.value = JSON.parse(JSON.stringify(timearr.value));
changetimearr.value.forEach((element0 : any) => {
element0.children.forEach((element1 : any) => {
if (element1.value && element1.type === "日常") {
element1.value = "";
element1.serve = "";
element1.type = "";
element1.time = "";
}
})
})
break;
}
}
} }
</script> </script>
@ -438,7 +532,7 @@
height: 100%; height: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
width: 450rpx; width: 800rpx;
.doctorsay-container-juzhen { .doctorsay-container-juzhen {
background: linear-gradient(to right bottom, #00c9ff, #0076ff); background: linear-gradient(to right bottom, #00c9ff, #0076ff);
@ -557,7 +651,7 @@
align-items: center; align-items: center;
// background-color: rgb(233, 239, 257); // background-color: rgb(233, 239, 257);
height: 80rpx; height: 80rpx;
width: 278rpx; width: 247rpx;
border-right: 1rpx solid transparent; border-right: 1rpx solid transparent;
border-image: repeating-linear-gradient(180deg, #0184db 0px, #0184db 6rpx, transparent 6rpx, transparent 12rpx) 1; border-image: repeating-linear-gradient(180deg, #0184db 0px, #0184db 6rpx, transparent 6rpx, transparent 12rpx) 1;
font-weight: 700; font-weight: 700;
@ -567,7 +661,7 @@
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
width: 278rpx; width: 247rpx;
flex-direction: column; flex-direction: column;
border-right: 1rpx solid transparent; border-right: 1rpx solid transparent;
@ -578,7 +672,7 @@
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
height: 247rpx; height: 153rpx;
width: calc(100%); width: calc(100%);
// border-right: 1rpx solid transparent; // border-right: 1rpx solid transparent;
border-top: 1rpx solid transparent; border-top: 1rpx solid transparent;
@ -694,9 +788,9 @@
} }
.down-icons { .down-icons {
margin-top: 30rpx; margin-top: 5rpx;
width: 100%; width: 100%;
height: 75rpx; height: 58rpx;
background-color: rgb(255, 216, 126); background-color: rgb(255, 216, 126);
display: flex; display: flex;
justify-content: center; justify-content: center;
@ -704,8 +798,8 @@
.icon { .icon {
margin: 0 5rpx; margin: 0 5rpx;
font-size: 28rpx; font-size: 20rpx;
padding: 5rpx 10rpx; padding: 3rpx 5rpx;
background-color: rgb(255, 138, 0); background-color: rgb(255, 138, 0);
color: #fff; color: #fff;
border-radius: 5rpx; border-radius: 5rpx;
@ -813,4 +907,103 @@
} }
} }
} }
.titlebutton-father {
display: flex;
margin-right: 20rpx;
.titlebutton {
background-color: #fff;
display: flex;
justify-content: center;
align-items: center;
padding: 10rpx 30rpx;
border-radius: 20rpx;
font-size: 27rpx;
margin-right: 10rpx;
}
.titlebutton-target {
background: linear-gradient(to right bottom, #00c9ff, #0076ff);
color: #fff;
display: flex;
justify-content: center;
align-items: center;
padding: 10rpx 30rpx;
border-radius: 20rpx;
font-size: 27rpx;
margin-right: 10rpx;
}
.titlebutton-target-yellow{
background: #FFDBA1;
// color: #fff;
display: flex;
justify-content: center;
align-items: center;
padding: 10rpx 30rpx;
border-radius: 20rpx;
font-size: 27rpx;
margin-right: 10rpx;
}
.titlebutton-target-pouple{
background: #7B61FF;
color: #fff;
display: flex;
justify-content: center;
align-items: center;
padding: 10rpx 30rpx;
border-radius: 20rpx;
font-size: 27rpx;
margin-right: 10rpx;
}
}
.boom {
position: absolute;
top: 80rpx;
left: 0rpx;
// background-color: #fff;
width: 30rpx;
height: 1500rpx;
display: flex;
flex-direction: column;
// justify-content: center;
align-items: center;
overflow: hidden;
z-index: 10;
.boom-son {
height: 153rpx;
width: 100%;
font-size: 22rpx;
letter-spacing: 5rpx;
// box-shadow: 5rpx 5rpx 10rpx rgba(0, 0, 0, 0.1);s
writing-mode: vertical-rl;
/* 竖排文字,从右往左 */
text-align: center;
z-index: 10;
/* 确保文字在容器内居中 */
background: linear-gradient(to bottom, #ffe2b2, #e3deff);
// z-index: -1;
border-bottom-right-radius: 40rpx;
border-top-right-radius: 40rpx;
}
.boom-son-target {
height: 153rpx;
width: 100%;
font-size: 22rpx;
letter-spacing: 5rpx;
// box-shadow: 5rpx 5rpx 10rpx rgba(0, 0, 0, 0.1);
writing-mode: vertical-rl;
/* 竖排文字,从右往左 */
text-align: center;
z-index: 10;
/* 确保文字在容器内居中 */
background: linear-gradient(to bottom, #ff8a00, #eceaff);
// color: #fff;
// z-index: -1;
border-bottom-right-radius: 40rpx;
border-top-right-radius: 40rpx;
}
}
</style> </style>

View File

@ -1,7 +1,7 @@
;(function(){ ;(function(){
let u=void 0,isReady=false,onReadyCallbacks=[],isServiceReady=false,onServiceReadyCallbacks=[]; let u=void 0,isReady=false,onReadyCallbacks=[],isServiceReady=false,onServiceReadyCallbacks=[];
const __uniConfig = {"pages":[],"globalStyle":{"backgroundColor":"#F8F8F8","bounce":"none","navigationBar":{"backgroundColor":"#F8F8F8","titleText":"uni-app x","type":"default","titleColor":"#000000"},"isNVue":false},"nvue":{"compiler":"uni-app","styleCompiler":"uni-app","flex-direction":"column"},"renderer":"auto","appname":"养老App","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":true},"compilerVersion":"4.56","entryPagePath":"pages/index/index","entryPageQuery":"","realEntryPagePath":"","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000},"locales":{},"darkmode":false,"themeConfig":{}}; const __uniConfig = {"pages":[],"globalStyle":{"backgroundColor":"#F8F8F8","bounce":"none","navigationBar":{"backgroundColor":"#F8F8F8","titleText":"uni-app x","type":"default","titleColor":"#000000"},"isNVue":false},"nvue":{"compiler":"uni-app","styleCompiler":"uni-app","flex-direction":"column"},"renderer":"auto","appname":"养老App","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":true},"compilerVersion":"4.57","entryPagePath":"pages/index/index","entryPageQuery":"","realEntryPagePath":"","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000},"locales":{},"darkmode":false,"themeConfig":{}};
const __uniRoutes = [{"path":"pages/index/index","meta":{"isQuit":true,"isEntry":true,"navigationBar":{"style":"custom","type":"default"},"isNVue":false}},{"path":"pages/login/login","meta":{"navigationBar":{"style":"custom","type":"default"},"isNVue":false}},{"path":"pages/timeMatrix/index","meta":{"navigationBar":{"style":"custom","type":"default"},"isNVue":false}}].map(uniRoute=>(uniRoute.meta.route=uniRoute.path,__uniConfig.pages.push(uniRoute.path),uniRoute.path='/'+uniRoute.path,uniRoute)); const __uniRoutes = [{"path":"pages/index/index","meta":{"isQuit":true,"isEntry":true,"navigationBar":{"style":"custom","type":"default"},"isNVue":false}},{"path":"pages/login/login","meta":{"navigationBar":{"style":"custom","type":"default"},"isNVue":false}},{"path":"pages/timeMatrix/index","meta":{"navigationBar":{"style":"custom","type":"default"},"isNVue":false}}].map(uniRoute=>(uniRoute.meta.route=uniRoute.path,__uniConfig.pages.push(uniRoute.path),uniRoute.path='/'+uniRoute.path,uniRoute));
__uniConfig.styles=[];//styles __uniConfig.styles=[];//styles
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}}); __uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});

File diff suppressed because it is too large Load Diff

View File

@ -89,7 +89,7 @@
"uni-app": { "uni-app": {
"control": "uni-v3", "control": "uni-v3",
"vueVersion": "3", "vueVersion": "3",
"compilerVersion": "4.56", "compilerVersion": "4.57",
"nvueCompiler": "uni-app", "nvueCompiler": "uni-app",
"renderer": "auto", "renderer": "auto",
"nvue": { "nvue": {

File diff suppressed because it is too large Load Diff

View File

@ -145,7 +145,7 @@
height: 100%; height: 100%;
display: flex; display: flex;
align-items: center; align-items: center;
width: 14.0625rem; width: 25rem;
} }
.doctorsay-container-container .doctorsay-container-title .doctorsay-container-right .doctorsay-container-juzhen[data-v-11ec1ae8] { .doctorsay-container-container .doctorsay-container-title .doctorsay-container-right .doctorsay-container-juzhen[data-v-11ec1ae8] {
background: linear-gradient(to right bottom, #00c9ff, #0076ff); background: linear-gradient(to right bottom, #00c9ff, #0076ff);
@ -245,7 +245,7 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
height: 2.5rem; height: 2.5rem;
width: 8.6875rem; width: 7.71875rem;
border-right: 0.03125rem solid transparent; border-right: 0.03125rem solid transparent;
border-image: repeating-linear-gradient(180deg, #0184db 0px, #0184db 0.1875rem, transparent 0.1875rem, transparent 0.375rem) 1; border-image: repeating-linear-gradient(180deg, #0184db 0px, #0184db 0.1875rem, transparent 0.1875rem, transparent 0.375rem) 1;
font-weight: 700; font-weight: 700;
@ -254,7 +254,7 @@
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
width: 8.6875rem; width: 7.71875rem;
flex-direction: column; flex-direction: column;
border-right: 0.03125rem solid transparent; border-right: 0.03125rem solid transparent;
border-image: repeating-linear-gradient(180deg, #0184db 0px, #0184db 0.1875rem, transparent 0.1875rem, transparent 0.375rem) 1; border-image: repeating-linear-gradient(180deg, #0184db 0px, #0184db 0.1875rem, transparent 0.1875rem, transparent 0.375rem) 1;
@ -263,7 +263,7 @@
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
height: 7.71875rem; height: 4.78125rem;
width: calc(100%); width: calc(100%);
border-top: 0.03125rem solid transparent; border-top: 0.03125rem solid transparent;
border-image: repeating-linear-gradient(90deg, #0184db 0px, #0184db 0.1875rem, transparent 0.1875rem, transparent 0.375rem) 1; border-image: repeating-linear-gradient(90deg, #0184db 0px, #0184db 0.1875rem, transparent 0.1875rem, transparent 0.375rem) 1;
@ -340,9 +340,9 @@
color: #fff; color: #fff;
} }
.down-icons[data-v-11ec1ae8] { .down-icons[data-v-11ec1ae8] {
margin-top: 0.9375rem; margin-top: 0.15625rem;
width: 100%; width: 100%;
height: 2.34375rem; height: 1.8125rem;
background-color: #ffd87e; background-color: #ffd87e;
display: flex; display: flex;
justify-content: center; justify-content: center;
@ -350,8 +350,8 @@
} }
.down-icons .icon[data-v-11ec1ae8] { .down-icons .icon[data-v-11ec1ae8] {
margin: 0 0.15625rem; margin: 0 0.15625rem;
font-size: 0.875rem; font-size: 0.625rem;
padding: 0.15625rem 0.3125rem; padding: 0.09375rem 0.15625rem;
background-color: #ff8a00; background-color: #ff8a00;
color: #fff; color: #fff;
border-radius: 0.15625rem; border-radius: 0.15625rem;
@ -442,3 +442,91 @@
height: 2.1875rem; height: 2.1875rem;
animation: shake 0.5s 3; animation: shake 0.5s 3;
} }
.titlebutton-father[data-v-11ec1ae8] {
display: flex;
margin-right: 0.625rem;
}
.titlebutton-father .titlebutton[data-v-11ec1ae8] {
background-color: #fff;
display: flex;
justify-content: center;
align-items: center;
padding: 0.3125rem 0.9375rem;
border-radius: 0.625rem;
font-size: 0.84375rem;
margin-right: 0.3125rem;
}
.titlebutton-father .titlebutton-target[data-v-11ec1ae8] {
background: linear-gradient(to right bottom, #00c9ff, #0076ff);
color: #fff;
display: flex;
justify-content: center;
align-items: center;
padding: 0.3125rem 0.9375rem;
border-radius: 0.625rem;
font-size: 0.84375rem;
margin-right: 0.3125rem;
}
.titlebutton-father .titlebutton-target-yellow[data-v-11ec1ae8] {
background: #FFDBA1;
display: flex;
justify-content: center;
align-items: center;
padding: 0.3125rem 0.9375rem;
border-radius: 0.625rem;
font-size: 0.84375rem;
margin-right: 0.3125rem;
}
.titlebutton-father .titlebutton-target-pouple[data-v-11ec1ae8] {
background: #7B61FF;
color: #fff;
display: flex;
justify-content: center;
align-items: center;
padding: 0.3125rem 0.9375rem;
border-radius: 0.625rem;
font-size: 0.84375rem;
margin-right: 0.3125rem;
}
.boom[data-v-11ec1ae8] {
position: absolute;
top: 2.5rem;
left: 0;
width: 0.9375rem;
height: 46.875rem;
display: flex;
flex-direction: column;
align-items: center;
overflow: hidden;
z-index: 10;
}
.boom .boom-son[data-v-11ec1ae8] {
height: 4.78125rem;
width: 100%;
font-size: 0.6875rem;
letter-spacing: 0.15625rem;
-webkit-writing-mode: vertical-rl;
writing-mode: vertical-rl;
/* 竖排文字,从右往左 */
text-align: center;
z-index: 10;
/* 确保文字在容器内居中 */
background: linear-gradient(to bottom, #ffe2b2, #e3deff);
border-bottom-right-radius: 1.25rem;
border-top-right-radius: 1.25rem;
}
.boom .boom-son-target[data-v-11ec1ae8] {
height: 4.78125rem;
width: 100%;
font-size: 0.6875rem;
letter-spacing: 0.15625rem;
-webkit-writing-mode: vertical-rl;
writing-mode: vertical-rl;
/* 竖排文字,从右往左 */
text-align: center;
z-index: 10;
/* 确保文字在容器内居中 */
background: linear-gradient(to bottom, #ff8a00, #eceaff);
border-bottom-right-radius: 1.25rem;
border-top-right-radius: 1.25rem;
}

File diff suppressed because one or more lines are too long