Newer
Older
urbanLifeline_YanAn / src / views / oneMap / components / topTimePick.vue
@鲁yixuan 鲁yixuan on 9 Oct 5 KB updata
<template>
  <div class="reviewTopTime flex flex-justcontent-spacebetween">
    <div class="time">
      当前回顾:从<span>{{ huiguActiveTime }} 8:00</span>到<span
        >{{ moment(huiguActiveTime).add(1, 'days').format('YYYY-MM-DD') }} 8:00</span
      >
    </div>
    <div class="select">
      更多回顾
      <el-date-picker
        class="selectPick"
        v-model="huiguActiveTime"
        value-format="YYYY-MM-DD"
        type="date"
        :disabled-date="hgDisabledDate"
        @panel-change="yueChange"
        @change="dayChange"
        popper-class="dayListPop"
      >
        <template #default="cell">
          <div class="el-date-table-cell" :class="{ current: cell.isCurrent }">
            <div class="day">{{ cell.text }}</div>
            <div v-if="isHoliday(cell)" class="num">{{ isHoliVal(cell) }}mm</div>
          </div>
        </template>
      </el-date-picker>
    </div>
  </div>
</template>

<script setup>
import * as hsApi from '@/api/hsApi.js';
const { proxy } = getCurrentInstance();
const emits = defineEmits(['selectTime']);

// let huiguActiveTime=ref(proxy.moment().add(-1, "days").format('YYYY-MM-DD'))

let huiguActiveTime = ref('');
let huiguListTime = ref([]);
let huiguActiveMoon = ref('');
function getRainTime() {
  hsApi.rainCalendarLately().then(res => {
    huiguActiveTime.value = res;
    emits('selectTime', huiguActiveTime.value);
    huiguActiveMoon.value = proxy.moment(res).format('YYYY-MM');
    if (huiguActiveTime.value != '') {
      getRainData();
    }
  });
}
function getRainData() {
  let parms = { queryTime: huiguActiveMoon.value };
  hsApi.rainCalendar(parms).then(res => {
    let array = [];
    res.forEach((i, d) => {
      if (i.weather != '无雨') {
        array.push(i);
      }
    });
    huiguListTime.value = array;
  });
}
// 日历过滤
const hgDisabledDate = time => {
  return time.getTime() > Date.now() - 8.64e7;
};
const isHoliday = ({ dayjs }) => {
  let array = [];
  huiguListTime.value.forEach(i => {
    array.push(proxy.moment(i.date).format('YYYY-MM-DD'));
  });
  return array.includes(dayjs.format('YYYY-MM-DD'));
};
const isHoliVal = ({ dayjs }) => {
  let val = huiguListTime.value.find(i => {
    return (
      proxy.moment(proxy.moment(i.date).format('YYYY-MM-DD')).valueOf() ==
      Number(proxy.moment(dayjs.format('YYYY-MM-DD')).valueOf())
    );
  });
  return val.value;
};
// 日历切换
const yueChange = time => {
  huiguActiveMoon.value = proxy.moment(time).format('YYYY-MM');
  getRainData();
};
const dayChange = time => {
  emits('selectTime', huiguActiveTime.value);
};

onMounted(() => {
  getRainTime();
});
</script>

<style lang="scss" scoped>
.reviewTopTime {
  width: 654px;
  position: absolute;
  top: 120px;
  left: 50%;
  transform: translateX(-50%);

  .time {
    width: 550px;
    line-height: 38px;
    // background: url(@/assets/images/oneMap/hgsj.png) no-repeat;
    // background-size: 100% 100%;
    // background: linear-gradient(0deg, rgba(0, 93, 114, 0.8) 0%, rgba(0, 93, 114, 0.8) 100%);
    // border: 1px solid #47eef3;
    background: url('@/assets/images/fhpl/timebj.png') no-repeat;
    background-size: 100% 100%;
    // box-shadow: inset 0 0 5px 5px #47eef38a;
    font-weight: 500;
    font-size: 16px;
    color: #f2f6ff;
    text-align: center;
    span {
      font-weight: 500;
      font-size: 16px;
      color: #39f7ff;
      margin: 0 20px;
    }
  }
  .select {
    width: 90px;
    height: 30px;
    line-height: 30px;

    // background: url(@/assets/images/oneMap/hgan.png) no-repeat;
    // background-size: 100% 100%;
    border-radius: 18px;
    background: linear-gradient(0deg, rgba(0, 93, 114, 0.8) 0%, rgba(0, 93, 114, 0.8) 100%);
    border: 1px solid #47eef3;
    // box-shadow: inset 0 0 5px 5px #47eef38a;
    font-weight: 500;
    font-size: 16px;
    color: #f2f6ff;
    text-align: center;
    cursor: pointer;
    position: relative;
    top: 2px;
    :deep(.selectPick) {
      position: absolute;
      left: 0;
      top: 0;
      width: 134px;
      height: 30px;
      opacity: 0;
    }
  }
}
</style>
<style lang="scss">
.dayListPop {
  // background: rgba(11, 52, 116, 0.8) !important;
  // border:1px solid rgba(11, 52, 116,1) !important;

  background: linear-gradient(0deg, rgba(0, 93, 114, 0.8) 0%, rgba(0, 93, 114, 0.8) 100%) !important;
  border: 1px solid #47eef3 !important;
  border-radius: 10px !important;
  .el-date-picker {
    width: 400px;
  }
  .el-picker-panel__content {
    width: 370px;
  }
  .el-date-table td.disabled .el-date-table-cell {
    background: rgba(4, 69, 142, 1);
  }
  .el-date-table td .el-date-table-cell {
    background: rgba(37, 123, 234, 1);
    height: 40px;
    color: #fff;
    .day {
      line-height: 20px;
    }
    .num {
      line-height: 1;
    }
    &.current {
      background: rgba(59, 219, 237, 1);
    }
  }
  .el-date-table td.today {
    .day {
      color: rgba(59, 219, 237, 1);
      font-weight: bold;
    }
  }
  .el-picker-panel {
    background: none;
  }
  .el-popper__arrow::before {
    display: none;
    background: rgba(11, 52, 116, 0.8) !important;
  }
  .el-date-picker__header {
    span {
      color: #00ffff;
    }
  }
  .el-picker-panel__icon-btn {
    color: #fff;
  }
  .el-date-table th {
    color: #fff;
  }
  .el-date-table th {
    border-color: rgba(11, 52, 116, 1) !important;
  }
}
</style>