f
This commit is contained in:
@@ -1,302 +1,303 @@
|
||||
// 案件类型映射表
|
||||
export const lawsuitTypeMap = {
|
||||
sxbzxr: {
|
||||
text: '失信被执行',
|
||||
color: 'text-red-600 bg-red-50',
|
||||
darkColor: 'bg-red-500',
|
||||
riskLevel: 'high', // 高风险
|
||||
},
|
||||
xgbzxr: {
|
||||
text: '限高被执行',
|
||||
color: 'text-orange-600 bg-orange-50',
|
||||
darkColor: 'bg-orange-500',
|
||||
riskLevel: 'high', // 高风险
|
||||
},
|
||||
criminal: {
|
||||
text: '刑事案件',
|
||||
color: 'text-red-600 bg-red-50',
|
||||
darkColor: 'bg-red-500',
|
||||
riskLevel: 'high', // 高风险
|
||||
},
|
||||
civil: {
|
||||
text: '民事案件',
|
||||
color: 'text-blue-600 bg-blue-50',
|
||||
darkColor: 'bg-blue-500',
|
||||
riskLevel: 'medium', // 中风险
|
||||
},
|
||||
administrative: {
|
||||
text: '行政案件',
|
||||
color: 'text-purple-600 bg-purple-50',
|
||||
darkColor: 'bg-purple-500',
|
||||
riskLevel: 'medium', // 中风险
|
||||
},
|
||||
implement: {
|
||||
text: '执行案件',
|
||||
color: 'text-orange-600 bg-orange-50',
|
||||
darkColor: 'bg-orange-500',
|
||||
riskLevel: 'medium', // 中风险
|
||||
},
|
||||
bankrupt: {
|
||||
text: '强制清算与破产案件',
|
||||
color: 'text-rose-600 bg-rose-50',
|
||||
darkColor: 'bg-rose-500',
|
||||
riskLevel: 'high', // 高风险
|
||||
},
|
||||
preservation: {
|
||||
text: '非诉保全审查',
|
||||
color: 'text-amber-600 bg-amber-50',
|
||||
darkColor: 'bg-amber-500',
|
||||
riskLevel: 'low', // 低风险
|
||||
},
|
||||
}
|
||||
sxbzxr: {
|
||||
text: "失信被执行",
|
||||
color: "text-red-600 bg-red-50",
|
||||
darkColor: "bg-red-500",
|
||||
riskLevel: "high", // 高风险
|
||||
},
|
||||
xgbzxr: {
|
||||
text: "限高被执行",
|
||||
color: "text-orange-600 bg-orange-50",
|
||||
darkColor: "bg-orange-500",
|
||||
riskLevel: "high", // 高风险
|
||||
},
|
||||
criminal: {
|
||||
text: "刑事案件",
|
||||
color: "text-red-600 bg-red-50",
|
||||
darkColor: "bg-red-500",
|
||||
riskLevel: "high", // 高风险
|
||||
},
|
||||
civil: {
|
||||
text: "民事案件",
|
||||
color: "text-blue-600 bg-blue-50",
|
||||
darkColor: "bg-blue-500",
|
||||
riskLevel: "medium", // 中风险
|
||||
},
|
||||
administrative: {
|
||||
text: "行政案件",
|
||||
color: "text-purple-600 bg-purple-50",
|
||||
darkColor: "bg-purple-500",
|
||||
riskLevel: "medium", // 中风险
|
||||
},
|
||||
implement: {
|
||||
text: "执行案件",
|
||||
color: "text-orange-600 bg-orange-50",
|
||||
darkColor: "bg-orange-500",
|
||||
riskLevel: "medium", // 中风险
|
||||
},
|
||||
bankrupt: {
|
||||
text: "强制清算与破产案件",
|
||||
color: "text-rose-600 bg-rose-50",
|
||||
darkColor: "bg-rose-500",
|
||||
riskLevel: "high", // 高风险
|
||||
},
|
||||
preservation: {
|
||||
text: "非诉保全审查",
|
||||
color: "text-amber-600 bg-amber-50",
|
||||
darkColor: "bg-amber-500",
|
||||
riskLevel: "low", // 低风险
|
||||
},
|
||||
};
|
||||
|
||||
// 案件类型文本
|
||||
export const getCaseTypeText = type => {
|
||||
return lawsuitTypeMap[type]?.text || '其他案件'
|
||||
}
|
||||
export const getCaseTypeText = (type) => {
|
||||
return lawsuitTypeMap[type]?.text || "其他案件";
|
||||
};
|
||||
|
||||
// 案件类型颜色
|
||||
export const getCaseTypeColor = type => {
|
||||
return lawsuitTypeMap[type]?.color || 'text-gray-600 bg-gray-50'
|
||||
}
|
||||
export const getCaseTypeColor = (type) => {
|
||||
return lawsuitTypeMap[type]?.color || "text-gray-600 bg-gray-50";
|
||||
};
|
||||
|
||||
// 案件类型深色
|
||||
export const getCaseTypeDarkColor = type => {
|
||||
return lawsuitTypeMap[type]?.darkColor || 'bg-gray-500'
|
||||
}
|
||||
export const getCaseTypeDarkColor = (type) => {
|
||||
return lawsuitTypeMap[type]?.darkColor || "bg-gray-500";
|
||||
};
|
||||
|
||||
// 格式化日期显示
|
||||
export const formatDate = dateStr => {
|
||||
if (!dateStr) return '—'
|
||||
// 转换YYYY-MM-DD为年月日格式
|
||||
if (dateStr.includes('-')) {
|
||||
const parts = dateStr.split('-')
|
||||
if (parts.length === 3) {
|
||||
return `${parts[0]}年${parts[1]}月${parts[2]}日`
|
||||
export const formatDate = (dateStr) => {
|
||||
if (!dateStr) return "—";
|
||||
// 转换YYYY-MM-DD为年月日格式
|
||||
if (dateStr.includes("-")) {
|
||||
const parts = dateStr.split("-");
|
||||
if (parts.length === 3) {
|
||||
return `${parts[0]}年${parts[1]}月${parts[2]}日`;
|
||||
}
|
||||
}
|
||||
}
|
||||
return dateStr // 如果不是标准格式则返回原始字符串
|
||||
}
|
||||
return dateStr; // 如果不是标准格式则返回原始字符串
|
||||
};
|
||||
// 格式化金额显示(单位:元)
|
||||
export const formatLawsuitMoney = (money) => {
|
||||
if (!money) return "—";
|
||||
|
||||
// 格式化金额显示(单位:万元)
|
||||
export const formatLawsuitMoney = money => {
|
||||
if (!money) return '—'
|
||||
const value = parseFloat(money);
|
||||
if (isNaN(value)) return "—";
|
||||
|
||||
const value = parseFloat(money)
|
||||
if (isNaN(value)) return '—'
|
||||
|
||||
// 超过1亿显示亿元
|
||||
if (value >= 10000) {
|
||||
// 直接显示原始金额(元)
|
||||
return (
|
||||
(value / 10000).toLocaleString('zh-CN', {
|
||||
minimumFractionDigits: 0,
|
||||
maximumFractionDigits: 2,
|
||||
}) + ' 亿元'
|
||||
)
|
||||
}
|
||||
|
||||
// 否则显示万元
|
||||
return (
|
||||
value.toLocaleString('zh-CN', {
|
||||
minimumFractionDigits: 0,
|
||||
maximumFractionDigits: 2,
|
||||
}) + ' 万元'
|
||||
)
|
||||
}
|
||||
|
||||
value.toLocaleString("zh-CN", {
|
||||
minimumFractionDigits: 0,
|
||||
maximumFractionDigits: 2,
|
||||
}) + " 元"
|
||||
);
|
||||
};
|
||||
// 获取案件状态样式
|
||||
export const getCaseStatusClass = status => {
|
||||
if (!status) return 'bg-gray-100 text-gray-500'
|
||||
export const getCaseStatusClass = (status) => {
|
||||
if (!status) return "bg-gray-100 text-gray-500";
|
||||
|
||||
if (status.includes('已结') || status.includes('已办结')) {
|
||||
return 'bg-green-50 text-green-600'
|
||||
} else if (status.includes('执行中') || status.includes('审理中')) {
|
||||
return 'bg-blue-50 text-blue-600'
|
||||
} else if (status.includes('未执行')) {
|
||||
return 'bg-amber-50 text-amber-600'
|
||||
} else {
|
||||
return 'bg-gray-100 text-gray-500'
|
||||
}
|
||||
}
|
||||
if (status.includes("已结") || status.includes("已办结")) {
|
||||
return "bg-green-50 text-green-600";
|
||||
} else if (status.includes("执行中") || status.includes("审理中")) {
|
||||
return "bg-blue-50 text-blue-600";
|
||||
} else if (status.includes("未执行")) {
|
||||
return "bg-amber-50 text-amber-600";
|
||||
} else {
|
||||
return "bg-gray-100 text-gray-500";
|
||||
}
|
||||
};
|
||||
|
||||
// 获取企业状态对应的样式
|
||||
export const getStatusClass = status => {
|
||||
if (!status) return 'bg-gray-100 text-gray-500'
|
||||
export const getStatusClass = (status) => {
|
||||
if (!status) return "bg-gray-100 text-gray-500";
|
||||
|
||||
if (status.includes('注销') || status.includes('吊销')) {
|
||||
return 'bg-red-50 text-red-600'
|
||||
} else if (status.includes('存续') || status.includes('在营')) {
|
||||
return 'bg-green-50 text-green-600'
|
||||
} else if (status.includes('筹建') || status.includes('新设')) {
|
||||
return 'bg-blue-50 text-blue-600'
|
||||
} else {
|
||||
return 'bg-yellow-50 text-yellow-600'
|
||||
}
|
||||
}
|
||||
if (status.includes("注销") || status.includes("吊销")) {
|
||||
return "bg-red-50 text-red-600";
|
||||
} else if (status.includes("存续") || status.includes("在营")) {
|
||||
return "bg-green-50 text-green-600";
|
||||
} else if (status.includes("筹建") || status.includes("新设")) {
|
||||
return "bg-blue-50 text-blue-600";
|
||||
} else {
|
||||
return "bg-yellow-50 text-yellow-600";
|
||||
}
|
||||
};
|
||||
|
||||
// 格式化资本金额显示
|
||||
export const formatCapital = (capital, currency) => {
|
||||
if (!capital) return '—'
|
||||
if (!capital) return "—";
|
||||
|
||||
// 检查是否包含"万"字或需要显示为万元
|
||||
let unit = ''
|
||||
let value = parseFloat(capital)
|
||||
// 检查是否包含"万"字或需要显示为万元
|
||||
let unit = "";
|
||||
let value = parseFloat(capital);
|
||||
|
||||
// 处理原始数据中可能带有的单位
|
||||
if (typeof capital === 'string' && capital.includes('万')) {
|
||||
unit = '万'
|
||||
// 提取数字部分
|
||||
const numMatch = capital.match(/[\d.]+/)
|
||||
value = numMatch ? parseFloat(numMatch[0]) : 0
|
||||
} else if (value >= 10000) {
|
||||
// 大额数字转换为万元显示
|
||||
value = value / 10000
|
||||
unit = '万'
|
||||
}
|
||||
// 处理原始数据中可能带有的单位
|
||||
if (typeof capital === "string" && capital.includes("万")) {
|
||||
unit = "万";
|
||||
// 提取数字部分
|
||||
const numMatch = capital.match(/[\d.]+/);
|
||||
value = numMatch ? parseFloat(numMatch[0]) : 0;
|
||||
} else if (value >= 10000) {
|
||||
// 大额数字转换为万元显示
|
||||
value = value / 10000;
|
||||
unit = "万";
|
||||
}
|
||||
|
||||
// 格式化数字,保留两位小数(如果有小数部分)
|
||||
const formattedValue = value.toLocaleString('zh-CN', {
|
||||
minimumFractionDigits: 0,
|
||||
maximumFractionDigits: 2,
|
||||
})
|
||||
// 格式化数字,保留两位小数(如果有小数部分)
|
||||
const formattedValue = value.toLocaleString("zh-CN", {
|
||||
minimumFractionDigits: 0,
|
||||
maximumFractionDigits: 2,
|
||||
});
|
||||
|
||||
return `${formattedValue}${unit} ${currency || '人民币'}`
|
||||
}
|
||||
return `${formattedValue}${unit} ${currency || "人民币"}`;
|
||||
};
|
||||
|
||||
// 获取涉诉风险等级
|
||||
export const getRiskLevel = lawsuitInfo => {
|
||||
if (!lawsuitInfo) {
|
||||
export const getRiskLevel = (lawsuitInfo) => {
|
||||
if (!lawsuitInfo) {
|
||||
return {
|
||||
level: "low",
|
||||
text: "低风险",
|
||||
color: "text-green-600 bg-green-50",
|
||||
};
|
||||
}
|
||||
|
||||
// 失信被执行人是最高风险
|
||||
if (lawsuitInfo.sxbzxr && lawsuitInfo.sxbzxr.length > 0) {
|
||||
return {
|
||||
level: "high",
|
||||
text: "高风险",
|
||||
color: "text-red-600 bg-red-50",
|
||||
};
|
||||
}
|
||||
|
||||
// 限高被执行人是最高风险
|
||||
if (lawsuitInfo.xgbzxr && lawsuitInfo.xgbzxr.length > 0) {
|
||||
return {
|
||||
level: "high",
|
||||
text: "高风险",
|
||||
color: "text-red-600 bg-red-50",
|
||||
};
|
||||
}
|
||||
|
||||
// 有涉诉数据的风险级别
|
||||
if (lawsuitInfo.data && Object.keys(lawsuitInfo.data).length > 0) {
|
||||
// 检查是否有未结案的案件
|
||||
const data = lawsuitInfo.data;
|
||||
if (data.count && data.count_wei_total && data.count_wei_total > 0) {
|
||||
return {
|
||||
level: "medium",
|
||||
text: "中风险",
|
||||
color: "text-amber-600 bg-amber-50",
|
||||
};
|
||||
}
|
||||
|
||||
// 只有已结案的为低中风险
|
||||
return {
|
||||
level: "low-medium",
|
||||
text: "低中风险",
|
||||
color: "text-yellow-600 bg-yellow-50",
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
level: 'low',
|
||||
text: '低风险',
|
||||
color: 'text-green-600 bg-green-50',
|
||||
}
|
||||
}
|
||||
|
||||
// 失信被执行人是最高风险
|
||||
if (lawsuitInfo.sxbzxr && lawsuitInfo.sxbzxr.length > 0) {
|
||||
return {
|
||||
level: 'high',
|
||||
text: '高风险',
|
||||
color: 'text-red-600 bg-red-50',
|
||||
}
|
||||
}
|
||||
|
||||
// 限高被执行人是最高风险
|
||||
if (lawsuitInfo.xgbzxr && lawsuitInfo.xgbzxr.length > 0) {
|
||||
return {
|
||||
level: 'high',
|
||||
text: '高风险',
|
||||
color: 'text-red-600 bg-red-50',
|
||||
}
|
||||
}
|
||||
|
||||
// 有涉诉数据的风险级别
|
||||
if (lawsuitInfo.data && Object.keys(lawsuitInfo.data).length > 0) {
|
||||
// 检查是否有未结案的案件
|
||||
const data = lawsuitInfo.data
|
||||
if (data.count && data.count_wei_total && data.count_wei_total > 0) {
|
||||
return {
|
||||
level: 'medium',
|
||||
text: '中风险',
|
||||
color: 'text-amber-600 bg-amber-50',
|
||||
}
|
||||
}
|
||||
|
||||
// 只有已结案的为低中风险
|
||||
return {
|
||||
level: 'low-medium',
|
||||
text: '低中风险',
|
||||
color: 'text-yellow-600 bg-yellow-50',
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
level: 'low',
|
||||
text: '低风险',
|
||||
color: 'text-green-600 bg-green-50',
|
||||
}
|
||||
}
|
||||
level: "low",
|
||||
text: "低风险",
|
||||
color: "text-green-600 bg-green-50",
|
||||
};
|
||||
};
|
||||
|
||||
// 获取涉诉案件统计
|
||||
export const getLawsuitStats = lawsuitInfo => {
|
||||
if (!lawsuitInfo) return null
|
||||
export const getLawsuitStats = (lawsuitInfo) => {
|
||||
if (!lawsuitInfo) return null;
|
||||
|
||||
const stats = {
|
||||
total: 0,
|
||||
types: [],
|
||||
}
|
||||
const stats = {
|
||||
total: 0,
|
||||
types: [],
|
||||
};
|
||||
|
||||
// 统计各类型案件数量
|
||||
Object.keys(lawsuitTypeMap).forEach(type => {
|
||||
let count = 0
|
||||
// 统计各类型案件数量
|
||||
Object.keys(lawsuitTypeMap).forEach((type) => {
|
||||
let count = 0;
|
||||
|
||||
if (type === 'sxbzxr') {
|
||||
count = lawsuitInfo.sxbzxr && lawsuitInfo.sxbzxr.length > 0 ? lawsuitInfo.sxbzxr.length : 0
|
||||
} else if (type === 'xgbzxr') {
|
||||
count = lawsuitInfo.xgbzxr && lawsuitInfo.xgbzxr.length > 0 ? lawsuitInfo.xgbzxr.length : 0
|
||||
} else if (lawsuitInfo.data && lawsuitInfo.data[type] && Object.keys(lawsuitInfo.data[type]).length > 0) {
|
||||
const typeData = lawsuitInfo.data[type]
|
||||
count = typeData.cases && typeData.cases.length ? typeData.cases.length : 0
|
||||
}
|
||||
if (type === "sxbzxr") {
|
||||
count =
|
||||
lawsuitInfo.sxbzxr && lawsuitInfo.sxbzxr.length > 0
|
||||
? lawsuitInfo.sxbzxr.length
|
||||
: 0;
|
||||
} else if (type === "xgbzxr") {
|
||||
count =
|
||||
lawsuitInfo.xgbzxr && lawsuitInfo.xgbzxr.length > 0
|
||||
? lawsuitInfo.xgbzxr.length
|
||||
: 0;
|
||||
} else if (
|
||||
lawsuitInfo.data &&
|
||||
lawsuitInfo.data[type] &&
|
||||
Object.keys(lawsuitInfo.data[type]).length > 0
|
||||
) {
|
||||
const typeData = lawsuitInfo.data[type];
|
||||
count =
|
||||
typeData.cases && typeData.cases.length
|
||||
? typeData.cases.length
|
||||
: 0;
|
||||
}
|
||||
|
||||
if (count > 0) {
|
||||
stats.total += count
|
||||
stats.types.push({
|
||||
type,
|
||||
count,
|
||||
name: getCaseTypeText(type),
|
||||
color: getCaseTypeColor(type),
|
||||
darkColor: getCaseTypeDarkColor(type),
|
||||
})
|
||||
}
|
||||
})
|
||||
if (count > 0) {
|
||||
stats.total += count;
|
||||
stats.types.push({
|
||||
type,
|
||||
count,
|
||||
name: getCaseTypeText(type),
|
||||
color: getCaseTypeColor(type),
|
||||
darkColor: getCaseTypeDarkColor(type),
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
return stats
|
||||
}
|
||||
return stats;
|
||||
};
|
||||
|
||||
// 获取案件类型优先级顺序
|
||||
export const getCaseTypePriority = () => {
|
||||
return [
|
||||
'sxbzxr', // 失信被执行人(最高风险)
|
||||
'xgbzxr', // 限高被执行人
|
||||
'criminal', // 刑事案件
|
||||
'civil', // 民事案件
|
||||
'administrative', // 行政案件
|
||||
'implement', // 执行案件
|
||||
'bankrupt', // 强制清算与破产案件
|
||||
'preservation', // 非诉保全审查
|
||||
]
|
||||
}
|
||||
return [
|
||||
"sxbzxr", // 失信被执行人(最高风险)
|
||||
"xgbzxr", // 限高被执行人
|
||||
"criminal", // 刑事案件
|
||||
"civil", // 民事案件
|
||||
"administrative", // 行政案件
|
||||
"implement", // 执行案件
|
||||
"bankrupt", // 强制清算与破产案件
|
||||
"preservation", // 非诉保全审查
|
||||
];
|
||||
};
|
||||
|
||||
// 根据案件类型获取风险等级
|
||||
export const getCaseTypeRiskLevel = caseType => {
|
||||
const typeInfo = lawsuitTypeMap[caseType]
|
||||
if (!typeInfo) {
|
||||
return {
|
||||
level: 'low',
|
||||
text: '低风险',
|
||||
color: 'text-green-600 bg-green-50',
|
||||
export const getCaseTypeRiskLevel = (caseType) => {
|
||||
const typeInfo = lawsuitTypeMap[caseType];
|
||||
if (!typeInfo) {
|
||||
return {
|
||||
level: "low",
|
||||
text: "低风险",
|
||||
color: "text-green-600 bg-green-50",
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
const riskLevelMap = {
|
||||
high: {
|
||||
text: '高风险',
|
||||
color: 'text-red-600 bg-red-50',
|
||||
},
|
||||
medium: {
|
||||
text: '中风险',
|
||||
color: 'text-amber-600 bg-amber-50',
|
||||
},
|
||||
low: {
|
||||
text: '低风险',
|
||||
color: 'text-green-600 bg-green-50',
|
||||
},
|
||||
}
|
||||
const riskLevelMap = {
|
||||
high: {
|
||||
text: "高风险",
|
||||
color: "text-red-600 bg-red-50",
|
||||
},
|
||||
medium: {
|
||||
text: "中风险",
|
||||
color: "text-amber-600 bg-amber-50",
|
||||
},
|
||||
low: {
|
||||
text: "低风险",
|
||||
color: "text-green-600 bg-green-50",
|
||||
},
|
||||
};
|
||||
|
||||
return {
|
||||
level: typeInfo.riskLevel,
|
||||
...riskLevelMap[typeInfo.riskLevel],
|
||||
}
|
||||
}
|
||||
return {
|
||||
level: typeInfo.riskLevel,
|
||||
...riskLevelMap[typeInfo.riskLevel],
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user