<script setup lang="ts">
import { computed } from 'vue';

// 接收父组件传入的 props
const props = defineProps({
    data: Object,
    params: Object,
});

// 定义组件名称，用于在控制台输出调试信息
const componentName = 'IVYZ0S0D';

// 将 props.data 赋值给 reportData 变量
let reportData: any = props.data || {};

// 如果 reportData 不为空，则将其赋值给变量
if (reportData) {
    console.log(`${componentName} 组件接收到的数据：`, reportData);
} else {
    console.log(`${componentName} 组件未接收到数据`);
}

// 获取状态描述文本
const getStatusText = (value: number) => {
    if (value === 1) return '未命中';
    if (value === 2) return '命中';
    return '未知';
};

// 获取通知函状态描述文本
const getNoticeLetterStatusText = (value: number) => {
    if (value === 1) return '未命中';
    if (value === 2) return '命中';
    return '未知';
};

// 获取通知函期间描述文本
const getNoticeLetterPeriodText = (period: number) => {
    const periodMap: Record<number, string> = {
        0: '没有被发送通知函',
        1: '近2年内',
        2: '2-4年',
        3: '5年以上'
    };
    
    return periodMap[period] || '未知期间';
};

// 获取背景颜色
const getBackgroundColor = (value: number) => {
    if (value === 1) return '#e8f5e8'; // 浅绿色
    if (value === 2) return '#ffe8e8'; // 浅红色
    return '#f5f5f5'; // 默认灰色
};

// 获取边框颜色
const getBorderColor = (value: number) => {
    if (value === 1) return '#4caf50'; // 绿色边框
    if (value === 2) return '#f44336'; // 红色边框
    return '#ccc'; // 默认灰色边框
};

// 判断是否应该隐藏该条目（如果是带时间范围的"未命中"）
const shouldHideItem = (itemText: string) => {
    // 检查是否包含时间范围关键词并且结果是"未命中"
    const timeRangeKeywords = ['近2年', '近3年', '近4年', '近5年', '2-4年', '5年以上'];
    const isTimeRangeItem = timeRangeKeywords.some(keyword => itemText.includes(keyword));
    const isNoRisk = itemText.includes('未命中');
    
    // 如果是时间范围项目且结果是"未命中"，则隐藏
    return isTimeRangeItem && isNoRisk;
};

// 获取风险类型数组 - 所有模块都显示
const riskTypes = computed(() => {
    const risks: {title: string, value: number, details: string | string[], bgColor: string, borderColor: string}[] = [];

    // 总体风险
    if (reportData.risk_flag !== undefined) {
        risks.push({
            title: '总体风险',
            value: reportData.risk_flag,
            details: getStatusText(reportData.risk_flag),
            bgColor: getBackgroundColor(reportData.risk_flag),
            borderColor: getBorderColor(reportData.risk_flag)
        });
    }

    // 失信风险
    if (reportData.dishonesty && reportData.dishonesty.dishonesty !== undefined) {
        risks.push({
            title: '失信风险',
            value: reportData.dishonesty.dishonesty,
            details: getStatusText(reportData.dishonesty.dishonesty),
            bgColor: getBackgroundColor(reportData.dishonesty.dishonesty),
            borderColor: getBorderColor(reportData.dishonesty.dishonesty)
        });
    }

    // 高消费限制风险
    if (reportData.high_consumption && reportData.high_consumption.high_consumption !== undefined) {
        risks.push({
            title: '高消费限制风险',
            value: reportData.high_consumption.high_consumption,
            details: getStatusText(reportData.high_consumption.high_consumption),
            bgColor: getBackgroundColor(reportData.high_consumption.high_consumption),
            borderColor: getBorderColor(reportData.high_consumption.high_consumption)
        });
    }

    // 劳动争议风险
    if (reportData.labor_disputes) {
        let details: string[] = [];
        if (reportData.labor_disputes.labor_disputes !== undefined) {
            details.push(`当前: ${getStatusText(reportData.labor_disputes.labor_disputes)}`);
        }
        if (reportData.labor_disputes.labor_disputes_3y !== undefined) {
            const detail = `近3年: ${getStatusText(reportData.labor_disputes.labor_disputes_3y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        if (reportData.labor_disputes.labor_disputes_5y !== undefined) {
            const detail = `近5年: ${getStatusText(reportData.labor_disputes.labor_disputes_5y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        if (reportData.labor_disputes.labor_contract !== undefined) {
            details.push(`劳动合同: ${getStatusText(reportData.labor_disputes.labor_contract)}`);
        }
        if (reportData.labor_disputes.labor_relation !== undefined) {
            details.push(`劳动关系: ${getStatusText(reportData.labor_disputes.labor_relation)}`);
        }
        if (reportData.labor_disputes.labor_relation_3y !== undefined) {
            const detail = `近3年劳动关系: ${getStatusText(reportData.labor_disputes.labor_relation_3y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        if (reportData.labor_disputes.labor_relation_5y !== undefined) {
            const detail = `近5年劳动关系: ${getStatusText(reportData.labor_disputes.labor_relation_5y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        
        if (details.length > 0) {
            risks.push({
                title: '劳动争议风险',
                value: Math.max(...Object.values(reportData.labor_disputes).filter(v => typeof v === 'number')),
                details: details,
                bgColor: getBackgroundColor(Math.max(...Object.values(reportData.labor_disputes).filter(v => typeof v === 'number'))),
                borderColor: getBorderColor(Math.max(...Object.values(reportData.labor_disputes).filter(v => typeof v === 'number')))
            });
        }
    }

    // 社会保险纠纷风险
    if (reportData.social_insurance) {
        let details: string[] = [];
        if (reportData.social_insurance.social_insurance !== undefined) {
            details.push(`社保纠纷: ${getStatusText(reportData.social_insurance.social_insurance)}`);
        }
        if (reportData.social_insurance.pension !== undefined) {
            details.push(`养老纠纷: ${getStatusText(reportData.social_insurance.pension)}`);
        }
        if (reportData.social_insurance.pension_3y !== undefined) {
            const detail = `近3年养老: ${getStatusText(reportData.social_insurance.pension_3y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        if (reportData.social_insurance.pension_5y !== undefined) {
            const detail = `近5年养老: ${getStatusText(reportData.social_insurance.pension_5y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        if (reportData.social_insurance.injury_insurance !== undefined) {
            details.push(`工伤纠纷: ${getStatusText(reportData.social_insurance.injury_insurance)}`);
        }
        if (reportData.social_insurance.injury_insurance_3y !== undefined) {
            const detail = `近3年工伤: ${getStatusText(reportData.social_insurance.injury_insurance_3y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        if (reportData.social_insurance.injury_insurance_5y !== undefined) {
            const detail = `近5年工伤: ${getStatusText(reportData.social_insurance.injury_insurance_5y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        if (reportData.social_insurance.unemployment_insurance !== undefined) {
            details.push(`失业纠纷: ${getStatusText(reportData.social_insurance.unemployment_insurance)}`);
        }
        if (reportData.social_insurance.unemployment_insurance_3y !== undefined) {
            const detail = `近3年失业: ${getStatusText(reportData.social_insurance.unemployment_insurance_3y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        if (reportData.social_insurance.unemployment_insurance_5y !== undefined) {
            const detail = `近5年失业: ${getStatusText(reportData.social_insurance.unemployment_insurance_5y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        if (reportData.social_insurance.medical_insurance !== undefined) {
            details.push(`医疗纠纷: ${getStatusText(reportData.social_insurance.medical_insurance)}`);
        }
        if (reportData.social_insurance.medical_insurance_3y !== undefined) {
            const detail = `近3年医疗: ${getStatusText(reportData.social_insurance.medical_insurance_3y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        if (reportData.social_insurance.medical_insurance_5y !== undefined) {
            const detail = `近5年医疗: ${getStatusText(reportData.social_insurance.medical_insurance_5y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        if (reportData.social_insurance.maternity_insurance !== undefined) {
            details.push(`生育纠纷: ${getStatusText(reportData.social_insurance.maternity_insurance)}`);
        }
        if (reportData.social_insurance.maternity_insurance_3y !== undefined) {
            const detail = `近3年生育: ${getStatusText(reportData.social_insurance.maternity_insurance_3y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        if (reportData.social_insurance.maternity_insurance_5y !== undefined) {
            const detail = `近5年生育: ${getStatusText(reportData.social_insurance.maternity_insurance_5y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        
        if (details.length > 0) {
            risks.push({
                title: '社会保险纠纷风险',
                value: Math.max(...Object.values(reportData.social_insurance).filter(v => typeof v === 'number')),
                details: details,
                bgColor: getBackgroundColor(Math.max(...Object.values(reportData.social_insurance).filter(v => typeof v === 'number'))),
                borderColor: getBorderColor(Math.max(...Object.values(reportData.social_insurance).filter(v => typeof v === 'number')))
            });
        }
    }

    // 福利待遇纠纷
    if (reportData.welfare_disputes && reportData.welfare_disputes.welfare !== undefined) {
        risks.push({
            title: '福利待遇纠纷',
            value: reportData.welfare_disputes.welfare,
            details: getStatusText(reportData.welfare_disputes.welfare),
            bgColor: getBackgroundColor(reportData.welfare_disputes.welfare),
            borderColor: getBorderColor(reportData.welfare_disputes.welfare)
        });
    }

    // 人事争议类纠纷
    if (reportData.personnel_disputes) {
        let details: string[] = [];
        if (reportData.personnel_disputes.personnel_dispute !== undefined) {
            details.push(`人事争议: ${getStatusText(reportData.personnel_disputes.personnel_dispute)}`);
        }
        if (reportData.personnel_disputes.resignation_dispute !== undefined) {
            details.push(`辞职争议: ${getStatusText(reportData.personnel_disputes.resignation_dispute)}`);
        }
        if (reportData.personnel_disputes.resignation_dispute_3y !== undefined) {
            const detail = `近3年辞职: ${getStatusText(reportData.personnel_disputes.resignation_dispute_3y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        if (reportData.personnel_disputes.resignation_dispute_5y !== undefined) {
            const detail = `近5年辞职: ${getStatusText(reportData.personnel_disputes.resignation_dispute_5y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        if (reportData.personnel_disputes.dismissal_dispute !== undefined) {
            details.push(`辞退争议: ${getStatusText(reportData.personnel_disputes.dismissal_dispute)}`);
        }
        if (reportData.personnel_disputes.dismissal_dispute_3y !== undefined) {
            const detail = `近3年辞退: ${getStatusText(reportData.personnel_disputes.dismissal_dispute_3y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        if (reportData.personnel_disputes.dismissal_dispute_5y !== undefined) {
            const detail = `近5年辞退: ${getStatusText(reportData.personnel_disputes.dismissal_dispute_5y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        
        if (details.length > 0) {
            risks.push({
                title: '人事争议类纠纷',
                value: Math.max(...Object.values(reportData.personnel_disputes).filter(v => typeof v === 'number')),
                details: details,
                bgColor: getBackgroundColor(Math.max(...Object.values(reportData.personnel_disputes).filter(v => typeof v === 'number'))),
                borderColor: getBorderColor(Math.max(...Object.values(reportData.personnel_disputes).filter(v => typeof v === 'number')))
            });
        }
    }

    // 仲裁相关案件
    if (reportData.arbitration) {
        let details: string[] = [];
        if (reportData.arbitration.arbitration_confirmation !== undefined) {
            details.push(`仲裁确认: ${getStatusText(reportData.arbitration.arbitration_confirmation)}`);
        }
        if (reportData.arbitration.arbitration_confirmation_3y !== undefined) {
            const detail = `近3年仲裁确认: ${getStatusText(reportData.arbitration.arbitration_confirmation_3y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        if (reportData.arbitration.arbitration_confirmation_5y !== undefined) {
            const detail = `近5年仲裁确认: ${getStatusText(reportData.arbitration.arbitration_confirmation_5y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        if (reportData.arbitration.arbitration_revocation !== undefined) {
            details.push(`仲裁撤销: ${getStatusText(reportData.arbitration.arbitration_revocation)}`);
        }
        if (reportData.arbitration.arbitration_revocation_3y !== undefined) {
            const detail = `近3年仲裁撤销: ${getStatusText(reportData.arbitration.arbitration_revocation_3y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        if (reportData.arbitration.arbitration_revocation_5y !== undefined) {
            const detail = `近5年仲裁撤销: ${getStatusText(reportData.arbitration.arbitration_revocation_5y)}`;
            if (!shouldHideItem(detail)) {
                details.push(detail);
            }
        }
        
        if (details.length > 0) {
            risks.push({
                title: '仲裁相关案件',
                value: Math.max(...Object.values(reportData.arbitration).filter(v => typeof v === 'number')),
                details: details,
                bgColor: getBackgroundColor(Math.max(...Object.values(reportData.arbitration).filter(v => typeof v === 'number'))),
                borderColor: getBorderColor(Math.max(...Object.values(reportData.arbitration).filter(v => typeof v === 'number')))
            });
        }
    }

    // 通知函触达
    if (reportData.notice_letter && reportData.notice_letter.notice_letter !== undefined) {
        let statusText = getNoticeLetterStatusText(reportData.notice_letter.notice_letter);
        let periodText = '';
        
        if (reportData.notice_letter.notice_letter_period !== undefined) {
            periodText = `期间: ${getNoticeLetterPeriodText(reportData.notice_letter.notice_letter_period)}`;
        }
        
        const detailParts = [`状态: ${statusText}`];
        if (periodText) {
            detailParts.push(periodText);
        }
        
        risks.push({
            title: '通知函触达',
            value: reportData.notice_letter.notice_letter,
            details: detailParts,
            bgColor: getBackgroundColor(reportData.notice_letter.notice_letter),
            borderColor: getBorderColor(reportData.notice_letter.notice_letter)
        });
    }

    return risks;
});

// 检查是否至少有一个数据类别有内容
const hasAnyData = computed(() => {
    return riskTypes.value.length > 0;
});
</script>

<template>
  <div class="ivyz0s0d-container">
    <!-- 风险卡片网格 -->
    <div v-if="hasAnyData" class="risk-cards-grid">
      <div 
        v-for="(risk, index) in riskTypes" 
        :key="index"
        class="risk-card"
        :style="{ backgroundColor: risk.bgColor, borderLeft: `4px solid ${risk.borderColor}` }"
      >
        <div class="risk-card__content">
          <h4 class="risk-card__title">{{ risk.title }}</h4>
          <div class="risk-card__status">
            <!-- 当 details 是字符串时显示单行 -->
            <p v-if="typeof risk.details === 'string'" class="risk-detail-item">{{ risk.details }}</p>
            <!-- 当 details 是数组时，每项占一行 -->
            <p 
              v-else 
              v-for="(detail, idx) in risk.details" 
              :key="idx" 
              class="risk-detail-item"
            >{{ detail }}</p>
          </div>
        </div>
      </div>
    </div>

    <!-- 无数据提示 -->
    <div v-if="!hasAnyData" class="no-data">
      <p>暂无相关风险数据</p>
    </div>
  </div>
</template>

<style scoped>
.ivyz0s0d-container {
  padding: 20px;
  font-family: Arial, sans-serif;
}

.risk-cards-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 15px;
  margin-bottom: 20px;
}

.risk-card {
  border: 1px solid #e0e0e0;
  border-radius: 8px;
  padding: 15px;
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.risk-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 8px rgba(0,0,0,0.15);
}

.risk-card__content {
  display: flex;
  flex-direction: column;
}

.risk-card__title {
  margin: 0 0 8px 0;
  font-size: 16px;
  font-weight: bold;
  color: #333;
}

.risk-card__status {
  margin: 0;
  font-size: 14px;
  color: #666;
}

.risk-detail-item {
  margin: 0 0 4px 0;
  line-height: 1.4;
}

.risk-detail-item:last-child {
  margin-bottom: 0;
}

.no-data {
  text-align: center;
  color: #999;
  font-style: italic;
  padding: 20px;
}
</style>