单应用项目,可以创建很多独立工具类页面 ,不用登录 初始化的页面
zhangchen
2025-07-26 909dfdf6ceff702f65bdc15bd958589c6df4195d
src/views/mobile/bedsideAuxiliaryScreen/components/TimePicker.vue
@@ -1,6 +1,6 @@
<template>
  <div class="time-picker">
    <div class="picker-column" ref="hourRef" @scroll="onScroll('hour')">
    <div class="picker-column" ref="hourRef" @scroll="onScroll('hour')" :class="disabled ? 'disabled' : ''">
      <div
        v-for="(h, index) in loopHours"
        :key="index"
@@ -12,7 +12,7 @@
      </div>
    </div>
    <span class="colon">:</span>
    <div class="picker-column" ref="minuteRef" @scroll="onScroll('minute')">
    <div class="picker-column" ref="minuteRef" @scroll="onScroll('minute')" :class="disabled ? 'disabled' : ''">
      <div
        v-for="(m, index) in loopMinutes"
        :key="index"
@@ -29,7 +29,7 @@
<script setup lang="ts">
import { ref, watch, onMounted, nextTick } from "vue";
const props = defineProps<{ modelValue: string }>();
const props = defineProps<{ modelValue: string, disabled: boolean }>();
const emit = defineEmits(["update:modelValue"]);
const hours = Array.from({ length: 24 }, (_, i) => i);
@@ -111,6 +111,7 @@
);
function onScroll(type: "hour" | "minute") {
  if (props.disabled) return;
  if (isProgrammaticScroll[type]) {
    // 程序滚动,忽略,避免死循环
    isProgrammaticScroll[type] = false;
@@ -197,6 +198,9 @@
    &::-webkit-scrollbar {
      display: none; /* Chrome Safari */
    }
    &.disabled{
      overflow: hidden;
    }
    .picker-item {
      height: 0.26rem;