This commit is contained in:
Mrx
2026-02-13 17:29:12 +08:00
parent 6c7169c206
commit ce06f3a958
13 changed files with 582 additions and 4179 deletions

View File

@@ -363,6 +363,12 @@ const featureMap = {
remark: '手机在网时长查询用于检测用户手机号码的在网使用时长。在网时长越长,通常表示用户身份越稳定,信用风险越低。需要注意的是,如果手机号码存在携号转网的情况,那么在网时长会从转网的时候重新计算,转网前的在网时长不计入当前在网时长。建议结合手机携号转网查询结果进行综合评估。'
},
IVYZ0S0D:{
name: "劳动仲裁信息查询(个人版)",
component: defineAsyncComponent(() => import("@/ui/IVYZ0S0D.vue")),
remark: '劳动仲裁信息查询(个人版)用于查询个人在劳动仲裁方面的信息,包括劳动仲裁案件数量、劳动仲裁案件类型、劳动仲裁案件结果等。',
},
// 谛听多维报告
DWBG8B4D: {
name: "谛听多维报告",
@@ -505,6 +511,8 @@ const featureRiskLevels = {
'FLXGDEA9': 15, // 公安不良人员名单(加强版)
'IVYZ81NC': 3, // 单人婚姻查询(登记时间版)
'IVYZ5733': 3, // 单人婚姻状态A
'IVYZ0S0D': 3, // 劳动仲裁信息查询(个人版)
// 📊 复合报告类 - 按子模块动态计算
'DWBG8B4D': 0, // 谛听多维报告(由子模块计算)

View File

@@ -1,238 +0,0 @@
# CQYGL3F8E 人企关系加强版模块
## 概述
CQYGL3F8E 是人企关系加强版模块,提供全面的企业关联分析功能。该模块通过拆分功能,将原本的单一组件分解为三个独立的子模块,每个子模块专注于特定类型的企业关联信息展示。
## 模块结构
### 主模块
- **文件位置**: `src/ui/CQYGL3F8E/index.vue`
- **功能**: 整合三个子模块,提供完整的人企关系分析视图
- **API ID**: `QYGL3F8E`
### 子模块
#### 1. 投资企业记录 (Investment)
- **文件位置**: `src/ui/CQYGL3F8E/components/Investment.vue`
- **API ID**: `CQYGL3F8E_Investment`
- **功能**: 展示用户作为股东、历史股东、法人、历史法人的企业记录
- **数据来源**: 过滤 `relationship` 字段包含 `["sh", "his_sh", "lp", "his_lp"]` 的企业
#### 2. 高管任职记录 (SeniorExecutive)
- **文件位置**: `src/ui/CQYGL3F8E/components/SeniorExecutive.vue`
- **API ID**: `CQYGL3F8E_SeniorExecutive`
- **功能**: 展示用户作为高管、历史高管的企业任职记录
- **数据来源**: 过滤 `relationship` 字段包含 `["tm", "his_tm"]` 的企业
#### 3. 涉诉风险 (Lawsuit)
- **文件位置**: `src/ui/CQYGL3F8E/components/Lawsuit.vue`
- **API ID**: `CQYGL3F8E_Lawsuit`
- **功能**: 展示存在涉诉风险的企业信息
- **数据来源**: 过滤 `lawsuitInfo` 字段包含有效涉诉数据的企业
#### 4. 对外投资历史 (InvestHistory)
- **文件位置**: `src/ui/CQYGL3F8E/components/InvestHistory.vue`
- **API ID**: `CQYGL3F8E_InvestHistory`
- **功能**: 展示企业的对外投资历史记录
- **数据来源**: `invest_history` 字段
#### 5. 融资历史 (FinancingHistory)
- **文件位置**: `src/ui/CQYGL3F8E/components/FinancingHistory.vue`
- **API ID**: `CQYGL3F8E_FinancingHistory`
- **功能**: 展示企业的融资历史记录
- **数据来源**: `financing_history` 字段
#### 6. 行政处罚 (Punishment)
- **文件位置**: `src/ui/CQYGL3F8E/components/Punishment.vue`
- **API ID**: `CQYGL3F8E_Punishment`
- **功能**: 展示企业的行政处罚记录
- **数据来源**: `punishment_info` 字段
#### 7. 经营异常 (Abnormal)
- **文件位置**: `src/ui/CQYGL3F8E/components/Abnormal.vue`
- **API ID**: `CQYGL3F8E_Abnormal`
- **功能**: 展示企业的经营异常记录
- **数据来源**: `abnormal_info` 字段
#### 8. 欠税公告 (OwnTax)
- **文件位置**: `src/ui/CQYGL3F8E/components/OwnTax.vue`
- **API ID**: `CQYGL3F8E_OwnTax`
- **功能**: 展示企业的欠税公告记录
- **数据来源**: `own_tax` 字段
#### 9. 税收违法 (TaxContravention)
- **文件位置**: `src/ui/CQYGL3F8E/components/TaxContravention.vue`
- **API ID**: `CQYGL3F8E_TaxContravention`
- **功能**: 展示企业的税收违法记录
- **数据来源**: `tax_contravention` 字段
## 数据拆分逻辑
### 数据源结构
```javascript
{
data: {
apiID: 'QYGL3F8E',
data: {
items: [
{
orgName: '企业名称',
relationship: ['sh', 'tm'], // 关系类型
lawsuitInfo: { ... }, // 涉诉信息
basicInfo: { ... }, // 基本信息
stockHolderItem: { ... }, // 持股信息
staffList: { ... } // 人员列表
}
]
}
}
}
```
### 拆分规则
#### 投资企业记录
- **过滤条件**: `relationship` 包含投资类关系
- **关系类型**: `["sh", "his_sh", "lp", "his_lp"]`
- **包含字段**: 完整的企业信息,包括持股详情
#### 高管任职记录
- **过滤条件**: `relationship` 包含高管类关系
- **关系类型**: `["tm", "his_tm"]`
- **包含字段**: 完整的企业信息,重点关注任职信息
#### 涉诉风险
- **过滤条件**: `lawsuitInfo` 包含有效涉诉数据
- **检查字段**:
- `lawsuitInfo.entout.data` (非空对象)
- `lawsuitInfo.sxbzxr.data.sxbzxr` (非空数组)
- `lawsuitInfo.xgbzxr.data.xgbzxr` (非空数组)
- **包含字段**: 涉诉企业和总数统计
#### 对外投资历史
- **数据来源**: `invest_history.items` 数组
- **包含字段**: 投资企业信息、持股比例、注册资本等
#### 融资历史
- **数据来源**: `financing_history.items` 数组
- **包含字段**: 融资轮次、融资金额、投资者、新闻信息等
#### 行政处罚
- **数据来源**: `punishment_info.items` 数组
- **包含字段**: 处罚类型、处罚金额、处罚原因、处罚部门等
#### 经营异常
- **数据来源**: `abnormal_info.items` 数组
- **包含字段**: 异常原因、列入/移出日期、相关部门等
#### 欠税公告
- **数据来源**: `own_tax.items` 数组
- **包含字段**: 欠税金额、税务类型、欠税税种、纳税人信息、税务机关等
#### 税收违法
- **数据来源**: `tax_contravention.items` 数组
- **包含字段**: 案件性质、违法ID、税务机关、发布时间、纳税人名称等
## 工具函数
### simpleSplitter.js
位置: `src/ui/CQYGL3F8E/utils/simpleSplitter.js`
#### 主要函数
- `splitCQYGL3F8EForTabs(reportData)`: 数据拆分主函数
- `getRelationshipText(relation)`: 获取关系文本描述
- `getRelationshipClass(relation)`: 获取关系样式类
- `getStatusClass(status)`: 获取企业状态样式类
- `formatCapital(capital, currency)`: 格式化资本金额
- `formatDate(dateStr)`: 格式化日期显示
## 集成配置
### BaseReport.vue 配置
```javascript
// 导入拆分函数
import { splitCQYGL3F8EForTabs } from '@/ui/CQYGL3F8E/utils/simpleSplitter.js';
// 数据处理
const processedReportData = computed(() => {
let data = reportData.value;
// ... 其他拆分
data = splitCQYGL3F8EForTabs(data);
return data;
});
// 功能映射
const featureMap = {
QYGL3F8E: {
name: "人企关系加强版",
component: defineAsyncComponent(() => import("@/ui/CQYGL3F8E/index.vue")),
remark: '人企关系加强版提供全面的企业关联分析,包括投资企业记录、高管任职记录和涉诉风险等多维度信息。'
},
CQYGL3F8E_Investment: {
name: "投资企业记录",
component: defineAsyncComponent(() => import("@/ui/CQYGL3F8E/components/Investment.vue")),
},
CQYGL3F8E_SeniorExecutive: {
name: "高管任职记录",
component: defineAsyncComponent(() => import("@/ui/CQYGL3F8E/components/SeniorExecutive.vue")),
},
CQYGL3F8E_Lawsuit: {
name: "涉诉风险",
component: defineAsyncComponent(() => import("@/ui/CQYGL3F8E/components/Lawsuit.vue")),
}
};
```
## 使用方式
### 完整视图
访问 `QYGL3F8E` 将显示完整的人企关系分析,包含所有九个子模块。
### 独立子模块
- 访问 `CQYGL3F8E_Investment` 仅显示投资企业记录
- 访问 `CQYGL3F8E_SeniorExecutive` 仅显示高管任职记录
- 访问 `CQYGL3F8E_Lawsuit` 仅显示涉诉风险
- 访问 `CQYGL3F8E_InvestHistory` 仅显示对外投资历史
- 访问 `CQYGL3F8E_FinancingHistory` 仅显示融资历史
- 访问 `CQYGL3F8E_Punishment` 仅显示行政处罚
- 访问 `CQYGL3F8E_Abnormal` 仅显示经营异常
- 访问 `CQYGL3F8E_OwnTax` 仅显示欠税公告
- 访问 `CQYGL3F8E_TaxContravention` 仅显示税收违法
## 特性
### 1. 数据过滤
- 基于关系类型智能过滤企业数据
- 支持多种关系类型的组合展示
### 2. 展开式详情
- 企业卡片支持点击展开查看详细信息
- 包含持股信息、基本信息、联系方式等
### 3. 状态标识
- 企业状态颜色编码(存续、注销、吊销等)
- 关系类型标签展示
### 4. 数据格式化
- 资本金额自动转换为万元单位
- 日期格式化显示
- 持股比例可视化进度条
### 5. 响应式设计
- 支持移动端和桌面端
- 自适应布局和交互
## 注意事项
1. **数据完整性**: 拆分后的数据保持原始结构的完整性
2. **性能优化**: 使用 `defineAsyncComponent` 实现组件懒加载
3. **错误处理**: 对缺失数据进行安全处理,避免渲染错误
4. **样式一致性**: 保持与整体设计系统的视觉一致性
## 更新历史
- **v1.0.0**: 初始版本,支持基本的企业关联信息展示
- **v2.0.0**: 模块拆分重构,支持独立子模块访问
- **v2.1.0**: 优化数据处理逻辑,增强错误处理能力
- **v2.2.0**: 新增欠税公告和税收违法模块,完善企业风险分析功能

View File

@@ -1,222 +0,0 @@
{
"items": [
{
"orgName": "海南海宇大数据有限公司",
"relationship": ["sh", "lp"],
"basicInfo": {
"regStatus": "1:在营(开业)",
"creditCode": "91460108MADNY3F43W",
"regNumber": "460108011261916",
"entType": "1130:有限责任公司(自然人投资或控股)",
"industry": "租赁和商务服务业-商务服务业-会议、展览及相关服务-科技会展服务",
"regCapital": "100.000000",
"regCapitalCurrency": "万人民币",
"estiblishTime": "2024-06-20",
"regInstitute": "海南省市场监督管理局",
"approvedTime": "2024-06-20",
"legalPersonName": "刘福思",
"phone": "13800138000",
"email": "contact@example.com",
"website": "https://www.example.com",
"regAddress": "海南省海口市龙华区"
},
"stockHolderItem": {
"orgHolderName": "张三",
"orgHolderType": "自然人",
"subscriptAmt": "40.000000",
"investRate": "40.0",
"investDate": "2024-06-20"
},
"staffList": {
"result": [
{
"typeJoin": ["执行董事", "总经理"]
}
]
},
"lawsuitInfo": {
"entout": {
"msg": "成功",
"data": {
"civil": {
"cases": [
{
"c_ah": "2022京0105民初****号",
"n_ajjzjd": "已结案",
"d_larq": "2022-03-15",
"d_jarq": "2022-06-20",
"n_jbfy": "北京市朝阳区人民法院",
"c_ssdy": "北京市",
"n_ajlx": "民事一审",
"n_laay_tree": "合同纠纷",
"n_laay": "合同纠纷",
"c_dsrxx": [
{
"n_ssdw": "原告",
"c_mc": "海南海宇大数据有限公司",
"n_dsrlx": "企业组织"
},
{
"n_ssdw": "被告",
"c_mc": "某供应商",
"n_dsrlx": "企业组织"
}
],
"n_jafs": "判决",
"n_jaay_tree": "合同纠纷",
"c_gkws_dsr": "原告海南海宇大数据有限公司...",
"c_gkws_pjjg": "一、被告于本判决生效之日起十日内...",
"next": {
"c_ah": "2022京01民终****号",
"stage_type": 2
}
}
]
},
"criminal": {},
"administrative": {},
"preservation": {},
"implement": {
"cases": [
{
"c_ah": "2016冀1025执887号",
"n_ajjzjd": "已结案",
"d_larq": "2016-06-14",
"d_jarq": "2016-06-28",
"n_jbfy": "大城县人民法院",
"c_ssdy": "河北省",
"n_ajlx": "首次执行",
"n_laay": "罚金",
"c_dsrxx": [
{
"n_ssdw": "被执行人",
"c_mc": "王杰",
"n_dsrlx": "自然人"
}
],
"n_jafs": "终结执行",
"c_gkws_dsr": "被执行人王杰,男,1998年生...",
"c_gkws_pjjg": "终结本院(2014)大少刑初字第14号..."
}
]
},
"bankrupt": {}
},
"count": {
"count_total": 1,
"count_wei_total": 0,
"count_jie_total": 1
},
"crc": "2835980316",
"cases_tree": {}
},
"sxbzxr": {
"msg": "成功",
"data": {
"sxbzxr": [
{
"ah": "2022京0105执****号",
"larq": "2022-09-15",
"fbrq": "2022-09-20",
"zxfy": "北京市朝阳区人民法院",
"sf": "北京市",
"qyfr": "张某",
"zzjgdm": "91110108MA0******",
"zxyjwh": "2022京0105民初****号",
"zxyjdw": "北京市朝阳区人民法院",
"yw": "向申请人支付服务费350000元及违约金",
"lxqk": "全部未履行",
"xwqx": "有履行能力而拒不履行生效法律文书确定义务",
"pjje_gj": 350000
}
]
}
},
"xgbzxr": {
"msg": "成功",
"data": {
"xgbzxr": [
{
"ah": "2022京0105执****号",
"fbrq": "2022-10-01",
"zxfy": "北京市朝阳区人民法院",
"id": "BJ0105XG202200****"
}
]
}
}
},
"invest_history": {
"items": [
{
"companyName": "被投资企业A",
"investAmount": "100.00",
"investRate": "20.0",
"investDate": "2023-01-15"
}
],
"total": 1
},
"financing_history": {
"items": [
{
"round": "A轮",
"amount": "1000.00",
"currency": "万元",
"date": "2023-06-01",
"investors": ["投资机构A", "投资机构B"]
}
],
"total": 1
},
"punishment_info": {
"items": [
{
"punishType": "行政处罚",
"punishAmount": "10.00",
"punishReason": "违反相关规定",
"punishDepartment": "市场监督管理局",
"punishDate": "2023-03-15"
}
],
"total": 1
},
"abnormal_info": {
"items": [
{
"abnormalReason": "通过登记的住所或者经营场所无法联系",
"addDate": "2023-05-10",
"removeDate": "2023-06-10",
"department": "市场监督管理局"
}
],
"total": 1
},
"own_tax": {
"items": [
{
"taxAmount": "125.80",
"taxType": "增值税",
"taxpayerName": "海南海宇大数据有限公司",
"taxDepartment": "海口市税务局",
"publishDate": "2023-08-15"
}
],
"total": 1
},
"tax_contravention": {
"items": [
{
"caseNature": "税收违法",
"caseId": "TAX2023001",
"taxDepartment": "海口市税务局",
"publishDate": "2023-09-01",
"taxpayerName": "海南海宇大数据有限公司"
}
],
"total": 1
}
}
],
"total": 1
}

View File

@@ -1,462 +0,0 @@
{
"items": [
{
"orgName": "海南海宇大数据有限公司",
"relationship": [
"sh",
"lp"
],
"basicInfo": {
"regStatus": "1:在营(开业)",
"creditCode": "91460108MADNY3F43W",
"regNumber": "460108011261916",
"entType": "1130:有限责任公司(自然人投资或控股)",
"industry": "租赁和商务服务业-商务服务业-会议、展览及相关服务-科技会展服务",
"regCapital": "100.000000",
"regCapitalCurrency": "万人民币",
"estiblishTime": "2024-06-20",
"regInstitute": "海南省市场监督管理局",
"approvedTime": "2024-06-20",
"legalPersonName": "刘福思",
"phone": "13800138000",
"email": "contact@example.com",
"website": "https://www.example.com",
"regAddress": "海南省海口市龙华区"
},
"stockHolderItem": {
"orgHolderName": "张三",
"orgHolderType": "自然人",
"subscriptAmt": "40.000000",
"investRate": "40.0",
"investDate": "2024-06-20"
},
"staffList": {},
"lawsuitInfo": {
"entout": {
"msg": "成功",
"data": {
"civil": {
"cases": [
{
"c_ah": "2022京0105民初****号",
"n_ajjzjd": "已结案",
"d_larq": "2022-03-15",
"d_jarq": "2022-06-20",
"n_jbfy": "北京市朝阳区人民法院",
"c_ssdy": "北京市",
"n_ajlx": "民事一审",
"n_laay_tree": "合同纠纷",
"n_laay": "合同纠纷",
"c_dsrxx": [
{
"n_ssdw": "原告",
"c_mc": "海南海宇大数据有限公司",
"n_dsrlx": "企业组织"
},
{
"n_ssdw": "被告",
"c_mc": "某供应商",
"n_dsrlx": "企业组织"
}
],
"n_jafs": "判决",
"n_jaay_tree": "合同纠纷",
"c_gkws_dsr": "原告海南海宇大数据有限公司...",
"c_gkws_pjjg": "一、被告于本判决生效之日起十日内...",
"n_jabdje": 350000,
"n_qsbdje": 350000,
"n_jabdje_gj": 350000,
"n_qsbdje_gj": 350000,
"n_jabdje_level": 3,
"n_qsbdje_level": 3,
"n_jabdje_gj_level": 3,
"n_qsbdje_gj_level": 3,
"n_crc": 0,
"n_ssdw": "原告",
"n_ssdw_ys": "原告",
"n_slcx": "一审",
"n_jaay": "合同纠纷",
"n_laay_tag": "合同",
"n_jaay_tag": "合同",
"n_pj_victory": "胜诉",
"n_jbfy_cj": "基层法院",
"c_gkws_glah": "",
"c_ah_hx": "",
"c_slfsxx": "普通程序",
"c_ah_ys": "",
"c_gkws_id": "ws123456",
"c_id": "case123456",
"n_ajbs": "20220101001"
}
],
"count": {
"count_total": 1,
"count_wei_total": 0,
"count_jie_total": 1,
"money_total": 350000,
"money_jie_total": 350000,
"money_wei_total": 0,
"count_yuangao": 1,
"count_jie_yuangao": 1,
"count_wei_yuangao": 0,
"money_yuangao": 350000,
"money_jie_yuangao": 350000,
"money_wei_yuangao": 0,
"count_beigao": 1,
"count_jie_beigao": 1,
"count_wei_beigao": 0,
"money_beigao": 0,
"money_jie_beigao": 0,
"money_wei_beigao": 0,
"count_other": 0,
"count_jie_other": 0,
"count_wei_other": 0,
"money_other": 0,
"money_jie_other": 0,
"money_wei_other": 0,
"money_wei_percent": 0,
"area_stat": "北京市:1",
"ay_stat": "合同纠纷:1",
"jafs_stat": "判决:1",
"larq_stat": "2022:1"
}
},
"criminal": {
"cases": [],
"count": {
"money_wei_beigao": 0,
"count_wei_other": 0,
"count_jie_yuangao": 0,
"larq_stat": "",
"money_wei_yuangao": 0,
"count_wei_total": 0,
"count_other": 0,
"money_yuangao": 0,
"jafs_stat": "",
"count_total": 0,
"money_wei_total": 0,
"count_jie_beigao": 0,
"money_jie_other": 0,
"money_total": 0,
"count_wei_yuangao": 0,
"money_beigao": 0,
"ay_stat": "",
"count_jie_other": 0,
"count_yuangao": 0,
"money_jie_beigao": 0,
"money_jie_yuangao": 0,
"count_jie_total": 0,
"count_wei_beigao": 0,
"area_stat": "",
"money_wei_percent": 0,
"money_jie_total": 0,
"count_beigao": 0,
"money_other": 0,
"money_wei_other": 0
}
},
"administrative": {
"cases": [],
"count": {
"jafs_stat": "",
"larq_stat": "",
"count_jie_yuangao": 0,
"count_wei_other": 0,
"money_wei_other": 0,
"money_other": 0,
"count_other": 0,
"money_wei_beigao": 0,
"count_wei_total": 0,
"money_wei_yuangao": 0,
"count_total": 0,
"count_jie_beigao": 0,
"money_yuangao": 0,
"money_wei_total": 0,
"area_stat": "",
"count_wei_yuangao": 0,
"money_total": 0,
"ay_stat": "",
"money_beigao": 0,
"count_yuangao": 0,
"money_jie_other": 0,
"count_jie_other": 0,
"money_jie_beigao": 0,
"count_jie_total": 0,
"count_wei_beigao": 0,
"money_jie_yuangao": 0,
"money_wei_percent": 0,
"money_jie_total": 0,
"count_beigao": 0
}
},
"preservation": {
"cases": [],
"count": {
"money_jie_total": 0,
"count_jie_total": 0,
"count_beigao": 0,
"money_wei_yuangao": 0,
"area_stat": "",
"count_wei_other": 0,
"money_jie_other": 0,
"money_yuangao": 0,
"count_jie_yuangao": 0,
"ay_stat": "",
"count_wei_total": 0,
"money_beigao": 0,
"count_other": 0,
"money_wei_total": 0,
"money_jie_beigao": 0,
"count_jie_beigao": 0,
"count_total": 0,
"jafs_stat": "",
"count_wei_yuangao": 0,
"money_total": 0,
"money_jie_yuangao": 0,
"count_jie_other": 0,
"money_wei_other": 0,
"larq_stat": "",
"money_other": 0,
"count_yuangao": 0,
"money_wei_percent": 0,
"money_wei_beigao": 0,
"count_wei_beigao": 0
}
},
"implement": {
"cases": [
{
"c_ah": "2016冀1025执887号",
"n_ajjzjd": "已结案",
"d_larq": "2016-06-14",
"d_jarq": "2016-06-28",
"n_jbfy": "大城县人民法院",
"c_ssdy": "河北省",
"n_ajlx": "首次执行",
"n_laay": "罚金",
"c_dsrxx": [
{
"n_ssdw": "被执行人",
"c_mc": "王杰",
"n_dsrlx": "自然人"
}
],
"n_jafs": "终结执行",
"c_gkws_dsr": "被执行人王杰,男,1998年生...",
"c_gkws_pjjg": "终结本院(2014)大少刑初字第14号...",
"n_jabdje": 0,
"n_sqzxbdje": 0,
"n_sjdwje": 0,
"n_wzxje": 0,
"n_crc": 0,
"c_ah_ys": "",
"c_ah_hx": "",
"c_gkws_id": "",
"c_id": "case2016001",
"n_ajbs": "2016001001",
"n_jbfy_cj": "基层法院"
}
],
"count": {
"money_wei_yuangao": 0,
"area_stat": "河北省:1",
"count_wei_total": 0,
"ay_stat": "罚金:1",
"count_jie_beigao": 0,
"money_yuangao": 0,
"count_total": 1,
"money_jie_other": 0,
"money_wei_total": 0,
"money_total": 0,
"count_wei_yuangao": 0,
"money_beigao": 0,
"count_jie_other": 0,
"money_jie_beigao": 0,
"jafs_stat": "终结执行:1",
"count_wei_beigao": 0,
"count_yuangao": 0,
"money_jie_yuangao": 0,
"larq_stat": "2016:1",
"count_jie_total": 1,
"count_beigao": 0,
"money_wei_percent": 0,
"money_wei_other": 0,
"money_jie_total": 0,
"money_other": 0,
"count_wei_other": 0,
"count_jie_yuangao": 0,
"money_wei_beigao": 0,
"count_other": 0
}
},
"bankrupt": {
"cases": [],
"count": {
"count_jie_other": 0,
"count_jie_total": 0,
"jafs_stat": "",
"count_wei_beigao": 0,
"count_beigao": 0,
"larq_stat": "",
"count_jie_yuangao": 0,
"count_wei_other": 0,
"count_wei_total": 0,
"count_total": 0,
"count_other": 0,
"area_stat": "",
"count_jie_beigao": 0,
"count_wei_yuangao": 0,
"ay_stat": "",
"count_yuangao": 0
}
},
"crc": 2835980316,
"count": {
"count_total": 2,
"count_wei_total": 0,
"count_jie_total": 2,
"money_total": 350000,
"money_jie_total": 350000,
"money_wei_total": 0,
"count_yuangao": 1,
"count_jie_yuangao": 1,
"count_wei_yuangao": 0,
"money_yuangao": 350000,
"money_jie_yuangao": 350000,
"money_wei_yuangao": 0,
"count_beigao": 1,
"count_jie_beigao": 1,
"count_wei_beigao": 0,
"money_beigao": 0,
"money_jie_beigao": 0,
"money_wei_beigao": 0,
"count_other": 0,
"count_jie_other": 0,
"count_wei_other": 0,
"money_other": 0,
"money_jie_other": 0,
"money_wei_other": 0,
"money_wei_percent": 0,
"area_stat": "北京市:1,河北省:1",
"ay_stat": "合同纠纷:1,罚金:1",
"jafs_stat": "判决:1,终结执行:1",
"larq_stat": "2022:1,2016:1"
},
"cases_tree": {
"administrative": [],
"criminal": [],
"civil": [
{
"n_ajbs": "20220101001",
"case_type": 1,
"stage_type": 1,
"c_ah": "2022京0105民初****号",
"next": {
"c_ah": "2022京01民终****号",
"stage_type": 2,
"case_type": 1,
"n_ajbs": "20220101002"
}
}
]
}
}
},
"sxbzxr": {
"msg": "成功",
"data": {
"sxbzxr": [
{
"ah": "2022京0105执****号",
"larq": "2022-09-15",
"fbrq": "2022-09-20",
"zxfy": "北京市朝阳区人民法院",
"sf": "北京市",
"qyfr": "张某",
"zzjgdm": "91110108MA0******",
"zxyjwh": "2022京0105民初****号",
"zxyjdw": "北京市朝阳区人民法院",
"yw": "向申请人支付服务费350000元及违约金",
"lxqk": "全部未履行",
"xwqx": "有履行能力而拒不履行生效法律文书确定义务",
"pjje_gj": 350000,
"id": "dishonest2022001"
}
]
}
},
"xgbzxr": {
"msg": "成功",
"data": {
"xgbzxr": [
{
"ah": "2022京0105执****号",
"fbrq": "2022-10-01",
"zxfy": "北京市朝阳区人民法院",
"id": "BJ0105XG202200****"
}
]
}
}
},
"invest_history": {},
"financing_history": {},
"punishment_info": {},
"abnormal_info": {},
"own_tax": {},
"tax_contravention": {}
},
{
"orgName": "北京某某科技有限公司",
"relationship": [
"tm"
],
"basicInfo": {
"regStatus": "1:在营(开业)",
"creditCode": "91110000MA01234567",
"regNumber": "110000012345678",
"entType": "1130:有限责任公司(自然人投资或控股)",
"industry": "信息传输、软件和信息技术服务业",
"regCapital": "500.000000",
"regCapitalCurrency": "万人民币",
"estiblishTime": "2020-01-15",
"regInstitute": "北京市市场监督管理局",
"approvedTime": "2020-01-15",
"legalPersonName": "李四",
"phone": "",
"email": "",
"website": "",
"regAddress": "北京市海淀区"
},
"stockHolderItem": {},
"staffList": {
"result": [
{
"typeJoin": [
"执行董事",
"总经理"
]
}
]
},
"lawsuitInfo": {
"entout": {
"msg": "没有找到"
},
"sxbzxr": {
"msg": "没有找到"
},
"xgbzxr": {
"msg": "没有找到"
}
},
"invest_history": {},
"financing_history": {},
"punishment_info": {},
"abnormal_info": {},
"own_tax": {},
"tax_contravention": {}
}
],
"total": 2
}

481
src/ui/IVYZ0S0D.vue Normal file
View File

@@ -0,0 +1,481 @@
<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>