wraper.vue 1.21 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
<template>
    <div class="tw-flex tw-flex-col tw-h-full">
        <div class="tw-overflow-y-hidden tw-flex-1">
            <div class="tw-overflow-y-auto tw-h-full">
                <slot />
            </div>
        </div>
        <template>
            <a-divider />
            <a-space class="tw-justify-end">
                <a-button @click="cancel">取消</a-button>
                <slot name="footer">
                    <a-button type="primary" @click="ok" :loading="loading">确认</a-button>
                </slot>
            </a-space>
        </template>
    </div>
</template>

<script>
import { EMPTY_FUN } from '@/utils';

export default {
    props: {
        onOk: {
            type: Function,
            default: EMPTY_FUN,
        },
        onCancel: Function,
        hidden: {
            type: Function,
            default: EMPTY_FUN,
        },
    },
    data: () => ({
        loading: false,
    }),
    methods: {
        cancel() {
            if (this.onCancel) this.onCancel();
            this.hidden();
        },

        async ok() {
            this.loading = true;
            await this.onOk();
            this.loading = false;
            this.hidden();
        },
    },
};
</script>