<template>
    <common-dialog ref="dialog" title="活动规则" confirmText="确定" :showCancel="false" @confirm="onConfirm" width="640rpx">
        <view class="rule-content">
            <view class="rule-item">1.活动时间：{{ ruleData.startTime || '暂无' }}至{{ ruleData.endTime || '暂无' }}。</view>
            <view class="rule-item">2.助力降价机制：用户成功分享并邀请 1 位好友完成助力，即可享受对应图书的降价优惠，最高可0元购书！</view>
            <view class="rule-item">3.助力有效期：用户发起助力后，需在{{ ruleData.inviteExpireHour || 24 }}小时内完成好友助力，超时未完成则本次助力失效，可重新发起邀请，有效期以助力成功时间为准。</view>
            <view class="rule-item">4.助力上限说明：单用户单订单单本图书仅可降价 {{ ruleData.reduceTimesPerIsbn || 1 }} 次，达到次数上限后无法继续通过助力获得优惠；每个用户 ID 每日最多可参与助力 {{ ruleData.assistTimesEveryDay || 1 }} 次，同一好友仅可为同一用户的同一订单助力 1 次，重复助力无效。</view>
            <view class="rule-item">5.若用户存在恶意刷助力、虚假账号、作弊等违规行为，平台有权直接取消其活动资格、收回已获得的降价优惠，并限制其后续参与平台活动的权限。</view>
        </view>
    </common-dialog>
</template>

<script>
import commonDialog from '@/components/common-dialog.vue'

export default {
    components: {
        commonDialog
    },
    data() {
        return {
            ruleData: {}
        }
    },
    methods: {
        open() {
            this.fetchRuleData();
            this.$refs.dialog.openPopup();
        },
        fetchRuleData() {
            this.$u.api.getActivityReduceRuleAjax().then(res => {
                if (res.code === 200) {
                    // 处理日期格式，只取年月日
                    let data = res.data || {};
                    if (data.startTime) {
                        data.startTime = this.formatDate(data.startTime);
                    }
                    if (data.endTime) {
                        data.endTime = this.formatDate(data.endTime);
                    }
                    this.ruleData = data;
                }
            })
        },
        formatDate(dateStr) {
            // 将类似 2025-03-25T00:00:00 转换为 2025年3月25日
            if (!dateStr) return '';
            let date = new Date(dateStr);
            if (isNaN(date.getTime())) {
                // 处理可能带有空格的格式 2025-03-25 00:00:00
                date = new Date(dateStr.replace(/-/g, '/'));
            }
            if (isNaN(date.getTime())) return dateStr;
            return `${date.getFullYear()}年${date.getMonth() + 1}月${date.getDate()}日`;
        },
        onConfirm() {
            // 点击确定，弹窗自动关闭
            this.$emit('confirm');
        }
    }
}
</script>

<style lang="scss" scoped>
.rule-content {
    text-align: left;
    font-size: 26rpx;
    color: #333333;
    line-height: 44rpx;
    max-height: 60vh;
    overflow-y: auto;
    padding-bottom: 20rpx;

    .rule-item {
        margin-bottom: 20rpx;
        text-align: justify;
    }
}
</style>
