zoukankan      html  css  js  c++  java
  • 小程序自定义时间轴

     根据实际需求自定义的时间轴:

    <template>
        <div class="time-axis-wrap">
            <!--  时间 -->
            <div class="mr-15">
                <div v-if="!schedule.repeat" class="text-right" :class="{ curentTime: isCurent }">
                    {{ getTime.date === curDate ? '今天' : getTime.date }}
                </div>
                <div class="text-ccc f-12" :class="{ curentTime: isCurent }">
                    {{ getTime.timeRange }}
                </div>
            </div>
            <!--  分割线 -->
            <div class="line">
                <div class="round"></div>
                <div v-if="isShowLeftLine" class="leftLine"></div>
            </div>
    
            <!-- 右边 -->
            <div class="content">
                <div class="flex items-center mb-10" :class="isCurent === true ? 'curentTitle' : 'outTitle'">
                    <van-image class="flex mr-10" width="17" height="17" src="/static/img/icons/icon-course.png" />
                    <span class="font-bold">{{ schedule.ca_name }}</span>
                </div>
                <div class="flex items-center text-565656 f-14">
                    <van-image class="flex mr-10" width="10" height="12" src="/static/img/icons/icon-person.png" />
                    <span>{{ schedule.real_name }}</span>
                    <van-image
                        class="flex ml-20 mr-10"
                        width="11"
                        height="12"
                        :src="schedule.type === 2 ? '/static/img/icons/icon-sign-error.png' : '/static/img/icons/icon-sign.png'"
                    />
                    <span :class="{ 'text-danger': schedule.type === 2 }">{{ getSignStatus(schedule.type) }}</span>
                    <template v-if="showApprovalBtn(schedule)">
                        <van-image
                            class="flex ml-20 mr-10"
                            width="11"
                            height="12"
                            :src="
                                schedule.approval_status === 2
                                    ? '/static/img/icons/icon-approval-error.png'
                                    : '/static/img/icons/icon-approval.png'
                            "
                        />
                        <span
                            class="text-primary"
                            :class="{ 'text-danger': schedule.approval_status === 2 }"
                            @click="$emit('action', schedule)"
                        >
                            {{ getApprovalStatus(schedule.approval_status) }}
                        </span>
                    </template>
                </div>
            </div>
        </div>
    </template>
    
    <script>
    import { format } from '@/utils/common'
    import VanImage from '@/wxcomponents/vant/dist/image'
    import moment from 'moment'
    
    export default {
        name: 'timeAxis',
        components: {
            VanImage
        },
        props: {
            isCurent: {
                type: Boolean,
                default: false
            },
            isShowLeftLine: {
                type: Boolean,
                default: true
            },
            schedule: {
                type: Object,
                default: {}
            }
        },
        data() {
            return {
                curDate: ''
            }
        },
        created() {
            const date = new Date()
            this.curDate = format('mm-dd', date)
        },
        computed: {
            getTime() {
                const startTime = new Date(this.schedule.start_time)
                const endTime = new Date(this.schedule.end_time)
                return {
                    date: format('mm-dd', startTime),
                    timeRange: `${format('HH:MM', startTime)}-${format('HH:MM', endTime)}`
                }
            }
        },
        methods: {
            getSignStatus(i) {
                const status = ['已请假', '迟到', '旷课', '未签到', '已签到']
                return i === null ? '未开课' : status[i]
            },
            getApprovalStatus(status) {
                return ['审批中', '已请假', '驳回'][status] || '请假'
            },
            showApprovalBtn(item) {
                if (item.approval_status === null) {
                    const time = moment(item.start_time).subtract(30, 'm')
                    if (time.isBefore(moment())) {
                        return false
                    }
                    return true
                }
                return true
            }
        }
    }
    </script>
    
    <style lang="scss" scoped>
    .time-axis-wrap {
        display: flex;
        flex: 1;
        padding: 0px 10px 0 10px;
        color: #42464a;
    }
    .line {
        display: flex;
        flex-direction: column;
        justify-content: center;
        padding-top: 8px;
    }
    .round {
        width: 4px;
        height: 4px;
        border-radius: 100%;
        border: 2px solid #1989fa;
    }
    .leftLine {
        display: flex;
        flex: 1;
        width: 1px;
        margin: 3px 0 0 3px;
        background: #dadada;
    }
    
    .content {
        display: flex;
        flex: 1;
        flex-direction: column;
        margin-left: 15px;
        padding-bottom: 24px;
    }
    
    .curentTime {
        font-size: 14px;
        color: #1989fa;
    }
    .curentTitle {
        font-size: 16px;
        color: #1989fa;
    }
    .outTitle {
        font-size: 16px;
    }
    </style>

    页面中调用:

    <timeAxis v-for="(item, i) in scheduleList" :key="i" :schedule="item" @action="handleAction" />

    参考链接:https://www.jianshu.com/p/a60e01b4a124

  • 相关阅读:
    BZOJ3048: [Usaco2013 Jan]Cow Lineup
    BZOJ1605: [Usaco2008 Open]Crisis on the Farm 牧场危机
    BZOJ3887: [Usaco2015 Jan]Grass Cownoisseur
    BZOJ5055: 膜法师
    BZOJ2037: [Sdoi2008]Sue的小球
    BZOJ1722: [Usaco2006 Mar] Milk Team Select 产奶比赛
    Uva 11054 Wine trading in Gergovia
    poj 2549 Sumsets
    Uva 1326 Jurassic Remains
    Uva 10755 Garbage Heap
  • 原文地址:https://www.cnblogs.com/ziyoublog/p/15102471.html
Copyright © 2011-2022 走看看