123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- <template>
- <index-title-wrap title="考试日程">
- <view class="bg-white p-40 mx-card">
- <uv-steps :current="currentStep" direction="column" dot>
- <uv-steps-item v-for="(s,idx) in currentPage" :key="idx" v-bind="s">
- <template #desc>
- <uv-text prefix-icon="clock" :type="idx==currentStep?'main':'tips'"
- :size="idx==currentStep?15:13" :text="s.time"/>
- <uv-text v-if="s.desc" type="tips" size="12" margin="5px 0 0 0" :text="s.desc"/>
- </template>
- </uv-steps-item>
- </uv-steps>
- </view>
- <view v-if="schedules.length>minSize" class="fx-row fx-cen-cen" style="margin-top: -22px">
- <view class="icon36 rd18-only bg-white shadow fx-col fx-cen-cen border-white half-circle rel"
- @click="togglePage">
- <text class="f10 f-999" style="visibility: hidden; margin-top: -5px">{{
- isOpen ? '收起' : '展开'
- }}
- </text>
- <uv-icon size="12" :name="isOpen?'arrow-up':'arrow-down'" color="#999"/>
- </view>
- </view>
- </index-title-wrap>
- </template>
- <script>
- import IndexTitleWrap from "@/pages/index/components/index-title-wrap.vue";
- import {getMainCourseDate} from "@/api/webApi/career-news";
- export default {
- name: "schedule-steps",
- components: {IndexTitleWrap},
- computed: {
- currentStep() {
- let step = -1
- const now = this.$uv.timeFormat()
- for (let i = 0; i < this.schedules.length; i++) {
- const schedule = this.schedules[i]
- if (now >= schedule.fireTime) step = i
- else break
- }
- return step
- },
- currentPage() {
- return this.schedules.slice(0, this.currentSize)
- },
- isOpen() {
- return this.schedules.length <= this.currentSize
- }
- },
- data() {
- return {
- minSize: 3,
- currentSize: 3,
- schedules: []
- }
- },
- mounted() {
- this.loadData()
- },
- methods: {
- async loadData() {
- const res = await getMainCourseDate()
- this.schedules = res.rows
- },
- togglePage() {
- this.currentSize = this.currentSize != this.schedules.length ? this.schedules.length : this.minSize
- }
- }
- }
- </script>
- <style scoped>
- .half-circle:before {
- content: ' ';
- position: absolute;
- z-index: 5;
- width: 50px; /*larger than circle area*/
- height: 20px;
- top: 0;
- background-color: white;
- }
- </style>
|