commit 49e6f336a0fd3a70a830e069208a6047fea4e4f1
Author: Mrx <18278715334@163.com>
Date: Fri Jan 30 15:58:54 2026 +0800
first commit
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8ee54e8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,30 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+.DS_Store
+dist
+dist-ssr
+coverage
+*.local
+
+/cypress/videos/
+/cypress/screenshots/
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
+
+*.tsbuildinfo
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
new file mode 100644
index 0000000..a7cea0b
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,3 @@
+{
+ "recommendations": ["Vue.volar"]
+}
diff --git a/example.json b/example.json
new file mode 100644
index 0000000..ada2adc
--- /dev/null
+++ b/example.json
@@ -0,0 +1,5007 @@
+{
+ "apiID": "QYGL3F8E",
+ "data": {
+ "items": [
+ {
+ "abnormal_info": {
+ "items": [
+ {
+ "putDate": "2022-12-01",
+ "putDepartment": "北京市朝阳区市场监督管理局",
+ "putReason": "未依照《企业信息公示暂行条例》第八条规定的期限公示年度报告的",
+ "removeDate": "2023-08-15",
+ "removeDepartment": "北京市朝阳区市场监督管理局",
+ "removeReason": "已补报年度报告"
+ },
+ {
+ "putDate": "2022-05-20",
+ "putDepartment": "北京市朝阳区市场监督管理局",
+ "putReason": "通过登记的住所或者经营场所无法联系的",
+ "removeDate": "",
+ "removeDepartment": "",
+ "removeReason": ""
+ },
+ {
+ "putDate": "2022-03-15",
+ "putDepartment": "北京市朝阳区市场监督管理局",
+ "putReason": "未按规定期限公示即时信息的",
+ "removeDate": "2022-11-30",
+ "removeDepartment": "北京市朝阳区市场监督管理局",
+ "removeReason": "已完成信息公示"
+ }
+ ],
+ "total": 3
+ },
+ "adminPenalty": [],
+ "basicInfo": {
+ "apprdate": "2020-05-15",
+ "base": "bj",
+ "candate": "",
+ "city": "北京市",
+ "companyOrgType": "有限责任公司(自然人投资或控股)",
+ "creditCode": "91110108MA01******",
+ "district": "海淀区",
+ "estiblishTime": "2018-03-12",
+ "industry": "科技推广和应用服务业",
+ "industry_code": "M",
+ "legalPersonName": "张某",
+ "name": "北京****科技有限公司",
+ "nic_code": "M7510",
+ "nic_name": "科技推广和应用服务业-科技推广和应用服务业-技术推广服务-技术推广服务",
+ "opscope": "技术开发、技术推广、技术转让、技术咨询、技术服务;软件开发;计算机系统服务;数据处理;基础软件服务;应用软件服务;计算机维修;销售计算机、软件及辅助设备、电子产品、机械设备、通讯设备;货物进出口;技术进出口;代理进出口。",
+ "province": "北京市",
+ "reccap": 0,
+ "reccapcur": "人民币",
+ "regCapital": "500.000000万人民币",
+ "regCapitalCurrency": "人民币",
+ "regNumber": "11010801******",
+ "regStatus": "存续",
+ "regorg": "北京市海淀区市场监督管理局",
+ "revdate": "2020-05-15",
+ "staffList": {
+ "result": [
+ {
+ "name": "张某",
+ "type": "2",
+ "typeJoin": [
+ "执行董事"
+ ]
+ }
+ ]
+ },
+ "type": "1"
+ },
+ "dishonestExecutedPerson": [],
+ "executedPerson": [],
+ "financing_history": {
+ "items": [
+ {
+ "companyName": "北京创新科技有限公司",
+ "date": null,
+ "investorName": "红杉资本中国,IDG资本",
+ "money": "5000万人民币",
+ "newsTitle": "北京创新科技完成5000万元B轮融资",
+ "newsUrl": "https://example.com/news1",
+ "pubTime": 1672531200000,
+ "round": "B轮",
+ "share": "15%",
+ "value": "3.3亿人民币"
+ },
+ {
+ "companyName": "北京创新科技有限公司",
+ "date": null,
+ "investorName": "经纬中国,真格基金",
+ "money": "2000万人民币",
+ "newsTitle": "北京创新科技获得2000万元A轮融资",
+ "newsUrl": "https://example.com/news2",
+ "pubTime": 1640995200000,
+ "round": "A轮",
+ "share": "20%",
+ "value": "1亿人民币"
+ },
+ {
+ "companyName": "北京创新科技有限公司",
+ "date": null,
+ "investorName": "创新工场",
+ "money": "500万人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1609459200000,
+ "round": "Pre-A轮",
+ "share": "10%",
+ "value": "5000万人民币"
+ },
+ {
+ "companyName": "北京创新科技有限公司",
+ "date": null,
+ "investorName": "梅花创投",
+ "money": "200万人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1577836800000,
+ "round": "天使轮",
+ "share": "8%",
+ "value": "2500万人民币"
+ }
+ ],
+ "total": 4
+ },
+ "fsource": "1",
+ "invest_history": {
+ "items": [
+ {
+ "alias": "智慧数据",
+ "amount": null,
+ "base": "bj",
+ "business_scope": "技术开发;技术推广;技术转让;技术咨询;技术服务;计算机系统服务;基础软件服务;应用软件服务;软件开发;软件咨询;模型设计;包装装潢设计;教育咨询(中介服务除外);经济贸易咨询;文化咨询;体育咨询;公共关系服务;会议服务;工艺美术设计;电脑动画设计;项目投资;投资管理;资产管理;企业策划、设计;设计、制作、代理、发布广告;市场调查;企业管理咨询;组织文化艺术交流活动(不含营业性演出);文艺创作;承办展览展示活动;会议服务;影视策划;翻译服务。",
+ "category": "软件和信息技术服务业",
+ "creditCode": "91110105MA01A2B3C4",
+ "estiblishTime": 1640995200000,
+ "id": 35678901,
+ "legalPersonId": 2156789012,
+ "legalPersonName": "李明",
+ "logo": "https://img5.tianyancha.com/logo/lll/example1.png@!f_200x200",
+ "name": "北京智慧数据科技有限公司",
+ "orgType": "有限责任公司(自然人投资或控股)",
+ "pencertileScore": 7856,
+ "percent": "60%",
+ "personType": 1,
+ "regCapital": "2000万人民币",
+ "regStatus": "存续",
+ "withdrawalTime": null
+ },
+ {
+ "alias": "AI研究院",
+ "amount": null,
+ "base": "bj",
+ "business_scope": "人工智能应用软件开发;人工智能理论与算法软件开发;人工智能基础软件开发;人工智能基础资源与技术平台;软件开发;技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广;信息系统集成服务;信息技术咨询服务;数据处理和存储支持服务;互联网数据服务;云计算装备技术服务;网络技术服务;计算机系统服务;数字文化创意软件开发。",
+ "category": "科学研究和技术服务业",
+ "creditCode": "91110108MA01B3C4D5",
+ "estiblishTime": 1672531200000,
+ "id": 36789012,
+ "legalPersonId": 2167890123,
+ "legalPersonName": "王芳",
+ "logo": "https://img5.tianyancha.com/logo/lll/example2.png@!f_200x200",
+ "name": "北京人工智能研究院有限公司",
+ "orgType": "有限责任公司(自然人投资或控股)",
+ "pencertileScore": 6234,
+ "percent": "45%",
+ "personType": 1,
+ "regCapital": "1500万人民币",
+ "regStatus": "存续",
+ "withdrawalTime": null
+ }
+ ],
+ "total": 5
+ },
+ "lawsuitInfo": {
+ "entout": {
+ "data": {
+ "administrative": {
+ "cases": [
+ {
+ "c_ah": "(2023)京01行初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "北京****科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "原告"
+ },
+ {
+ "c_mc": "北京市****区市场监督管理局",
+ "n_dsrlx": "机关团体",
+ "n_ssdw": "被告"
+ }
+ ],
+ "c_gkws_dsr": "原告北京****科技有限公司,住所地北京市海淀区****路x号。法定代表人张某,执行董事兼总经理。委托代理人吴某,北京****律师事务所律师。被告北京市****区市场监督管理局,住所地北京市****区政府大楼。负责人陈某,局长。委托代理人刘某,该局工作人员。",
+ "c_gkws_pjjg": "驳回原告北京****科技有限公司的诉讼请求。案件受理费50元,由原告北京****科技有限公司负担。如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于北京市高级人民法院。",
+ "c_id": "g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3",
+ "c_ssdy": "北京市",
+ "d_jarq": "2023-11-15",
+ "d_larq": "2023-09-10",
+ "n_ajbs": "f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "行政一审",
+ "n_crc": 5678901234,
+ "n_jaay": "行政管理",
+ "n_jaay_tree": "行政管理,工商行政管理,市场监督管理",
+ "n_jafs": "判决",
+ "n_jbfy": "北京市****人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "行政管理",
+ "n_pj_victory": "败诉",
+ "n_slcx": "一审",
+ "n_ssdw": "原告"
+ }
+ ],
+ "count": {
+ "area_stat": "北京市(1)",
+ "ay_stat": "行政管理(1)",
+ "count_beigao": 0,
+ "count_jie_beigao": 0,
+ "count_jie_total": 1,
+ "count_total": 1,
+ "jafs_stat": "判决(1)",
+ "larq_stat": "2023(1)"
+ }
+ },
+ "bankrupt": {
+ "cases": [
+ {
+ "c_ah": "(2023)京01破申****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "北京****投资有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "申请人"
+ },
+ {
+ "c_mc": "北京****科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被申请人"
+ }
+ ],
+ "c_gkws_dsr": "申请人北京****投资有限公司,住所地北京市朝阳区****路x号。法定代表人黄某,董事长。委托代理人赵某,北京****律师事务所律师。被申请人北京****科技有限公司,住所地北京市海淀区****路x号。法定代表人张某,执行董事兼总经理。",
+ "c_gkws_pjjg": "驳回申请人北京****投资有限公司对被申请人北京****科技有限公司的破产清算申请。申请费5000元,由申请人北京****投资有限公司负担。",
+ "c_id": "h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4",
+ "c_ssdy": "北京市",
+ "d_jarq": "2023-12-05",
+ "d_larq": "2023-10-25",
+ "n_ajbs": "g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "破产清算",
+ "n_crc": 6789012345,
+ "n_jaay": "破产案件",
+ "n_jaay_tree": "破产案件,破产清算",
+ "n_jafs": "裁定",
+ "n_jbfy": "北京市****人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "破产案件",
+ "n_pj_victory": "胜诉",
+ "n_slcx": "破产",
+ "n_ssdw": "被申请人"
+ }
+ ],
+ "count": {
+ "area_stat": "北京市(1)",
+ "ay_stat": "破产案件(1)",
+ "count_beigao": 1,
+ "count_jie_beigao": 1,
+ "count_jie_total": 1,
+ "count_total": 1,
+ "jafs_stat": "裁定(1)",
+ "larq_stat": "2023(1)"
+ }
+ },
+ "cases_tree": {
+ "administrative": [
+ {
+ "c_ah": "(2023)京01行初****号",
+ "case_type": 400,
+ "n_ajbs": "f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2",
+ "stage_type": 1
+ }
+ ],
+ "bankrupt": [
+ {
+ "c_ah": "(2023)京01破申****号",
+ "case_type": 600,
+ "n_ajbs": "g8h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3",
+ "stage_type": 1
+ }
+ ],
+ "civil": [
+ {
+ "c_ah": "(2023)京01民初****号",
+ "case_type": 300,
+ "n_ajbs": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
+ "stage_type": 1
+ }
+ ],
+ "criminal": [],
+ "implement": [
+ {
+ "c_ah": "(2023)京01执****号",
+ "case_type": 500,
+ "n_ajbs": "h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4",
+ "stage_type": 1
+ }
+ ],
+ "preservation": [
+ {
+ "c_ah": "(2023)京01财保****号",
+ "case_type": 700,
+ "n_ajbs": "i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5",
+ "stage_type": 1
+ }
+ ]
+ },
+ "civil": {
+ "cases": [
+ {
+ "c_ah": "(2023)京01民初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "北京****科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被告"
+ },
+ {
+ "c_mc": "刘某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "原告"
+ }
+ ],
+ "c_gkws_dsr": "原告刘某,男,1985年3月15日生,汉族,住北京市朝阳区****小区x号楼x单元x号。委托代理人李某,北京****律师事务所律师。被告北京****科技有限公司,住所地北京市海淀区****路x号。法定代表人张某,执行董事兼总经理。委托代理人王某,北京****律师事务所律师。",
+ "c_gkws_pjjg": "一、被告北京****科技有限公司于本判决生效之日起十日内向原告刘某支付服务费300000元及违约金50000元;二、驳回原告刘某的其他诉讼请求。如果未按本判决指定的期间履行给付金钱义务,应当依照《中华人民共和国民事诉讼法》第二百六十条规定,加倍支付迟延履行期间的债务利息。案件受理费8800元,由原告刘某负担3300元,被告北京****科技有限公司负担5500元。如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于北京市高级人民法院。",
+ "c_id": "b1c2d3e4f5g6h7i8j9k0l1m2n3o4p5q6",
+ "c_ssdy": "北京市",
+ "d_jarq": "2023-12-15",
+ "d_larq": "2023-10-20",
+ "n_ajbs": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "民事一审",
+ "n_crc": 1234567890,
+ "n_jaay": "合同、准合同纠纷",
+ "n_jaay_tree": "合同、准合同纠纷,合同纠纷,服务合同纠纷",
+ "n_jafs": "判决",
+ "n_jbfy": "北京市****人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "合同、准合同纠纷",
+ "n_pj_victory": "部分胜诉",
+ "n_qsbdje": 500000,
+ "n_qsbdje_level": 19,
+ "n_slcx": "一审",
+ "n_ssdw": "被告"
+ }
+ ],
+ "count": {
+ "area_stat": "北京市(1)",
+ "ay_stat": "合同、准合同纠纷(1)",
+ "count_beigao": 1,
+ "count_jie_beigao": 1,
+ "count_jie_total": 1,
+ "count_total": 1,
+ "jafs_stat": "判决(1)",
+ "larq_stat": "2023(1)",
+ "money_beigao": 1,
+ "money_jie_beigao": 1,
+ "money_jie_total": 1,
+ "money_total": 1
+ }
+ },
+ "count": {
+ "area_stat": "北京市(5)",
+ "ay_stat": "合同、准合同纠纷(1),行政管理(1),破产案件(1),执行案件(1),财产保全(1)",
+ "count_beigao": 3,
+ "count_jie_beigao": 3,
+ "count_jie_total": 5,
+ "count_total": 5,
+ "jafs_stat": "判决(2),裁定(2),执行(1)",
+ "larq_stat": "2023(5)",
+ "money_beigao": 1,
+ "money_jie_beigao": 1,
+ "money_jie_total": 1,
+ "money_total": 1
+ },
+ "crc": 1234567890,
+ "criminal": {
+ "cases": [],
+ "count": {
+ "area_stat": "北京市(0)",
+ "count_total": 0
+ }
+ },
+ "implement": {
+ "cases": [
+ {
+ "c_ah": "(2023)京01执****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "孙某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "申请执行人"
+ },
+ {
+ "c_mc": "北京****科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被执行人"
+ }
+ ],
+ "c_gkws_dsr": "申请执行人孙某,男,1978年7月20日生,汉族,住北京市西城区****小区x号楼x号。委托代理人赵某,北京****律师事务所律师。被执行人北京****科技有限公司,住所地北京市海淀区****路x号。法定代表人张某,执行董事兼总经理。",
+ "c_gkws_pjjg": "一、被执行人北京****科技有限公司应向申请执行人孙某支付劳动报酬80000元;二、被执行人北京****科技有限公司应向申请执行人孙某支付迟延履行期间的债务利息;三、申请执行人孙某的其他申请执行请求不予支持。",
+ "c_id": "i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5",
+ "c_ssdy": "北京市",
+ "d_jarq": "2024-01-10",
+ "d_larq": "2023-11-20",
+ "n_ajbs": "h9i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "执行案件",
+ "n_crc": 7890123456,
+ "n_jaay": "执行案件",
+ "n_jaay_tree": "执行案件,执行实施类",
+ "n_jafs": "执行",
+ "n_jbfy": "北京市****人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "执行案件",
+ "n_slcx": "执行",
+ "n_ssdw": "被执行人"
+ }
+ ],
+ "count": {
+ "area_stat": "北京市(1)",
+ "count_total": 1
+ }
+ },
+ "preservation": {
+ "cases": [
+ {
+ "c_ah": "(2023)京01财保****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "周某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "申请人"
+ },
+ {
+ "c_mc": "北京****科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被申请人"
+ }
+ ],
+ "c_gkws_dsr": "申请人周某,男,1980年5月10日生,汉族,住北京市朝阳区****小区x号楼x号。委托代理人吴某,北京****律师事务所律师。被申请人北京****科技有限公司,住所地北京市海淀区****路x号。法定代表人张某,执行董事兼总经理。",
+ "c_gkws_pjjg": "查封被申请人北京****科技有限公司名下位于北京市海淀区****路x号x栋x号的房产一处(房产证号:京****),查封期限为三年。",
+ "c_id": "j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6",
+ "c_ssdy": "北京市",
+ "d_jarq": "2023-11-30",
+ "d_larq": "2023-11-10",
+ "n_ajbs": "i0j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "财产保全",
+ "n_crc": 8901234567,
+ "n_jaay": "财产保全",
+ "n_jaay_tree": "财产保全,诉前财产保全",
+ "n_jafs": "裁定",
+ "n_jbfy": "北京市****人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "财产保全",
+ "n_slcx": "保全",
+ "n_ssdw": "被申请人"
+ }
+ ],
+ "count": {
+ "area_stat": "北京市(1)",
+ "count_total": 1
+ }
+ }
+ }
+ },
+ "sxbzxr": {
+ "data": {
+ "sxbzxr": [
+ {
+ "ah": "(2022)京0105执****号",
+ "fbrq": "2022-09-20",
+ "larq": "2022-09-15",
+ "lxqk": "全部未履行",
+ "pjje_gj": 350000,
+ "qyfr": "张某",
+ "sf": "北京市",
+ "xwqx": "有履行能力而拒不履行生效法律文书确定义务",
+ "yw": "向申请人支付服务费350000元及违约金",
+ "zxfy": "北京市朝阳区人民法院",
+ "zxyjdw": "北京市朝阳区人民法院",
+ "zxyjwh": "(2022)京0105民初****号",
+ "zzjgdm": "91110108MA0******"
+ },
+ {
+ "ah": "(2023)京0108执****号",
+ "fbrq": "2023-04-25",
+ "larq": "2023-04-10",
+ "lxqk": "部分未履行",
+ "pjje_gj": 250000,
+ "qyfr": "张某",
+ "sf": "北京市",
+ "xwqx": "被执行人无正当理由拒不履行执行和解协议",
+ "yw": "向申请人支付货款450000元及利息",
+ "zxfy": "北京市海淀区人民法院",
+ "zxyjdw": "北京市海淀区人民法院",
+ "zxyjwh": "(2023)京0108民初****号",
+ "zzjgdm": "91110108MA0******"
+ }
+ ]
+ }
+ },
+ "xgbzxr": {
+ "data": {
+ "xgbzxr": [
+ {
+ "ah": "(2022)京0105执****号",
+ "fbrq": "2022-10-01",
+ "id": "BJ0105XG202200****",
+ "zxfy": "北京市朝阳区人民法院"
+ },
+ {
+ "ah": "(2023)京0108执****号",
+ "fbrq": "2023-05-15",
+ "id": "BJ0108XG202300****",
+ "zxfy": "北京市海淀区人民法院"
+ }
+ ]
+ }
+ }
+ },
+ "orgName": "北京****科技有限公司",
+ "pName": "张某",
+ "punishment_info": {
+ "items": [
+ {
+ "content": "责令当事人停止发布违法广告,并处罚款人民币5万元",
+ "decisionDate": "2023-05-15",
+ "departmentName": "北京市朝阳区市场监督管理局",
+ "evidence": "当事人在其官网发布含有虚假内容的广告",
+ "legalPersonName": "张明",
+ "pecuniary": "50000",
+ "punishName": "北京创新科技有限公司",
+ "punishNumber": "京朝市监罚字〔2023〕第1205号",
+ "punishStatus": "已执行",
+ "reason": "违反《中华人民共和国广告法》第二十八条规定,发布虚假广告",
+ "remark": "",
+ "source": "市场监督管理局",
+ "type": "广告违法",
+ "typeSecond": "虚假广告"
+ },
+ {
+ "content": "责令限期整改,并处罚款人民币3万元",
+ "decisionDate": "2023-08-20",
+ "departmentName": "北京市网信办",
+ "evidence": "网络安全检查中发现安全漏洞未及时修复",
+ "legalPersonName": "张明",
+ "pecuniary": "30000",
+ "punishName": "北京创新科技有限公司",
+ "punishNumber": "京网信罚〔2023〕第0856号",
+ "punishStatus": "已执行",
+ "reason": "违反《网络安全法》相关规定,未履行网络安全保护义务",
+ "remark": "",
+ "source": "网信办",
+ "type": "网络安全",
+ "typeSecond": "安全漏洞"
+ }
+ ],
+ "total": 2
+ },
+ "relationship": [
+ "sh",
+ "lp",
+ "tm"
+ ],
+ "stockHolderItem": {
+ "investDate": "",
+ "investRate": "100.0%",
+ "orgHolderName": "张某",
+ "orgHolderType": "自然人",
+ "subscriptAmt": 500
+ }
+ },
+ {
+ "abnormal_info": {
+ "items": [
+ {
+ "putDate": "2023-07-10",
+ "putDepartment": "上海市浦东新区市场监督管理局",
+ "putReason": "未依照《企业信息公示暂行条例》第八条规定的期限公示年度报告的",
+ "removeDate": "",
+ "removeDepartment": "",
+ "removeReason": ""
+ }
+ ],
+ "total": 1
+ },
+ "adminPenalty": [
+ {
+ "content": "",
+ "decisionDate": "2022-08-20",
+ "departmentName": "上海市****市场监督管理局",
+ "legalPersonName": "王某",
+ "punishNumber": "沪市监罚字(2022)****号",
+ "reason": "未按规定公示年度报告",
+ "type": "警告"
+ }
+ ],
+ "basicInfo": {
+ "apprdate": "2022-08-20",
+ "base": "sh",
+ "candate": "",
+ "city": "上海市",
+ "companyOrgType": "有限责任公司(自然人投资或控股)",
+ "creditCode": "91310115MA1******",
+ "district": "浦东新区",
+ "estiblishTime": "2019-05-18",
+ "industry": "批发和零售业",
+ "industry_code": "F",
+ "legalPersonName": "王某",
+ "name": "上海****贸易有限公司",
+ "nic_code": "F5191",
+ "nic_name": "批发和零售业-批发业-其他批发业-其他批发业",
+ "opscope": "从事货物及技术的进出口业务,五金交电、建筑材料、机械设备、电子产品、日用百货的销售。",
+ "province": "上海市",
+ "reccap": 0,
+ "reccapcur": "人民币",
+ "regCapital": "300.000000万人民币",
+ "regCapitalCurrency": "人民币",
+ "regNumber": "310115******",
+ "regStatus": "存续",
+ "regorg": "上海市浦东新区市场监督管理局",
+ "revdate": "2022-08-20",
+ "staffList": {
+ "result": [
+ {
+ "name": "王某",
+ "type": "2",
+ "typeJoin": [
+ "执行董事"
+ ]
+ }
+ ]
+ },
+ "type": "1"
+ },
+ "dishonestExecutedPerson": [],
+ "executedPerson": [],
+ "financing_history": {
+ "items": [
+ {
+ "companyName": "上海智能制造股份有限公司",
+ "date": null,
+ "investorName": "公开发行",
+ "money": "15.8亿人民币",
+ "newsTitle": "上海智能制造成功登陆科创板",
+ "newsUrl": "https://example.com/ipo1",
+ "pubTime": 1680307200000,
+ "round": "IPO上市",
+ "share": "",
+ "value": ""
+ },
+ {
+ "companyName": "上海智能制造股份有限公司",
+ "date": null,
+ "investorName": "高瓴资本,腾讯投资",
+ "money": "3亿人民币",
+ "newsTitle": "上海智能制造完成3亿元C轮融资",
+ "newsUrl": "https://example.com/news3",
+ "pubTime": 1651363200000,
+ "round": "C轮",
+ "share": "12%",
+ "value": "25亿人民币"
+ },
+ {
+ "companyName": "上海智能制造股份有限公司",
+ "date": null,
+ "investorName": "软银中国,金沙江创投",
+ "money": "1.5亿人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1619827200000,
+ "round": "B轮",
+ "share": "18%",
+ "value": "8.3亿人民币"
+ },
+ {
+ "companyName": "上海智能制造股份有限公司",
+ "date": null,
+ "investorName": "启明创投,GGV纪源资本",
+ "money": "8000万人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1588291200000,
+ "round": "A轮",
+ "share": "25%",
+ "value": "3.2亿人民币"
+ },
+ {
+ "companyName": "上海智能制造股份有限公司",
+ "date": null,
+ "investorName": "真格基金,险峰长青",
+ "money": "1500万人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1556668800000,
+ "round": "天使轮",
+ "share": "15%",
+ "value": "1亿人民币"
+ }
+ ],
+ "total": 5
+ },
+ "fsource": "1",
+ "invest_history": {
+ "items": [
+ {
+ "alias": "智能机器人",
+ "amount": null,
+ "base": "sh",
+ "business_scope": "智能制造装备、工业机器人、数控机床的研发、生产、销售;自动化控制系统集成;软件开发;技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广;货物进出口;技术进出口。",
+ "category": "通用设备制造业",
+ "creditCode": "91310115MA01F7G8H9",
+ "estiblishTime": 1609459200000,
+ "id": 40123456,
+ "legalPersonId": 2201234567,
+ "legalPersonName": "陈刚",
+ "logo": "https://img5.tianyancha.com/logo/lll/example6.png@!f_200x200",
+ "name": "上海智能机器人制造有限公司",
+ "orgType": "有限责任公司(自然人投资或控股)",
+ "pencertileScore": 8912,
+ "percent": "35%",
+ "personType": 1,
+ "regCapital": "5000万人民币",
+ "regStatus": "存续",
+ "withdrawalTime": null
+ },
+ {
+ "alias": "工业自动化",
+ "amount": null,
+ "base": "sh",
+ "business_scope": "工业自动化设备的研发、生产、销售;工业软件开发;系统集成;技术服务;设备租赁;机械设备销售;电子产品销售;计算机软硬件及辅助设备销售。",
+ "category": "专用设备制造业",
+ "creditCode": "91310114MA01G8H9I0",
+ "estiblishTime": 1625097600000,
+ "id": 41234567,
+ "legalPersonId": 2212345678,
+ "legalPersonName": "张伟",
+ "logo": "https://img5.tianyancha.com/logo/lll/example7.png@!f_200x200",
+ "name": "上海工业自动化设备有限公司",
+ "orgType": "有限责任公司(自然人投资或控股)",
+ "pencertileScore": 7234,
+ "percent": "50%",
+ "personType": 1,
+ "regCapital": "3000万人民币",
+ "regStatus": "存续",
+ "withdrawalTime": null
+ }
+ ],
+ "total": 8
+ },
+ "lawsuitInfo": {
+ "entout": {
+ "data": {
+ "administrative": {
+ "cases": [
+ {
+ "c_ah": "(2022)沪01行初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "上海****贸易有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "原告"
+ },
+ {
+ "c_mc": "上海市****市场监督管理局",
+ "n_dsrlx": "机关团体",
+ "n_ssdw": "被告"
+ }
+ ],
+ "c_gkws_dsr": "原告上海****贸易有限公司,住所地上海市浦东新区****路x号。法定代表人王某,执行董事兼总经理。委托代理人田某,上海****律师事务所律师。被告上海市****市场监督管理局,住所地上海市****区政府大楼。负责人杨某,局长。委托代理人郑某,该局工作人员。",
+ "c_gkws_pjjg": "一、撤销被告上海市****市场监督管理局于2022年8月10日作出的沪市监罚字(2022)****号《行政处罚决定书》;二、被告上海市****市场监督管理局于本判决生效之日起六十日内重新作出处理决定。案件受理费100元,由被告上海市****市场监督管理局负担。如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于上海市高级人民法院。",
+ "c_id": "k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7",
+ "c_ssdy": "上海市",
+ "d_jarq": "2022-12-20",
+ "d_larq": "2022-10-15",
+ "n_ajbs": "j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "行政一审",
+ "n_crc": 9012345678,
+ "n_jaay": "行政管理",
+ "n_jaay_tree": "行政管理,工商行政管理,行政处罚",
+ "n_jafs": "判决",
+ "n_jbfy": "上海市****人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "行政管理",
+ "n_pj_victory": "胜诉",
+ "n_slcx": "一审",
+ "n_ssdw": "原告"
+ }
+ ],
+ "count": {
+ "area_stat": "上海市(1)",
+ "ay_stat": "行政管理(1)",
+ "count_beigao": 0,
+ "count_jie_beigao": 0,
+ "count_jie_total": 1,
+ "count_total": 1,
+ "jafs_stat": "判决(1)",
+ "larq_stat": "2022(1)"
+ }
+ },
+ "bankrupt": {
+ "cases": [],
+ "count": {
+ "area_stat": "上海市(0)",
+ "count_total": 0
+ }
+ },
+ "cases_tree": {
+ "administrative": [
+ {
+ "c_ah": "(2022)沪01行初****号",
+ "case_type": 400,
+ "n_ajbs": "j1k2l3m4n5o6p7q8r9s0t1u2v3w4x5y6",
+ "stage_type": 1
+ }
+ ],
+ "bankrupt": [],
+ "civil": [
+ {
+ "c_ah": "(2023)沪01民初****号",
+ "case_type": 300,
+ "n_ajbs": "b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7",
+ "stage_type": 1
+ },
+ {
+ "c_ah": "(2023)沪01民终****号",
+ "case_type": 300,
+ "n_ajbs": "c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8",
+ "stage_type": 2
+ }
+ ],
+ "criminal": [
+ {
+ "c_ah": "(2023)沪01刑初****号",
+ "case_type": 200,
+ "n_ajbs": "l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7a8",
+ "stage_type": 1
+ }
+ ],
+ "implement": [
+ {
+ "c_ah": "(2024)沪01执****号",
+ "case_type": 500,
+ "n_ajbs": "m4n5o6p7q8r9s0t1u2v3w4x5y6z7a8b9",
+ "stage_type": 1
+ }
+ ],
+ "preservation": [
+ {
+ "c_ah": "(2023)沪01财保****号",
+ "case_type": 700,
+ "n_ajbs": "n5o6p7q8r9s0t1u2v3w4x5y6z7a8b9c0",
+ "stage_type": 1
+ }
+ ]
+ },
+ "civil": {
+ "cases": [
+ {
+ "c_ah": "(2023)沪01民初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "上海****贸易有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被告"
+ },
+ {
+ "c_mc": "李某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "原告"
+ }
+ ],
+ "c_gkws_dsr": "原告李某,男,1982年6月18日生,汉族,住上海市黄浦区****小区x号楼x号。委托代理人马某,上海****律师事务所律师。被告上海****贸易有限公司,住所地上海市浦东新区****路x号。法定代表人王某,执行董事兼总经理。委托代理人陈某,上海****律师事务所律师。",
+ "c_gkws_pjjg": "一、被告上海****贸易有限公司于本判决生效之日起十日内向原告李某支付货款200000元及违约金30000元;二、驳回原告李某的其他诉讼请求。如果未按本判决指定的期间履行给付金钱义务,应当依照《中华人民共和国民事诉讼法》第二百六十条规定,加倍支付迟延履行期间的债务利息。案件受理费5500元,由原告李某负担2000元,被告上海****贸易有限公司负担3500元。如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于上海市高级人民法院。",
+ "c_id": "c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8",
+ "c_ssdy": "上海市",
+ "d_jarq": "2023-11-20",
+ "d_larq": "2023-09-15",
+ "n_ajbs": "b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "民事一审",
+ "n_crc": 2345678901,
+ "n_jaay": "合同、准合同纠纷",
+ "n_jaay_tree": "合同、准合同纠纷,合同纠纷,买卖合同纠纷",
+ "n_jafs": "判决",
+ "n_jbfy": "上海市****人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "合同、准合同纠纷",
+ "n_pj_victory": "部分胜诉",
+ "n_qsbdje": 300000,
+ "n_qsbdje_level": 18,
+ "n_slcx": "一审",
+ "n_ssdw": "被告"
+ },
+ {
+ "c_ah": "(2023)沪01民终****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "上海****贸易有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "上诉人"
+ },
+ {
+ "c_mc": "李某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被上诉人"
+ }
+ ],
+ "c_gkws_dsr": "上诉人(原审被告)上海****贸易有限公司,住所地上海市浦东新区****路x号。法定代表人王某,执行董事兼总经理。委托代理人陈某,上海****律师事务所律师。被上诉人(原审原告)李某,男,1982年6月18日生,汉族,住上海市黄浦区****小区x号楼x号。委托代理人马某,上海****律师事务所律师。",
+ "c_gkws_pjjg": "驳回上诉,维持原判。二审案件受理费5500元,由上诉人上海****贸易有限公司负担。本判决为终审判决。",
+ "c_id": "d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9",
+ "c_ssdy": "上海市",
+ "d_jarq": "2024-01-15",
+ "d_larq": "2023-12-10",
+ "n_ajbs": "c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "民事二审",
+ "n_crc": 3456789012,
+ "n_jaay": "合同、准合同纠纷",
+ "n_jaay_tree": "合同、准合同纠纷,合同纠纷,买卖合同纠纷",
+ "n_jafs": "维持",
+ "n_jbfy": "上海市****人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "合同、准合同纠纷",
+ "n_pj_victory": "败诉",
+ "n_qsbdje": 300000,
+ "n_qsbdje_level": 18,
+ "n_slcx": "二审",
+ "n_ssdw": "上诉人"
+ }
+ ],
+ "count": {
+ "area_stat": "上海市(2)",
+ "ay_stat": "合同、准合同纠纷(2)",
+ "count_beigao": 1,
+ "count_jie_beigao": 1,
+ "count_jie_total": 2,
+ "count_total": 2,
+ "jafs_stat": "判决(1),维持(1)",
+ "larq_stat": "2023(2)",
+ "money_beigao": 1,
+ "money_jie_beigao": 1,
+ "money_jie_total": 2,
+ "money_total": 2
+ }
+ },
+ "count": {
+ "area_stat": "上海市(6)",
+ "ay_stat": "合同、准合同纠纷(2),行政管理(1),破坏社会主义市场经济秩序罪(1),执行案件(1),财产保全(1)",
+ "count_beigao": 1,
+ "count_jie_beigao": 1,
+ "count_jie_total": 6,
+ "count_total": 6,
+ "jafs_stat": "判决(3),维持(1),裁定(1),执行(1)",
+ "larq_stat": "2022(1),2023(4),2024(1)",
+ "money_beigao": 1,
+ "money_jie_beigao": 1,
+ "money_jie_total": 2,
+ "money_total": 2
+ },
+ "crc": 2345678901,
+ "criminal": {
+ "cases": [
+ {
+ "c_ah": "(2023)沪01刑初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "上海****贸易有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被告单位"
+ },
+ {
+ "c_mc": "王某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被告人"
+ }
+ ],
+ "c_gkws_dsr": "公诉机关上海市****区人民检察院。被告单位上海****贸易有限公司,住所地上海市浦东新区****路x号。被告人王某,男,1975年4月8日生,汉族,上海市人,大学文化,系上海****贸易有限公司法定代表人。因涉嫌犯走私普通货物罪,于2023年8月15日被上海市公安局刑事拘留,同年9月20日被逮捕,现羁押于上海市第一看守所。辩护人张某,上海****律师事务所律师。",
+ "c_gkws_pjjg": "一、被告单位上海****贸易有限公司犯走私普通货物罪,处罚金人民币五十万元;二、被告人王某犯走私普通货物罪,判处有期徒刑二年,缓刑三年,并处罚金人民币十万元。(缓刑考验期限,从判决确定之日起计算)。如不服本判决,可在接到判决书的第二日起十日内,通过本院或者直接向上海市高级人民法院提出上诉。被告人如果提出上诉,可以委托辩护人提出上诉状。",
+ "c_id": "o6p7q8r9s0t1u2v3w4x5y6z7a8b9c0d1",
+ "c_ssdy": "上海市",
+ "d_jarq": "2023-12-15",
+ "d_larq": "2023-10-20",
+ "n_ajbs": "l3m4n5o6p7q8r9s0t1u2v3w4x5y6z7a8",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "刑事一审",
+ "n_crc": 1234567890,
+ "n_jaay": "破坏社会主义市场经济秩序罪",
+ "n_jaay_tree": "破坏社会主义市场经济秩序罪,走私、贩卖、运输、制造毒品罪,走私普通货物、物品罪",
+ "n_jafs": "有期徒刑",
+ "n_jbfy": "上海市****人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "破坏社会主义市场经济秩序罪",
+ "n_pj_victory": "败诉",
+ "n_slcx": "一审",
+ "n_ssdw": "被告单位"
+ }
+ ],
+ "count": {
+ "area_stat": "上海市(1)",
+ "ay_stat": "破坏社会主义市场经济秩序罪(1)",
+ "count_beigao": 0,
+ "count_jie_beigao": 0,
+ "count_jie_total": 1,
+ "count_total": 1,
+ "jafs_stat": "有期徒刑(1)",
+ "larq_stat": "2023(1)",
+ "money_beigao": 0,
+ "money_jie_beigao": 0,
+ "money_jie_total": 0,
+ "money_total": 0
+ }
+ },
+ "implement": {
+ "cases": [
+ {
+ "c_ah": "(2024)沪01执****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "李某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "申请执行人"
+ },
+ {
+ "c_mc": "上海****贸易有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被执行人"
+ }
+ ],
+ "c_gkws_dsr": "申请执行人李某,男,1982年6月18日生,汉族,住上海市黄浦区****小区x号楼x号。委托代理人马某,上海****律师事务所律师。被执行人上海****贸易有限公司,住所地上海市浦东新区****路x号。法定代表人王某,执行董事兼总经理。",
+ "c_gkws_pjjg": "一、被执行人上海****贸易有限公司应向申请执行人李某支付货款230000元及迟延履行期间的利息;二、若被执行人未按时履行上述义务,本院将依法评估、拍卖其名下的财产,所得价款优先清偿上述债务。",
+ "c_id": "p7q8r9s0t1u2v3w4x5y6z7a8b9c0d1e2",
+ "c_ssdy": "上海市",
+ "d_jarq": "2024-02-20",
+ "d_larq": "2024-01-15",
+ "n_ajbs": "m4n5o6p7q8r9s0t1u2v3w4x5y6z7a8b9",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "执行案件",
+ "n_crc": 2345678901,
+ "n_jaay": "执行案件",
+ "n_jaay_tree": "执行案件,执行实施类",
+ "n_jafs": "执行",
+ "n_jbfy": "上海市****人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "执行案件",
+ "n_slcx": "执行",
+ "n_ssdw": "被执行人"
+ }
+ ],
+ "count": {
+ "area_stat": "上海市(1)",
+ "count_total": 1
+ }
+ },
+ "preservation": {
+ "cases": [
+ {
+ "c_ah": "(2023)沪01财保****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "李某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "申请人"
+ },
+ {
+ "c_mc": "上海****贸易有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被申请人"
+ }
+ ],
+ "c_gkws_dsr": "申请人李某,男,1982年6月18日生,汉族,住上海市黄浦区****小区x号楼x号。委托代理人马某,上海****律师事务所律师。被申请人上海****贸易有限公司,住所地上海市浦东新区****路x号。法定代表人王某,执行董事兼总经理。",
+ "c_gkws_pjjg": "冻结被申请人上海****贸易有限公司名下银行账户(账号:****)中的存款230000元,冻结期限为一年。",
+ "c_id": "q8r9s0t1u2v3w4x5y6z7a8b9c0d1e2f3",
+ "c_ssdy": "上海市",
+ "d_jarq": "2023-09-10",
+ "d_larq": "2023-09-05",
+ "n_ajbs": "n5o6p7q8r9s0t1u2v3w4x5y6z7a8b9c0",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "财产保全",
+ "n_crc": 3456789012,
+ "n_jaay": "财产保全",
+ "n_jaay_tree": "财产保全,诉前财产保全",
+ "n_jafs": "裁定",
+ "n_jbfy": "上海市****人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "财产保全",
+ "n_slcx": "保全",
+ "n_ssdw": "被申请人"
+ }
+ ],
+ "count": {
+ "area_stat": "上海市(1)",
+ "count_total": 1
+ }
+ }
+ }
+ },
+ "sxbzxr": {
+ "data": {
+ "sxbzxr": [
+ {
+ "ah": "(2021)沪0115执****号",
+ "fbrq": "2021-12-01",
+ "larq": "2021-11-10",
+ "lxqk": "全部未履行",
+ "pjje_gj": 900000,
+ "qyfr": "李某",
+ "sf": "上海市",
+ "xwqx": "有履行能力而拒不履行生效法律文书确定义务",
+ "yw": "向申请人支付货款900000元及违约金",
+ "zxfy": "上海市浦东新区人民法院",
+ "zxyjdw": "上海市浦东新区人民法院",
+ "zxyjwh": "(2021)沪0115民初****号",
+ "zzjgdm": "91310115MA0******"
+ },
+ {
+ "ah": "(2022)沪0104执****号",
+ "fbrq": "2022-06-15",
+ "larq": "2022-05-20",
+ "lxqk": "部分未履行",
+ "pjje_gj": 250000,
+ "qyfr": "李某",
+ "sf": "上海市",
+ "xwqx": "被执行人无正当理由拒不履行执行和解协议",
+ "yw": "向申请人支付货款550000元及利息",
+ "zxfy": "上海市徐汇区人民法院",
+ "zxyjdw": "上海市徐汇区人民法院",
+ "zxyjwh": "(2022)沪0104民初****号",
+ "zzjgdm": "91310115MA0******"
+ },
+ {
+ "ah": "(2023)沪0106执****号",
+ "fbrq": "2023-03-10",
+ "larq": "2023-02-25",
+ "lxqk": "全部未履行",
+ "pjje_gj": 700000,
+ "qyfr": "李某",
+ "sf": "上海市",
+ "xwqx": "有履行能力而拒不履行生效法律文书确定义务",
+ "yw": "向申请人支付服务费700000元及违约金",
+ "zxfy": "上海市静安区人民法院",
+ "zxyjdw": "上海市静安区人民法院",
+ "zxyjwh": "(2023)沪0106民初****号",
+ "zzjgdm": "91310115MA0******"
+ }
+ ]
+ }
+ },
+ "xgbzxr": {
+ "data": {
+ "xgbzxr": [
+ {
+ "ah": "(2021)沪0115执****号",
+ "fbrq": "2021-12-15",
+ "id": "SH0115XG202100****",
+ "zxfy": "上海市浦东新区人民法院"
+ },
+ {
+ "ah": "(2022)沪0104执****号",
+ "fbrq": "2022-07-01",
+ "id": "SH0104XG202200****",
+ "zxfy": "上海市徐汇区人民法院"
+ },
+ {
+ "ah": "(2023)沪0106执****号",
+ "fbrq": "2023-03-25",
+ "id": "SH0106XG202300****",
+ "zxfy": "上海市静安区人民法院"
+ }
+ ]
+ }
+ }
+ },
+ "orgName": "上海****贸易有限公司",
+ "pName": "王某",
+ "punishment_info": {
+ "items": [
+ {
+ "content": "责令停止违法行为,并处罚款人民币20万元",
+ "decisionDate": "2023-03-10",
+ "departmentName": "上海市生态环境局",
+ "evidence": "环境监测数据显示废水排放超出国家标准",
+ "legalPersonName": "李华",
+ "pecuniary": "200000",
+ "punishName": "上海智能制造股份有限公司",
+ "punishNumber": "沪环罚〔2023〕第0312号",
+ "punishStatus": "已执行",
+ "reason": "违反《中华人民共和国环境保护法》,超标排放污染物",
+ "remark": "",
+ "source": "生态环境局",
+ "type": "环境违法",
+ "typeSecond": "超标排放"
+ },
+ {
+ "content": "责令停产整顿,并处罚款人民币15万元",
+ "decisionDate": "2023-07-25",
+ "departmentName": "上海市应急管理局",
+ "evidence": "安全检查发现生产设备存在安全隐患",
+ "legalPersonName": "李华",
+ "pecuniary": "150000",
+ "punishName": "上海智能制造股份有限公司",
+ "punishNumber": "沪应急罚〔2023〕第0728号",
+ "punishStatus": "已执行",
+ "reason": "违反《安全生产法》相关规定,存在重大安全隐患",
+ "remark": "",
+ "source": "应急管理局",
+ "type": "安全生产",
+ "typeSecond": "安全隐患"
+ },
+ {
+ "content": "追缴税款并加收滞纳金,处罚款人民币8万元",
+ "decisionDate": "2023-11-12",
+ "departmentName": "上海市税务局",
+ "evidence": "税务稽查发现少申报收入",
+ "legalPersonName": "李华",
+ "pecuniary": "80000",
+ "punishName": "上海智能制造股份有限公司",
+ "punishNumber": "沪税稽罚〔2023〕第1115号",
+ "punishStatus": "已执行",
+ "reason": "违反《中华人民共和国税收征收管理法》,偷逃税款",
+ "remark": "",
+ "source": "税务局",
+ "type": "税务违法",
+ "typeSecond": "偷逃税款"
+ }
+ ],
+ "total": 3
+ },
+ "relationship": [
+ "sh",
+ "lp",
+ "tm"
+ ],
+ "stockHolderItem": {
+ "investDate": "",
+ "investRate": "100.0%",
+ "orgHolderName": "王某",
+ "orgHolderType": "自然人",
+ "subscriptAmt": 300
+ }
+ },
+ {
+ "abnormal_info": {
+ "items": [
+ {
+ "putDate": "2023-09-05",
+ "putDepartment": "深圳市南山区市场监督管理局",
+ "putReason": "通过登记的住所或者经营场所无法联系的",
+ "removeDate": "2024-01-20",
+ "removeDepartment": "深圳市南山区市场监督管理局",
+ "removeReason": "已变更注册地址"
+ },
+ {
+ "putDate": "2023-11-12",
+ "putDepartment": "深圳市南山区市场监督管理局",
+ "putReason": "未按规定期限公示股权变更信息的",
+ "removeDate": "",
+ "removeDepartment": "",
+ "removeReason": ""
+ }
+ ],
+ "total": 2
+ },
+ "adminPenalty": [
+ {
+ "content": "",
+ "decisionDate": "2022-05-18",
+ "departmentName": "广州市****市场监督管理局",
+ "legalPersonName": "赵某",
+ "punishNumber": "穗市监罚字(2022)****号",
+ "reason": "生产不符合国家安全标准的产品",
+ "type": "罚款"
+ }
+ ],
+ "basicInfo": {
+ "apprdate": "2021-06-10",
+ "base": "gd",
+ "candate": "",
+ "city": "广州市",
+ "companyOrgType": "有限责任公司(自然人投资或控股)",
+ "creditCode": "91440100MA5******",
+ "district": "天河区",
+ "estiblishTime": "2018-09-25",
+ "industry": "制造业",
+ "industry_code": "C",
+ "legalPersonName": "赵某",
+ "name": "广州****制造有限公司",
+ "nic_code": "C3381",
+ "nic_name": "制造业-金属制品业-金属制品业-金属制品业",
+ "opscope": "金属制品、机械设备、五金产品的研发、生产、销售;货物进出口、技术进出口。",
+ "province": "广东省",
+ "reccap": 0,
+ "reccapcur": "人民币",
+ "regCapital": "800.000000万人民币",
+ "regCapitalCurrency": "人民币",
+ "regNumber": "440106******",
+ "regStatus": "存续",
+ "regorg": "广州市天河区市场监督管理局",
+ "revdate": "2021-06-10",
+ "staffList": {
+ "result": [
+ {
+ "name": "赵某",
+ "type": "2",
+ "typeJoin": [
+ "执行董事"
+ ]
+ }
+ ]
+ },
+ "type": "1"
+ },
+ "dishonestExecutedPerson": [],
+ "executedPerson": [],
+ "financing_history": {
+ "items": [
+ {
+ "companyName": "深圳新能源技术有限公司",
+ "date": null,
+ "investorName": "国投创新,中金资本",
+ "money": "8亿人民币",
+ "newsTitle": "深圳新能源完成8亿元D轮融资",
+ "newsUrl": "https://example.com/news4",
+ "pubTime": 1693497600000,
+ "round": "D轮",
+ "share": "10%",
+ "value": "80亿人民币"
+ },
+ {
+ "companyName": "深圳新能源技术有限公司",
+ "date": null,
+ "investorName": "比亚迪,宁德时代",
+ "money": "3.5亿人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1661961600000,
+ "round": "C轮",
+ "share": "15%",
+ "value": "23.3亿人民币"
+ },
+ {
+ "companyName": "深圳新能源技术有限公司",
+ "date": null,
+ "investorName": "深创投,达晨创投",
+ "money": "1.2亿人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1630425600000,
+ "round": "B轮",
+ "share": "20%",
+ "value": "6亿人民币"
+ }
+ ],
+ "total": 3
+ },
+ "fsource": "1",
+ "invest_history": {
+ "items": [
+ {
+ "alias": "新能源汽车",
+ "amount": null,
+ "base": "sz",
+ "business_scope": "新能源汽车整车制造;新能源汽车电附件销售;新能源汽车换电设施销售;充电桩销售;新能源汽车生产测试设备销售;汽车零配件批发;汽车零配件零售;技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广。",
+ "category": "汽车制造业",
+ "creditCode": "91440300MA01I0J1K2",
+ "estiblishTime": 1614556800000,
+ "id": 43456789,
+ "legalPersonId": 2234567890,
+ "legalPersonName": "林峰",
+ "logo": "https://img5.tianyancha.com/logo/lll/example9.png@!f_200x200",
+ "name": "深圳新能源汽车制造有限公司",
+ "orgType": "有限责任公司(自然人投资或控股)",
+ "pencertileScore": 9123,
+ "percent": "40%",
+ "personType": 1,
+ "regCapital": "8000万人民币",
+ "regStatus": "存续",
+ "withdrawalTime": null
+ },
+ {
+ "alias": "储能电池",
+ "amount": null,
+ "base": "sz",
+ "business_scope": "电池制造;电池销售;新能源原动设备制造;新能源原动设备销售;储能技术服务;电力电子元器件制造;电力电子元器件销售;技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广。",
+ "category": "电气机械和器材制造业",
+ "creditCode": "91440300MA01J1K2L3",
+ "estiblishTime": 1630425600000,
+ "id": 44567890,
+ "legalPersonId": 2245678901,
+ "legalPersonName": "周杰",
+ "logo": "https://img5.tianyancha.com/logo/lll/example10.png@!f_200x200",
+ "name": "深圳储能电池技术有限公司",
+ "orgType": "有限责任公司(自然人投资或控股)",
+ "pencertileScore": 8456,
+ "percent": "30%",
+ "personType": 1,
+ "regCapital": "5000万人民币",
+ "regStatus": "存续",
+ "withdrawalTime": null
+ },
+ {
+ "alias": "清洁能源",
+ "amount": null,
+ "base": "sz",
+ "business_scope": "太阳能发电技术服务;风力发电技术服务;生物质能技术服务;新兴能源技术研发;节能管理服务;合同能源管理;环保咨询服务;碳减排、碳转化、碳捕捉、碳封存技术研发。",
+ "category": "电力、热力、燃气及水生产和供应业",
+ "creditCode": "91440300MA01K2L3M4",
+ "estiblishTime": 1646092800000,
+ "id": 45678901,
+ "legalPersonId": 2256789012,
+ "legalPersonName": "吴涛",
+ "logo": "https://img5.tianyancha.com/logo/lll/example11.png@!f_200x200",
+ "name": "深圳清洁能源服务有限公司",
+ "orgType": "有限责任公司(自然人投资或控股)",
+ "pencertileScore": 7123,
+ "percent": "55%",
+ "personType": 1,
+ "regCapital": "2000万人民币",
+ "regStatus": "存续",
+ "withdrawalTime": null
+ }
+ ],
+ "total": 6
+ },
+ "lawsuitInfo": {
+ "entout": {
+ "data": {
+ "administrative": {
+ "cases": [
+ {
+ "c_ah": "(2022)粤01行初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "广州****制造有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "原告"
+ },
+ {
+ "c_mc": "广州市****市场监督管理局",
+ "n_dsrlx": "机关团体",
+ "n_ssdw": "被告"
+ }
+ ],
+ "c_gkws_dsr": "原告广州****制造有限公司,住所地广州市天河区****路x号。法定代表人赵某,执行董事兼总经理。委托代理人陆某,广东****律师事务所律师。被告广州市****市场监督管理局,住所地广州市****区政府大楼。负责人张某,局长。委托代理人廖某,该局工作人员。",
+ "c_gkws_pjjg": "驳回原告广州****制造有限公司的诉讼请求。案件受理费50元,由原告广州****制造有限公司负担。如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于广东省高级人民法院。",
+ "c_id": "r9s0t1u2v3w4x5y6z7a8b9c0d1e2f3g4",
+ "c_ssdy": "广东省",
+ "d_jarq": "2022-07-15",
+ "d_larq": "2022-06-10",
+ "n_ajbs": "o6p7q8r9s0t1u2v3w4x5y6z7a8b9c0d1",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "行政一审",
+ "n_crc": 4567890123,
+ "n_jaay": "行政管理",
+ "n_jaay_tree": "行政管理,工商行政管理,市场监督管理",
+ "n_jafs": "判决",
+ "n_jbfy": "广州市****人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "行政管理",
+ "n_pj_victory": "败诉",
+ "n_slcx": "一审",
+ "n_ssdw": "原告"
+ }
+ ],
+ "count": {
+ "area_stat": "广东省(1)",
+ "ay_stat": "行政管理(1)",
+ "count_beigao": 0,
+ "count_jie_beigao": 0,
+ "count_jie_total": 1,
+ "count_total": 1,
+ "jafs_stat": "判决(1)",
+ "larq_stat": "2022(1)"
+ }
+ },
+ "bankrupt": {
+ "cases": [
+ {
+ "c_ah": "(2023)粤01破申****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "广州****贸易有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "申请人"
+ },
+ {
+ "c_mc": "广州****制造有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被申请人"
+ }
+ ],
+ "c_gkws_dsr": "申请人广州****贸易有限公司,住所地广州市海珠区****路x号。法定代表人林某,董事长。委托代理人叶某,广东****律师事务所律师。被申请人广州****制造有限公司,住所地广州市天河区****路x号。法定代表人赵某,执行董事兼总经理。委托代理人何某,广东****律师事务所律师。",
+ "c_gkws_pjjg": "驳回申请人广州****贸易有限公司对被申请人广州****制造有限公司的破产清算申请。申请费5000元,由申请人广州****贸易有限公司负担。",
+ "c_id": "s0t1u2v3w4x5y6z7a8b9c0d1e2f3g4h5",
+ "c_ssdy": "广东省",
+ "d_jarq": "2023-08-15",
+ "d_larq": "2023-06-20",
+ "n_ajbs": "p7q8r9s0t1u2v3w4x5y6z7a8b9c0d1e2",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "破产清算",
+ "n_crc": 5678901234,
+ "n_jaay": "破产案件",
+ "n_jaay_tree": "破产案件,破产清算",
+ "n_jafs": "裁定",
+ "n_jbfy": "广州市****人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "破产案件",
+ "n_pj_victory": "胜诉",
+ "n_slcx": "破产",
+ "n_ssdw": "被申请人"
+ }
+ ],
+ "count": {
+ "area_stat": "广东省(1)",
+ "ay_stat": "破产案件(1)",
+ "count_beigao": 1,
+ "count_jie_beigao": 1,
+ "count_jie_total": 1,
+ "count_total": 1,
+ "jafs_stat": "裁定(1)",
+ "larq_stat": "2023(1)"
+ }
+ },
+ "cases_tree": {
+ "administrative": [
+ {
+ "c_ah": "(2022)粤01行初****号",
+ "case_type": 400,
+ "n_ajbs": "o6p7q8r9s0t1u2v3w4x5y6z7a8b9c0d1",
+ "stage_type": 1
+ }
+ ],
+ "bankrupt": [
+ {
+ "c_ah": "(2023)粤01破申****号",
+ "case_type": 600,
+ "n_ajbs": "p7q8r9s0t1u2v3w4x5y6z7a8b9c0d1e2",
+ "stage_type": 1
+ }
+ ],
+ "civil": [
+ {
+ "c_ah": "(2023)粤01民初****号",
+ "case_type": 300,
+ "n_ajbs": "d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0",
+ "stage_type": 1
+ }
+ ],
+ "criminal": [
+ {
+ "c_ah": "(2023)粤01刑初****号",
+ "case_type": 200,
+ "n_ajbs": "e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1",
+ "stage_type": 1
+ }
+ ],
+ "implement": [
+ {
+ "c_ah": "(2023)粤01执****号",
+ "case_type": 500,
+ "n_ajbs": "q8r9s0t1u2v3w4x5y6z7a8b9c0d1e2f3",
+ "stage_type": 1
+ }
+ ],
+ "preservation": [
+ {
+ "c_ah": "(2023)粤01财保****号",
+ "case_type": 700,
+ "n_ajbs": "r9s0t1u2v3w4x5y6z7a8b9c0d1e2f3g4",
+ "stage_type": 1
+ }
+ ]
+ },
+ "civil": {
+ "cases": [
+ {
+ "c_ah": "(2023)粤01民初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "广州****制造有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被告"
+ },
+ {
+ "c_mc": "钱某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "原告"
+ }
+ ],
+ "c_gkws_dsr": "原告钱某,男,1983年4月12日生,汉族,住广州市越秀区****小区x号楼x号。委托代理人徐某,广东****律师事务所律师。被告广州****制造有限公司,住所地广州市天河区****路x号。法定代表人赵某,执行董事兼总经理。委托代理人周某,广东****律师事务所律师。",
+ "c_gkws_pjjg": "一、被告广州****制造有限公司于本判决生效之日起十日内向原告钱某支付承揽费250000元及违约金80000元;二、驳回原告钱某的其他诉讼请求。如果未按本判决指定的期间履行给付金钱义务,应当依照《中华人民共和国民事诉讼法》第二百六十条规定,加倍支付迟延履行期间的债务利息。案件受理费7800元,由原告钱某负担2800元,被告广州****制造有限公司负担5000元。如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于广东省高级人民法院。",
+ "c_id": "c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8",
+ "c_ssdy": "广东省",
+ "d_jarq": "2023-11-25",
+ "d_larq": "2023-09-30",
+ "n_ajbs": "d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "民事一审",
+ "n_crc": 2345678901,
+ "n_jaay": "合同、准合同纠纷",
+ "n_jaay_tree": "合同、准合同纠纷,合同纠纷,承揽合同纠纷",
+ "n_jafs": "判决",
+ "n_jbfy": "广州市****人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "合同、准合同纠纷",
+ "n_pj_victory": "部分胜诉",
+ "n_qsbdje": 300000,
+ "n_qsbdje_level": 18,
+ "n_slcx": "一审",
+ "n_ssdw": "被告"
+ }
+ ],
+ "count": {
+ "area_stat": "广东省(1)",
+ "ay_stat": "合同、准合同纠纷(1)",
+ "count_beigao": 1,
+ "count_jie_beigao": 1,
+ "count_jie_total": 1,
+ "count_total": 1,
+ "jafs_stat": "判决(1)",
+ "larq_stat": "2023(1)",
+ "money_beigao": 1,
+ "money_jie_beigao": 1,
+ "money_jie_total": 1,
+ "money_total": 1
+ }
+ },
+ "count": {
+ "area_stat": "广东省(6)",
+ "ay_stat": "合同、准合同纠纷(1),破坏社会主义市场经济秩序罪(1),行政管理(1),破产案件(1),执行案件(1),财产保全(1)",
+ "count_beigao": 3,
+ "count_jie_beigao": 3,
+ "count_jie_total": 6,
+ "count_total": 6,
+ "jafs_stat": "判决(2),有期徒刑(1),裁定(2),执行(1)",
+ "larq_stat": "2022(1),2023(5)",
+ "money_beigao": 1,
+ "money_jie_beigao": 1,
+ "money_jie_total": 1,
+ "money_total": 1
+ },
+ "crc": 3456789012,
+ "criminal": {
+ "cases": [
+ {
+ "c_ah": "(2023)粤01刑初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "广州****制造有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被告单位"
+ },
+ {
+ "c_mc": "赵某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被告人"
+ }
+ ],
+ "c_gkws_dsr": "公诉机关广州市****区人民检察院。被告单位广州****制造有限公司,住所地广州市天河区****路x号。被告人赵某,男,1976年5月15日生,汉族,广东省人,大学文化,系广州****制造有限公司法定代表人。因涉嫌犯合同诈骗罪,于2023年9月10日被广州市公安局刑事拘留,同年10月15日被逮捕,现羁押于广州市第一看守所。辩护人冯某,广东****律师事务所律师。",
+ "c_gkws_pjjg": "一、被告单位广州****制造有限公司犯合同诈骗罪,处罚金人民币六十万元;二、被告人赵某犯合同诈骗罪,判处有期徒刑三年,并处罚金人民币十五万元。如不服本判决,可在接到判决书的第二日起十日内,通过本院或者直接向广东省高级人民法院提出上诉。被告人如果提出上诉,可以委托辩护人提出上诉状。",
+ "c_id": "o6p7q8r9s0t1u2v3w4x5y6z7a8b9c0d1",
+ "c_ssdy": "广东省",
+ "d_jarq": "2023-12-15",
+ "d_larq": "2023-10-20",
+ "n_ajbs": "e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t1",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "刑事一审",
+ "n_crc": 4567890123,
+ "n_jaay": "破坏社会主义市场经济秩序罪",
+ "n_jaay_tree": "破坏社会主义市场经济秩序罪,扰乱市场秩序罪,合同诈骗罪",
+ "n_jafs": "有期徒刑",
+ "n_jbfy": "广州市****人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "破坏社会主义市场经济秩序罪",
+ "n_pj_victory": "败诉",
+ "n_slcx": "一审",
+ "n_ssdw": "被告单位"
+ }
+ ],
+ "count": {
+ "area_stat": "广东省(1)",
+ "ay_stat": "破坏社会主义市场经济秩序罪(1)",
+ "count_beigao": 0,
+ "count_jie_beigao": 0,
+ "count_jie_total": 1,
+ "count_total": 1,
+ "jafs_stat": "有期徒刑(1)",
+ "larq_stat": "2023(1)",
+ "money_beigao": 0,
+ "money_jie_beigao": 0,
+ "money_jie_total": 0,
+ "money_total": 0
+ }
+ },
+ "implement": {
+ "cases": [
+ {
+ "c_ah": "(2023)粤01执****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "钱某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "申请执行人"
+ },
+ {
+ "c_mc": "广州****制造有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被执行人"
+ }
+ ],
+ "c_gkws_dsr": "申请执行人钱某,男,1983年4月12日生,汉族,住广州市越秀区****小区x号楼x号。委托代理人徐某,广东****律师事务所律师。被执行人广州****制造有限公司,住所地广州市天河区****路x号。法定代表人赵某,执行董事兼总经理。",
+ "c_gkws_pjjg": "一、被执行人广州****制造有限公司应向申请执行人钱某支付承揽费250000元、违约金80000元及迟延履行期间的利息;二、若被执行人未按时履行上述义务,本院将依法评估、拍卖其名下的财产,所得价款优先清偿上述债务。",
+ "c_id": "t1u2v3w4x5y6z7a8b9c0d1e2f3g4h5i6",
+ "c_ssdy": "广东省",
+ "d_jarq": "2023-12-22",
+ "d_larq": "2023-12-10",
+ "n_ajbs": "q8r9s0t1u2v3w4x5y6z7a8b9c0d1e2f3",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "执行案件",
+ "n_crc": 6789012345,
+ "n_jaay": "执行案件",
+ "n_jaay_tree": "执行案件,执行实施类",
+ "n_jafs": "执行",
+ "n_jbfy": "广州市****人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "执行案件",
+ "n_slcx": "执行",
+ "n_ssdw": "被执行人"
+ }
+ ],
+ "count": {
+ "area_stat": "广东省(1)",
+ "count_total": 1
+ }
+ },
+ "preservation": {
+ "cases": [
+ {
+ "c_ah": "(2023)粤01财保****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "钱某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "申请人"
+ },
+ {
+ "c_mc": "广州****制造有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被申请人"
+ }
+ ],
+ "c_gkws_dsr": "申请人钱某,男,1983年4月12日生,汉族,住广州市越秀区****小区x号楼x号。委托代理人徐某,广东****律师事务所律师。被申请人广州****制造有限公司,住所地广州市天河区****路x号。法定代表人赵某,执行董事兼总经理。",
+ "c_gkws_pjjg": "冻结被申请人广州****制造有限公司名下银行账户(账号:****)中的存款350000元,冻结期限为一年。",
+ "c_id": "u2v3w4x5y6z7a8b9c0d1e2f3g4h5i6j7",
+ "c_ssdy": "广东省",
+ "d_jarq": "2023-09-20",
+ "d_larq": "2023-09-15",
+ "n_ajbs": "r9s0t1u2v3w4x5y6z7a8b9c0d1e2f3g4",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "财产保全",
+ "n_crc": 7890123456,
+ "n_jaay": "财产保全",
+ "n_jaay_tree": "财产保全,诉前财产保全",
+ "n_jafs": "裁定",
+ "n_jbfy": "广州市****人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "财产保全",
+ "n_slcx": "保全",
+ "n_ssdw": "被申请人"
+ }
+ ],
+ "count": {
+ "area_stat": "广东省(1)",
+ "count_total": 1
+ }
+ }
+ }
+ },
+ "sxbzxr": {
+ "data": {
+ "sxbzxr": []
+ }
+ },
+ "xgbzxr": {
+ "data": {
+ "xgbzxr": []
+ }
+ }
+ },
+ "orgName": "广州****制造有限公司",
+ "pName": "赵某",
+ "punishment_info": {
+ "items": [
+ {
+ "content": "责令召回不合格产品,并处罚款人民币12万元",
+ "decisionDate": "2024-02-18",
+ "departmentName": "深圳市市场监督管理局",
+ "evidence": "产品质量抽检不合格",
+ "legalPersonName": "王强",
+ "pecuniary": "120000",
+ "punishName": "深圳新能源技术有限公司",
+ "punishNumber": "深市监罚〔2024〕第0220号",
+ "punishStatus": "已执行",
+ "reason": "违反《产品质量法》,生产销售不合格产品",
+ "remark": "",
+ "source": "市场监督管理局",
+ "type": "产品质量",
+ "typeSecond": "产品不合格"
+ }
+ ],
+ "total": 1
+ },
+ "relationship": [
+ "sh",
+ "lp"
+ ],
+ "stockHolderItem": {
+ "investDate": "",
+ "investRate": "100.0%",
+ "orgHolderName": "赵某",
+ "orgHolderType": "自然人",
+ "subscriptAmt": 800
+ }
+ },
+ {
+ "abnormal_info": {
+ "items": [
+ {
+ "putDate": "2024-06-30",
+ "putDepartment": "广州市天河区市场监督管理局",
+ "putReason": "未依照《企业信息公示暂行条例》第八条规定的期限公示年度报告的",
+ "removeDate": "",
+ "removeDepartment": "",
+ "removeReason": ""
+ },
+ {
+ "putDate": "2023-12-20",
+ "putDepartment": "广州市天河区市场监督管理局",
+ "putReason": "通过登记的住所或者经营场所无法联系的",
+ "removeDate": "2024-05-15",
+ "removeDepartment": "广州市天河区市场监督管理局",
+ "removeReason": "已更新联系方式"
+ },
+ {
+ "putDate": "2024-02-28",
+ "putDepartment": "广州市天河区市场监督管理局",
+ "putReason": "未按规定期限公示即时信息的",
+ "removeDate": "",
+ "removeDepartment": "",
+ "removeReason": ""
+ },
+ {
+ "putDate": "2023-05-18",
+ "putDepartment": "广州市天河区市场监督管理局",
+ "putReason": "未按规定期限公示企业投资信息的",
+ "removeDate": "2023-10-10",
+ "removeDepartment": "广州市天河区市场监督管理局",
+ "removeReason": "已补充公示投资信息"
+ }
+ ],
+ "total": 4
+ },
+ "adminPenalty": [
+ {
+ "content": "",
+ "decisionDate": "2023-03-15",
+ "departmentName": "深圳市****市场监督管理局",
+ "legalPersonName": "陈某",
+ "punishNumber": "深市监罚字(2023)****号",
+ "reason": "产品质量不合格",
+ "type": "罚款"
+ }
+ ],
+ "basicInfo": {
+ "apprdate": "2023-04-10",
+ "base": "gd",
+ "candate": "",
+ "city": "深圳市",
+ "companyOrgType": "有限责任公司(自然人投资或控股)",
+ "creditCode": "91440300MA5******",
+ "district": "南山区",
+ "estiblishTime": "2017-11-08",
+ "industry": "计算机、通信和其他电子设备制造业",
+ "industry_code": "C",
+ "legalPersonName": "陈某",
+ "name": "深圳****电子科技有限公司",
+ "nic_code": "C3969",
+ "nic_name": "计算机、通信和其他电子设备制造业-其他电子设备制造-其他电子设备制造",
+ "opscope": "电子产品、计算机软硬件、通信设备的研发、生产与销售;电子元器件、集成电路的设计、研发、销售;国内贸易;经营进出口业务。",
+ "province": "广东省",
+ "reccap": 0,
+ "reccapcur": "人民币",
+ "regCapital": "1000.000000万人民币",
+ "regCapitalCurrency": "人民币",
+ "regNumber": "440301******",
+ "regStatus": "存续",
+ "regorg": "深圳市市场监督管理局",
+ "revdate": "2023-04-10",
+ "staffList": {
+ "result": [
+ {
+ "name": "陈某",
+ "type": "2",
+ "typeJoin": [
+ "执行董事"
+ ]
+ },
+ {
+ "name": "林某",
+ "type": "3",
+ "typeJoin": [
+ "总经理"
+ ]
+ }
+ ]
+ },
+ "type": "1"
+ },
+ "dishonestExecutedPerson": [
+ {
+ "courtName": "深圳市南山区人民法院",
+ "dishonestExeUnperformPart": "全部未履行",
+ "exeDuty": "向申请人支付货款1200000元及逾期付款损失",
+ "gistId": "(2023)粤0305执恢****号",
+ "gistUnit": "深圳市南山区人民法院",
+ "iname": "深圳****电子科技有限公司",
+ "performedPart": "暂无",
+ "province": "广东",
+ "publicDate": "2023-10-15",
+ "regDate": "2023-10-10",
+ "unperformedPart": "全部未履行"
+ }
+ ],
+ "executedPerson": [
+ {
+ "caseCode": "(2023)粤0305执****号",
+ "courtName": "深圳市南山区人民法院",
+ "execMoney": 1200000,
+ "iname": "深圳****电子科技有限公司",
+ "orgNo": "91440300MA5******",
+ "province": "广东",
+ "publishDate": "2023-09-20"
+ }
+ ],
+ "financing_history": {
+ "items": [
+ {
+ "companyName": "广州生物医药有限公司",
+ "date": null,
+ "investorName": "公开发行",
+ "money": "12亿人民币",
+ "newsTitle": "广州生物医药成功在港上市",
+ "newsUrl": "https://example.com/ipo2",
+ "pubTime": 1698768000000,
+ "round": "IPO上市",
+ "share": "",
+ "value": ""
+ },
+ {
+ "companyName": "广州生物医药有限公司",
+ "date": null,
+ "investorName": "高瓴资本,云锋基金",
+ "money": "5亿人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1667232000000,
+ "round": "C轮",
+ "share": "12%",
+ "value": "41.7亿人民币"
+ },
+ {
+ "companyName": "广州生物医药有限公司",
+ "date": null,
+ "investorName": "君联资本,联想之星",
+ "money": "2.8亿人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1635696000000,
+ "round": "B轮",
+ "share": "18%",
+ "value": "15.6亿人民币"
+ },
+ {
+ "companyName": "广州生物医药有限公司",
+ "date": null,
+ "investorName": "礼来亚洲基金,药明康德",
+ "money": "1.5亿人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1604160000000,
+ "round": "A轮",
+ "share": "25%",
+ "value": "6亿人民币"
+ },
+ {
+ "companyName": "广州生物医药有限公司",
+ "date": null,
+ "investorName": "奥博资本",
+ "money": "6000万人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1572624000000,
+ "round": "Pre-A轮",
+ "share": "20%",
+ "value": "3亿人民币"
+ },
+ {
+ "companyName": "广州生物医药有限公司",
+ "date": null,
+ "investorName": "广州科技创投",
+ "money": "1000万人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1541088000000,
+ "round": "天使轮",
+ "share": "12%",
+ "value": "8333万人民币"
+ }
+ ],
+ "total": 6
+ },
+ "fsource": "1",
+ "invest_history": {
+ "items": [
+ {
+ "alias": "康复医疗",
+ "amount": null,
+ "base": "gz",
+ "business_scope": "医药制造;药品生产;药品批发;药品零售;医疗器械生产;医疗器械经营;第二类医疗器械销售;第三类医疗器械经营;保健食品生产;保健食品销售;食品生产;食品销售;技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广。",
+ "category": "医药制造业",
+ "creditCode": "91440101MA01L3M4N5",
+ "estiblishTime": 1622505600000,
+ "id": 46789012,
+ "legalPersonId": 2267890123,
+ "legalPersonName": "黄医生",
+ "logo": "https://img5.tianyancha.com/logo/lll/example12.png@!f_200x200",
+ "name": "广州康复医疗器械有限公司",
+ "orgType": "有限责任公司(自然人投资或控股)",
+ "pencertileScore": 9567,
+ "percent": "60%",
+ "personType": 1,
+ "regCapital": "1亿人民币",
+ "regStatus": "存续",
+ "withdrawalTime": null
+ },
+ {
+ "alias": "生物研发",
+ "amount": null,
+ "base": "gz",
+ "business_scope": "生物技术推广服务;生物技术开发服务;医学研究和试验发展;生物药品制造;化学药品制剂制造;中成药生产;保健食品制造;医疗器械技术推广服务;技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广。",
+ "category": "医药制造业",
+ "creditCode": "91440101MA01M4N5O6",
+ "estiblishTime": 1638316800000,
+ "id": 47890123,
+ "legalPersonId": 2278901234,
+ "legalPersonName": "邓研究员",
+ "logo": "https://img5.tianyancha.com/logo/lll/example13.png@!f_200x200",
+ "name": "广州生物技术研发中心有限公司",
+ "orgType": "有限责任公司(自然人投资或控股)",
+ "pencertileScore": 8234,
+ "percent": "45%",
+ "personType": 1,
+ "regCapital": "6000万人民币",
+ "regStatus": "存续",
+ "withdrawalTime": null
+ }
+ ],
+ "total": 4
+ },
+ "lawsuitInfo": {
+ "entout": {
+ "data": {
+ "administrative": {
+ "cases": [
+ {
+ "c_ah": "(2023)粤03行初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "深圳****电子科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "原告"
+ },
+ {
+ "c_mc": "深圳市****市场监督管理局",
+ "n_dsrlx": "机关团体",
+ "n_ssdw": "被告"
+ }
+ ],
+ "c_gkws_dsr": "原告深圳****电子科技有限公司,住所地深圳市南山区****路x号。法定代表人陈某,执行董事。委托代理人谢某,广东****律师事务所律师。被告深圳市****市场监督管理局,住所地深圳市福田区****路x号。负责人王某,局长。委托代理人梁某,该局工作人员。",
+ "c_gkws_pjjg": "一、确认被告深圳市****市场监督管理局于2023年3月15日作出的深市监罚字(2023)****号《行政处罚决定书》违法;二、被告深圳市****市场监督管理局于本判决生效之日起六十日内重新作出处理决定。案件受理费100元,由被告深圳市****市场监督管理局负担。如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于广东省高级人民法院。",
+ "c_id": "v3w4x5y6z7a8b9c0d1e2f3g4h5i6j7k8",
+ "c_ssdy": "广东省",
+ "d_jarq": "2023-05-20",
+ "d_larq": "2023-04-15",
+ "n_ajbs": "s0t1u2v3w4x5y6z7a8b9c0d1e2f3g4h5",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "行政一审",
+ "n_crc": 8901234567,
+ "n_jaay": "行政管理",
+ "n_jaay_tree": "行政管理,工商行政管理,产品质量监督管理",
+ "n_jafs": "判决",
+ "n_jbfy": "深圳市南山区人民法院",
+ "n_jbfy_cj": "基层人民法院",
+ "n_laay": "行政管理",
+ "n_pj_victory": "胜诉",
+ "n_slcx": "一审",
+ "n_ssdw": "原告"
+ }
+ ],
+ "count": {
+ "area_stat": "广东省(1)",
+ "ay_stat": "行政管理(1)",
+ "count_beigao": 0,
+ "count_jie_beigao": 0,
+ "count_jie_total": 1,
+ "count_total": 1,
+ "jafs_stat": "判决(1)",
+ "larq_stat": "2023(1)"
+ }
+ },
+ "bankrupt": {
+ "cases": [],
+ "count": {
+ "area_stat": "广东省(0)",
+ "count_total": 0
+ }
+ },
+ "cases_tree": {
+ "administrative": [
+ {
+ "c_ah": "(2023)粤03行初****号",
+ "case_type": 400,
+ "n_ajbs": "s0t1u2v3w4x5y6z7a8b9c0d1e2f3g4h5",
+ "stage_type": 1
+ }
+ ],
+ "bankrupt": [],
+ "civil": [
+ {
+ "c_ah": "(2023)粤0305民初****号",
+ "case_type": 300,
+ "n_ajbs": "t1u2v3w4x5y6z7a8b9c0d1e2f3g4h5i6",
+ "stage_type": 1
+ },
+ {
+ "c_ah": "(2023)粤03民终****号",
+ "case_type": 300,
+ "n_ajbs": "u2v3w4x5y6z7a8b9c0d1e2f3g4h5i6j7",
+ "stage_type": 2
+ }
+ ],
+ "criminal": [
+ {
+ "c_ah": "(2023)粤03刑初****号",
+ "case_type": 200,
+ "n_ajbs": "v3w4x5y6z7a8b9c0d1e2f3g4h5i6j7k8",
+ "stage_type": 1
+ }
+ ],
+ "implement": [
+ {
+ "c_ah": "(2023)粤0305执****号",
+ "case_type": 500,
+ "n_ajbs": "w4x5y6z7a8b9c0d1e2f3g4h5i6j7k8l9",
+ "stage_type": 1
+ },
+ {
+ "c_ah": "(2023)粤0305执恢****号",
+ "case_type": 500,
+ "n_ajbs": "x5y6z7a8b9c0d1e2f3g4h5i6j7k8l9m0",
+ "stage_type": 1
+ }
+ ],
+ "preservation": [
+ {
+ "c_ah": "(2023)粤0305财保****号",
+ "case_type": 700,
+ "n_ajbs": "y6z7a8b9c0d1e2f3g4h5i6j7k8l9m0n1",
+ "stage_type": 1
+ }
+ ]
+ },
+ "civil": {
+ "cases": [
+ {
+ "c_ah": "(2023)粤0305民初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "深圳****电子科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被告"
+ },
+ {
+ "c_mc": "广州****电子科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "原告"
+ }
+ ],
+ "c_gkws_dsr": "原告广州****电子科技有限公司,住所地广州市天河区****路x号。法定代表人吴某,执行董事兼总经理。委托代理人曾某,广东****律师事务所律师。被告深圳****电子科技有限公司,住所地深圳市南山区****路x号。法定代表人陈某,执行董事。委托代理人黄某,广东****律师事务所律师。",
+ "c_gkws_pjjg": "一、被告深圳****电子科技有限公司于本判决生效之日起十日内向原告广州****电子科技有限公司支付货款1200000元;二、被告深圳****电子科技有限公司于本判决生效之日起十日内向原告广州****电子科技有限公司支付逾期付款损失(以未付货款1200000元为基数,按照全国银行间同业拆借中心公布的一年期贷款市场报价利率自2023年1月15日起计算至实际付清之日止);三、驳回原告广州****电子科技有限公司的其他诉讼请求。如果未按本判决指定的期间履行给付金钱义务,应当依照《中华人民共和国民事诉讼法》第二百六十条规定,加倍支付迟延履行期间的债务利息。案件受理费16800元,由原告广州****电子科技有限公司负担3800元,被告深圳****电子科技有限公司负担13000元。如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于深圳市中级人民法院。",
+ "c_id": "w4x5y6z7a8b9c0d1e2f3g4h5i6j7k8l9",
+ "c_ssdy": "广东省",
+ "d_jarq": "2023-07-25",
+ "d_larq": "2023-05-20",
+ "n_ajbs": "t1u2v3w4x5y6z7a8b9c0d1e2f3g4h5i6",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "民事一审",
+ "n_crc": 9012345678,
+ "n_jaay": "合同、准合同纠纷",
+ "n_jaay_tree": "合同、准合同纠纷,合同纠纷,买卖合同纠纷",
+ "n_jafs": "判决",
+ "n_jbfy": "深圳市南山区人民法院",
+ "n_jbfy_cj": "基层人民法院",
+ "n_laay": "合同、准合同纠纷",
+ "n_pj_victory": "败诉",
+ "n_qsbdje": 1200000,
+ "n_qsbdje_level": 20,
+ "n_slcx": "一审",
+ "n_ssdw": "被告"
+ },
+ {
+ "c_ah": "(2023)粤03民终****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "深圳****电子科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "上诉人"
+ },
+ {
+ "c_mc": "广州****电子科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被上诉人"
+ }
+ ],
+ "c_gkws_dsr": "上诉人(原审被告)深圳****电子科技有限公司,住所地深圳市南山区****路x号。法定代表人陈某,执行董事。委托代理人黄某,广东****律师事务所律师。被上诉人(原审原告)广州****电子科技有限公司,住所地广州市天河区****路x号。法定代表人吴某,执行董事兼总经理。委托代理人曾某,广东****律师事务所律师。",
+ "c_gkws_pjjg": "驳回上诉,维持原判。二审案件受理费16800元,由上诉人深圳****电子科技有限公司负担。本判决为终审判决。",
+ "c_id": "x5y6z7a8b9c0d1e2f3g4h5i6j7k8l9m0",
+ "c_ssdy": "广东省",
+ "d_jarq": "2023-09-10",
+ "d_larq": "2023-08-15",
+ "n_ajbs": "u2v3w4x5y6z7a8b9c0d1e2f3g4h5i6j7",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "民事二审",
+ "n_crc": 1234567890,
+ "n_jaay": "合同、准合同纠纷",
+ "n_jaay_tree": "合同、准合同纠纷,合同纠纷,买卖合同纠纷",
+ "n_jafs": "维持",
+ "n_jbfy": "深圳市中级人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "合同、准合同纠纷",
+ "n_pj_victory": "败诉",
+ "n_qsbdje": 1200000,
+ "n_qsbdje_level": 20,
+ "n_slcx": "二审",
+ "n_ssdw": "上诉人"
+ }
+ ],
+ "count": {
+ "area_stat": "广东省(2)",
+ "ay_stat": "合同、准合同纠纷(2)",
+ "count_beigao": 1,
+ "count_jie_beigao": 1,
+ "count_jie_total": 2,
+ "count_total": 2,
+ "jafs_stat": "判决(1),维持(1)",
+ "larq_stat": "2023(2)",
+ "money_beigao": 1,
+ "money_jie_beigao": 1,
+ "money_jie_total": 2,
+ "money_total": 2
+ }
+ },
+ "count": {
+ "area_stat": "广东省(7)",
+ "ay_stat": "合同、准合同纠纷(2),行政管理(1),生产、销售伪劣产品罪(1),执行案件(2),财产保全(1)",
+ "count_beigao": 2,
+ "count_jie_beigao": 2,
+ "count_jie_total": 7,
+ "count_total": 7,
+ "jafs_stat": "判决(2),维持(1),有期徒刑(1),执行(2),裁定(1)",
+ "larq_stat": "2023(7)",
+ "money_beigao": 1,
+ "money_jie_beigao": 1,
+ "money_jie_total": 2,
+ "money_total": 2
+ },
+ "crc": 9012345678,
+ "criminal": {
+ "cases": [
+ {
+ "c_ah": "(2023)粤03刑初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "深圳****电子科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被告单位"
+ },
+ {
+ "c_mc": "陈某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被告人"
+ },
+ {
+ "c_mc": "林某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被告人"
+ }
+ ],
+ "c_gkws_dsr": "公诉机关深圳市****区人民检察院。被告单位深圳****电子科技有限公司,住所地深圳市南山区****路x号。被告人陈某,男,1978年3月25日生,汉族,广东省人,大学文化,系深圳****电子科技有限公司法定代表人。因涉嫌犯生产、销售伪劣产品罪,于2023年6月10日被深圳市公安局刑事拘留,同年7月15日被逮捕,现羁押于深圳市第二看守所。辩护人孙某,广东****律师事务所律师。被告人林某,男,1980年5月18日生,汉族,广东省人,大学文化,系深圳****电子科技有限公司总经理。因涉嫌犯生产、销售伪劣产品罪,于2023年6月10日被深圳市公安局刑事拘留,同年7月15日被逮捕,现羁押于深圳市第二看守所。辩护人钟某,广东****律师事务所律师。",
+ "c_gkws_pjjg": "一、被告单位深圳****电子科技有限公司犯生产、销售伪劣产品罪,处罚金人民币一百万元;二、被告人陈某犯生产、销售伪劣产品罪,判处有期徒刑四年,并处罚金人民币二十万元;三、被告人林某犯生产、销售伪劣产品罪,判处有期徒刑三年,并处罚金人民币十万元。如不服本判决,可在接到判决书的第二日起十日内,通过本院或者直接向广东省高级人民法院提出上诉。被告人如果提出上诉,可以委托辩护人提出上诉状。",
+ "c_id": "y6z7a8b9c0d1e2f3g4h5i6j7k8l9m0n1",
+ "c_ssdy": "广东省",
+ "d_jarq": "2023-10-25",
+ "d_larq": "2023-08-20",
+ "n_ajbs": "v3w4x5y6z7a8b9c0d1e2f3g4h5i6j7k8",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "刑事一审",
+ "n_crc": 2345678901,
+ "n_jaay": "生产、销售伪劣产品罪",
+ "n_jaay_tree": "破坏社会主义市场经济秩序罪,生产、销售伪劣产品罪",
+ "n_jafs": "有期徒刑",
+ "n_jbfy": "深圳市中级人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "生产、销售伪劣产品罪",
+ "n_pj_victory": "败诉",
+ "n_slcx": "一审",
+ "n_ssdw": "被告单位"
+ }
+ ],
+ "count": {
+ "area_stat": "广东省(1)",
+ "ay_stat": "生产、销售伪劣产品罪(1)",
+ "count_beigao": 0,
+ "count_jie_beigao": 0,
+ "count_jie_total": 1,
+ "count_total": 1,
+ "jafs_stat": "有期徒刑(1)",
+ "larq_stat": "2023(1)",
+ "money_beigao": 0,
+ "money_jie_beigao": 0,
+ "money_jie_total": 0,
+ "money_total": 0
+ }
+ },
+ "implement": {
+ "cases": [
+ {
+ "c_ah": "(2023)粤0305执****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "广州****电子科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "申请执行人"
+ },
+ {
+ "c_mc": "深圳****电子科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被执行人"
+ }
+ ],
+ "c_gkws_dsr": "申请执行人广州****电子科技有限公司,住所地广州市天河区****路x号。法定代表人吴某,执行董事兼总经理。委托代理人曾某,广东****律师事务所律师。被执行人深圳****电子科技有限公司,住所地深圳市南山区****路x号。法定代表人陈某,执行董事。",
+ "c_gkws_pjjg": "一、被执行人深圳****电子科技有限公司应向申请执行人广州****电子科技有限公司支付货款1200000元及逾期付款损失;二、若被执行人未按时履行上述义务,本院将依法评估、拍卖其名下的财产,所得价款优先清偿上述债务。",
+ "c_id": "z7a8b9c0d1e2f3g4h5i6j7k8l9m0n1o2",
+ "c_ssdy": "广东省",
+ "d_jarq": "2023-10-10",
+ "d_larq": "2023-09-20",
+ "n_ajbs": "w4x5y6z7a8b9c0d1e2f3g4h5i6j7k8l9",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "执行案件",
+ "n_crc": 3456789012,
+ "n_jaay": "执行案件",
+ "n_jaay_tree": "执行案件,执行实施类",
+ "n_jafs": "执行",
+ "n_jbfy": "深圳市南山区人民法院",
+ "n_jbfy_cj": "基层人民法院",
+ "n_laay": "执行案件",
+ "n_slcx": "执行",
+ "n_ssdw": "被执行人"
+ },
+ {
+ "c_ah": "(2023)粤0305执恢****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "广州****电子科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "申请执行人"
+ },
+ {
+ "c_mc": "深圳****电子科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被执行人"
+ }
+ ],
+ "c_gkws_dsr": "申请执行人广州****电子科技有限公司,住所地广州市天河区****路x号。法定代表人吴某,执行董事兼总经理。委托代理人曾某,广东****律师事务所律师。被执行人深圳****电子科技有限公司,住所地深圳市南山区****路x号。法定代表人陈某,执行董事。",
+ "c_gkws_pjjg": "将被执行人深圳****电子科技有限公司纳入失信被执行人名单,期限为三年,自本决定生效之日起至2026年10月15日止。",
+ "c_id": "a8b9c0d1e2f3g4h5i6j7k8l9m0n1o2p3",
+ "c_ssdy": "广东省",
+ "d_jarq": "2023-10-15",
+ "d_larq": "2023-10-10",
+ "n_ajbs": "x5y6z7a8b9c0d1e2f3g4h5i6j7k8l9m0",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "执行案件",
+ "n_crc": 4567890123,
+ "n_jaay": "执行案件",
+ "n_jaay_tree": "执行案件,执行实施类",
+ "n_jafs": "执行",
+ "n_jbfy": "深圳市南山区人民法院",
+ "n_jbfy_cj": "基层人民法院",
+ "n_laay": "执行案件",
+ "n_slcx": "执行",
+ "n_ssdw": "被执行人"
+ }
+ ],
+ "count": {
+ "area_stat": "广东省(2)",
+ "count_total": 2
+ }
+ },
+ "preservation": {
+ "cases": [
+ {
+ "c_ah": "(2023)粤0305财保****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "广州****电子科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "申请人"
+ },
+ {
+ "c_mc": "深圳****电子科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被申请人"
+ }
+ ],
+ "c_gkws_dsr": "申请人广州****电子科技有限公司,住所地广州市天河区****路x号。法定代表人吴某,执行董事兼总经理。委托代理人曾某,广东****律师事务所律师。被申请人深圳****电子科技有限公司,住所地深圳市南山区****路x号。法定代表人陈某,执行董事。",
+ "c_gkws_pjjg": "冻结被申请人深圳****电子科技有限公司名下银行账户(账号:****)中的存款1200000元,冻结期限为一年。",
+ "c_id": "b9c0d1e2f3g4h5i6j7k8l9m0n1o2p3q4",
+ "c_ssdy": "广东省",
+ "d_jarq": "2023-05-15",
+ "d_larq": "2023-05-10",
+ "n_ajbs": "y6z7a8b9c0d1e2f3g4h5i6j7k8l9m0n1",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "财产保全",
+ "n_crc": 5678901234,
+ "n_jaay": "财产保全",
+ "n_jaay_tree": "财产保全,诉前财产保全",
+ "n_jafs": "裁定",
+ "n_jbfy": "深圳市南山区人民法院",
+ "n_jbfy_cj": "基层人民法院",
+ "n_laay": "财产保全",
+ "n_slcx": "保全",
+ "n_ssdw": "被申请人"
+ }
+ ],
+ "count": {
+ "area_stat": "广东省(1)",
+ "count_total": 1
+ }
+ }
+ }
+ },
+ "sxbzxr": {
+ "data": {
+ "sxbzxr": [
+ {
+ "caseCode": "(2023)粤0305执恢****号",
+ "disruptTypeName": "被执行人无正当理由拒不履行执行和解协议",
+ "duty": "向申请人支付货款1200000元及逾期付款损失",
+ "gistId": "(2023)粤03民终****号",
+ "gistUnit": "深圳市中级人民法院",
+ "iname": "深圳****电子科技有限公司",
+ "orgNo": "91440300MA5******",
+ "performance": "全部未履行",
+ "publishDate": "2023-10-15",
+ "regDate": "2023-10-10"
+ }
+ ]
+ }
+ },
+ "xgbzxr": {
+ "data": {
+ "xgbzxr": []
+ }
+ }
+ },
+ "orgName": "深圳****电子科技有限公司",
+ "pName": "陈某",
+ "punishment_info": {
+ "items": [
+ {
+ "content": "没收违法生产的药品和违法所得,并处罚款人民币50万元",
+ "decisionDate": "2023-09-08",
+ "departmentName": "广州市药品监督管理局",
+ "evidence": "药品检验不合格",
+ "legalPersonName": "陈丽",
+ "pecuniary": "500000",
+ "punishName": "广州生物医药有限公司",
+ "punishNumber": "穗药监罚〔2023〕第0910号",
+ "punishStatus": "已执行",
+ "reason": "违反《药品管理法》相关规定,生产劣药",
+ "remark": "",
+ "source": "药品监督管理局",
+ "type": "药品违法",
+ "typeSecond": "生产劣药"
+ },
+ {
+ "content": "没收违法销售的医疗器械和违法所得,并处罚款人民币25万元",
+ "decisionDate": "2023-12-15",
+ "departmentName": "广州市卫生健康委员会",
+ "evidence": "销售记录显示销售未注册医疗器械",
+ "legalPersonName": "陈丽",
+ "pecuniary": "250000",
+ "punishName": "广州生物医药有限公司",
+ "punishNumber": "穗卫健罚〔2023〕第1218号",
+ "punishStatus": "已执行",
+ "reason": "违反《医疗器械监督管理条例》,销售未经注册的医疗器械",
+ "remark": "",
+ "source": "卫生健康委员会",
+ "type": "医疗器械",
+ "typeSecond": "未注册器械"
+ },
+ {
+ "content": "责令停止发布违法广告,并处罚款人民币10万元",
+ "decisionDate": "2024-01-22",
+ "departmentName": "广州市市场监督管理局",
+ "evidence": "广告内容与实际效果不符",
+ "legalPersonName": "陈丽",
+ "pecuniary": "100000",
+ "punishName": "广州生物医药有限公司",
+ "punishNumber": "穗市监罚〔2024〕第0125号",
+ "punishStatus": "已执行",
+ "reason": "违反《广告法》规定,发布医疗广告含有不实内容",
+ "remark": "",
+ "source": "市场监督管理局",
+ "type": "广告违法",
+ "typeSecond": "虚假医疗广告"
+ },
+ {
+ "content": "责令改正违法行为,并处罚款人民币6万元",
+ "decisionDate": "2024-04-10",
+ "departmentName": "广州市环保局",
+ "evidence": "现场检查发现医疗废物处理不当",
+ "legalPersonName": "陈丽",
+ "pecuniary": "60000",
+ "punishName": "广州生物医药有限公司",
+ "punishNumber": "穗环罚〔2024〕第0412号",
+ "punishStatus": "已执行",
+ "reason": "违反《环境保护法》,未按规定处理医疗废物",
+ "remark": "",
+ "source": "环保局",
+ "type": "环境违法",
+ "typeSecond": "废物处理"
+ }
+ ],
+ "total": 4
+ },
+ "relationship": [
+ "sh",
+ "lp",
+ "tm"
+ ],
+ "stockHolderItem": {
+ "investDate": "",
+ "investRate": "100.0%",
+ "orgHolderName": "陈某",
+ "orgHolderType": "自然人",
+ "subscriptAmt": 1000
+ }
+ },
+ {
+ "abnormal_info": {
+ "items": [
+ {
+ "putDate": "2023-08-25",
+ "putDepartment": "杭州市西湖区市场监督管理局",
+ "putReason": "未依照《企业信息公示暂行条例》第八条规定的期限公示年度报告的",
+ "removeDate": "2024-03-01",
+ "removeDepartment": "杭州市西湖区市场监督管理局",
+ "removeReason": "已按期补报年度报告"
+ }
+ ],
+ "total": 1
+ },
+ "adminPenalty": [
+ {
+ "content": "",
+ "decisionDate": "2022-06-25",
+ "departmentName": "重庆市****住房和城乡建设委员会",
+ "legalPersonName": "周某",
+ "punishNumber": "渝建罚字(2022)****号",
+ "reason": "未按照建筑工程设计标准施工",
+ "type": "罚款"
+ }
+ ],
+ "basicInfo": {
+ "apprdate": "2022-07-20",
+ "base": "cq",
+ "candate": "",
+ "city": "重庆市",
+ "companyOrgType": "有限责任公司(自然人投资或控股)",
+ "creditCode": "91500000MA6******",
+ "district": "渝中区",
+ "estiblishTime": "2015-08-12",
+ "industry": "建筑业",
+ "industry_code": "E",
+ "legalPersonName": "周某",
+ "name": "重庆****建设工程有限公司",
+ "nic_code": "E4700",
+ "nic_name": "建筑业-建筑装饰、装修和其他建筑业-建筑装饰和装修业",
+ "opscope": "建筑工程施工;建筑装饰工程设计与施工;市政公用工程施工;公路工程施工;水利水电工程施工;钢结构工程施工;土石方工程施工;园林绿化工程施工;建筑劳务分包;建筑材料销售。",
+ "province": "重庆市",
+ "reccap": 0,
+ "reccapcur": "人民币",
+ "regCapital": "2000.000000万人民币",
+ "regCapitalCurrency": "人民币",
+ "regNumber": "500103******",
+ "regStatus": "存续",
+ "regorg": "重庆市市场监督管理局",
+ "revdate": "2022-07-20",
+ "staffList": {
+ "result": [
+ {
+ "name": "周某",
+ "type": "2",
+ "typeJoin": [
+ "执行董事"
+ ]
+ },
+ {
+ "name": "李某",
+ "type": "3",
+ "typeJoin": [
+ "总经理"
+ ]
+ }
+ ]
+ },
+ "type": "1"
+ },
+ "dishonestExecutedPerson": [],
+ "executedPerson": [
+ {
+ "caseCode": "(2023)渝01执****号",
+ "courtName": "重庆市第一中级人民法院",
+ "execMoney": 850000,
+ "iname": "重庆****建设工程有限公司",
+ "orgNo": "91500000MA6******",
+ "province": "重庆",
+ "publishDate": "2023-08-10"
+ }
+ ],
+ "financing_history": {
+ "items": [
+ {
+ "companyName": "杭州互联网服务有限公司",
+ "date": null,
+ "investorName": "阿里巴巴,蚂蚁集团",
+ "money": "2亿人民币",
+ "newsTitle": "杭州互联网服务获得2亿元C轮融资",
+ "newsUrl": "https://example.com/news5",
+ "pubTime": 1685577600000,
+ "round": "C轮",
+ "share": "15%",
+ "value": "13.3亿人民币"
+ },
+ {
+ "companyName": "杭州互联网服务有限公司",
+ "date": null,
+ "investorName": "经纬中国,GGV纪源资本",
+ "money": "8000万人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1654041600000,
+ "round": "B轮",
+ "share": "20%",
+ "value": "4亿人民币"
+ },
+ {
+ "companyName": "杭州互联网服务有限公司",
+ "date": null,
+ "investorName": "DCM中国,晨兴资本",
+ "money": "3000万人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1622505600000,
+ "round": "A轮",
+ "share": "25%",
+ "value": "1.2亿人民币"
+ },
+ {
+ "companyName": "杭州互联网服务有限公司",
+ "date": null,
+ "investorName": "真格基金",
+ "money": "800万人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1590969600000,
+ "round": "天使轮",
+ "share": "18%",
+ "value": "4444万人民币"
+ }
+ ],
+ "total": 4
+ },
+ "fsource": "1",
+ "invest_history": {
+ "items": [
+ {
+ "alias": "云计算",
+ "amount": null,
+ "base": "hz",
+ "business_scope": "互联网信息服务;第二类增值电信业务;软件开发;信息系统集成服务;信息技术咨询服务;数据处理和存储支持服务;人工智能应用软件开发;区块链技术相关软件和服务;技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广。",
+ "category": "软件和信息技术服务业",
+ "creditCode": "91330108MA01N5O6P7",
+ "estiblishTime": 1635696000000,
+ "id": 48901234,
+ "legalPersonId": 2289012345,
+ "legalPersonName": "马云飞",
+ "logo": "https://img5.tianyancha.com/logo/lll/example14.png@!f_200x200",
+ "name": "杭州云计算服务有限公司",
+ "orgType": "有限责任公司(自然人投资或控股)",
+ "pencertileScore": 7890,
+ "percent": "50%",
+ "personType": 1,
+ "regCapital": "3000万人民币",
+ "regStatus": "存续",
+ "withdrawalTime": null
+ },
+ {
+ "alias": "游戏娱乐",
+ "amount": null,
+ "base": "hz",
+ "business_scope": "网络游戏服务;互联网信息服务;软件开发;动漫游戏开发;数字内容制作服务;广告设计、代理;广告制作;文艺创作;组织文化艺术交流活动;技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广。",
+ "category": "软件和信息技术服务业",
+ "creditCode": "91330108MA01O6P7Q8",
+ "estiblishTime": 1651363200000,
+ "id": 49012345,
+ "legalPersonId": 2290123456,
+ "legalPersonName": "许晓明",
+ "logo": "https://img5.tianyancha.com/logo/lll/example15.png@!f_200x200",
+ "name": "杭州游戏娱乐科技有限公司",
+ "orgType": "有限责任公司(自然人投资或控股)",
+ "pencertileScore": 6789,
+ "percent": "40%",
+ "personType": 1,
+ "regCapital": "2500万人民币",
+ "regStatus": "存续",
+ "withdrawalTime": null
+ }
+ ],
+ "total": 3
+ },
+ "lawsuitInfo": {
+ "entout": {
+ "data": {
+ "administrative": {
+ "cases": [
+ {
+ "c_ah": "(2022)渝01行初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "重庆****建设工程有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "原告"
+ },
+ {
+ "c_mc": "重庆市****住房和城乡建设委员会",
+ "n_dsrlx": "机关团体",
+ "n_ssdw": "被告"
+ }
+ ],
+ "c_gkws_dsr": "原告重庆****建设工程有限公司,住所地重庆市渝中区****路x号。法定代表人周某,执行董事兼总经理。委托代理人黄某,重庆****律师事务所律师。被告重庆市****住房和城乡建设委员会,住所地重庆市渝北区****路x号。负责人张某,主任。委托代理人谢某,该委工作人员。",
+ "c_gkws_pjjg": "驳回原告重庆****建设工程有限公司的诉讼请求。案件受理费100元,由原告重庆****建设工程有限公司负担。如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于重庆市高级人民法院。",
+ "c_id": "c0d1e2f3g4h5i6j7k8l9m0n1o2p3q4r5",
+ "c_ssdy": "重庆市",
+ "d_jarq": "2022-09-15",
+ "d_larq": "2022-07-20",
+ "n_ajbs": "z7a8b9c0d1e2f3g4h5i6j7k8l9m0n1o2",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "行政一审",
+ "n_crc": 6789012345,
+ "n_jaay": "行政管理",
+ "n_jaay_tree": "行政管理,城乡建设管理,建筑市场管理",
+ "n_jafs": "判决",
+ "n_jbfy": "重庆市第一中级人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "行政管理",
+ "n_pj_victory": "败诉",
+ "n_slcx": "一审",
+ "n_ssdw": "原告"
+ }
+ ],
+ "count": {
+ "area_stat": "重庆市(1)",
+ "ay_stat": "行政管理(1)",
+ "count_beigao": 0,
+ "count_jie_beigao": 0,
+ "count_jie_total": 1,
+ "count_total": 1,
+ "jafs_stat": "判决(1)",
+ "larq_stat": "2022(1)"
+ }
+ },
+ "bankrupt": {
+ "cases": [],
+ "count": {
+ "area_stat": "重庆市(0)",
+ "count_total": 0
+ }
+ },
+ "cases_tree": {
+ "administrative": [
+ {
+ "c_ah": "(2022)渝01行初****号",
+ "case_type": 400,
+ "n_ajbs": "z7a8b9c0d1e2f3g4h5i6j7k8l9m0n1o2",
+ "stage_type": 1
+ }
+ ],
+ "bankrupt": [],
+ "civil": [
+ {
+ "c_ah": "(2023)渝0103民初****号",
+ "case_type": 300,
+ "n_ajbs": "a8b9c0d1e2f3g4h5i6j7k8l9m0n1o2p3",
+ "stage_type": 1
+ },
+ {
+ "c_ah": "(2023)渝01民终****号",
+ "case_type": 300,
+ "n_ajbs": "b9c0d1e2f3g4h5i6j7k8l9m0n1o2p3q4",
+ "stage_type": 2
+ },
+ {
+ "c_ah": "(2022)渝01民初****号",
+ "case_type": 300,
+ "n_ajbs": "c0d1e2f3g4h5i6j7k8l9m0n1o2p3q4r5",
+ "stage_type": 1
+ }
+ ],
+ "criminal": [
+ {
+ "c_ah": "(2023)渝01刑初****号",
+ "case_type": 200,
+ "n_ajbs": "d1e2f3g4h5i6j7k8l9m0n1o2p3q4r5s6",
+ "stage_type": 1
+ }
+ ],
+ "implement": [
+ {
+ "c_ah": "(2023)渝01执****号",
+ "case_type": 500,
+ "n_ajbs": "e2f3g4h5i6j7k8l9m0n1o2p3q4r5s6t7",
+ "stage_type": 1
+ }
+ ],
+ "preservation": [
+ {
+ "c_ah": "(2023)渝0103财保****号",
+ "case_type": 700,
+ "n_ajbs": "f3g4h5i6j7k8l9m0n1o2p3q4r5s6t7u8",
+ "stage_type": 1
+ }
+ ]
+ },
+ "civil": {
+ "cases": [
+ {
+ "c_ah": "(2023)渝0103民初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "重庆****建设工程有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被告"
+ },
+ {
+ "c_mc": "重庆****房地产开发有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "原告"
+ }
+ ],
+ "c_gkws_dsr": "原告重庆****房地产开发有限公司,住所地重庆市江北区****路x号。法定代表人杨某,董事长。委托代理人江某,重庆****律师事务所律师。被告重庆****建设工程有限公司,住所地重庆市渝中区****路x号。法定代表人周某,执行董事兼总经理。委托代理人孙某,重庆****律师事务所律师。",
+ "c_gkws_pjjg": "一、被告重庆****建设工程有限公司于本判决生效之日起十日内向原告重庆****房地产开发有限公司支付工程质量违约金850000元;二、被告重庆****建设工程有限公司于本判决生效之日起十日内向原告重庆****房地产开发有限公司返还超额支付的工程款150000元;三、驳回原告重庆****房地产开发有限公司的其他诉讼请求。如果未按本判决指定的期间履行给付金钱义务,应当依照《中华人民共和国民事诉讼法》第二百六十条规定,加倍支付迟延履行期间的债务利息。案件受理费15000元,由原告重庆****房地产开发有限公司负担5000元,被告重庆****建设工程有限公司负担10000元。如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于重庆市第一中级人民法院。",
+ "c_id": "d1e2f3g4h5i6j7k8l9m0n1o2p3q4r5s6",
+ "c_ssdy": "重庆市",
+ "d_jarq": "2023-06-15",
+ "d_larq": "2023-04-10",
+ "n_ajbs": "a8b9c0d1e2f3g4h5i6j7k8l9m0n1o2p3",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "民事一审",
+ "n_crc": 7890123456,
+ "n_jaay": "合同、准合同纠纷",
+ "n_jaay_tree": "合同、准合同纠纷,合同纠纷,建设工程合同纠纷",
+ "n_jafs": "判决",
+ "n_jbfy": "重庆市渝中区人民法院",
+ "n_jbfy_cj": "基层人民法院",
+ "n_laay": "合同、准合同纠纷",
+ "n_pj_victory": "败诉",
+ "n_qsbdje": 1000000,
+ "n_qsbdje_level": 20,
+ "n_slcx": "一审",
+ "n_ssdw": "被告"
+ },
+ {
+ "c_ah": "(2023)渝01民终****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "重庆****建设工程有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "上诉人"
+ },
+ {
+ "c_mc": "重庆****房地产开发有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被上诉人"
+ }
+ ],
+ "c_gkws_dsr": "上诉人(原审被告)重庆****建设工程有限公司,住所地重庆市渝中区****路x号。法定代表人周某,执行董事兼总经理。委托代理人孙某,重庆****律师事务所律师。被上诉人(原审原告)重庆****房地产开发有限公司,住所地重庆市江北区****路x号。法定代表人杨某,董事长。委托代理人江某,重庆****律师事务所律师。",
+ "c_gkws_pjjg": "驳回上诉,维持原判。二审案件受理费15000元,由上诉人重庆****建设工程有限公司负担。本判决为终审判决。",
+ "c_id": "e2f3g4h5i6j7k8l9m0n1o2p3q4r5s6t7",
+ "c_ssdy": "重庆市",
+ "d_jarq": "2023-08-05",
+ "d_larq": "2023-07-10",
+ "n_ajbs": "b9c0d1e2f3g4h5i6j7k8l9m0n1o2p3q4",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "民事二审",
+ "n_crc": 8901234567,
+ "n_jaay": "合同、准合同纠纷",
+ "n_jaay_tree": "合同、准合同纠纷,合同纠纷,建设工程合同纠纷",
+ "n_jafs": "维持",
+ "n_jbfy": "重庆市第一中级人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "合同、准合同纠纷",
+ "n_pj_victory": "败诉",
+ "n_qsbdje": 1000000,
+ "n_qsbdje_level": 20,
+ "n_slcx": "二审",
+ "n_ssdw": "上诉人"
+ },
+ {
+ "c_ah": "(2022)渝01民初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "重庆****建设工程有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "原告"
+ },
+ {
+ "c_mc": "重庆****投资有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被告"
+ }
+ ],
+ "c_gkws_dsr": "原告重庆****建设工程有限公司,住所地重庆市渝中区****路x号。法定代表人周某,执行董事兼总经理。委托代理人王某,重庆****律师事务所律师。被告重庆****投资有限公司,住所地重庆市渝北区****路x号。法定代表人谢某,董事长。委托代理人钱某,重庆****律师事务所律师。",
+ "c_gkws_pjjg": "一、被告重庆****投资有限公司于本判决生效之日起十日内向原告重庆****建设工程有限公司支付工程款500000元及违约金50000元;二、驳回原告重庆****建设工程有限公司的其他诉讼请求。如果未按本判决指定的期间履行给付金钱义务,应当依照《中华人民共和国民事诉讼法》第二百六十条规定,加倍支付迟延履行期间的债务利息。案件受理费9500元,由原告重庆****建设工程有限公司负担3500元,被告重庆****投资有限公司负担6000元。如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于重庆市高级人民法院。",
+ "c_id": "f3g4h5i6j7k8l9m0n1o2p3q4r5s6t7u8",
+ "c_ssdy": "重庆市",
+ "d_jarq": "2022-12-20",
+ "d_larq": "2022-10-15",
+ "n_ajbs": "c0d1e2f3g4h5i6j7k8l9m0n1o2p3q4r5",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "民事一审",
+ "n_crc": 9012345678,
+ "n_jaay": "合同、准合同纠纷",
+ "n_jaay_tree": "合同、准合同纠纷,合同纠纷,建设工程合同纠纷",
+ "n_jafs": "判决",
+ "n_jbfy": "重庆市第一中级人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "合同、准合同纠纷",
+ "n_pj_victory": "部分胜诉",
+ "n_qsbdje": 600000,
+ "n_qsbdje_level": 19,
+ "n_slcx": "一审",
+ "n_ssdw": "原告"
+ }
+ ],
+ "count": {
+ "area_stat": "重庆市(3)",
+ "ay_stat": "合同、准合同纠纷(3)",
+ "count_beigao": 1,
+ "count_jie_beigao": 1,
+ "count_jie_total": 3,
+ "count_total": 3,
+ "jafs_stat": "判决(2),维持(1)",
+ "larq_stat": "2022(1),2023(2)",
+ "money_beigao": 1,
+ "money_jie_beigao": 1,
+ "money_jie_total": 3,
+ "money_total": 3
+ }
+ },
+ "count": {
+ "area_stat": "重庆市(7)",
+ "ay_stat": "合同、准合同纠纷(3),行政管理(1),重大责任事故罪(1),执行案件(1),财产保全(1)",
+ "count_beigao": 2,
+ "count_jie_beigao": 2,
+ "count_jie_total": 7,
+ "count_total": 7,
+ "jafs_stat": "判决(4),维持(1),有期徒刑(1),执行(1)",
+ "larq_stat": "2022(2),2023(5)",
+ "money_beigao": 1,
+ "money_jie_beigao": 1,
+ "money_jie_total": 3,
+ "money_total": 3
+ },
+ "crc": 6789012345,
+ "criminal": {
+ "cases": [
+ {
+ "c_ah": "(2023)渝01刑初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "重庆****建设工程有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被告单位"
+ },
+ {
+ "c_mc": "周某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被告人"
+ },
+ {
+ "c_mc": "李某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被告人"
+ }
+ ],
+ "c_gkws_dsr": "公诉机关重庆市****区人民检察院。被告单位重庆****建设工程有限公司,住所地重庆市渝中区****路x号。被告人周某,男,1970年5月8日生,汉族,重庆市人,大学文化,系重庆****建设工程有限公司法定代表人。因涉嫌犯重大责任事故罪,于2023年2月15日被重庆市公安局刑事拘留,同年3月20日被逮捕,现羁押于重庆市第一看守所。辩护人赵某,重庆****律师事务所律师。被告人李某,男,1975年8月12日生,汉族,四川省人,大学文化,系重庆****建设工程有限公司项目经理。因涉嫌犯重大责任事故罪,于2023年2月15日被重庆市公安局刑事拘留,同年3月20日被逮捕,现羁押于重庆市第一看守所。辩护人钟某,重庆****律师事务所律师。",
+ "c_gkws_pjjg": "一、被告单位重庆****建设工程有限公司犯重大责任事故罪,处罚金人民币三百万元;二、被告人周某犯重大责任事故罪,判处有期徒刑四年;三、被告人李某犯重大责任事故罪,判处有期徒刑三年六个月。如不服本判决,可在接到判决书的第二日起十日内,通过本院或者直接向重庆市高级人民法院提出上诉。被告人如果提出上诉,可以委托辩护人提出上诉状。",
+ "c_id": "g4h5i6j7k8l9m0n1o2p3q4r5s6t7u8v9",
+ "c_ssdy": "重庆市",
+ "d_jarq": "2023-07-10",
+ "d_larq": "2023-05-15",
+ "n_ajbs": "d1e2f3g4h5i6j7k8l9m0n1o2p3q4r5s6",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "刑事一审",
+ "n_crc": 1234567890,
+ "n_jaay": "重大责任事故罪",
+ "n_jaay_tree": "危害公共安全罪,重大责任事故罪",
+ "n_jafs": "有期徒刑",
+ "n_jbfy": "重庆市第一中级人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "重大责任事故罪",
+ "n_pj_victory": "败诉",
+ "n_slcx": "一审",
+ "n_ssdw": "被告单位"
+ }
+ ],
+ "count": {
+ "area_stat": "重庆市(1)",
+ "ay_stat": "重大责任事故罪(1)",
+ "count_beigao": 0,
+ "count_jie_beigao": 0,
+ "count_jie_total": 1,
+ "count_total": 1,
+ "jafs_stat": "有期徒刑(1)",
+ "larq_stat": "2023(1)",
+ "money_beigao": 0,
+ "money_jie_beigao": 0,
+ "money_jie_total": 0,
+ "money_total": 0
+ }
+ },
+ "implement": {
+ "cases": [
+ {
+ "c_ah": "(2023)渝01执****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "重庆****房地产开发有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "申请执行人"
+ },
+ {
+ "c_mc": "重庆****建设工程有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被执行人"
+ }
+ ],
+ "c_gkws_dsr": "申请执行人重庆****房地产开发有限公司,住所地重庆市江北区****路x号。法定代表人杨某,董事长。委托代理人江某,重庆****律师事务所律师。被执行人重庆****建设工程有限公司,住所地重庆市渝中区****路x号。法定代表人周某,执行董事兼总经理。",
+ "c_gkws_pjjg": "一、被执行人重庆****建设工程有限公司应向申请执行人重庆****房地产开发有限公司支付工程质量违约金850000元、超额支付的工程款150000元及迟延履行期间的利息;二、若被执行人未按时履行上述义务,本院将依法评估、拍卖其名下的财产,所得价款优先清偿上述债务。",
+ "c_id": "h5i6j7k8l9m0n1o2p3q4r5s6t7u8v9w0",
+ "c_ssdy": "重庆市",
+ "d_jarq": "2023-08-10",
+ "d_larq": "2023-08-05",
+ "n_ajbs": "e2f3g4h5i6j7k8l9m0n1o2p3q4r5s6t7",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "执行案件",
+ "n_crc": 2345678901,
+ "n_jaay": "执行案件",
+ "n_jaay_tree": "执行案件,执行实施类",
+ "n_jafs": "执行",
+ "n_jbfy": "重庆市第一中级人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "执行案件",
+ "n_slcx": "执行",
+ "n_ssdw": "被执行人"
+ }
+ ],
+ "count": {
+ "area_stat": "重庆市(1)",
+ "count_total": 1
+ }
+ },
+ "preservation": {
+ "cases": [
+ {
+ "c_ah": "(2023)渝0103财保****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "重庆****房地产开发有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "申请人"
+ },
+ {
+ "c_mc": "重庆****建设工程有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被申请人"
+ }
+ ],
+ "c_gkws_dsr": "申请人重庆****房地产开发有限公司,住所地重庆市江北区****路x号。法定代表人杨某,董事长。委托代理人江某,重庆****律师事务所律师。被申请人重庆****建设工程有限公司,住所地重庆市渝中区****路x号。法定代表人周某,执行董事兼总经理。",
+ "c_gkws_pjjg": "冻结被申请人重庆****建设工程有限公司名下银行账户(账号:****)中的存款1000000元,冻结期限为一年。",
+ "c_id": "i6j7k8l9m0n1o2p3q4r5s6t7u8v9w0x1",
+ "c_ssdy": "重庆市",
+ "d_jarq": "2023-04-05",
+ "d_larq": "2023-03-30",
+ "n_ajbs": "f3g4h5i6j7k8l9m0n1o2p3q4r5s6t7u8",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "财产保全",
+ "n_crc": 3456789012,
+ "n_jaay": "财产保全",
+ "n_jaay_tree": "财产保全,诉前财产保全",
+ "n_jafs": "裁定",
+ "n_jbfy": "重庆市渝中区人民法院",
+ "n_jbfy_cj": "基层人民法院",
+ "n_laay": "财产保全",
+ "n_slcx": "保全",
+ "n_ssdw": "被申请人"
+ }
+ ],
+ "count": {
+ "area_stat": "重庆市(1)",
+ "count_total": 1
+ }
+ }
+ }
+ },
+ "sxbzxr": {
+ "data": {
+ "sxbzxr": []
+ }
+ },
+ "xgbzxr": {
+ "data": {
+ "xgbzxr": []
+ }
+ }
+ },
+ "orgName": "重庆****建设工程有限公司",
+ "pName": "周某",
+ "punishment_info": {
+ "items": [
+ {
+ "content": "责令整改并加强用户信息保护,处罚款人民币8万元",
+ "decisionDate": "2023-06-30",
+ "departmentName": "杭州市网信办",
+ "evidence": "用户投诉个人信息泄露",
+ "legalPersonName": "刘刚",
+ "pecuniary": "80000",
+ "punishName": "杭州互联网服务有限公司",
+ "punishNumber": "杭网信罚〔2023〕第0702号",
+ "punishStatus": "已执行",
+ "reason": "违反《网络安全法》,用户个人信息保护不当",
+ "remark": "",
+ "source": "网信办",
+ "type": "信息安全",
+ "typeSecond": "信息泄露"
+ },
+ {
+ "content": "责令完善商家信息公示,并处罚款人民币4万元",
+ "decisionDate": "2023-10-18",
+ "departmentName": "杭州市市场监督管理局",
+ "evidence": "平台商家资质信息缺失",
+ "legalPersonName": "刘刚",
+ "pecuniary": "40000",
+ "punishName": "杭州互联网服务有限公司",
+ "punishNumber": "杭市监罚〔2023〕第1020号",
+ "punishStatus": "已执行",
+ "reason": "违反《电子商务法》,平台内经营者信息公示不完整",
+ "remark": "",
+ "source": "市场监督管理局",
+ "type": "电商违法",
+ "typeSecond": "信息公示"
+ }
+ ],
+ "total": 2
+ },
+ "relationship": [
+ "sh",
+ "lp"
+ ],
+ "stockHolderItem": {
+ "investDate": "",
+ "investRate": "100.0%",
+ "orgHolderName": "周某",
+ "orgHolderType": "自然人",
+ "subscriptAmt": 2000
+ }
+ },
+ {
+ "abnormal_info": {
+ "items": [
+ {
+ "putDate": "2023-08-25",
+ "putDepartment": "杭州市西湖区市场监督管理局",
+ "putReason": "未依照《企业信息公示暂行条例》第八条规定的期限公示年度报告的",
+ "removeDate": "2024-03-01",
+ "removeDepartment": "杭州市西湖区市场监督管理局",
+ "removeReason": "已按期补报年度报告"
+ }
+ ],
+ "total": 1
+ },
+ "adminPenalty": [
+ {
+ "content": "",
+ "decisionDate": "2022-09-18",
+ "departmentName": "杭州市****市场监督管理局",
+ "legalPersonName": "吴某",
+ "punishNumber": "杭市监罚字(2022)****号",
+ "reason": "生产的食品中检出超标添加剂",
+ "type": "罚款"
+ }
+ ],
+ "basicInfo": {
+ "apprdate": "2022-10-20",
+ "base": "zj",
+ "candate": "",
+ "city": "杭州市",
+ "companyOrgType": "有限责任公司(自然人投资或控股)",
+ "creditCode": "91330100MA2******",
+ "district": "余杭区",
+ "estiblishTime": "2016-05-20",
+ "industry": "食品制造业",
+ "industry_code": "C",
+ "legalPersonName": "吴某",
+ "name": "杭州****食品有限公司",
+ "nic_code": "C1492",
+ "nic_name": "食品制造业-其他食品制造-保健食品制造",
+ "opscope": "食品生产;食品经营;保健食品生产;保健食品销售;货物进出口;技术进出口;食品互联网销售;食品添加剂生产;食品添加剂销售。",
+ "province": "浙江省",
+ "reccap": 0,
+ "reccapcur": "人民币",
+ "regCapital": "1500.000000万人民币",
+ "regCapitalCurrency": "人民币",
+ "regNumber": "330110******",
+ "regStatus": "存续",
+ "regorg": "杭州市市场监督管理局",
+ "revdate": "2022-10-20",
+ "staffList": {
+ "result": [
+ {
+ "name": "吴某",
+ "type": "2",
+ "typeJoin": [
+ "执行董事"
+ ]
+ },
+ {
+ "name": "章某",
+ "type": "3",
+ "typeJoin": [
+ "总经理"
+ ]
+ }
+ ]
+ },
+ "type": "1"
+ },
+ "dishonestExecutedPerson": [],
+ "executedPerson": [],
+ "financing_history": {
+ "items": [
+ {
+ "companyName": "杭州互联网服务有限公司",
+ "date": null,
+ "investorName": "阿里巴巴,蚂蚁集团",
+ "money": "2亿人民币",
+ "newsTitle": "杭州互联网服务获得2亿元C轮融资",
+ "newsUrl": "https://example.com/news5",
+ "pubTime": 1685577600000,
+ "round": "C轮",
+ "share": "15%",
+ "value": "13.3亿人民币"
+ },
+ {
+ "companyName": "杭州互联网服务有限公司",
+ "date": null,
+ "investorName": "经纬中国,GGV纪源资本",
+ "money": "8000万人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1654041600000,
+ "round": "B轮",
+ "share": "20%",
+ "value": "4亿人民币"
+ },
+ {
+ "companyName": "杭州互联网服务有限公司",
+ "date": null,
+ "investorName": "DCM中国,晨兴资本",
+ "money": "3000万人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1622505600000,
+ "round": "A轮",
+ "share": "25%",
+ "value": "1.2亿人民币"
+ },
+ {
+ "companyName": "杭州互联网服务有限公司",
+ "date": null,
+ "investorName": "真格基金",
+ "money": "800万人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1590969600000,
+ "round": "天使轮",
+ "share": "18%",
+ "value": "4444万人民币"
+ }
+ ],
+ "total": 4
+ },
+ "fsource": "1",
+ "invest_history": {
+ "items": [
+ {
+ "alias": "云计算",
+ "amount": null,
+ "base": "hz",
+ "business_scope": "互联网信息服务;第二类增值电信业务;软件开发;信息系统集成服务;信息技术咨询服务;数据处理和存储支持服务;人工智能应用软件开发;区块链技术相关软件和服务;技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广。",
+ "category": "软件和信息技术服务业",
+ "creditCode": "91330108MA01N5O6P7",
+ "estiblishTime": 1635696000000,
+ "id": 48901234,
+ "legalPersonId": 2289012345,
+ "legalPersonName": "马云飞",
+ "logo": "https://img5.tianyancha.com/logo/lll/example14.png@!f_200x200",
+ "name": "杭州云计算服务有限公司",
+ "orgType": "有限责任公司(自然人投资或控股)",
+ "pencertileScore": 7890,
+ "percent": "50%",
+ "personType": 1,
+ "regCapital": "3000万人民币",
+ "regStatus": "存续",
+ "withdrawalTime": null
+ },
+ {
+ "alias": "游戏娱乐",
+ "amount": null,
+ "base": "hz",
+ "business_scope": "网络游戏服务;互联网信息服务;软件开发;动漫游戏开发;数字内容制作服务;广告设计、代理;广告制作;文艺创作;组织文化艺术交流活动;技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广。",
+ "category": "软件和信息技术服务业",
+ "creditCode": "91330108MA01O6P7Q8",
+ "estiblishTime": 1651363200000,
+ "id": 49012345,
+ "legalPersonId": 2290123456,
+ "legalPersonName": "许晓明",
+ "logo": "https://img5.tianyancha.com/logo/lll/example15.png@!f_200x200",
+ "name": "杭州游戏娱乐科技有限公司",
+ "orgType": "有限责任公司(自然人投资或控股)",
+ "pencertileScore": 6789,
+ "percent": "40%",
+ "personType": 1,
+ "regCapital": "2500万人民币",
+ "regStatus": "存续",
+ "withdrawalTime": null
+ }
+ ],
+ "total": 3
+ },
+ "lawsuitInfo": {
+ "entout": {
+ "data": {
+ "administrative": {
+ "cases": [
+ {
+ "c_ah": "(2022)浙01行初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "杭州****食品有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "原告"
+ },
+ {
+ "c_mc": "杭州市****市场监督管理局",
+ "n_dsrlx": "机关团体",
+ "n_ssdw": "被告"
+ }
+ ],
+ "c_gkws_dsr": "原告杭州****食品有限公司,住所地杭州市余杭区****路x号。法定代表人吴某,执行董事兼总经理。委托代理人杨某,浙江****律师事务所律师。被告杭州市****市场监督管理局,住所地杭州市拱墅区****路x号。负责人刘某,局长。委托代理人郭某,该局工作人员。",
+ "c_gkws_pjjg": "驳回原告杭州****食品有限公司的诉讼请求。案件受理费100元,由原告杭州****食品有限公司负担。如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于浙江省高级人民法院。",
+ "c_id": "j7k8l9m0n1o2p3q4r5s6t7u8v9w0x1y2",
+ "c_ssdy": "浙江省",
+ "d_jarq": "2022-12-15",
+ "d_larq": "2022-10-20",
+ "n_ajbs": "g4h5i6j7k8l9m0n1o2p3q4r5s6t7u8v9",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "行政一审",
+ "n_crc": 4567890123,
+ "n_jaay": "行政管理",
+ "n_jaay_tree": "行政管理,工商行政管理,食品药品监督管理",
+ "n_jafs": "判决",
+ "n_jbfy": "杭州市中级人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "行政管理",
+ "n_pj_victory": "败诉",
+ "n_slcx": "一审",
+ "n_ssdw": "原告"
+ }
+ ],
+ "count": {
+ "area_stat": "浙江省(1)",
+ "ay_stat": "行政管理(1)",
+ "count_beigao": 0,
+ "count_jie_beigao": 0,
+ "count_jie_total": 1,
+ "count_total": 1,
+ "jafs_stat": "判决(1)",
+ "larq_stat": "2022(1)"
+ }
+ },
+ "bankrupt": {
+ "cases": [],
+ "count": {
+ "area_stat": "浙江省(0)",
+ "count_total": 0
+ }
+ },
+ "cases_tree": {
+ "administrative": [
+ {
+ "c_ah": "(2022)浙01行初****号",
+ "case_type": 400,
+ "n_ajbs": "g4h5i6j7k8l9m0n1o2p3q4r5s6t7u8v9",
+ "stage_type": 1
+ }
+ ],
+ "bankrupt": [],
+ "civil": [
+ {
+ "c_ah": "(2023)浙0110民初****号",
+ "case_type": 300,
+ "n_ajbs": "h5i6j7k8l9m0n1o2p3q4r5s6t7u8v9w0",
+ "stage_type": 1
+ },
+ {
+ "c_ah": "(2022)浙0110民初****号",
+ "case_type": 300,
+ "n_ajbs": "i6j7k8l9m0n1o2p3q4r5s6t7u8v9w0x1",
+ "stage_type": 1
+ },
+ {
+ "c_ah": "(2023)浙01民终****号",
+ "case_type": 300,
+ "n_ajbs": "j7k8l9m0n1o2p3q4r5s6t7u8v9w0x1y2",
+ "stage_type": 2
+ }
+ ],
+ "criminal": [
+ {
+ "c_ah": "(2023)浙01刑初****号",
+ "case_type": 200,
+ "n_ajbs": "k8l9m0n1o2p3q4r5s6t7u8v9w0x1y2z3",
+ "stage_type": 1
+ }
+ ],
+ "implement": [
+ {
+ "c_ah": "(2023)浙0110执****号",
+ "case_type": 500,
+ "n_ajbs": "l9m0n1o2p3q4r5s6t7u8v9w0x1y2z3a4",
+ "stage_type": 1
+ }
+ ],
+ "preservation": [
+ {
+ "c_ah": "(2023)浙0110财保****号",
+ "case_type": 700,
+ "n_ajbs": "m0n1o2p3q4r5s6t7u8v9w0x1y2z3a4b5",
+ "stage_type": 1
+ }
+ ]
+ },
+ "civil": {
+ "cases": [
+ {
+ "c_ah": "(2023)浙0110民初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "杭州****食品有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被告"
+ },
+ {
+ "c_mc": "王某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "原告"
+ }
+ ],
+ "c_gkws_dsr": "原告王某,男,1985年7月15日生,汉族,住杭州市西湖区****小区x号楼x号。委托代理人徐某,浙江****律师事务所律师。被告杭州****食品有限公司,住所地杭州市余杭区****路x号。法定代表人吴某,执行董事兼总经理。委托代理人沈某,浙江****律师事务所律师。",
+ "c_gkws_pjjg": "一、被告杭州****食品有限公司于本判决生效之日起十日内向原告王某支付产品质量损害赔偿金200000元;二、被告杭州****食品有限公司于本判决生效之日起十日内向原告王某支付精神损害抚慰金50000元;三、驳回原告王某的其他诉讼请求。如果未按本判决指定的期间履行给付金钱义务,应当依照《中华人民共和国民事诉讼法》第二百六十条规定,加倍支付迟延履行期间的债务利息。案件受理费8500元,由原告王某负担3500元,被告杭州****食品有限公司负担5000元。如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于杭州市中级人民法院。",
+ "c_id": "k8l9m0n1o2p3q4r5s6t7u8v9w0x1y2z3",
+ "c_ssdy": "浙江省",
+ "d_jarq": "2023-04-15",
+ "d_larq": "2023-02-20",
+ "n_ajbs": "h5i6j7k8l9m0n1o2p3q4r5s6t7u8v9w0",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "民事一审",
+ "n_crc": 5678901234,
+ "n_jaay": "产品责任纠纷",
+ "n_jaay_tree": "侵权责任纠纷,产品责任纠纷",
+ "n_jafs": "判决",
+ "n_jbfy": "杭州市余杭区人民法院",
+ "n_jbfy_cj": "基层人民法院",
+ "n_laay": "产品责任纠纷",
+ "n_pj_victory": "败诉",
+ "n_qsbdje": 350000,
+ "n_qsbdje_level": 18,
+ "n_slcx": "一审",
+ "n_ssdw": "被告"
+ },
+ {
+ "c_ah": "(2022)浙0110民初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "杭州****食品有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "原告"
+ },
+ {
+ "c_mc": "杭州****贸易有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被告"
+ }
+ ],
+ "c_gkws_dsr": "原告杭州****食品有限公司,住所地杭州市余杭区****路x号。法定代表人吴某,执行董事兼总经理。委托代理人沈某,浙江****律师事务所律师。被告杭州****贸易有限公司,住所地杭州市江干区****路x号。法定代表人赵某,董事长。委托代理人陆某,浙江****律师事务所律师。",
+ "c_gkws_pjjg": "一、被告杭州****贸易有限公司于本判决生效之日起十日内向原告杭州****食品有限公司支付货款450000元及违约金67500元;二、驳回原告杭州****食品有限公司的其他诉讼请求。如果未按本判决指定的期间履行给付金钱义务,应当依照《中华人民共和国民事诉讼法》第二百六十条规定,加倍支付迟延履行期间的债务利息。案件受理费9175元,由原告杭州****食品有限公司负担2175元,被告杭州****贸易有限公司负担7000元。如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于杭州市中级人民法院。",
+ "c_id": "l9m0n1o2p3q4r5s6t7u8v9w0x1y2z3a4",
+ "c_ssdy": "浙江省",
+ "d_jarq": "2022-11-25",
+ "d_larq": "2022-09-20",
+ "n_ajbs": "i6j7k8l9m0n1o2p3q4r5s6t7u8v9w0x1",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "民事一审",
+ "n_crc": 6789012345,
+ "n_jaay": "合同、准合同纠纷",
+ "n_jaay_tree": "合同、准合同纠纷,合同纠纷,买卖合同纠纷",
+ "n_jafs": "判决",
+ "n_jbfy": "杭州市余杭区人民法院",
+ "n_jbfy_cj": "基层人民法院",
+ "n_laay": "合同、准合同纠纷",
+ "n_pj_victory": "部分胜诉",
+ "n_qsbdje": 550000,
+ "n_qsbdje_level": 19,
+ "n_slcx": "一审",
+ "n_ssdw": "原告"
+ },
+ {
+ "c_ah": "(2023)浙01民终****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "杭州****食品有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "上诉人"
+ },
+ {
+ "c_mc": "王某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被上诉人"
+ }
+ ],
+ "c_gkws_dsr": "上诉人(原审被告)杭州****食品有限公司,住所地杭州市余杭区****路x号。法定代表人吴某,执行董事兼总经理。委托代理人沈某,浙江****律师事务所律师。被上诉人(原审原告)王某,男,1985年7月15日生,汉族,住杭州市西湖区****小区x号楼x号。委托代理人徐某,浙江****律师事务所律师。",
+ "c_gkws_pjjg": "驳回上诉,维持原判。二审案件受理费8500元,由上诉人杭州****食品有限公司负担。本判决为终审判决。",
+ "c_id": "m0n1o2p3q4r5s6t7u8v9w0x1y2z3a4b5",
+ "c_ssdy": "浙江省",
+ "d_jarq": "2023-06-10",
+ "d_larq": "2023-05-15",
+ "n_ajbs": "j7k8l9m0n1o2p3q4r5s6t7u8v9w0x1y2",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "民事二审",
+ "n_crc": 7890123456,
+ "n_jaay": "产品责任纠纷",
+ "n_jaay_tree": "侵权责任纠纷,产品责任纠纷",
+ "n_jafs": "维持",
+ "n_jbfy": "杭州市中级人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "产品责任纠纷",
+ "n_pj_victory": "败诉",
+ "n_qsbdje": 350000,
+ "n_qsbdje_level": 18,
+ "n_slcx": "二审",
+ "n_ssdw": "上诉人"
+ }
+ ],
+ "count": {
+ "area_stat": "浙江省(3)",
+ "ay_stat": "产品责任纠纷(2),合同、准合同纠纷(1)",
+ "count_beigao": 1,
+ "count_jie_beigao": 1,
+ "count_jie_total": 3,
+ "count_total": 3,
+ "jafs_stat": "判决(2),维持(1)",
+ "larq_stat": "2022(1),2023(2)",
+ "money_beigao": 1,
+ "money_jie_beigao": 1,
+ "money_jie_total": 3,
+ "money_total": 3
+ }
+ },
+ "count": {
+ "area_stat": "浙江省(7)",
+ "ay_stat": "产品责任纠纷(2),合同、准合同纠纷(1),行政管理(1),生产、销售有毒、有害食品罪(1),执行案件(1),财产保全(1)",
+ "count_beigao": 2,
+ "count_jie_beigao": 2,
+ "count_jie_total": 7,
+ "count_total": 7,
+ "jafs_stat": "判决(3),维持(1),有期徒刑(1),执行(1),裁定(1)",
+ "larq_stat": "2022(2),2023(5)",
+ "money_beigao": 1,
+ "money_jie_beigao": 1,
+ "money_jie_total": 3,
+ "money_total": 3
+ },
+ "crc": 3456789012,
+ "criminal": {
+ "cases": [
+ {
+ "c_ah": "(2023)浙01刑初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "杭州****食品有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被告单位"
+ },
+ {
+ "c_mc": "吴某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被告人"
+ },
+ {
+ "c_mc": "章某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被告人"
+ }
+ ],
+ "c_gkws_dsr": "公诉机关杭州市****区人民检察院。被告单位杭州****食品有限公司,住所地杭州市余杭区****路x号。被告人吴某,男,1972年9月20日生,汉族,浙江省人,大学文化,系杭州****食品有限公司法定代表人。因涉嫌犯生产、销售有毒、有害食品罪,于2023年3月10日被杭州市公安局刑事拘留,同年4月15日被逮捕,现羁押于杭州市第一看守所。辩护人梁某,浙江****律师事务所律师。被告人章某,男,1975年11月5日生,汉族,浙江省人,大学文化,系杭州****食品有限公司总经理。因涉嫌犯生产、销售有毒、有害食品罪,于2023年3月10日被杭州市公安局刑事拘留,同年4月15日被逮捕,现羁押于杭州市第一看守所。辩护人张某,浙江****律师事务所律师。",
+ "c_gkws_pjjg": "一、被告单位杭州****食品有限公司犯生产、销售有毒、有害食品罪,处罚金人民币二百万元;二、被告人吴某犯生产、销售有毒、有害食品罪,判处有期徒刑五年,并处罚金人民币二十万元;三、被告人章某犯生产、销售有毒、有害食品罪,判处有期徒刑四年,并处罚金人民币十五万元。如不服本判决,可在接到判决书的第二日起十日内,通过本院或者直接向浙江省高级人民法院提出上诉。被告人如果提出上诉,可以委托辩护人提出上诉状。",
+ "c_id": "n1o2p3q4r5s6t7u8v9w0x1y2z3a4b5c6",
+ "c_ssdy": "浙江省",
+ "d_jarq": "2023-07-20",
+ "d_larq": "2023-05-25",
+ "n_ajbs": "k8l9m0n1o2p3q4r5s6t7u8v9w0x1y2z3",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "刑事一审",
+ "n_crc": 8901234567,
+ "n_jaay": "生产、销售有毒、有害食品罪",
+ "n_jaay_tree": "危害公共安全罪,危害公共安全罪,生产、销售有毒、有害食品罪",
+ "n_jafs": "有期徒刑",
+ "n_jbfy": "杭州市中级人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "生产、销售有毒、有害食品罪",
+ "n_pj_victory": "败诉",
+ "n_slcx": "一审",
+ "n_ssdw": "被告单位"
+ }
+ ],
+ "count": {
+ "area_stat": "浙江省(1)",
+ "ay_stat": "生产、销售有毒、有害食品罪(1)",
+ "count_beigao": 0,
+ "count_jie_beigao": 0,
+ "count_jie_total": 1,
+ "count_total": 1,
+ "jafs_stat": "有期徒刑(1)",
+ "larq_stat": "2023(1)",
+ "money_beigao": 0,
+ "money_jie_beigao": 0,
+ "money_jie_total": 0,
+ "money_total": 0
+ }
+ },
+ "implement": {
+ "cases": [
+ {
+ "c_ah": "(2023)浙0110执****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "王某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "申请执行人"
+ },
+ {
+ "c_mc": "杭州****食品有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被执行人"
+ }
+ ],
+ "c_gkws_dsr": "申请执行人王某,男,1985年7月15日生,汉族,住杭州市西湖区****小区x号楼x号。委托代理人徐某,浙江****律师事务所律师。被执行人杭州****食品有限公司,住所地杭州市余杭区****路x号。法定代表人吴某,执行董事兼总经理。",
+ "c_gkws_pjjg": "一、被执行人杭州****食品有限公司应向申请执行人王某支付产品质量损害赔偿金200000元、精神损害抚慰金50000元及迟延履行期间的利息;二、若被执行人未按时履行上述义务,本院将依法评估、拍卖其名下的财产,所得价款优先清偿上述债务。",
+ "c_id": "o2p3q4r5s6t7u8v9w0x1y2z3a4b5c6d7",
+ "c_ssdy": "浙江省",
+ "d_jarq": "2023-06-25",
+ "d_larq": "2023-06-15",
+ "n_ajbs": "l9m0n1o2p3q4r5s6t7u8v9w0x1y2z3a4",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "执行案件",
+ "n_crc": 9012345678,
+ "n_jaay": "执行案件",
+ "n_jaay_tree": "执行案件,执行实施类",
+ "n_jafs": "执行",
+ "n_jbfy": "杭州市余杭区人民法院",
+ "n_jbfy_cj": "基层人民法院",
+ "n_laay": "执行案件",
+ "n_slcx": "执行",
+ "n_ssdw": "被执行人"
+ }
+ ],
+ "count": {
+ "area_stat": "浙江省(1)",
+ "count_total": 1
+ }
+ },
+ "preservation": {
+ "cases": [
+ {
+ "c_ah": "(2023)浙0110财保****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "王某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "申请人"
+ },
+ {
+ "c_mc": "杭州****食品有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被申请人"
+ }
+ ],
+ "c_gkws_dsr": "申请人王某,男,1985年7月15日生,汉族,住杭州市西湖区****小区x号楼x号。委托代理人徐某,浙江****律师事务所律师。被申请人杭州****食品有限公司,住所地杭州市余杭区****路x号。法定代表人吴某,执行董事兼总经理。",
+ "c_gkws_pjjg": "冻结被申请人杭州****食品有限公司名下银行账户(账号:****)中的存款350000元,冻结期限为一年。",
+ "c_id": "p3q4r5s6t7u8v9w0x1y2z3a4b5c6d7e8",
+ "c_ssdy": "浙江省",
+ "d_jarq": "2023-02-15",
+ "d_larq": "2023-02-10",
+ "n_ajbs": "m0n1o2p3q4r5s6t7u8v9w0x1y2z3a4b5",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "财产保全",
+ "n_crc": 1234567890,
+ "n_jaay": "财产保全",
+ "n_jaay_tree": "财产保全,诉前财产保全",
+ "n_jafs": "裁定",
+ "n_jbfy": "杭州市余杭区人民法院",
+ "n_jbfy_cj": "基层人民法院",
+ "n_laay": "财产保全",
+ "n_slcx": "保全",
+ "n_ssdw": "被申请人"
+ }
+ ],
+ "count": {
+ "area_stat": "浙江省(1)",
+ "count_total": 1
+ }
+ }
+ }
+ },
+ "sxbzxr": {
+ "data": {
+ "sxbzxr": []
+ }
+ },
+ "xgbzxr": {
+ "data": {
+ "xgbzxr": []
+ }
+ }
+ },
+ "orgName": "杭州****食品有限公司",
+ "pName": "吴某",
+ "punishment_info": {
+ "items": [
+ {
+ "content": "责令整改并加强用户信息保护,处罚款人民币8万元",
+ "decisionDate": "2023-06-30",
+ "departmentName": "杭州市网信办",
+ "evidence": "用户投诉个人信息泄露",
+ "legalPersonName": "刘刚",
+ "pecuniary": "80000",
+ "punishName": "杭州互联网服务有限公司",
+ "punishNumber": "杭网信罚〔2023〕第0702号",
+ "punishStatus": "已执行",
+ "reason": "违反《网络安全法》,用户个人信息保护不当",
+ "remark": "",
+ "source": "网信办",
+ "type": "信息安全",
+ "typeSecond": "信息泄露"
+ },
+ {
+ "content": "责令完善商家信息公示,并处罚款人民币4万元",
+ "decisionDate": "2023-10-18",
+ "departmentName": "杭州市市场监督管理局",
+ "evidence": "平台商家资质信息缺失",
+ "legalPersonName": "刘刚",
+ "pecuniary": "40000",
+ "punishName": "杭州互联网服务有限公司",
+ "punishNumber": "杭市监罚〔2023〕第1020号",
+ "punishStatus": "已执行",
+ "reason": "违反《电子商务法》,平台内经营者信息公示不完整",
+ "remark": "",
+ "source": "市场监督管理局",
+ "type": "电商违法",
+ "typeSecond": "信息公示"
+ }
+ ],
+ "total": 2
+ },
+ "relationship": [
+ "sh",
+ "lp",
+ "tm"
+ ],
+ "stockHolderItem": {
+ "investDate": "",
+ "investRate": "100.0%",
+ "orgHolderName": "吴某",
+ "orgHolderType": "自然人",
+ "subscriptAmt": 1500
+ }
+ },
+ {
+ "abnormal_info": {
+ "items": [
+ {
+ "putDate": "2024-04-12",
+ "putDepartment": "成都市高新区市场监督管理局",
+ "putReason": "通过登记的住所或者经营场所无法联系的",
+ "removeDate": "",
+ "removeDepartment": "",
+ "removeReason": ""
+ },
+ {
+ "putDate": "2023-11-08",
+ "putDepartment": "成都市高新区市场监督管理局",
+ "putReason": "未按规定期限公示即时信息的",
+ "removeDate": "2024-02-20",
+ "removeDepartment": "成都市高新区市场监督管理局",
+ "removeReason": "已完成信息更新"
+ },
+ {
+ "putDate": "2024-01-15",
+ "putDepartment": "成都市高新区市场监督管理局",
+ "putReason": "未依照《企业信息公示暂行条例》第八条规定的期限公示年度报告的",
+ "removeDate": "",
+ "removeDepartment": "",
+ "removeReason": ""
+ }
+ ],
+ "total": 3
+ },
+ "adminPenalty": [
+ {
+ "content": "",
+ "decisionDate": "2022-11-10",
+ "departmentName": "成都市****教育局",
+ "legalPersonName": "刘某",
+ "punishNumber": "成教罚字(2022)****号",
+ "reason": "未经批准增设培训项目",
+ "type": "罚款"
+ }
+ ],
+ "basicInfo": {
+ "apprdate": "2022-12-15",
+ "base": "sc",
+ "candate": "",
+ "city": "成都市",
+ "companyOrgType": "有限责任公司(自然人投资或控股)",
+ "creditCode": "91510100MA6******",
+ "district": "武侯区",
+ "estiblishTime": "2017-03-18",
+ "industry": "教育",
+ "industry_code": "P",
+ "legalPersonName": "刘某",
+ "name": "成都****教育科技有限公司",
+ "nic_code": "P8294",
+ "nic_name": "教育-教育-教育辅助服务-教育辅助服务",
+ "opscope": "教育软件开发;教育咨询服务;教育辅助服务;文化艺术培训;语言培训;技能培训;网络技术服务;互联网数据服务;教育教学检测和评价活动。",
+ "province": "四川省",
+ "reccap": 0,
+ "reccapcur": "人民币",
+ "regCapital": "1000.000000万人民币",
+ "regCapitalCurrency": "人民币",
+ "regNumber": "510107******",
+ "regStatus": "存续",
+ "regorg": "成都市市场监督管理局",
+ "revdate": "2022-12-15",
+ "staffList": {
+ "result": [
+ {
+ "name": "刘某",
+ "type": "2",
+ "typeJoin": [
+ "执行董事"
+ ]
+ },
+ {
+ "name": "杨某",
+ "type": "3",
+ "typeJoin": [
+ "总经理"
+ ]
+ }
+ ]
+ },
+ "type": "1"
+ },
+ "dishonestExecutedPerson": [],
+ "executedPerson": [],
+ "financing_history": {
+ "items": [
+ {
+ "companyName": "成都物流运输有限公司",
+ "date": null,
+ "investorName": "顺丰投资,普洛斯",
+ "money": "1.5亿人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1675180800000,
+ "round": "B轮",
+ "share": "22%",
+ "value": "6.8亿人民币"
+ },
+ {
+ "companyName": "成都物流运输有限公司",
+ "date": null,
+ "investorName": "钟鼎资本,华创资本",
+ "money": "5000万人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1643644800000,
+ "round": "A轮",
+ "share": "28%",
+ "value": "1.8亿人民币"
+ }
+ ],
+ "total": 2
+ },
+ "fsource": "1",
+ "invest_history": {
+ "items": [
+ {
+ "alias": "智慧物流",
+ "amount": null,
+ "base": "cd",
+ "business_scope": "智慧物流技术研发;物流信息服务;供应链管理服务;仓储服务;装卸搬运服务;运输代理服务;货物运输代理;国际货物运输代理;技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广。",
+ "category": "软件和信息技术服务业",
+ "creditCode": "91510100MA01P7Q8R9",
+ "estiblishTime": 1667232000000,
+ "id": 50123456,
+ "legalPersonId": 2301234567,
+ "legalPersonName": "唐经理",
+ "logo": "https://img5.tianyancha.com/logo/lll/example16.png@!f_200x200",
+ "name": "成都智慧物流科技有限公司",
+ "orgType": "有限责任公司(自然人投资或控股)",
+ "pencertileScore": 7456,
+ "percent": "60%",
+ "personType": 1,
+ "regCapital": "4000万人民币",
+ "regStatus": "存续",
+ "withdrawalTime": null
+ }
+ ],
+ "total": 2
+ },
+ "lawsuitInfo": {
+ "entout": {
+ "data": {
+ "administrative": {
+ "cases": [
+ {
+ "c_ah": "(2022)川01行初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "成都****教育科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "原告"
+ },
+ {
+ "c_mc": "成都市****教育局",
+ "n_dsrlx": "机关团体",
+ "n_ssdw": "被告"
+ }
+ ],
+ "c_gkws_dsr": "原告成都****教育科技有限公司,住所地成都市武侯区****路x号。法定代表人刘某,执行董事兼总经理。委托代理人王某,四川****律师事务所律师。被告成都市****教育局,住所地成都市锦江区****路x号。负责人张某,局长。委托代理人周某,该局工作人员。",
+ "c_gkws_pjjg": "撤销被告成都市****教育局于2022年11月10日作出的成教罚字(2022)****号《行政处罚决定书》。案件受理费50元,由被告成都市****教育局负担。如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于四川省高级人民法院。",
+ "c_id": "q4r5s6t7u8v9w0x1y2z3a4b5c6d7e8f9",
+ "c_ssdy": "四川省",
+ "d_jarq": "2023-02-10",
+ "d_larq": "2022-12-15",
+ "n_ajbs": "n1o2p3q4r5s6t7u8v9w0x1y2z3a4b5c6",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "行政一审",
+ "n_crc": 2345678901,
+ "n_jaay": "行政管理",
+ "n_jaay_tree": "行政管理,教育行政管理,教育培训机构管理",
+ "n_jafs": "判决",
+ "n_jbfy": "成都市中级人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "行政管理",
+ "n_pj_victory": "胜诉",
+ "n_slcx": "一审",
+ "n_ssdw": "原告"
+ }
+ ],
+ "count": {
+ "area_stat": "四川省(1)",
+ "ay_stat": "行政管理(1)",
+ "count_beigao": 0,
+ "count_jie_beigao": 0,
+ "count_jie_total": 1,
+ "count_total": 1,
+ "jafs_stat": "判决(1)",
+ "larq_stat": "2022(1)"
+ }
+ },
+ "bankrupt": {
+ "cases": [],
+ "count": {
+ "area_stat": "四川省(0)",
+ "count_total": 0
+ }
+ },
+ "cases_tree": {
+ "administrative": [
+ {
+ "c_ah": "(2022)川01行初****号",
+ "case_type": 400,
+ "n_ajbs": "n1o2p3q4r5s6t7u8v9w0x1y2z3a4b5c6",
+ "stage_type": 1
+ }
+ ],
+ "bankrupt": [],
+ "civil": [
+ {
+ "c_ah": "(2023)川0107民初****号",
+ "case_type": 300,
+ "n_ajbs": "o2p3q4r5s6t7u8v9w0x1y2z3a4b5c6d7",
+ "stage_type": 1
+ },
+ {
+ "c_ah": "(2022)川0107民初****号",
+ "case_type": 300,
+ "n_ajbs": "p3q4r5s6t7u8v9w0x1y2z3a4b5c6d7e8",
+ "stage_type": 1
+ },
+ {
+ "c_ah": "(2023)川01民终****号",
+ "case_type": 300,
+ "n_ajbs": "q4r5s6t7u8v9w0x1y2z3a4b5c6d7e8f9",
+ "stage_type": 2
+ }
+ ],
+ "criminal": [],
+ "implement": [
+ {
+ "c_ah": "(2022)川0107执****号",
+ "case_type": 500,
+ "n_ajbs": "r5s6t7u8v9w0x1y2z3a4b5c6d7e8f9g0",
+ "stage_type": 1
+ }
+ ],
+ "preservation": []
+ },
+ "civil": {
+ "cases": [
+ {
+ "c_ah": "(2023)川0107民初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "成都****教育科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被告"
+ },
+ {
+ "c_mc": "赵某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "原告"
+ }
+ ],
+ "c_gkws_dsr": "原告赵某,男,1988年4月5日生,汉族,住成都市高新区****小区x号楼x号。委托代理人李某,四川****律师事务所律师。被告成都****教育科技有限公司,住所地成都市武侯区****路x号。法定代表人刘某,执行董事兼总经理。委托代理人陈某,四川****律师事务所律师。",
+ "c_gkws_pjjg": "一、被告成都****教育科技有限公司于本判决生效之日起十日内向原告赵某返还培训费用15000元;二、被告成都****教育科技有限公司于本判决生效之日起十日内向原告赵某支付违约金3000元;三、驳回原告赵某的其他诉讼请求。如果未按本判决指定的期间履行给付金钱义务,应当依照《中华人民共和国民事诉讼法》第二百六十条规定,加倍支付迟延履行期间的债务利息。案件受理费400元,由原告赵某负担100元,被告成都****教育科技有限公司负担300元。如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于成都市中级人民法院。",
+ "c_id": "r5s6t7u8v9w0x1y2z3a4b5c6d7e8f9g0",
+ "c_ssdy": "四川省",
+ "d_jarq": "2023-04-20",
+ "d_larq": "2023-03-15",
+ "n_ajbs": "o2p3q4r5s6t7u8v9w0x1y2z3a4b5c6d7",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "民事一审",
+ "n_crc": 3456789012,
+ "n_jaay": "合同、准合同纠纷",
+ "n_jaay_tree": "合同、准合同纠纷,合同纠纷,教育培训合同纠纷",
+ "n_jafs": "判决",
+ "n_jbfy": "成都市武侯区人民法院",
+ "n_jbfy_cj": "基层人民法院",
+ "n_laay": "合同、准合同纠纷",
+ "n_pj_victory": "败诉",
+ "n_qsbdje": 25000,
+ "n_qsbdje_level": 15,
+ "n_slcx": "一审",
+ "n_ssdw": "被告"
+ },
+ {
+ "c_ah": "(2022)川0107民初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "成都****教育科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "原告"
+ },
+ {
+ "c_mc": "钟某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被告"
+ }
+ ],
+ "c_gkws_dsr": "原告成都****教育科技有限公司,住所地成都市武侯区****路x号。法定代表人刘某,执行董事兼总经理。委托代理人陈某,四川****律师事务所律师。被告钟某,男,1982年7月12日生,汉族,住成都市青羊区****小区x号楼x号。",
+ "c_gkws_pjjg": "一、被告钟某于本判决生效之日起十日内向原告成都****教育科技有限公司支付教育培训费用25000元;二、驳回原告成都****教育科技有限公司的其他诉讼请求。如果未按本判决指定的期间履行给付金钱义务,应当依照《中华人民共和国民事诉讼法》第二百六十条规定,加倍支付迟延履行期间的债务利息。案件受理费500元,由原告成都****教育科技有限公司负担200元,被告钟某负担300元。如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于成都市中级人民法院。",
+ "c_id": "s6t7u8v9w0x1y2z3a4b5c6d7e8f9g0h1",
+ "c_ssdy": "四川省",
+ "d_jarq": "2022-11-15",
+ "d_larq": "2022-09-20",
+ "n_ajbs": "p3q4r5s6t7u8v9w0x1y2z3a4b5c6d7e8",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "民事一审",
+ "n_crc": 4567890123,
+ "n_jaay": "合同、准合同纠纷",
+ "n_jaay_tree": "合同、准合同纠纷,合同纠纷,教育培训合同纠纷",
+ "n_jafs": "判决",
+ "n_jbfy": "成都市武侯区人民法院",
+ "n_jbfy_cj": "基层人民法院",
+ "n_laay": "合同、准合同纠纷",
+ "n_pj_victory": "部分胜诉",
+ "n_qsbdje": 30000,
+ "n_qsbdje_level": 15,
+ "n_slcx": "一审",
+ "n_ssdw": "原告"
+ },
+ {
+ "c_ah": "(2023)川01民终****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "成都****教育科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "上诉人"
+ },
+ {
+ "c_mc": "赵某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被上诉人"
+ }
+ ],
+ "c_gkws_dsr": "上诉人(原审被告)成都****教育科技有限公司,住所地成都市武侯区****路x号。法定代表人刘某,执行董事兼总经理。委托代理人陈某,四川****律师事务所律师。被上诉人(原审原告)赵某,男,1988年4月5日生,汉族,住成都市高新区****小区x号楼x号。委托代理人李某,四川****律师事务所律师。",
+ "c_gkws_pjjg": "驳回上诉,维持原判。二审案件受理费400元,由上诉人成都****教育科技有限公司负担。本判决为终审判决。",
+ "c_id": "t7u8v9w0x1y2z3a4b5c6d7e8f9g0h1i2",
+ "c_ssdy": "四川省",
+ "d_jarq": "2023-06-15",
+ "d_larq": "2023-05-20",
+ "n_ajbs": "q4r5s6t7u8v9w0x1y2z3a4b5c6d7e8f9",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "民事二审",
+ "n_crc": 5678901234,
+ "n_jaay": "合同、准合同纠纷",
+ "n_jaay_tree": "合同、准合同纠纷,合同纠纷,教育培训合同纠纷",
+ "n_jafs": "维持",
+ "n_jbfy": "成都市中级人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "合同、准合同纠纷",
+ "n_pj_victory": "败诉",
+ "n_qsbdje": 25000,
+ "n_qsbdje_level": 15,
+ "n_slcx": "二审",
+ "n_ssdw": "上诉人"
+ }
+ ],
+ "count": {
+ "area_stat": "四川省(3)",
+ "ay_stat": "合同、准合同纠纷(3)",
+ "count_beigao": 1,
+ "count_jie_beigao": 1,
+ "count_jie_total": 3,
+ "count_total": 3,
+ "jafs_stat": "判决(2),维持(1)",
+ "larq_stat": "2022(1),2023(2)",
+ "money_beigao": 1,
+ "money_jie_beigao": 1,
+ "money_jie_total": 3,
+ "money_total": 3
+ }
+ },
+ "count": {
+ "area_stat": "四川省(5)",
+ "ay_stat": "合同、准合同纠纷(3),行政管理(1),执行案件(1)",
+ "count_beigao": 1,
+ "count_jie_beigao": 1,
+ "count_jie_total": 5,
+ "count_total": 5,
+ "jafs_stat": "判决(3),维持(1),执行(1)",
+ "larq_stat": "2022(2),2023(3)",
+ "money_beigao": 1,
+ "money_jie_beigao": 1,
+ "money_jie_total": 3,
+ "money_total": 3
+ },
+ "crc": 1234567890,
+ "criminal": {
+ "cases": [],
+ "count": {
+ "area_stat": "四川省(0)",
+ "count_total": 0
+ }
+ },
+ "implement": {
+ "cases": [
+ {
+ "c_ah": "(2022)川0107执****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "成都****教育科技有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "申请执行人"
+ },
+ {
+ "c_mc": "钟某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被执行人"
+ }
+ ],
+ "c_gkws_dsr": "申请执行人成都****教育科技有限公司,住所地成都市武侯区****路x号。法定代表人刘某,执行董事兼总经理。委托代理人陈某,四川****律师事务所律师。被执行人钟某,男,1982年7月12日生,汉族,住成都市青羊区****小区x号楼x号。",
+ "c_gkws_pjjg": "一、被执行人钟某应向申请执行人成都****教育科技有限公司支付教育培训费用25000元及迟延履行期间的利息;二、若被执行人未按时履行上述义务,本院将依法评估、拍卖其名下的财产,所得价款优先清偿上述债务。",
+ "c_id": "u8v9w0x1y2z3a4b5c6d7e8f9g0h1i2j3",
+ "c_ssdy": "四川省",
+ "d_jarq": "2022-12-10",
+ "d_larq": "2022-11-20",
+ "n_ajbs": "r5s6t7u8v9w0x1y2z3a4b5c6d7e8f9g0",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "执行案件",
+ "n_crc": 6789012345,
+ "n_jaay": "执行案件",
+ "n_jaay_tree": "执行案件,执行实施类",
+ "n_jafs": "执行",
+ "n_jbfy": "成都市武侯区人民法院",
+ "n_jbfy_cj": "基层人民法院",
+ "n_laay": "执行案件",
+ "n_slcx": "执行",
+ "n_ssdw": "申请执行人"
+ }
+ ],
+ "count": {
+ "area_stat": "四川省(1)",
+ "count_total": 1
+ }
+ },
+ "preservation": {
+ "cases": [],
+ "count": {
+ "area_stat": "四川省(0)",
+ "count_total": 0
+ }
+ }
+ }
+ },
+ "sxbzxr": {
+ "data": {
+ "sxbzxr": []
+ }
+ },
+ "xgbzxr": {
+ "data": {
+ "xgbzxr": []
+ }
+ }
+ },
+ "orgName": "成都****教育科技有限公司",
+ "pName": "刘某",
+ "punishment_info": {
+ "items": [
+ {
+ "content": "责令卸载超载货物,并处罚款人民币2万元",
+ "decisionDate": "2023-04-25",
+ "departmentName": "成都市交通运输局",
+ "evidence": "路政检查发现车辆超载",
+ "legalPersonName": "赵军",
+ "pecuniary": "20000",
+ "punishName": "成都物流运输有限公司",
+ "punishNumber": "蓉交罚〔2023〕第0427号",
+ "punishStatus": "已执行",
+ "reason": "违反《道路运输条例》,超载运输",
+ "remark": "",
+ "source": "交通运输局",
+ "type": "运输违法",
+ "typeSecond": "超载运输"
+ },
+ {
+ "content": "责令维修车辆达到排放标准,并处罚款人民币1.5万元",
+ "decisionDate": "2023-08-12",
+ "departmentName": "成都市环保局",
+ "evidence": "环保检测尾气排放不达标",
+ "legalPersonName": "赵军",
+ "pecuniary": "15000",
+ "punishName": "成都物流运输有限公司",
+ "punishNumber": "蓉环罚〔2023〕第0815号",
+ "punishStatus": "已执行",
+ "reason": "违反《大气污染防治法》,车辆尾气排放超标",
+ "remark": "",
+ "source": "环保局",
+ "type": "环境违法",
+ "typeSecond": "尾气超标"
+ },
+ {
+ "content": "责令停业整顿,并处罚款人民币10万元",
+ "decisionDate": "2024-01-08",
+ "departmentName": "成都市应急管理局",
+ "evidence": "安全检查发现危险品运输违规",
+ "legalPersonName": "赵军",
+ "pecuniary": "100000",
+ "punishName": "成都物流运输有限公司",
+ "punishNumber": "蓉应急罚〔2024〕第0110号",
+ "punishStatus": "已执行",
+ "reason": "违反《安全生产法》,危险品运输安全措施不到位",
+ "remark": "",
+ "source": "应急管理局",
+ "type": "安全生产",
+ "typeSecond": "危险品运输"
+ }
+ ],
+ "total": 3
+ },
+ "relationship": [
+ "sh",
+ "lp",
+ "tm"
+ ],
+ "stockHolderItem": {
+ "investDate": "",
+ "investRate": "100.0%",
+ "orgHolderName": "刘某",
+ "orgHolderType": "自然人",
+ "subscriptAmt": 1000
+ }
+ },
+ {
+ "abnormal_info": {
+ "items": [
+ {
+ "putDate": "2023-06-20",
+ "putDepartment": "武汉市洪山区市场监督管理局",
+ "putReason": "未按规定期限公示股权变更信息的",
+ "removeDate": "2023-12-05",
+ "removeDepartment": "武汉市洪山区市场监督管理局",
+ "removeReason": "已公示股权变更信息"
+ },
+ {
+ "putDate": "2024-05-08",
+ "putDepartment": "武汉市洪山区市场监督管理局",
+ "putReason": "通过登记的住所或者经营场所无法联系的",
+ "removeDate": "",
+ "removeDepartment": "",
+ "removeReason": ""
+ }
+ ],
+ "total": 2
+ },
+ "adminPenalty": [
+ {
+ "content": "",
+ "decisionDate": "2022-05-18",
+ "departmentName": "天津市****交通委员会",
+ "legalPersonName": "吴某",
+ "punishNumber": "津交罚字(2022)****号",
+ "reason": "超限运输违规",
+ "type": "罚款"
+ },
+ {
+ "content": "",
+ "decisionDate": "2021-09-05",
+ "departmentName": "天津市****税务局",
+ "legalPersonName": "吴某",
+ "punishNumber": "津税罚字(2021)****号",
+ "reason": "未按期申报纳税",
+ "type": "罚款"
+ }
+ ],
+ "basicInfo": {
+ "apprdate": "2022-08-10",
+ "base": "tj",
+ "candate": "",
+ "city": "天津市",
+ "companyOrgType": "有限责任公司(自然人投资或控股)",
+ "creditCode": "91120100MA7******",
+ "district": "东丽区",
+ "estiblishTime": "2015-06-25",
+ "industry": "交通运输、仓储和邮政业",
+ "industry_code": "G",
+ "legalPersonName": "吴某",
+ "name": "天津****物流有限公司",
+ "nic_code": "G5320",
+ "nic_name": "交通运输、仓储和邮政业-道路运输业-道路货物运输",
+ "opscope": "普通货物运输;仓储服务(危险化学品除外);物流信息咨询;供应链管理;运输代理服务;汽车租赁;货物装卸服务;货运信息咨询服务;国内货运代理;国际货运代理服务。",
+ "province": "天津市",
+ "reccap": 0,
+ "reccapcur": "人民币",
+ "regCapital": "2000.000000万人民币",
+ "regCapitalCurrency": "人民币",
+ "regNumber": "120113******",
+ "regStatus": "存续",
+ "regorg": "天津市市场监督管理局",
+ "revdate": "2022-08-10",
+ "staffList": {
+ "result": [
+ {
+ "name": "吴某",
+ "type": "2",
+ "typeJoin": [
+ "执行董事"
+ ]
+ },
+ {
+ "name": "林某",
+ "type": "3",
+ "typeJoin": [
+ "总经理"
+ ]
+ },
+ {
+ "name": "石某",
+ "type": "4",
+ "typeJoin": [
+ "监事"
+ ]
+ }
+ ]
+ },
+ "type": "1"
+ },
+ "dishonestExecutedPerson": [
+ {
+ "c_ah": "(2023)津0113执****号",
+ "c_fymc": "天津市东丽区人民法院",
+ "c_wfss": "有履行能力而拒不履行生效法律文书确定义务",
+ "c_zxbd": "(2023)津0113执****号",
+ "d_fbsj": "2023-08-15",
+ "d_lrsj": "2023-08-10",
+ "n_fbrw": "1"
+ }
+ ],
+ "executedPerson": [
+ {
+ "c_ah": "(2023)津0113执****号",
+ "c_beizhu": "全部未履行",
+ "c_bzxqk": "全部未履行",
+ "c_zxbd": "(2023)津0113执****号",
+ "d_lrsj": "2023-07-20",
+ "d_zxsj": "",
+ "n_bddqje": 850000
+ }
+ ],
+ "financing_history": {
+ "items": [
+ {
+ "companyName": "武汉教育科技有限公司",
+ "date": null,
+ "investorName": "新东方,好未来",
+ "money": "8000万人民币",
+ "newsTitle": "武汉教育科技获得8000万元B轮融资",
+ "newsUrl": "https://example.com/news6",
+ "pubTime": 1683648000000,
+ "round": "B轮",
+ "share": "18%",
+ "value": "4.4亿人民币"
+ },
+ {
+ "companyName": "武汉教育科技有限公司",
+ "date": null,
+ "investorName": "立思辰,拓维信息",
+ "money": "3000万人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1652112000000,
+ "round": "A轮",
+ "share": "25%",
+ "value": "1.2亿人民币"
+ },
+ {
+ "companyName": "武汉教育科技有限公司",
+ "date": null,
+ "investorName": "华中科技大学基金",
+ "money": "1000万人民币",
+ "newsTitle": "",
+ "newsUrl": "",
+ "pubTime": 1620576000000,
+ "round": "天使轮",
+ "share": "15%",
+ "value": "6667万人民币"
+ }
+ ],
+ "total": 3
+ },
+ "fsource": "1",
+ "invest_history": {
+ "items": [
+ {
+ "alias": "在线教育",
+ "amount": null,
+ "base": "wh",
+ "business_scope": "在线教育软件开发;教育咨询服务;职业技能培训;计算机技术培训;软件开发;技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广;文化艺术交流活动组织;会议及展览服务。",
+ "category": "软件和信息技术服务业",
+ "creditCode": "91420100MA01Q8R9S0",
+ "estiblishTime": 1640995200000,
+ "id": 51234567,
+ "legalPersonId": 2312345678,
+ "legalPersonName": "教授王",
+ "logo": "https://img5.tianyancha.com/logo/lll/example17.png@!f_200x200",
+ "name": "武汉在线教育平台有限公司",
+ "orgType": "有限责任公司(自然人投资或控股)",
+ "pencertileScore": 6234,
+ "percent": "35%",
+ "personType": 1,
+ "regCapital": "2000万人民币",
+ "regStatus": "存续",
+ "withdrawalTime": null
+ },
+ {
+ "alias": "智能教育",
+ "amount": null,
+ "base": "wh",
+ "business_scope": "教育软件开发;人工智能在教育领域的应用;虚拟现实软件开发;增强现实软件开发;教学设备制造;教学设备销售;技术服务、技术开发、技术咨询、技术交流、技术转让、技术推广。",
+ "category": "软件和信息技术服务业",
+ "creditCode": "91420100MA01R9S0T1",
+ "estiblishTime": 1656633600000,
+ "id": 52345678,
+ "legalPersonId": 2323456789,
+ "legalPersonName": "刘教授",
+ "logo": "https://img5.tianyancha.com/logo/lll/example18.png@!f_200x200",
+ "name": "武汉智能教育装备有限公司",
+ "orgType": "有限责任公司(自然人投资或控股)",
+ "pencertileScore": 5678,
+ "percent": "45%",
+ "personType": 1,
+ "regCapital": "1500万人民币",
+ "regStatus": "存续",
+ "withdrawalTime": null
+ }
+ ],
+ "total": 3
+ },
+ "lawsuitInfo": {
+ "entout": {
+ "data": {
+ "administrative": {
+ "cases": [
+ {
+ "c_ah": "(2022)津01行初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "天津****物流有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "原告"
+ },
+ {
+ "c_mc": "天津市****交通委员会",
+ "n_dsrlx": "机关团体",
+ "n_ssdw": "被告"
+ }
+ ],
+ "c_gkws_dsr": "原告天津****物流有限公司,住所地天津市东丽区****大道x号。法定代表人吴某,执行董事兼总经理。委托代理人王某,天津****律师事务所律师。被告天津市****交通委员会,住所地天津市和平区****路x号。负责人陈某,主任。委托代理人马某,该委员会工作人员。",
+ "c_gkws_pjjg": "驳回原告天津****物流有限公司的诉讼请求。案件受理费50元,由原告天津****物流有限公司负担。如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于天津市高级人民法院。",
+ "c_id": "v9w0x1y2z3a4b5c6d7e8f9g0h1i2j3k4",
+ "c_ssdy": "天津市",
+ "d_jarq": "2022-07-25",
+ "d_larq": "2022-06-10",
+ "n_ajbs": "s6t7u8v9w0x1y2z3a4b5c6d7e8f9g0h1",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "行政一审",
+ "n_crc": 7890123456,
+ "n_jaay": "行政管理",
+ "n_jaay_tree": "行政管理,道路交通管理,道路运输管理",
+ "n_jafs": "判决",
+ "n_jbfy": "天津市第一中级人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "行政管理",
+ "n_pj_victory": "败诉",
+ "n_slcx": "一审",
+ "n_ssdw": "原告"
+ }
+ ],
+ "count": {
+ "area_stat": "天津市(1)",
+ "ay_stat": "行政管理(1)",
+ "count_beigao": 0,
+ "count_jie_beigao": 0,
+ "count_jie_total": 1,
+ "count_total": 1,
+ "jafs_stat": "判决(1)",
+ "larq_stat": "2022(1)"
+ }
+ },
+ "bankrupt": {
+ "cases": [],
+ "count": {
+ "area_stat": "天津市(0)",
+ "count_total": 0
+ }
+ },
+ "cases_tree": {
+ "administrative": [
+ {
+ "c_ah": "(2022)津01行初****号",
+ "case_type": 400,
+ "n_ajbs": "s6t7u8v9w0x1y2z3a4b5c6d7e8f9g0h1",
+ "stage_type": 1
+ }
+ ],
+ "bankrupt": [],
+ "civil": [
+ {
+ "c_ah": "(2022)津0113民初****号",
+ "case_type": 300,
+ "n_ajbs": "t7u8v9w0x1y2z3a4b5c6d7e8f9g0h1i2",
+ "stage_type": 1
+ },
+ {
+ "c_ah": "(2023)津0113民初****号",
+ "case_type": 300,
+ "n_ajbs": "u8v9w0x1y2z3a4b5c6d7e8f9g0h1i2j3",
+ "stage_type": 1
+ },
+ {
+ "c_ah": "(2023)津01民终****号",
+ "case_type": 300,
+ "n_ajbs": "v9w0x1y2z3a4b5c6d7e8f9g0h1i2j3k4",
+ "stage_type": 2
+ }
+ ],
+ "criminal": [
+ {
+ "c_ah": "(2023)津0113刑初****号",
+ "case_type": 200,
+ "n_ajbs": "w0x1y2z3a4b5c6d7e8f9g0h1i2j3k4l5",
+ "stage_type": 1
+ }
+ ],
+ "implement": [
+ {
+ "c_ah": "(2023)津0113执****号",
+ "case_type": 500,
+ "n_ajbs": "x1y2z3a4b5c6d7e8f9g0h1i2j3k4l5m6",
+ "stage_type": 1
+ }
+ ],
+ "preservation": []
+ },
+ "civil": {
+ "cases": [
+ {
+ "c_ah": "(2022)津0113民初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "天津****物流有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被告"
+ },
+ {
+ "c_mc": "北京****贸易有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "原告"
+ }
+ ],
+ "c_gkws_dsr": "原告北京****贸易有限公司,住所地北京市朝阳区****路x号。法定代表人张某,总经理。委托代理人赵某,北京****律师事务所律师。被告天津****物流有限公司,住所地天津市东丽区****大道x号。法定代表人吴某,执行董事兼总经理。委托代理人郑某,天津****律师事务所律师。",
+ "c_gkws_pjjg": "一、被告天津****物流有限公司于本判决生效之日起十日内向原告北京****贸易有限公司支付货物损失赔偿金200000元及运费80000元;二、驳回原告北京****贸易有限公司的其他诉讼请求。如果未按本判决指定的期间履行给付金钱义务,应当依照《中华人民共和国民事诉讼法》第二百六十条规定,加倍支付迟延履行期间的债务利息。案件受理费12800元,由原告北京****贸易有限公司负担3800元,被告天津****物流有限公司负担9000元。如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于天津市第一中级人民法院。",
+ "c_id": "w0x1y2z3a4b5c6d7e8f9g0h1i2j3k4l5",
+ "c_ssdy": "天津市",
+ "d_jarq": "2022-11-15",
+ "d_larq": "2022-09-05",
+ "n_ajbs": "t7u8v9w0x1y2z3a4b5c6d7e8f9g0h1i2",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "民事一审",
+ "n_crc": 8901234567,
+ "n_jaay": "合同、无因管理、不当得利",
+ "n_jaay_tree": "合同、无因管理、不当得利,合同纠纷,运输合同纠纷",
+ "n_jafs": "判决",
+ "n_jbfy": "天津市东丽区人民法院",
+ "n_jbfy_cj": "基层人民法院",
+ "n_laay": "合同、无因管理、不当得利",
+ "n_pj_victory": "败诉",
+ "n_qsbdje": 350000,
+ "n_qsbdje_level": 16,
+ "n_slcx": "一审",
+ "n_ssdw": "被告"
+ },
+ {
+ "c_ah": "(2023)津0113民初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "天津****物流有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "原告"
+ },
+ {
+ "c_mc": "河北****制造有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被告"
+ }
+ ],
+ "c_gkws_dsr": "原告天津****物流有限公司,住所地天津市东丽区****大道x号。法定代表人吴某,执行董事兼总经理。委托代理人郑某,天津****律师事务所律师。被告河北****制造有限公司,住所地河北省石家庄市****区x号。法定代表人李某,董事长。委托代理人孙某,河北****律师事务所律师。",
+ "c_gkws_pjjg": "一、被告河北****制造有限公司于本判决生效之日起十日内向原告天津****物流有限公司支付运输服务费850000元;二、驳回原告天津****物流有限公司的其他诉讼请求。如果未按本判决指定的期间履行给付金钱义务,应当依照《中华人民共和国民事诉讼法》第二百六十条规定,加倍支付迟延履行期间的债务利息。案件受理费14900元,由原告天津****物流有限公司负担3900元,被告河北****制造有限公司负担11000元。如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于天津市第一中级人民法院。",
+ "c_id": "x1y2z3a4b5c6d7e8f9g0h1i2j3k4l5m6",
+ "c_ssdy": "天津市",
+ "d_jarq": "2023-05-25",
+ "d_larq": "2023-03-15",
+ "n_ajbs": "u8v9w0x1y2z3a4b5c6d7e8f9g0h1i2j3",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "民事一审",
+ "n_crc": 9012345678,
+ "n_jaay": "合同、无因管理、不当得利",
+ "n_jaay_tree": "合同、无因管理、不当得利,合同纠纷,运输合同纠纷",
+ "n_jafs": "判决",
+ "n_jbfy": "天津市东丽区人民法院",
+ "n_jbfy_cj": "基层人民法院",
+ "n_laay": "合同、无因管理、不当得利",
+ "n_pj_victory": "部分胜诉",
+ "n_qsbdje": 950000,
+ "n_qsbdje_level": 16,
+ "n_slcx": "一审",
+ "n_ssdw": "原告"
+ },
+ {
+ "c_ah": "(2023)津01民终****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "天津****物流有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被上诉人"
+ },
+ {
+ "c_mc": "河北****制造有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "上诉人"
+ }
+ ],
+ "c_gkws_dsr": "上诉人(原审被告)河北****制造有限公司,住所地河北省石家庄市****区x号。法定代表人李某,董事长。委托代理人孙某,河北****律师事务所律师。被上诉人(原审原告)天津****物流有限公司,住所地天津市东丽区****大道x号。法定代表人吴某,执行董事兼总经理。委托代理人郑某,天津****律师事务所律师。",
+ "c_gkws_pjjg": "驳回上诉,维持原判。二审案件受理费14900元,由上诉人河北****制造有限公司负担。本判决为终审判决。",
+ "c_id": "y2z3a4b5c6d7e8f9g0h1i2j3k4l5m6n7",
+ "c_ssdy": "天津市",
+ "d_jarq": "2023-07-10",
+ "d_larq": "2023-06-15",
+ "n_ajbs": "v9w0x1y2z3a4b5c6d7e8f9g0h1i2j3k4",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "民事二审",
+ "n_crc": 123456789,
+ "n_jaay": "合同、无因管理、不当得利",
+ "n_jaay_tree": "合同、无因管理、不当得利,合同纠纷,运输合同纠纷",
+ "n_jafs": "维持",
+ "n_jbfy": "天津市第一中级人民法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "合同、无因管理、不当得利",
+ "n_pj_victory": "胜诉",
+ "n_qsbdje": 950000,
+ "n_qsbdje_level": 16,
+ "n_slcx": "二审",
+ "n_ssdw": "被上诉人"
+ }
+ ],
+ "count": {
+ "area_stat": "天津市(3)",
+ "ay_stat": "合同、无因管理、不当得利(3)",
+ "count_beigao": 1,
+ "count_jie_beigao": 1,
+ "count_jie_total": 3,
+ "count_total": 3,
+ "jafs_stat": "判决(2),维持(1)",
+ "larq_stat": "2022(1),2023(2)",
+ "money_beigao": 1,
+ "money_jie_beigao": 1,
+ "money_jie_total": 3,
+ "money_total": 3
+ }
+ },
+ "count": {
+ "area_stat": "天津市(6)",
+ "ay_stat": "刑事犯罪(1),合同、无因管理、不当得利(3),执行案件(1),行政管理(1)",
+ "count_beigao": 2,
+ "count_jie_beigao": 2,
+ "count_jie_total": 6,
+ "count_total": 6,
+ "jafs_stat": "判决(4),维持(1),执行(1)",
+ "larq_stat": "2022(2),2023(4)",
+ "money_beigao": 1,
+ "money_jie_beigao": 1,
+ "money_jie_total": 3,
+ "money_total": 3
+ },
+ "crc": 234567890,
+ "criminal": {
+ "cases": [
+ {
+ "c_ah": "(2023)津0113刑初****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "天津****物流有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "单位犯罪"
+ },
+ {
+ "c_mc": "吴某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被告人"
+ }
+ ],
+ "c_gkws_dsr": "公诉机关天津市东丽区人民检察院。被告人吴某,男,1975年8月15日生,汉族,住天津市河西区****小区x号楼x号,系天津****物流有限公司法定代表人。被告单位天津****物流有限公司,住所地天津市东丽区****大道x号。法定代表人吴某,执行董事兼总经理。辩护人黄某,天津****律师事务所律师。",
+ "c_gkws_pjjg": "一、被告单位天津****物流有限公司犯危险驾驶罪,判处罚金人民币二十万元;二、被告人吴某犯危险驾驶罪,判处拘役三个月,缓刑六个月,并处罚金人民币五千元。如不服本判决,可在判决书送达之日起十日内向本院递交上诉状,并按对方当事人的人数提出副本,上诉于天津市第一中级人民法院。",
+ "c_id": "z3a4b5c6d7e8f9g0h1i2j3k4l5m6n7o8",
+ "c_ssdy": "天津市",
+ "d_jarq": "2023-04-20",
+ "d_larq": "2023-03-10",
+ "n_ajbs": "w0x1y2z3a4b5c6d7e8f9g0h1i2j3k4l5",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "刑事一审",
+ "n_crc": 345678901,
+ "n_jaay": "刑事犯罪",
+ "n_jaay_tree": "刑事犯罪,危害公共安全罪,危险驾驶罪",
+ "n_jafs": "判决",
+ "n_jbfy": "天津市东丽区人民法院",
+ "n_jbfy_cj": "基层人民法院",
+ "n_laay": "刑事犯罪",
+ "n_slcx": "一审",
+ "n_ssdw": "单位犯罪"
+ }
+ ],
+ "count": {
+ "area_stat": "天津市(1)",
+ "ay_stat": "刑事犯罪(1)",
+ "count_total": 1
+ }
+ },
+ "implement": {
+ "cases": [
+ {
+ "c_ah": "(2023)津0113执****号",
+ "c_dsrxx": [
+ {
+ "c_mc": "天津****物流有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "被执行人"
+ },
+ {
+ "c_mc": "河北****制造有限公司",
+ "n_dsrlx": "企业组织",
+ "n_ssdw": "申请执行人"
+ }
+ ],
+ "c_gkws_dsr": "申请执行人河北****制造有限公司,住所地河北省石家庄市****区x号。法定代表人李某,董事长。委托代理人孙某,河北****律师事务所律师。被执行人天津****物流有限公司,住所地天津市东丽区****大道x号。法定代表人吴某,执行董事兼总经理。",
+ "c_gkws_pjjg": "一、被执行人天津****物流有限公司应向申请执行人河北****制造有限公司支付运输服务费850000元及迟延履行期间的利息;二、若被执行人未按时履行上述义务,本院将依法评估、拍卖其名下的财产,所得价款优先清偿上述债务。",
+ "c_id": "a4b5c6d7e8f9g0h1i2j3k4l5m6n7o8p9",
+ "c_ssdy": "天津市",
+ "d_jarq": "2023-07-20",
+ "d_larq": "2023-07-15",
+ "n_ajbs": "x1y2z3a4b5c6d7e8f9g0h1i2j3k4l5m6",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "执行案件",
+ "n_crc": 456789012,
+ "n_jaay": "执行案件",
+ "n_jaay_tree": "执行案件,执行实施类",
+ "n_jafs": "执行",
+ "n_jbfy": "天津市东丽区人民法院",
+ "n_jbfy_cj": "基层人民法院",
+ "n_laay": "执行案件",
+ "n_slcx": "执行",
+ "n_ssdw": "被执行人"
+ }
+ ],
+ "count": {
+ "area_stat": "天津市(1)",
+ "count_total": 1
+ }
+ },
+ "preservation": {
+ "cases": [],
+ "count": {
+ "area_stat": "天津市(0)",
+ "count_total": 0
+ }
+ }
+ }
+ },
+ "sxbzxr": {
+ "data": {
+ "sxbzxr": [
+ {
+ "c_ah": "(2023)津0113执****号",
+ "c_fymc": "天津市东丽区人民法院",
+ "c_wfss": "有履行能力而拒不履行生效法律文书确定义务",
+ "c_zxbd": "(2023)津0113执****号",
+ "d_fbsj": "2023-08-15",
+ "d_lrsj": "2023-08-10",
+ "n_fbrw": "1"
+ }
+ ]
+ }
+ },
+ "xgbzxr": {
+ "data": {
+ "xgbzxr": [
+ {
+ "c_ah": "(2023)津0113执****号",
+ "c_beizhu": "全部未履行",
+ "c_bzxqk": "全部未履行",
+ "c_zxbd": "(2023)津0113执****号",
+ "d_lrsj": "2023-07-20",
+ "d_zxsj": "",
+ "n_bddqje": 850000
+ }
+ ]
+ }
+ }
+ },
+ "orgName": "天津****物流有限公司",
+ "pName": "吴某",
+ "punishment_info": {
+ "items": [
+ {
+ "content": "责令停止超范围培训,并处罚款人民币5万元",
+ "decisionDate": "2023-09-20",
+ "departmentName": "武汉市教育局",
+ "evidence": "现场检查发现超出许可范围培训",
+ "legalPersonName": "孙磊",
+ "pecuniary": "50000",
+ "punishName": "武汉教育科技有限公司",
+ "punishNumber": "汉教罚〔2023〕第0922号",
+ "punishStatus": "已执行",
+ "reason": "违反《民办教育促进法》,超范围开展教育培训业务",
+ "remark": "",
+ "source": "教育局",
+ "type": "教育违法",
+ "typeSecond": "超范围培训"
+ },
+ {
+ "content": "责令规范收费标准公示,并处罚款人民币2万元",
+ "decisionDate": "2024-03-15",
+ "departmentName": "武汉市市场监督管理局",
+ "evidence": "价格检查发现收费标准不透明",
+ "legalPersonName": "孙磊",
+ "pecuniary": "20000",
+ "punishName": "武汉教育科技有限公司",
+ "punishNumber": "汉市监罚〔2024〕第0318号",
+ "punishStatus": "已执行",
+ "reason": "违反《价格法》,教育培训收费未明码标价",
+ "remark": "",
+ "source": "市场监督管理局",
+ "type": "价格违法",
+ "typeSecond": "价格违法"
+ }
+ ],
+ "total": 2
+ },
+ "relationship": [
+ "sh",
+ "lp",
+ "tm"
+ ],
+ "stockHolderItem": {
+ "investDate": "",
+ "investRate": "100.0%",
+ "orgHolderName": "吴某",
+ "orgHolderType": "自然人",
+ "subscriptAmt": 2000
+ }
+ }
+ ],
+ "total": 8
+ },
+ "success": true,
+ "timestamp": "2024-03-19 17:00:59"
+}
\ No newline at end of file
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..97bd93c
--- /dev/null
+++ b/index.html
@@ -0,0 +1,187 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 幸福查|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/jsconfig.json b/jsconfig.json
new file mode 100644
index 0000000..5a1f2d2
--- /dev/null
+++ b/jsconfig.json
@@ -0,0 +1,8 @@
+{
+ "compilerOptions": {
+ "paths": {
+ "@/*": ["./src/*"]
+ }
+ },
+ "exclude": ["node_modules", "dist"]
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..f8628a7
--- /dev/null
+++ b/package.json
@@ -0,0 +1,41 @@
+{
+ "name": "hm-website",
+ "version": "0.0.0",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "@vant/area-data": "^2.0.0",
+ "@vueuse/core": "^11.3.0",
+ "axios": "^1.7.7",
+ "crypto-js": "^4.2.0",
+ "echarts": "^5.5.1",
+ "lodash": "^4.17.21",
+ "nprogress": "^0.2.0",
+ "pinia": "^2.2.6",
+ "qrcode": "^1.5.4",
+ "vant": "^4.9.9",
+ "vue": "^3.5.12",
+ "vue-echarts": "^7.0.3",
+ "vue-router": "^4.4.5"
+ },
+ "devDependencies": {
+ "@vant/auto-import-resolver": "^1.2.1",
+ "@vitejs/plugin-vue": "^5.1.4",
+ "@vitejs/plugin-vue-jsx": "^4.0.1",
+ "autoprefixer": "^10.4.20",
+ "postcss": "^8.4.49",
+ "sass-embedded": "^1.81.0",
+ "tailwindcss": "^3.4.15",
+ "terser": "^5.43.1",
+ "unplugin-auto-import": "^0.18.5",
+ "unplugin-vue-components": "^0.27.5",
+ "vite": "^5.4.10",
+ "vite-plugin-vue-devtools": "^7.5.4"
+ },
+ "packageManager": "pnpm@10.9.0+sha512.0486e394640d3c1fb3c9d43d49cf92879ff74f8516959c235308f5a8f62e2e19528a65cdc2a3058f587cde71eba3d5b56327c8c33a97e4c4051ca48a10ca2d5f"
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000..a4e40ee
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,3394 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ '@vant/area-data':
+ specifier: ^2.0.0
+ version: 2.0.0
+ '@vueuse/core':
+ specifier: ^11.3.0
+ version: 11.3.0(vue@3.5.13)
+ axios:
+ specifier: ^1.7.7
+ version: 1.7.7
+ crypto-js:
+ specifier: ^4.2.0
+ version: 4.2.0
+ echarts:
+ specifier: ^5.5.1
+ version: 5.5.1
+ lodash:
+ specifier: ^4.17.21
+ version: 4.17.21
+ nprogress:
+ specifier: ^0.2.0
+ version: 0.2.0
+ pinia:
+ specifier: ^2.2.6
+ version: 2.2.6(vue@3.5.13)
+ qrcode:
+ specifier: ^1.5.4
+ version: 1.5.4
+ vant:
+ specifier: ^4.9.9
+ version: 4.9.9(vue@3.5.13)
+ vue:
+ specifier: ^3.5.12
+ version: 3.5.13
+ vue-echarts:
+ specifier: ^7.0.3
+ version: 7.0.3(@vue/runtime-core@3.5.13)(echarts@5.5.1)(vue@3.5.13)
+ vue-router:
+ specifier: ^4.4.5
+ version: 4.4.5(vue@3.5.13)
+ devDependencies:
+ '@vant/auto-import-resolver':
+ specifier: ^1.2.1
+ version: 1.2.1
+ '@vitejs/plugin-vue':
+ specifier: ^5.1.4
+ version: 5.2.0(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1))(vue@3.5.13)
+ '@vitejs/plugin-vue-jsx':
+ specifier: ^4.0.1
+ version: 4.1.0(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1))(vue@3.5.13)
+ autoprefixer:
+ specifier: ^10.4.20
+ version: 10.4.20(postcss@8.4.49)
+ postcss:
+ specifier: ^8.4.49
+ version: 8.4.49
+ sass-embedded:
+ specifier: ^1.81.0
+ version: 1.81.0
+ tailwindcss:
+ specifier: ^3.4.15
+ version: 3.4.15
+ terser:
+ specifier: ^5.43.1
+ version: 5.43.1
+ unplugin-auto-import:
+ specifier: ^0.18.5
+ version: 0.18.5(@vueuse/core@11.3.0(vue@3.5.13))(rollup@4.27.3)
+ unplugin-vue-components:
+ specifier: ^0.27.5
+ version: 0.27.5(@babel/parser@7.26.2)(rollup@4.27.3)(vue@3.5.13)
+ vite:
+ specifier: ^5.4.10
+ version: 5.4.11(sass-embedded@1.81.0)(terser@5.43.1)
+ vite-plugin-vue-devtools:
+ specifier: ^7.5.4
+ version: 7.6.4(rollup@4.27.3)(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1))(vue@3.5.13)
+
+packages:
+
+ '@alloc/quick-lru@5.2.0':
+ resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
+ engines: {node: '>=10'}
+
+ '@ampproject/remapping@2.3.0':
+ resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==}
+ engines: {node: '>=6.0.0'}
+
+ '@antfu/utils@0.7.10':
+ resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==}
+
+ '@babel/code-frame@7.26.2':
+ resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/compat-data@7.26.2':
+ resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/core@7.26.0':
+ resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/generator@7.26.2':
+ resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-annotate-as-pure@7.25.9':
+ resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-compilation-targets@7.25.9':
+ resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-create-class-features-plugin@7.25.9':
+ resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-member-expression-to-functions@7.25.9':
+ resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-imports@7.25.9':
+ resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-transforms@7.26.0':
+ resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-optimise-call-expression@7.25.9':
+ resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-plugin-utils@7.25.9':
+ resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-replace-supers@7.25.9':
+ resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-skip-transparent-expression-wrappers@7.25.9':
+ resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-string-parser@7.25.9':
+ resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-identifier@7.25.9':
+ resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-option@7.25.9':
+ resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helpers@7.26.0':
+ resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.26.2':
+ resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/plugin-proposal-decorators@7.25.9':
+ resolution: {integrity: sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-decorators@7.25.9':
+ resolution: {integrity: sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-import-attributes@7.26.0':
+ resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-import-meta@7.10.4':
+ resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-jsx@7.25.9':
+ resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-typescript@7.25.9':
+ resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-typescript@7.25.9':
+ resolution: {integrity: sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/template@7.25.9':
+ resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/traverse@7.25.9':
+ resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/types@7.26.0':
+ resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==}
+ engines: {node: '>=6.9.0'}
+
+ '@bufbuild/protobuf@2.2.2':
+ resolution: {integrity: sha512-UNtPCbrwrenpmrXuRwn9jYpPoweNXj8X5sMvYgsqYyaH8jQ6LfUJSk3dJLnBK+6sfYPrF4iAIo5sd5HQ+tg75A==}
+
+ '@esbuild/aix-ppc64@0.21.5':
+ resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [aix]
+
+ '@esbuild/android-arm64@0.21.5':
+ resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm@0.21.5':
+ resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-x64@0.21.5':
+ resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/darwin-arm64@0.21.5':
+ resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.21.5':
+ resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/freebsd-arm64@0.21.5':
+ resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.21.5':
+ resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/linux-arm64@0.21.5':
+ resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.21.5':
+ resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.21.5':
+ resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.21.5':
+ resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.21.5':
+ resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.21.5':
+ resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.21.5':
+ resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.21.5':
+ resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.21.5':
+ resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/netbsd-x64@0.21.5':
+ resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/openbsd-x64@0.21.5':
+ resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/sunos-x64@0.21.5':
+ resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/win32-arm64@0.21.5':
+ resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.21.5':
+ resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.21.5':
+ resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
+ '@isaacs/cliui@8.0.2':
+ resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
+ engines: {node: '>=12'}
+
+ '@jridgewell/gen-mapping@0.3.5':
+ resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/set-array@1.2.1':
+ resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/source-map@0.3.11':
+ resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==}
+
+ '@jridgewell/sourcemap-codec@1.5.0':
+ resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+
+ '@jridgewell/trace-mapping@0.3.25':
+ resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
+
+ '@nodelib/fs.scandir@2.1.5':
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.stat@2.0.5':
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.walk@1.2.8':
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+
+ '@pkgjs/parseargs@0.11.0':
+ resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
+ engines: {node: '>=14'}
+
+ '@polka/url@1.0.0-next.28':
+ resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==}
+
+ '@rollup/pluginutils@5.1.3':
+ resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
+ '@rollup/rollup-android-arm-eabi@4.27.3':
+ resolution: {integrity: sha512-EzxVSkIvCFxUd4Mgm4xR9YXrcp976qVaHnqom/Tgm+vU79k4vV4eYTjmRvGfeoW8m9LVcsAy/lGjcgVegKEhLQ==}
+ cpu: [arm]
+ os: [android]
+
+ '@rollup/rollup-android-arm64@4.27.3':
+ resolution: {integrity: sha512-LJc5pDf1wjlt9o/Giaw9Ofl+k/vLUaYsE2zeQGH85giX2F+wn/Cg8b3c5CDP3qmVmeO5NzwVUzQQxwZvC2eQKw==}
+ cpu: [arm64]
+ os: [android]
+
+ '@rollup/rollup-darwin-arm64@4.27.3':
+ resolution: {integrity: sha512-OuRysZ1Mt7wpWJ+aYKblVbJWtVn3Cy52h8nLuNSzTqSesYw1EuN6wKp5NW/4eSre3mp12gqFRXOKTcN3AI3LqA==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rollup/rollup-darwin-x64@4.27.3':
+ resolution: {integrity: sha512-xW//zjJMlJs2sOrCmXdB4d0uiilZsOdlGQIC/jjmMWT47lkLLoB1nsNhPUcnoqyi5YR6I4h+FjBpILxbEy8JRg==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rollup/rollup-freebsd-arm64@4.27.3':
+ resolution: {integrity: sha512-58E0tIcwZ+12nK1WiLzHOD8I0d0kdrY/+o7yFVPRHuVGY3twBwzwDdTIBGRxLmyjciMYl1B/U515GJy+yn46qw==}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@rollup/rollup-freebsd-x64@4.27.3':
+ resolution: {integrity: sha512-78fohrpcVwTLxg1ZzBMlwEimoAJmY6B+5TsyAZ3Vok7YabRBUvjYTsRXPTjGEvv/mfgVBepbW28OlMEz4w8wGA==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.27.3':
+ resolution: {integrity: sha512-h2Ay79YFXyQi+QZKo3ISZDyKaVD7uUvukEHTOft7kh00WF9mxAaxZsNs3o/eukbeKuH35jBvQqrT61fzKfAB/Q==}
+ cpu: [arm]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-arm-musleabihf@4.27.3':
+ resolution: {integrity: sha512-Sv2GWmrJfRY57urktVLQ0VKZjNZGogVtASAgosDZ1aUB+ykPxSi3X1nWORL5Jk0sTIIwQiPH7iE3BMi9zGWfkg==}
+ cpu: [arm]
+ os: [linux]
+ libc: [musl]
+
+ '@rollup/rollup-linux-arm64-gnu@4.27.3':
+ resolution: {integrity: sha512-FPoJBLsPW2bDNWjSrwNuTPUt30VnfM8GPGRoLCYKZpPx0xiIEdFip3dH6CqgoT0RnoGXptaNziM0WlKgBc+OWQ==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-arm64-musl@4.27.3':
+ resolution: {integrity: sha512-TKxiOvBorYq4sUpA0JT+Fkh+l+G9DScnG5Dqx7wiiqVMiRSkzTclP35pE6eQQYjP4Gc8yEkJGea6rz4qyWhp3g==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@rollup/rollup-linux-powerpc64le-gnu@4.27.3':
+ resolution: {integrity: sha512-v2M/mPvVUKVOKITa0oCFksnQQ/TqGrT+yD0184/cWHIu0LoIuYHwox0Pm3ccXEz8cEQDLk6FPKd1CCm+PlsISw==}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-riscv64-gnu@4.27.3':
+ resolution: {integrity: sha512-LdrI4Yocb1a/tFVkzmOE5WyYRgEBOyEhWYJe4gsDWDiwnjYKjNs7PS6SGlTDB7maOHF4kxevsuNBl2iOcj3b4A==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-s390x-gnu@4.27.3':
+ resolution: {integrity: sha512-d4wVu6SXij/jyiwPvI6C4KxdGzuZOvJ6y9VfrcleHTwo68fl8vZC5ZYHsCVPUi4tndCfMlFniWgwonQ5CUpQcA==}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-x64-gnu@4.27.3':
+ resolution: {integrity: sha512-/6bn6pp1fsCGEY5n3yajmzZQAh+mW4QPItbiWxs69zskBzJuheb3tNynEjL+mKOsUSFK11X4LYF2BwwXnzWleA==}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-x64-musl@4.27.3':
+ resolution: {integrity: sha512-nBXOfJds8OzUT1qUreT/en3eyOXd2EH5b0wr2bVB5999qHdGKkzGzIyKYaKj02lXk6wpN71ltLIaQpu58YFBoQ==}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@rollup/rollup-win32-arm64-msvc@4.27.3':
+ resolution: {integrity: sha512-ogfbEVQgIZOz5WPWXF2HVb6En+kWzScuxJo/WdQTqEgeyGkaa2ui5sQav9Zkr7bnNCLK48uxmmK0TySm22eiuw==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rollup/rollup-win32-ia32-msvc@4.27.3':
+ resolution: {integrity: sha512-ecE36ZBMLINqiTtSNQ1vzWc5pXLQHlf/oqGp/bSbi7iedcjcNb6QbCBNG73Euyy2C+l/fn8qKWEwxr+0SSfs3w==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-msvc@4.27.3':
+ resolution: {integrity: sha512-vliZLrDmYKyaUoMzEbMTg2JkerfBjn03KmAw9CykO0Zzkzoyd7o3iZNam/TpyWNjNT+Cz2iO3P9Smv2wgrR+Eg==}
+ cpu: [x64]
+ os: [win32]
+
+ '@types/estree@1.0.6':
+ resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
+
+ '@types/web-bluetooth@0.0.20':
+ resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
+
+ '@vant/area-data@2.0.0':
+ resolution: {integrity: sha512-zgP4AA8z09S9QTNgVCCHo9cHjcybrv22RJDYPjuCkecn4SB98T5EoPQh2TwqbQXmUhbaOGgiZGy3OUaUxnY7qg==}
+
+ '@vant/auto-import-resolver@1.2.1':
+ resolution: {integrity: sha512-czGWW4UolNITkF3qQSQlpHDHAsI3/GHVKbRMmEEpry7NWdnU4p5a5jBi0VApbaLa5g80Hy10XVs3IB+UozoSUw==}
+
+ '@vant/popperjs@1.3.0':
+ resolution: {integrity: sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw==}
+
+ '@vant/use@1.6.0':
+ resolution: {integrity: sha512-PHHxeAASgiOpSmMjceweIrv2AxDZIkWXyaczksMoWvKV2YAYEhoizRuk/xFnKF+emUIi46TsQ+rvlm/t2BBCfA==}
+ peerDependencies:
+ vue: ^3.0.0
+
+ '@vitejs/plugin-vue-jsx@4.1.0':
+ resolution: {integrity: sha512-KuRejz7KAFvhXDzOudlaS2IyygAwoAEEMtHAdcRSy/8cA5iKH043Qudcz48zsC0M0vvN5iKwIwNMuWbBYn6/Yg==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ peerDependencies:
+ vite: ^5.0.0
+ vue: ^3.0.0
+
+ '@vitejs/plugin-vue@5.2.0':
+ resolution: {integrity: sha512-7n7KdUEtx/7Yl7I/WVAMZ1bEb0eVvXF3ummWTeLcs/9gvo9pJhuLdouSXGjdZ/MKD1acf1I272+X0RMua4/R3g==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ peerDependencies:
+ vite: ^5.0.0
+ vue: ^3.2.25
+
+ '@vue/babel-helper-vue-transform-on@1.2.5':
+ resolution: {integrity: sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==}
+
+ '@vue/babel-plugin-jsx@1.2.5':
+ resolution: {integrity: sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ peerDependenciesMeta:
+ '@babel/core':
+ optional: true
+
+ '@vue/babel-plugin-resolve-type@1.2.5':
+ resolution: {integrity: sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@vue/compiler-core@3.5.13':
+ resolution: {integrity: sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==}
+
+ '@vue/compiler-dom@3.5.13':
+ resolution: {integrity: sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==}
+
+ '@vue/compiler-sfc@3.5.13':
+ resolution: {integrity: sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==}
+
+ '@vue/compiler-ssr@3.5.13':
+ resolution: {integrity: sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==}
+
+ '@vue/devtools-api@6.6.4':
+ resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
+
+ '@vue/devtools-core@7.6.4':
+ resolution: {integrity: sha512-blSwGVYpb7b5TALMjjoBiAl5imuBF7WEOAtaJaBMNikR8SQkm6mkUt4YlIKh9874/qoimwmpDOm+GHBZ4Y5m+g==}
+ peerDependencies:
+ vue: ^3.0.0
+
+ '@vue/devtools-kit@7.6.4':
+ resolution: {integrity: sha512-Zs86qIXXM9icU0PiGY09PQCle4TI750IPLmAJzW5Kf9n9t5HzSYf6Rz6fyzSwmfMPiR51SUKJh9sXVZu78h2QA==}
+
+ '@vue/devtools-shared@7.6.4':
+ resolution: {integrity: sha512-nD6CUvBEel+y7zpyorjiUocy0nh77DThZJ0k1GRnJeOmY3ATq2fWijEp7wk37gb023Cb0R396uYh5qMSBQ5WFg==}
+
+ '@vue/reactivity@3.5.13':
+ resolution: {integrity: sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==}
+
+ '@vue/runtime-core@3.5.13':
+ resolution: {integrity: sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==}
+
+ '@vue/runtime-dom@3.5.13':
+ resolution: {integrity: sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==}
+
+ '@vue/server-renderer@3.5.13':
+ resolution: {integrity: sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==}
+ peerDependencies:
+ vue: 3.5.13
+
+ '@vue/shared@3.5.13':
+ resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==}
+
+ '@vueuse/core@11.3.0':
+ resolution: {integrity: sha512-7OC4Rl1f9G8IT6rUfi9JrKiXy4bfmHhZ5x2Ceojy0jnd3mHNEvV4JaRygH362ror6/NZ+Nl+n13LPzGiPN8cKA==}
+
+ '@vueuse/metadata@11.3.0':
+ resolution: {integrity: sha512-pwDnDspTqtTo2HwfLw4Rp6yywuuBdYnPYDq+mO38ZYKGebCUQC/nVj/PXSiK9HX5otxLz8Fn7ECPbjiRz2CC3g==}
+
+ '@vueuse/shared@11.3.0':
+ resolution: {integrity: sha512-P8gSSWQeucH5821ek2mn/ciCk+MS/zoRKqdQIM3bHq6p7GXDAJLmnRRKmF5F65sAVJIfzQlwR3aDzwCn10s8hA==}
+
+ acorn@8.14.0:
+ resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+
+ ansi-regex@6.1.0:
+ resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==}
+ engines: {node: '>=12'}
+
+ ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+
+ ansi-styles@6.2.1:
+ resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
+ engines: {node: '>=12'}
+
+ any-promise@1.3.0:
+ resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
+
+ anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+
+ arg@5.0.2:
+ resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
+
+ asynckit@0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+
+ autoprefixer@10.4.20:
+ resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==}
+ engines: {node: ^10 || ^12 || >=14}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.1.0
+
+ axios@1.7.7:
+ resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ binary-extensions@2.3.0:
+ resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
+ engines: {node: '>=8'}
+
+ birpc@0.2.19:
+ resolution: {integrity: sha512-5WeXXAvTmitV1RqJFppT5QtUiz2p1mRSYU000Jkft5ZUCLJIk4uQriYNO50HknxKwM6jd8utNc66K1qGIwwWBQ==}
+
+ brace-expansion@2.0.1:
+ resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
+
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
+ browserslist@4.24.2:
+ resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
+ buffer-builder@0.2.0:
+ resolution: {integrity: sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==}
+
+ buffer-from@1.1.2:
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+
+ bundle-name@4.1.0:
+ resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
+ engines: {node: '>=18'}
+
+ camelcase-css@2.0.1:
+ resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
+ engines: {node: '>= 6'}
+
+ camelcase@5.3.1:
+ resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
+ engines: {node: '>=6'}
+
+ caniuse-lite@1.0.30001680:
+ resolution: {integrity: sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==}
+
+ chokidar@3.6.0:
+ resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+ engines: {node: '>= 8.10.0'}
+
+ cliui@6.0.0:
+ resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
+
+ color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ colorjs.io@0.5.2:
+ resolution: {integrity: sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==}
+
+ combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+
+ commander@2.20.3:
+ resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+
+ commander@4.1.1:
+ resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
+ engines: {node: '>= 6'}
+
+ confbox@0.1.8:
+ resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
+
+ convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+
+ copy-anything@3.0.5:
+ resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==}
+ engines: {node: '>=12.13'}
+
+ cross-spawn@7.0.6:
+ resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
+ engines: {node: '>= 8'}
+
+ crypto-js@4.2.0:
+ resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==}
+
+ cssesc@3.0.0:
+ resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ csstype@3.1.3:
+ resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+
+ debug@4.3.7:
+ resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ decamelize@1.2.0:
+ resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
+ engines: {node: '>=0.10.0'}
+
+ default-browser-id@5.0.0:
+ resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==}
+ engines: {node: '>=18'}
+
+ default-browser@5.2.1:
+ resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==}
+ engines: {node: '>=18'}
+
+ define-lazy-prop@3.0.0:
+ resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
+ engines: {node: '>=12'}
+
+ delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+
+ didyoumean@1.2.2:
+ resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
+
+ dijkstrajs@1.0.3:
+ resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==}
+
+ dlv@1.1.3:
+ resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
+
+ eastasianwidth@0.2.0:
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+
+ echarts@5.5.1:
+ resolution: {integrity: sha512-Fce8upazaAXUVUVsjgV6mBnGuqgO+JNDlcgF79Dksy4+wgGpQB2lmYoO4TSweFg/mZITdpGHomw/cNBJZj1icA==}
+
+ electron-to-chromium@1.5.63:
+ resolution: {integrity: sha512-ddeXKuY9BHo/mw145axlyWjlJ1UBt4WK3AlvkT7W2AbqfRQoacVoRUCF6wL3uIx/8wT9oLKXzI+rFqHHscByaA==}
+
+ emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ emoji-regex@9.2.2:
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+
+ entities@4.5.0:
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
+
+ error-stack-parser-es@0.1.5:
+ resolution: {integrity: sha512-xHku1X40RO+fO8yJ8Wh2f2rZWVjqyhb1zgq1yZ8aZRQkv6OOKhKWRUaht3eSCUbAOBaKIgM+ykwFLE+QUxgGeg==}
+
+ esbuild@0.21.5:
+ resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+
+ escape-string-regexp@5.0.0:
+ resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
+ engines: {node: '>=12'}
+
+ estree-walker@2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
+ estree-walker@3.0.3:
+ resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
+
+ execa@8.0.1:
+ resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
+ engines: {node: '>=16.17'}
+
+ fast-glob@3.3.2:
+ resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
+ engines: {node: '>=8.6.0'}
+
+ fastq@1.17.1:
+ resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==}
+
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
+ find-up@4.1.0:
+ resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
+ engines: {node: '>=8'}
+
+ follow-redirects@1.15.9:
+ resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ debug: '*'
+ peerDependenciesMeta:
+ debug:
+ optional: true
+
+ foreground-child@3.3.0:
+ resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==}
+ engines: {node: '>=14'}
+
+ form-data@4.0.1:
+ resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==}
+ engines: {node: '>= 6'}
+
+ fraction.js@4.3.7:
+ resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
+
+ fs-extra@11.2.0:
+ resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==}
+ engines: {node: '>=14.14'}
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+
+ get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+
+ get-stream@8.0.1:
+ resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
+ engines: {node: '>=16'}
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
+ glob-parent@6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+
+ glob@10.4.5:
+ resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
+ hasBin: true
+
+ globals@11.12.0:
+ resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+ engines: {node: '>=4'}
+
+ graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
+ has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+
+ hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+
+ hookable@5.5.3:
+ resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
+
+ html-tags@3.3.1:
+ resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==}
+ engines: {node: '>=8'}
+
+ human-signals@5.0.0:
+ resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
+ engines: {node: '>=16.17.0'}
+
+ immutable@5.0.3:
+ resolution: {integrity: sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==}
+
+ is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+
+ is-core-module@2.15.1:
+ resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==}
+ engines: {node: '>= 0.4'}
+
+ is-docker@3.0.0:
+ resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ hasBin: true
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-inside-container@1.0.0:
+ resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
+ engines: {node: '>=14.16'}
+ hasBin: true
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ is-stream@3.0.0:
+ resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ is-what@4.1.16:
+ resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
+ engines: {node: '>=12.13'}
+
+ is-wsl@3.1.0:
+ resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==}
+ engines: {node: '>=16'}
+
+ isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ jackspeak@3.4.3:
+ resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
+
+ jiti@1.21.6:
+ resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
+ hasBin: true
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ js-tokens@9.0.0:
+ resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==}
+
+ jsesc@3.0.2:
+ resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ jsonfile@6.1.0:
+ resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
+
+ kolorist@1.8.0:
+ resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
+
+ lilconfig@2.1.0:
+ resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
+ engines: {node: '>=10'}
+
+ lilconfig@3.1.2:
+ resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==}
+ engines: {node: '>=14'}
+
+ lines-and-columns@1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+
+ local-pkg@0.5.1:
+ resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==}
+ engines: {node: '>=14'}
+
+ locate-path@5.0.0:
+ resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
+ engines: {node: '>=8'}
+
+ lodash@4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+
+ lru-cache@10.4.3:
+ resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
+
+ lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+
+ magic-string@0.30.13:
+ resolution: {integrity: sha512-8rYBO+MsWkgjDSOvLomYnzhdwEG51olQ4zL5KXnNJWV5MNmrb4rTZdrtkhxjnD/QyZUqR/Z/XDsUs/4ej2nx0g==}
+
+ magic-string@0.30.14:
+ resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==}
+
+ merge-stream@2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+
+ merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
+
+ mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+
+ mimic-fn@4.0.0:
+ resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
+ engines: {node: '>=12'}
+
+ minimatch@9.0.5:
+ resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ minipass@7.1.2:
+ resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ mitt@3.0.1:
+ resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
+
+ mlly@1.7.3:
+ resolution: {integrity: sha512-xUsx5n/mN0uQf4V548PKQ+YShA4/IW0KI1dZhrNrPCLG+xizETbHTkOa1f8/xut9JRPp8kQuMnz0oqwkTiLo/A==}
+
+ mrmime@2.0.0:
+ resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==}
+ engines: {node: '>=10'}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ mz@2.7.0:
+ resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
+
+ nanoid@3.3.7:
+ resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ node-releases@2.0.18:
+ resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
+
+ normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+
+ normalize-range@0.1.2:
+ resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
+ engines: {node: '>=0.10.0'}
+
+ npm-run-path@5.3.0:
+ resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+
+ nprogress@0.2.0:
+ resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==}
+
+ object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+
+ object-hash@3.0.0:
+ resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
+ engines: {node: '>= 6'}
+
+ onetime@6.0.0:
+ resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
+ engines: {node: '>=12'}
+
+ open@10.1.0:
+ resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==}
+ engines: {node: '>=18'}
+
+ p-limit@2.3.0:
+ resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
+ engines: {node: '>=6'}
+
+ p-locate@4.1.0:
+ resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
+ engines: {node: '>=8'}
+
+ p-try@2.2.0:
+ resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
+ engines: {node: '>=6'}
+
+ package-json-from-dist@1.0.1:
+ resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
+
+ path-exists@4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+
+ path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+
+ path-key@4.0.0:
+ resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
+ engines: {node: '>=12'}
+
+ path-parse@1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+
+ path-scurry@1.11.1:
+ resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
+ engines: {node: '>=16 || 14 >=14.18'}
+
+ pathe@1.1.2:
+ resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
+
+ perfect-debounce@1.0.0:
+ resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
+
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ picomatch@4.0.2:
+ resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
+ engines: {node: '>=12'}
+
+ pify@2.3.0:
+ resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
+ engines: {node: '>=0.10.0'}
+
+ pinia@2.2.6:
+ resolution: {integrity: sha512-vIsR8JkDN5Ga2vAxqOE2cJj4VtsHnzpR1Fz30kClxlh0yCHfec6uoMeM3e/ddqmwFUejK3NlrcQa/shnpyT4hA==}
+ peerDependencies:
+ '@vue/composition-api': ^1.4.0
+ typescript: '>=4.4.4'
+ vue: ^2.6.14 || ^3.5.11
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+ typescript:
+ optional: true
+
+ pirates@4.0.6:
+ resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
+ engines: {node: '>= 6'}
+
+ pkg-types@1.2.1:
+ resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==}
+
+ pngjs@5.0.0:
+ resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==}
+ engines: {node: '>=10.13.0'}
+
+ postcss-import@15.1.0:
+ resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ postcss: ^8.0.0
+
+ postcss-js@4.0.1:
+ resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
+ engines: {node: ^12 || ^14 || >= 16}
+ peerDependencies:
+ postcss: ^8.4.21
+
+ postcss-load-config@4.0.2:
+ resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==}
+ engines: {node: '>= 14'}
+ peerDependencies:
+ postcss: '>=8.0.9'
+ ts-node: '>=9.0.0'
+ peerDependenciesMeta:
+ postcss:
+ optional: true
+ ts-node:
+ optional: true
+
+ postcss-nested@6.2.0:
+ resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==}
+ engines: {node: '>=12.0'}
+ peerDependencies:
+ postcss: ^8.2.14
+
+ postcss-selector-parser@6.1.2:
+ resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
+ engines: {node: '>=4'}
+
+ postcss-value-parser@4.2.0:
+ resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+
+ postcss@8.4.49:
+ resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ proxy-from-env@1.1.0:
+ resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
+
+ qrcode@1.5.4:
+ resolution: {integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+
+ queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+
+ read-cache@1.0.0:
+ resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
+
+ readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+
+ require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+
+ require-main-filename@2.0.0:
+ resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
+
+ resolve@1.22.8:
+ resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
+ hasBin: true
+
+ reusify@1.0.4:
+ resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+
+ rfdc@1.4.1:
+ resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
+
+ rollup@4.27.3:
+ resolution: {integrity: sha512-SLsCOnlmGt9VoZ9Ek8yBK8tAdmPHeppkw+Xa7yDlCEhDTvwYei03JlWo1fdc7YTfLZ4tD8riJCUyAgTbszk1fQ==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+
+ run-applescript@7.0.0:
+ resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==}
+ engines: {node: '>=18'}
+
+ run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+
+ rxjs@7.8.1:
+ resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
+
+ sass-embedded-android-arm64@1.81.0:
+ resolution: {integrity: sha512-I36P77/PKAHx6sqOmexO2iEY5kpsmQ1VxcgITZSOxPMQhdB6m4t3bTabfDuWQQmCrqqiNFtLQHeytB65bUqwiw==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm64]
+ os: [android]
+
+ sass-embedded-android-arm@1.81.0:
+ resolution: {integrity: sha512-NWEmIuaIEsGFNsIRa+5JpIpPJyZ32H15E85CNZqEIhhwWlk9UNw7vlOCmTH8MtabtnACwC/2NG8VyNa3nxKzUQ==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm]
+ os: [android]
+
+ sass-embedded-android-ia32@1.81.0:
+ resolution: {integrity: sha512-k8V1usXw30w1GVxvrteG1RzgYJzYQ9PfL2aeOqGdroBN7zYTD9VGJXTGcxA4IeeRxmRd7szVW2mKXXS472fh8g==}
+ engines: {node: '>=14.0.0'}
+ cpu: [ia32]
+ os: [android]
+
+ sass-embedded-android-riscv64@1.81.0:
+ resolution: {integrity: sha512-RXlanyLXEpN/DEehXgLuKPsqT//GYlsGFxKXgRiCc8hIPAueFLQXKJmLWlL3BEtHgmFdbsStIu4aZCcb1hOFlQ==}
+ engines: {node: '>=14.0.0'}
+ cpu: [riscv64]
+ os: [android]
+
+ sass-embedded-android-x64@1.81.0:
+ resolution: {integrity: sha512-RQG0FxGQ1DERNyUDED8+BDVaLIjI+BNg8lVcyqlLZUrWY6NhzjwYEeiN/DNZmMmHtqDucAPNDcsdVUNQqsBy2A==}
+ engines: {node: '>=14.0.0'}
+ cpu: [x64]
+ os: [android]
+
+ sass-embedded-darwin-arm64@1.81.0:
+ resolution: {integrity: sha512-gLKbsfII9Ppua76N41ODFnKGutla9qv0OGAas8gxe0jYBeAQFi/1iKQYdNtQtKi4mA9n5TQTqz+HHCKszZCoyA==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ sass-embedded-darwin-x64@1.81.0:
+ resolution: {integrity: sha512-7uMOlT9hD2KUJCbTN2XcfghDxt/rc50ujjfSjSHjX1SYj7mGplkINUXvVbbvvaV2wt6t9vkGkCo5qNbeBhfwBg==}
+ engines: {node: '>=14.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ sass-embedded-linux-arm64@1.81.0:
+ resolution: {integrity: sha512-jy4bvhdUmqbyw1jv1f3Uxl+MF8EU/Y/GDx4w6XPJm4Ds+mwH/TwnyAwsxxoBhWfnBnW8q2ADy039DlS5p+9csQ==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm64]
+ os: [linux]
+
+ sass-embedded-linux-arm@1.81.0:
+ resolution: {integrity: sha512-REqR9qM4RchCE3cKqzRy9Q4zigIV82SbSpCi/O4O3oK3pg2I1z7vkb3TiJsivusG/li7aqKZGmYOtAXjruGQDA==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ sass-embedded-linux-ia32@1.81.0:
+ resolution: {integrity: sha512-ga/Jk4q5Bn1aC+iHJteDZuLSKnmBUiS3dEg1fnl/Z7GaHIChceKDJOw0zNaILRXI0qT2E1at9MwzoRaRA5Nn/g==}
+ engines: {node: '>=14.0.0'}
+ cpu: [ia32]
+ os: [linux]
+
+ sass-embedded-linux-musl-arm64@1.81.0:
+ resolution: {integrity: sha512-hpntWf5kjkoxncA1Vh8vhsUOquZ8AROZKx0rQh7ZjSRs4JrYZASz1cfevPKaEM3wIim/nYa6TJqm0VqWsrERlA==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm64]
+ os: [linux]
+
+ sass-embedded-linux-musl-arm@1.81.0:
+ resolution: {integrity: sha512-oWVUvQ4d5Kx1Md75YXZl5z1WBjc+uOhfRRqzkJ3nWc8tjszxJN+y/5EOJavhsNI3/2yoTt6eMXRTqDD9b0tWSQ==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ sass-embedded-linux-musl-ia32@1.81.0:
+ resolution: {integrity: sha512-UEXUYkBuqTSwg5JNWiNlfMZ1Jx6SJkaEdx+fsL3Tk099L8cKSoJWH2EPz4ZJjNbyIMymrSdVfymheTeZ8u24xA==}
+ engines: {node: '>=14.0.0'}
+ cpu: [ia32]
+ os: [linux]
+
+ sass-embedded-linux-musl-riscv64@1.81.0:
+ resolution: {integrity: sha512-1D7OznytbIhx2XDHWi1nuQ8d/uCVR7FGGzELgaU//T8A9DapVTUgPKvB70AF1k4GzChR9IXU/WvFZs2hDTbaJg==}
+ engines: {node: '>=14.0.0'}
+ cpu: [riscv64]
+ os: [linux]
+
+ sass-embedded-linux-musl-x64@1.81.0:
+ resolution: {integrity: sha512-ia6VCTeVDQtBSMktXRFza1AZCt8/6aUoujot6Ugf4KmdytQqPJIHxkHaGftm5xwi9WdrMGYS7zgolToPijR11A==}
+ engines: {node: '>=14.0.0'}
+ cpu: [x64]
+ os: [linux]
+
+ sass-embedded-linux-riscv64@1.81.0:
+ resolution: {integrity: sha512-KbxSsqu4tT1XbhZfJV/5NfW0VtJIGlD58RjqJqJBi8Rnjrx29/upBsuwoDWtsPV/LhoGwwU1XkSa9Q1ifCz4fQ==}
+ engines: {node: '>=14.0.0'}
+ cpu: [riscv64]
+ os: [linux]
+
+ sass-embedded-linux-x64@1.81.0:
+ resolution: {integrity: sha512-AMDeVY2T9WAnSFkuQcsOn5c29GRs/TuqnCiblKeXfxCSKym5uKdBl/N7GnTV6OjzoxiJBbkYKdVIaS5By7Gj4g==}
+ engines: {node: '>=14.0.0'}
+ cpu: [x64]
+ os: [linux]
+
+ sass-embedded-win32-arm64@1.81.0:
+ resolution: {integrity: sha512-YOmBRYnygwWUmCoH14QbMRHjcvCJufeJBAp0m61tOJXIQh64ziwV4mjdqjS/Rx3zhTT4T+nulDUw4d3kLiMncA==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ sass-embedded-win32-ia32@1.81.0:
+ resolution: {integrity: sha512-HFfr/C+uLJGGTENdnssuNTmXI/xnIasUuEHEKqI+2J0FHCWT5cpz3PGAOHymPyJcZVYGUG/7gIxIx/d7t0LFYw==}
+ engines: {node: '>=14.0.0'}
+ cpu: [ia32]
+ os: [win32]
+
+ sass-embedded-win32-x64@1.81.0:
+ resolution: {integrity: sha512-wxj52jDcIAwWcXb7ShZ7vQYKcVUkJ+04YM9l46jDY+qwHzliGuorAUyujLyKTE9heGD3gShJ3wPPC1lXzq6v9A==}
+ engines: {node: '>=14.0.0'}
+ cpu: [x64]
+ os: [win32]
+
+ sass-embedded@1.81.0:
+ resolution: {integrity: sha512-uZQ2Faxb1oWBHpeSSzjxnhClbMb3QadN0ql0ZFNuqWOLUxwaVhrMlMhPq6TDPbbfDUjihuwrMCuy695Bgna5RA==}
+ engines: {node: '>=16.0.0'}
+ hasBin: true
+
+ scule@1.3.0:
+ resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==}
+
+ semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+
+ set-blocking@2.0.0:
+ resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
+
+ shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+
+ shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ signal-exit@4.1.0:
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+ engines: {node: '>=14'}
+
+ sirv@3.0.0:
+ resolution: {integrity: sha512-BPwJGUeDaDCHihkORDchNyyTvWFhcusy1XMmhEVTQTwGeybFbp8YEmB+njbPnth1FibULBSBVwCQni25XlCUDg==}
+ engines: {node: '>=18'}
+
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+
+ source-map-support@0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+
+ source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ speakingurl@14.0.1:
+ resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==}
+ engines: {node: '>=0.10.0'}
+
+ string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+
+ string-width@5.1.2:
+ resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+ engines: {node: '>=12'}
+
+ strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+
+ strip-ansi@7.1.0:
+ resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
+ engines: {node: '>=12'}
+
+ strip-final-newline@3.0.0:
+ resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
+ engines: {node: '>=12'}
+
+ strip-literal@2.1.0:
+ resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==}
+
+ sucrase@3.35.0:
+ resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ hasBin: true
+
+ superjson@2.2.1:
+ resolution: {integrity: sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==}
+ engines: {node: '>=16'}
+
+ supports-color@8.1.1:
+ resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
+ engines: {node: '>=10'}
+
+ supports-preserve-symlinks-flag@1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+
+ svg-tags@1.0.0:
+ resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==}
+
+ sync-child-process@1.0.2:
+ resolution: {integrity: sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==}
+ engines: {node: '>=16.0.0'}
+
+ sync-message-port@1.1.3:
+ resolution: {integrity: sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==}
+ engines: {node: '>=16.0.0'}
+
+ tailwindcss@3.4.15:
+ resolution: {integrity: sha512-r4MeXnfBmSOuKUWmXe6h2CcyfzJCEk4F0pptO5jlnYSIViUkVmsawj80N5h2lO3gwcmSb4n3PuN+e+GC1Guylw==}
+ engines: {node: '>=14.0.0'}
+ hasBin: true
+
+ terser@5.43.1:
+ resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ thenify-all@1.6.0:
+ resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
+ engines: {node: '>=0.8'}
+
+ thenify@3.3.1:
+ resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
+
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+
+ totalist@3.0.1:
+ resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
+ engines: {node: '>=6'}
+
+ ts-interface-checker@0.1.13:
+ resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+
+ tslib@2.3.0:
+ resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==}
+
+ tslib@2.8.1:
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+
+ ufo@1.5.4:
+ resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
+
+ unimport@3.13.2:
+ resolution: {integrity: sha512-VKAepeIb6BWLtBl4tmyHY1/7rJgz3ynmZrWf8cU1a+v5Uv/k1gyyAEeGBnYcrwy8bxG5sflxEx4a9VQUqOVHUA==}
+
+ universalify@2.0.1:
+ resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
+ engines: {node: '>= 10.0.0'}
+
+ unplugin-auto-import@0.18.5:
+ resolution: {integrity: sha512-ZUnayBRlOwNuN9hrM1PymSZK5qDEI8heDD0E3U8Tq4FS6bUxd9VMfJ8tCwWTG5ir6g1yThe/4SVHbFUZQwplOw==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@nuxt/kit': ^3.2.2
+ '@vueuse/core': '*'
+ peerDependenciesMeta:
+ '@nuxt/kit':
+ optional: true
+ '@vueuse/core':
+ optional: true
+
+ unplugin-vue-components@0.27.5:
+ resolution: {integrity: sha512-m9j4goBeNwXyNN8oZHHxvIIYiG8FQ9UfmKWeNllpDvhU7btKNNELGPt+o3mckQKuPwrE7e0PvCsx+IWuDSD9Vg==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@babel/parser': ^7.15.8
+ '@nuxt/kit': ^3.2.2
+ vue: 2 || 3
+ peerDependenciesMeta:
+ '@babel/parser':
+ optional: true
+ '@nuxt/kit':
+ optional: true
+
+ unplugin@1.16.0:
+ resolution: {integrity: sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==}
+ engines: {node: '>=14.0.0'}
+
+ update-browserslist-db@1.1.1:
+ resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ vant@4.9.9:
+ resolution: {integrity: sha512-sEw3ljwCza5dazpJqh04b38vCjNr2Id8vb7LOkYQQR/94iERDIm5jcQinhmwlRnwoGCa+JkNwm0jrCafzZJiwA==}
+ peerDependencies:
+ vue: ^3.0.0
+
+ varint@6.0.0:
+ resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==}
+
+ vite-hot-client@0.2.3:
+ resolution: {integrity: sha512-rOGAV7rUlUHX89fP2p2v0A2WWvV3QMX2UYq0fRqsWSvFvev4atHWqjwGoKaZT1VTKyLGk533ecu3eyd0o59CAg==}
+ peerDependencies:
+ vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0
+
+ vite-plugin-inspect@0.8.8:
+ resolution: {integrity: sha512-aZlBuXsWUPJFmMK92GIv6lH7LrwG2POu4KJ+aEdcqnu92OAf+rhBnfMDQvxIJPEB7hE2t5EyY/PMgf5aDLT8EA==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@nuxt/kit': '*'
+ vite: ^3.1.0 || ^4.0.0 || ^5.0.0-0
+ peerDependenciesMeta:
+ '@nuxt/kit':
+ optional: true
+
+ vite-plugin-vue-devtools@7.6.4:
+ resolution: {integrity: sha512-jxSsLyuETfmZ1OSrmnDp28BG6rmURrP7lkeyHW2gBFDyo+4dUcqVeQNMhbV7uKZn80mDdv06Mysw/5AdGxDvJQ==}
+ engines: {node: '>=v14.21.3'}
+ peerDependencies:
+ vite: ^3.1.0 || ^4.0.0-0 || ^5.0.0-0
+
+ vite-plugin-vue-inspector@5.2.0:
+ resolution: {integrity: sha512-wWxyb9XAtaIvV/Lr7cqB1HIzmHZFVUJsTNm3yAxkS87dgh/Ky4qr2wDEWNxF23fdhVa3jQ8MZREpr4XyiuaRqA==}
+ peerDependencies:
+ vite: ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0
+
+ vite@5.4.11:
+ resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^18.0.0 || >=20.0.0
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ sass-embedded: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+
+ vue-demi@0.13.11:
+ resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==}
+ engines: {node: '>=12'}
+ hasBin: true
+ peerDependencies:
+ '@vue/composition-api': ^1.0.0-rc.1
+ vue: ^3.0.0-0 || ^2.6.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+
+ vue-demi@0.14.10:
+ resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
+ engines: {node: '>=12'}
+ hasBin: true
+ peerDependencies:
+ '@vue/composition-api': ^1.0.0-rc.1
+ vue: ^3.0.0-0 || ^2.6.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+
+ vue-echarts@7.0.3:
+ resolution: {integrity: sha512-/jSxNwOsw5+dYAUcwSfkLwKPuzTQ0Cepz1LxCOpj2QcHrrmUa/Ql0eQqMmc1rTPQVrh2JQ29n2dhq75ZcHvRDw==}
+ peerDependencies:
+ '@vue/runtime-core': ^3.0.0
+ echarts: ^5.5.1
+ vue: ^2.7.0 || ^3.1.1
+ peerDependenciesMeta:
+ '@vue/runtime-core':
+ optional: true
+
+ vue-router@4.4.5:
+ resolution: {integrity: sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==}
+ peerDependencies:
+ vue: ^3.2.0
+
+ vue@3.5.13:
+ resolution: {integrity: sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ webpack-virtual-modules@0.6.2:
+ resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
+
+ which-module@2.0.1:
+ resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
+
+ which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+
+ wrap-ansi@6.2.0:
+ resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
+ engines: {node: '>=8'}
+
+ wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+
+ wrap-ansi@8.1.0:
+ resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
+ engines: {node: '>=12'}
+
+ y18n@4.0.3:
+ resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
+
+ yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+
+ yaml@2.6.1:
+ resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==}
+ engines: {node: '>= 14'}
+ hasBin: true
+
+ yargs-parser@18.1.3:
+ resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==}
+ engines: {node: '>=6'}
+
+ yargs@15.4.1:
+ resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
+ engines: {node: '>=8'}
+
+ zrender@5.6.0:
+ resolution: {integrity: sha512-uzgraf4njmmHAbEUxMJ8Oxg+P3fT04O+9p7gY+wJRVxo8Ge+KmYv0WJev945EH4wFuc4OY2NLXz46FZrWS9xJg==}
+
+snapshots:
+
+ '@alloc/quick-lru@5.2.0': {}
+
+ '@ampproject/remapping@2.3.0':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@antfu/utils@0.7.10': {}
+
+ '@babel/code-frame@7.26.2':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.25.9
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ '@babel/compat-data@7.26.2': {}
+
+ '@babel/core@7.26.0':
+ dependencies:
+ '@ampproject/remapping': 2.3.0
+ '@babel/code-frame': 7.26.2
+ '@babel/generator': 7.26.2
+ '@babel/helper-compilation-targets': 7.25.9
+ '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0)
+ '@babel/helpers': 7.26.0
+ '@babel/parser': 7.26.2
+ '@babel/template': 7.25.9
+ '@babel/traverse': 7.25.9
+ '@babel/types': 7.26.0
+ convert-source-map: 2.0.0
+ debug: 4.3.7
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/generator@7.26.2':
+ dependencies:
+ '@babel/parser': 7.26.2
+ '@babel/types': 7.26.0
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+ jsesc: 3.0.2
+
+ '@babel/helper-annotate-as-pure@7.25.9':
+ dependencies:
+ '@babel/types': 7.26.0
+
+ '@babel/helper-compilation-targets@7.25.9':
+ dependencies:
+ '@babel/compat-data': 7.26.2
+ '@babel/helper-validator-option': 7.25.9
+ browserslist: 4.24.2
+ lru-cache: 5.1.1
+ semver: 6.3.1
+
+ '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-annotate-as-pure': 7.25.9
+ '@babel/helper-member-expression-to-functions': 7.25.9
+ '@babel/helper-optimise-call-expression': 7.25.9
+ '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
+ '@babel/traverse': 7.25.9
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-member-expression-to-functions@7.25.9':
+ dependencies:
+ '@babel/traverse': 7.25.9
+ '@babel/types': 7.26.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-imports@7.25.9':
+ dependencies:
+ '@babel/traverse': 7.25.9
+ '@babel/types': 7.26.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-module-imports': 7.25.9
+ '@babel/helper-validator-identifier': 7.25.9
+ '@babel/traverse': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-optimise-call-expression@7.25.9':
+ dependencies:
+ '@babel/types': 7.26.0
+
+ '@babel/helper-plugin-utils@7.25.9': {}
+
+ '@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-member-expression-to-functions': 7.25.9
+ '@babel/helper-optimise-call-expression': 7.25.9
+ '@babel/traverse': 7.25.9
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-skip-transparent-expression-wrappers@7.25.9':
+ dependencies:
+ '@babel/traverse': 7.25.9
+ '@babel/types': 7.26.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-string-parser@7.25.9': {}
+
+ '@babel/helper-validator-identifier@7.25.9': {}
+
+ '@babel/helper-validator-option@7.25.9': {}
+
+ '@babel/helpers@7.26.0':
+ dependencies:
+ '@babel/template': 7.25.9
+ '@babel/types': 7.26.0
+
+ '@babel/parser@7.26.2':
+ dependencies:
+ '@babel/types': 7.26.0
+
+ '@babel/plugin-proposal-decorators@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.26.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/plugin-syntax-decorators@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
+
+ '@babel/plugin-transform-typescript@7.25.9(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/helper-annotate-as-pure': 7.25.9
+ '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0)
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/helper-skip-transparent-expression-wrappers': 7.25.9
+ '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/template@7.25.9':
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ '@babel/parser': 7.26.2
+ '@babel/types': 7.26.0
+
+ '@babel/traverse@7.25.9':
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ '@babel/generator': 7.26.2
+ '@babel/parser': 7.26.2
+ '@babel/template': 7.25.9
+ '@babel/types': 7.26.0
+ debug: 4.3.7
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/types@7.26.0':
+ dependencies:
+ '@babel/helper-string-parser': 7.25.9
+ '@babel/helper-validator-identifier': 7.25.9
+
+ '@bufbuild/protobuf@2.2.2': {}
+
+ '@esbuild/aix-ppc64@0.21.5':
+ optional: true
+
+ '@esbuild/android-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/android-arm@0.21.5':
+ optional: true
+
+ '@esbuild/android-x64@0.21.5':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/darwin-x64@0.21.5':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-arm@0.21.5':
+ optional: true
+
+ '@esbuild/linux-ia32@0.21.5':
+ optional: true
+
+ '@esbuild/linux-loong64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.21.5':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-s390x@0.21.5':
+ optional: true
+
+ '@esbuild/linux-x64@0.21.5':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/sunos-x64@0.21.5':
+ optional: true
+
+ '@esbuild/win32-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/win32-ia32@0.21.5':
+ optional: true
+
+ '@esbuild/win32-x64@0.21.5':
+ optional: true
+
+ '@isaacs/cliui@8.0.2':
+ dependencies:
+ string-width: 5.1.2
+ string-width-cjs: string-width@4.2.3
+ strip-ansi: 7.1.0
+ strip-ansi-cjs: strip-ansi@6.0.1
+ wrap-ansi: 8.1.0
+ wrap-ansi-cjs: wrap-ansi@7.0.0
+
+ '@jridgewell/gen-mapping@0.3.5':
+ dependencies:
+ '@jridgewell/set-array': 1.2.1
+ '@jridgewell/sourcemap-codec': 1.5.0
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/set-array@1.2.1': {}
+
+ '@jridgewell/source-map@0.3.11':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+
+ '@jridgewell/sourcemap-codec@1.5.0': {}
+
+ '@jridgewell/trace-mapping@0.3.25':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ '@nodelib/fs.scandir@2.1.5':
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ '@nodelib/fs.stat@2.0.5': {}
+
+ '@nodelib/fs.walk@1.2.8':
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.17.1
+
+ '@pkgjs/parseargs@0.11.0':
+ optional: true
+
+ '@polka/url@1.0.0-next.28': {}
+
+ '@rollup/pluginutils@5.1.3(rollup@4.27.3)':
+ dependencies:
+ '@types/estree': 1.0.6
+ estree-walker: 2.0.2
+ picomatch: 4.0.2
+ optionalDependencies:
+ rollup: 4.27.3
+
+ '@rollup/rollup-android-arm-eabi@4.27.3':
+ optional: true
+
+ '@rollup/rollup-android-arm64@4.27.3':
+ optional: true
+
+ '@rollup/rollup-darwin-arm64@4.27.3':
+ optional: true
+
+ '@rollup/rollup-darwin-x64@4.27.3':
+ optional: true
+
+ '@rollup/rollup-freebsd-arm64@4.27.3':
+ optional: true
+
+ '@rollup/rollup-freebsd-x64@4.27.3':
+ optional: true
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.27.3':
+ optional: true
+
+ '@rollup/rollup-linux-arm-musleabihf@4.27.3':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-gnu@4.27.3':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-musl@4.27.3':
+ optional: true
+
+ '@rollup/rollup-linux-powerpc64le-gnu@4.27.3':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-gnu@4.27.3':
+ optional: true
+
+ '@rollup/rollup-linux-s390x-gnu@4.27.3':
+ optional: true
+
+ '@rollup/rollup-linux-x64-gnu@4.27.3':
+ optional: true
+
+ '@rollup/rollup-linux-x64-musl@4.27.3':
+ optional: true
+
+ '@rollup/rollup-win32-arm64-msvc@4.27.3':
+ optional: true
+
+ '@rollup/rollup-win32-ia32-msvc@4.27.3':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.27.3':
+ optional: true
+
+ '@types/estree@1.0.6': {}
+
+ '@types/web-bluetooth@0.0.20': {}
+
+ '@vant/area-data@2.0.0': {}
+
+ '@vant/auto-import-resolver@1.2.1': {}
+
+ '@vant/popperjs@1.3.0': {}
+
+ '@vant/use@1.6.0(vue@3.5.13)':
+ dependencies:
+ vue: 3.5.13
+
+ '@vitejs/plugin-vue-jsx@4.1.0(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1))(vue@3.5.13)':
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0)
+ '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.0)
+ vite: 5.4.11(sass-embedded@1.81.0)(terser@5.43.1)
+ vue: 3.5.13
+ transitivePeerDependencies:
+ - supports-color
+
+ '@vitejs/plugin-vue@5.2.0(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1))(vue@3.5.13)':
+ dependencies:
+ vite: 5.4.11(sass-embedded@1.81.0)(terser@5.43.1)
+ vue: 3.5.13
+
+ '@vue/babel-helper-vue-transform-on@1.2.5': {}
+
+ '@vue/babel-plugin-jsx@1.2.5(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/helper-module-imports': 7.25.9
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0)
+ '@babel/template': 7.25.9
+ '@babel/traverse': 7.25.9
+ '@babel/types': 7.26.0
+ '@vue/babel-helper-vue-transform-on': 1.2.5
+ '@vue/babel-plugin-resolve-type': 1.2.5(@babel/core@7.26.0)
+ html-tags: 3.3.1
+ svg-tags: 1.0.0
+ optionalDependencies:
+ '@babel/core': 7.26.0
+ transitivePeerDependencies:
+ - supports-color
+
+ '@vue/babel-plugin-resolve-type@1.2.5(@babel/core@7.26.0)':
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ '@babel/core': 7.26.0
+ '@babel/helper-module-imports': 7.25.9
+ '@babel/helper-plugin-utils': 7.25.9
+ '@babel/parser': 7.26.2
+ '@vue/compiler-sfc': 3.5.13
+ transitivePeerDependencies:
+ - supports-color
+
+ '@vue/compiler-core@3.5.13':
+ dependencies:
+ '@babel/parser': 7.26.2
+ '@vue/shared': 3.5.13
+ entities: 4.5.0
+ estree-walker: 2.0.2
+ source-map-js: 1.2.1
+
+ '@vue/compiler-dom@3.5.13':
+ dependencies:
+ '@vue/compiler-core': 3.5.13
+ '@vue/shared': 3.5.13
+
+ '@vue/compiler-sfc@3.5.13':
+ dependencies:
+ '@babel/parser': 7.26.2
+ '@vue/compiler-core': 3.5.13
+ '@vue/compiler-dom': 3.5.13
+ '@vue/compiler-ssr': 3.5.13
+ '@vue/shared': 3.5.13
+ estree-walker: 2.0.2
+ magic-string: 0.30.13
+ postcss: 8.4.49
+ source-map-js: 1.2.1
+
+ '@vue/compiler-ssr@3.5.13':
+ dependencies:
+ '@vue/compiler-dom': 3.5.13
+ '@vue/shared': 3.5.13
+
+ '@vue/devtools-api@6.6.4': {}
+
+ '@vue/devtools-core@7.6.4(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1))(vue@3.5.13)':
+ dependencies:
+ '@vue/devtools-kit': 7.6.4
+ '@vue/devtools-shared': 7.6.4
+ mitt: 3.0.1
+ nanoid: 3.3.7
+ pathe: 1.1.2
+ vite-hot-client: 0.2.3(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1))
+ vue: 3.5.13
+ transitivePeerDependencies:
+ - vite
+
+ '@vue/devtools-kit@7.6.4':
+ dependencies:
+ '@vue/devtools-shared': 7.6.4
+ birpc: 0.2.19
+ hookable: 5.5.3
+ mitt: 3.0.1
+ perfect-debounce: 1.0.0
+ speakingurl: 14.0.1
+ superjson: 2.2.1
+
+ '@vue/devtools-shared@7.6.4':
+ dependencies:
+ rfdc: 1.4.1
+
+ '@vue/reactivity@3.5.13':
+ dependencies:
+ '@vue/shared': 3.5.13
+
+ '@vue/runtime-core@3.5.13':
+ dependencies:
+ '@vue/reactivity': 3.5.13
+ '@vue/shared': 3.5.13
+
+ '@vue/runtime-dom@3.5.13':
+ dependencies:
+ '@vue/reactivity': 3.5.13
+ '@vue/runtime-core': 3.5.13
+ '@vue/shared': 3.5.13
+ csstype: 3.1.3
+
+ '@vue/server-renderer@3.5.13(vue@3.5.13)':
+ dependencies:
+ '@vue/compiler-ssr': 3.5.13
+ '@vue/shared': 3.5.13
+ vue: 3.5.13
+
+ '@vue/shared@3.5.13': {}
+
+ '@vueuse/core@11.3.0(vue@3.5.13)':
+ dependencies:
+ '@types/web-bluetooth': 0.0.20
+ '@vueuse/metadata': 11.3.0
+ '@vueuse/shared': 11.3.0(vue@3.5.13)
+ vue-demi: 0.14.10(vue@3.5.13)
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+
+ '@vueuse/metadata@11.3.0': {}
+
+ '@vueuse/shared@11.3.0(vue@3.5.13)':
+ dependencies:
+ vue-demi: 0.14.10(vue@3.5.13)
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+
+ acorn@8.14.0: {}
+
+ ansi-regex@5.0.1: {}
+
+ ansi-regex@6.1.0: {}
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ ansi-styles@6.2.1: {}
+
+ any-promise@1.3.0: {}
+
+ anymatch@3.1.3:
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+
+ arg@5.0.2: {}
+
+ asynckit@0.4.0: {}
+
+ autoprefixer@10.4.20(postcss@8.4.49):
+ dependencies:
+ browserslist: 4.24.2
+ caniuse-lite: 1.0.30001680
+ fraction.js: 4.3.7
+ normalize-range: 0.1.2
+ picocolors: 1.1.1
+ postcss: 8.4.49
+ postcss-value-parser: 4.2.0
+
+ axios@1.7.7:
+ dependencies:
+ follow-redirects: 1.15.9
+ form-data: 4.0.1
+ proxy-from-env: 1.1.0
+ transitivePeerDependencies:
+ - debug
+
+ balanced-match@1.0.2: {}
+
+ binary-extensions@2.3.0: {}
+
+ birpc@0.2.19: {}
+
+ brace-expansion@2.0.1:
+ dependencies:
+ balanced-match: 1.0.2
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
+ browserslist@4.24.2:
+ dependencies:
+ caniuse-lite: 1.0.30001680
+ electron-to-chromium: 1.5.63
+ node-releases: 2.0.18
+ update-browserslist-db: 1.1.1(browserslist@4.24.2)
+
+ buffer-builder@0.2.0: {}
+
+ buffer-from@1.1.2: {}
+
+ bundle-name@4.1.0:
+ dependencies:
+ run-applescript: 7.0.0
+
+ camelcase-css@2.0.1: {}
+
+ camelcase@5.3.1: {}
+
+ caniuse-lite@1.0.30001680: {}
+
+ chokidar@3.6.0:
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.3
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ cliui@6.0.0:
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 6.2.0
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.4: {}
+
+ colorjs.io@0.5.2: {}
+
+ combined-stream@1.0.8:
+ dependencies:
+ delayed-stream: 1.0.0
+
+ commander@2.20.3: {}
+
+ commander@4.1.1: {}
+
+ confbox@0.1.8: {}
+
+ convert-source-map@2.0.0: {}
+
+ copy-anything@3.0.5:
+ dependencies:
+ is-what: 4.1.16
+
+ cross-spawn@7.0.6:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ crypto-js@4.2.0: {}
+
+ cssesc@3.0.0: {}
+
+ csstype@3.1.3: {}
+
+ debug@4.3.7:
+ dependencies:
+ ms: 2.1.3
+
+ decamelize@1.2.0: {}
+
+ default-browser-id@5.0.0: {}
+
+ default-browser@5.2.1:
+ dependencies:
+ bundle-name: 4.1.0
+ default-browser-id: 5.0.0
+
+ define-lazy-prop@3.0.0: {}
+
+ delayed-stream@1.0.0: {}
+
+ didyoumean@1.2.2: {}
+
+ dijkstrajs@1.0.3: {}
+
+ dlv@1.1.3: {}
+
+ eastasianwidth@0.2.0: {}
+
+ echarts@5.5.1:
+ dependencies:
+ tslib: 2.3.0
+ zrender: 5.6.0
+
+ electron-to-chromium@1.5.63: {}
+
+ emoji-regex@8.0.0: {}
+
+ emoji-regex@9.2.2: {}
+
+ entities@4.5.0: {}
+
+ error-stack-parser-es@0.1.5: {}
+
+ esbuild@0.21.5:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.21.5
+ '@esbuild/android-arm': 0.21.5
+ '@esbuild/android-arm64': 0.21.5
+ '@esbuild/android-x64': 0.21.5
+ '@esbuild/darwin-arm64': 0.21.5
+ '@esbuild/darwin-x64': 0.21.5
+ '@esbuild/freebsd-arm64': 0.21.5
+ '@esbuild/freebsd-x64': 0.21.5
+ '@esbuild/linux-arm': 0.21.5
+ '@esbuild/linux-arm64': 0.21.5
+ '@esbuild/linux-ia32': 0.21.5
+ '@esbuild/linux-loong64': 0.21.5
+ '@esbuild/linux-mips64el': 0.21.5
+ '@esbuild/linux-ppc64': 0.21.5
+ '@esbuild/linux-riscv64': 0.21.5
+ '@esbuild/linux-s390x': 0.21.5
+ '@esbuild/linux-x64': 0.21.5
+ '@esbuild/netbsd-x64': 0.21.5
+ '@esbuild/openbsd-x64': 0.21.5
+ '@esbuild/sunos-x64': 0.21.5
+ '@esbuild/win32-arm64': 0.21.5
+ '@esbuild/win32-ia32': 0.21.5
+ '@esbuild/win32-x64': 0.21.5
+
+ escalade@3.2.0: {}
+
+ escape-string-regexp@5.0.0: {}
+
+ estree-walker@2.0.2: {}
+
+ estree-walker@3.0.3:
+ dependencies:
+ '@types/estree': 1.0.6
+
+ execa@8.0.1:
+ dependencies:
+ cross-spawn: 7.0.6
+ get-stream: 8.0.1
+ human-signals: 5.0.0
+ is-stream: 3.0.0
+ merge-stream: 2.0.0
+ npm-run-path: 5.3.0
+ onetime: 6.0.0
+ signal-exit: 4.1.0
+ strip-final-newline: 3.0.0
+
+ fast-glob@3.3.2:
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.8
+
+ fastq@1.17.1:
+ dependencies:
+ reusify: 1.0.4
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ find-up@4.1.0:
+ dependencies:
+ locate-path: 5.0.0
+ path-exists: 4.0.0
+
+ follow-redirects@1.15.9: {}
+
+ foreground-child@3.3.0:
+ dependencies:
+ cross-spawn: 7.0.6
+ signal-exit: 4.1.0
+
+ form-data@4.0.1:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ mime-types: 2.1.35
+
+ fraction.js@4.3.7: {}
+
+ fs-extra@11.2.0:
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 6.1.0
+ universalify: 2.0.1
+
+ fsevents@2.3.3:
+ optional: true
+
+ function-bind@1.1.2: {}
+
+ gensync@1.0.0-beta.2: {}
+
+ get-caller-file@2.0.5: {}
+
+ get-stream@8.0.1: {}
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob-parent@6.0.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob@10.4.5:
+ dependencies:
+ foreground-child: 3.3.0
+ jackspeak: 3.4.3
+ minimatch: 9.0.5
+ minipass: 7.1.2
+ package-json-from-dist: 1.0.1
+ path-scurry: 1.11.1
+
+ globals@11.12.0: {}
+
+ graceful-fs@4.2.11: {}
+
+ has-flag@4.0.0: {}
+
+ hasown@2.0.2:
+ dependencies:
+ function-bind: 1.1.2
+
+ hookable@5.5.3: {}
+
+ html-tags@3.3.1: {}
+
+ human-signals@5.0.0: {}
+
+ immutable@5.0.3: {}
+
+ is-binary-path@2.1.0:
+ dependencies:
+ binary-extensions: 2.3.0
+
+ is-core-module@2.15.1:
+ dependencies:
+ hasown: 2.0.2
+
+ is-docker@3.0.0: {}
+
+ is-extglob@2.1.1: {}
+
+ is-fullwidth-code-point@3.0.0: {}
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-inside-container@1.0.0:
+ dependencies:
+ is-docker: 3.0.0
+
+ is-number@7.0.0: {}
+
+ is-stream@3.0.0: {}
+
+ is-what@4.1.16: {}
+
+ is-wsl@3.1.0:
+ dependencies:
+ is-inside-container: 1.0.0
+
+ isexe@2.0.0: {}
+
+ jackspeak@3.4.3:
+ dependencies:
+ '@isaacs/cliui': 8.0.2
+ optionalDependencies:
+ '@pkgjs/parseargs': 0.11.0
+
+ jiti@1.21.6: {}
+
+ js-tokens@4.0.0: {}
+
+ js-tokens@9.0.0: {}
+
+ jsesc@3.0.2: {}
+
+ json5@2.2.3: {}
+
+ jsonfile@6.1.0:
+ dependencies:
+ universalify: 2.0.1
+ optionalDependencies:
+ graceful-fs: 4.2.11
+
+ kolorist@1.8.0: {}
+
+ lilconfig@2.1.0: {}
+
+ lilconfig@3.1.2: {}
+
+ lines-and-columns@1.2.4: {}
+
+ local-pkg@0.5.1:
+ dependencies:
+ mlly: 1.7.3
+ pkg-types: 1.2.1
+
+ locate-path@5.0.0:
+ dependencies:
+ p-locate: 4.1.0
+
+ lodash@4.17.21: {}
+
+ lru-cache@10.4.3: {}
+
+ lru-cache@5.1.1:
+ dependencies:
+ yallist: 3.1.1
+
+ magic-string@0.30.13:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ magic-string@0.30.14:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ merge-stream@2.0.0: {}
+
+ merge2@1.4.1: {}
+
+ micromatch@4.0.8:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.1
+
+ mime-db@1.52.0: {}
+
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
+
+ mimic-fn@4.0.0: {}
+
+ minimatch@9.0.5:
+ dependencies:
+ brace-expansion: 2.0.1
+
+ minipass@7.1.2: {}
+
+ mitt@3.0.1: {}
+
+ mlly@1.7.3:
+ dependencies:
+ acorn: 8.14.0
+ pathe: 1.1.2
+ pkg-types: 1.2.1
+ ufo: 1.5.4
+
+ mrmime@2.0.0: {}
+
+ ms@2.1.3: {}
+
+ mz@2.7.0:
+ dependencies:
+ any-promise: 1.3.0
+ object-assign: 4.1.1
+ thenify-all: 1.6.0
+
+ nanoid@3.3.7: {}
+
+ node-releases@2.0.18: {}
+
+ normalize-path@3.0.0: {}
+
+ normalize-range@0.1.2: {}
+
+ npm-run-path@5.3.0:
+ dependencies:
+ path-key: 4.0.0
+
+ nprogress@0.2.0: {}
+
+ object-assign@4.1.1: {}
+
+ object-hash@3.0.0: {}
+
+ onetime@6.0.0:
+ dependencies:
+ mimic-fn: 4.0.0
+
+ open@10.1.0:
+ dependencies:
+ default-browser: 5.2.1
+ define-lazy-prop: 3.0.0
+ is-inside-container: 1.0.0
+ is-wsl: 3.1.0
+
+ p-limit@2.3.0:
+ dependencies:
+ p-try: 2.2.0
+
+ p-locate@4.1.0:
+ dependencies:
+ p-limit: 2.3.0
+
+ p-try@2.2.0: {}
+
+ package-json-from-dist@1.0.1: {}
+
+ path-exists@4.0.0: {}
+
+ path-key@3.1.1: {}
+
+ path-key@4.0.0: {}
+
+ path-parse@1.0.7: {}
+
+ path-scurry@1.11.1:
+ dependencies:
+ lru-cache: 10.4.3
+ minipass: 7.1.2
+
+ pathe@1.1.2: {}
+
+ perfect-debounce@1.0.0: {}
+
+ picocolors@1.1.1: {}
+
+ picomatch@2.3.1: {}
+
+ picomatch@4.0.2: {}
+
+ pify@2.3.0: {}
+
+ pinia@2.2.6(vue@3.5.13):
+ dependencies:
+ '@vue/devtools-api': 6.6.4
+ vue: 3.5.13
+ vue-demi: 0.14.10(vue@3.5.13)
+
+ pirates@4.0.6: {}
+
+ pkg-types@1.2.1:
+ dependencies:
+ confbox: 0.1.8
+ mlly: 1.7.3
+ pathe: 1.1.2
+
+ pngjs@5.0.0: {}
+
+ postcss-import@15.1.0(postcss@8.4.49):
+ dependencies:
+ postcss: 8.4.49
+ postcss-value-parser: 4.2.0
+ read-cache: 1.0.0
+ resolve: 1.22.8
+
+ postcss-js@4.0.1(postcss@8.4.49):
+ dependencies:
+ camelcase-css: 2.0.1
+ postcss: 8.4.49
+
+ postcss-load-config@4.0.2(postcss@8.4.49):
+ dependencies:
+ lilconfig: 3.1.2
+ yaml: 2.6.1
+ optionalDependencies:
+ postcss: 8.4.49
+
+ postcss-nested@6.2.0(postcss@8.4.49):
+ dependencies:
+ postcss: 8.4.49
+ postcss-selector-parser: 6.1.2
+
+ postcss-selector-parser@6.1.2:
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+
+ postcss-value-parser@4.2.0: {}
+
+ postcss@8.4.49:
+ dependencies:
+ nanoid: 3.3.7
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ proxy-from-env@1.1.0: {}
+
+ qrcode@1.5.4:
+ dependencies:
+ dijkstrajs: 1.0.3
+ pngjs: 5.0.0
+ yargs: 15.4.1
+
+ queue-microtask@1.2.3: {}
+
+ read-cache@1.0.0:
+ dependencies:
+ pify: 2.3.0
+
+ readdirp@3.6.0:
+ dependencies:
+ picomatch: 2.3.1
+
+ require-directory@2.1.1: {}
+
+ require-main-filename@2.0.0: {}
+
+ resolve@1.22.8:
+ dependencies:
+ is-core-module: 2.15.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ reusify@1.0.4: {}
+
+ rfdc@1.4.1: {}
+
+ rollup@4.27.3:
+ dependencies:
+ '@types/estree': 1.0.6
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.27.3
+ '@rollup/rollup-android-arm64': 4.27.3
+ '@rollup/rollup-darwin-arm64': 4.27.3
+ '@rollup/rollup-darwin-x64': 4.27.3
+ '@rollup/rollup-freebsd-arm64': 4.27.3
+ '@rollup/rollup-freebsd-x64': 4.27.3
+ '@rollup/rollup-linux-arm-gnueabihf': 4.27.3
+ '@rollup/rollup-linux-arm-musleabihf': 4.27.3
+ '@rollup/rollup-linux-arm64-gnu': 4.27.3
+ '@rollup/rollup-linux-arm64-musl': 4.27.3
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.27.3
+ '@rollup/rollup-linux-riscv64-gnu': 4.27.3
+ '@rollup/rollup-linux-s390x-gnu': 4.27.3
+ '@rollup/rollup-linux-x64-gnu': 4.27.3
+ '@rollup/rollup-linux-x64-musl': 4.27.3
+ '@rollup/rollup-win32-arm64-msvc': 4.27.3
+ '@rollup/rollup-win32-ia32-msvc': 4.27.3
+ '@rollup/rollup-win32-x64-msvc': 4.27.3
+ fsevents: 2.3.3
+
+ run-applescript@7.0.0: {}
+
+ run-parallel@1.2.0:
+ dependencies:
+ queue-microtask: 1.2.3
+
+ rxjs@7.8.1:
+ dependencies:
+ tslib: 2.8.1
+
+ sass-embedded-android-arm64@1.81.0:
+ optional: true
+
+ sass-embedded-android-arm@1.81.0:
+ optional: true
+
+ sass-embedded-android-ia32@1.81.0:
+ optional: true
+
+ sass-embedded-android-riscv64@1.81.0:
+ optional: true
+
+ sass-embedded-android-x64@1.81.0:
+ optional: true
+
+ sass-embedded-darwin-arm64@1.81.0:
+ optional: true
+
+ sass-embedded-darwin-x64@1.81.0:
+ optional: true
+
+ sass-embedded-linux-arm64@1.81.0:
+ optional: true
+
+ sass-embedded-linux-arm@1.81.0:
+ optional: true
+
+ sass-embedded-linux-ia32@1.81.0:
+ optional: true
+
+ sass-embedded-linux-musl-arm64@1.81.0:
+ optional: true
+
+ sass-embedded-linux-musl-arm@1.81.0:
+ optional: true
+
+ sass-embedded-linux-musl-ia32@1.81.0:
+ optional: true
+
+ sass-embedded-linux-musl-riscv64@1.81.0:
+ optional: true
+
+ sass-embedded-linux-musl-x64@1.81.0:
+ optional: true
+
+ sass-embedded-linux-riscv64@1.81.0:
+ optional: true
+
+ sass-embedded-linux-x64@1.81.0:
+ optional: true
+
+ sass-embedded-win32-arm64@1.81.0:
+ optional: true
+
+ sass-embedded-win32-ia32@1.81.0:
+ optional: true
+
+ sass-embedded-win32-x64@1.81.0:
+ optional: true
+
+ sass-embedded@1.81.0:
+ dependencies:
+ '@bufbuild/protobuf': 2.2.2
+ buffer-builder: 0.2.0
+ colorjs.io: 0.5.2
+ immutable: 5.0.3
+ rxjs: 7.8.1
+ supports-color: 8.1.1
+ sync-child-process: 1.0.2
+ varint: 6.0.0
+ optionalDependencies:
+ sass-embedded-android-arm: 1.81.0
+ sass-embedded-android-arm64: 1.81.0
+ sass-embedded-android-ia32: 1.81.0
+ sass-embedded-android-riscv64: 1.81.0
+ sass-embedded-android-x64: 1.81.0
+ sass-embedded-darwin-arm64: 1.81.0
+ sass-embedded-darwin-x64: 1.81.0
+ sass-embedded-linux-arm: 1.81.0
+ sass-embedded-linux-arm64: 1.81.0
+ sass-embedded-linux-ia32: 1.81.0
+ sass-embedded-linux-musl-arm: 1.81.0
+ sass-embedded-linux-musl-arm64: 1.81.0
+ sass-embedded-linux-musl-ia32: 1.81.0
+ sass-embedded-linux-musl-riscv64: 1.81.0
+ sass-embedded-linux-musl-x64: 1.81.0
+ sass-embedded-linux-riscv64: 1.81.0
+ sass-embedded-linux-x64: 1.81.0
+ sass-embedded-win32-arm64: 1.81.0
+ sass-embedded-win32-ia32: 1.81.0
+ sass-embedded-win32-x64: 1.81.0
+
+ scule@1.3.0: {}
+
+ semver@6.3.1: {}
+
+ set-blocking@2.0.0: {}
+
+ shebang-command@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@3.0.0: {}
+
+ signal-exit@4.1.0: {}
+
+ sirv@3.0.0:
+ dependencies:
+ '@polka/url': 1.0.0-next.28
+ mrmime: 2.0.0
+ totalist: 3.0.1
+
+ source-map-js@1.2.1: {}
+
+ source-map-support@0.5.21:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
+ source-map@0.6.1: {}
+
+ speakingurl@14.0.1: {}
+
+ string-width@4.2.3:
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
+ string-width@5.1.2:
+ dependencies:
+ eastasianwidth: 0.2.0
+ emoji-regex: 9.2.2
+ strip-ansi: 7.1.0
+
+ strip-ansi@6.0.1:
+ dependencies:
+ ansi-regex: 5.0.1
+
+ strip-ansi@7.1.0:
+ dependencies:
+ ansi-regex: 6.1.0
+
+ strip-final-newline@3.0.0: {}
+
+ strip-literal@2.1.0:
+ dependencies:
+ js-tokens: 9.0.0
+
+ sucrase@3.35.0:
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.5
+ commander: 4.1.1
+ glob: 10.4.5
+ lines-and-columns: 1.2.4
+ mz: 2.7.0
+ pirates: 4.0.6
+ ts-interface-checker: 0.1.13
+
+ superjson@2.2.1:
+ dependencies:
+ copy-anything: 3.0.5
+
+ supports-color@8.1.1:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-preserve-symlinks-flag@1.0.0: {}
+
+ svg-tags@1.0.0: {}
+
+ sync-child-process@1.0.2:
+ dependencies:
+ sync-message-port: 1.1.3
+
+ sync-message-port@1.1.3: {}
+
+ tailwindcss@3.4.15:
+ dependencies:
+ '@alloc/quick-lru': 5.2.0
+ arg: 5.0.2
+ chokidar: 3.6.0
+ didyoumean: 1.2.2
+ dlv: 1.1.3
+ fast-glob: 3.3.2
+ glob-parent: 6.0.2
+ is-glob: 4.0.3
+ jiti: 1.21.6
+ lilconfig: 2.1.0
+ micromatch: 4.0.8
+ normalize-path: 3.0.0
+ object-hash: 3.0.0
+ picocolors: 1.1.1
+ postcss: 8.4.49
+ postcss-import: 15.1.0(postcss@8.4.49)
+ postcss-js: 4.0.1(postcss@8.4.49)
+ postcss-load-config: 4.0.2(postcss@8.4.49)
+ postcss-nested: 6.2.0(postcss@8.4.49)
+ postcss-selector-parser: 6.1.2
+ resolve: 1.22.8
+ sucrase: 3.35.0
+ transitivePeerDependencies:
+ - ts-node
+
+ terser@5.43.1:
+ dependencies:
+ '@jridgewell/source-map': 0.3.11
+ acorn: 8.14.0
+ commander: 2.20.3
+ source-map-support: 0.5.21
+
+ thenify-all@1.6.0:
+ dependencies:
+ thenify: 3.3.1
+
+ thenify@3.3.1:
+ dependencies:
+ any-promise: 1.3.0
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ totalist@3.0.1: {}
+
+ ts-interface-checker@0.1.13: {}
+
+ tslib@2.3.0: {}
+
+ tslib@2.8.1: {}
+
+ ufo@1.5.4: {}
+
+ unimport@3.13.2(rollup@4.27.3):
+ dependencies:
+ '@rollup/pluginutils': 5.1.3(rollup@4.27.3)
+ acorn: 8.14.0
+ escape-string-regexp: 5.0.0
+ estree-walker: 3.0.3
+ fast-glob: 3.3.2
+ local-pkg: 0.5.1
+ magic-string: 0.30.13
+ mlly: 1.7.3
+ pathe: 1.1.2
+ pkg-types: 1.2.1
+ scule: 1.3.0
+ strip-literal: 2.1.0
+ unplugin: 1.16.0
+ transitivePeerDependencies:
+ - rollup
+
+ universalify@2.0.1: {}
+
+ unplugin-auto-import@0.18.5(@vueuse/core@11.3.0(vue@3.5.13))(rollup@4.27.3):
+ dependencies:
+ '@antfu/utils': 0.7.10
+ '@rollup/pluginutils': 5.1.3(rollup@4.27.3)
+ fast-glob: 3.3.2
+ local-pkg: 0.5.1
+ magic-string: 0.30.13
+ minimatch: 9.0.5
+ unimport: 3.13.2(rollup@4.27.3)
+ unplugin: 1.16.0
+ optionalDependencies:
+ '@vueuse/core': 11.3.0(vue@3.5.13)
+ transitivePeerDependencies:
+ - rollup
+
+ unplugin-vue-components@0.27.5(@babel/parser@7.26.2)(rollup@4.27.3)(vue@3.5.13):
+ dependencies:
+ '@antfu/utils': 0.7.10
+ '@rollup/pluginutils': 5.1.3(rollup@4.27.3)
+ chokidar: 3.6.0
+ debug: 4.3.7
+ fast-glob: 3.3.2
+ local-pkg: 0.5.1
+ magic-string: 0.30.14
+ minimatch: 9.0.5
+ mlly: 1.7.3
+ unplugin: 1.16.0
+ vue: 3.5.13
+ optionalDependencies:
+ '@babel/parser': 7.26.2
+ transitivePeerDependencies:
+ - rollup
+ - supports-color
+
+ unplugin@1.16.0:
+ dependencies:
+ acorn: 8.14.0
+ webpack-virtual-modules: 0.6.2
+
+ update-browserslist-db@1.1.1(browserslist@4.24.2):
+ dependencies:
+ browserslist: 4.24.2
+ escalade: 3.2.0
+ picocolors: 1.1.1
+
+ util-deprecate@1.0.2: {}
+
+ vant@4.9.9(vue@3.5.13):
+ dependencies:
+ '@vant/popperjs': 1.3.0
+ '@vant/use': 1.6.0(vue@3.5.13)
+ '@vue/shared': 3.5.13
+ vue: 3.5.13
+
+ varint@6.0.0: {}
+
+ vite-hot-client@0.2.3(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1)):
+ dependencies:
+ vite: 5.4.11(sass-embedded@1.81.0)(terser@5.43.1)
+
+ vite-plugin-inspect@0.8.8(rollup@4.27.3)(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1)):
+ dependencies:
+ '@antfu/utils': 0.7.10
+ '@rollup/pluginutils': 5.1.3(rollup@4.27.3)
+ debug: 4.3.7
+ error-stack-parser-es: 0.1.5
+ fs-extra: 11.2.0
+ open: 10.1.0
+ perfect-debounce: 1.0.0
+ picocolors: 1.1.1
+ sirv: 3.0.0
+ vite: 5.4.11(sass-embedded@1.81.0)(terser@5.43.1)
+ transitivePeerDependencies:
+ - rollup
+ - supports-color
+
+ vite-plugin-vue-devtools@7.6.4(rollup@4.27.3)(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1))(vue@3.5.13):
+ dependencies:
+ '@vue/devtools-core': 7.6.4(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1))(vue@3.5.13)
+ '@vue/devtools-kit': 7.6.4
+ '@vue/devtools-shared': 7.6.4
+ execa: 8.0.1
+ sirv: 3.0.0
+ vite: 5.4.11(sass-embedded@1.81.0)(terser@5.43.1)
+ vite-plugin-inspect: 0.8.8(rollup@4.27.3)(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1))
+ vite-plugin-vue-inspector: 5.2.0(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1))
+ transitivePeerDependencies:
+ - '@nuxt/kit'
+ - rollup
+ - supports-color
+ - vue
+
+ vite-plugin-vue-inspector@5.2.0(vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1)):
+ dependencies:
+ '@babel/core': 7.26.0
+ '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.0)
+ '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0)
+ '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0)
+ '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0)
+ '@vue/babel-plugin-jsx': 1.2.5(@babel/core@7.26.0)
+ '@vue/compiler-dom': 3.5.13
+ kolorist: 1.8.0
+ magic-string: 0.30.13
+ vite: 5.4.11(sass-embedded@1.81.0)(terser@5.43.1)
+ transitivePeerDependencies:
+ - supports-color
+
+ vite@5.4.11(sass-embedded@1.81.0)(terser@5.43.1):
+ dependencies:
+ esbuild: 0.21.5
+ postcss: 8.4.49
+ rollup: 4.27.3
+ optionalDependencies:
+ fsevents: 2.3.3
+ sass-embedded: 1.81.0
+ terser: 5.43.1
+
+ vue-demi@0.13.11(vue@3.5.13):
+ dependencies:
+ vue: 3.5.13
+
+ vue-demi@0.14.10(vue@3.5.13):
+ dependencies:
+ vue: 3.5.13
+
+ vue-echarts@7.0.3(@vue/runtime-core@3.5.13)(echarts@5.5.1)(vue@3.5.13):
+ dependencies:
+ echarts: 5.5.1
+ vue: 3.5.13
+ vue-demi: 0.13.11(vue@3.5.13)
+ optionalDependencies:
+ '@vue/runtime-core': 3.5.13
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+
+ vue-router@4.4.5(vue@3.5.13):
+ dependencies:
+ '@vue/devtools-api': 6.6.4
+ vue: 3.5.13
+
+ vue@3.5.13:
+ dependencies:
+ '@vue/compiler-dom': 3.5.13
+ '@vue/compiler-sfc': 3.5.13
+ '@vue/runtime-dom': 3.5.13
+ '@vue/server-renderer': 3.5.13(vue@3.5.13)
+ '@vue/shared': 3.5.13
+
+ webpack-virtual-modules@0.6.2: {}
+
+ which-module@2.0.1: {}
+
+ which@2.0.2:
+ dependencies:
+ isexe: 2.0.0
+
+ wrap-ansi@6.2.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrap-ansi@7.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrap-ansi@8.1.0:
+ dependencies:
+ ansi-styles: 6.2.1
+ string-width: 5.1.2
+ strip-ansi: 7.1.0
+
+ y18n@4.0.3: {}
+
+ yallist@3.1.1: {}
+
+ yaml@2.6.1: {}
+
+ yargs-parser@18.1.3:
+ dependencies:
+ camelcase: 5.3.1
+ decamelize: 1.2.0
+
+ yargs@15.4.1:
+ dependencies:
+ cliui: 6.0.0
+ decamelize: 1.2.0
+ find-up: 4.1.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ require-main-filename: 2.0.0
+ set-blocking: 2.0.0
+ string-width: 4.2.3
+ which-module: 2.0.1
+ y18n: 4.0.3
+ yargs-parser: 18.1.3
+
+ zrender@5.6.0:
+ dependencies:
+ tslib: 2.3.0
diff --git a/postcss.config.js b/postcss.config.js
new file mode 100644
index 0000000..49c0612
--- /dev/null
+++ b/postcss.config.js
@@ -0,0 +1,6 @@
+export default {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+};
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 0000000..f0ae5d6
Binary files /dev/null and b/public/favicon.ico differ
diff --git a/public/image/clickCaptcha.jpg b/public/image/clickCaptcha.jpg
new file mode 100644
index 0000000..8846f9a
Binary files /dev/null and b/public/image/clickCaptcha.jpg differ
diff --git a/public/image/help/13.jpg b/public/image/help/13.jpg
new file mode 100644
index 0000000..6241387
Binary files /dev/null and b/public/image/help/13.jpg differ
diff --git a/public/image/help/14.jpg b/public/image/help/14.jpg
new file mode 100644
index 0000000..7f26b0c
Binary files /dev/null and b/public/image/help/14.jpg differ
diff --git a/public/image/help/15.jpg b/public/image/help/15.jpg
new file mode 100644
index 0000000..1bae74d
Binary files /dev/null and b/public/image/help/15.jpg differ
diff --git a/public/image/help/18.jpg b/public/image/help/18.jpg
new file mode 100644
index 0000000..7e6b530
Binary files /dev/null and b/public/image/help/18.jpg differ
diff --git a/public/image/help/19.jpg b/public/image/help/19.jpg
new file mode 100644
index 0000000..070d849
Binary files /dev/null and b/public/image/help/19.jpg differ
diff --git a/public/image/help/20.jpg b/public/image/help/20.jpg
new file mode 100644
index 0000000..2c296cb
Binary files /dev/null and b/public/image/help/20.jpg differ
diff --git a/public/image/help/21.jpg b/public/image/help/21.jpg
new file mode 100644
index 0000000..9615b9d
Binary files /dev/null and b/public/image/help/21.jpg differ
diff --git a/public/image/help/22.jpg b/public/image/help/22.jpg
new file mode 100644
index 0000000..753a147
Binary files /dev/null and b/public/image/help/22.jpg differ
diff --git a/public/image/help/23.jpg b/public/image/help/23.jpg
new file mode 100644
index 0000000..e093d19
Binary files /dev/null and b/public/image/help/23.jpg differ
diff --git a/public/image/help/24.jpg b/public/image/help/24.jpg
new file mode 100644
index 0000000..0a53d17
Binary files /dev/null and b/public/image/help/24.jpg differ
diff --git a/public/image/help/25.jpg b/public/image/help/25.jpg
new file mode 100644
index 0000000..142d87a
Binary files /dev/null and b/public/image/help/25.jpg differ
diff --git a/public/image/help/direct-earnings.jpg b/public/image/help/direct-earnings.jpg
new file mode 100644
index 0000000..853b971
Binary files /dev/null and b/public/image/help/direct-earnings.jpg differ
diff --git a/public/image/help/invite-earnings.jpg b/public/image/help/invite-earnings.jpg
new file mode 100644
index 0000000..280ef09
Binary files /dev/null and b/public/image/help/invite-earnings.jpg differ
diff --git a/public/image/help/invite-step1.jpg b/public/image/help/invite-step1.jpg
new file mode 100644
index 0000000..8c5d608
Binary files /dev/null and b/public/image/help/invite-step1.jpg differ
diff --git a/public/image/help/invite-step2.jpg b/public/image/help/invite-step2.jpg
new file mode 100644
index 0000000..43eaa78
Binary files /dev/null and b/public/image/help/invite-step2.jpg differ
diff --git a/public/image/help/invite-step3.jpg b/public/image/help/invite-step3.jpg
new file mode 100644
index 0000000..4d965f3
Binary files /dev/null and b/public/image/help/invite-step3.jpg differ
diff --git a/public/image/help/report-calculation.jpg b/public/image/help/report-calculation.jpg
new file mode 100644
index 0000000..5ddb0e4
Binary files /dev/null and b/public/image/help/report-calculation.jpg differ
diff --git a/public/image/help/report-cost.jpg b/public/image/help/report-cost.jpg
new file mode 100644
index 0000000..03e3438
Binary files /dev/null and b/public/image/help/report-cost.jpg differ
diff --git a/public/image/help/report-efficiency.jpg b/public/image/help/report-efficiency.jpg
new file mode 100644
index 0000000..67ac4d5
Binary files /dev/null and b/public/image/help/report-efficiency.jpg differ
diff --git a/public/image/help/report-push.jpg b/public/image/help/report-push.jpg
new file mode 100644
index 0000000..67b17dd
Binary files /dev/null and b/public/image/help/report-push.jpg differ
diff --git a/public/image/help/report-secret-1.jpg b/public/image/help/report-secret-1.jpg
new file mode 100644
index 0000000..571889f
Binary files /dev/null and b/public/image/help/report-secret-1.jpg differ
diff --git a/public/image/help/report-secret-2.jpg b/public/image/help/report-secret-2.jpg
new file mode 100644
index 0000000..c147691
Binary files /dev/null and b/public/image/help/report-secret-2.jpg differ
diff --git a/public/image/help/report-step1.jpg b/public/image/help/report-step1.jpg
new file mode 100644
index 0000000..7ae6521
Binary files /dev/null and b/public/image/help/report-step1.jpg differ
diff --git a/public/image/help/report-step2.jpg b/public/image/help/report-step2.jpg
new file mode 100644
index 0000000..4895c10
Binary files /dev/null and b/public/image/help/report-step2.jpg differ
diff --git a/public/image/help/report-step3.jpg b/public/image/help/report-step3.jpg
new file mode 100644
index 0000000..32595f7
Binary files /dev/null and b/public/image/help/report-step3.jpg differ
diff --git a/public/image/help/report-step4.jpg b/public/image/help/report-step4.jpg
new file mode 100644
index 0000000..7200a29
Binary files /dev/null and b/public/image/help/report-step4.jpg differ
diff --git a/public/image/help/report-step5.jpg b/public/image/help/report-step5.jpg
new file mode 100644
index 0000000..163c528
Binary files /dev/null and b/public/image/help/report-step5.jpg differ
diff --git a/public/image/help/report-types.jpg b/public/image/help/report-types.jpg
new file mode 100644
index 0000000..e715acc
Binary files /dev/null and b/public/image/help/report-types.jpg differ
diff --git a/public/image/help/vip-guide.jpg b/public/image/help/vip-guide.jpg
new file mode 100644
index 0000000..aac5868
Binary files /dev/null and b/public/image/help/vip-guide.jpg differ
diff --git a/public/image/shot_nonal.png b/public/image/shot_nonal.png
new file mode 100644
index 0000000..5265a90
Binary files /dev/null and b/public/image/shot_nonal.png differ
diff --git a/public/image/shot_svip.png b/public/image/shot_svip.png
new file mode 100644
index 0000000..f636ea0
Binary files /dev/null and b/public/image/shot_svip.png differ
diff --git a/public/image/shot_vip.png b/public/image/shot_vip.png
new file mode 100644
index 0000000..0c15cb3
Binary files /dev/null and b/public/image/shot_vip.png differ
diff --git a/public/inquire_icons/beijianguanrenyuan.svg b/public/inquire_icons/beijianguanrenyuan.svg
new file mode 100644
index 0000000..5d5f873
--- /dev/null
+++ b/public/inquire_icons/beijianguanrenyuan.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/inquire_icons/default.svg b/public/inquire_icons/default.svg
new file mode 100644
index 0000000..8ac7949
--- /dev/null
+++ b/public/inquire_icons/default.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/public/inquire_icons/fengxianxingwei.svg b/public/inquire_icons/fengxianxingwei.svg
new file mode 100644
index 0000000..e2cb3ef
--- /dev/null
+++ b/public/inquire_icons/fengxianxingwei.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/inquire_icons/huankuanyali.svg b/public/inquire_icons/huankuanyali.svg
new file mode 100644
index 0000000..31146ab
--- /dev/null
+++ b/public/inquire_icons/huankuanyali.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/inquire_icons/hunyinzhuangtai.svg b/public/inquire_icons/hunyinzhuangtai.svg
new file mode 100644
index 0000000..eb1a3d1
--- /dev/null
+++ b/public/inquire_icons/hunyinzhuangtai.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/inquire_icons/jiedaishenqing.svg b/public/inquire_icons/jiedaishenqing.svg
new file mode 100644
index 0000000..4e1224c
--- /dev/null
+++ b/public/inquire_icons/jiedaishenqing.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/inquire_icons/jiedaiweiyue.svg b/public/inquire_icons/jiedaiweiyue.svg
new file mode 100644
index 0000000..7a218f4
--- /dev/null
+++ b/public/inquire_icons/jiedaiweiyue.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/inquire_icons/jiedaixingwei.svg b/public/inquire_icons/jiedaixingwei.svg
new file mode 100644
index 0000000..948860f
--- /dev/null
+++ b/public/inquire_icons/jiedaixingwei.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/inquire_icons/mingxiacheliang.svg b/public/inquire_icons/mingxiacheliang.svg
new file mode 100644
index 0000000..7b37237
--- /dev/null
+++ b/public/inquire_icons/mingxiacheliang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/inquire_icons/minshianjianguanli.svg b/public/inquire_icons/minshianjianguanli.svg
new file mode 100644
index 0000000..da8fbf1
--- /dev/null
+++ b/public/inquire_icons/minshianjianguanli.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/inquire_icons/renqiguanxi.svg b/public/inquire_icons/renqiguanxi.svg
new file mode 100644
index 0000000..24b3bb5
--- /dev/null
+++ b/public/inquire_icons/renqiguanxi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/inquire_icons/shixinren.svg b/public/inquire_icons/shixinren.svg
new file mode 100644
index 0000000..6d1c734
--- /dev/null
+++ b/public/inquire_icons/shixinren.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/inquire_icons/sifasheyu.svg b/public/inquire_icons/sifasheyu.svg
new file mode 100644
index 0000000..31392f3
--- /dev/null
+++ b/public/inquire_icons/sifasheyu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/inquire_icons/xianzhigaoxiaofei.svg b/public/inquire_icons/xianzhigaoxiaofei.svg
new file mode 100644
index 0000000..8e2d6e3
--- /dev/null
+++ b/public/inquire_icons/xianzhigaoxiaofei.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/inquire_icons/xingshi.svg b/public/inquire_icons/xingshi.svg
new file mode 100644
index 0000000..60f2e06
--- /dev/null
+++ b/public/inquire_icons/xingshi.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/inquire_icons/xingzhengfuwu.svg b/public/inquire_icons/xingzhengfuwu.svg
new file mode 100644
index 0000000..4c31393
--- /dev/null
+++ b/public/inquire_icons/xingzhengfuwu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/inquire_icons/yuepeichang.svg b/public/inquire_icons/yuepeichang.svg
new file mode 100644
index 0000000..740d0f3
--- /dev/null
+++ b/public/inquire_icons/yuepeichang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/inquire_icons/zhixinganjian.svg b/public/inquire_icons/zhixinganjian.svg
new file mode 100644
index 0000000..be32352
--- /dev/null
+++ b/public/inquire_icons/zhixinganjian.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/logo.png b/public/logo.png
new file mode 100644
index 0000000..3859c5a
Binary files /dev/null and b/public/logo.png differ
diff --git a/public/robots.txt b/public/robots.txt
new file mode 100644
index 0000000..def87e1
--- /dev/null
+++ b/public/robots.txt
@@ -0,0 +1,50 @@
+User-agent: *
+Allow: /
+
+# 允许访问主要页面
+Allow: /agent
+Allow: /help
+Allow: /help/guide
+Allow: /example
+Allow: /service
+Allow: /privacyPolicy
+Allow: /userAgreement
+Allow: /agentManageAgreement
+Allow: /agentSerivceAgreement
+Allow: /authorization
+
+# 禁止访问私有页面
+Disallow: /login
+Disallow: /me
+Disallow: /historyQuery
+Disallow: /promote
+Disallow: /withdraw
+Disallow: /report
+Disallow: /inquire/
+Disallow: /payment/
+Disallow: /agent/promoteDetails
+Disallow: /agent/rewardsDetails
+Disallow: /agent/promote
+Disallow: /agent/invitation
+Disallow: /agent/agentVip
+Disallow: /agent/vipApply
+Disallow: /agent/vipConfig
+Disallow: /agent/withdraw
+Disallow: /agent/withdrawDetails
+Disallow: /agent/invitationAgentApply/
+Disallow: /agent/subordinateList
+Disallow: /agent/subordinateDetail/
+
+# 禁止访问API接口
+Disallow: /api/
+
+# 禁止访问静态资源目录(可选)
+Disallow: /assets/
+Disallow: /js/
+Disallow: /css/
+
+# 网站地图
+Sitemap: https://www.zhinengcha.cn/sitemap.xml
+
+# 爬取延迟(毫秒)
+Crawl-delay: 1
diff --git a/public/site.webmanifest b/public/site.webmanifest
new file mode 100644
index 0000000..a359276
--- /dev/null
+++ b/public/site.webmanifest
@@ -0,0 +1,40 @@
+{
+ "name": "幸福查|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用",
+ "short_name": "天远数据",
+ "description": "专业大数据风险报告查询与代理平台,支持个人信用查询、小微企业风控、贷前风险背调等多场景报告应用",
+ "start_url": "/",
+ "display": "standalone",
+ "background_color": "#ffffff",
+ "theme_color": "#3498db",
+ "orientation": "portrait-primary",
+ "icons": [
+ {
+ "src": "/favicon-16x16.png",
+ "sizes": "16x16",
+ "type": "image/png"
+ },
+ {
+ "src": "/favicon-32x32.png",
+ "sizes": "32x32",
+ "type": "image/png"
+ },
+ {
+ "src": "/apple-touch-icon.png",
+ "sizes": "180x180",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "categories": ["business", "finance", "utilities"],
+ "lang": "zh-CN",
+ "dir": "ltr"
+}
diff --git a/public/sitemap.xml b/public/sitemap.xml
new file mode 100644
index 0000000..261c820
--- /dev/null
+++ b/public/sitemap.xml
@@ -0,0 +1,69 @@
+
+
+
+ https://www.zhinengcha.cn/
+ 2025-08-01
+ daily
+ 1.0
+
+
+ https://www.zhinengcha.cn/agent
+ 2025-08-01
+ weekly
+ 0.8
+
+
+ https://www.zhinengcha.cn/help
+ 2025-08-01
+ monthly
+ 0.7
+
+
+ https://www.zhinengcha.cn/help/guide
+ 2025-08-01
+ monthly
+ 0.6
+
+
+ https://www.zhinengcha.cn/example
+ 2025-08-01
+ monthly
+ 0.6
+
+
+ https://www.zhinengcha.cn/service
+ 2025-08-01
+ monthly
+ 0.5
+
+
+ https://www.zhinengcha.cn/privacyPolicy
+ 2025-08-01
+ yearly
+ 0.3
+
+
+ https://www.zhinengcha.cn/userAgreement
+ 2025-08-01
+ yearly
+ 0.3
+
+
+ https://www.zhinengcha.cn/agentManageAgreement
+ 2025-08-01
+ yearly
+ 0.3
+
+
+ https://www.zhinengcha.cn/agentSerivceAgreement
+ 2025-08-01
+ yearly
+ 0.3
+
+
+ https://www.zhinengcha.cn/authorization
+ 2025-08-01
+ yearly
+ 0.3
+
+
diff --git a/report-viewer/README.md b/report-viewer/README.md
new file mode 100644
index 0000000..fde278b
--- /dev/null
+++ b/report-viewer/README.md
@@ -0,0 +1,137 @@
+# 报告查看器 - 独立 Vue3 项目
+
+这是一个独立的 Vue3 项目,用于展示报告组件。项目使用本地 JSON 文件(`example.json`)作为数据源,不依赖网络请求。
+
+## 📋 已包含的组件
+
+1. **DWBG6A2C** - 司南报告(包含所有子模块)
+2. **FLXG0V4B** - 司法涉诉
+3. **QYGL3F8E** - 人企关系加强版(包含所有子模块)
+4. **JRZQ4B6C** - 信贷表现
+5. **JRZQ09J8** - 收入评估
+6. **QCXG9P1C** - 名下车辆
+7. **DWBG8B4D** - 谛听多维报告(包含所有子模块)
+
+## 🚀 快速开始
+
+### 1. 安装依赖
+
+```bash
+cd report-viewer
+npm install
+# 或
+pnpm install
+# 或
+yarn install
+```
+
+### 2. 启动开发服务器
+
+```bash
+npm run dev
+```
+
+访问:`http://localhost:3000`
+
+### 3. 构建生产版本
+
+```bash
+npm run build
+```
+
+## 📁 项目结构
+
+```
+report-viewer/
+├── public/
+│ └── example.json # 示例数据文件
+├── src/
+│ ├── components/ # 基础组件
+│ │ ├── BaseReport.vue # ⭐ 核心组件
+│ │ ├── GaugeChart.vue
+│ │ ├── ShareReportButton.vue
+│ │ └── ...
+│ ├── views/
+│ │ └── Report.vue # ⭐ 报告页面
+│ ├── ui/ # ⭐ 业务组件
+│ │ ├── DWBG6A2C/ # 司南报告
+│ │ ├── CFLXG0V4B/ # 司法涉诉
+│ │ ├── CQYGL3F8E/ # 人企关系加强版
+│ │ ├── JRZQ4B6C/ # 信贷表现
+│ │ ├── JRZQ09J8/ # 收入评估
+│ │ ├── CQCXG9P1C.vue # 名下车辆
+│ │ └── CDWBG8B4D/ # 谛听多维报告
+│ ├── assets/ # 样式和图片
+│ └── composables/ # 工具函数(已移除网络请求)
+├── package.json
+├── vite.config.js
+└── tailwind.config.js
+```
+
+## ⚙️ 配置说明
+
+### 数据源
+
+项目从 `public/example.json` 加载示例数据。可以直接修改该文件来更新显示的内容。
+
+### 已移除的功能
+
+- ✅ 产品背景图片(已移除背景图显示)
+- ✅ 网络请求(改为从本地 JSON 文件加载)
+- ✅ API 调用(ShareReportButton 在示例模式下不进行网络请求)
+
+## 📝 使用说明
+
+1. 启动项目后,会自动加载 `public/example.json` 中的数据
+2. 数据会自动排序并显示在报告页面中
+3. 所有组件都会根据数据进行渲染
+
+## 🔧 注意事项
+
+1. **图片资源**:确保所有必要的图片文件已复制到 `src/assets/images/` 目录
+2. **样式依赖**:项目依赖 Tailwind CSS 和 Vant UI,确保正确引入
+3. **浏览器兼容**:需要现代浏览器支持(ES2015+)
+4. **数据格式**:`example.json` 必须符合组件期望的数据结构
+
+## 📦 依赖说明
+
+### 核心依赖
+
+- **vue** ^3.5.12 - Vue 框架
+- **vue-router** ^4.4.5 - 路由管理
+- **vant** ^4.9.9 - UI 组件库
+- **echarts** ^5.5.1 - 图表库
+- **vue-echarts** ^7.0.3 - Vue ECharts 封装
+- **@vueuse/core** ^11.3.0 - Vue 工具库
+- **lodash** ^4.17.21 - 工具函数库
+
+### 开发依赖
+
+- **vite** ^5.4.10 - 构建工具
+- **tailwindcss** ^3.4.15 - CSS 框架
+- **@vitejs/plugin-vue** - Vite Vue 插件
+- **unplugin-auto-import** - 自动导入插件
+- **unplugin-vue-components** - 自动组件导入插件
+
+## 🐛 常见问题
+
+### Q: 图片加载失败?
+A: 确保图片文件已复制到 `src/assets/images/report/` 目录
+
+### Q: 样式不生效?
+A: 确保 `tailwind.config.js` 中包含了正确的 content 路径
+
+### Q: 数据不显示?
+A: 检查 `public/example.json` 文件格式是否正确,确保数据符合组件期望的结构
+
+## 📞 技术支持
+
+如有问题,请检查:
+1. 控制台错误信息
+2. `public/example.json` 文件是否存在且格式正确
+3. 依赖是否正确安装
+4. 文件路径是否正确
+
+---
+
+**提示**:这是一个独立的 Vue3 项目,使用本地 JSON 文件作为数据源,无需后端 API 支持。
diff --git a/report-viewer/index.html b/report-viewer/index.html
new file mode 100644
index 0000000..cb56af5
--- /dev/null
+++ b/report-viewer/index.html
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+ 报告查看器
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/package.json b/report-viewer/package.json
new file mode 100644
index 0000000..b23c5a3
--- /dev/null
+++ b/report-viewer/package.json
@@ -0,0 +1,34 @@
+{
+ "name": "report-viewer",
+ "version": "1.0.0",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "@vueuse/core": "^11.3.0",
+ "axios": "^1.7.7",
+ "echarts": "^5.5.1",
+ "lodash": "^4.17.21",
+ "vue": "^3.5.12",
+ "vue-echarts": "^7.0.3",
+ "vue-router": "^4.4.5",
+ "vant": "^4.9.9"
+ },
+ "devDependencies": {
+ "@vitejs/plugin-vue": "^5.1.4",
+ "@vitejs/plugin-vue-jsx": "^4.0.1",
+ "autoprefixer": "^10.4.20",
+ "postcss": "^8.4.49",
+ "sass-embedded": "^1.81.0",
+ "tailwindcss": "^3.4.15",
+ "terser": "^5.43.1",
+ "unplugin-auto-import": "^0.18.5",
+ "unplugin-vue-components": "^0.27.5",
+ "vite": "^5.4.10"
+ }
+}
+
diff --git a/report-viewer/pnpm-lock.yaml b/report-viewer/pnpm-lock.yaml
new file mode 100644
index 0000000..6fe4673
--- /dev/null
+++ b/report-viewer/pnpm-lock.yaml
@@ -0,0 +1,3093 @@
+lockfileVersion: '9.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ dependencies:
+ '@vueuse/core':
+ specifier: ^11.3.0
+ version: 11.3.0(vue@3.5.22)
+ axios:
+ specifier: ^1.7.7
+ version: 1.13.1
+ echarts:
+ specifier: ^5.5.1
+ version: 5.6.0
+ lodash:
+ specifier: ^4.17.21
+ version: 4.17.21
+ vant:
+ specifier: ^4.9.9
+ version: 4.9.21(vue@3.5.22)
+ vue:
+ specifier: ^3.5.12
+ version: 3.5.22
+ vue-echarts:
+ specifier: ^7.0.3
+ version: 7.0.3(@vue/runtime-core@3.5.22)(echarts@5.6.0)(vue@3.5.22)
+ vue-router:
+ specifier: ^4.4.5
+ version: 4.6.3(vue@3.5.22)
+ devDependencies:
+ '@vitejs/plugin-vue':
+ specifier: ^5.1.4
+ version: 5.2.4(vite@5.4.21(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.0))(vue@3.5.22)
+ '@vitejs/plugin-vue-jsx':
+ specifier: ^4.0.1
+ version: 4.2.0(vite@5.4.21(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.0))(vue@3.5.22)
+ autoprefixer:
+ specifier: ^10.4.20
+ version: 10.4.21(postcss@8.5.6)
+ postcss:
+ specifier: ^8.4.49
+ version: 8.5.6
+ sass-embedded:
+ specifier: ^1.81.0
+ version: 1.93.3
+ tailwindcss:
+ specifier: ^3.4.15
+ version: 3.4.18
+ terser:
+ specifier: ^5.43.1
+ version: 5.44.0
+ unplugin-auto-import:
+ specifier: ^0.18.5
+ version: 0.18.6(@vueuse/core@11.3.0(vue@3.5.22))(rollup@4.52.5)
+ unplugin-vue-components:
+ specifier: ^0.27.5
+ version: 0.27.5(@babel/parser@7.28.5)(rollup@4.52.5)(vue@3.5.22)
+ vite:
+ specifier: ^5.4.10
+ version: 5.4.21(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.0)
+
+packages:
+
+ '@alloc/quick-lru@5.2.0':
+ resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
+ engines: {node: '>=10'}
+
+ '@antfu/utils@0.7.10':
+ resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==}
+
+ '@babel/code-frame@7.27.1':
+ resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/compat-data@7.28.5':
+ resolution: {integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/core@7.28.5':
+ resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/generator@7.28.5':
+ resolution: {integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-annotate-as-pure@7.27.3':
+ resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-compilation-targets@7.27.2':
+ resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-create-class-features-plugin@7.28.5':
+ resolution: {integrity: sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-globals@7.28.0':
+ resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-member-expression-to-functions@7.28.5':
+ resolution: {integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-imports@7.27.1':
+ resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-module-transforms@7.28.3':
+ resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-optimise-call-expression@7.27.1':
+ resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-plugin-utils@7.27.1':
+ resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-replace-supers@7.27.1':
+ resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+
+ '@babel/helper-skip-transparent-expression-wrappers@7.27.1':
+ resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-string-parser@7.27.1':
+ resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-identifier@7.28.5':
+ resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helper-validator-option@7.27.1':
+ resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/helpers@7.28.4':
+ resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/parser@7.28.5':
+ resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/plugin-syntax-jsx@7.27.1':
+ resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-syntax-typescript@7.27.1':
+ resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/plugin-transform-typescript@7.28.5':
+ resolution: {integrity: sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@babel/template@7.27.2':
+ resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/traverse@7.28.5':
+ resolution: {integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/types@7.28.5':
+ resolution: {integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==}
+ engines: {node: '>=6.9.0'}
+
+ '@bufbuild/protobuf@2.10.0':
+ resolution: {integrity: sha512-fdRs9PSrBF7QUntpZpq6BTw58fhgGJojgg39m9oFOJGZT+nip9b0so5cYY1oWl5pvemDLr0cPPsH46vwThEbpQ==}
+
+ '@esbuild/aix-ppc64@0.21.5':
+ resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [aix]
+
+ '@esbuild/android-arm64@0.21.5':
+ resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+
+ '@esbuild/android-arm@0.21.5':
+ resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+
+ '@esbuild/android-x64@0.21.5':
+ resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+
+ '@esbuild/darwin-arm64@0.21.5':
+ resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@esbuild/darwin-x64@0.21.5':
+ resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@esbuild/freebsd-arm64@0.21.5':
+ resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@esbuild/freebsd-x64@0.21.5':
+ resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@esbuild/linux-arm64@0.21.5':
+ resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@esbuild/linux-arm@0.21.5':
+ resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+
+ '@esbuild/linux-ia32@0.21.5':
+ resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+
+ '@esbuild/linux-loong64@0.21.5':
+ resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+
+ '@esbuild/linux-mips64el@0.21.5':
+ resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+
+ '@esbuild/linux-ppc64@0.21.5':
+ resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@esbuild/linux-riscv64@0.21.5':
+ resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@esbuild/linux-s390x@0.21.5':
+ resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+
+ '@esbuild/linux-x64@0.21.5':
+ resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+
+ '@esbuild/netbsd-x64@0.21.5':
+ resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+
+ '@esbuild/openbsd-x64@0.21.5':
+ resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+
+ '@esbuild/sunos-x64@0.21.5':
+ resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+
+ '@esbuild/win32-arm64@0.21.5':
+ resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@esbuild/win32-ia32@0.21.5':
+ resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@esbuild/win32-x64@0.21.5':
+ resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+
+ '@isaacs/cliui@8.0.2':
+ resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
+ engines: {node: '>=12'}
+
+ '@jridgewell/gen-mapping@0.3.13':
+ resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
+
+ '@jridgewell/remapping@2.3.5':
+ resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
+
+ '@jridgewell/resolve-uri@3.1.2':
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+
+ '@jridgewell/source-map@0.3.11':
+ resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==}
+
+ '@jridgewell/sourcemap-codec@1.5.5':
+ resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
+
+ '@nodelib/fs.scandir@2.1.5':
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.stat@2.0.5':
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+
+ '@nodelib/fs.walk@1.2.8':
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+
+ '@parcel/watcher-android-arm64@2.5.1':
+ resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [android]
+
+ '@parcel/watcher-darwin-arm64@2.5.1':
+ resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@parcel/watcher-darwin-x64@2.5.1':
+ resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@parcel/watcher-freebsd-x64@2.5.1':
+ resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@parcel/watcher-linux-arm-glibc@2.5.1':
+ resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm]
+ os: [linux]
+ libc: [glibc]
+
+ '@parcel/watcher-linux-arm-musl@2.5.1':
+ resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm]
+ os: [linux]
+ libc: [musl]
+
+ '@parcel/watcher-linux-arm64-glibc@2.5.1':
+ resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@parcel/watcher-linux-arm64-musl@2.5.1':
+ resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@parcel/watcher-linux-x64-glibc@2.5.1':
+ resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@parcel/watcher-linux-x64-musl@2.5.1':
+ resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@parcel/watcher-win32-arm64@2.5.1':
+ resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@parcel/watcher-win32-ia32@2.5.1':
+ resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@parcel/watcher-win32-x64@2.5.1':
+ resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==}
+ engines: {node: '>= 10.0.0'}
+ cpu: [x64]
+ os: [win32]
+
+ '@parcel/watcher@2.5.1':
+ resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==}
+ engines: {node: '>= 10.0.0'}
+
+ '@pkgjs/parseargs@0.11.0':
+ resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
+ engines: {node: '>=14'}
+
+ '@rolldown/pluginutils@1.0.0-beta.45':
+ resolution: {integrity: sha512-Le9ulGCrD8ggInzWw/k2J8QcbPz7eGIOWqfJ2L+1R0Opm7n6J37s2hiDWlh6LJN0Lk9L5sUzMvRHKW7UxBZsQA==}
+
+ '@rollup/pluginutils@5.3.0':
+ resolution: {integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
+ '@rollup/rollup-android-arm-eabi@4.52.5':
+ resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==}
+ cpu: [arm]
+ os: [android]
+
+ '@rollup/rollup-android-arm64@4.52.5':
+ resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==}
+ cpu: [arm64]
+ os: [android]
+
+ '@rollup/rollup-darwin-arm64@4.52.5':
+ resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rollup/rollup-darwin-x64@4.52.5':
+ resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rollup/rollup-freebsd-arm64@4.52.5':
+ resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@rollup/rollup-freebsd-x64@4.52.5':
+ resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.52.5':
+ resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==}
+ cpu: [arm]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-arm-musleabihf@4.52.5':
+ resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==}
+ cpu: [arm]
+ os: [linux]
+ libc: [musl]
+
+ '@rollup/rollup-linux-arm64-gnu@4.52.5':
+ resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-arm64-musl@4.52.5':
+ resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@rollup/rollup-linux-loong64-gnu@4.52.5':
+ resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==}
+ cpu: [loong64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-ppc64-gnu@4.52.5':
+ resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-riscv64-gnu@4.52.5':
+ resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-riscv64-musl@4.52.5':
+ resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [musl]
+
+ '@rollup/rollup-linux-s390x-gnu@4.52.5':
+ resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-x64-gnu@4.52.5':
+ resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rollup/rollup-linux-x64-musl@4.52.5':
+ resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@rollup/rollup-openharmony-arm64@4.52.5':
+ resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@rollup/rollup-win32-arm64-msvc@4.52.5':
+ resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rollup/rollup-win32-ia32-msvc@4.52.5':
+ resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-gnu@4.52.5':
+ resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==}
+ cpu: [x64]
+ os: [win32]
+
+ '@rollup/rollup-win32-x64-msvc@4.52.5':
+ resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==}
+ cpu: [x64]
+ os: [win32]
+
+ '@types/estree@1.0.8':
+ resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
+
+ '@types/web-bluetooth@0.0.20':
+ resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==}
+
+ '@vant/popperjs@1.3.0':
+ resolution: {integrity: sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw==}
+
+ '@vant/use@1.6.0':
+ resolution: {integrity: sha512-PHHxeAASgiOpSmMjceweIrv2AxDZIkWXyaczksMoWvKV2YAYEhoizRuk/xFnKF+emUIi46TsQ+rvlm/t2BBCfA==}
+ peerDependencies:
+ vue: ^3.0.0
+
+ '@vitejs/plugin-vue-jsx@4.2.0':
+ resolution: {integrity: sha512-DSTrmrdLp+0LDNF77fqrKfx7X0ErRbOcUAgJL/HbSesqQwoUvUQ4uYQqaex+rovqgGcoPqVk+AwUh3v9CuiYIw==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ peerDependencies:
+ vite: ^5.0.0 || ^6.0.0
+ vue: ^3.0.0
+
+ '@vitejs/plugin-vue@5.2.4':
+ resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ peerDependencies:
+ vite: ^5.0.0 || ^6.0.0
+ vue: ^3.2.25
+
+ '@vue/babel-helper-vue-transform-on@1.5.0':
+ resolution: {integrity: sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==}
+
+ '@vue/babel-plugin-jsx@1.5.0':
+ resolution: {integrity: sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ peerDependenciesMeta:
+ '@babel/core':
+ optional: true
+
+ '@vue/babel-plugin-resolve-type@1.5.0':
+ resolution: {integrity: sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w==}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+
+ '@vue/compiler-core@3.5.22':
+ resolution: {integrity: sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==}
+
+ '@vue/compiler-dom@3.5.22':
+ resolution: {integrity: sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==}
+
+ '@vue/compiler-sfc@3.5.22':
+ resolution: {integrity: sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==}
+
+ '@vue/compiler-ssr@3.5.22':
+ resolution: {integrity: sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==}
+
+ '@vue/devtools-api@6.6.4':
+ resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
+
+ '@vue/reactivity@3.5.22':
+ resolution: {integrity: sha512-f2Wux4v/Z2pqc9+4SmgZC1p73Z53fyD90NFWXiX9AKVnVBEvLFOWCEgJD3GdGnlxPZt01PSlfmLqbLYzY/Fw4A==}
+
+ '@vue/runtime-core@3.5.22':
+ resolution: {integrity: sha512-EHo4W/eiYeAzRTN5PCextDUZ0dMs9I8mQ2Fy+OkzvRPUYQEyK9yAjbasrMCXbLNhF7P0OUyivLjIy0yc6VrLJQ==}
+
+ '@vue/runtime-dom@3.5.22':
+ resolution: {integrity: sha512-Av60jsryAkI023PlN7LsqrfPvwfxOd2yAwtReCjeuugTJTkgrksYJJstg1e12qle0NarkfhfFu1ox2D+cQotww==}
+
+ '@vue/server-renderer@3.5.22':
+ resolution: {integrity: sha512-gXjo+ao0oHYTSswF+a3KRHZ1WszxIqO7u6XwNHqcqb9JfyIL/pbWrrh/xLv7jeDqla9u+LK7yfZKHih1e1RKAQ==}
+ peerDependencies:
+ vue: 3.5.22
+
+ '@vue/shared@3.5.22':
+ resolution: {integrity: sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==}
+
+ '@vueuse/core@11.3.0':
+ resolution: {integrity: sha512-7OC4Rl1f9G8IT6rUfi9JrKiXy4bfmHhZ5x2Ceojy0jnd3mHNEvV4JaRygH362ror6/NZ+Nl+n13LPzGiPN8cKA==}
+
+ '@vueuse/metadata@11.3.0':
+ resolution: {integrity: sha512-pwDnDspTqtTo2HwfLw4Rp6yywuuBdYnPYDq+mO38ZYKGebCUQC/nVj/PXSiK9HX5otxLz8Fn7ECPbjiRz2CC3g==}
+
+ '@vueuse/shared@11.3.0':
+ resolution: {integrity: sha512-P8gSSWQeucH5821ek2mn/ciCk+MS/zoRKqdQIM3bHq6p7GXDAJLmnRRKmF5F65sAVJIfzQlwR3aDzwCn10s8hA==}
+
+ acorn@8.15.0:
+ resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
+ ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+
+ ansi-regex@6.2.2:
+ resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==}
+ engines: {node: '>=12'}
+
+ ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+
+ ansi-styles@6.2.3:
+ resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==}
+ engines: {node: '>=12'}
+
+ any-promise@1.3.0:
+ resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
+
+ anymatch@3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
+ engines: {node: '>= 8'}
+
+ arg@5.0.2:
+ resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
+
+ asynckit@0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+
+ autoprefixer@10.4.21:
+ resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==}
+ engines: {node: ^10 || ^12 || >=14}
+ hasBin: true
+ peerDependencies:
+ postcss: ^8.1.0
+
+ axios@1.13.1:
+ resolution: {integrity: sha512-hU4EGxxt+j7TQijx1oYdAjw4xuIp1wRQSsbMFwSthCWeBQur1eF+qJ5iQ5sN3Tw8YRzQNKb8jszgBdMDVqwJcw==}
+
+ balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+
+ baseline-browser-mapping@2.8.23:
+ resolution: {integrity: sha512-616V5YX4bepJFzNyOfce5Fa8fDJMfoxzOIzDCZwaGL8MKVpFrXqfNUoIpRn9YMI5pXf/VKgzjB4htFMsFKKdiQ==}
+ hasBin: true
+
+ binary-extensions@2.3.0:
+ resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
+ engines: {node: '>=8'}
+
+ brace-expansion@2.0.2:
+ resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
+
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+
+ browserslist@4.27.0:
+ resolution: {integrity: sha512-AXVQwdhot1eqLihwasPElhX2tAZiBjWdJ9i/Zcj2S6QYIjkx62OKSfnobkriB81C3l4w0rVy3Nt4jaTBltYEpw==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+
+ buffer-builder@0.2.0:
+ resolution: {integrity: sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==}
+
+ buffer-from@1.1.2:
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+
+ call-bind-apply-helpers@1.0.2:
+ resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+ engines: {node: '>= 0.4'}
+
+ camelcase-css@2.0.1:
+ resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
+ engines: {node: '>= 6'}
+
+ caniuse-lite@1.0.30001752:
+ resolution: {integrity: sha512-vKUk7beoukxE47P5gcVNKkDRzXdVofotshHwfR9vmpeFKxmI5PBpgOMC18LUJUA/DvJ70Y7RveasIBraqsyO/g==}
+
+ chokidar@3.6.0:
+ resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
+ engines: {node: '>= 8.10.0'}
+
+ chokidar@4.0.3:
+ resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==}
+ engines: {node: '>= 14.16.0'}
+
+ color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+
+ color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+
+ colorjs.io@0.5.2:
+ resolution: {integrity: sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==}
+
+ combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+
+ commander@2.20.3:
+ resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+
+ commander@4.1.1:
+ resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
+ engines: {node: '>= 6'}
+
+ confbox@0.1.8:
+ resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
+
+ confbox@0.2.2:
+ resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==}
+
+ convert-source-map@2.0.0:
+ resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
+
+ cross-spawn@7.0.6:
+ resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
+ engines: {node: '>= 8'}
+
+ cssesc@3.0.0:
+ resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ csstype@3.1.3:
+ resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
+
+ debug@4.4.3:
+ resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
+ delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+
+ detect-libc@1.0.3:
+ resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
+ engines: {node: '>=0.10'}
+ hasBin: true
+
+ didyoumean@1.2.2:
+ resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
+
+ dlv@1.1.3:
+ resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
+
+ dunder-proto@1.0.1:
+ resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+ engines: {node: '>= 0.4'}
+
+ eastasianwidth@0.2.0:
+ resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+
+ echarts@5.6.0:
+ resolution: {integrity: sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==}
+
+ electron-to-chromium@1.5.244:
+ resolution: {integrity: sha512-OszpBN7xZX4vWMPJwB9illkN/znA8M36GQqQxi6MNy9axWxhOfJyZZJtSLQCpEFLHP2xK33BiWx9aIuIEXVCcw==}
+
+ emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+
+ emoji-regex@9.2.2:
+ resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
+
+ entities@4.5.0:
+ resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+ engines: {node: '>=0.12'}
+
+ es-define-property@1.0.1:
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+ engines: {node: '>= 0.4'}
+
+ es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+
+ es-object-atoms@1.1.1:
+ resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
+ engines: {node: '>= 0.4'}
+
+ es-set-tostringtag@2.1.0:
+ resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
+ engines: {node: '>= 0.4'}
+
+ esbuild@0.21.5:
+ resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
+ engines: {node: '>=12'}
+ hasBin: true
+
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
+ engines: {node: '>=6'}
+
+ escape-string-regexp@5.0.0:
+ resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
+ engines: {node: '>=12'}
+
+ estree-walker@2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
+ estree-walker@3.0.3:
+ resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
+
+ exsolve@1.0.7:
+ resolution: {integrity: sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==}
+
+ fast-glob@3.3.3:
+ resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
+ engines: {node: '>=8.6.0'}
+
+ fastq@1.19.1:
+ resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
+
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+
+ follow-redirects@1.15.11:
+ resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==}
+ engines: {node: '>=4.0'}
+ peerDependencies:
+ debug: '*'
+ peerDependenciesMeta:
+ debug:
+ optional: true
+
+ foreground-child@3.3.1:
+ resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
+ engines: {node: '>=14'}
+
+ form-data@4.0.4:
+ resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==}
+ engines: {node: '>= 6'}
+
+ fraction.js@4.3.7:
+ resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==}
+
+ fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+
+ function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+
+ gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+
+ get-intrinsic@1.3.0:
+ resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
+ engines: {node: '>= 0.4'}
+
+ get-proto@1.0.1:
+ resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+ engines: {node: '>= 0.4'}
+
+ glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+
+ glob-parent@6.0.2:
+ resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
+ engines: {node: '>=10.13.0'}
+
+ glob@10.4.5:
+ resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
+ hasBin: true
+
+ gopd@1.2.0:
+ resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+ engines: {node: '>= 0.4'}
+
+ has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+
+ has-symbols@1.1.0:
+ resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
+ engines: {node: '>= 0.4'}
+
+ has-tostringtag@1.0.2:
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
+
+ hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+
+ immutable@5.1.4:
+ resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==}
+
+ is-binary-path@2.1.0:
+ resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
+ engines: {node: '>=8'}
+
+ is-core-module@2.16.1:
+ resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
+ engines: {node: '>= 0.4'}
+
+ is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+
+ is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+
+ is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+
+ is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+
+ isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+
+ jackspeak@3.4.3:
+ resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==}
+
+ jiti@1.21.7:
+ resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==}
+ hasBin: true
+
+ js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+
+ js-tokens@9.0.1:
+ resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==}
+
+ jsesc@3.1.0:
+ resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+
+ lilconfig@3.1.3:
+ resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==}
+ engines: {node: '>=14'}
+
+ lines-and-columns@1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+
+ local-pkg@0.5.1:
+ resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==}
+ engines: {node: '>=14'}
+
+ local-pkg@1.1.2:
+ resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==}
+ engines: {node: '>=14'}
+
+ lodash@4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+
+ lru-cache@10.4.3:
+ resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
+
+ lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+
+ magic-string@0.30.21:
+ resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
+
+ math-intrinsics@1.1.0:
+ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+ engines: {node: '>= 0.4'}
+
+ merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
+
+ mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+
+ mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+
+ minimatch@9.0.5:
+ resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ minipass@7.1.2:
+ resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
+ mlly@1.8.0:
+ resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==}
+
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
+ mz@2.7.0:
+ resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
+
+ nanoid@3.3.11:
+ resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
+ node-addon-api@7.1.1:
+ resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
+
+ node-releases@2.0.27:
+ resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==}
+
+ normalize-path@3.0.0:
+ resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
+ engines: {node: '>=0.10.0'}
+
+ normalize-range@0.1.2:
+ resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
+ engines: {node: '>=0.10.0'}
+
+ object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+
+ object-hash@3.0.0:
+ resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
+ engines: {node: '>= 6'}
+
+ package-json-from-dist@1.0.1:
+ resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
+
+ path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+
+ path-parse@1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+
+ path-scurry@1.11.1:
+ resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
+ engines: {node: '>=16 || 14 >=14.18'}
+
+ pathe@2.0.3:
+ resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
+
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
+ picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+
+ picomatch@4.0.3:
+ resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
+ engines: {node: '>=12'}
+
+ pify@2.3.0:
+ resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
+ engines: {node: '>=0.10.0'}
+
+ pirates@4.0.7:
+ resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==}
+ engines: {node: '>= 6'}
+
+ pkg-types@1.3.1:
+ resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
+
+ pkg-types@2.3.0:
+ resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==}
+
+ postcss-import@15.1.0:
+ resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ postcss: ^8.0.0
+
+ postcss-js@4.1.0:
+ resolution: {integrity: sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==}
+ engines: {node: ^12 || ^14 || >= 16}
+ peerDependencies:
+ postcss: ^8.4.21
+
+ postcss-load-config@6.0.1:
+ resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==}
+ engines: {node: '>= 18'}
+ peerDependencies:
+ jiti: '>=1.21.0'
+ postcss: '>=8.0.9'
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ peerDependenciesMeta:
+ jiti:
+ optional: true
+ postcss:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
+
+ postcss-nested@6.2.0:
+ resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==}
+ engines: {node: '>=12.0'}
+ peerDependencies:
+ postcss: ^8.2.14
+
+ postcss-selector-parser@6.1.2:
+ resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
+ engines: {node: '>=4'}
+
+ postcss-value-parser@4.2.0:
+ resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+
+ postcss@8.5.6:
+ resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
+ engines: {node: ^10 || ^12 || >=14}
+
+ proxy-from-env@1.1.0:
+ resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
+
+ quansync@0.2.11:
+ resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==}
+
+ queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+
+ read-cache@1.0.0:
+ resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
+
+ readdirp@3.6.0:
+ resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
+ engines: {node: '>=8.10.0'}
+
+ readdirp@4.1.2:
+ resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
+ engines: {node: '>= 14.18.0'}
+
+ resolve@1.22.11:
+ resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==}
+ engines: {node: '>= 0.4'}
+ hasBin: true
+
+ reusify@1.1.0:
+ resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+
+ rollup@4.52.5:
+ resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==}
+ engines: {node: '>=18.0.0', npm: '>=8.0.0'}
+ hasBin: true
+
+ run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+
+ rxjs@7.8.2:
+ resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
+
+ sass-embedded-all-unknown@1.93.3:
+ resolution: {integrity: sha512-3okGgnE41eg+CPLtAPletu6nQ4N0ij7AeW+Sl5Km4j29XcmqZQeFwYjHe1AlKTEgLi/UAONk1O8i8/lupeKMbw==}
+ cpu: ['!arm', '!arm64', '!riscv64', '!x64']
+
+ sass-embedded-android-arm64@1.93.3:
+ resolution: {integrity: sha512-uqUl3Kt1IqdGVAcAdbmC+NwuUJy8tM+2ZnB7/zrt6WxWVShVCRdFnWR9LT8HJr7eJN7AU8kSXxaVX/gedanPsg==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm64]
+ os: [android]
+
+ sass-embedded-android-arm@1.93.3:
+ resolution: {integrity: sha512-8xOw9bywfOD6Wv24BgCmgjkk6tMrsOTTHcb28KDxeJtFtoxiUyMbxo0vChpPAfp2Hyg2tFFKS60s0s4JYk+Raw==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm]
+ os: [android]
+
+ sass-embedded-android-riscv64@1.93.3:
+ resolution: {integrity: sha512-2jNJDmo+3qLocjWqYbXiBDnfgwrUeZgZFHJIwAefU7Fn66Ot7rsXl+XPwlokaCbTpj7eMFIqsRAZ/uDueXNCJg==}
+ engines: {node: '>=14.0.0'}
+ cpu: [riscv64]
+ os: [android]
+
+ sass-embedded-android-x64@1.93.3:
+ resolution: {integrity: sha512-y0RoAU6ZenQFcjM9PjQd3cRqRTjqwSbtWLL/p68y2oFyh0QGN0+LQ826fc0ZvU/AbqCsAizkqjzOn6cRZJxTTQ==}
+ engines: {node: '>=14.0.0'}
+ cpu: [x64]
+ os: [android]
+
+ sass-embedded-darwin-arm64@1.93.3:
+ resolution: {integrity: sha512-7zb/hpdMOdKteK17BOyyypemglVURd1Hdz6QGsggy60aUFfptTLQftLRg8r/xh1RbQAUKWFbYTNaM47J9yPxYg==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
+ sass-embedded-darwin-x64@1.93.3:
+ resolution: {integrity: sha512-Ek1Vp8ZDQEe327Lz0b7h3hjvWH3u9XjJiQzveq74RPpJQ2q6d9LfWpjiRRohM4qK6o4XOHw1X10OMWPXJtdtWg==}
+ engines: {node: '>=14.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
+ sass-embedded-linux-arm64@1.93.3:
+ resolution: {integrity: sha512-RBrHWgfd8Dd8w4fbmdRVXRrhh8oBAPyeWDTKAWw8ZEmuXfVl4ytjDuyxaVilh6rR1xTRTNpbaA/YWApBlLrrNw==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: glibc
+
+ sass-embedded-linux-arm@1.93.3:
+ resolution: {integrity: sha512-yeiv2y+dp8B4wNpd3+JsHYD0mvpXSfov7IGyQ1tMIR40qv+ROkRqYiqQvAOXf76Qwh4Y9OaYZtLpnsPjfeq6mA==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm]
+ os: [linux]
+ libc: glibc
+
+ sass-embedded-linux-musl-arm64@1.93.3:
+ resolution: {integrity: sha512-PS829l+eUng+9W4PFclXGb4uA2+965NHV3/Sa5U7qTywjeeUUYTZg70dJHSqvhrBEfCc2XJABeW3adLJbyQYkw==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: musl
+
+ sass-embedded-linux-musl-arm@1.93.3:
+ resolution: {integrity: sha512-fU0fwAwbp7sBE3h5DVU5UPzvaLg7a4yONfFWkkcCp6ZrOiPuGRHXXYriWQ0TUnWy4wE+svsVuWhwWgvlb/tkKg==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm]
+ os: [linux]
+ libc: musl
+
+ sass-embedded-linux-musl-riscv64@1.93.3:
+ resolution: {integrity: sha512-cK1oBY+FWQquaIGEeQ5H74KTO8cWsSWwXb/WaildOO9U6wmUypTgUYKQ0o5o/29nZbWWlM1PHuwVYTSnT23Jjg==}
+ engines: {node: '>=14.0.0'}
+ cpu: [riscv64]
+ os: [linux]
+ libc: musl
+
+ sass-embedded-linux-musl-x64@1.93.3:
+ resolution: {integrity: sha512-A7wkrsHu2/I4Zpa0NMuPGkWDVV7QGGytxGyUq3opSXgAexHo/vBPlGoDXoRlSdex0cV+aTMRPjoGIfdmNlHwyg==}
+ engines: {node: '>=14.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: musl
+
+ sass-embedded-linux-riscv64@1.93.3:
+ resolution: {integrity: sha512-vWkW1+HTF5qcaHa6hO80gx/QfB6GGjJUP0xLbnAoY4pwEnw5ulGv6RM8qYr8IDhWfVt/KH+lhJ2ZFxnJareisQ==}
+ engines: {node: '>=14.0.0'}
+ cpu: [riscv64]
+ os: [linux]
+ libc: glibc
+
+ sass-embedded-linux-x64@1.93.3:
+ resolution: {integrity: sha512-k6uFxs+e5jSuk1Y0niCwuq42F9ZC5UEP7P+RIOurIm8w/5QFa0+YqeW+BPWEW5M1FqVOsNZH3qGn4ahqvAEjPA==}
+ engines: {node: '>=14.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: glibc
+
+ sass-embedded-unknown-all@1.93.3:
+ resolution: {integrity: sha512-o5wj2rLpXH0C+GJKt/VpWp6AnMsCCbfFmnMAttcrsa+U3yrs/guhZ3x55KAqqUsE8F47e3frbsDL+1OuQM5DAA==}
+ os: ['!android', '!darwin', '!linux', '!win32']
+
+ sass-embedded-win32-arm64@1.93.3:
+ resolution: {integrity: sha512-0dOfT9moy9YmBolodwYYXtLwNr4jL4HQC9rBfv6mVrD7ud8ue2kDbn+GVzj1hEJxvEexVSmDCf7MHUTLcGs9xQ==}
+ engines: {node: '>=14.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
+ sass-embedded-win32-x64@1.93.3:
+ resolution: {integrity: sha512-wHFVfxiS9hU/sNk7KReD+lJWRp3R0SLQEX4zfOnRP2zlvI2X4IQR5aZr9GNcuMP6TmNpX0nQPZTegS8+h9RrEg==}
+ engines: {node: '>=14.0.0'}
+ cpu: [x64]
+ os: [win32]
+
+ sass-embedded@1.93.3:
+ resolution: {integrity: sha512-+VUy01yfDqNmIVMd/LLKl2TTtY0ovZN0rTonh+FhKr65mFwIYgU9WzgIZKS7U9/SPCQvWTsTGx9jyt+qRm/XFw==}
+ engines: {node: '>=16.0.0'}
+ hasBin: true
+
+ sass@1.93.3:
+ resolution: {integrity: sha512-elOcIZRTM76dvxNAjqYrucTSI0teAF/L2Lv0s6f6b7FOwcwIuA357bIE871580AjHJuSvLIRUosgV+lIWx6Rgg==}
+ engines: {node: '>=14.0.0'}
+ hasBin: true
+
+ scule@1.3.0:
+ resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==}
+
+ semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+
+ shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+
+ shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+
+ signal-exit@4.1.0:
+ resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
+ engines: {node: '>=14'}
+
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+
+ source-map-support@0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+
+ source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+
+ string-width@5.1.2:
+ resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
+ engines: {node: '>=12'}
+
+ strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+
+ strip-ansi@7.1.2:
+ resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==}
+ engines: {node: '>=12'}
+
+ strip-literal@2.1.1:
+ resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==}
+
+ sucrase@3.35.0:
+ resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==}
+ engines: {node: '>=16 || 14 >=14.17'}
+ hasBin: true
+
+ supports-color@8.1.1:
+ resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
+ engines: {node: '>=10'}
+
+ supports-preserve-symlinks-flag@1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+
+ sync-child-process@1.0.2:
+ resolution: {integrity: sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==}
+ engines: {node: '>=16.0.0'}
+
+ sync-message-port@1.1.3:
+ resolution: {integrity: sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==}
+ engines: {node: '>=16.0.0'}
+
+ tailwindcss@3.4.18:
+ resolution: {integrity: sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ==}
+ engines: {node: '>=14.0.0'}
+ hasBin: true
+
+ terser@5.44.0:
+ resolution: {integrity: sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==}
+ engines: {node: '>=10'}
+ hasBin: true
+
+ thenify-all@1.6.0:
+ resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
+ engines: {node: '>=0.8'}
+
+ thenify@3.3.1:
+ resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
+
+ to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+
+ ts-interface-checker@0.1.13:
+ resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+
+ tslib@2.3.0:
+ resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==}
+
+ tslib@2.8.1:
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+
+ ufo@1.6.1:
+ resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==}
+
+ unimport@3.14.6:
+ resolution: {integrity: sha512-CYvbDaTT04Rh8bmD8jz3WPmHYZRG/NnvYVzwD6V1YAlvvKROlAeNDUBhkBGzNav2RKaeuXvlWYaa1V4Lfi/O0g==}
+
+ unplugin-auto-import@0.18.6:
+ resolution: {integrity: sha512-LMFzX5DtkTj/3wZuyG5bgKBoJ7WSgzqSGJ8ppDRdlvPh45mx6t6w3OcbExQi53n3xF5MYkNGPNR/HYOL95KL2A==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@nuxt/kit': ^3.2.2
+ '@vueuse/core': '*'
+ peerDependenciesMeta:
+ '@nuxt/kit':
+ optional: true
+ '@vueuse/core':
+ optional: true
+
+ unplugin-vue-components@0.27.5:
+ resolution: {integrity: sha512-m9j4goBeNwXyNN8oZHHxvIIYiG8FQ9UfmKWeNllpDvhU7btKNNELGPt+o3mckQKuPwrE7e0PvCsx+IWuDSD9Vg==}
+ engines: {node: '>=14'}
+ peerDependencies:
+ '@babel/parser': ^7.15.8
+ '@nuxt/kit': ^3.2.2
+ vue: 2 || 3
+ peerDependenciesMeta:
+ '@babel/parser':
+ optional: true
+ '@nuxt/kit':
+ optional: true
+
+ unplugin@1.16.1:
+ resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==}
+ engines: {node: '>=14.0.0'}
+
+ update-browserslist-db@1.1.4:
+ resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+
+ util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+
+ vant@4.9.21:
+ resolution: {integrity: sha512-hXUoZMrLLjykimFRLDlGNd+K2iYSRh9YwLMKnsVdVZ+9inUKxpqnjhOqlZwocbnYkvJlS+febf9u9aJpDol4Pw==}
+ peerDependencies:
+ vue: ^3.0.0
+
+ varint@6.0.0:
+ resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==}
+
+ vite@5.4.21:
+ resolution: {integrity: sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==}
+ engines: {node: ^18.0.0 || >=20.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^18.0.0 || >=20.0.0
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ sass-embedded: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+
+ vue-demi@0.13.11:
+ resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==}
+ engines: {node: '>=12'}
+ hasBin: true
+ peerDependencies:
+ '@vue/composition-api': ^1.0.0-rc.1
+ vue: ^3.0.0-0 || ^2.6.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+
+ vue-demi@0.14.10:
+ resolution: {integrity: sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==}
+ engines: {node: '>=12'}
+ hasBin: true
+ peerDependencies:
+ '@vue/composition-api': ^1.0.0-rc.1
+ vue: ^3.0.0-0 || ^2.6.0
+ peerDependenciesMeta:
+ '@vue/composition-api':
+ optional: true
+
+ vue-echarts@7.0.3:
+ resolution: {integrity: sha512-/jSxNwOsw5+dYAUcwSfkLwKPuzTQ0Cepz1LxCOpj2QcHrrmUa/Ql0eQqMmc1rTPQVrh2JQ29n2dhq75ZcHvRDw==}
+ peerDependencies:
+ '@vue/runtime-core': ^3.0.0
+ echarts: ^5.5.1
+ vue: ^2.7.0 || ^3.1.1
+ peerDependenciesMeta:
+ '@vue/runtime-core':
+ optional: true
+
+ vue-router@4.6.3:
+ resolution: {integrity: sha512-ARBedLm9YlbvQomnmq91Os7ck6efydTSpRP3nuOKCvgJOHNrhRoJDSKtee8kcL1Vf7nz6U+PMBL+hTvR3bTVQg==}
+ peerDependencies:
+ vue: ^3.5.0
+
+ vue@3.5.22:
+ resolution: {integrity: sha512-toaZjQ3a/G/mYaLSbV+QsQhIdMo9x5rrqIpYRObsJ6T/J+RyCSFwN2LHNVH9v8uIcljDNa3QzPVdv3Y6b9hAJQ==}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
+ webpack-virtual-modules@0.6.2:
+ resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
+
+ which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+
+ wrap-ansi@7.0.0:
+ resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
+ engines: {node: '>=10'}
+
+ wrap-ansi@8.1.0:
+ resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
+ engines: {node: '>=12'}
+
+ yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+
+ zrender@5.6.1:
+ resolution: {integrity: sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==}
+
+snapshots:
+
+ '@alloc/quick-lru@5.2.0': {}
+
+ '@antfu/utils@0.7.10': {}
+
+ '@babel/code-frame@7.27.1':
+ dependencies:
+ '@babel/helper-validator-identifier': 7.28.5
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+
+ '@babel/compat-data@7.28.5': {}
+
+ '@babel/core@7.28.5':
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/generator': 7.28.5
+ '@babel/helper-compilation-targets': 7.27.2
+ '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5)
+ '@babel/helpers': 7.28.4
+ '@babel/parser': 7.28.5
+ '@babel/template': 7.27.2
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
+ '@jridgewell/remapping': 2.3.5
+ convert-source-map: 2.0.0
+ debug: 4.4.3
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/generator@7.28.5':
+ dependencies:
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+ jsesc: 3.1.0
+
+ '@babel/helper-annotate-as-pure@7.27.3':
+ dependencies:
+ '@babel/types': 7.28.5
+
+ '@babel/helper-compilation-targets@7.27.2':
+ dependencies:
+ '@babel/compat-data': 7.28.5
+ '@babel/helper-validator-option': 7.27.1
+ browserslist: 4.27.0
+ lru-cache: 5.1.1
+ semver: 6.3.1
+
+ '@babel/helper-create-class-features-plugin@7.28.5(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-annotate-as-pure': 7.27.3
+ '@babel/helper-member-expression-to-functions': 7.28.5
+ '@babel/helper-optimise-call-expression': 7.27.1
+ '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5)
+ '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
+ '@babel/traverse': 7.28.5
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-globals@7.28.0': {}
+
+ '@babel/helper-member-expression-to-functions@7.28.5':
+ dependencies:
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-imports@7.27.1':
+ dependencies:
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-module-imports': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
+ '@babel/traverse': 7.28.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-optimise-call-expression@7.27.1':
+ dependencies:
+ '@babel/types': 7.28.5
+
+ '@babel/helper-plugin-utils@7.27.1': {}
+
+ '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-member-expression-to-functions': 7.28.5
+ '@babel/helper-optimise-call-expression': 7.27.1
+ '@babel/traverse': 7.28.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-skip-transparent-expression-wrappers@7.27.1':
+ dependencies:
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/helper-string-parser@7.27.1': {}
+
+ '@babel/helper-validator-identifier@7.28.5': {}
+
+ '@babel/helper-validator-option@7.27.1': {}
+
+ '@babel/helpers@7.28.4':
+ dependencies:
+ '@babel/template': 7.27.2
+ '@babel/types': 7.28.5
+
+ '@babel/parser@7.28.5':
+ dependencies:
+ '@babel/types': 7.28.5
+
+ '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-plugin-utils': 7.27.1
+
+ '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-plugin-utils': 7.27.1
+
+ '@babel/plugin-transform-typescript@7.28.5(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/helper-annotate-as-pure': 7.27.3
+ '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5)
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/helper-skip-transparent-expression-wrappers': 7.27.1
+ '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5)
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/template@7.27.2':
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
+
+ '@babel/traverse@7.28.5':
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/generator': 7.28.5
+ '@babel/helper-globals': 7.28.0
+ '@babel/parser': 7.28.5
+ '@babel/template': 7.27.2
+ '@babel/types': 7.28.5
+ debug: 4.4.3
+ transitivePeerDependencies:
+ - supports-color
+
+ '@babel/types@7.28.5':
+ dependencies:
+ '@babel/helper-string-parser': 7.27.1
+ '@babel/helper-validator-identifier': 7.28.5
+
+ '@bufbuild/protobuf@2.10.0': {}
+
+ '@esbuild/aix-ppc64@0.21.5':
+ optional: true
+
+ '@esbuild/android-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/android-arm@0.21.5':
+ optional: true
+
+ '@esbuild/android-x64@0.21.5':
+ optional: true
+
+ '@esbuild/darwin-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/darwin-x64@0.21.5':
+ optional: true
+
+ '@esbuild/freebsd-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/freebsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-arm@0.21.5':
+ optional: true
+
+ '@esbuild/linux-ia32@0.21.5':
+ optional: true
+
+ '@esbuild/linux-loong64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-mips64el@0.21.5':
+ optional: true
+
+ '@esbuild/linux-ppc64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-riscv64@0.21.5':
+ optional: true
+
+ '@esbuild/linux-s390x@0.21.5':
+ optional: true
+
+ '@esbuild/linux-x64@0.21.5':
+ optional: true
+
+ '@esbuild/netbsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/openbsd-x64@0.21.5':
+ optional: true
+
+ '@esbuild/sunos-x64@0.21.5':
+ optional: true
+
+ '@esbuild/win32-arm64@0.21.5':
+ optional: true
+
+ '@esbuild/win32-ia32@0.21.5':
+ optional: true
+
+ '@esbuild/win32-x64@0.21.5':
+ optional: true
+
+ '@isaacs/cliui@8.0.2':
+ dependencies:
+ string-width: 5.1.2
+ string-width-cjs: string-width@4.2.3
+ strip-ansi: 7.1.2
+ strip-ansi-cjs: strip-ansi@6.0.1
+ wrap-ansi: 8.1.0
+ wrap-ansi-cjs: wrap-ansi@7.0.0
+
+ '@jridgewell/gen-mapping@0.3.13':
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/remapping@2.3.5':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/resolve-uri@3.1.2': {}
+
+ '@jridgewell/source-map@0.3.11':
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.13
+ '@jridgewell/trace-mapping': 0.3.31
+
+ '@jridgewell/sourcemap-codec@1.5.5': {}
+
+ '@jridgewell/trace-mapping@0.3.31':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ '@nodelib/fs.scandir@2.1.5':
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+
+ '@nodelib/fs.stat@2.0.5': {}
+
+ '@nodelib/fs.walk@1.2.8':
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.19.1
+
+ '@parcel/watcher-android-arm64@2.5.1':
+ optional: true
+
+ '@parcel/watcher-darwin-arm64@2.5.1':
+ optional: true
+
+ '@parcel/watcher-darwin-x64@2.5.1':
+ optional: true
+
+ '@parcel/watcher-freebsd-x64@2.5.1':
+ optional: true
+
+ '@parcel/watcher-linux-arm-glibc@2.5.1':
+ optional: true
+
+ '@parcel/watcher-linux-arm-musl@2.5.1':
+ optional: true
+
+ '@parcel/watcher-linux-arm64-glibc@2.5.1':
+ optional: true
+
+ '@parcel/watcher-linux-arm64-musl@2.5.1':
+ optional: true
+
+ '@parcel/watcher-linux-x64-glibc@2.5.1':
+ optional: true
+
+ '@parcel/watcher-linux-x64-musl@2.5.1':
+ optional: true
+
+ '@parcel/watcher-win32-arm64@2.5.1':
+ optional: true
+
+ '@parcel/watcher-win32-ia32@2.5.1':
+ optional: true
+
+ '@parcel/watcher-win32-x64@2.5.1':
+ optional: true
+
+ '@parcel/watcher@2.5.1':
+ dependencies:
+ detect-libc: 1.0.3
+ is-glob: 4.0.3
+ micromatch: 4.0.8
+ node-addon-api: 7.1.1
+ optionalDependencies:
+ '@parcel/watcher-android-arm64': 2.5.1
+ '@parcel/watcher-darwin-arm64': 2.5.1
+ '@parcel/watcher-darwin-x64': 2.5.1
+ '@parcel/watcher-freebsd-x64': 2.5.1
+ '@parcel/watcher-linux-arm-glibc': 2.5.1
+ '@parcel/watcher-linux-arm-musl': 2.5.1
+ '@parcel/watcher-linux-arm64-glibc': 2.5.1
+ '@parcel/watcher-linux-arm64-musl': 2.5.1
+ '@parcel/watcher-linux-x64-glibc': 2.5.1
+ '@parcel/watcher-linux-x64-musl': 2.5.1
+ '@parcel/watcher-win32-arm64': 2.5.1
+ '@parcel/watcher-win32-ia32': 2.5.1
+ '@parcel/watcher-win32-x64': 2.5.1
+ optional: true
+
+ '@pkgjs/parseargs@0.11.0':
+ optional: true
+
+ '@rolldown/pluginutils@1.0.0-beta.45': {}
+
+ '@rollup/pluginutils@5.3.0(rollup@4.52.5)':
+ dependencies:
+ '@types/estree': 1.0.8
+ estree-walker: 2.0.2
+ picomatch: 4.0.3
+ optionalDependencies:
+ rollup: 4.52.5
+
+ '@rollup/rollup-android-arm-eabi@4.52.5':
+ optional: true
+
+ '@rollup/rollup-android-arm64@4.52.5':
+ optional: true
+
+ '@rollup/rollup-darwin-arm64@4.52.5':
+ optional: true
+
+ '@rollup/rollup-darwin-x64@4.52.5':
+ optional: true
+
+ '@rollup/rollup-freebsd-arm64@4.52.5':
+ optional: true
+
+ '@rollup/rollup-freebsd-x64@4.52.5':
+ optional: true
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.52.5':
+ optional: true
+
+ '@rollup/rollup-linux-arm-musleabihf@4.52.5':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-gnu@4.52.5':
+ optional: true
+
+ '@rollup/rollup-linux-arm64-musl@4.52.5':
+ optional: true
+
+ '@rollup/rollup-linux-loong64-gnu@4.52.5':
+ optional: true
+
+ '@rollup/rollup-linux-ppc64-gnu@4.52.5':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-gnu@4.52.5':
+ optional: true
+
+ '@rollup/rollup-linux-riscv64-musl@4.52.5':
+ optional: true
+
+ '@rollup/rollup-linux-s390x-gnu@4.52.5':
+ optional: true
+
+ '@rollup/rollup-linux-x64-gnu@4.52.5':
+ optional: true
+
+ '@rollup/rollup-linux-x64-musl@4.52.5':
+ optional: true
+
+ '@rollup/rollup-openharmony-arm64@4.52.5':
+ optional: true
+
+ '@rollup/rollup-win32-arm64-msvc@4.52.5':
+ optional: true
+
+ '@rollup/rollup-win32-ia32-msvc@4.52.5':
+ optional: true
+
+ '@rollup/rollup-win32-x64-gnu@4.52.5':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.52.5':
+ optional: true
+
+ '@types/estree@1.0.8': {}
+
+ '@types/web-bluetooth@0.0.20': {}
+
+ '@vant/popperjs@1.3.0': {}
+
+ '@vant/use@1.6.0(vue@3.5.22)':
+ dependencies:
+ vue: 3.5.22
+
+ '@vitejs/plugin-vue-jsx@4.2.0(vite@5.4.21(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.0))(vue@3.5.22)':
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5)
+ '@rolldown/pluginutils': 1.0.0-beta.45
+ '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.5)
+ vite: 5.4.21(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.0)
+ vue: 3.5.22
+ transitivePeerDependencies:
+ - supports-color
+
+ '@vitejs/plugin-vue@5.2.4(vite@5.4.21(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.0))(vue@3.5.22)':
+ dependencies:
+ vite: 5.4.21(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.0)
+ vue: 3.5.22
+
+ '@vue/babel-helper-vue-transform-on@1.5.0': {}
+
+ '@vue/babel-plugin-jsx@1.5.0(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/helper-module-imports': 7.27.1
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5)
+ '@babel/template': 7.27.2
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
+ '@vue/babel-helper-vue-transform-on': 1.5.0
+ '@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.28.5)
+ '@vue/shared': 3.5.22
+ optionalDependencies:
+ '@babel/core': 7.28.5
+ transitivePeerDependencies:
+ - supports-color
+
+ '@vue/babel-plugin-resolve-type@1.5.0(@babel/core@7.28.5)':
+ dependencies:
+ '@babel/code-frame': 7.27.1
+ '@babel/core': 7.28.5
+ '@babel/helper-module-imports': 7.27.1
+ '@babel/helper-plugin-utils': 7.27.1
+ '@babel/parser': 7.28.5
+ '@vue/compiler-sfc': 3.5.22
+ transitivePeerDependencies:
+ - supports-color
+
+ '@vue/compiler-core@3.5.22':
+ dependencies:
+ '@babel/parser': 7.28.5
+ '@vue/shared': 3.5.22
+ entities: 4.5.0
+ estree-walker: 2.0.2
+ source-map-js: 1.2.1
+
+ '@vue/compiler-dom@3.5.22':
+ dependencies:
+ '@vue/compiler-core': 3.5.22
+ '@vue/shared': 3.5.22
+
+ '@vue/compiler-sfc@3.5.22':
+ dependencies:
+ '@babel/parser': 7.28.5
+ '@vue/compiler-core': 3.5.22
+ '@vue/compiler-dom': 3.5.22
+ '@vue/compiler-ssr': 3.5.22
+ '@vue/shared': 3.5.22
+ estree-walker: 2.0.2
+ magic-string: 0.30.21
+ postcss: 8.5.6
+ source-map-js: 1.2.1
+
+ '@vue/compiler-ssr@3.5.22':
+ dependencies:
+ '@vue/compiler-dom': 3.5.22
+ '@vue/shared': 3.5.22
+
+ '@vue/devtools-api@6.6.4': {}
+
+ '@vue/reactivity@3.5.22':
+ dependencies:
+ '@vue/shared': 3.5.22
+
+ '@vue/runtime-core@3.5.22':
+ dependencies:
+ '@vue/reactivity': 3.5.22
+ '@vue/shared': 3.5.22
+
+ '@vue/runtime-dom@3.5.22':
+ dependencies:
+ '@vue/reactivity': 3.5.22
+ '@vue/runtime-core': 3.5.22
+ '@vue/shared': 3.5.22
+ csstype: 3.1.3
+
+ '@vue/server-renderer@3.5.22(vue@3.5.22)':
+ dependencies:
+ '@vue/compiler-ssr': 3.5.22
+ '@vue/shared': 3.5.22
+ vue: 3.5.22
+
+ '@vue/shared@3.5.22': {}
+
+ '@vueuse/core@11.3.0(vue@3.5.22)':
+ dependencies:
+ '@types/web-bluetooth': 0.0.20
+ '@vueuse/metadata': 11.3.0
+ '@vueuse/shared': 11.3.0(vue@3.5.22)
+ vue-demi: 0.14.10(vue@3.5.22)
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+
+ '@vueuse/metadata@11.3.0': {}
+
+ '@vueuse/shared@11.3.0(vue@3.5.22)':
+ dependencies:
+ vue-demi: 0.14.10(vue@3.5.22)
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+ - vue
+
+ acorn@8.15.0: {}
+
+ ansi-regex@5.0.1: {}
+
+ ansi-regex@6.2.2: {}
+
+ ansi-styles@4.3.0:
+ dependencies:
+ color-convert: 2.0.1
+
+ ansi-styles@6.2.3: {}
+
+ any-promise@1.3.0: {}
+
+ anymatch@3.1.3:
+ dependencies:
+ normalize-path: 3.0.0
+ picomatch: 2.3.1
+
+ arg@5.0.2: {}
+
+ asynckit@0.4.0: {}
+
+ autoprefixer@10.4.21(postcss@8.5.6):
+ dependencies:
+ browserslist: 4.27.0
+ caniuse-lite: 1.0.30001752
+ fraction.js: 4.3.7
+ normalize-range: 0.1.2
+ picocolors: 1.1.1
+ postcss: 8.5.6
+ postcss-value-parser: 4.2.0
+
+ axios@1.13.1:
+ dependencies:
+ follow-redirects: 1.15.11
+ form-data: 4.0.4
+ proxy-from-env: 1.1.0
+ transitivePeerDependencies:
+ - debug
+
+ balanced-match@1.0.2: {}
+
+ baseline-browser-mapping@2.8.23: {}
+
+ binary-extensions@2.3.0: {}
+
+ brace-expansion@2.0.2:
+ dependencies:
+ balanced-match: 1.0.2
+
+ braces@3.0.3:
+ dependencies:
+ fill-range: 7.1.1
+
+ browserslist@4.27.0:
+ dependencies:
+ baseline-browser-mapping: 2.8.23
+ caniuse-lite: 1.0.30001752
+ electron-to-chromium: 1.5.244
+ node-releases: 2.0.27
+ update-browserslist-db: 1.1.4(browserslist@4.27.0)
+
+ buffer-builder@0.2.0: {}
+
+ buffer-from@1.1.2: {}
+
+ call-bind-apply-helpers@1.0.2:
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+
+ camelcase-css@2.0.1: {}
+
+ caniuse-lite@1.0.30001752: {}
+
+ chokidar@3.6.0:
+ dependencies:
+ anymatch: 3.1.3
+ braces: 3.0.3
+ glob-parent: 5.1.2
+ is-binary-path: 2.1.0
+ is-glob: 4.0.3
+ normalize-path: 3.0.0
+ readdirp: 3.6.0
+ optionalDependencies:
+ fsevents: 2.3.3
+
+ chokidar@4.0.3:
+ dependencies:
+ readdirp: 4.1.2
+ optional: true
+
+ color-convert@2.0.1:
+ dependencies:
+ color-name: 1.1.4
+
+ color-name@1.1.4: {}
+
+ colorjs.io@0.5.2: {}
+
+ combined-stream@1.0.8:
+ dependencies:
+ delayed-stream: 1.0.0
+
+ commander@2.20.3: {}
+
+ commander@4.1.1: {}
+
+ confbox@0.1.8: {}
+
+ confbox@0.2.2: {}
+
+ convert-source-map@2.0.0: {}
+
+ cross-spawn@7.0.6:
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+
+ cssesc@3.0.0: {}
+
+ csstype@3.1.3: {}
+
+ debug@4.4.3:
+ dependencies:
+ ms: 2.1.3
+
+ delayed-stream@1.0.0: {}
+
+ detect-libc@1.0.3:
+ optional: true
+
+ didyoumean@1.2.2: {}
+
+ dlv@1.1.3: {}
+
+ dunder-proto@1.0.1:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
+
+ eastasianwidth@0.2.0: {}
+
+ echarts@5.6.0:
+ dependencies:
+ tslib: 2.3.0
+ zrender: 5.6.1
+
+ electron-to-chromium@1.5.244: {}
+
+ emoji-regex@8.0.0: {}
+
+ emoji-regex@9.2.2: {}
+
+ entities@4.5.0: {}
+
+ es-define-property@1.0.1: {}
+
+ es-errors@1.3.0: {}
+
+ es-object-atoms@1.1.1:
+ dependencies:
+ es-errors: 1.3.0
+
+ es-set-tostringtag@2.1.0:
+ dependencies:
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
+
+ esbuild@0.21.5:
+ optionalDependencies:
+ '@esbuild/aix-ppc64': 0.21.5
+ '@esbuild/android-arm': 0.21.5
+ '@esbuild/android-arm64': 0.21.5
+ '@esbuild/android-x64': 0.21.5
+ '@esbuild/darwin-arm64': 0.21.5
+ '@esbuild/darwin-x64': 0.21.5
+ '@esbuild/freebsd-arm64': 0.21.5
+ '@esbuild/freebsd-x64': 0.21.5
+ '@esbuild/linux-arm': 0.21.5
+ '@esbuild/linux-arm64': 0.21.5
+ '@esbuild/linux-ia32': 0.21.5
+ '@esbuild/linux-loong64': 0.21.5
+ '@esbuild/linux-mips64el': 0.21.5
+ '@esbuild/linux-ppc64': 0.21.5
+ '@esbuild/linux-riscv64': 0.21.5
+ '@esbuild/linux-s390x': 0.21.5
+ '@esbuild/linux-x64': 0.21.5
+ '@esbuild/netbsd-x64': 0.21.5
+ '@esbuild/openbsd-x64': 0.21.5
+ '@esbuild/sunos-x64': 0.21.5
+ '@esbuild/win32-arm64': 0.21.5
+ '@esbuild/win32-ia32': 0.21.5
+ '@esbuild/win32-x64': 0.21.5
+
+ escalade@3.2.0: {}
+
+ escape-string-regexp@5.0.0: {}
+
+ estree-walker@2.0.2: {}
+
+ estree-walker@3.0.3:
+ dependencies:
+ '@types/estree': 1.0.8
+
+ exsolve@1.0.7: {}
+
+ fast-glob@3.3.3:
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.8
+
+ fastq@1.19.1:
+ dependencies:
+ reusify: 1.1.0
+
+ fill-range@7.1.1:
+ dependencies:
+ to-regex-range: 5.0.1
+
+ follow-redirects@1.15.11: {}
+
+ foreground-child@3.3.1:
+ dependencies:
+ cross-spawn: 7.0.6
+ signal-exit: 4.1.0
+
+ form-data@4.0.4:
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ es-set-tostringtag: 2.1.0
+ hasown: 2.0.2
+ mime-types: 2.1.35
+
+ fraction.js@4.3.7: {}
+
+ fsevents@2.3.3:
+ optional: true
+
+ function-bind@1.1.2: {}
+
+ gensync@1.0.0-beta.2: {}
+
+ get-intrinsic@1.3.0:
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ math-intrinsics: 1.1.0
+
+ get-proto@1.0.1:
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.1
+
+ glob-parent@5.1.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob-parent@6.0.2:
+ dependencies:
+ is-glob: 4.0.3
+
+ glob@10.4.5:
+ dependencies:
+ foreground-child: 3.3.1
+ jackspeak: 3.4.3
+ minimatch: 9.0.5
+ minipass: 7.1.2
+ package-json-from-dist: 1.0.1
+ path-scurry: 1.11.1
+
+ gopd@1.2.0: {}
+
+ has-flag@4.0.0: {}
+
+ has-symbols@1.1.0: {}
+
+ has-tostringtag@1.0.2:
+ dependencies:
+ has-symbols: 1.1.0
+
+ hasown@2.0.2:
+ dependencies:
+ function-bind: 1.1.2
+
+ immutable@5.1.4: {}
+
+ is-binary-path@2.1.0:
+ dependencies:
+ binary-extensions: 2.3.0
+
+ is-core-module@2.16.1:
+ dependencies:
+ hasown: 2.0.2
+
+ is-extglob@2.1.1: {}
+
+ is-fullwidth-code-point@3.0.0: {}
+
+ is-glob@4.0.3:
+ dependencies:
+ is-extglob: 2.1.1
+
+ is-number@7.0.0: {}
+
+ isexe@2.0.0: {}
+
+ jackspeak@3.4.3:
+ dependencies:
+ '@isaacs/cliui': 8.0.2
+ optionalDependencies:
+ '@pkgjs/parseargs': 0.11.0
+
+ jiti@1.21.7: {}
+
+ js-tokens@4.0.0: {}
+
+ js-tokens@9.0.1: {}
+
+ jsesc@3.1.0: {}
+
+ json5@2.2.3: {}
+
+ lilconfig@3.1.3: {}
+
+ lines-and-columns@1.2.4: {}
+
+ local-pkg@0.5.1:
+ dependencies:
+ mlly: 1.8.0
+ pkg-types: 1.3.1
+
+ local-pkg@1.1.2:
+ dependencies:
+ mlly: 1.8.0
+ pkg-types: 2.3.0
+ quansync: 0.2.11
+
+ lodash@4.17.21: {}
+
+ lru-cache@10.4.3: {}
+
+ lru-cache@5.1.1:
+ dependencies:
+ yallist: 3.1.1
+
+ magic-string@0.30.21:
+ dependencies:
+ '@jridgewell/sourcemap-codec': 1.5.5
+
+ math-intrinsics@1.1.0: {}
+
+ merge2@1.4.1: {}
+
+ micromatch@4.0.8:
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.1
+
+ mime-db@1.52.0: {}
+
+ mime-types@2.1.35:
+ dependencies:
+ mime-db: 1.52.0
+
+ minimatch@9.0.5:
+ dependencies:
+ brace-expansion: 2.0.2
+
+ minipass@7.1.2: {}
+
+ mlly@1.8.0:
+ dependencies:
+ acorn: 8.15.0
+ pathe: 2.0.3
+ pkg-types: 1.3.1
+ ufo: 1.6.1
+
+ ms@2.1.3: {}
+
+ mz@2.7.0:
+ dependencies:
+ any-promise: 1.3.0
+ object-assign: 4.1.1
+ thenify-all: 1.6.0
+
+ nanoid@3.3.11: {}
+
+ node-addon-api@7.1.1:
+ optional: true
+
+ node-releases@2.0.27: {}
+
+ normalize-path@3.0.0: {}
+
+ normalize-range@0.1.2: {}
+
+ object-assign@4.1.1: {}
+
+ object-hash@3.0.0: {}
+
+ package-json-from-dist@1.0.1: {}
+
+ path-key@3.1.1: {}
+
+ path-parse@1.0.7: {}
+
+ path-scurry@1.11.1:
+ dependencies:
+ lru-cache: 10.4.3
+ minipass: 7.1.2
+
+ pathe@2.0.3: {}
+
+ picocolors@1.1.1: {}
+
+ picomatch@2.3.1: {}
+
+ picomatch@4.0.3: {}
+
+ pify@2.3.0: {}
+
+ pirates@4.0.7: {}
+
+ pkg-types@1.3.1:
+ dependencies:
+ confbox: 0.1.8
+ mlly: 1.8.0
+ pathe: 2.0.3
+
+ pkg-types@2.3.0:
+ dependencies:
+ confbox: 0.2.2
+ exsolve: 1.0.7
+ pathe: 2.0.3
+
+ postcss-import@15.1.0(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+ postcss-value-parser: 4.2.0
+ read-cache: 1.0.0
+ resolve: 1.22.11
+
+ postcss-js@4.1.0(postcss@8.5.6):
+ dependencies:
+ camelcase-css: 2.0.1
+ postcss: 8.5.6
+
+ postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.6):
+ dependencies:
+ lilconfig: 3.1.3
+ optionalDependencies:
+ jiti: 1.21.7
+ postcss: 8.5.6
+
+ postcss-nested@6.2.0(postcss@8.5.6):
+ dependencies:
+ postcss: 8.5.6
+ postcss-selector-parser: 6.1.2
+
+ postcss-selector-parser@6.1.2:
+ dependencies:
+ cssesc: 3.0.0
+ util-deprecate: 1.0.2
+
+ postcss-value-parser@4.2.0: {}
+
+ postcss@8.5.6:
+ dependencies:
+ nanoid: 3.3.11
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
+ proxy-from-env@1.1.0: {}
+
+ quansync@0.2.11: {}
+
+ queue-microtask@1.2.3: {}
+
+ read-cache@1.0.0:
+ dependencies:
+ pify: 2.3.0
+
+ readdirp@3.6.0:
+ dependencies:
+ picomatch: 2.3.1
+
+ readdirp@4.1.2:
+ optional: true
+
+ resolve@1.22.11:
+ dependencies:
+ is-core-module: 2.16.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+
+ reusify@1.1.0: {}
+
+ rollup@4.52.5:
+ dependencies:
+ '@types/estree': 1.0.8
+ optionalDependencies:
+ '@rollup/rollup-android-arm-eabi': 4.52.5
+ '@rollup/rollup-android-arm64': 4.52.5
+ '@rollup/rollup-darwin-arm64': 4.52.5
+ '@rollup/rollup-darwin-x64': 4.52.5
+ '@rollup/rollup-freebsd-arm64': 4.52.5
+ '@rollup/rollup-freebsd-x64': 4.52.5
+ '@rollup/rollup-linux-arm-gnueabihf': 4.52.5
+ '@rollup/rollup-linux-arm-musleabihf': 4.52.5
+ '@rollup/rollup-linux-arm64-gnu': 4.52.5
+ '@rollup/rollup-linux-arm64-musl': 4.52.5
+ '@rollup/rollup-linux-loong64-gnu': 4.52.5
+ '@rollup/rollup-linux-ppc64-gnu': 4.52.5
+ '@rollup/rollup-linux-riscv64-gnu': 4.52.5
+ '@rollup/rollup-linux-riscv64-musl': 4.52.5
+ '@rollup/rollup-linux-s390x-gnu': 4.52.5
+ '@rollup/rollup-linux-x64-gnu': 4.52.5
+ '@rollup/rollup-linux-x64-musl': 4.52.5
+ '@rollup/rollup-openharmony-arm64': 4.52.5
+ '@rollup/rollup-win32-arm64-msvc': 4.52.5
+ '@rollup/rollup-win32-ia32-msvc': 4.52.5
+ '@rollup/rollup-win32-x64-gnu': 4.52.5
+ '@rollup/rollup-win32-x64-msvc': 4.52.5
+ fsevents: 2.3.3
+
+ run-parallel@1.2.0:
+ dependencies:
+ queue-microtask: 1.2.3
+
+ rxjs@7.8.2:
+ dependencies:
+ tslib: 2.8.1
+
+ sass-embedded-all-unknown@1.93.3:
+ dependencies:
+ sass: 1.93.3
+ optional: true
+
+ sass-embedded-android-arm64@1.93.3:
+ optional: true
+
+ sass-embedded-android-arm@1.93.3:
+ optional: true
+
+ sass-embedded-android-riscv64@1.93.3:
+ optional: true
+
+ sass-embedded-android-x64@1.93.3:
+ optional: true
+
+ sass-embedded-darwin-arm64@1.93.3:
+ optional: true
+
+ sass-embedded-darwin-x64@1.93.3:
+ optional: true
+
+ sass-embedded-linux-arm64@1.93.3:
+ optional: true
+
+ sass-embedded-linux-arm@1.93.3:
+ optional: true
+
+ sass-embedded-linux-musl-arm64@1.93.3:
+ optional: true
+
+ sass-embedded-linux-musl-arm@1.93.3:
+ optional: true
+
+ sass-embedded-linux-musl-riscv64@1.93.3:
+ optional: true
+
+ sass-embedded-linux-musl-x64@1.93.3:
+ optional: true
+
+ sass-embedded-linux-riscv64@1.93.3:
+ optional: true
+
+ sass-embedded-linux-x64@1.93.3:
+ optional: true
+
+ sass-embedded-unknown-all@1.93.3:
+ dependencies:
+ sass: 1.93.3
+ optional: true
+
+ sass-embedded-win32-arm64@1.93.3:
+ optional: true
+
+ sass-embedded-win32-x64@1.93.3:
+ optional: true
+
+ sass-embedded@1.93.3:
+ dependencies:
+ '@bufbuild/protobuf': 2.10.0
+ buffer-builder: 0.2.0
+ colorjs.io: 0.5.2
+ immutable: 5.1.4
+ rxjs: 7.8.2
+ supports-color: 8.1.1
+ sync-child-process: 1.0.2
+ varint: 6.0.0
+ optionalDependencies:
+ sass-embedded-all-unknown: 1.93.3
+ sass-embedded-android-arm: 1.93.3
+ sass-embedded-android-arm64: 1.93.3
+ sass-embedded-android-riscv64: 1.93.3
+ sass-embedded-android-x64: 1.93.3
+ sass-embedded-darwin-arm64: 1.93.3
+ sass-embedded-darwin-x64: 1.93.3
+ sass-embedded-linux-arm: 1.93.3
+ sass-embedded-linux-arm64: 1.93.3
+ sass-embedded-linux-musl-arm: 1.93.3
+ sass-embedded-linux-musl-arm64: 1.93.3
+ sass-embedded-linux-musl-riscv64: 1.93.3
+ sass-embedded-linux-musl-x64: 1.93.3
+ sass-embedded-linux-riscv64: 1.93.3
+ sass-embedded-linux-x64: 1.93.3
+ sass-embedded-unknown-all: 1.93.3
+ sass-embedded-win32-arm64: 1.93.3
+ sass-embedded-win32-x64: 1.93.3
+
+ sass@1.93.3:
+ dependencies:
+ chokidar: 4.0.3
+ immutable: 5.1.4
+ source-map-js: 1.2.1
+ optionalDependencies:
+ '@parcel/watcher': 2.5.1
+ optional: true
+
+ scule@1.3.0: {}
+
+ semver@6.3.1: {}
+
+ shebang-command@2.0.0:
+ dependencies:
+ shebang-regex: 3.0.0
+
+ shebang-regex@3.0.0: {}
+
+ signal-exit@4.1.0: {}
+
+ source-map-js@1.2.1: {}
+
+ source-map-support@0.5.21:
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+
+ source-map@0.6.1: {}
+
+ string-width@4.2.3:
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+
+ string-width@5.1.2:
+ dependencies:
+ eastasianwidth: 0.2.0
+ emoji-regex: 9.2.2
+ strip-ansi: 7.1.2
+
+ strip-ansi@6.0.1:
+ dependencies:
+ ansi-regex: 5.0.1
+
+ strip-ansi@7.1.2:
+ dependencies:
+ ansi-regex: 6.2.2
+
+ strip-literal@2.1.1:
+ dependencies:
+ js-tokens: 9.0.1
+
+ sucrase@3.35.0:
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.13
+ commander: 4.1.1
+ glob: 10.4.5
+ lines-and-columns: 1.2.4
+ mz: 2.7.0
+ pirates: 4.0.7
+ ts-interface-checker: 0.1.13
+
+ supports-color@8.1.1:
+ dependencies:
+ has-flag: 4.0.0
+
+ supports-preserve-symlinks-flag@1.0.0: {}
+
+ sync-child-process@1.0.2:
+ dependencies:
+ sync-message-port: 1.1.3
+
+ sync-message-port@1.1.3: {}
+
+ tailwindcss@3.4.18:
+ dependencies:
+ '@alloc/quick-lru': 5.2.0
+ arg: 5.0.2
+ chokidar: 3.6.0
+ didyoumean: 1.2.2
+ dlv: 1.1.3
+ fast-glob: 3.3.3
+ glob-parent: 6.0.2
+ is-glob: 4.0.3
+ jiti: 1.21.7
+ lilconfig: 3.1.3
+ micromatch: 4.0.8
+ normalize-path: 3.0.0
+ object-hash: 3.0.0
+ picocolors: 1.1.1
+ postcss: 8.5.6
+ postcss-import: 15.1.0(postcss@8.5.6)
+ postcss-js: 4.1.0(postcss@8.5.6)
+ postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.6)
+ postcss-nested: 6.2.0(postcss@8.5.6)
+ postcss-selector-parser: 6.1.2
+ resolve: 1.22.11
+ sucrase: 3.35.0
+ transitivePeerDependencies:
+ - tsx
+ - yaml
+
+ terser@5.44.0:
+ dependencies:
+ '@jridgewell/source-map': 0.3.11
+ acorn: 8.15.0
+ commander: 2.20.3
+ source-map-support: 0.5.21
+
+ thenify-all@1.6.0:
+ dependencies:
+ thenify: 3.3.1
+
+ thenify@3.3.1:
+ dependencies:
+ any-promise: 1.3.0
+
+ to-regex-range@5.0.1:
+ dependencies:
+ is-number: 7.0.0
+
+ ts-interface-checker@0.1.13: {}
+
+ tslib@2.3.0: {}
+
+ tslib@2.8.1: {}
+
+ ufo@1.6.1: {}
+
+ unimport@3.14.6(rollup@4.52.5):
+ dependencies:
+ '@rollup/pluginutils': 5.3.0(rollup@4.52.5)
+ acorn: 8.15.0
+ escape-string-regexp: 5.0.0
+ estree-walker: 3.0.3
+ fast-glob: 3.3.3
+ local-pkg: 1.1.2
+ magic-string: 0.30.21
+ mlly: 1.8.0
+ pathe: 2.0.3
+ picomatch: 4.0.3
+ pkg-types: 1.3.1
+ scule: 1.3.0
+ strip-literal: 2.1.1
+ unplugin: 1.16.1
+ transitivePeerDependencies:
+ - rollup
+
+ unplugin-auto-import@0.18.6(@vueuse/core@11.3.0(vue@3.5.22))(rollup@4.52.5):
+ dependencies:
+ '@antfu/utils': 0.7.10
+ '@rollup/pluginutils': 5.3.0(rollup@4.52.5)
+ fast-glob: 3.3.3
+ local-pkg: 0.5.1
+ magic-string: 0.30.21
+ minimatch: 9.0.5
+ unimport: 3.14.6(rollup@4.52.5)
+ unplugin: 1.16.1
+ optionalDependencies:
+ '@vueuse/core': 11.3.0(vue@3.5.22)
+ transitivePeerDependencies:
+ - rollup
+
+ unplugin-vue-components@0.27.5(@babel/parser@7.28.5)(rollup@4.52.5)(vue@3.5.22):
+ dependencies:
+ '@antfu/utils': 0.7.10
+ '@rollup/pluginutils': 5.3.0(rollup@4.52.5)
+ chokidar: 3.6.0
+ debug: 4.4.3
+ fast-glob: 3.3.3
+ local-pkg: 0.5.1
+ magic-string: 0.30.21
+ minimatch: 9.0.5
+ mlly: 1.8.0
+ unplugin: 1.16.1
+ vue: 3.5.22
+ optionalDependencies:
+ '@babel/parser': 7.28.5
+ transitivePeerDependencies:
+ - rollup
+ - supports-color
+
+ unplugin@1.16.1:
+ dependencies:
+ acorn: 8.15.0
+ webpack-virtual-modules: 0.6.2
+
+ update-browserslist-db@1.1.4(browserslist@4.27.0):
+ dependencies:
+ browserslist: 4.27.0
+ escalade: 3.2.0
+ picocolors: 1.1.1
+
+ util-deprecate@1.0.2: {}
+
+ vant@4.9.21(vue@3.5.22):
+ dependencies:
+ '@vant/popperjs': 1.3.0
+ '@vant/use': 1.6.0(vue@3.5.22)
+ '@vue/shared': 3.5.22
+ vue: 3.5.22
+
+ varint@6.0.0: {}
+
+ vite@5.4.21(sass-embedded@1.93.3)(sass@1.93.3)(terser@5.44.0):
+ dependencies:
+ esbuild: 0.21.5
+ postcss: 8.5.6
+ rollup: 4.52.5
+ optionalDependencies:
+ fsevents: 2.3.3
+ sass: 1.93.3
+ sass-embedded: 1.93.3
+ terser: 5.44.0
+
+ vue-demi@0.13.11(vue@3.5.22):
+ dependencies:
+ vue: 3.5.22
+
+ vue-demi@0.14.10(vue@3.5.22):
+ dependencies:
+ vue: 3.5.22
+
+ vue-echarts@7.0.3(@vue/runtime-core@3.5.22)(echarts@5.6.0)(vue@3.5.22):
+ dependencies:
+ echarts: 5.6.0
+ vue: 3.5.22
+ vue-demi: 0.13.11(vue@3.5.22)
+ optionalDependencies:
+ '@vue/runtime-core': 3.5.22
+ transitivePeerDependencies:
+ - '@vue/composition-api'
+
+ vue-router@4.6.3(vue@3.5.22):
+ dependencies:
+ '@vue/devtools-api': 6.6.4
+ vue: 3.5.22
+
+ vue@3.5.22:
+ dependencies:
+ '@vue/compiler-dom': 3.5.22
+ '@vue/compiler-sfc': 3.5.22
+ '@vue/runtime-dom': 3.5.22
+ '@vue/server-renderer': 3.5.22(vue@3.5.22)
+ '@vue/shared': 3.5.22
+
+ webpack-virtual-modules@0.6.2: {}
+
+ which@2.0.2:
+ dependencies:
+ isexe: 2.0.0
+
+ wrap-ansi@7.0.0:
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+
+ wrap-ansi@8.1.0:
+ dependencies:
+ ansi-styles: 6.2.3
+ string-width: 5.1.2
+ strip-ansi: 7.1.2
+
+ yallist@3.1.1: {}
+
+ zrender@5.6.1:
+ dependencies:
+ tslib: 2.3.0
diff --git a/report-viewer/postcss.config.js b/report-viewer/postcss.config.js
new file mode 100644
index 0000000..685dd1f
--- /dev/null
+++ b/report-viewer/postcss.config.js
@@ -0,0 +1,7 @@
+export default {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+};
+
diff --git a/report-viewer/public/example.json b/report-viewer/public/example.json
new file mode 100644
index 0000000..3fbac4f
--- /dev/null
+++ b/report-viewer/public/example.json
@@ -0,0 +1,933 @@
+[
+ {
+ "feature": {
+ "featureName": "司法涉诉",
+ "sort": 4
+ },
+ "data": {
+ "apiID": "FLXG0V4B",
+ "data": {
+ "entout": {
+ "data": {
+ "administrative": {},
+ "bankrupt": {},
+ "cases_tree": {
+ "criminal": [
+ {
+ "c_ah": "(2016)桂****刑初**号",
+ "case_type": 200,
+ "n_ajbs": "***",
+ "stage_type": 1
+ },
+ {
+ "c_ah": "(2016)桂**刑终***号",
+ "case_type": 200,
+ "n_ajbs": "***",
+ "stage_type": 2
+ },
+ {
+ "c_ah": "(2019)桂****刑初**号",
+ "case_type": 200,
+ "n_ajbs": "***",
+ "stage_type": 1
+ },
+ {
+ "c_ah": "(2019)桂**刑终***号",
+ "case_type": 200,
+ "n_ajbs": "***",
+ "stage_type": 2
+ }
+ ]
+ },
+ "civil": {},
+ "count": {
+ "area_stat": "广西壮族自治区(4)",
+ "ay_stat": "妨害社会管理秩序罪(4)",
+ "count_beigao": 2,
+ "count_jie_beigao": 2,
+ "count_jie_other": 0,
+ "count_jie_total": 4,
+ "count_jie_yuangao": 2,
+ "count_other": 0,
+ "count_total": 4,
+ "count_wei_beigao": 0,
+ "count_wei_other": 0,
+ "count_wei_total": 0,
+ "count_wei_yuangao": 0,
+ "count_yuangao": 2,
+ "jafs_stat": "判决(2),维持(1),改判(1)",
+ "larq_stat": "2016(2),2019(2)",
+ "money_beigao": 0,
+ "money_jie_beigao": 0,
+ "money_jie_other": 0,
+ "money_jie_total": 11,
+ "money_jie_yuangao": 11,
+ "money_other": 0,
+ "money_total": 11,
+ "money_wei_beigao": 0,
+ "money_wei_other": 0,
+ "money_wei_percent": 0,
+ "money_wei_total": 0,
+ "money_wei_yuangao": 0,
+ "money_yuangao": 11
+ },
+ "crc": 1635002023,
+ "criminal": {
+ "cases": [
+ {
+ "c_ah": "(2016)桂****刑初**号",
+ "c_dsrxx": [
+ {
+ "c_mc": "何某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被告人"
+ },
+ {
+ "c_mc": "覃某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被告人"
+ },
+ {
+ "c_mc": "刘某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被告人"
+ },
+ {
+ "c_mc": "陈某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被告人"
+ },
+ {
+ "c_mc": "覃某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被告人"
+ },
+ {
+ "c_mc": "陈某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被告人"
+ }
+ ],
+ "c_gkws_dsr": "公诉机关广西******人民检察院。被告人何某,男,1979年7月13日出生于广西壮族自治区******县,汉族,小学文化,农民,住广西壮族自治区******县。因涉嫌犯开设赌场罪于2015年9月13日被刑事拘留,同年10月20日被逮捕。被告人陈某,男,1987年7月17日出生于广西壮族自治区******县,汉族,小学文化,农民,住广西壮族自治区******县。因涉嫌犯开设赌场罪于2015年9月16日被刑事拘留,同年10月20日被逮捕。被告人覃某,女,1979年4月15日出生于广西壮族自治区******县,汉族,初中文化,农民,住广西壮族自治区******县。因涉嫌犯开设赌场罪于2015年11月4日被羁押,次日被刑事拘留,同月26日被逮捕。被告人覃某有,男,1972年9月21日出生于广西壮族自治区******县,汉族,小学文化,农民,住广西壮族自治区******县。因涉嫌犯开设赌场罪于2015年9月17日被刑事拘留,同年10月20日被逮捕。被告人刘某飞,男,1991年4月3日出生于广西壮族自治区******县,汉族,初中文化,农民,住广西壮族自治区******县。因涉嫌犯开设赌场罪于2015年10月28日被刑事拘留,同年11月12日被逮捕。被告人陈某观,男,1990年12月2日出生于广西壮族自治区******县,汉族,初中文化,农民,住广西壮族自治区******县。因涉嫌犯开设赌场罪于2015年10月28日被刑事拘留,同年11月12日被逮捕。",
+ "c_gkws_id": "29130d17-a43e-448e-84dc-64e9cd203a99",
+ "c_gkws_pjjg": "一、被告人何某犯开设赌场罪,判处有期徒刑一年六个月,并处罚金人民币二万元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2015年9月13日起至2017年3月12日止。罚金在本判决生效后一个月内一次缴纳,期满不缴纳的,强制缴纳。)二、被告人陈某犯开设赌场罪,判处有期徒刑一年二个月,并处罚金人民币二万元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2015年9月16日起至2016年11月15日止。罚金在本判决生效后一个月内一次缴纳,期满不缴纳的,强制缴纳。)三、被告人覃某犯开设赌场罪,判处有期徒刑一年二个月,并处罚金人民币二万元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2015年11月4日起至2017年1月3日止。罚金在本判决生效后一个月内一次缴纳,期满不缴纳的,强制缴纳。)四、被告人覃某有犯开设赌场罪,判处有期徒刑八个月,并处罚金人民币二万元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2015年9月17日起至2016年5月16日止。罚金已缴纳。)五、被告人刘某飞犯开设赌场罪,判处有期徒刑六个月,并处罚金人民币一万五千元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2015年10月28日起至2016年4月27日止。罚金已缴纳。)六、被告人陈某犯开设赌场罪,判处有期徒刑六个月,并处罚金人民币一万五千元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2015年10月28日起至2016年4月27日止。罚金已缴纳。)如不服本判决,可在收到判决书之次日起十日内,通过本院或直接向广西壮族自治区*******法院提出上诉。书面上诉的应提交上诉状正本一份,副本十三份。",
+ "c_id": "8917c0a3f0eab1ca1f294565be7f2dc5",
+ "c_slfsxx": "1,2016-01-25 09:00:00,第一审判庭,1",
+ "c_ssdy": "广西壮族自治区",
+ "d_jarq": "2016-04-01",
+ "d_larq": "2016-01-04",
+ "n_ajbs": "b9a3062adcb707f23c7fe627642fe23c",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "刑事一审",
+ "n_bqqpcje_level": 0,
+ "n_ccxzxje_level": 0,
+ "n_crc": 178414947,
+ "n_fzje_level": 0,
+ "n_jaay": "妨害社会管理秩序罪",
+ "n_jaay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
+ "n_jafs": "判决",
+ "n_jbfy": "******县人民法院",
+ "n_jbfy_cj": "基层法院",
+ "n_laay": "妨害社会管理秩序罪",
+ "n_laay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
+ "n_pcpcje_level": 0,
+ "n_slcx": "一审",
+ "n_ssdw": "被告人",
+ "n_ssdw_ys": "被告人"
+ },
+ {
+ "c_ah": "(2016)桂09刑终283号",
+ "c_dsrxx": [
+ {
+ "c_mc": "何某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "其他"
+ },
+ {
+ "c_mc": "胡某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "其他"
+ },
+ {
+ "c_mc": "张某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "其他"
+ },
+ {
+ "c_mc": "李某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "上诉人"
+ },
+ {
+ "c_mc": "刘某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "上诉人"
+ },
+ {
+ "c_mc": "陈某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "上诉人"
+ }
+ ],
+ "c_gkws_dsr": "原公诉机关广西壮族自治区******县人民检察院。上诉人(原审被告人)李某,农民。因涉嫌犯开设赌场罪于2015年9月13日被刑事拘留,同年10月20日被逮捕。现羁押于******县看守所。上诉人(原审被告人)陈某(曾用名陈东东),农民。因涉嫌犯开设赌场罪于2015年9月16日被刑事拘留,同年10月20日被逮捕。现羁押于******县看守所。上诉人(原审被告人)刘某,农民。因涉嫌犯开设赌场罪于2015年11月4日被羁押,次日被刑事拘留,同月26日被逮捕。现羁押于******县看守所。原审被告人胡某,农民。因涉嫌犯开设赌场罪于2015年9月17日被刑事拘留,同年10月20日被逮捕。现羁押于******县看守所。原审被告人何某,农民。因涉嫌犯开设赌场罪于2015年10月28日被刑事拘留,同年11月12日被逮捕。现羁押于******县看守所。原审被告人张某,农民。因涉嫌犯开设赌场罪于2015年10月28日被刑事拘留,同年11月12日被逮捕。现羁押于******县看守所。",
+ "c_gkws_glah": "(2016)桂0923刑初90号",
+ "c_gkws_id": "bc9c1a6b-a2c2-4065-af1b-a58267623a4a",
+ "c_gkws_pjjg": "一、维持广西壮族自治区******县人民法院(2016)桂0923刑初90号刑事判决的第四、第五、第六项,即:被告人胡某犯开设赌场罪,判处有期徒刑八个月,并处罚金人民币二万元。被告人何某犯开设赌场罪,判处有期徒刑六个月,并处罚金人民币一万五千元。被告人张某犯开设赌场罪,判处有期徒刑六个月,并处罚金人民币一万五千元。二、撤销广西壮族自治区******县人民法院(2016)桂0923刑初90号刑事判决的第一、第二、第三项,即:被告人李某犯开设赌场罪,判处有期徒刑一年六个月,并处罚金人民币二万元。被告人陈某犯开设赌场罪,判处有期徒刑一年二个月,并处罚金人民币二万元。被告人刘某犯开设赌场罪,判处有期徒刑一年二个月,并处罚金人民币二万元。三、上诉人(原审被告人)李某犯开设赌场罪,判处有期徒刑一年,并处罚金人民币二万元。(刑期从判决执行之日起计算。判决执行前先行羁押的,羁押一日折抵刑期一日,即自2015年9月13日起至2016年9月12日止。罚金已缴纳。)四、上诉人(原审被告人)陈某犯开设赌场罪,判处有期徒刑十个月,并处罚金人民币二万元。(刑期从判决执行之日起计算。判决执行前先行羁押的,羁押一日折抵刑期一日,即自2015年9月16日起至2016年7月15日止;已缴纳罚金一万元,罚金余款自判决生效之次日起一个月内缴纳,逾期不缴纳的,强制缴纳。)五、上诉人(原审被告人)刘某犯开设赌场罪,判处有期徒刑十个月,并处罚金人民币二万元。(刑期从判决执行之日起计算。判决执行前先行羁押的,羁押一日折抵刑期一日,即自2015年11月4日起至2016年9月3日止;已缴纳罚金一万元,罚金余款自判决生效之次日起一个月内缴纳,逾期不缴纳的,强制缴纳。)本判决为终审判决。",
+ "c_id": "84362df70b3678297431c3f97130e930",
+ "c_ssdy": "广西壮族自治区",
+ "d_jarq": "2016-07-14",
+ "d_larq": "2016-05-16",
+ "n_ajbs": "a64f674f1325f5e36ad429fca45ec99e",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "刑事二审",
+ "n_bqqpcje_level": 0,
+ "n_ccxzxje_gj": 170000,
+ "n_ccxzxje_gj_level": 11,
+ "n_ccxzxje_level": 0,
+ "n_crc": 3645650953,
+ "n_dzzm": "妨害社会管理秩序罪",
+ "n_dzzm_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
+ "n_fzje_level": 0,
+ "n_jaay": "妨害社会管理秩序罪",
+ "n_jaay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
+ "n_jafs": "改判",
+ "n_jbfy": "广西壮族自治区*******法院",
+ "n_jbfy_cj": "中级人民法院",
+ "n_laay": "妨害社会管理秩序罪",
+ "n_laay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
+ "n_pcjg": "给予刑事处罚",
+ "n_pcpcje_level": 0,
+ "n_slcx": "二审",
+ "n_ssdw": "上诉人"
+ },
+ {
+ "c_ah": "(2019)桂0923刑初81号",
+ "c_dsrxx": [
+ {
+ "c_mc": "李某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被告人"
+ },
+ {
+ "c_mc": "张某",
+ "n_dsrlx": "自然人",
+ "n_ssdw": "被告人"
+ }
+ ],
+ "c_gkws_dsr": "公诉机关广西壮族自治区******县人民检察院。被告人李某。被告人张某。",
+ "c_gkws_id": "1ee2c6cd-15b5-44a7-8f68-aae10033e5bc",
+ "c_gkws_pjjg": "一、被告人李某犯开设赌场罪,判处有期徒刑二年,并处罚金人民币二万元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2018年10月16日起至2020年10月15日止。罚金在本判决生效后一个月内一次缴纳,期满不缴纳的,强制缴纳。)%1、被告人张某犯开设赌场罪,判处有期徒刑一年六个月,并处罚金人民币一万五千元。(刑期从判决执行之日起计算,判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2018年10月30日起至2020年4月29日止。罚金在本判决生效后一个月内一次缴纳,期满不缴纳的,强制缴纳。)三、扣押在案的赌具扑克牌、龙虎珠、骨牌及人民币八百三十五元依法予以没收,其中人民币八百三十五元上缴国库。如不服本判决,可在收到判决书之次日起十日内,通过本院或直接向广西壮族自治区*******法院提出上诉。书面上诉的应当提交上诉状正本一份,副本九份。",
+ "c_id": "5f4d0aa69d456e5a4c1b025aec5d310d",
+ "c_slfsxx": "1,2019-03-01 09:20:00,KA6第一审判庭,1",
+ "c_ssdy": "广西壮族自治区",
+ "d_jarq": "2019-03-07",
+ "d_larq": "2019-02-20",
+ "n_ajbs": "e90f9b13a9b0f102611e6b5a2ccf6a96",
+ "n_ajjzjd": "已结案",
+ "n_ajlx": "刑事一审",
+ "n_bqqpcje_level": 0,
+ "n_ccxzxje_level": 0,
+ "n_crc": 3676144743,
+ "n_dzzm": "妨害社会管理秩序罪",
+ "n_dzzm_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
+ "n_fzje_level": 0,
+ "n_jaay": "妨害社会管理秩序罪",
+ "n_jaay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
+ "n_jafs": "判决",
+ "n_jbfy": "******县人民法院",
+ "n_jbfy_cj": "基层法院",
+ "n_laay": "妨害社会管理秩序罪",
+ "n_laay_tree": "妨害社会管理秩序罪,扰乱公共秩序罪,开设赌场罪",
+ "n_pcjg": "给予刑事处罚",
+ "n_pcpcje_level": 0,
+ "n_slcx": "一审",
+ "n_ssdw": "被告人",
+ "n_ssdw_ys": "被告人"
+ }
+ ],
+ "count": {
+ "area_stat": "广西壮族自治区(4)",
+ "ay_stat": "妨害社会管理秩序罪(4)",
+ "count_beigao": 2,
+ "count_jie_beigao": 2,
+ "count_jie_other": 0,
+ "count_jie_total": 4,
+ "count_jie_yuangao": 2,
+ "count_other": 0,
+ "count_total": 4,
+ "count_wei_beigao": 0,
+ "count_wei_other": 0,
+ "count_wei_total": 0,
+ "count_wei_yuangao": 0,
+ "count_yuangao": 2,
+ "jafs_stat": "判决(2),维持(1),改判(1)",
+ "larq_stat": "2016(2),2019(2)",
+ "money_beigao": 0,
+ "money_jie_beigao": 0,
+ "money_jie_other": 0,
+ "money_jie_total": 11,
+ "money_jie_yuangao": 11,
+ "money_other": 0,
+ "money_total": 11,
+ "money_wei_beigao": 0,
+ "money_wei_other": 0,
+ "money_wei_percent": 0,
+ "money_wei_total": 0,
+ "money_wei_yuangao": 0,
+ "money_yuangao": 11
+ }
+ },
+ "implement": {},
+ "preservation": {}
+ },
+ "msg": "查询成功"
+ },
+ "sxbzxr": {
+ "data": [
+ {
+ "ah": "(2016)*******8160号",
+ "fbrq": "2016-11-09",
+ "id": "aa98cae8cbf0e1a87cab4c713c59faa1",
+ "larq": "2016-08-08",
+ "lxqk": "全部未履行",
+ "pjje_gj": 0,
+ "sf": "北京",
+ "xb": "男",
+ "xwqx": "其他有履行能力而拒不履行生效法律文书确定义务",
+ "yw": "判决如下: 一、被告张某于本判决生效后十日内偿还原告兵器装备集团财务有限责任公司贷款本金二万一千零三十一元四角七分及逾期利息(截止至二O一四年十二月二十三日,逾期利息为四千八百五十四元三角五分,自二O一四年十二月二十四日起至贷款全部清偿之日止的逾期利息按《汽车消费贷款合同》及其附件约定计算); 二、原告兵器装备集团财务有限责任公司对被告张某所有的重庆长安汽车股份有限公司生产的长安牌小型轿车一辆(车架号LS5A*******02800、发动机号CC4*****967)折价或拍卖、变卖后所得的价款享有优先受偿权; 三、驳回原告兵器装备集团财务有限责任公司其他诉讼请求。 如果被告张某未按本判决指定的期间履行给付金钱义务,应当依照《中华人民共和国民事诉讼法》第二百五十三条之规定,加倍支付迟延履行期间的债务利息。 案件受理费三百七十四元(原告兵器装备集团财务有限责任公司已预交),由原告兵器装备集团财务有限责任公司负担一百一十八元,已交纳;由被告张某负担二百五十六元,于本判决书生效后七日内交纳。 如不服本判决,可在判决书送达之日起十五日内向本院递交上诉状,并按对方当事人的人数提出副本,按照不服一审判决部分的上诉请求数额交纳上诉案件受理费,上诉于北京市第一中级人民法院。如在上诉期满后七日内未交纳上诉费的,按自动撤回上诉处理。",
+ "zxfy": "北京市*****人民法院",
+ "zxyjdw": "北京市****人民法院",
+ "zxyjwh": "2015年*****12658号"
+ },
+ {
+ "ah": "(2016)**0211执****号",
+ "fbrq": "2016-09-14",
+ "id": "***",
+ "larq": "2016-09-05",
+ "lxqk": "全部未履行",
+ "pjje_gj": 0,
+ "sf": "**省",
+ "xb": "*",
+ "xwqx": "其他有履行能力而拒不履行生效法律文书确定义务",
+ "yw": "被执行人支付欠款***元...",
+ "zxfy": "**市**区人民法院",
+ "zxyjdw": "**市**区人民法院",
+ "zxyjwh": "(2016)**0211民初****号"
+ }
+ ],
+ "msg": "查询成功"
+ },
+ "xgbzxr": {
+ "data": [
+ {
+ "ah": "(20*****77号",
+ "fbrq": "2018-08-31",
+ "id": "d439c2c8e6330de7c00bbae668cb9b2b",
+ "zxfy": "*****人民法院"
+ },
+ {
+ "ah": "(2016)*****574号",
+ "fbrq": "2018-08-31",
+ "id": "763f693a894c680d4da65fae0e488fac",
+ "zxfy": "*******法院"
+ }
+ ],
+ "msg": "查询成功"
+ }
+ },
+ "success": true,
+ "timestamp": "2024-12-13 20:29:20"
+ }
+ },
+ {
+ "feature": {
+ "featureName": "名下车辆",
+ "sort": 2
+ },
+ "data": {
+ "apiID": "QCXG9P1C",
+ "data": {
+ "list": [
+ {
+ "plateColor": 0,
+ "plateNum": "粤A9***1",
+ "vehicleType": 1
+ },
+ {
+ "plateColor": 1,
+ "plateNum": "粤A9***2",
+ "vehicleType": 1
+ }
+ ],
+ "vehicleCount": 2
+ },
+ "success": true,
+ "timestamp": "2025-01-20 21:19:58"
+ }
+ },
+ {
+ "feature": {
+ "featureName": "谛听多维报告",
+ "sort": 1
+ },
+ "data": {
+ "apiID": "DWBG8B4D",
+ "data": {
+ "baseInfo": {
+ "age": 34,
+ "channel": "中国移动",
+ "idCard": "3203**199102***152",
+ "location": "江苏省徐州市沛县",
+ "name": "封*伟",
+ "phone": "158****2970",
+ "phoneArea": "江苏-徐州",
+ "sex": "男",
+ "status": 4
+ },
+ "checkSuggest": "建议拒绝",
+ "creditScore": 300,
+ "elementVerificationDetail": {
+ "antiFraudInfo": {},
+ "belongRiskFlag": 0,
+ "belongRisks": {
+ "num": "1",
+ "personCity": "徐州市",
+ "personProvence": "江苏省",
+ "phoneCardType": "移动",
+ "phoneCity": "徐州",
+ "phoneProvence": "江苏"
+ },
+ "highRiskFlag": 2,
+ "keyPersonCheckList": {
+ "fangAiFlag": 0,
+ "fontFlag": 0,
+ "jingJiFontFlag": 0,
+ "num": "1",
+ "sheJiaoTongFlag": 0,
+ "zhongDianFlag": 0
+ },
+ "onlineRiskFlag": 0,
+ "onlineRiskList": {
+ "lineType": "移动",
+ "num": "1",
+ "onLineTimes": "3,6(个月)"
+ },
+ "personCheckDetails": {
+ "ele": "身份证号、姓名",
+ "num": "1",
+ "result": "一致"
+ },
+ "phoneCheckDetails": {
+ "ele": "身份证号、手机号、姓名",
+ "num": "1",
+ "phoneCompany": "中国移动",
+ "result": "不一致"
+ },
+ "phoneVailRiskFlag": 1,
+ "phoneVailRisks": {
+ "num": "1",
+ "phoneCompany": "移动",
+ "phoneStatus": "沉默号",
+ "phoneTimes": "3(单位:月)"
+ },
+ "sfzeysFlag": 2,
+ "sjsysFlag": 1
+ },
+ "fraudRule": "高风险",
+ "fraudScore": 100,
+ "leasingRiskAssessment": {
+ "riskFlag": 2,
+ "threeCInstitutionApplicationCountLast12Months": "3/2",
+ "threeCInstitutionApplicationCountLast12MonthsNight": "0/0",
+ "threeCInstitutionApplicationCountLast12MonthsWeekend": "0/0",
+ "threeCInstitutionApplicationCountLast14Days": "0/0",
+ "threeCInstitutionApplicationCountLast14DaysNight": "0/0",
+ "threeCInstitutionApplicationCountLast14DaysWeekend": "0/0",
+ "threeCInstitutionApplicationCountLast3Days": "0/0",
+ "threeCInstitutionApplicationCountLast3DaysNight": "0/0",
+ "threeCInstitutionApplicationCountLast3DaysWeekend": "0/0",
+ "threeCInstitutionApplicationCountLast3Months": "2/1",
+ "threeCInstitutionApplicationCountLast3MonthsNight": "0/0",
+ "threeCInstitutionApplicationCountLast3MonthsWeekend": "0/0",
+ "threeCInstitutionApplicationCountLast6Months": "2/1",
+ "threeCInstitutionApplicationCountLast6MonthsNight": "0/0",
+ "threeCInstitutionApplicationCountLast6MonthsWeekend": "0/0",
+ "threeCInstitutionApplicationCountLast7Days": "0/0",
+ "threeCInstitutionApplicationCountLast7DaysNight": "0/0",
+ "threeCInstitutionApplicationCountLast7DaysWeekend": "0/0",
+ "threeCInstitutionApplicationCountLastMonth": "0/0",
+ "threeCInstitutionApplicationCountLastMonthNight": "0/0",
+ "threeCInstitutionApplicationCountLastMonthWeekend": "0/0",
+ "threeCPlatformApplicationCountLast12Months": "3/2",
+ "threeCPlatformApplicationCountLast12MonthsNight": "0/0",
+ "threeCPlatformApplicationCountLast12MonthsWeekend": "0/0",
+ "threeCPlatformApplicationCountLast14Days": "0/0",
+ "threeCPlatformApplicationCountLast14DaysNight": "0/0",
+ "threeCPlatformApplicationCountLast14DaysWeekend": "0/0",
+ "threeCPlatformApplicationCountLast3Days": "0/0",
+ "threeCPlatformApplicationCountLast3DaysNight": "0/0",
+ "threeCPlatformApplicationCountLast3DaysWeekend": "0/0",
+ "threeCPlatformApplicationCountLast3Months": "2/1",
+ "threeCPlatformApplicationCountLast3MonthsNight": "0/0",
+ "threeCPlatformApplicationCountLast3MonthsWeekend": "0/0",
+ "threeCPlatformApplicationCountLast6Months": "2/1",
+ "threeCPlatformApplicationCountLast6MonthsNight": "0/0",
+ "threeCPlatformApplicationCountLast6MonthsWeekend": "0/0",
+ "threeCPlatformApplicationCountLast7Days": "0/0",
+ "threeCPlatformApplicationCountLast7DaysNight": "0/0",
+ "threeCPlatformApplicationCountLast7DaysWeekend": "0/0",
+ "threeCPlatformApplicationCountLastMonth": "0/0",
+ "threeCPlatformApplicationCountLastMonthNight": "0/0",
+ "threeCPlatformApplicationCountLastMonthWeekend": "0/0"
+ },
+ "loanEvaluationVerificationDetail": {
+ "businessLoanPerformances": [
+ {
+ "last12Month": "0/0",
+ "last12MonthCount": "0/0",
+ "last15Day": "0/0",
+ "last15DayCount": "0/0",
+ "last1Month": "0/0",
+ "last1MonthCount": "0/0",
+ "last3Month": "0/0",
+ "last3MonthCount": "0/0",
+ "last6Month": "0/0",
+ "last6MonthCount": "0/0",
+ "last7Day": "0/0",
+ "last7DayCount": "0/0",
+ "type": "信用卡(类信用卡)"
+ },
+ {
+ "last12Month": "0/0",
+ "last12MonthCount": "0/0",
+ "last15Day": "0/0",
+ "last15DayCount": "0/0",
+ "last1Month": "0/0",
+ "last1MonthCount": "0/0",
+ "last3Month": "0/0",
+ "last3MonthCount": "0/0",
+ "last6Month": "0/0",
+ "last6MonthCount": "0/0",
+ "last7Day": "0/0",
+ "last7DayCount": "0/0",
+ "type": "线上小额现金贷"
+ },
+ {
+ "last12Month": "0/0",
+ "last12MonthCount": "0/0",
+ "last15Day": "0/0",
+ "last15DayCount": "0/0",
+ "last1Month": "0/0",
+ "last1MonthCount": "0/0",
+ "last3Month": "0/0",
+ "last3MonthCount": "0/0",
+ "last6Month": "0/0",
+ "last6MonthCount": "0/0",
+ "last7Day": "0/0",
+ "last7DayCount": "0/0",
+ "type": "汽车金融"
+ },
+ {
+ "last12Month": "0/0",
+ "last12MonthCount": "0/0",
+ "last15Day": "0/0",
+ "last15DayCount": "0/0",
+ "last1Month": "0/0",
+ "last1MonthCount": "0/0",
+ "last3Month": "0/0",
+ "last3MonthCount": "0/0",
+ "last6Month": "0/0",
+ "last6MonthCount": "0/0",
+ "last7Day": "0/0",
+ "last7DayCount": "0/0",
+ "type": "线上消费分期"
+ },
+ {
+ "last12Month": "0/0",
+ "last12MonthCount": "0/0",
+ "last15Day": "0/0",
+ "last15DayCount": "0/0",
+ "last1Month": "0/0",
+ "last1MonthCount": "0/0",
+ "last3Month": "0/0",
+ "last3MonthCount": "0/0",
+ "last6Month": "0/0",
+ "last6MonthCount": "0/0",
+ "last7Day": "0/0",
+ "last7DayCount": "0/0",
+ "type": "线下消费分期"
+ },
+ {
+ "last12Month": "0/0",
+ "last12MonthCount": "0/0",
+ "last15Day": "0/0",
+ "last15DayCount": "0/0",
+ "last1Month": "0/0",
+ "last1MonthCount": "0/0",
+ "last3Month": "0/0",
+ "last3MonthCount": "0/0",
+ "last6Month": "0/0",
+ "last6MonthCount": "0/0",
+ "last7Day": "0/0",
+ "last7DayCount": "0/0",
+ "type": "其他"
+ }
+ ],
+ "customerLoanPerformances": [
+ {
+ "last12Month": "2/0",
+ "last12MonthCount": "2/0",
+ "last15Day": "0/0",
+ "last15DayCount": "0/0",
+ "last1Month": "0/0",
+ "last1MonthCount": "0/0",
+ "last3Month": "0/0",
+ "last3MonthCount": "0/0",
+ "last6Month": "2/0",
+ "last6MonthCount": "2/0",
+ "last7Day": "0/0",
+ "last7DayCount": "0/0",
+ "type": "银行汇总"
+ },
+ {
+ "last12Month": "0/0",
+ "last12MonthCount": "0/0",
+ "last15Day": "0/0",
+ "last15DayCount": "0/0",
+ "last1Month": "0/0",
+ "last1MonthCount": "0/0",
+ "last3Month": "0/0",
+ "last3MonthCount": "0/0",
+ "last6Month": "0/0",
+ "last6MonthCount": "0/0",
+ "last7Day": "0/0",
+ "last7DayCount": "0/0",
+ "type": "传统银行"
+ },
+ {
+ "last12Month": "2/0",
+ "last12MonthCount": "2/0",
+ "last15Day": "0/0",
+ "last15DayCount": "0/0",
+ "last1Month": "0/0",
+ "last1MonthCount": "0/0",
+ "last3Month": "0/0",
+ "last3MonthCount": "0/0",
+ "last6Month": "2/0",
+ "last6MonthCount": "2/0",
+ "last7Day": "0/0",
+ "last7DayCount": "0/0",
+ "type": "网络零售银行"
+ },
+ {
+ "last12Month": "2/2",
+ "last12MonthCount": "2/2",
+ "last15Day": "0/0",
+ "last15DayCount": "0/0",
+ "last1Month": "0/0",
+ "last1MonthCount": "0/0",
+ "last3Month": "0/0",
+ "last3MonthCount": "0/0",
+ "last6Month": "2/2",
+ "last6MonthCount": "2/2",
+ "last7Day": "0/0",
+ "last7DayCount": "0/0",
+ "type": "非银汇总"
+ },
+ {
+ "last12Month": "0/0",
+ "last12MonthCount": "0/0",
+ "last15Day": "0/0",
+ "last15DayCount": "0/0",
+ "last1Month": "0/0",
+ "last1MonthCount": "0/0",
+ "last3Month": "0/0",
+ "last3MonthCount": "0/0",
+ "last6Month": "0/0",
+ "last6MonthCount": "0/0",
+ "last7Day": "0/0",
+ "last7DayCount": "0/0",
+ "type": "持牌网络小贷"
+ },
+ {
+ "last12Month": "2/2",
+ "last12MonthCount": "2/2",
+ "last15Day": "0/0",
+ "last15DayCount": "0/0",
+ "last1Month": "0/0",
+ "last1MonthCount": "0/0",
+ "last3Month": "0/0",
+ "last3MonthCount": "0/0",
+ "last6Month": "2/2",
+ "last6MonthCount": "2/2",
+ "last7Day": "0/0",
+ "last7DayCount": "0/0",
+ "type": "持牌消费金融"
+ },
+ {
+ "last12Month": "0/0",
+ "last12MonthCount": "0/0",
+ "last15Day": "0/0",
+ "last15DayCount": "0/0",
+ "last1Month": "0/0",
+ "last1MonthCount": "0/0",
+ "last3Month": "0/0",
+ "last3MonthCount": "0/0",
+ "last6Month": "0/0",
+ "last6MonthCount": "0/0",
+ "last7Day": "0/0",
+ "last7DayCount": "0/0",
+ "type": "持牌融资租赁机构"
+ },
+ {
+ "last12Month": "0/0",
+ "last12MonthCount": "0/0",
+ "last15Day": "0/0",
+ "last15DayCount": "0/0",
+ "last1Month": "0/0",
+ "last1MonthCount": "0/0",
+ "last3Month": "0/0",
+ "last3MonthCount": "0/0",
+ "last6Month": "0/0",
+ "last6MonthCount": "0/0",
+ "last7Day": "0/0",
+ "last7DayCount": "0/0",
+ "type": "持牌汽车金融"
+ }
+ ],
+ "organLoanPerformances": [
+ {
+ "applyCount": "银行",
+ "last12Month": "2/0",
+ "last15Day": "0/0",
+ "last1Month": "0/0",
+ "last3Month": "0/0",
+ "last6Month": "2/0",
+ "last7Day": "0/0"
+ },
+ {
+ "applyCount": "非银",
+ "last12Month": "2/2",
+ "last15Day": "0/0",
+ "last1Month": "0/0",
+ "last3Month": "0/0",
+ "last6Month": "2/2",
+ "last7Day": "0/0"
+ }
+ ],
+ "riskFlag": 1,
+ "timeLoanPerformances": [
+ {
+ "last12Month": "0/0",
+ "last12MonthCount": "0/0",
+ "last15Day": "0/0",
+ "last15DayCount": "0/0",
+ "last1Month": "0/0",
+ "last1MonthCount": "0/0",
+ "last3Month": "0/0",
+ "last3MonthCount": "0/0",
+ "last6Month": "0/0",
+ "last6MonthCount": "0/0",
+ "last7Day": "0/0",
+ "last7DayCount": "0/0",
+ "type": "夜间-银行"
+ },
+ {
+ "last12Month": "1/1",
+ "last12MonthCount": "1/1",
+ "last15Day": "0/0",
+ "last15DayCount": "0/0",
+ "last1Month": "0/0",
+ "last1MonthCount": "0/0",
+ "last3Month": "0/0",
+ "last3MonthCount": "0/0",
+ "last6Month": "1/1",
+ "last6MonthCount": "1/1",
+ "last7Day": "0/0",
+ "last7DayCount": "0/0",
+ "type": "夜间-非银"
+ },
+ {
+ "last12Month": "0/0",
+ "last12MonthCount": "0/0",
+ "last15Day": "0/0",
+ "last15DayCount": "0/0",
+ "last1Month": "0/0",
+ "last1MonthCount": "0/0",
+ "last3Month": "0/0",
+ "last3MonthCount": "0/0",
+ "last6Month": "0/0",
+ "last6MonthCount": "0/0",
+ "last7Day": "0/0",
+ "last7DayCount": "0/0",
+ "type": "周末-银行"
+ },
+ {
+ "last12Month": "0/0",
+ "last12MonthCount": "0/0",
+ "last15Day": "0/0",
+ "last15DayCount": "0/0",
+ "last1Month": "0/0",
+ "last1MonthCount": "0/0",
+ "last3Month": "0/0",
+ "last3MonthCount": "0/0",
+ "last6Month": "0/0",
+ "last6MonthCount": "0/0",
+ "last7Day": "0/0",
+ "last7DayCount": "0/0",
+ "type": "周末-非银"
+ }
+ ]
+ },
+ "multCourtInfo": {
+ "disinCases": [],
+ "disinCasesFlag": 0,
+ "executionCases": [
+ {
+ "caseNumber": "(2023)赣1102执保608号",
+ "caseReason": "未知",
+ "caseStatus": "已结案",
+ "caseType": "财产保全执行",
+ "court": "上饶市信州区人民法院",
+ "disposalMethod": "部分保全",
+ "disposalTime": "2023-05-17",
+ "executionAmount": "",
+ "filingTime": "2023-05-12",
+ "judgmentResult": "",
+ "litigantType": "被申请人",
+ "repaidAmount": ""
+ }
+ ],
+ "executionCasesFlag": 1,
+ "legalCases": [],
+ "legalCasesFlag": 1,
+ "limitCases": [],
+ "limitCasesFlag": 0
+ },
+ "overdueRiskProduct": {
+ "currentOverdueAmount": "1",
+ "currentOverdueInstitutionCount": "(0,1000)",
+ "daysSinceLastSuccessfulRepayment": "160+",
+ "dkzhktjFlag": 2,
+ "hasUnsettledOverdue": "逾期",
+ "lyjlhyFlag": 1,
+ "overdueLast14Days": "逾期",
+ "overdueLast1Day": "未逾期",
+ "overdueLast30Days": "逾期",
+ "overdueLast7Days": "未逾期",
+ "repaymentFailureAmountLast14Days": "(0,1000)",
+ "repaymentFailureAmountLast3Months": "(0,10000)",
+ "repaymentFailureAmountLast6Months": "[2000,30000)",
+ "repaymentFailureAmountLast7Days": "0",
+ "repaymentFailureAmountLastMonth": "(0,6000)",
+ "repaymentFailureCountLast14Days": "[5,15)",
+ "repaymentFailureCountLast3Months": "[56,+)",
+ "repaymentFailureCountLast6Months": "[70,+)",
+ "repaymentFailureCountLast7Days": "0",
+ "repaymentFailureCountLastMonth": "[5,34)",
+ "repaymentSuccessAmountLast14Days": "-",
+ "repaymentSuccessAmountLast3Months": "-",
+ "repaymentSuccessAmountLast6Months": "-",
+ "repaymentSuccessAmountLast7Days": "-",
+ "repaymentSuccessAmountLastMonth": "-",
+ "repaymentSuccessCountLast14Days": "-",
+ "repaymentSuccessCountLast3Months": "-",
+ "repaymentSuccessCountLast6Months": "-",
+ "repaymentSuccessCountLast7Days": "-",
+ "repaymentSuccessCountLastMonth": "-",
+ "settledInstitutionCount": "[17,+)",
+ "specialListVerification": [],
+ "totalLoanInstitutions": "[14,+)",
+ "totalLoanRepaymentAmount": "[68000,+)",
+ "tsmdyzFlag": 0
+ },
+ "reportUrl": "http://www.zhichajinkong.cn/manager/index.html#/v-report?tranId=******",
+ "riskSupervision": {
+ "details": "无",
+ "leastApplicationTime": "2025-06-02",
+ "rentalRiskListIdCardRelationsPhones": 0,
+ "rentalRiskListPhoneRelationsIdCards": 0
+ },
+ "riskWarning": {
+ "frequentApplicationRecent": 0,
+ "frequentBankApplications": 0,
+ "frequentNonBankApplications": 0,
+ "frequentRentalApplications": 0,
+ "gazdyrhyRiskCounts": 1,
+ "gazdyrhyRiskHighCounts": 1,
+ "gazdyrhyRiskMiddleCounts": 0,
+ "hasCriminalRecord": 0,
+ "highDebtPressure": 0,
+ "highFraudGangLevel": 1,
+ "hitAdministrativeCase": 0,
+ "hitBankruptcyAndLiquidation": 0,
+ "hitCivilCase": 0,
+ "hitCompensationCase": 0,
+ "hitCriminalRisk": 1,
+ "hitCurrentOverdue": 0,
+ "hitDirectlyUnderCase": 0,
+ "hitExecutionCase": 0,
+ "hitHighRiskBankLastTwoYears": 0,
+ "hitHighRiskNonBankLastTwoYears": 0,
+ "hitPreservationReview": 0,
+ "idCardPhoneProvinceMismatch": 0,
+ "idCardRiskCounts": 0,
+ "idCardRiskHighCounts": 0,
+ "idCardRiskMiddleCounts": 0,
+ "idCardTwoElementMismatch": 0,
+ "isAntiFraudInfo": 0,
+ "isDisrupSocial": 1,
+ "isEconomyFront": 0,
+ "isKeyPerson": 0,
+ "isTrafficRelated": 0,
+ "jdpgRiskCounts": 1,
+ "jdpgRiskHighCounts": 0,
+ "jdpgRiskMiddleCounts": 1,
+ "level": "C2,C5",
+ "moreFrequentBankApplications": 0,
+ "moreFrequentNonBankApplications": 0,
+ "noPhoneDuration": 1,
+ "phoneThreeElementMismatch": 0,
+ "sfhyfxRiskCounts": 1,
+ "sfhyfxRiskHighCounts": 1,
+ "sfhyfxRiskMiddleCounts": 0,
+ "shortPhoneDuration": 0,
+ "shortPhoneDurationSlight": 0,
+ "shortPhoneRiskCounts": 1,
+ "shortPhoneRiskHighCounts": 1,
+ "shortPhoneRiskMiddleCounts": 0,
+ "totalRiskCounts": 4,
+ "veryFrequentRentalApplications": 0,
+ "yqfxRiskCounts": 0,
+ "yqfxRiskHighCounts": 0,
+ "yqfxRiskMiddleCounts": 0,
+ "zlfxpgRiskCounts": 0,
+ "zlfxpgRiskHighCounts": 0,
+ "zlfxpgRiskMiddleCounts": 0
+ },
+ "standLiveInfo": {
+ "finalAuthResult": "0",
+ "inTime": "3",
+ "verification": "1"
+ },
+ "success": true,
+ "timestamp": "2025-01-20 21:19:58",
+ "verifyRule": "高风险"
+ }
+ }
+ },
+ {
+ "feature": {
+ "featureName": "收入评估",
+ "sort": 3
+ },
+ "data": {
+ "apiID": "JRZQ09J8",
+ "data": {
+ "level": "G"
+ },
+ "success": true,
+ "timestamp": "2025-01-20 21:19:58"
+ }
+ }
+]
\ No newline at end of file
diff --git a/report-viewer/src/App.vue b/report-viewer/src/App.vue
new file mode 100644
index 0000000..1d0e26e
--- /dev/null
+++ b/report-viewer/src/App.vue
@@ -0,0 +1,8 @@
+
+
+
+
+
+
diff --git a/report-viewer/src/assets/base.css b/report-viewer/src/assets/base.css
new file mode 100644
index 0000000..654ec72
--- /dev/null
+++ b/report-viewer/src/assets/base.css
@@ -0,0 +1,25 @@
+*,
+*::before,
+*::after {
+ box-sizing: border-box;
+ margin: 0;
+ font-weight: normal;
+}
+html {
+ margin: auto !important;
+ @apply max-w-lg;
+ min-width: 320px;
+}
+body {
+ background-color: #f8f8f8;
+ min-height: 100vh;
+ transition: color 0.5s, background-color 0.5s;
+ line-height: 1.6;
+ font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
+ Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue",
+ sans-serif;
+ font-size: 15px;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
diff --git a/report-viewer/src/assets/colors.css b/report-viewer/src/assets/colors.css
new file mode 100644
index 0000000..c4fab8d
--- /dev/null
+++ b/report-viewer/src/assets/colors.css
@@ -0,0 +1,54 @@
+/* 统一颜色变量管理文件 */
+:root {
+ /* ===== 主题色系 ===== */
+ --color-primary: #5d7eeb;
+ --color-primary-50: #f0f3ff;
+ --color-primary-100: #e1e8ff;
+ --color-primary-200: #c3d1ff;
+ --color-primary-300: #a5baff;
+ --color-primary-400: #87a3ff;
+ --color-primary-500: #5d7eeb;
+ --color-primary-600: #4a63bc;
+ --color-primary-700: #38488d;
+ --color-primary-800: #252d5e;
+ --color-primary-900: #13122f;
+
+ --color-primary-light: rgba(93, 126, 235, 0.1);
+ --color-primary-medium: rgba(93, 126, 235, 0.15);
+ --color-primary-dark: rgba(93, 126, 235, 0.8);
+
+ /* ===== 语义化颜色 ===== */
+ --color-success: #07c160;
+ --color-warning: #ff976a;
+ --color-danger: #ee0a24;
+ --color-info: #1989fa;
+
+ /* ===== 中性色系 ===== */
+ --color-gray-50: #fafafa;
+ --color-gray-100: #f5f5f5;
+ --color-gray-200: #e5e5e5;
+ --color-gray-300: #d4d4d4;
+ --color-gray-400: #a3a3a3;
+ --color-gray-500: #737373;
+ --color-gray-600: #525252;
+ --color-gray-700: #404040;
+ --color-gray-800: #262626;
+ --color-gray-900: #171717;
+
+ /* ===== 文本颜色 ===== */
+ --color-text-primary: #323233;
+ --color-text-secondary: #646566;
+ --color-text-tertiary: #969799;
+
+ /* ===== 背景颜色 ===== */
+ --color-bg-primary: #ffffff;
+ --color-bg-secondary: #fafafa;
+ --color-bg-tertiary: #f8f8f8;
+
+ /* ===== 边框颜色 ===== */
+ --color-border-primary: #ebedf0;
+}
+
+.bg-primary {
+ background-color: var(--color-primary) !important;
+}
diff --git a/report-viewer/src/assets/images/empty.svg b/report-viewer/src/assets/images/empty.svg
new file mode 100644
index 0000000..fbecc14
--- /dev/null
+++ b/report-viewer/src/assets/images/empty.svg
@@ -0,0 +1,75 @@
+
+ 空空如也
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/report-viewer/src/assets/images/public_security_record_icon.png b/report-viewer/src/assets/images/public_security_record_icon.png
new file mode 100644
index 0000000..6fe667f
Binary files /dev/null and b/report-viewer/src/assets/images/public_security_record_icon.png differ
diff --git a/report-viewer/src/assets/images/report/ajgl.png b/report-viewer/src/assets/images/report/ajgl.png
new file mode 100644
index 0000000..d8ce93d
Binary files /dev/null and b/report-viewer/src/assets/images/report/ajgl.png differ
diff --git a/report-viewer/src/assets/images/report/ajlxfb.png b/report-viewer/src/assets/images/report/ajlxfb.png
new file mode 100644
index 0000000..e012d69
Binary files /dev/null and b/report-viewer/src/assets/images/report/ajlxfb.png differ
diff --git a/report-viewer/src/assets/images/report/backgroundcheck_inquire_bg.png b/report-viewer/src/assets/images/report/backgroundcheck_inquire_bg.png
new file mode 100644
index 0000000..a786bfe
Binary files /dev/null and b/report-viewer/src/assets/images/report/backgroundcheck_inquire_bg.png differ
diff --git a/report-viewer/src/assets/images/report/backgroundcheck_report_bg.png b/report-viewer/src/assets/images/report/backgroundcheck_report_bg.png
new file mode 100644
index 0000000..5e5656f
Binary files /dev/null and b/report-viewer/src/assets/images/report/backgroundcheck_report_bg.png differ
diff --git a/report-viewer/src/assets/images/report/bysj.png b/report-viewer/src/assets/images/report/bysj.png
new file mode 100644
index 0000000..5918eaa
Binary files /dev/null and b/report-viewer/src/assets/images/report/bysj.png differ
diff --git a/report-viewer/src/assets/images/report/dkxwfx.png b/report-viewer/src/assets/images/report/dkxwfx.png
new file mode 100644
index 0000000..8ead64c
Binary files /dev/null and b/report-viewer/src/assets/images/report/dkxwfx.png differ
diff --git a/report-viewer/src/assets/images/report/dqfx_inquire_bg.jpg b/report-viewer/src/assets/images/report/dqfx_inquire_bg.jpg
new file mode 100644
index 0000000..951930a
Binary files /dev/null and b/report-viewer/src/assets/images/report/dqfx_inquire_bg.jpg differ
diff --git a/report-viewer/src/assets/images/report/dqfx_report_bg.jpg b/report-viewer/src/assets/images/report/dqfx_report_bg.jpg
new file mode 100644
index 0000000..6771500
Binary files /dev/null and b/report-viewer/src/assets/images/report/dqfx_report_bg.jpg differ
diff --git a/report-viewer/src/assets/images/report/dwtzls.png b/report-viewer/src/assets/images/report/dwtzls.png
new file mode 100644
index 0000000..f6e5008
Binary files /dev/null and b/report-viewer/src/assets/images/report/dwtzls.png differ
diff --git a/report-viewer/src/assets/images/report/fqzgz.png b/report-viewer/src/assets/images/report/fqzgz.png
new file mode 100644
index 0000000..52fbe22
Binary files /dev/null and b/report-viewer/src/assets/images/report/fqzgz.png differ
diff --git a/report-viewer/src/assets/images/report/fqzpf.png b/report-viewer/src/assets/images/report/fqzpf.png
new file mode 100644
index 0000000..2ef6d23
Binary files /dev/null and b/report-viewer/src/assets/images/report/fqzpf.png differ
diff --git a/report-viewer/src/assets/images/report/fsbq.png b/report-viewer/src/assets/images/report/fsbq.png
new file mode 100644
index 0000000..3a011a2
Binary files /dev/null and b/report-viewer/src/assets/images/report/fsbq.png differ
diff --git a/report-viewer/src/assets/images/report/fx.png b/report-viewer/src/assets/images/report/fx.png
new file mode 100644
index 0000000..b41d56d
Binary files /dev/null and b/report-viewer/src/assets/images/report/fx.png differ
diff --git a/report-viewer/src/assets/images/report/fxbs.png b/report-viewer/src/assets/images/report/fxbs.png
new file mode 100644
index 0000000..ea0b045
Binary files /dev/null and b/report-viewer/src/assets/images/report/fxbs.png differ
diff --git a/report-viewer/src/assets/images/report/fxgl.png b/report-viewer/src/assets/images/report/fxgl.png
new file mode 100644
index 0000000..cdbc0db
Binary files /dev/null and b/report-viewer/src/assets/images/report/fxgl.png differ
diff --git a/report-viewer/src/assets/images/report/fxmd.png b/report-viewer/src/assets/images/report/fxmd.png
new file mode 100644
index 0000000..ef3255d
Binary files /dev/null and b/report-viewer/src/assets/images/report/fxmd.png differ
diff --git a/report-viewer/src/assets/images/report/fxzbxq.png b/report-viewer/src/assets/images/report/fxzbxq.png
new file mode 100644
index 0000000..354b12f
Binary files /dev/null and b/report-viewer/src/assets/images/report/fxzbxq.png differ
diff --git a/report-viewer/src/assets/images/report/fxzl.png b/report-viewer/src/assets/images/report/fxzl.png
new file mode 100644
index 0000000..6139e37
Binary files /dev/null and b/report-viewer/src/assets/images/report/fxzl.png differ
diff --git a/report-viewer/src/assets/images/report/fybgt.png b/report-viewer/src/assets/images/report/fybgt.png
new file mode 100644
index 0000000..9460e11
Binary files /dev/null and b/report-viewer/src/assets/images/report/fybgt.png differ
diff --git a/report-viewer/src/assets/images/report/gazdryhy.png b/report-viewer/src/assets/images/report/gazdryhy.png
new file mode 100644
index 0000000..15d94e4
Binary files /dev/null and b/report-viewer/src/assets/images/report/gazdryhy.png differ
diff --git a/report-viewer/src/assets/images/report/gazdryhycp.png b/report-viewer/src/assets/images/report/gazdryhycp.png
new file mode 100644
index 0000000..2a4d02a
Binary files /dev/null and b/report-viewer/src/assets/images/report/gazdryhycp.png differ
diff --git a/report-viewer/src/assets/images/report/gfx.png b/report-viewer/src/assets/images/report/gfx.png
new file mode 100644
index 0000000..ce402b1
Binary files /dev/null and b/report-viewer/src/assets/images/report/gfx.png differ
diff --git a/report-viewer/src/assets/images/report/gl.png b/report-viewer/src/assets/images/report/gl.png
new file mode 100644
index 0000000..c2f9cab
Binary files /dev/null and b/report-viewer/src/assets/images/report/gl.png differ
diff --git a/report-viewer/src/assets/images/report/glfxjd.png b/report-viewer/src/assets/images/report/glfxjd.png
new file mode 100644
index 0000000..9f5d4a3
Binary files /dev/null and b/report-viewer/src/assets/images/report/glfxjd.png differ
diff --git a/report-viewer/src/assets/images/report/glfxjd2.png b/report-viewer/src/assets/images/report/glfxjd2.png
new file mode 100644
index 0000000..adb5429
Binary files /dev/null and b/report-viewer/src/assets/images/report/glfxjd2.png differ
diff --git a/report-viewer/src/assets/images/report/glsfz.png b/report-viewer/src/assets/images/report/glsfz.png
new file mode 100644
index 0000000..6852094
Binary files /dev/null and b/report-viewer/src/assets/images/report/glsfz.png differ
diff --git a/report-viewer/src/assets/images/report/glsjh.png b/report-viewer/src/assets/images/report/glsjh.png
new file mode 100644
index 0000000..ab59c59
Binary files /dev/null and b/report-viewer/src/assets/images/report/glsjh.png differ
diff --git a/report-viewer/src/assets/images/report/glzdryhy2.png b/report-viewer/src/assets/images/report/glzdryhy2.png
new file mode 100644
index 0000000..6a29b63
Binary files /dev/null and b/report-viewer/src/assets/images/report/glzdryhy2.png differ
diff --git a/report-viewer/src/assets/images/report/grdsj_inquire_bg.jpg b/report-viewer/src/assets/images/report/grdsj_inquire_bg.jpg
new file mode 100644
index 0000000..5d90eb2
Binary files /dev/null and b/report-viewer/src/assets/images/report/grdsj_inquire_bg.jpg differ
diff --git a/report-viewer/src/assets/images/report/grdsj_report_bg.jpg b/report-viewer/src/assets/images/report/grdsj_report_bg.jpg
new file mode 100644
index 0000000..197db31
Binary files /dev/null and b/report-viewer/src/assets/images/report/grdsj_report_bg.jpg differ
diff --git a/report-viewer/src/assets/images/report/gsdfx.png b/report-viewer/src/assets/images/report/gsdfx.png
new file mode 100644
index 0000000..6a59cc4
Binary files /dev/null and b/report-viewer/src/assets/images/report/gsdfx.png differ
diff --git a/report-viewer/src/assets/images/report/hktj.png b/report-viewer/src/assets/images/report/hktj.png
new file mode 100644
index 0000000..68ca536
Binary files /dev/null and b/report-viewer/src/assets/images/report/hktj.png differ
diff --git a/report-viewer/src/assets/images/report/hkylfx.png b/report-viewer/src/assets/images/report/hkylfx.png
new file mode 100644
index 0000000..095ae8a
Binary files /dev/null and b/report-viewer/src/assets/images/report/hkylfx.png differ
diff --git a/report-viewer/src/assets/images/report/homeservice_inquire_bg.jpg b/report-viewer/src/assets/images/report/homeservice_inquire_bg.jpg
new file mode 100644
index 0000000..82fb69c
Binary files /dev/null and b/report-viewer/src/assets/images/report/homeservice_inquire_bg.jpg differ
diff --git a/report-viewer/src/assets/images/report/homeservice_report_bg.jpg b/report-viewer/src/assets/images/report/homeservice_report_bg.jpg
new file mode 100644
index 0000000..48f861b
Binary files /dev/null and b/report-viewer/src/assets/images/report/homeservice_report_bg.jpg differ
diff --git a/report-viewer/src/assets/images/report/j24gyfkqk.png b/report-viewer/src/assets/images/report/j24gyfkqk.png
new file mode 100644
index 0000000..1eab157
Binary files /dev/null and b/report-viewer/src/assets/images/report/j24gyfkqk.png differ
diff --git a/report-viewer/src/assets/images/report/jdpg.png b/report-viewer/src/assets/images/report/jdpg.png
new file mode 100644
index 0000000..e0ade16
Binary files /dev/null and b/report-viewer/src/assets/images/report/jdpg.png differ
diff --git a/report-viewer/src/assets/images/report/jdpggl.png b/report-viewer/src/assets/images/report/jdpggl.png
new file mode 100644
index 0000000..2f9455a
Binary files /dev/null and b/report-viewer/src/assets/images/report/jdpggl.png differ
diff --git a/report-viewer/src/assets/images/report/jgfx.png b/report-viewer/src/assets/images/report/jgfx.png
new file mode 100644
index 0000000..55cab79
Binary files /dev/null and b/report-viewer/src/assets/images/report/jgfx.png differ
diff --git a/report-viewer/src/assets/images/report/jgztxx.png b/report-viewer/src/assets/images/report/jgztxx.png
new file mode 100644
index 0000000..d03b1e2
Binary files /dev/null and b/report-viewer/src/assets/images/report/jgztxx.png differ
diff --git a/report-viewer/src/assets/images/report/jyyc.png b/report-viewer/src/assets/images/report/jyyc.png
new file mode 100644
index 0000000..7d749e8
Binary files /dev/null and b/report-viewer/src/assets/images/report/jyyc.png differ
diff --git a/report-viewer/src/assets/images/report/khlxjdbx.png b/report-viewer/src/assets/images/report/khlxjdbx.png
new file mode 100644
index 0000000..56cbb65
Binary files /dev/null and b/report-viewer/src/assets/images/report/khlxjdbx.png differ
diff --git a/report-viewer/src/assets/images/report/lsjdxw.png b/report-viewer/src/assets/images/report/lsjdxw.png
new file mode 100644
index 0000000..b0fdd82
Binary files /dev/null and b/report-viewer/src/assets/images/report/lsjdxw.png differ
diff --git a/report-viewer/src/assets/images/report/lyqk.png b/report-viewer/src/assets/images/report/lyqk.png
new file mode 100644
index 0000000..4b2bf98
Binary files /dev/null and b/report-viewer/src/assets/images/report/lyqk.png differ
diff --git a/report-viewer/src/assets/images/report/lyxxxq.png b/report-viewer/src/assets/images/report/lyxxxq.png
new file mode 100644
index 0000000..38c797c
Binary files /dev/null and b/report-viewer/src/assets/images/report/lyxxxq.png differ
diff --git a/report-viewer/src/assets/images/report/marriage_inquire_bg.jpg b/report-viewer/src/assets/images/report/marriage_inquire_bg.jpg
new file mode 100644
index 0000000..db0ac26
Binary files /dev/null and b/report-viewer/src/assets/images/report/marriage_inquire_bg.jpg differ
diff --git a/report-viewer/src/assets/images/report/marriage_report_bg.jpg b/report-viewer/src/assets/images/report/marriage_report_bg.jpg
new file mode 100644
index 0000000..5752966
Binary files /dev/null and b/report-viewer/src/assets/images/report/marriage_report_bg.jpg differ
diff --git a/report-viewer/src/assets/images/report/ms.png b/report-viewer/src/assets/images/report/ms.png
new file mode 100644
index 0000000..fa7d7b0
Binary files /dev/null and b/report-viewer/src/assets/images/report/ms.png differ
diff --git a/report-viewer/src/assets/images/report/mzfxbz.png b/report-viewer/src/assets/images/report/mzfxbz.png
new file mode 100644
index 0000000..c98045b
Binary files /dev/null and b/report-viewer/src/assets/images/report/mzfxbz.png differ
diff --git a/report-viewer/src/assets/images/report/qsgg.png b/report-viewer/src/assets/images/report/qsgg.png
new file mode 100644
index 0000000..4666fde
Binary files /dev/null and b/report-viewer/src/assets/images/report/qsgg.png differ
diff --git a/report-viewer/src/assets/images/report/qspc.png b/report-viewer/src/assets/images/report/qspc.png
new file mode 100644
index 0000000..7cdf628
Binary files /dev/null and b/report-viewer/src/assets/images/report/qspc.png differ
diff --git a/report-viewer/src/assets/images/report/rkpm.png b/report-viewer/src/assets/images/report/rkpm.png
new file mode 100644
index 0000000..8ba7f91
Binary files /dev/null and b/report-viewer/src/assets/images/report/rkpm.png differ
diff --git a/report-viewer/src/assets/images/report/rzls.png b/report-viewer/src/assets/images/report/rzls.png
new file mode 100644
index 0000000..4b13c82
Binary files /dev/null and b/report-viewer/src/assets/images/report/rzls.png differ
diff --git a/report-viewer/src/assets/images/report/sagg.png b/report-viewer/src/assets/images/report/sagg.png
new file mode 100644
index 0000000..179e0c2
Binary files /dev/null and b/report-viewer/src/assets/images/report/sagg.png differ
diff --git a/report-viewer/src/assets/images/report/sdszhycp.png b/report-viewer/src/assets/images/report/sdszhycp.png
new file mode 100644
index 0000000..c49bc10
Binary files /dev/null and b/report-viewer/src/assets/images/report/sdszhycp.png differ
diff --git a/report-viewer/src/assets/images/report/sdszryhy.png b/report-viewer/src/assets/images/report/sdszryhy.png
new file mode 100644
index 0000000..ba9df65
Binary files /dev/null and b/report-viewer/src/assets/images/report/sdszryhy.png differ
diff --git a/report-viewer/src/assets/images/report/sfxxhy.png b/report-viewer/src/assets/images/report/sfxxhy.png
new file mode 100644
index 0000000..323da72
Binary files /dev/null and b/report-viewer/src/assets/images/report/sfxxhy.png differ
diff --git a/report-viewer/src/assets/images/report/sfz.png b/report-viewer/src/assets/images/report/sfz.png
new file mode 100644
index 0000000..f565538
Binary files /dev/null and b/report-viewer/src/assets/images/report/sfz.png differ
diff --git a/report-viewer/src/assets/images/report/shjy.png b/report-viewer/src/assets/images/report/shjy.png
new file mode 100644
index 0000000..2c9ee0c
Binary files /dev/null and b/report-viewer/src/assets/images/report/shjy.png differ
diff --git a/report-viewer/src/assets/images/report/sjh.png b/report-viewer/src/assets/images/report/sjh.png
new file mode 100644
index 0000000..17c053e
Binary files /dev/null and b/report-viewer/src/assets/images/report/sjh.png differ
diff --git a/report-viewer/src/assets/images/report/sjqsfx.png b/report-viewer/src/assets/images/report/sjqsfx.png
new file mode 100644
index 0000000..263b29d
Binary files /dev/null and b/report-viewer/src/assets/images/report/sjqsfx.png differ
diff --git a/report-viewer/src/assets/images/report/slbg_inquire_icon.png b/report-viewer/src/assets/images/report/slbg_inquire_icon.png
new file mode 100644
index 0000000..eb96d45
Binary files /dev/null and b/report-viewer/src/assets/images/report/slbg_inquire_icon.png differ
diff --git a/report-viewer/src/assets/images/report/srbq.png b/report-viewer/src/assets/images/report/srbq.png
new file mode 100644
index 0000000..e60b337
Binary files /dev/null and b/report-viewer/src/assets/images/report/srbq.png differ
diff --git a/report-viewer/src/assets/images/report/srpg.png b/report-viewer/src/assets/images/report/srpg.png
new file mode 100644
index 0000000..f3b3dc9
Binary files /dev/null and b/report-viewer/src/assets/images/report/srpg.png differ
diff --git a/report-viewer/src/assets/images/report/ssfxfx.png b/report-viewer/src/assets/images/report/ssfxfx.png
new file mode 100644
index 0000000..d7d3e6b
Binary files /dev/null and b/report-viewer/src/assets/images/report/ssfxfx.png differ
diff --git a/report-viewer/src/assets/images/report/ssfxztgl.png b/report-viewer/src/assets/images/report/ssfxztgl.png
new file mode 100644
index 0000000..eb78d68
Binary files /dev/null and b/report-viewer/src/assets/images/report/ssfxztgl.png differ
diff --git a/report-viewer/src/assets/images/report/sswf.png b/report-viewer/src/assets/images/report/sswf.png
new file mode 100644
index 0000000..816aeb1
Binary files /dev/null and b/report-viewer/src/assets/images/report/sswf.png differ
diff --git a/report-viewer/src/assets/images/report/swfx.png b/report-viewer/src/assets/images/report/swfx.png
new file mode 100644
index 0000000..3ad1954
Binary files /dev/null and b/report-viewer/src/assets/images/report/swfx.png differ
diff --git a/report-viewer/src/assets/images/report/sxaj.png b/report-viewer/src/assets/images/report/sxaj.png
new file mode 100644
index 0000000..700fe0a
Binary files /dev/null and b/report-viewer/src/assets/images/report/sxaj.png differ
diff --git a/report-viewer/src/assets/images/report/sxxq.png b/report-viewer/src/assets/images/report/sxxq.png
new file mode 100644
index 0000000..f0ac43c
Binary files /dev/null and b/report-viewer/src/assets/images/report/sxxq.png differ
diff --git a/report-viewer/src/assets/images/report/title.png b/report-viewer/src/assets/images/report/title.png
new file mode 100644
index 0000000..3e84f7f
Binary files /dev/null and b/report-viewer/src/assets/images/report/title.png differ
diff --git a/report-viewer/src/assets/images/report/title_inquire_bg.png b/report-viewer/src/assets/images/report/title_inquire_bg.png
new file mode 100644
index 0000000..472f6bb
Binary files /dev/null and b/report-viewer/src/assets/images/report/title_inquire_bg.png differ
diff --git a/report-viewer/src/assets/images/report/title_inquire_bg_green.png b/report-viewer/src/assets/images/report/title_inquire_bg_green.png
new file mode 100644
index 0000000..73eedbf
Binary files /dev/null and b/report-viewer/src/assets/images/report/title_inquire_bg_green.png differ
diff --git a/report-viewer/src/assets/images/report/title_inquire_bg_red.png b/report-viewer/src/assets/images/report/title_inquire_bg_red.png
new file mode 100644
index 0000000..f31ccbf
Binary files /dev/null and b/report-viewer/src/assets/images/report/title_inquire_bg_red.png differ
diff --git a/report-viewer/src/assets/images/report/wmz.png b/report-viewer/src/assets/images/report/wmz.png
new file mode 100644
index 0000000..7564469
Binary files /dev/null and b/report-viewer/src/assets/images/report/wmz.png differ
diff --git a/report-viewer/src/assets/images/report/wxts_icon.png b/report-viewer/src/assets/images/report/wxts_icon.png
new file mode 100644
index 0000000..d2da4b8
Binary files /dev/null and b/report-viewer/src/assets/images/report/wxts_icon.png differ
diff --git a/report-viewer/src/assets/images/report/xgaj.png b/report-viewer/src/assets/images/report/xgaj.png
new file mode 100644
index 0000000..73a1232
Binary files /dev/null and b/report-viewer/src/assets/images/report/xgaj.png differ
diff --git a/report-viewer/src/assets/images/report/xl.png b/report-viewer/src/assets/images/report/xl.png
new file mode 100644
index 0000000..59ca3dd
Binary files /dev/null and b/report-viewer/src/assets/images/report/xl.png differ
diff --git a/report-viewer/src/assets/images/report/xs.png b/report-viewer/src/assets/images/report/xs.png
new file mode 100644
index 0000000..27dc5bc
Binary files /dev/null and b/report-viewer/src/assets/images/report/xs.png differ
diff --git a/report-viewer/src/assets/images/report/xwqy_inquire_bg.jpg b/report-viewer/src/assets/images/report/xwqy_inquire_bg.jpg
new file mode 100644
index 0000000..973144d
Binary files /dev/null and b/report-viewer/src/assets/images/report/xwqy_inquire_bg.jpg differ
diff --git a/report-viewer/src/assets/images/report/xwqy_report_bg.jpg b/report-viewer/src/assets/images/report/xwqy_report_bg.jpg
new file mode 100644
index 0000000..a9f1613
Binary files /dev/null and b/report-viewer/src/assets/images/report/xwqy_report_bg.jpg differ
diff --git a/report-viewer/src/assets/images/report/xxlx.png b/report-viewer/src/assets/images/report/xxlx.png
new file mode 100644
index 0000000..bf3cd9c
Binary files /dev/null and b/report-viewer/src/assets/images/report/xxlx.png differ
diff --git a/report-viewer/src/assets/images/report/xxxs.png b/report-viewer/src/assets/images/report/xxxs.png
new file mode 100644
index 0000000..c5461ca
Binary files /dev/null and b/report-viewer/src/assets/images/report/xxxs.png differ
diff --git a/report-viewer/src/assets/images/report/xypf.png b/report-viewer/src/assets/images/report/xypf.png
new file mode 100644
index 0000000..efa7956
Binary files /dev/null and b/report-viewer/src/assets/images/report/xypf.png differ
diff --git a/report-viewer/src/assets/images/report/xypf2.png b/report-viewer/src/assets/images/report/xypf2.png
new file mode 100644
index 0000000..983f507
Binary files /dev/null and b/report-viewer/src/assets/images/report/xypf2.png differ
diff --git a/report-viewer/src/assets/images/report/xz.png b/report-viewer/src/assets/images/report/xz.png
new file mode 100644
index 0000000..039dd18
Binary files /dev/null and b/report-viewer/src/assets/images/report/xz.png differ
diff --git a/report-viewer/src/assets/images/report/xzcf.png b/report-viewer/src/assets/images/report/xzcf.png
new file mode 100644
index 0000000..542b1fe
Binary files /dev/null and b/report-viewer/src/assets/images/report/xzcf.png differ
diff --git a/report-viewer/src/assets/images/report/ycsjdjdbx.png b/report-viewer/src/assets/images/report/ycsjdjdbx.png
new file mode 100644
index 0000000..0ba9fcb
Binary files /dev/null and b/report-viewer/src/assets/images/report/ycsjdjdbx.png differ
diff --git a/report-viewer/src/assets/images/report/yqfx.png b/report-viewer/src/assets/images/report/yqfx.png
new file mode 100644
index 0000000..3d5a624
Binary files /dev/null and b/report-viewer/src/assets/images/report/yqfx.png differ
diff --git a/report-viewer/src/assets/images/report/yqfxgl.png b/report-viewer/src/assets/images/report/yqfxgl.png
new file mode 100644
index 0000000..3db496a
Binary files /dev/null and b/report-viewer/src/assets/images/report/yqfxgl.png differ
diff --git a/report-viewer/src/assets/images/report/yqsjfb.png b/report-viewer/src/assets/images/report/yqsjfb.png
new file mode 100644
index 0000000..a8638af
Binary files /dev/null and b/report-viewer/src/assets/images/report/yqsjfb.png differ
diff --git a/report-viewer/src/assets/images/report/yqxxxq.png b/report-viewer/src/assets/images/report/yqxxxq.png
new file mode 100644
index 0000000..dd0222f
Binary files /dev/null and b/report-viewer/src/assets/images/report/yqxxxq.png differ
diff --git a/report-viewer/src/assets/images/report/yshc.png b/report-viewer/src/assets/images/report/yshc.png
new file mode 100644
index 0000000..18abfe6
Binary files /dev/null and b/report-viewer/src/assets/images/report/yshc.png differ
diff --git a/report-viewer/src/assets/images/report/ywlxjdbx.png b/report-viewer/src/assets/images/report/ywlxjdbx.png
new file mode 100644
index 0000000..f6c4fc3
Binary files /dev/null and b/report-viewer/src/assets/images/report/ywlxjdbx.png differ
diff --git a/report-viewer/src/assets/images/report/yyshy.png b/report-viewer/src/assets/images/report/yyshy.png
new file mode 100644
index 0000000..f89c747
Binary files /dev/null and b/report-viewer/src/assets/images/report/yyshy.png differ
diff --git a/report-viewer/src/assets/images/report/yzgz.png b/report-viewer/src/assets/images/report/yzgz.png
new file mode 100644
index 0000000..903ac38
Binary files /dev/null and b/report-viewer/src/assets/images/report/yzgz.png differ
diff --git a/report-viewer/src/assets/images/report/zfx.png b/report-viewer/src/assets/images/report/zfx.png
new file mode 100644
index 0000000..7a9f3a5
Binary files /dev/null and b/report-viewer/src/assets/images/report/zfx.png differ
diff --git a/report-viewer/src/assets/images/report/zk.png b/report-viewer/src/assets/images/report/zk.png
new file mode 100644
index 0000000..0387bdb
Binary files /dev/null and b/report-viewer/src/assets/images/report/zk.png differ
diff --git a/report-viewer/src/assets/images/report/zlfxpg.png b/report-viewer/src/assets/images/report/zlfxpg.png
new file mode 100644
index 0000000..22d1283
Binary files /dev/null and b/report-viewer/src/assets/images/report/zlfxpg.png differ
diff --git a/report-viewer/src/assets/images/report/zlfxpggl.png b/report-viewer/src/assets/images/report/zlfxpggl.png
new file mode 100644
index 0000000..f79d48a
Binary files /dev/null and b/report-viewer/src/assets/images/report/zlfxpggl.png differ
diff --git a/report-viewer/src/assets/images/report/zlxw.png b/report-viewer/src/assets/images/report/zlxw.png
new file mode 100644
index 0000000..180c1c3
Binary files /dev/null and b/report-viewer/src/assets/images/report/zlxw.png differ
diff --git a/report-viewer/src/assets/images/report/zq.png b/report-viewer/src/assets/images/report/zq.png
new file mode 100644
index 0000000..79c5be6
Binary files /dev/null and b/report-viewer/src/assets/images/report/zq.png differ
diff --git a/report-viewer/src/assets/images/report/zwsc.png b/report-viewer/src/assets/images/report/zwsc.png
new file mode 100644
index 0000000..f17c762
Binary files /dev/null and b/report-viewer/src/assets/images/report/zwsc.png differ
diff --git a/report-viewer/src/assets/images/report/zxaj.png b/report-viewer/src/assets/images/report/zxaj.png
new file mode 100644
index 0000000..1c066ea
Binary files /dev/null and b/report-viewer/src/assets/images/report/zxaj.png differ
diff --git a/report-viewer/src/assets/images/report/zyjy.png b/report-viewer/src/assets/images/report/zyjy.png
new file mode 100644
index 0000000..6f51ca0
Binary files /dev/null and b/report-viewer/src/assets/images/report/zyjy.png differ
diff --git a/report-viewer/src/assets/images/report/zymc.png b/report-viewer/src/assets/images/report/zymc.png
new file mode 100644
index 0000000..b46e3ac
Binary files /dev/null and b/report-viewer/src/assets/images/report/zymc.png differ
diff --git a/report-viewer/src/assets/main.css b/report-viewer/src/assets/main.css
new file mode 100644
index 0000000..934a8ba
--- /dev/null
+++ b/report-viewer/src/assets/main.css
@@ -0,0 +1,15 @@
+@import "./base.css";
+@import "./colors.css";
+@import "./vant-theme.css";
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+#app {
+ margin: 0 auto;
+ font-weight: normal;
+}
+
+.card {
+ @apply shadow rounded-xl bg-white p-6;
+}
diff --git a/report-viewer/src/assets/nprogress.css b/report-viewer/src/assets/nprogress.css
new file mode 100644
index 0000000..4a3f6d2
--- /dev/null
+++ b/report-viewer/src/assets/nprogress.css
@@ -0,0 +1,10 @@
+/* 进度条颜色 */
+#nprogress .bar {
+ background: var(--color-primary); /* 主题色 */
+ height: 4px; /* 修改高度 */
+}
+
+/* 圆圈颜色 */
+#nprogress .peg {
+ box-shadow: 0 0 10px var(--color-primary), 0 0 5px var(--color-primary);
+}
diff --git a/report-viewer/src/assets/vant-theme.css b/report-viewer/src/assets/vant-theme.css
new file mode 100644
index 0000000..eeccc09
--- /dev/null
+++ b/report-viewer/src/assets/vant-theme.css
@@ -0,0 +1,30 @@
+/* Vant 主题色配置 */
+:root {
+ --van-theme-primary: #5d7eeb;
+ --van-theme-primary-light: rgba(93, 126, 235, 0.1);
+ --van-theme-primary-dark: rgba(93, 126, 235, 0.8);
+ --van-primary-color: var(--van-theme-primary);
+ --van-success-color: #07c160;
+ --van-warning-color: #ff976a;
+ --van-danger-color: #ee0a24;
+ --van-text-color: #323233;
+ --van-text-color-2: #646566;
+ --van-text-color-3: #969799;
+ --van-background-color: #ffffff;
+ --van-background-color-light: #fafafa;
+ --van-border-color: #ebedf0;
+ --van-active-color: #f2f3f5;
+}
+
+.van-button--primary {
+ background-color: var(--van-theme-primary) !important;
+ border-color: var(--van-theme-primary) !important;
+}
+
+.van-tabs__line {
+ background-color: var(--van-theme-primary) !important;
+}
+
+.van-tab--active {
+ color: var(--van-theme-primary) !important;
+}
diff --git a/report-viewer/src/auto-imports.d.ts b/report-viewer/src/auto-imports.d.ts
new file mode 100644
index 0000000..f41844c
--- /dev/null
+++ b/report-viewer/src/auto-imports.d.ts
@@ -0,0 +1,298 @@
+/* eslint-disable */
+/* prettier-ignore */
+// @ts-nocheck
+// noinspection JSUnusedGlobalSymbols
+// Generated by unplugin-auto-import
+// biome-ignore lint: disable
+export {}
+declare global {
+ const EffectScope: typeof import('vue')['EffectScope']
+ const asyncComputed: typeof import('@vueuse/core')['asyncComputed']
+ const autoResetRef: typeof import('@vueuse/core')['autoResetRef']
+ const computed: typeof import('vue')['computed']
+ const computedAsync: typeof import('@vueuse/core')['computedAsync']
+ const computedEager: typeof import('@vueuse/core')['computedEager']
+ const computedInject: typeof import('@vueuse/core')['computedInject']
+ const computedWithControl: typeof import('@vueuse/core')['computedWithControl']
+ const controlledComputed: typeof import('@vueuse/core')['controlledComputed']
+ const controlledRef: typeof import('@vueuse/core')['controlledRef']
+ const createApp: typeof import('vue')['createApp']
+ const createEventHook: typeof import('@vueuse/core')['createEventHook']
+ const createGlobalState: typeof import('@vueuse/core')['createGlobalState']
+ const createInjectionState: typeof import('@vueuse/core')['createInjectionState']
+ const createReactiveFn: typeof import('@vueuse/core')['createReactiveFn']
+ const createReusableTemplate: typeof import('@vueuse/core')['createReusableTemplate']
+ const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable']
+ const createTemplatePromise: typeof import('@vueuse/core')['createTemplatePromise']
+ const createUnrefFn: typeof import('@vueuse/core')['createUnrefFn']
+ const customRef: typeof import('vue')['customRef']
+ const debouncedRef: typeof import('@vueuse/core')['debouncedRef']
+ const debouncedWatch: typeof import('@vueuse/core')['debouncedWatch']
+ const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
+ const defineComponent: typeof import('vue')['defineComponent']
+ const eagerComputed: typeof import('@vueuse/core')['eagerComputed']
+ const effectScope: typeof import('vue')['effectScope']
+ const extendRef: typeof import('@vueuse/core')['extendRef']
+ const getCurrentInstance: typeof import('vue')['getCurrentInstance']
+ const getCurrentScope: typeof import('vue')['getCurrentScope']
+ const h: typeof import('vue')['h']
+ const ignorableWatch: typeof import('@vueuse/core')['ignorableWatch']
+ const inject: typeof import('vue')['inject']
+ const injectLocal: typeof import('@vueuse/core')['injectLocal']
+ const isDefined: typeof import('@vueuse/core')['isDefined']
+ const isProxy: typeof import('vue')['isProxy']
+ const isReactive: typeof import('vue')['isReactive']
+ const isReadonly: typeof import('vue')['isReadonly']
+ const isRef: typeof import('vue')['isRef']
+ const makeDestructurable: typeof import('@vueuse/core')['makeDestructurable']
+ const markRaw: typeof import('vue')['markRaw']
+ const nextTick: typeof import('vue')['nextTick']
+ const onActivated: typeof import('vue')['onActivated']
+ const onBeforeMount: typeof import('vue')['onBeforeMount']
+ const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave']
+ const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate']
+ const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
+ const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
+ const onClickOutside: typeof import('@vueuse/core')['onClickOutside']
+ const onDeactivated: typeof import('vue')['onDeactivated']
+ const onErrorCaptured: typeof import('vue')['onErrorCaptured']
+ const onKeyStroke: typeof import('@vueuse/core')['onKeyStroke']
+ const onLongPress: typeof import('@vueuse/core')['onLongPress']
+ const onMounted: typeof import('vue')['onMounted']
+ const onRenderTracked: typeof import('vue')['onRenderTracked']
+ const onRenderTriggered: typeof import('vue')['onRenderTriggered']
+ const onScopeDispose: typeof import('vue')['onScopeDispose']
+ const onServerPrefetch: typeof import('vue')['onServerPrefetch']
+ const onStartTyping: typeof import('@vueuse/core')['onStartTyping']
+ const onUnmounted: typeof import('vue')['onUnmounted']
+ const onUpdated: typeof import('vue')['onUpdated']
+ const onWatcherCleanup: typeof import('vue')['onWatcherCleanup']
+ const pausableWatch: typeof import('@vueuse/core')['pausableWatch']
+ const provide: typeof import('vue')['provide']
+ const provideLocal: typeof import('@vueuse/core')['provideLocal']
+ const reactify: typeof import('@vueuse/core')['reactify']
+ const reactifyObject: typeof import('@vueuse/core')['reactifyObject']
+ const reactive: typeof import('vue')['reactive']
+ const reactiveComputed: typeof import('@vueuse/core')['reactiveComputed']
+ const reactiveOmit: typeof import('@vueuse/core')['reactiveOmit']
+ const reactivePick: typeof import('@vueuse/core')['reactivePick']
+ const readonly: typeof import('vue')['readonly']
+ const ref: typeof import('vue')['ref']
+ const refAutoReset: typeof import('@vueuse/core')['refAutoReset']
+ const refDebounced: typeof import('@vueuse/core')['refDebounced']
+ const refDefault: typeof import('@vueuse/core')['refDefault']
+ const refThrottled: typeof import('@vueuse/core')['refThrottled']
+ const refWithControl: typeof import('@vueuse/core')['refWithControl']
+ const resolveComponent: typeof import('vue')['resolveComponent']
+ const resolveRef: typeof import('@vueuse/core')['resolveRef']
+ const resolveUnref: typeof import('@vueuse/core')['resolveUnref']
+ const shallowReactive: typeof import('vue')['shallowReactive']
+ const shallowReadonly: typeof import('vue')['shallowReadonly']
+ const shallowRef: typeof import('vue')['shallowRef']
+ const syncRef: typeof import('@vueuse/core')['syncRef']
+ const syncRefs: typeof import('@vueuse/core')['syncRefs']
+ const templateRef: typeof import('@vueuse/core')['templateRef']
+ const throttledRef: typeof import('@vueuse/core')['throttledRef']
+ const throttledWatch: typeof import('@vueuse/core')['throttledWatch']
+ const toRaw: typeof import('vue')['toRaw']
+ const toReactive: typeof import('@vueuse/core')['toReactive']
+ const toRef: typeof import('vue')['toRef']
+ const toRefs: typeof import('vue')['toRefs']
+ const toValue: typeof import('vue')['toValue']
+ const triggerRef: typeof import('vue')['triggerRef']
+ const tryOnBeforeMount: typeof import('@vueuse/core')['tryOnBeforeMount']
+ const tryOnBeforeUnmount: typeof import('@vueuse/core')['tryOnBeforeUnmount']
+ const tryOnMounted: typeof import('@vueuse/core')['tryOnMounted']
+ const tryOnScopeDispose: typeof import('@vueuse/core')['tryOnScopeDispose']
+ const tryOnUnmounted: typeof import('@vueuse/core')['tryOnUnmounted']
+ const unref: typeof import('vue')['unref']
+ const unrefElement: typeof import('@vueuse/core')['unrefElement']
+ const until: typeof import('@vueuse/core')['until']
+ const useActiveElement: typeof import('@vueuse/core')['useActiveElement']
+ const useAnimate: typeof import('@vueuse/core')['useAnimate']
+ const useApiFetch: typeof import('./composables/useApiFetch.js')['default']
+ const useArrayDifference: typeof import('@vueuse/core')['useArrayDifference']
+ const useArrayEvery: typeof import('@vueuse/core')['useArrayEvery']
+ const useArrayFilter: typeof import('@vueuse/core')['useArrayFilter']
+ const useArrayFind: typeof import('@vueuse/core')['useArrayFind']
+ const useArrayFindIndex: typeof import('@vueuse/core')['useArrayFindIndex']
+ const useArrayFindLast: typeof import('@vueuse/core')['useArrayFindLast']
+ const useArrayIncludes: typeof import('@vueuse/core')['useArrayIncludes']
+ const useArrayJoin: typeof import('@vueuse/core')['useArrayJoin']
+ const useArrayMap: typeof import('@vueuse/core')['useArrayMap']
+ const useArrayReduce: typeof import('@vueuse/core')['useArrayReduce']
+ const useArraySome: typeof import('@vueuse/core')['useArraySome']
+ const useArrayUnique: typeof import('@vueuse/core')['useArrayUnique']
+ const useAsyncQueue: typeof import('@vueuse/core')['useAsyncQueue']
+ const useAsyncState: typeof import('@vueuse/core')['useAsyncState']
+ const useAttrs: typeof import('vue')['useAttrs']
+ const useBase64: typeof import('@vueuse/core')['useBase64']
+ const useBattery: typeof import('@vueuse/core')['useBattery']
+ const useBluetooth: typeof import('@vueuse/core')['useBluetooth']
+ const useBreakpoints: typeof import('@vueuse/core')['useBreakpoints']
+ const useBroadcastChannel: typeof import('@vueuse/core')['useBroadcastChannel']
+ const useBrowserLocation: typeof import('@vueuse/core')['useBrowserLocation']
+ const useCached: typeof import('@vueuse/core')['useCached']
+ const useClipboard: typeof import('@vueuse/core')['useClipboard']
+ const useClipboardItems: typeof import('@vueuse/core')['useClipboardItems']
+ const useCloned: typeof import('@vueuse/core')['useCloned']
+ const useColorMode: typeof import('@vueuse/core')['useColorMode']
+ const useConfirmDialog: typeof import('@vueuse/core')['useConfirmDialog']
+ const useCounter: typeof import('@vueuse/core')['useCounter']
+ const useCssModule: typeof import('vue')['useCssModule']
+ const useCssVar: typeof import('@vueuse/core')['useCssVar']
+ const useCssVars: typeof import('vue')['useCssVars']
+ const useCurrentElement: typeof import('@vueuse/core')['useCurrentElement']
+ const useCycleList: typeof import('@vueuse/core')['useCycleList']
+ const useDark: typeof import('@vueuse/core')['useDark']
+ const useDateFormat: typeof import('@vueuse/core')['useDateFormat']
+ const useDebounce: typeof import('@vueuse/core')['useDebounce']
+ const useDebounceFn: typeof import('@vueuse/core')['useDebounceFn']
+ const useDebouncedRefHistory: typeof import('@vueuse/core')['useDebouncedRefHistory']
+ const useDeviceMotion: typeof import('@vueuse/core')['useDeviceMotion']
+ const useDeviceOrientation: typeof import('@vueuse/core')['useDeviceOrientation']
+ const useDevicePixelRatio: typeof import('@vueuse/core')['useDevicePixelRatio']
+ const useDevicesList: typeof import('@vueuse/core')['useDevicesList']
+ const useDisplayMedia: typeof import('@vueuse/core')['useDisplayMedia']
+ const useDocumentVisibility: typeof import('@vueuse/core')['useDocumentVisibility']
+ const useDraggable: typeof import('@vueuse/core')['useDraggable']
+ const useDropZone: typeof import('@vueuse/core')['useDropZone']
+ const useElementBounding: typeof import('@vueuse/core')['useElementBounding']
+ const useElementByPoint: typeof import('@vueuse/core')['useElementByPoint']
+ const useElementHover: typeof import('@vueuse/core')['useElementHover']
+ const useElementSize: typeof import('@vueuse/core')['useElementSize']
+ const useElementVisibility: typeof import('@vueuse/core')['useElementVisibility']
+ const useEventBus: typeof import('@vueuse/core')['useEventBus']
+ const useEventListener: typeof import('@vueuse/core')['useEventListener']
+ const useEventSource: typeof import('@vueuse/core')['useEventSource']
+ const useEyeDropper: typeof import('@vueuse/core')['useEyeDropper']
+ const useFavicon: typeof import('@vueuse/core')['useFavicon']
+ const useFetch: typeof import('@vueuse/core')['useFetch']
+ const useFileDialog: typeof import('@vueuse/core')['useFileDialog']
+ const useFileSystemAccess: typeof import('@vueuse/core')['useFileSystemAccess']
+ const useFocus: typeof import('@vueuse/core')['useFocus']
+ const useFocusWithin: typeof import('@vueuse/core')['useFocusWithin']
+ const useFps: typeof import('@vueuse/core')['useFps']
+ const useFullscreen: typeof import('@vueuse/core')['useFullscreen']
+ const useGamepad: typeof import('@vueuse/core')['useGamepad']
+ const useGeolocation: typeof import('@vueuse/core')['useGeolocation']
+ const useId: typeof import('vue')['useId']
+ const useIdle: typeof import('@vueuse/core')['useIdle']
+ const useImage: typeof import('@vueuse/core')['useImage']
+ const useInfiniteScroll: typeof import('@vueuse/core')['useInfiniteScroll']
+ const useIntersectionObserver: typeof import('@vueuse/core')['useIntersectionObserver']
+ const useInterval: typeof import('@vueuse/core')['useInterval']
+ const useIntervalFn: typeof import('@vueuse/core')['useIntervalFn']
+ const useKeyModifier: typeof import('@vueuse/core')['useKeyModifier']
+ const useLastChanged: typeof import('@vueuse/core')['useLastChanged']
+ const useLink: typeof import('vue-router')['useLink']
+ const useLocalStorage: typeof import('@vueuse/core')['useLocalStorage']
+ const useMagicKeys: typeof import('@vueuse/core')['useMagicKeys']
+ const useManualRefHistory: typeof import('@vueuse/core')['useManualRefHistory']
+ const useMediaControls: typeof import('@vueuse/core')['useMediaControls']
+ const useMediaQuery: typeof import('@vueuse/core')['useMediaQuery']
+ const useMemoize: typeof import('@vueuse/core')['useMemoize']
+ const useMemory: typeof import('@vueuse/core')['useMemory']
+ const useModel: typeof import('vue')['useModel']
+ const useMounted: typeof import('@vueuse/core')['useMounted']
+ const useMouse: typeof import('@vueuse/core')['useMouse']
+ const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement']
+ const useMousePressed: typeof import('@vueuse/core')['useMousePressed']
+ const useMutationObserver: typeof import('@vueuse/core')['useMutationObserver']
+ const useNavigatorLanguage: typeof import('@vueuse/core')['useNavigatorLanguage']
+ const useNetwork: typeof import('@vueuse/core')['useNetwork']
+ const useNow: typeof import('@vueuse/core')['useNow']
+ const useObjectUrl: typeof import('@vueuse/core')['useObjectUrl']
+ const useOffsetPagination: typeof import('@vueuse/core')['useOffsetPagination']
+ const useOnline: typeof import('@vueuse/core')['useOnline']
+ const usePageLeave: typeof import('@vueuse/core')['usePageLeave']
+ const useParallax: typeof import('@vueuse/core')['useParallax']
+ const useParentElement: typeof import('@vueuse/core')['useParentElement']
+ const usePerformanceObserver: typeof import('@vueuse/core')['usePerformanceObserver']
+ const usePermission: typeof import('@vueuse/core')['usePermission']
+ const usePointer: typeof import('@vueuse/core')['usePointer']
+ const usePointerLock: typeof import('@vueuse/core')['usePointerLock']
+ const usePointerSwipe: typeof import('@vueuse/core')['usePointerSwipe']
+ const usePreferredColorScheme: typeof import('@vueuse/core')['usePreferredColorScheme']
+ const usePreferredContrast: typeof import('@vueuse/core')['usePreferredContrast']
+ const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark']
+ const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages']
+ const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion']
+ const usePrevious: typeof import('@vueuse/core')['usePrevious']
+ const useRafFn: typeof import('@vueuse/core')['useRafFn']
+ const useRefHistory: typeof import('@vueuse/core')['useRefHistory']
+ const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver']
+ const useRoute: typeof import('vue-router')['useRoute']
+ const useRouter: typeof import('vue-router')['useRouter']
+ const useScreenOrientation: typeof import('@vueuse/core')['useScreenOrientation']
+ const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea']
+ const useScriptTag: typeof import('@vueuse/core')['useScriptTag']
+ const useScroll: typeof import('@vueuse/core')['useScroll']
+ const useScrollLock: typeof import('@vueuse/core')['useScrollLock']
+ const useSessionStorage: typeof import('@vueuse/core')['useSessionStorage']
+ const useShare: typeof import('@vueuse/core')['useShare']
+ const useSlots: typeof import('vue')['useSlots']
+ const useSorted: typeof import('@vueuse/core')['useSorted']
+ const useSpeechRecognition: typeof import('@vueuse/core')['useSpeechRecognition']
+ const useSpeechSynthesis: typeof import('@vueuse/core')['useSpeechSynthesis']
+ const useStepper: typeof import('@vueuse/core')['useStepper']
+ const useStorage: typeof import('@vueuse/core')['useStorage']
+ const useStorageAsync: typeof import('@vueuse/core')['useStorageAsync']
+ const useStyleTag: typeof import('@vueuse/core')['useStyleTag']
+ const useSupported: typeof import('@vueuse/core')['useSupported']
+ const useSwipe: typeof import('@vueuse/core')['useSwipe']
+ const useTemplateRef: typeof import('vue')['useTemplateRef']
+ const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList']
+ const useTextDirection: typeof import('@vueuse/core')['useTextDirection']
+ const useTextSelection: typeof import('@vueuse/core')['useTextSelection']
+ const useTextareaAutosize: typeof import('@vueuse/core')['useTextareaAutosize']
+ const useThrottle: typeof import('@vueuse/core')['useThrottle']
+ const useThrottleFn: typeof import('@vueuse/core')['useThrottleFn']
+ const useThrottledRefHistory: typeof import('@vueuse/core')['useThrottledRefHistory']
+ const useTimeAgo: typeof import('@vueuse/core')['useTimeAgo']
+ const useTimeout: typeof import('@vueuse/core')['useTimeout']
+ const useTimeoutFn: typeof import('@vueuse/core')['useTimeoutFn']
+ const useTimeoutPoll: typeof import('@vueuse/core')['useTimeoutPoll']
+ const useTimestamp: typeof import('@vueuse/core')['useTimestamp']
+ const useTitle: typeof import('@vueuse/core')['useTitle']
+ const useToNumber: typeof import('@vueuse/core')['useToNumber']
+ const useToString: typeof import('@vueuse/core')['useToString']
+ const useToggle: typeof import('@vueuse/core')['useToggle']
+ const useTransition: typeof import('@vueuse/core')['useTransition']
+ const useUrlSearchParams: typeof import('@vueuse/core')['useUrlSearchParams']
+ const useUserMedia: typeof import('@vueuse/core')['useUserMedia']
+ const useVModel: typeof import('@vueuse/core')['useVModel']
+ const useVModels: typeof import('@vueuse/core')['useVModels']
+ const useVibrate: typeof import('@vueuse/core')['useVibrate']
+ const useVirtualList: typeof import('@vueuse/core')['useVirtualList']
+ const useWakeLock: typeof import('@vueuse/core')['useWakeLock']
+ const useWebNotification: typeof import('@vueuse/core')['useWebNotification']
+ const useWebSocket: typeof import('@vueuse/core')['useWebSocket']
+ const useWebWorker: typeof import('@vueuse/core')['useWebWorker']
+ const useWebWorkerFn: typeof import('@vueuse/core')['useWebWorkerFn']
+ const useWindowFocus: typeof import('@vueuse/core')['useWindowFocus']
+ const useWindowScroll: typeof import('@vueuse/core')['useWindowScroll']
+ const useWindowSize: typeof import('@vueuse/core')['useWindowSize']
+ const watch: typeof import('vue')['watch']
+ const watchArray: typeof import('@vueuse/core')['watchArray']
+ const watchAtMost: typeof import('@vueuse/core')['watchAtMost']
+ const watchDebounced: typeof import('@vueuse/core')['watchDebounced']
+ const watchDeep: typeof import('@vueuse/core')['watchDeep']
+ const watchEffect: typeof import('vue')['watchEffect']
+ const watchIgnorable: typeof import('@vueuse/core')['watchIgnorable']
+ const watchImmediate: typeof import('@vueuse/core')['watchImmediate']
+ const watchOnce: typeof import('@vueuse/core')['watchOnce']
+ const watchPausable: typeof import('@vueuse/core')['watchPausable']
+ const watchPostEffect: typeof import('vue')['watchPostEffect']
+ const watchSyncEffect: typeof import('vue')['watchSyncEffect']
+ const watchThrottled: typeof import('@vueuse/core')['watchThrottled']
+ const watchTriggerable: typeof import('@vueuse/core')['watchTriggerable']
+ const watchWithFilter: typeof import('@vueuse/core')['watchWithFilter']
+ const whenever: typeof import('@vueuse/core')['whenever']
+}
+// for type re-export
+declare global {
+ // @ts-ignore
+ export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
+ import('vue')
+}
diff --git a/report-viewer/src/components/BaseReport.vue b/report-viewer/src/components/BaseReport.vue
new file mode 100644
index 0000000..607685c
--- /dev/null
+++ b/report-viewer/src/components/BaseReport.vue
@@ -0,0 +1,631 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 基本信息
+
+
+
+
+
+ {{ featureMap[item.data.apiID]?.name }}
+
+
+
+
+
+
+
分享当前{{ isExample ? '示例' : '报告' }}链接
+
+
+
+ 免责声明
+
+
+
+ 1、本份报告是在取得您个人授权后,我们才向合法存有您以上个人信息的机构去调取相关内容,我们不会以任何形式对您的报告进行存储,除您和您授权的人外不会提供给任何人和机构进行查看。
+
+
+ 2、本报告自生成之日起,有效期 30
+ 天,过期自动删除。如果您对本份报告存有异议,可能是合作机构数据有延迟或未能获取到您的相关数据,出于合作平台数据隐私的保护,本平台将不做任何解释。
+
+
+ 3、若以上数据有错误,请联系平台客服。
+
+
+
+
+
+
+
+
+
+
+
+
+
琼公网安备46010002000584号
+
+
+
+
海南海宇大数据有限公司版权所有
+
+
+
+
+
diff --git a/report-viewer/src/components/GaugeChart.vue b/report-viewer/src/components/GaugeChart.vue
new file mode 100644
index 0000000..4331751
--- /dev/null
+++ b/report-viewer/src/components/GaugeChart.vue
@@ -0,0 +1,254 @@
+
+
+
+ {{ riskDescription }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/report-viewer/src/components/LEmpty.vue b/report-viewer/src/components/LEmpty.vue
new file mode 100644
index 0000000..20f22fc
--- /dev/null
+++ b/report-viewer/src/components/LEmpty.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+ 没有查询到相关结果
+
+
+ 订单已申请退款,预计
+ 24小时内到账 。
+
+
+ 如果已到账,您可以忽略本提示。
+
+
+
+
+ 返回上一页
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/report-viewer/src/components/LRemark.vue b/report-viewer/src/components/LRemark.vue
new file mode 100644
index 0000000..d833a87
--- /dev/null
+++ b/report-viewer/src/components/LRemark.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/report-viewer/src/components/LTitle.vue b/report-viewer/src/components/LTitle.vue
new file mode 100644
index 0000000..4c4d89a
--- /dev/null
+++ b/report-viewer/src/components/LTitle.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/components/ShareReportButton.vue b/report-viewer/src/components/ShareReportButton.vue
new file mode 100644
index 0000000..29af5d5
--- /dev/null
+++ b/report-viewer/src/components/ShareReportButton.vue
@@ -0,0 +1,91 @@
+
+
+
+
+
+
+ {{ isLoading ? "生成中..." : (isExample ? "分享示例" : "分享报告") }}
+
+
+
+
+
diff --git a/report-viewer/src/components/StyledTabs.vue b/report-viewer/src/components/StyledTabs.vue
new file mode 100644
index 0000000..96a2e42
--- /dev/null
+++ b/report-viewer/src/components/StyledTabs.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/components/TitleBanner.vue b/report-viewer/src/components/TitleBanner.vue
new file mode 100644
index 0000000..f2b2684
--- /dev/null
+++ b/report-viewer/src/components/TitleBanner.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/components/VerificationCard.vue b/report-viewer/src/components/VerificationCard.vue
new file mode 100644
index 0000000..66972ea
--- /dev/null
+++ b/report-viewer/src/components/VerificationCard.vue
@@ -0,0 +1,180 @@
+
+
+
+
+
+
+
+
+
+
+
+ 报告时间:
+ {{
+ reportDateTime ||
+ "2025-01-01 12:00:00"
+ }}
+
+
+ 报告项目:
+
+ {{ reportName }}
+
+
+
+
+
+
+
+
+
+ 姓名
+ {{
+ maskValue(
+ "name",
+ reportParams?.name
+ )
+ }}
+
+
+
+
+ 身份证号
+ {{
+ maskValue(
+ "id_card",
+ reportParams?.id_card
+ )
+ }}
+
+
+
+
+ 手机号
+ {{
+ maskValue(
+ "mobile",
+ reportParams?.mobile
+ )
+ }}
+
+
+
+
+
+
+
+
+
+
+
+ 身份证检查结果
+
+
+ 身份证信息核验通过
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/composables/useApiFetch.js b/report-viewer/src/composables/useApiFetch.js
new file mode 100644
index 0000000..d1aca43
--- /dev/null
+++ b/report-viewer/src/composables/useApiFetch.js
@@ -0,0 +1,72 @@
+// 简化的 useApiFetch,用于独立项目
+import { createFetch } from "@vueuse/core";
+
+// 创建全局的 fetch 实例
+const useApiFetch = createFetch({
+ baseUrl: "/api/v1", // 可配置的 API 基础路径
+ options: {
+ async beforeFetch({ url, options }) {
+ showLoadingToast({
+ message: "加载中...",
+ forbidClick: true,
+ duration: 0,
+ loadingType: "spinner",
+ });
+
+ const timestamp = Date.now();
+ const separator = url.includes("?") ? "&" : "?";
+ url += `${separator}t=${timestamp}`;
+
+ // 在请求前添加通用的 Header
+ const token = localStorage.getItem("token");
+ let platform = "h5";
+ const userAgent = navigator.userAgent.toLowerCase();
+ const isWechat = /micromessenger/.test(userAgent);
+ if (isWechat) {
+ platform = "wxh5";
+ }
+ options.headers['X-Platform'] = platform;
+
+ if (token) {
+ options.headers = {
+ ...options.headers,
+ Authorization: `${token}`,
+ };
+ }
+ return { url, options };
+ },
+ async afterFetch({ data, response }) {
+ closeToast();
+ // 全局处理响应
+ if (response.status === 401) {
+ localStorage.removeItem("token");
+ localStorage.removeItem('refreshAfter');
+ localStorage.removeItem('accessExpire');
+ }
+
+ if (data.code !== 200) {
+ if (data.code !== 200002 && data.code !== 200003 && data.code !== 200004) {
+ showToast({ message: data.msg });
+ }
+ }
+ return { data, response };
+ },
+ async onFetchError({ error, response }) {
+ console.log("error", error);
+ closeToast();
+ if (response.status === 401) {
+ localStorage.removeItem("token");
+ localStorage.removeItem('refreshAfter');
+ localStorage.removeItem('accessExpire');
+ } else {
+ if (typeof error === "string") {
+ showToast({ message: error });
+ }
+ }
+ return { error };
+ },
+ },
+});
+
+export default useApiFetch;
+
diff --git a/report-viewer/src/main.js b/report-viewer/src/main.js
new file mode 100644
index 0000000..b3ddbbd
--- /dev/null
+++ b/report-viewer/src/main.js
@@ -0,0 +1,26 @@
+import './assets/main.css'
+import { createApp } from 'vue'
+import { createRouter, createWebHistory } from 'vue-router'
+import App from './App.vue'
+
+const router = createRouter({
+ history: createWebHistory(),
+ routes: [
+ {
+ path: '/',
+ name: 'Report',
+ component: () => import('./views/Report.vue')
+ },
+ {
+ path: '/report',
+ name: 'ReportView',
+ component: () => import('./views/Report.vue')
+ }
+ ]
+})
+
+const app = createApp(App)
+app.use(router)
+
+app.mount('#app')
+
diff --git a/report-viewer/src/ui/CDWBG8B4D/components/ElementVerification.vue b/report-viewer/src/ui/CDWBG8B4D/components/ElementVerification.vue
new file mode 100644
index 0000000..f7e9d68
--- /dev/null
+++ b/report-viewer/src/ui/CDWBG8B4D/components/ElementVerification.vue
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+
+
+
+ {{ getRiskFlagText(sfzeysFlag) }}
+
+
+
+
+
+
+
身份证二要素验证
+
+
+
+
+
+
+ {{ getResultText(personCheckDetails.result) }}
+
+
+
+
+
+
+
+
{{ personCheckDetails.ele || '身份证号、姓名' }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getRiskFlagText(sjsysFlag) }}
+
+
+
+
+
+
+
手机三要素验证
+
+
+
+
+
+
+ {{ getResultText(phoneCheckDetails.result) }}
+
+
+
+
+
+
+
+
{{ phoneCheckDetails.ele || '身份证号、手机号、姓名' }}
+
{{ phoneCheckDetails.phoneCompany || '运营商: 中国移动' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/CDWBG8B4D/components/Identity.vue b/report-viewer/src/ui/CDWBG8B4D/components/Identity.vue
new file mode 100644
index 0000000..2f0d4e1
--- /dev/null
+++ b/report-viewer/src/ui/CDWBG8B4D/components/Identity.vue
@@ -0,0 +1,367 @@
+
+
+
+
+
+
+
+ {{ getOnlineTimeRiskText(inTime) }}
+
+
+
+
+
+
+
在网时长
+
+
+
+
+
+
+ {{ getOnlineTimeRiskText(inTime) }}
+
+
+
+
+
+
+
+
{{ getOnlineTimeText(inTime) }}
+
状态说明:{{ getOnlineTimeStatusText(inTime) }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getPhoneVailRiskText(phoneVailRiskFlag) }}
+
+
+
+
+
+
+
手机信息验证
+
+
+
+
+
+
+ {{ getPhoneVailRiskText(phoneVailRiskFlag) }}
+
+
+
+
+
+
+
+
手机状态:{{ phoneVailRisks.phoneStatus || '沉默号' }}
+
运营商:{{ phoneVailRisks.phoneCompany || '移动' }} 在网时长:{{
+ phoneVailRisks.phoneTimes || '3个月' }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getRiskFlagText(belongRiskFlag) }}
+
+
+
+
+
+
+
归属地风险
+
+
+
+
+
+ 身份证省份:
+ {{ belongRisks.personProvence || '江苏省' }}
+
+
+ 身份证城市:
+ {{ belongRisks.personCity || '徐州市' }}
+
+
+ 手机省份:
+ {{ belongRisks.phoneProvence || '江苏' }}
+
+
+ 手机城市:
+ {{ belongRisks.phoneCity || '徐州' }}
+
+
+ 手机卡类型:
+ {{ belongRisks.phoneCardType || '移动' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/CDWBG8B4D/components/LeasingRiskSection.vue b/report-viewer/src/ui/CDWBG8B4D/components/LeasingRiskSection.vue
new file mode 100644
index 0000000..6cca2b4
--- /dev/null
+++ b/report-viewer/src/ui/CDWBG8B4D/components/LeasingRiskSection.vue
@@ -0,0 +1,492 @@
+
+
+
+
+
+
+
+
+
租赁风险评估概览
+
+
+ {{ getRiskFlagText(leasingRiskAssessment.riskFlag) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/CDWBG8B4D/components/LoanEvaluationSection.vue b/report-viewer/src/ui/CDWBG8B4D/components/LoanEvaluationSection.vue
new file mode 100644
index 0000000..28e69e8
--- /dev/null
+++ b/report-viewer/src/ui/CDWBG8B4D/components/LoanEvaluationSection.vue
@@ -0,0 +1,526 @@
+
+
+
+
+
+
+
+
+
借贷评估概览
+
+
+ {{ getRiskFlagText(loanEvaluationVerificationDetail.riskFlag) }}
+
+
+
+
+
+
+
+
+
+
机构借贷表现
+
+
+
+
+
+
+
+
+
+
+
+
客户类型借贷表现
+
+
+
+
+
+
+
+
+
+
+
+
业务类型借贷表现
+
+
+
+
+
+
+
+
+
+
+
+
异常时间段借贷表现
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/CDWBG8B4D/components/MultCourtInfoSection.vue b/report-viewer/src/ui/CDWBG8B4D/components/MultCourtInfoSection.vue
new file mode 100644
index 0000000..120879b
--- /dev/null
+++ b/report-viewer/src/ui/CDWBG8B4D/components/MultCourtInfoSection.vue
@@ -0,0 +1,521 @@
+
+
+
+
+
+
+
+
+
+
+
+
案件概览
+
+
+
+
+
+
{{ getCaseCount(multCourtInfo.legalCases) }}
+
涉案公告
+
+ {{ getCaseFlagText(multCourtInfo.legalCasesFlag) }}
+
+
+
+
{{ getCaseCount(multCourtInfo.executionCases) }}
+
执行公告
+
+ {{ getCaseFlagText(multCourtInfo.executionCasesFlag) }}
+
+
+
+
{{ getCaseCount(multCourtInfo.disinCases) }}
+
失信公告
+
+ {{ getCaseFlagText(multCourtInfo.disinCasesFlag) }}
+
+
+
+
{{ getCaseCount(multCourtInfo.limitCases) }}
+
限高公告
+
+ {{ getCaseFlagText(multCourtInfo.limitCasesFlag) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
涉案公告
+
+ {{ multCourtInfo.legalCases.length }}件
+
+
+
+
+
+
+
+
+
+
+
+ 案件类型:
+ {{ caseItem.caseType }}
+
+
+ 审理法院:
+ {{ caseItem.court }}
+
+
+ 诉讼地位:
+ {{ caseItem.litigantType }}
+
+
+ 立案时间:
+ {{ caseItem.filingTime }}
+
+
+ 结案时间:
+ {{ caseItem.disposalTime }}
+
+
+ 结案方式:
+ {{ caseItem.disposalMethod }}
+
+
+ 案由:
+ {{ caseItem.caseReason }}
+
+
+ 判决结果:
+ {{ caseItem.judgmentResult }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
执行案件
+
+ {{ multCourtInfo.executionCases.length }}件
+
+
+
+
+
+
+
+
+
+
+
+ 案件类型:
+ {{ caseItem.caseType }}
+
+
+ 执行法院:
+ {{ caseItem.court }}
+
+
+ 被执行人地位:
+ {{ caseItem.litigantType }}
+
+
+ 立案时间:
+ {{ caseItem.filingTime }}
+
+
+ 结案时间:
+ {{ caseItem.disposalTime }}
+
+
+ 执行金额:
+ {{ caseItem.executionAmount }}元
+
+
+ 已还款金额:
+ {{ caseItem.repaidAmount }}元
+
+
+ 案由:
+ {{ caseItem.caseReason }}
+
+
+ 结案方式:
+ {{ caseItem.disposalMethod }}
+
+
+ 执行结果:
+ {{ caseItem.judgmentResult }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
失信案件
+
+ {{ multCourtInfo.disinCases.length }}件
+
+
+
+
+
+
+
+
+
+
+
+ 案件类型:
+ {{ caseItem.caseType }}
+
+
+ 执行法院:
+ {{ caseItem.court }}
+
+
+ 被执行人地位:
+ {{ caseItem.litigantType }}
+
+
+ 立案时间:
+ {{ caseItem.filingTime }}
+
+
+ 结案时间:
+ {{ caseItem.disposalTime }}
+
+
+ 执行金额:
+ {{ caseItem.executionAmount }}元
+
+
+ 已还款金额:
+ {{ caseItem.repaidAmount }}元
+
+
+ 案由:
+ {{ caseItem.caseReason }}
+
+
+ 结案方式:
+ {{ caseItem.disposalMethod }}
+
+
+ 失信原因:
+ {{ caseItem.judgmentResult }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
限高案件
+
+ {{ multCourtInfo.limitCases.length }}件
+
+
+
+
+
+
+
+
+
+
+
+ 案件类型:
+ {{ caseItem.caseType }}
+
+
+ 执行法院:
+ {{ caseItem.court }}
+
+
+ 被执行人地位:
+ {{ caseItem.litigantType }}
+
+
+ 立案时间:
+ {{ caseItem.filingTime }}
+
+
+ 结案时间:
+ {{ caseItem.disposalTime }}
+
+
+ 执行金额:
+ {{ caseItem.executionAmount }}元
+
+
+ 已还款金额:
+ {{ caseItem.repaidAmount }}元
+
+
+ 案由:
+ {{ caseItem.caseReason }}
+
+
+ 结案方式:
+ {{ caseItem.disposalMethod }}
+
+
+ 限高原因:
+ {{ caseItem.judgmentResult }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/report-viewer/src/ui/CDWBG8B4D/components/OverdueRiskSection.vue b/report-viewer/src/ui/CDWBG8B4D/components/OverdueRiskSection.vue
new file mode 100644
index 0000000..a8cd6b9
--- /dev/null
+++ b/report-viewer/src/ui/CDWBG8B4D/components/OverdueRiskSection.vue
@@ -0,0 +1,494 @@
+
+
+
+
+
+
+
+ {{ getOverdueStatusText(overdueRiskProduct.hasUnsettledOverdue) }}
+
+
+
+
+
+
+
逾期风险概览
+
+
+
+
+
+
{{
+ formatInstitutionInterval(overdueRiskProduct.currentOverdueInstitutionCount) }}
+
当前逾期机构数
+
+
+
{{
+ formatAmountInterval(overdueRiskProduct.currentOverdueAmount) }}
+
当前逾期金额
+
+
+
{{
+ formatInstitutionInterval(overdueRiskProduct.settledInstitutionCount) }}
+
已结清机构数
+
+
+
{{
+ formatInstitutionInterval(overdueRiskProduct.totalLoanInstitutions) }}
+
贷款总机构
+
+
+
+
+
+
+
+
+
+
+ {{ getOverdueTimeDistributionTagText(overdueRiskProduct) }}
+
+
+
+
+
+
+
逾期时间分布
+
+
+
+
+
{{ getOverdueTimeText(overdueRiskProduct.overdueLast1Day) }}
+
近1天
+
+
+
{{ getOverdueTimeText(overdueRiskProduct.overdueLast7Days) }}
+
近7天
+
+
+
{{ getOverdueTimeText(overdueRiskProduct.overdueLast14Days) }}
+
近14天
+
+
+
{{ getOverdueTimeText(overdueRiskProduct.overdueLast30Days) }}
+
近30天
+
+
+
+
+
+
+
+
+
+
+
+
+
还款统计
+
+
+
+
+
+ 最近一次成功还款距今天数
+ {{
+ formatDaysInterval(overdueRiskProduct.daysSinceLastSuccessfulRepayment) }}
+
+
+
+
+
+
+
+
+
+
+
最近7天
+
+
+
{{
+ formatCountInterval(overdueRiskProduct.repaymentFailureCountLast7Days) }}
+
失败次数
+
+
+
{{
+ formatAmountInterval(overdueRiskProduct.repaymentFailureAmountLast7Days) }}
+
失败金额
+
+
+
+
+
+
+
最近14天
+
+
+
{{
+ formatCountInterval(overdueRiskProduct.repaymentFailureCountLast14Days) }}
+
失败次数
+
+
+
{{
+ formatAmountInterval(overdueRiskProduct.repaymentFailureAmountLast14Days) }}
+
失败金额
+
+
+
+
+
+
+
最近1个月
+
+
+
{{
+ formatCountInterval(overdueRiskProduct.repaymentFailureCountLastMonth) }}
+
失败次数
+
+
+
{{
+ formatAmountInterval(overdueRiskProduct.repaymentFailureAmountLastMonth) }}
+
失败金额
+
+
+
+
+
+
+
最近3个月
+
+
+
{{
+ formatCountInterval(overdueRiskProduct.repaymentFailureCountLast3Months) }}
+
失败次数
+
+
+
{{
+ formatAmountInterval(overdueRiskProduct.repaymentFailureAmountLast3Months) }}
+
失败金额
+
+
+
+
+
+
+
+
+
+
+
+
+
+
最近7天
+
+
+
{{
+ formatCountInterval(overdueRiskProduct.repaymentSuccessCountLast7Days) }}
+
成功次数
+
+
+
{{
+ formatAmountInterval(overdueRiskProduct.repaymentSuccessAmountLast7Days) }}
+
成功金额
+
+
+
+
+
+
+
最近14天
+
+
+
{{
+ formatCountInterval(overdueRiskProduct.repaymentSuccessCountLast14Days) }}
+
成功次数
+
+
+
{{
+ formatAmountInterval(overdueRiskProduct.repaymentSuccessAmountLast14Days) }}
+
成功金额
+
+
+
+
+
+
+
最近1个月
+
+
+
{{
+ formatCountInterval(overdueRiskProduct.repaymentSuccessCountLastMonth) }}
+
成功次数
+
+
+
{{
+ formatAmountInterval(overdueRiskProduct.repaymentSuccessAmountLastMonth) }}
+
成功金额
+
+
+
+
+
+
+
最近3个月
+
+
+
{{
+ formatCountInterval(overdueRiskProduct.repaymentSuccessCountLast3Months) }}
+
成功次数
+
+
+
{{
+ formatAmountInterval(overdueRiskProduct.repaymentSuccessAmountLast3Months) }}
+
成功金额
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
风险标识
+
+
+
+
+
+ {{ getRiskFlagText(overdueRiskProduct.lyjlhyFlag) }}
+
+
逾期风险产品
+
+
+
+ {{ getRiskFlagText(overdueRiskProduct.dkzhktjFlag) }}
+
+
贷款中还款统计
+
+
+
+ {{ getRiskFlagText(overdueRiskProduct.tsmdyzFlag) }}
+
+
特殊名单验证
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/CDWBG8B4D/components/ReportOverview.vue b/report-viewer/src/ui/CDWBG8B4D/components/ReportOverview.vue
new file mode 100644
index 0000000..8d0d02e
--- /dev/null
+++ b/report-viewer/src/ui/CDWBG8B4D/components/ReportOverview.vue
@@ -0,0 +1,320 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ checkSuggest || '建议拒绝' }}
+
+
+
+
+
+
+
+
+
+
+ 姓名:
+ {{ maskName(baseInfo.name) }}
+
+
+ 年龄:
+ {{ baseInfo.age }}岁
+
+
+ 性别:
+ {{ baseInfo.sex }}
+
+
+ 手机号:
+ {{ maskPhone(baseInfo.phone) }}
+
+
+ 身份证号:
+ {{ maskIdCard(baseInfo.idCard) }}
+
+
+ 户籍所在地:
+ {{ baseInfo.location }}
+
+
+ 号码归属地:
+ {{ baseInfo.phoneArea }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getFraudRiskLevel(fraudScore) }}
+
+
+
+
+
+
+
{{ fraudScore === -1 ? '未命中' : fraudScore }}
+
反欺诈评分
+
+
+
+
+
+
+
+
+ {{ getCreditLevel(creditScore) }}
+
+
+
+
+
+
+
{{ creditScore === -1 ? '未命中' : creditScore }}
+
信用评分
+
+
+
+
+
+
+
+
+ {{ verifyRule || '未评估' }}
+
+
+
+
+
+
+
{{ verifyRule || '未评估' }}
+
验证规则
+
+
+
+
+
+
+
+
+ {{ fraudRule || '未评估' }}
+
+
+
+
+
+
+
{{ fraudRule || '未评估' }}
+
反欺诈规则
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/CDWBG8B4D/components/RiskSupervisionSection.vue b/report-viewer/src/ui/CDWBG8B4D/components/RiskSupervisionSection.vue
new file mode 100644
index 0000000..c8afaab
--- /dev/null
+++ b/report-viewer/src/ui/CDWBG8B4D/components/RiskSupervisionSection.vue
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+
+
+
+
+
关联风险监督
+
最后申请时间: {{ riskSupervision.leastApplicationTime || '未知' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ riskSupervision.rentalRiskListIdCardRelationsPhones || 0
+ }}
+
同一身份证关联手机号数
+
+
+
+
+
+
+
+
+
+
+
+
{{ riskSupervision.rentalRiskListPhoneRelationsIdCards || 0
+ }}
+
同一手机号关联身份证数
+
+
+
+
+
+
+
+
+
+
+
+
{{ getRiskStatusText() }}
+
{{ getRiskStatusDescription() }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/CDWBG8B4D/components/RiskWarning.vue b/report-viewer/src/ui/CDWBG8B4D/components/RiskWarning.vue
new file mode 100644
index 0000000..b10f301
--- /dev/null
+++ b/report-viewer/src/ui/CDWBG8B4D/components/RiskWarning.vue
@@ -0,0 +1,409 @@
+
+
+
+
+
+
+
+ {{ getRiskFlagText(highRiskFlag) }}
+
+
+
+
+
+
+
公安重点人员核验产品
+
+
+
+
+
+
+
+
+ {{ getRiskTypeText(keyPersonCheckList.fontFlag) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getRiskTypeText(keyPersonCheckList.jingJiFontFlag) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getRiskTypeText(keyPersonCheckList.fangAiFlag) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getRiskTypeText(keyPersonCheckList.zhongDianFlag) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getRiskTypeText(keyPersonCheckList.sheJiaoTongFlag) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getAntiFraudRiskFlagText(antiFraudInfo) }}
+
+
+
+
+
+
+
涉赌涉诈核验产品
+
+
+
+
+
+
+
+
+ {{ getAntiFraudRiskText(antiFraudInfo?.moneyLaundering) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getAntiFraudRiskText(antiFraudInfo?.deceiver) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getAntiFraudRiskText(antiFraudInfo?.gamblerPlayer) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getAntiFraudRiskText(antiFraudInfo?.gamblerBanker) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/CDWBG8B4D/components/RiskWarningSection.vue b/report-viewer/src/ui/CDWBG8B4D/components/RiskWarningSection.vue
new file mode 100644
index 0000000..5e5f204
--- /dev/null
+++ b/report-viewer/src/ui/CDWBG8B4D/components/RiskWarningSection.vue
@@ -0,0 +1,747 @@
+
+
+
+
+
+
+
+
+
+
+
{{ riskWarning.totalRiskCounts || 0 }}
+
总风险点数量
+
+
+
+
+
+
+
高风险
+
{{ getHighRiskCount() }}
+
+
+
中风险
+
{{ getMiddleRiskCount() }}
+
+
+
风险等级
+
{{ riskWarning.level || '-' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
要素核查
+
+
+ {{ getElementVerificationRisks().length }}条风险
+
+
+
w'w'w'w'w'w'w'w'w'w
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
运营商核验
+
+
+ {{ getOperatorVerificationRisks().length }}条风险
+
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
公安重点人员核验
+
+
+ {{ getPoliceVerificationRisks().length }}条风险
+
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
逾期风险
+
+
+ {{ getOverdueRiskRisks().length }}条风险
+
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
法院曝光台信息
+
+
+ {{ getCourtRiskRisks().length }}条风险
+
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
借贷评估
+
+
+ {{ getLoanEvaluationRisks().length }}条风险
+
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
租赁风险评估
+
+
+ {{ getLeasingRiskRisks().length }}条风险
+
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/report-viewer/src/ui/CDWBG8B4D/components/RiskWarningTab.vue b/report-viewer/src/ui/CDWBG8B4D/components/RiskWarningTab.vue
new file mode 100644
index 0000000..a5e6360
--- /dev/null
+++ b/report-viewer/src/ui/CDWBG8B4D/components/RiskWarningTab.vue
@@ -0,0 +1,1147 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
总风险点
+
{{ riskWarning.value?.totalRiskCounts || 0 }}条
+
+
+
+
高风险
+
{{ getHighRiskCount() }}条
+
+
+
+
中风险
+
{{ getMiddleRiskCount() }}条
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getElementVerificationRisks().length }}条风险
+
+
+
+
+
+
+
要素核查
+
身份证、手机号等基础信息验证
+
+
+
+
+
+ {{ getElementVerificationRisks()[0]?.level || '高风险' }}
+
+
+
+
+
+
+
{{ getElementVerificationRisks()[0]?.description ||
+ '检测到风险' }}
+
+
{{ getElementVerificationRisks()[0]?.detail || '该模块检测到风险' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getOperatorVerificationRisks().length }}条风险
+
+
+
+
+
+
+
运营商核验
+
手机号状态、在网时长等运营商信息
+
+
+
+
+
+ {{ getOperatorVerificationRisks()[0]?.level || '高风险' }}
+
+
+
+
+
+
+
{{ getOperatorVerificationRisks()[0]?.description ||
+ '手机在网状态为风险号'
+ }}
+
{{ getOperatorVerificationRisks()[0]?.detail ||
+ '手机号状态异常,存在风险' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getPoliceVerificationRisks().length }}条风险
+
+
+
+
+
+
+
公安重点人员核验
+
前科记录、重点人员、涉赌涉诈等
+
+
+
+
+
+
+
+
+
+
+
风险等级
+
+
+
+
+ {{ level
+ }}
+ {{ getRiskLevelText(level) }}
+
+
+
+
+
+
+
+
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getOverdueRiskRisks().length }}条风险
+
+
+
+
+
+
+
+
+
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getCourtRiskRisks().length }}条风险
+
+
+
+
+
+
+
法院曝光台信息
+
民事、刑事、行政案件等司法记录
+
+
+
+
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getLoanEvaluationRisks().length }}条风险
+
+
+
+
+
+
+
借贷评估
+
申请频率、偿债压力、欺诈团伙等
+
+
+
+
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getLeasingRiskRisks().length }}条风险
+
+
+
+
+
+
+
+
+
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/report-viewer/src/ui/CDWBG8B4D/index.vue b/report-viewer/src/ui/CDWBG8B4D/index.vue
new file mode 100644
index 0000000..605232c
--- /dev/null
+++ b/report-viewer/src/ui/CDWBG8B4D/index.vue
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/CDWBG8B4D/utils/intervalFormatter.js b/report-viewer/src/ui/CDWBG8B4D/utils/intervalFormatter.js
new file mode 100644
index 0000000..418e3b9
--- /dev/null
+++ b/report-viewer/src/ui/CDWBG8B4D/utils/intervalFormatter.js
@@ -0,0 +1,264 @@
+/**
+ * 区间表达式格式化工具
+ * 将数学区间表达式转换为用户友好的文本描述
+ */
+
+/**
+ * 格式化区间表达式
+ * @param {string} interval - 区间表达式,如 "(0,1000)", "[2000,30000)", "[17,+)"
+ * @param {string} unit - 单位,如 "元", "次", "个", "天" 等
+ * @returns {string} 格式化后的文本,如果格式化失败则返回原数据
+ */
+export function formatInterval(interval, unit = "") {
+ // 如果数据为空或无效,返回原数据
+ if (!interval || interval === "-" || interval === "0") {
+ return interval || "-";
+ }
+
+ try {
+ // 处理特殊格式,如 "3,6(个月)"
+ if (interval.includes("(") && interval.includes(")")) {
+ const match = interval.match(/^(\d+(?:,\d+)*)\((.+)\)$/);
+ if (match) {
+ const numbers = match[1].split(",").map((n) => n.trim());
+ const timeUnit = match[2];
+ if (numbers.length === 2) {
+ return `${numbers[0]}-${numbers[1]}${timeUnit}`;
+ }
+ return `${numbers.join(", ")}${timeUnit}`;
+ }
+ }
+
+ // 处理区间表达式
+ const intervalPattern =
+ /^([\[\(])(\d+(?:\.\d+)?),(\d+(?:\.\d+)?|\+)([\]\)])$/;
+ const match = interval.match(intervalPattern);
+
+ // 如果不是区间表达式,返回原数据
+ if (!match) {
+ return interval;
+ }
+
+ const [, leftBracket, leftValue, rightValue, rightBracket] = match;
+ const isLeftInclusive = leftBracket === "[";
+ const isRightInclusive = rightBracket === "]";
+ const isRightInfinity = rightValue === "+";
+
+ let result = "";
+
+ if (isRightInfinity) {
+ // 处理无穷大情况,如 "[17,+)"
+ if (isLeftInclusive) {
+ result = `≥${leftValue}${unit}`;
+ } else {
+ result = `>${leftValue}${unit}`;
+ }
+ } else {
+ // 处理有限区间
+ const leftNum = parseFloat(leftValue);
+ const rightNum = parseFloat(rightValue);
+
+ // 检查数值是否有效
+ if (isNaN(leftNum) || isNaN(rightNum)) {
+ return interval;
+ }
+
+ if (leftNum === rightNum) {
+ // 单点值
+ result = `${leftNum}${unit}`;
+ } else {
+ // 区间值 - 简化为实际数值范围
+ if (isLeftInclusive && isRightInclusive) {
+ result = `${leftNum}-${rightNum}${unit}`;
+ } else if (isLeftInclusive && !isRightInclusive) {
+ // 右开区间,显示到 rightNum-1
+ result = `${leftNum}-${rightNum - 1}${unit}`;
+ } else if (!isLeftInclusive && isRightInclusive) {
+ // 左开区间,显示从 leftNum+1
+ result = `${leftNum + 1}-${rightNum}${unit}`;
+ } else {
+ // 两端都不包含,显示从 leftNum+1 到 rightNum-1
+ result = `${leftNum + 1}-${rightNum - 1}${unit}`;
+ }
+ }
+ }
+
+ return result;
+ } catch (error) {
+ // 如果格式化过程中出现错误,返回原数据
+ console.warn("区间格式化失败:", error, "原数据:", interval);
+ return interval;
+ }
+}
+
+/**
+ * 格式化金额区间
+ * @param {string} interval - 金额区间表达式
+ * @returns {string} 格式化后的金额文本
+ */
+export function formatAmountInterval(interval) {
+ return formatInterval(interval, "元");
+}
+
+/**
+ * 格式化次数区间
+ * @param {string} interval - 次数区间表达式
+ * @returns {string} 格式化后的次数文本
+ */
+export function formatCountInterval(interval) {
+ return formatInterval(interval, "次");
+}
+
+/**
+ * 格式化天数区间
+ * @param {string} interval - 天数区间表达式
+ * @returns {string} 格式化后的天数文本
+ */
+export function formatDaysInterval(interval) {
+ return formatInterval(interval, "天");
+}
+
+/**
+ * 格式化机构数量区间
+ * @param {string} interval - 机构数量区间表达式
+ * @returns {string} 格式化后的机构数量文本
+ */
+export function formatInstitutionInterval(interval) {
+ return formatInterval(interval, "家");
+}
+
+/**
+ * 格式化时间区间
+ * @param {string} interval - 时间区间表达式
+ * @returns {string} 格式化后的时间文本
+ */
+export function formatTimeInterval(interval) {
+ if (!interval || interval === "-") {
+ return "-";
+ }
+
+ // 处理特殊格式,如 "3,6(个月)"
+ if (interval.includes("(") && interval.includes(")")) {
+ const match = interval.match(/^(\d+(?:,\d+)*)\((.+)\)$/);
+ if (match) {
+ const numbers = match[1].split(",").map((n) => n.trim());
+ const timeUnit = match[2];
+ if (numbers.length === 2) {
+ return `${numbers[0]}-${numbers[1]}${timeUnit}`;
+ }
+ return `${numbers.join(", ")}${timeUnit}`;
+ }
+ }
+
+ return formatInterval(interval, "");
+}
+
+/**
+ * 格式化申请次数区间
+ * @param {string} interval - 申请次数区间表达式,格式如 "2/1"
+ * @returns {string} 格式化后的申请次数文本
+ */
+export function formatApplicationInterval(interval) {
+ if (!interval || interval === "-") {
+ return "-";
+ }
+
+ // 处理 "2/1" 格式,表示 申请次数/机构数
+ if (interval.includes("/")) {
+ const [applyCount, institutionCount] = interval.split("/");
+ return `${applyCount}次/${institutionCount}家`;
+ }
+
+ return formatCountInterval(interval);
+}
+
+/**
+ * 格式化风险等级文本
+ * @param {string} level - 风险等级,如 "C2,C5"
+ * @returns {string} 格式化后的风险等级文本
+ */
+export function formatRiskLevel(level) {
+ if (!level) return "-";
+
+ const levelMap = {
+ 0: "正常人员",
+ A: "前科:侵犯公民人身权利,民主权利",
+ A1: "盗窃",
+ A2: "诈骗",
+ A3: "抢劫/夺",
+ A4: "故意伤害/杀人",
+ A5: "强奸/性侵/猥亵",
+ B: "经济类前科",
+ B1: "走私",
+ B2: "破坏金融管理秩序",
+ B3: "正常人员",
+ B4: "洗钱",
+ B5: "洗钱",
+ C: "妨害社会管理秩序",
+ C1: "扰乱公共秩序",
+ C2: "妨害司法",
+ C3: "涉毒",
+ C4: "涉黄刑案",
+ C5: "帮信/掩隐/侵公",
+ D: "重点",
+ D1: "危害国家、公共安全",
+ D2: "涉稳",
+ D3: "涉及境外",
+ D4: "涉恐、疆藏",
+ D5: "涉黑",
+ E: "涉交通案件",
+ F: "法院文书",
+ };
+
+ return level
+ .split(",")
+ .map((l) => levelMap[l.trim()] || l.trim())
+ .join("、");
+}
+
+/**
+ * 格式化状态文本
+ * @param {string} status - 状态值
+ * @param {Object} statusMap - 状态映射对象
+ * @returns {string} 格式化后的状态文本
+ */
+export function formatStatus(status, statusMap = {}) {
+ if (status === undefined || status === null || status === "") {
+ return "-";
+ }
+
+ return statusMap[status] || status;
+}
+
+/**
+ * 格式化风险标识
+ * @param {number} flag - 风险标识,0=未查得,1=高风险,2=低风险
+ * @returns {Object} 包含文本和样式的对象
+ */
+export function formatRiskFlag(flag) {
+ const flagMap = {
+ 0: { text: "未查得", class: "bg-gray-100 text-gray-700" },
+ 1: { text: "高风险", class: "bg-red-100 text-red-700" },
+ 2: { text: "低风险", class: "bg-green-100 text-green-700" },
+ };
+
+ return (
+ flagMap[flag] || { text: "未知", class: "bg-gray-100 text-gray-700" }
+ );
+}
+
+/**
+ * 格式化验证结果
+ * @param {string} result - 验证结果
+ * @returns {Object} 包含文本和样式的对象
+ */
+export function formatVerificationResult(result) {
+ const resultMap = {
+ 一致: { text: "一致", class: "text-green-600" },
+ 不一致: { text: "不一致", class: "text-red-600" },
+ 验证通过: { text: "验证通过", class: "text-green-600" },
+ 验证失败: { text: "验证失败", class: "text-red-600" },
+ };
+
+ return resultMap[result] || { text: result || "-", class: "text-gray-600" };
+}
diff --git a/report-viewer/src/ui/CDWBG8B4D/utils/simpleSplitter.js b/report-viewer/src/ui/CDWBG8B4D/utils/simpleSplitter.js
new file mode 100644
index 0000000..d178c0f
--- /dev/null
+++ b/report-viewer/src/ui/CDWBG8B4D/utils/simpleSplitter.js
@@ -0,0 +1,157 @@
+/**
+ * 简单的DWBG8B4D数据拆分演示
+ * 直接在BaseReport.vue中处理
+ */
+
+// 在BaseReport.vue的script部分添加这个函数
+function splitDWBG8B4DForTabs(reportData) {
+ const result = []
+
+ reportData.forEach(item => {
+ if (item.data.apiID === 'DWBG8B4D') {
+ // 将DWBG8B4D拆分成多个独立的tab
+ const dwbgData = item.data.data
+
+ // 报告概览
+ result.push({
+ data: {
+ apiID: 'DWBG8B4D_Overview',
+ data: {
+ baseInfo: dwbgData.baseInfo,
+ checkSuggest: dwbgData.checkSuggest,
+ fraudScore: dwbgData.fraudScore,
+ creditScore: dwbgData.creditScore,
+ verifyRule: dwbgData.verifyRule,
+ fraudRule: dwbgData.fraudRule,
+ success: dwbgData.success,
+ timestamp: dwbgData.timestamp
+ }
+ }
+ })
+
+ // 规则风险提示
+ result.push({
+ data: {
+ apiID: 'DWBG8B4D_RiskWarningTab',
+ data: {
+ riskWarning: dwbgData.riskWarning,
+ success: dwbgData.success,
+ timestamp: dwbgData.timestamp
+ }
+ }
+ })
+
+ // 要素核查
+ result.push({
+ data: {
+ apiID: 'DWBG8B4D_ElementVerification',
+ data: {
+ sfzeysFlag: dwbgData.elementVerificationDetail?.sfzeysFlag || 0,
+ personCheckDetails: dwbgData.elementVerificationDetail?.personCheckDetails || {},
+ sjsysFlag: dwbgData.elementVerificationDetail?.sjsysFlag || 0,
+ phoneCheckDetails: dwbgData.elementVerificationDetail?.phoneCheckDetails || {},
+ success: dwbgData.success,
+ timestamp: dwbgData.timestamp
+ }
+ }
+ })
+
+ // 运营商核验
+ result.push({
+ data: {
+ apiID: 'DWBG8B4D_Identity',
+ data: {
+ inTime: dwbgData.standLiveInfo?.inTime || '',
+ phoneVailRiskFlag: dwbgData.elementVerificationDetail?.phoneVailRiskFlag || 0,
+ phoneVailRisks: dwbgData.elementVerificationDetail?.phoneVailRisks || {},
+ belongRiskFlag: dwbgData.elementVerificationDetail?.belongRiskFlag || 0,
+ belongRisks: dwbgData.elementVerificationDetail?.belongRisks || {},
+ success: dwbgData.success,
+ timestamp: dwbgData.timestamp
+ }
+ }
+ })
+
+ // 公安重点人员检验
+ result.push({
+ data: {
+ apiID: 'DWBG8B4D_RiskWarning',
+ data: {
+ highRiskFlag: dwbgData.elementVerificationDetail?.highRiskFlag || 0,
+ keyPersonCheckList: dwbgData.elementVerificationDetail?.keyPersonCheckList || {},
+ antiFraudInfo: dwbgData.elementVerificationDetail?.antiFraudInfo || {},
+ success: dwbgData.success,
+ timestamp: dwbgData.timestamp
+ }
+ }
+ })
+
+ // 逾期风险
+ result.push({
+ data: {
+ apiID: 'DWBG8B4D_OverdueRisk',
+ data: {
+ overdueRiskProduct: dwbgData.overdueRiskProduct,
+ success: dwbgData.success,
+ timestamp: dwbgData.timestamp
+ }
+ }
+ })
+
+ // 法院曝光台信息
+ result.push({
+ data: {
+ apiID: 'DWBG8B4D_CourtInfo',
+ data: {
+ multCourtInfo: dwbgData.multCourtInfo,
+ success: dwbgData.success,
+ timestamp: dwbgData.timestamp
+ }
+ }
+ })
+
+ // 借贷评估
+ result.push({
+ data: {
+ apiID: 'DWBG8B4D_LoanEvaluation',
+ data: {
+ loanEvaluationVerificationDetail: dwbgData.loanEvaluationVerificationDetail,
+ success: dwbgData.success,
+ timestamp: dwbgData.timestamp
+ }
+ }
+ })
+
+ // 租赁风险评估
+ result.push({
+ data: {
+ apiID: 'DWBG8B4D_LeasingRisk',
+ data: {
+ leasingRiskAssessment: dwbgData.leasingRiskAssessment,
+ success: dwbgData.success,
+ timestamp: dwbgData.timestamp
+ }
+ }
+ })
+
+ // 关联风险监督
+ result.push({
+ data: {
+ apiID: 'DWBG8B4D_RiskSupervision',
+ data: {
+ riskSupervision: dwbgData.riskSupervision,
+ success: dwbgData.success,
+ timestamp: dwbgData.timestamp
+ }
+ }
+ })
+ } else {
+ // 其他数据直接添加
+ result.push(item)
+ }
+ })
+
+ return result
+}
+
+export { splitDWBG8B4DForTabs }
diff --git a/report-viewer/src/ui/CFLXG0V4B/components/CaseDetail.vue b/report-viewer/src/ui/CFLXG0V4B/components/CaseDetail.vue
new file mode 100644
index 0000000..f1efe42
--- /dev/null
+++ b/report-viewer/src/ui/CFLXG0V4B/components/CaseDetail.vue
@@ -0,0 +1,171 @@
+
+
+
+
+ {{ isSpecialCase ? '执行法院' : '经办法院' }}:
+ {{ caseData.n_jbfy || caseData.zxfy || "—" }}
+
+
+ 所属地域:
+ {{ caseData.c_ssdy || caseData.sf || "—" }}
+
+
+
+ 案件类型:
+ {{ caseData.n_ajlx || "—" }}
+
+
+
+
+ 立案时间:
+ {{ formatDate(caseData.d_larq || caseData.larq) }}
+
+
+
+
+ 立案案由:
+ {{ caseData.n_laay_tree || caseData.n_laay || "暂无" }}
+
+
+
+
+ 当事人信息:
+
+
+ {{ party.n_ssdw || "其他" }}: {{ party.c_mc }};
+
+
+
+
+
+
+
+
+ 企业法人:
+ {{ caseData.qyfr || "—" }}
+
+
+
+
+ 组织机构代码:
+ {{ caseData.zzjgdm || "—" }}
+
+
+
+
+ 执行依据文号:
+ {{ caseData.zxyjwh || "—" }}
+
+
+
+
+ 执行依据单位:
+ {{ caseData.zxyjdw || "—" }}
+
+
+
+
+ 义务内容:
+ {{ caseData.yw || "—" }}
+
+
+
+
+ 履行情况:
+ {{ caseData.lxqk || "—" }}
+
+
+
+
+ 行为情形:
+ {{ caseData.xwqx || "—" }}
+
+
+
+
+ 金额估计:
+ {{ formatLawsuitMoney(caseData.pjje_gj) || "—" }}
+
+
+
+
+
+
+
+ 结案方式:
+ {{ caseData.n_jafs || "暂无" }}
+
+
+
+
+ 结案时间:
+ {{ formatDate(caseData.d_jarq) }}
+
+
+
+
+ 结案案由:
+ {{ caseData.n_jaay_tree || "与立案案由相同" }}
+
+
+
+
+ 相关当事人:
+ {{ caseData.c_gkws_dsr || "暂无" }}
+
+
+
+
+ 判决结果:
+ {{ caseData.c_gkws_pjjg || "暂无" }}
+
+
+
+
+
+ 后续案件:
+
+ {{ caseData.next.c_ah }}
+
+ {{
+ caseData.next.stage_type === 2
+ ? "二审"
+ : caseData.next.stage_type === 3
+ ? "再审"
+ : caseData.next.stage_type === 4
+ ? "申请再审"
+ : caseData.next.stage_type === 5
+ ? "执行"
+ : "其他"
+ }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/report-viewer/src/ui/CFLXG0V4B/components/StatisticsOverview.vue b/report-viewer/src/ui/CFLXG0V4B/components/StatisticsOverview.vue
new file mode 100644
index 0000000..3d8fa47
--- /dev/null
+++ b/report-viewer/src/ui/CFLXG0V4B/components/StatisticsOverview.vue
@@ -0,0 +1,284 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ totalCases }}
+ 起涉诉案件中,
+
+ {{ stats.highRiskItems }}
+
+ 0
+ 起高风险案件
+
+ ,涉及 {{ stats.caseTypes.length }} 种案件类型
+
+
+
+
+
+
+
+
+
+
+
{{ stats.totalRiskItems || 0 }}项
+
风险事项
+
+ 平均{{ stats.totalRiskItems && totalCases > 0 ?
+ (stats.totalRiskItems / totalCases).toFixed(1) :
+ '0.0'
+ }}项/案件
+
+
+
+
+
+
{{ stats.highRiskItems || 0 }}家
+
高风险案件
+
+ 占比{{ totalCases > 0 && stats ?
+ ((stats.highRiskItems /
+ totalCases) * 100).toFixed(1) : '0.0' }}%
+
+
+ 失信{{ stats.sxbzxrCount || 0 }}
+ 限高{{ stats.xgbzxrCount || 0 }}
+
+
+
+
+
+
{{ stats.closedCases || 0 }}家
+
已结案件
+
+ 占比{{ totalCases > 0 && stats ?
+ Math.round((stats.closedCases / totalCases) * 100) :
+ 0
+ }}%
+
+
+
+
+
+
{{ stats.caseTypes.length || 0 }}家
+
案件类型
+
+ 涉及多种类型
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
高风险案件
+
{{ stats.highRiskItems || 0 }}条
+
+
+
+
中风险案件
+
{{ stats.mediumRiskItems || 0 }}条
+
+
+
+
低风险案件
+
{{ stats.lowRiskItems || 0 }}条
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/CFLXG0V4B/index.vue b/report-viewer/src/ui/CFLXG0V4B/index.vue
new file mode 100644
index 0000000..fb61592
--- /dev/null
+++ b/report-viewer/src/ui/CFLXG0V4B/index.vue
@@ -0,0 +1,451 @@
+
+
+
+
+
+
+
+
+
涉诉风险分析
+
+
+
+
+
+
+
+
+
+
+
+
+ 全部风险
+ ({{ caseTypeCounts.all }})
+
+
+
+
+
+
+
+
+ {{ typeInfo.text }}({{ caseTypeCounts[type] || 0 }})
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ caseItem.c_ah || caseItem.ah || '暂无案号' }}
+
+
+
+ {{ getCaseTypeText(caseItem.type) }}
+
+
+
+
+
+ 立案:
+ {{ formatDate(caseItem.d_larq || caseItem.larq) }}
+
+
+
+
+
+
+ {{ getCaseTypeRiskLevel(caseItem.type).text }}
+
+
+
+ {{ caseItem.n_ajjzjd }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/CFLXG0V4B/utils/lawsuitUtils.js b/report-viewer/src/ui/CFLXG0V4B/utils/lawsuitUtils.js
new file mode 100644
index 0000000..f53f0aa
--- /dev/null
+++ b/report-viewer/src/ui/CFLXG0V4B/utils/lawsuitUtils.js
@@ -0,0 +1,292 @@
+// 案件类型映射表
+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', // 低风险
+ },
+}
+
+// 案件类型文本
+export const getCaseTypeText = type => {
+ return lawsuitTypeMap[type]?.text || '其他案件'
+}
+
+// 案件类型颜色
+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 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 // 如果不是标准格式则返回原始字符串
+}
+
+// 格式化金额显示
+export const formatLawsuitMoney = money => {
+ if (!money) return "—";
+
+ const value = parseFloat(money);
+ if (isNaN(value)) return "—";
+
+ // 直接显示原始金额(元)
+ return (
+ value.toLocaleString("zh-CN", {
+ minimumFractionDigits: 0,
+ maximumFractionDigits: 2,
+ }) + " 元"
+ );
+}
+
+// 获取案件状态样式
+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'
+ }
+}
+
+// 获取企业状态对应的样式
+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'
+ }
+}
+
+// 格式化资本金额显示
+export const formatCapital = (capital, currency) => {
+ if (!capital) return '—'
+
+ // 检查是否包含"万"字或需要显示为万元
+ 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 = '万'
+ }
+
+ // 格式化数字,保留两位小数(如果有小数部分)
+ const formattedValue = value.toLocaleString('zh-CN', {
+ minimumFractionDigits: 0,
+ maximumFractionDigits: 2,
+ })
+
+ return `${formattedValue}${unit} ${currency || '人民币'}`
+}
+
+// 获取涉诉风险等级
+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',
+ }
+}
+
+// 获取涉诉案件统计
+export const getLawsuitStats = lawsuitInfo => {
+ if (!lawsuitInfo) return null
+
+ const stats = {
+ total: 0,
+ types: [],
+ }
+
+ // 统计各类型案件数量
+ 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 (count > 0) {
+ stats.total += count
+ stats.types.push({
+ type,
+ count,
+ name: getCaseTypeText(type),
+ color: getCaseTypeColor(type),
+ darkColor: getCaseTypeDarkColor(type),
+ })
+ }
+ })
+
+ return stats
+}
+
+// 获取案件类型优先级顺序
+export const getCaseTypePriority = () => {
+ 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',
+ }
+ }
+
+ 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],
+ }
+}
diff --git a/report-viewer/src/ui/CQCXG9P1C.vue b/report-viewer/src/ui/CQCXG9P1C.vue
new file mode 100644
index 0000000..1d98682
--- /dev/null
+++ b/report-viewer/src/ui/CQCXG9P1C.vue
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+ 共 {{ vehicleCount }} 辆
+
+
+
+
+
+
+
+
+ {{ vehicle.plateNum }}
+
+
+
+ 🏷️
+ {{ getPlateColorText(vehicle.plateColor) }}
+
+
+ 车辆类型:
+ {{ getVehicleTypeText(vehicle.vehicleType)
+ }}
+
+
+
+
+
+
+
+
+
🚫
+
暂无车辆信息
+
No vehicle records found
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/report-viewer/src/ui/CQYGL3F8E/README.md b/report-viewer/src/ui/CQYGL3F8E/README.md
new file mode 100644
index 0000000..88fb581
--- /dev/null
+++ b/report-viewer/src/ui/CQYGL3F8E/README.md
@@ -0,0 +1,238 @@
+# 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**: 新增欠税公告和税收违法模块,完善企业风险分析功能
diff --git a/report-viewer/src/ui/CQYGL3F8E/components/Abnormal.vue b/report-viewer/src/ui/CQYGL3F8E/components/Abnormal.vue
new file mode 100644
index 0000000..4baf4e4
--- /dev/null
+++ b/report-viewer/src/ui/CQYGL3F8E/components/Abnormal.vue
@@ -0,0 +1,273 @@
+
+
+
+
+
+
+
+
经营异常
+
+
+
+
+
+
+
+
+
+
+
{{ group.companyName }}
+
+
+ 异常企业
+ 异常记录: {{
+ group.totalAbnormals }}
+
+
+
+
+
+
+
+
+
+
+
{{ abnormal.putReason || '经营异常' }}
+
+
+
+
+
+
+
+ 已移出
+
+
+ {{ abnormal.removeDepartment }}
+
+
+
+
+
+ {{ abnormal.putDepartment || '—' }}
+
+
+
+
+
+ 列入:
+ {{ formatDate(abnormal.putDate) }}
+
+
+ 移出:
+ {{ formatDate(abnormal.removeDate) }}
+
+
+
+
+
+ 移出部门:
+ {{ abnormal.removeDepartment }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/report-viewer/src/ui/CQYGL3F8E/components/FinancingHistory.vue b/report-viewer/src/ui/CQYGL3F8E/components/FinancingHistory.vue
new file mode 100644
index 0000000..f99eec9
--- /dev/null
+++ b/report-viewer/src/ui/CQYGL3F8E/components/FinancingHistory.vue
@@ -0,0 +1,265 @@
+
+
+
+
+
+
+
+
融资历史
+
+
+
+
+
+
+
+
+
+
+
{{ group.companyName }}
+
+
+ 融资企业
+ 融资轮次: {{
+ group.totalFinancings }}
+
+
+
+
+
+
+
+
+
+
+
{{ financing.companyName }}
+
+ {{ financing.round }}
+
+
+
+
+
+
+
+ 投资方:
+ {{ financing.investorName || '—' }}
+
+
+
+
+ 披露:
+ {{ formatDate(financing.pubTime) }}
+
+
+
+
+ 融资金额:
+ {{ financing.money || '—' }}
+
+
+
+
+
+
+ 估值: {{ financing.value }}
+
+
+
+
+ 股权: {{ financing.share }}
+
+
+
+
+ 有新闻
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/report-viewer/src/ui/CQYGL3F8E/components/InvestHistory.vue b/report-viewer/src/ui/CQYGL3F8E/components/InvestHistory.vue
new file mode 100644
index 0000000..830c1ad
--- /dev/null
+++ b/report-viewer/src/ui/CQYGL3F8E/components/InvestHistory.vue
@@ -0,0 +1,337 @@
+
+
+
+
+
+
+
+
对外投资历史
+
+
+
+
+
+
+
+
+
+
+
{{ group.investorCompany }}
+
+
+ 投资企业
+ 投资项目: {{
+ group.totalInvestments }}
+
+
+
+
+
+
+
+
+
+
+
{{ investment.name }}
+
+ {{ investment.regStatus }}
+
+
+
+
+
+
+
+ {{ getPersonTypeText(investment.personType) }}法人
+
+ 成立: {{ formatDate(investment.estiblishTime) }}
+
+
+ 注册资本: {{ formatCapital(investment.regCapital) }}
+
+
+ 持股比例:
+ {{ investment.percent || '—' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/report-viewer/src/ui/CQYGL3F8E/components/Investment.vue b/report-viewer/src/ui/CQYGL3F8E/components/Investment.vue
new file mode 100644
index 0000000..19cd296
--- /dev/null
+++ b/report-viewer/src/ui/CQYGL3F8E/components/Investment.vue
@@ -0,0 +1,335 @@
+
+
+
+
+
+
+
+
+
{{ company.orgName }}
+
+
+
+
+
+
+ {{ getRelationshipText(relation) }}
+
+
+
+
+
+
+
+
+ {{ company.basicInfo.regStatus }}
+
+
+ {{ formatCapital(company.basicInfo.regCapital, company.basicInfo.regCapitalCurrency) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/CQYGL3F8E/components/Lawsuit.vue b/report-viewer/src/ui/CQYGL3F8E/components/Lawsuit.vue
new file mode 100644
index 0000000..ca85693
--- /dev/null
+++ b/report-viewer/src/ui/CQYGL3F8E/components/Lawsuit.vue
@@ -0,0 +1,1705 @@
+
+
+
+
+
+
+
+
+
涉诉风险整体概览
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ totalCompanies }}
+ 家关联企业中,
+ {{ allLawsuitStats.totalCompanies }}
+ 0
+ 家存在涉诉风险
+
+ (高风险: {{ allLawsuitStats.highRiskCompanies }} 家)
+
+
+ ,共 {{ allLawsuitStats.totalRiskItems }} 个风险事项
+
+
+
+
+
+
+
+
+
+
+
+
{{ allLawsuitStats?.totalRiskItems ||
+ 0 }}
+
+
+
风险事项
+
+ 平均{{ allLawsuitStats && allLawsuitStats.totalCompanies > 0 ?
+ (allLawsuitStats.totalRiskItems / allLawsuitStats.totalCompanies).toFixed(1) :
+ '0.0'
+ }}项/企业
+
+
+
+
+
+
+
+
+
{{ allLawsuitStats?.totalCompanies
+ || 0
+ }}
+
+
风险企业
+
+ 占比关联企业{{ totalCompanies > 0 && allLawsuitStats ?
+ ((allLawsuitStats.totalCompanies /
+ totalCompanies) * 100).toFixed(1) : '0.0' }}%
+
+
+ 高风险: {{ allLawsuitStats?.highRiskCompanies ||
+ 0
+ }}
+ 中风险: {{
+ allLawsuitStats?.mediumRiskCompanies ||
+ 0 }}
+
+
+
+
+
+
+
+
+
{{
+ allLawsuitStats?.normalOperatingCompanies || 0 }}
+
+
正常经营企业
+
+ 占比{{ totalCompanies > 0 && allLawsuitStats ?
+ Math.round((allLawsuitStats.normalOperatingCompanies / totalCompanies) * 100) :
+ 0
+ }}%
+
+
+
+
+
+
+
+
+
{{ allLawsuitStats?.canceledCompanies
+ ||
+ 0 }}
+
+
吊销注销企业
+
+ 占比{{ totalCompanies > 0 && allLawsuitStats ?
+ Math.round((allLawsuitStats.canceledCompanies / totalCompanies) * 100) : 0 }}%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
高风险
+
{{
+ allLawsuitStats?.highRiskCompanies || 0 }}
+
+
+
+
中风险
+
{{
+ allLawsuitStats?.mediumRiskCompanies || 0 }}
+
+
+
+
低风险
+
{{
+ allLawsuitStats?.lowRiskCompanies || 0 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 全部风险
+ ({{ caseTypeCompanyCounts.all }})
+
+
+
+
+
+
+
+
+ {{ typeInfo.text }}({{ caseTypeCompanyCounts[type] || 0 }})
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ company.orgName }}
+
+
+
+
+
+ 案件:
+ {{ getLawsuitStats(company).total
+ ||
+ 0
+ }}
+
+
+
+ {{ company.basicInfo.regStatus }}
+
+
+
+
+
+
+
+
+
+
+ {{ caseType.text }}
+
+
+ +{{ getCompanyCaseTypes(company).length - 3 }}
+
+
+
+ 无涉诉信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/CQYGL3F8E/components/Punishment.vue b/report-viewer/src/ui/CQYGL3F8E/components/Punishment.vue
new file mode 100644
index 0000000..312cd6d
--- /dev/null
+++ b/report-viewer/src/ui/CQYGL3F8E/components/Punishment.vue
@@ -0,0 +1,289 @@
+
+
+
+
+
+
+
+
行政处罚
+
+
+
+
+
+
+
+
+
+
+
{{ group.companyName }}
+
+
+ 被处罚企业
+ 处罚记录: {{
+ group.totalPunishments }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ punishment.punishName || punishment.punishNumber || '行政处罚决定' }}
+
+
+ {{ punishment.type }}
+
+
+
+
+
+
+
+ 处罚单位:
+ {{ punishment.departmentName || '—' }}
+
+
+
+
+ 决定日期:
+ {{ formatDate(punishment.decisionDate) }}
+
+
+
+
+ 处罚金额:
+ {{ formatPecuniary(punishment.pecuniary) }}
+
+
+
+
+
+
+ {{ punishment.reason }}
+
+
+
+
+ {{ punishment.punishStatus }}
+
+
+
+
+ 法人: {{ punishment.legalPersonName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/report-viewer/src/ui/CQYGL3F8E/components/SeniorExecutive.vue b/report-viewer/src/ui/CQYGL3F8E/components/SeniorExecutive.vue
new file mode 100644
index 0000000..28660d1
--- /dev/null
+++ b/report-viewer/src/ui/CQYGL3F8E/components/SeniorExecutive.vue
@@ -0,0 +1,307 @@
+
+
+
+
+
+
+
+
+
+
{{ company.orgName }}
+
+
+
+
+
+
+ {{ getRelationshipText(relation) }}
+
+
+
+
+
+
+
+
+ {{ company.basicInfo.regStatus }}
+
+
+ {{ formatCapital(company.basicInfo.regCapital, company.basicInfo.regCapitalCurrency) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/CQYGL3F8E/components/TaxRisk/OwnTax.vue b/report-viewer/src/ui/CQYGL3F8E/components/TaxRisk/OwnTax.vue
new file mode 100644
index 0000000..746d380
--- /dev/null
+++ b/report-viewer/src/ui/CQYGL3F8E/components/TaxRisk/OwnTax.vue
@@ -0,0 +1,265 @@
+
+
+
+
+
+
+
+
欠税公告
+
+
+
+
+
+
+
+
+
+
+
{{ group.companyName }}
+
+
+ 欠税企业
+ 欠税记录: {{
+ group.totalOwnTax }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ tax.type }}
+
+ {{ tax.taxCategory || '企业所得税' }}
+
+
+
+
+
+
+
+ 纳税人:
+ {{ tax.name || '—' }}
+
+
+
+
+ 发布:
+ {{ formatDate(tax.publishDate) }}
+
+
+
+
+ 欠税金额:
+ {{ tax.ownTaxAmount || '—' }}
+
+
+
+
+
+ 识别号: {{ tax.taxIdNumber || '—' }}
+
+
+ 纳税人类型: {{ tax.taxpayerType || '—' }}
+
+
+ 法人: {{ tax.legalpersonName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/CQYGL3F8E/components/TaxRisk/TaxContravention.vue b/report-viewer/src/ui/CQYGL3F8E/components/TaxRisk/TaxContravention.vue
new file mode 100644
index 0000000..05ad3dd
--- /dev/null
+++ b/report-viewer/src/ui/CQYGL3F8E/components/TaxRisk/TaxContravention.vue
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+
+
税收违法
+
+
+
+
+
+
+
+
+
+
+
{{ group.companyName }}
+
+
+ 违法企业
+ 违法记录: {{
+ group.totalContraventions }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ contravention.case_type }}
+
+ {{ contravention.taxpayer_name || group.companyName }}
+
+
+
+
+
+
+
+
+
+ 违法ID:
+ {{ contravention.id || '—' }}
+
+
+ 发布:
+ {{ formatDate(contravention.publish_time) }}
+
+
+
+
+
+ 案件编号:
+ #{{ contravention.id || '—' }}
+
+
+
+
+
+ 税务机关: {{ contravention.department }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/CQYGL3F8E/components/TaxRisk/index.vue b/report-viewer/src/ui/CQYGL3F8E/components/TaxRisk/index.vue
new file mode 100644
index 0000000..9e6dfed
--- /dev/null
+++ b/report-viewer/src/ui/CQYGL3F8E/components/TaxRisk/index.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
+
+
税务风险
+
+
+
+
+
+
+
+
+
{{ ownTaxStats.companyCount }}家
+
涉及企业
+
+
+
{{ ownTaxStats.recordCount }}条
+
欠税记录
+
+
+
{{ ownTaxStats.totalAmount }}
+
欠税总额
+
+
+
+
+
+
+
+
+
+
{{ taxContraventionStats.companyCount
+ }}家
+
涉及企业
+
+
+
{{ taxContraventionStats.recordCount
+ }}条
+
违法记录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/CQYGL3F8E/index.vue b/report-viewer/src/ui/CQYGL3F8E/index.vue
new file mode 100644
index 0000000..62e45de
--- /dev/null
+++ b/report-viewer/src/ui/CQYGL3F8E/index.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/CQYGL3F8E/utils/simpleSplitter.js b/report-viewer/src/ui/CQYGL3F8E/utils/simpleSplitter.js
new file mode 100644
index 0000000..94e89da
--- /dev/null
+++ b/report-viewer/src/ui/CQYGL3F8E/utils/simpleSplitter.js
@@ -0,0 +1,302 @@
+/**
+ * CQYGL3F8E企业关联数据拆分工具
+ * 将企业关联数据拆分为投资企业记录、高管任职记录和涉诉风险三个独立模块
+ */
+
+/**
+ * 拆分CQYGL3F8E数据为多个独立的tab模块
+ * @param {Array} reportData - 报告数据数组
+ * @returns {Array} 拆分后的数据数组
+ */
+export function splitCQYGL3F8EForTabs(reportData) {
+ const result = []
+
+ reportData.forEach(item => {
+ if (item.data?.apiID === 'QYGL3F8E') {
+ // 将QYGL3F8E拆分成多个独立的tab
+ const qyglData = item.data.data
+ const baseTimestamp = item.data.timestamp
+
+ // 投资类关系
+ const investRelations = ["sh", "his_sh", "lp", "his_lp"]
+
+ // 高管类关系
+ const managerRelations = ["tm", "his_tm"]
+
+ // 获取投资企业记录(股东、历史股东、法人、历史法人)
+ const investCompanies = (qyglData?.items || []).filter((item) => {
+ const relationships = item?.relationship || []
+ return relationships.some((r) => investRelations.includes(r))
+ })
+
+ // 获取高管任职记录(高管、历史高管)
+ const managerPositions = (qyglData?.items || []).filter((item) => {
+ const relationships = item?.relationship || []
+ return relationships.some((r) => managerRelations.includes(r))
+ })
+
+ // 获取有涉诉风险的企业
+ const lawsuitCompanies = (qyglData?.items || []).filter((item) => {
+ const lawsuit = item?.lawsuitInfo || {}
+ return (
+ (lawsuit.entout && lawsuit.entout.data && Object.keys(lawsuit.entout.data).length > 0) ||
+ (lawsuit.sxbzxr && lawsuit.sxbzxr.data && lawsuit.sxbzxr.data.sxbzxr && lawsuit.sxbzxr.data.sxbzxr.length > 0) ||
+ (lawsuit.xgbzxr && lawsuit.xgbzxr.data && lawsuit.xgbzxr.data.xgbzxr && lawsuit.xgbzxr.data.xgbzxr.length > 0)
+ )
+ })
+
+ // 1. 投资企业记录模块
+ result.push({
+ data: {
+ apiID: 'CQYGL3F8E_Investment',
+ data: investCompanies,
+ success: true,
+ timestamp: baseTimestamp
+ }
+ })
+
+ // 2. 高管任职记录模块
+ result.push({
+ data: {
+ apiID: 'CQYGL3F8E_SeniorExecutive',
+ data: managerPositions,
+ success: true,
+ timestamp: baseTimestamp
+ }
+ })
+ // 3. 涉诉风险模块
+ result.push({
+ data: {
+ apiID: 'CQYGL3F8E_Lawsuit',
+ data: {
+ lawsuitCompanies: lawsuitCompanies,
+ totalCompanies: qyglData?.items?.length || 0
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ })
+ // 4. 对外投资历史模块 - 从所有企业中收集投资历史
+ const allInvestHistory = []
+ qyglData?.items?.forEach(company => {
+ if (company.invest_history?.items) {
+ company.invest_history.items.forEach(investment => {
+ allInvestHistory.push({
+ ...investment,
+ companyName: company.orgName, // 添加企业名称
+ companyInfo: {
+ orgName: company.orgName,
+ relationship: company.relationship,
+ basicInfo: company.basicInfo
+ }
+ })
+ })
+ }
+ })
+ result.push({
+ data: {
+ apiID: 'CQYGL3F8E_InvestHistory',
+ data: { items: allInvestHistory, total: allInvestHistory.length },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ })
+
+ // 5. 融资历史模块 - 从所有企业中收集融资历史
+ const allFinancingHistory = []
+ qyglData?.items?.forEach(company => {
+ if (company.financing_history?.items) {
+ company.financing_history.items.forEach(financing => {
+ allFinancingHistory.push({
+ ...financing,
+ companyName: company.orgName, // 添加企业名称
+ companyInfo: {
+ orgName: company.orgName,
+ relationship: company.relationship,
+ basicInfo: company.basicInfo
+ }
+ })
+ })
+ }
+ })
+ result.push({
+ data: {
+ apiID: 'CQYGL3F8E_FinancingHistory',
+ data: { items: allFinancingHistory, total: allFinancingHistory.length },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ })
+
+ // 6. 行政处罚模块 - 从所有企业中收集行政处罚
+ const allPunishmentInfo = []
+ qyglData?.items?.forEach(company => {
+ if (company.punishment_info?.items) {
+ company.punishment_info.items.forEach(punishment => {
+ allPunishmentInfo.push({
+ ...punishment,
+ companyName: company.orgName, // 添加企业名称
+ companyInfo: {
+ orgName: company.orgName,
+ relationship: company.relationship,
+ basicInfo: company.basicInfo
+ }
+ })
+ })
+ }
+ })
+ result.push({
+ data: {
+ apiID: 'CQYGL3F8E_Punishment',
+ data: { items: allPunishmentInfo, total: allPunishmentInfo.length },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ })
+
+ // 7. 经营异常模块 - 从所有企业中收集经营异常
+ const allAbnormalInfo = []
+ qyglData?.items?.forEach(company => {
+ if (company.abnormal_info?.items) {
+ company.abnormal_info.items.forEach(abnormal => {
+ allAbnormalInfo.push({
+ ...abnormal,
+ companyName: company.orgName, // 添加企业名称
+ companyInfo: {
+ orgName: company.orgName,
+ relationship: company.relationship,
+ basicInfo: company.basicInfo
+ }
+ })
+ })
+ }
+ })
+ result.push({
+ data: {
+ apiID: 'CQYGL3F8E_Abnormal',
+ data: { items: allAbnormalInfo, total: allAbnormalInfo.length },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ })
+
+ // 8. 税务风险模块 - 包含欠税公告和税收违法
+ const taxRiskCompanies = (qyglData?.items || []).filter((item) => {
+ const ownTax = item?.own_tax || {};
+ const taxContravention = item?.tax_contravention || {};
+ return (ownTax.total > 0 && ownTax.items && ownTax.items.length > 0) ||
+ (taxContravention.total > 0 && taxContravention.items && taxContravention.items.length > 0);
+ });
+
+ result.push({
+ data: {
+ apiID: 'CQYGL3F8E_TaxRisk',
+ data: { items: taxRiskCompanies },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ })
+
+ } else {
+ // 其他数据直接添加
+ result.push(item)
+ }
+ })
+
+ return result
+}
+
+/**
+ * 获取关系文本描述
+ * @param {string} relation - 关系代码
+ * @returns {string} 关系文本
+ */
+export function getRelationshipText(relation) {
+ const relationshipMap = {
+ sh: '股东',
+ his_sh: '曾任股东',
+ lp: '法人',
+ his_lp: '曾任法人',
+ tm: '高管',
+ his_tm: '曾任高管'
+ }
+ return relationshipMap[relation] || relation
+}
+
+/**
+ * 获取关系样式类
+ * @param {string} relation - 关系代码
+ * @returns {string} 样式类名
+ */
+export function getRelationshipClass(relation) {
+ const relationshipMap = {
+ sh: 'bg-blue-100 text-blue-700',
+ his_sh: 'bg-blue-50 text-blue-600',
+ lp: 'bg-green-100 text-green-700',
+ his_lp: 'bg-green-50 text-green-600',
+ tm: 'bg-purple-100 text-purple-700',
+ his_tm: 'bg-purple-50 text-purple-600'
+ }
+ return relationshipMap[relation] || 'bg-gray-100 text-gray-600'
+}
+
+/**
+ * 获取企业状态对应的样式类
+ * @param {string} status - 企业状态
+ * @returns {string} 样式类名
+ */
+export function 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'
+ }
+}
+
+/**
+ * 格式化资本金额显示
+ * @param {string|number} capital - 资本金额
+ * @param {string} currency - 货币类型
+ * @returns {string} 格式化后的金额
+ */
+export function formatCapital(capital, currency) {
+ if (!capital) return '—'
+
+ 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 = '万'
+ }
+
+ // 格式化数字,保留两位小数(如果有小数部分)
+ const formattedValue = value.toLocaleString('zh-CN', {
+ minimumFractionDigits: 0,
+ maximumFractionDigits: 2,
+ })
+
+ return `${formattedValue}${unit} ${currency || '人民币'}`
+}
+
+/**
+ * 格式化日期显示
+ * @param {string} dateStr - 日期字符串
+ * @returns {string} 格式化后的日期
+ */
+export function formatDate(dateStr) {
+ if (!dateStr) return '—'
+ return dateStr
+}
diff --git a/report-viewer/src/ui/DWBG6A2C/README.md b/report-viewer/src/ui/DWBG6A2C/README.md
new file mode 100644
index 0000000..036c5dc
--- /dev/null
+++ b/report-viewer/src/ui/DWBG6A2C/README.md
@@ -0,0 +1,178 @@
+# 司南报告组件 (DWBG6A2C) - 模块化架构
+
+## 概述
+
+司南报告组件采用模块化架构设计,将完整的司南报告拆分成13个独立的模块,每个模块都可以作为独立的tab显示,具有独立的大标题。
+
+## 数据结构
+
+司南报告的数据结构如下:
+
+```javascript
+{
+ "apiID": "DWBG6A2C",
+ "data": {
+ "baseInfo": {}, // 基本信息
+ "standLiveInfo": {}, // 身份信息核验
+ "riskPoint": {}, // 命中风险标注
+ "securityInfo": {}, // 公安重点人员核验
+ "antiFraudInfo": {}, // 涉赌涉诈人员核验
+ "riskList": {}, // 风险名单
+ "applicationStatistics": {}, // 历史借贷行为
+ "lendingStatistics": {}, // 近24个月放款情况
+ "performanceStatistics": {}, // 履约情况
+ "overdueRecord": {}, // 历史逾期记录
+ "creditDetail": {}, // 授信详情
+ "rentalBehavior": {}, // 租赁行为
+ "riskSupervision": {}, // 关联风险监督
+ "judiciaRiskInfos": [] // 法院风险信息
+ },
+ "success": true,
+ "timestamp": "2025-01-20 21:19:58"
+}
+```
+
+## 模块拆分
+
+司南报告被拆分成以下14个独立模块:
+
+| API ID | 模块名称 | 包含数据 | 组件文件 |
+|--------|----------|----------|----------|
+| `DWBG6A2C_BaseInfo` | 基本信息 | baseInfo | BaseInfoSection.vue |
+| `DWBG6A2C_StandLiveInfo` | 身份信息核验 | standLiveInfo | StandLiveInfoSection.vue |
+| `DWBG6A2C_RiskPoint` | 命中风险标注 | riskPoint | RiskPointSection.vue |
+| `DWBG6A2C_SecurityInfo` | 公安重点人员核验 | securityInfo | SecurityInfoSection.vue |
+| `DWBG6A2C_AntiFraudInfo` | 涉赌涉诈人员核验 | antiFraudInfo | AntiFraudInfoSection.vue |
+| `DWBG6A2C_RiskList` | 风险名单 | riskList | RiskListSection.vue |
+| `DWBG6A2C_ApplicationStatistics` | 历史借贷行为 | applicationStatistics | ApplicationStatisticsSection.vue |
+| `DWBG6A2C_LendingStatistics` | 近24个月放款情况 | lendingStatistics | LendingStatisticsSection.vue |
+| `DWBG6A2C_PerformanceStatistics` | 履约情况 | performanceStatistics | PerformanceStatisticsSection.vue |
+| `DWBG6A2C_OverdueRecord` | 历史逾期记录 | overdueRecord | OverdueRecordSection.vue |
+| `DWBG6A2C_CreditDetail` | 授信详情 | creditDetail | CreditDetailSection.vue |
+| `DWBG6A2C_RentalBehavior` | 租赁行为 | rentalBehavior | RentalBehaviorSection.vue |
+| `DWBG6A2C_RiskSupervision` | 关联风险监督 | riskSupervision | RiskSupervisionSection.vue |
+| `DWBG6A2C_CourtRiskInfo` | 法院风险信息 | judiciaRiskInfos | CourtRiskInfoSection.vue |
+
+## 使用方法
+
+### 1. 前端自动拆分
+
+BaseReport.vue 已自动配置支持司南报告的模块化显示:
+
+```javascript
+import { splitDWBG6A2CForTabs } from '@/ui/DWBG6A2C/utils/simpleSplitter.js';
+
+// 处理数据拆分(支持DWBG8B4D和DWBG6A2C)
+const processedReportData = computed(() => {
+ let data = reportData.value;
+
+ // 拆分DWBG8B4D数据
+ data = splitDWBG8B4DForTabs(data);
+
+ // 拆分DWBG6A2C数据
+ data = splitDWBG6A2CForTabs(data);
+
+ return data;
+});
+```
+
+### 2. 组件配置
+
+BaseReport.vue 中已配置所有司南报告模块:
+
+```javascript
+// 司南报告
+DWBG6A2C: {
+ name: "司南报告",
+ component: defineAsyncComponent(() => import("@/ui/DWBG6A2C/index.vue")),
+ remark: '司南报告提供全面的个人信用风险评估,包括身份核验、风险名单、借贷行为、履约情况等多维度分析。'
+},
+// ... 其他模块配置
+```
+
+## 组件结构
+
+```
+src/ui/DWBG6A2C/
+├── index.vue # 原始完整组件(保留)
+├── README.md # 文档说明
+├── components/ # 子组件目录
+│ ├── BaseInfoSection.vue # 基本信息
+│ ├── StandLiveInfoSection.vue # 身份信息核验
+│ ├── RiskPointSection.vue # 命中风险标注
+│ ├── SecurityInfoSection.vue # 公安重点人员核验
+│ ├── AntiFraudInfoSection.vue # 涉赌涉诈人员核验
+│ ├── RiskListSection.vue # 风险名单
+│ ├── ApplicationStatisticsSection.vue # 历史借贷行为
+│ ├── LendingStatisticsSection.vue # 近24个月放款情况
+│ ├── PerformanceStatisticsSection.vue # 履约情况
+│ ├── OverdueRecordSection.vue # 历史逾期记录
+│ ├── CreditDetailSection.vue # 授信详情
+│ ├── RentalBehaviorSection.vue # 租赁行为
+│ ├── RiskSupervisionSection.vue # 关联风险监督
+│ └── CourtRiskInfoSection.vue # 法院风险信息
+└── utils/
+ └── simpleSplitter.js # 数据拆分工具
+```
+
+## 特色功能
+
+### 1. 智能风险评估
+- 多维度风险标注
+- 智能颜色编码
+- 风险等级自动判断
+
+### 2. 数据可视化
+- 渐变色彩设计
+- 图标化展示
+- 响应式布局
+
+### 3. 用户友好
+- 清晰的层次结构
+- 详细的说明文档
+- 直观的风险提示
+
+### 4. 模块化设计
+- 独立的模块组件
+- 可复用的工具函数
+- 灵活的数据拆分
+
+## 工具函数
+
+`utils/simpleSplitter.js` 提供了以下工具函数:
+
+- `splitDWBG6A2CForTabs()` - 数据拆分
+- `formatRiskLevel()` - 格式化风险等级
+- `formatPhoneStatus()` - 格式化手机号状态
+- `formatVerificationResult()` - 格式化身份核验结果
+- `formatInTime()` - 格式化在网时长
+- `hasRiskData()` - 检查是否有风险数据
+
+## 使用示例
+
+```javascript
+// 在页面中使用
+
+```
+
+## 注意事项
+
+1. 确保数据格式符合司南报告的标准结构
+2. 所有模块都支持数据为空的情况
+3. 风险评估基于实际数据动态计算
+4. 组件采用 Tailwind CSS 进行样式设计
+5. 支持移动端响应式布局
+
+## 更新日志
+
+- v1.0.0: 初始版本,支持完整的司南报告模块化显示
+- 包含13个独立模块
+- 支持自动数据拆分
+- 提供完整的风险评估功能
diff --git a/report-viewer/src/ui/DWBG6A2C/components/AntiFraudInfoSection.vue b/report-viewer/src/ui/DWBG6A2C/components/AntiFraudInfoSection.vue
new file mode 100644
index 0000000..914c775
--- /dev/null
+++ b/report-viewer/src/ui/DWBG6A2C/components/AntiFraudInfoSection.vue
@@ -0,0 +1,527 @@
+
+
+
+
+
+
+
+
涉赌涉诈人员核验
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ overallRiskLevel.level }}
+
+
风险等级
+
+
+
+ {{ riskItemCount }}
+
+
风险项数量
+
+
+
+
+
+
+
+
+
+
+
+ {{ getRiskLevelText(item.riskLevel) }}
+
+
+
+
+
+
+
+
+
+
{{ getItemRiskDescription(key, item.riskLevel) }}
+
+
+
+
+
+
+
+
+
+
+
+
+ 📊
+ 综合风险评分
+
+
+ {{ antiFraudInfo.riskScore }}
+
+
+
+
+
+
+
+
+
+
+
高风险警告
+
+
+ 检测到涉赌涉诈高风险,建议立即停止相关业务并进行详细调查。
+
+
+
+
+
+
+
+
+
+
涉赌涉诈核验通过
+
+
+ 未检测到涉赌涉诈风险,各项指标正常。
+
+
+
+
+
+
+
+
+
+
风险等级说明
+
+
+
0: 无风险
+
A: 较低风险 - 近三个月有参与疑似涉赌涉诈中风险交易
+
B: 低风险 - 近三个月有参与疑似涉赌涉诈高风险交易,近期未参与
+
C: 中风险 - 近三个月有与赌博庄家、欺诈收款关联交易
+
D: 高风险 - 近三个月有被交易处罚,涉赌、涉诈等高危风险交易
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/DWBG6A2C/components/ApplicationStatisticsSection.vue b/report-viewer/src/ui/DWBG6A2C/components/ApplicationStatisticsSection.vue
new file mode 100644
index 0000000..08fe280
--- /dev/null
+++ b/report-viewer/src/ui/DWBG6A2C/components/ApplicationStatisticsSection.vue
@@ -0,0 +1,398 @@
+
+
+
+
+
+
+
+
+
历史借贷行为
+
+
+
+
+
+
+
+
+ {{ applicationStatistics?.totalApplicationCount || 0 }}
+
+
总申请机构数
+
+
+
+ {{ formatDaysSinceLastApplication }}
+
+
距最近申请
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 近1个月申请机构数
+
+ {{ applicationStatistics?.applicationCountLastMonth || 0 }}家
+
+
+
+ 近3个月申请机构数
+
+ {{ applicationStatistics?.applicationCountLast3Months || 0 }}家
+
+
+
+ 近6个月申请机构数
+
+ {{ applicationStatistics?.applicationCountLast6Months || 0 }}家
+
+
+
+ 近12个月申请机构数
+
+ {{ applicationStatistics?.applicationCountLast12Months || 0 }}家
+
+
+
+
+
+
+
+
+
近期申请时间
+
+ 最后一次申请时间
+
+ {{ applicationStatistics?.lastApplicationDate || '-' }}
+
+
+
+ 距离最近一次申请
+
+ {{ formatDaysSinceLastApplication }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/DWBG6A2C/components/BaseInfoSection.vue b/report-viewer/src/ui/DWBG6A2C/components/BaseInfoSection.vue
new file mode 100644
index 0000000..7edbf10
--- /dev/null
+++ b/report-viewer/src/ui/DWBG6A2C/components/BaseInfoSection.vue
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
+
+
+ 个人信息
+
+
+
+ 姓名
+ {{ baseInfo?.name || '-' }}
+
+
+ 性别
+ {{ baseInfo?.sex || '-' }}
+
+
+ 年龄
+ {{ baseInfo?.age ? baseInfo.age + '岁' : '-' }}
+
+
+ 身份证号
+ {{ baseInfo?.idCard || '-' }}
+
+
+ 手机号码
+ {{ baseInfo?.phone || '-' }}
+
+
+
+
+
+
+
+
+ 地域信息
+
+
+
+ 户籍所在地
+ {{ baseInfo?.location || '-' }}
+
+
+ 号码归属地
+ {{ baseInfo?.phoneArea || '-' }}
+
+
+ 手机运营商
+ {{ baseInfo?.channel || '-' }}
+
+
+
+
+
+
+
+
+ 号码状态
+
+
+
手机号状态
+
+ {{ phoneStatusInfo.icon }}
+
+ {{ phoneStatusInfo.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/DWBG6A2C/components/CourtRiskInfoSection.vue b/report-viewer/src/ui/DWBG6A2C/components/CourtRiskInfoSection.vue
new file mode 100644
index 0000000..4c94553
--- /dev/null
+++ b/report-viewer/src/ui/DWBG6A2C/components/CourtRiskInfoSection.vue
@@ -0,0 +1,591 @@
+
+
+
+
+
+
+
+
+
+ 法院风险概览
+
+
+
+
+ {{ courtRiskInfos?.length || 0 }}
+
+
法院案件数
+
+
+
+ {{ courtRiskInfos?.length > 0 ? '有风险' : '无风险' }}
+
+
风险状态
+
+
+
+
+
+
+
+
+
+
+
+
+
案件类型分布
+
+
+
+
+
+
+
+
+
+
+ {{ typeInfo.count }}
+
+
{{ getCaseTypeShortName(type) }}
+
+ {{ typeInfo.count > 0 ? '有风险' : '无风险' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ getCaseTypeName(caseType) }}
+
+ {{ cases.length }}件
+
+
+
+
+
+
+
+
+
+
+
+ 案件类型:
+ {{ caseItem.caseType || '-' }}
+
+
+ 审理法院:
+ {{ caseItem.court || '-' }}
+
+
+ 诉讼地位:
+ {{ caseItem.litigantType || '-' }}
+
+
+ 立案时间:
+ {{ caseItem.filingTime || '-' }}
+
+
+ 结案时间:
+ {{ caseItem.disposalTime || '-' }}
+
+
+ 案件状态:
+
+ {{ caseItem.caseStatus || '-' }}
+
+
+
+ 执行金额:
+ {{ caseItem.executionAmount }}
+
+
+ 已还款金额:
+ {{ caseItem.repaidAmount }}
+
+
+ 案由:
+ {{ caseItem.caseReason || '-' }}
+
+
+ 结案方式:
+ {{ caseItem.disposalMethod || '-' }}
+
+
+ 判决结果:
+ {{ caseItem.judgmentResult || '-' }}
+
+
+ 案件分类:
+ {{ caseItem.type || '-' }}
+
+
+
+
+
+
+ 身份匹配度
+
+ {{ (caseItem.matchScore * 100).toFixed(1) }}%
+
+
+
+
+
+
+
+
案件摘要:
+
+
+ {{ formatContentSummary(caseItem.contentSummary) }}
+
+
+
+
+
+
+
公告编号:
+
+
+ {{ caseItem.executionAnnouncementId }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
法院风险警告
+
+ 检测到法院相关案件记录,存在司法风险,建议立即停止相关业务并进行详细核实。
+
+
+ 涉及案件类型:
+ {{ getCaseTypesList.join('、') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
法院风险核验通过
+
+ 未检测到法院相关案件记录,司法风险较低。
+
+
+
+
+
+
+
+
案件类型说明
+
+
民事案件: 涉及财产、合同等民事纠纷
+
刑事案件: 涉及刑法规定的犯罪行为
+
行政案件: 涉及行政管理相关纠纷
+
执行案件: 强制执行相关案件
+
非诉保全审查案件: 财产保全等非诉讼案件
+
强制清算与破产案件: 企业清算破产相关案件
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/report-viewer/src/ui/DWBG6A2C/components/CreditDetailSection.vue b/report-viewer/src/ui/DWBG6A2C/components/CreditDetailSection.vue
new file mode 100644
index 0000000..a609125
--- /dev/null
+++ b/report-viewer/src/ui/DWBG6A2C/components/CreditDetailSection.vue
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+
+
+
授信详情
+
+
+
+
+
+
+
+
+ {{ hasAnyCredit ? '有授信记录' : '无授信记录' }}
+
+
授信状态
+
+
+
+
+
+
+
+
+
+
+ {{ creditDetail.maxOnlineLoanCredit }}
+
+
最大授信额度
+
+
+
+ {{ creditDetail.avgOnlineLoanCredit }}
+
+
平均授信额度
+
+
+
+
+
+
+
+
+
+
+ {{ creditDetail.maxConsumptionInstallmentCredit }}
+
+
最大授信额度
+
+
+
+ {{ creditDetail.avgConsumptionInstallmentCredit }}
+
+
平均授信额度
+
+
+
+
+
+
+
+
+
+
+ {{ getMaxCreditLevel }}
+
+
最高授信等级
+
+
+
+ {{ getCreditTypeCount }}
+
+
授信产品类型
+
+
+
+
+
+
+
+
+
+
+
+
+
高额授信风险提示
+
+ 检测到较高的授信额度,可能存在过度授信风险,需关注实际使用情况和还款能力。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
暂无授信记录
+
+ 未检测到授信详情信息,可能是新用户或未使用相关金融产品。
+
+
+
+
+
+
+
+
+
+
+
+ 网络贷款类
+ 包括各类线上信贷产品的授信额度
+
+
+ 消费分期类
+ 包括各类消费分期产品的授信额度
+
+
+ 最大授信额度
+ 该类产品中的最高授信额度
+
+
+ 平均授信额度
+ 该类产品的平均授信额度
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/DWBG6A2C/components/LendingStatisticsSection.vue b/report-viewer/src/ui/DWBG6A2C/components/LendingStatisticsSection.vue
new file mode 100644
index 0000000..700e948
--- /dev/null
+++ b/report-viewer/src/ui/DWBG6A2C/components/LendingStatisticsSection.vue
@@ -0,0 +1,567 @@
+
+
+
+
+
+
+
+
+
近24个月放款情况
+
+
+
+
+
+
+
+
+ {{ lendingStatistics?.totalLendingInstitutionCount || 0 }}
+
+
放贷机构总数
+
+
+
+ {{ getTotalLendingStatus }}
+
+
放款状态
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 近1个月放贷次数
+
+ {{ lendingStatistics?.lendingCountLastMonth || 0 }}次
+
+
+
+ 近3个月放贷次数
+
+ {{ lendingStatistics?.lendingCountLast3Months || 0 }}次
+
+
+
+ 近6个月放贷次数
+
+ {{ lendingStatistics?.lendingCountLast6Months || 0 }}次
+
+
+
+ 近12个月放贷次数
+
+ {{ lendingStatistics?.lendingCountLast12Months || 0 }}次
+
+
+
+ 近24个月放贷次数
+
+ {{ lendingStatistics?.lendingCountLast24Months || 0 }}次
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 近1个月放贷金额
+
+ {{ lendingStatistics?.lendingAmountLastMonth || '-' }}
+
+
+
+ 近3个月放贷金额
+
+ {{ formatAmountInterval(lendingStatistics?.lendingAmountLast3Months) }}
+
+
+
+ 近6个月放贷金额
+
+ {{ formatAmountInterval(lendingStatistics?.lendingAmountLast6Months) }}
+
+
+
+ 近12个月放贷金额
+
+ {{ formatAmountInterval(lendingStatistics?.lendingAmountLast12Months) }}
+
+
+
+ 近24个月放贷金额
+
+ {{ formatAmountInterval(lendingStatistics?.lendingAmountLast24Months) }}
+
+
+
+
+
+
+
+
+
近期放款时间
+
+ 最近一次放款日期
+
+ {{ lendingStatistics?.lastLendingDate || '-' }}
+
+
+
+ 距离最近一次放款日期已有(天)
+
+ {{ formatDaysInterval(lendingStatistics?.daysSinceLastLending) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/DWBG6A2C/components/OverdueRecordSection.vue b/report-viewer/src/ui/DWBG6A2C/components/OverdueRecordSection.vue
new file mode 100644
index 0000000..8e91936
--- /dev/null
+++ b/report-viewer/src/ui/DWBG6A2C/components/OverdueRecordSection.vue
@@ -0,0 +1,617 @@
+
+
+
+
+
+
+
+
+
历史逾期记录
+
+
+
+
+
+
+
+
+ {{ overdueRecord?.currentOverdueCount || 0 }}
+
+
当前逾期笔数
+
+
+
+ {{ overdueRecord?.currentOverdueInstitution || '-' }}
+
+
当前逾期机构
+
+
+
+
+
+
+
+
+
+
+ {{ overdueRecord?.totalOverdueAmount || '-' }}
+
+
逾期总金额
+
+
+
+ {{ overdueRecord?.lastOverdueDate || '-' }}
+
+
最近逾期时间
+
+
+
+
+
+
+
+
+
+
+
+
+
+
时间段
+
M0+笔数
+
M1+笔数
+
累计金额
+
+
+
+
+
+
+
+
近6个月
+
+ {{ overdueRecord?.m0PlusCountLast6Months || 0 }} 笔
+
+
+ {{ overdueRecord?.m1PlusCountLast6Months || 0 }} 笔
+
+
+ {{ overdueRecord?.totalAmountLast6Months || '-' }}
+
+
+
+
+
+
近12个月
+
+ {{ overdueRecord?.m0PlusCountLast12Months || 0 }} 笔
+
+
+ {{ overdueRecord?.m1PlusCountLast12Months || 0 }} 笔
+
+
+ {{ overdueRecord?.totalAmountLast12Months || '-' }}
+
+
+
+
+
+
近24个月
+
+ {{ overdueRecord?.m0PlusCountLast24Months || 0 }} 笔
+
+
+ {{ overdueRecord?.m1PlusCountLast24Months || 0 }} 笔
+
+
+ {{ overdueRecord?.totalAmountLast24Months || '-' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
逾期风险提示
+
+
+
+
+
+
当前逾期风险警告
+
+ 检测到当前存在逾期记录,存在较高的信用风险,建议谨慎处理。
+
+
+ 当前逾期:
+ {{ overdueRecord?.currentOverdueCount || 0 }} 笔
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
历史逾期风险提示
+
+ 存在历史逾期记录,需关注其还款意愿和能力。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
逾期记录良好
+
+ 未检测到逾期记录,信用表现良好。
+
+
+
+
+
+
+
+
+
+
逾期等级说明
+
+ M0+
+ 逾期1-29天
+
+
+ M1+
+ 逾期30天以上
+
+
+ 当前逾期
+ 尚未结清的逾期订单
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/DWBG6A2C/components/PerformanceStatisticsSection.vue b/report-viewer/src/ui/DWBG6A2C/components/PerformanceStatisticsSection.vue
new file mode 100644
index 0000000..da4c6b8
--- /dev/null
+++ b/report-viewer/src/ui/DWBG6A2C/components/PerformanceStatisticsSection.vue
@@ -0,0 +1,522 @@
+
+
+
+
+
+
+
+
+
履约情况
+
+
+
+
+
+
+
+
+ {{ performanceStatistics?.settledLoanOrderCount || 0 }}
+
+
已结清订单数
+
+
+
+ {{ performanceStatistics?.creditLoanDuration || 0 }}
+
+
信用贷款时长
+
+
+
+
+
+
+
+
+
+
+ {{ performanceStatistics.normalRepaymentRatio }}
+
+
正常还款占总订单比例
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 近1个月履约次数
+
+ {{ performanceStatistics?.performanceCountLastMonth || 0 }}次
+
+
+
+ 近3个月履约次数
+
+ {{ performanceStatistics?.performanceCountLast3Months || 0 }}次
+
+
+
+ 近6个月履约次数
+
+ {{ performanceStatistics?.performanceCountLast6Months || 0 }}次
+
+
+
+ 近12个月履约次数
+
+ {{ performanceStatistics?.performanceCountLast12Months || 0 }}次
+
+
+
+ 近24个月履约次数
+
+ {{ performanceStatistics?.performanceCountLast24Months || 0 }}次
+
+
+
+
+
+
+
+
+
+
+ 近1个月履约金额
+
+ {{ performanceStatistics.performanceAmountLastMonth }}
+
+
+
+ 近3个月履约金额
+
+ {{ formatAmountInterval(performanceStatistics.performanceAmountLast3Months) }}
+
+
+
+ 近6个月履约金额
+
+ {{ formatAmountInterval(performanceStatistics.performanceAmountLast6Months) }}
+
+
+
+ 近12个月履约金额
+
+ {{ formatAmountInterval(performanceStatistics.performanceAmountLast12Months) }}
+
+
+
+ 近24个月履约金额
+
+ {{ formatAmountInterval(performanceStatistics.performanceAmountLast24Months) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 近1个月还款异常次数
+
+ {{ performanceStatistics?.repaymentExceptionCountLastMonth || 0 }}次
+
+
+
+ 近3个月还款异常次数
+
+ {{ performanceStatistics?.repaymentExceptionCountLast3Months || 0 }}次
+
+
+
+ 近6个月还款异常次数
+
+ {{ performanceStatistics?.repaymentExceptionCountLast6Months || 0 }}次
+
+
+
+ 近12个月还款异常次数
+
+ {{ performanceStatistics?.repaymentExceptionCountLast12Months || 0 }}次
+
+
+
+ 近24个月还款异常次数
+
+ {{ performanceStatistics?.repaymentExceptionCountLast24Months || 0 }}次
+
+
+
+
+
+
+
+
+
近期履约时间
+
+ 距离最近一次履约
+
+ {{ formatDaysInterval(performanceStatistics.daysSinceLastPerformance) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/DWBG6A2C/components/RentalBehaviorSection.vue b/report-viewer/src/ui/DWBG6A2C/components/RentalBehaviorSection.vue
new file mode 100644
index 0000000..03d1c8f
--- /dev/null
+++ b/report-viewer/src/ui/DWBG6A2C/components/RentalBehaviorSection.vue
@@ -0,0 +1,824 @@
+
+
+
+
+
+
+
+
+
租赁行为
+
+
+
+
+
+
+
+
+ {{ get12MonthsApplicationCount }}
+
+
近12个月申请次数
+
+
+
+ {{ get12MonthsInstitutionCount }}
+
+
近12个月申请机构数
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 申请次数
+
+ {{ getApplicationCount(getCurrentTabData(tab.key).count) }} 次
+
+
+
+ 申请机构数
+
+ {{ getInstitutionCount(getCurrentTabData(tab.key).institutions) }} 家
+
+
+
+ 周末申请次数
+
+ {{ getApplicationCount(getCurrentTabData(tab.key).weekend) }} 次
+
+
+
+ 夜间申请次数
+
+ {{ getApplicationCount(getCurrentTabData(tab.key).night) }} 次
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 申请次数
+
+ {{ getApplicationCount(getCurrentTabData(tab.key).count) }} 次
+
+
+
+ 申请机构数
+
+ {{ getInstitutionCount(getCurrentTabData(tab.key).institutions) }} 家
+
+
+
+ 周末申请次数
+
+ {{ getApplicationCount(getCurrentTabData(tab.key).weekend) }} 次
+
+
+
+ 夜间申请次数
+
+ {{ getApplicationCount(getCurrentTabData(tab.key).night) }} 次
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 申请次数
+
+ {{ getApplicationCount(getCurrentTabData(tab.key).count) }} 次
+
+
+
+ 申请机构数
+
+ {{ getInstitutionCount(getCurrentTabData(tab.key).institutions) }} 家
+
+
+
+ 周末申请次数
+
+ {{ getApplicationCount(getCurrentTabData(tab.key).weekend) }} 次
+
+
+
+ 夜间申请次数
+
+ {{ getApplicationCount(getCurrentTabData(tab.key).night) }} 次
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
风险提示
+
+
+
周末申请: 可能存在异常行为模式
+
夜间申请: 需关注是否存在规避监管的行为
+
高频申请: 短期内多次申请可能存在套现风险
+
+
+
+
+
+
+
+
+
+
+
+
+
+
高频租赁风险警告
+
+ 检测到近期高频租赁申请行为,可能存在套现、欺诈或资金链紧张等风险。
+
+
+
+ 高频时段:
+ {{ recentHighActivity.join('、') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
异常时间段活动提示
+
+ 检测到周末或夜间租赁申请活动,需关注是否存在异常行为。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
租赁行为正常
+
+ 未检测到异常租赁申请行为,风险较低。
+
+
+
+
+
+
+
+
+
+
数据说明
+
+ 申请次数
+ 该时间段内的租赁申请总次数
+
+
+ 申请机构数
+ 该时间段内申请的不同机构数量
+
+
+ 周末申请
+ 周六、周日的申请活动
+
+
+ 夜间申请
+ 通常指22:00-06:00时间段的申请
+
+
+ 风险评估
+ 短期内高频申请可能存在较高风险
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/report-viewer/src/ui/DWBG6A2C/components/RiskListSection.vue b/report-viewer/src/ui/DWBG6A2C/components/RiskListSection.vue
new file mode 100644
index 0000000..9f2aae6
--- /dev/null
+++ b/report-viewer/src/ui/DWBG6A2C/components/RiskListSection.vue
@@ -0,0 +1,407 @@
+
+
+
+
+
+
+
+
风险名单
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ riskCount }}
+
+
命中名单数
+
+
+
+ {{ riskCount > 0 ? '有风险' : '无风险' }}
+
+
综合评估
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.hasRisk ? '命中' : '未命中' }}
+
+
+
+
+
+
+
+
+
+
{{ item.name }}
+
+
+
+ {{ getSeverityText(item.severity) }}级
+
+
+
+
{{ item.description }}
+
+
+
+
+
+
+
+
+
+
+
+
高风险名单警告
+
+
+ 命中多个高风险名单,建议立即停止业务并进行详细核实。
+
+
+ 命中名单:{{ highRiskItemNames.join('、') }}
+
+
+
+
+
+
+
+
+
+
风险名单核查通过
+
+
+ 未命中任何风险名单,各项指标正常。
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/DWBG6A2C/components/RiskPointSection.vue b/report-viewer/src/ui/DWBG6A2C/components/RiskPointSection.vue
new file mode 100644
index 0000000..5e946d2
--- /dev/null
+++ b/report-viewer/src/ui/DWBG6A2C/components/RiskPointSection.vue
@@ -0,0 +1,436 @@
+
+
+
+
+
+
+
+
命中风险标注
+
+
+
+
+
+
+
+
+
+
+
+
{{ totalRiskCount }}
+
风险点总数
+
+
+
+ {{ totalRiskCount > 0 ? '有风险' : '无风险' }}
+
+
综合评估
+
+
+
+
+
+
+
+
+
+
+ {{ getRiskLevelText(riskItem) }}
+
+
+
+
+
+
+
+
+
{{ riskItem.name }}
+
{{ riskItem.description }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
高风险警告
+
+
+ 检测到多个高风险项目,建议谨慎处理。特别关注司法涉诉、公安重点人员等关键风险指标。
+
+
+
+
+
+
+
+
+
+
风险评估通过
+
+
+ 未检测到明显风险项目,各项指标表现良好。
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/DWBG6A2C/components/RiskSupervisionSection.vue b/report-viewer/src/ui/DWBG6A2C/components/RiskSupervisionSection.vue
new file mode 100644
index 0000000..2e5d339
--- /dev/null
+++ b/report-viewer/src/ui/DWBG6A2C/components/RiskSupervisionSection.vue
@@ -0,0 +1,384 @@
+
+
+
+
+
+
+
+
+
关联风险监督
+
+
+
+
+
+
+
+
+
+ {{ getOverallRiskStatus }}
+
+
关联风险状态
+
+
+
+ {{ totalAssociations }}
+
+
关联项目总数
+
+
+
+
+
+
+
+
+
+
+ {{ riskSupervision?.rentalRiskListIdCardRelationsPhones || 0 }}
+
+
同一身份证关联手机号数
+
+
+
+ {{ riskSupervision?.rentalRiskListPhoneRelationsIdCards || 0 }}
+
+
同一手机号关联身份证数
+
+
+
+
+
+
+
+
+
+
+ {{ riskSupervision?.leastApplicationTime || '-' }}
+
+
最后申请时间
+
+
+
+
+
+
+
+
+
+
+ {{ riskSupervision.details }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getPhoneRiskLevel }}
+
+
+
+
手机号关联风险:
+
{{ getPhoneRiskDescription }}
+
+
+
+
+
+ {{ getIdCardRiskLevel }}
+
+
+
+
身份证关联风险:
+
{{ getIdCardRiskDescription }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
高关联风险警告
+
+ 检测到异常的身份证或手机号关联情况,可能存在身份伪冒、团伙欺诈等风险。
+
+
+
+ 风险项:
+ {{ highRiskItems.join('、') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
关联风险提示
+
+ 存在一定的关联风险,建议进一步核实相关信息。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
关联风险正常
+
+ 未检测到异常关联情况,风险较低。
+
+
+
+
+
+
+
+
+
+
风险说明
+
+ 身份证关联手机号:
+ 同一身份证绑定的不同手机号数量
+
+
+ 手机号关联身份证:
+ 同一手机号绑定的不同身份证数量
+
+
+ 风险评估:
+ 关联数量过多可能存在身份伪冒或团伙风险
+
+
+ 正常范围:
+ 一般情况下,关联数量在1-2个属于正常范围
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/DWBG6A2C/components/SecurityInfoSection.vue b/report-viewer/src/ui/DWBG6A2C/components/SecurityInfoSection.vue
new file mode 100644
index 0000000..14adb53
--- /dev/null
+++ b/report-viewer/src/ui/DWBG6A2C/components/SecurityInfoSection.vue
@@ -0,0 +1,427 @@
+
+
+
+
+
+
+
+
公安重点人员核验
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ riskCount }}
+
+
风险项数量
+
+
+
+ {{ riskCount > 0 ? '有风险' : '安全' }}
+
+
综合评估
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.hasRisk ? '危险' : '安全' }}
+
+
+
+
+
+
+
+
+
+
{{ item.name }}
+
+
+
+ {{ item.severity === 'high' ? '高级' : '中级' }}
+
+
+
+
{{ item.description }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
高风险警告
+
+
+ 检测到公安重点人员风险,建议立即停止业务往来并进行详细核实。
+
+
+ 命中项目:{{ highRiskItemNames.join('、') }}
+
+
+
+
+
+
+
+
+
+
公安核验通过
+
+
+ 未命中公安重点人员名单,各项安全指标正常。
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/DWBG6A2C/components/StandLiveInfoSection.vue b/report-viewer/src/ui/DWBG6A2C/components/StandLiveInfoSection.vue
new file mode 100644
index 0000000..7d07e97
--- /dev/null
+++ b/report-viewer/src/ui/DWBG6A2C/components/StandLiveInfoSection.vue
@@ -0,0 +1,383 @@
+
+
+
+
+
+
+
+
身份信息核验
+
+
+
+
+
+
+
+
+
+
+
+ {{ getOverallVerificationStatus }}
+
+
综合核验状态
+
+
+
+ {{ inTimeInfo.text }}
+
+
在网时长
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ finalAuthResultInfo.text }}
+
+
实名核验结果
+
说明:{{ getFinalAuthResultDescription }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ verificationInfo.text }}
+
+
运营商三要素核验
+
三要素核验:{{ getVerificationDescription }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ inTimeInfo.text }}
+
+
运营商在网时长
+
在网时长:{{ getInTimeDescription }}
+
+
+
+
+
+
+
+
+
+
+
+
+
身份核验风险提示
+
+
+ {{ riskDescription }}
+
+
+ 风险项:{{ verificationRiskItems.join('、') }}
+
+
+
+
+
+
+
+
+
+
核验说明
+
+
+
实名核验:验证姓名与身份证号的一致性
+
三要素核验:验证姓名、身份证号、手机号在运营商的一致性
+
在网时长:手机号在运营商的使用时长,时长越长信用度越高
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/report-viewer/src/ui/DWBG6A2C/index.vue b/report-viewer/src/ui/DWBG6A2C/index.vue
new file mode 100644
index 0000000..6b710b0
--- /dev/null
+++ b/report-viewer/src/ui/DWBG6A2C/index.vue
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/DWBG6A2C/utils/intervalFormatter.js b/report-viewer/src/ui/DWBG6A2C/utils/intervalFormatter.js
new file mode 100644
index 0000000..dd54cf2
--- /dev/null
+++ b/report-viewer/src/ui/DWBG6A2C/utils/intervalFormatter.js
@@ -0,0 +1,304 @@
+/**
+ * 区间表达式格式化工具
+ * 将数学区间表达式转换为用户友好的文本描述
+ */
+
+/**
+ * 格式化区间表达式
+ * @param {string} interval - 区间表达式,如 "(0,1000)", "[2000,30000)", "[17,+)"
+ * @param {string} unit - 单位,如 "元", "次", "个", "天" 等
+ * @returns {string} 格式化后的文本,如果格式化失败则返回原数据
+ */
+export function formatInterval(interval, unit = "") {
+ // 如果数据为空或无效,返回原数据
+ if (!interval || interval === "-" || interval === "0") {
+ return interval || "-";
+ }
+
+ try {
+ // 处理特殊格式,如 "3,6(个月)"
+ if (interval.includes("(") && interval.includes(")")) {
+ const match = interval.match(/^(\d+(?:,\d+)*)\((.+)\)$/);
+ if (match) {
+ const numbers = match[1].split(",").map((n) => n.trim());
+ const timeUnit = match[2];
+ if (numbers.length === 2) {
+ return `${numbers[0]}-${numbers[1]}${timeUnit}`;
+ }
+ return `${numbers.join(", ")}${timeUnit}`;
+ }
+ }
+
+ // 处理区间表达式
+ const intervalPattern =
+ /^([\[\(])(\d+(?:\.\d+)?),(\d+(?:\.\d+)?|\+)([\]\)])$/;
+ const match = interval.match(intervalPattern);
+
+ // 如果不是区间表达式,返回原数据
+ if (!match) {
+ return interval;
+ }
+
+ const [, leftBracket, leftValue, rightValue, rightBracket] = match;
+ const isLeftInclusive = leftBracket === "[";
+ const isRightInclusive = rightBracket === "]";
+ const isRightInfinity = rightValue === "+";
+
+ let result = "";
+
+ if (isRightInfinity) {
+ // 处理无穷大情况,如 "[17,+)"
+ if (isLeftInclusive) {
+ result = `≥${leftValue}${unit}`;
+ } else {
+ result = `>${leftValue}${unit}`;
+ }
+ } else {
+ // 处理有限区间
+ const leftNum = parseFloat(leftValue);
+ const rightNum = parseFloat(rightValue);
+
+ // 检查数值是否有效
+ if (isNaN(leftNum) || isNaN(rightNum)) {
+ return interval;
+ }
+
+ if (leftNum === rightNum) {
+ // 单点值
+ result = `${leftNum}${unit}`;
+ } else {
+ // 区间值 - 简化为实际数值范围
+ if (isLeftInclusive && isRightInclusive) {
+ result = `${leftNum}-${rightNum}${unit}`;
+ } else if (isLeftInclusive && !isRightInclusive) {
+ // 右开区间,显示到 rightNum-1
+ result = `${leftNum}-${rightNum - 1}${unit}`;
+ } else if (!isLeftInclusive && isRightInclusive) {
+ // 左开区间,显示从 leftNum+1
+ result = `${leftNum + 1}-${rightNum}${unit}`;
+ } else {
+ // 两端都不包含,显示从 leftNum+1 到 rightNum-1
+ result = `${leftNum + 1}-${rightNum - 1}${unit}`;
+ }
+ }
+ }
+
+ return result;
+ } catch (error) {
+ // 如果格式化过程中出现错误,返回原数据
+ console.warn("区间格式化失败:", error, "原数据:", interval);
+ return interval;
+ }
+}
+
+/**
+ * 格式化金额区间
+ * @param {string} interval - 金额区间表达式
+ * @returns {string} 格式化后的金额文本
+ */
+export function formatAmountInterval(interval) {
+ return formatInterval(interval, "元");
+}
+
+/**
+ * 格式化次数区间
+ * @param {string} interval - 次数区间表达式
+ * @returns {string} 格式化后的次数文本
+ */
+export function formatCountInterval(interval) {
+ return formatInterval(interval, "次");
+}
+
+/**
+ * 格式化天数区间
+ * @param {string} interval - 天数区间表达式
+ * @returns {string} 格式化后的天数文本
+ */
+export function formatDaysInterval(interval) {
+ return formatInterval(interval, "天");
+}
+
+/**
+ * 格式化机构数量区间
+ * @param {string} interval - 机构数量区间表达式
+ * @returns {string} 格式化后的机构数量文本
+ */
+export function formatInstitutionInterval(interval) {
+ return formatInterval(interval, "家");
+}
+
+/**
+ * 格式化时间区间
+ * @param {string} interval - 时间区间表达式
+ * @returns {string} 格式化后的时间文本
+ */
+export function formatTimeInterval(interval) {
+ if (!interval || interval === "-") {
+ return "-";
+ }
+
+ // 处理特殊格式,如 "3,6(个月)"
+ if (interval.includes("(") && interval.includes(")")) {
+ const match = interval.match(/^(\d+(?:,\d+)*)\((.+)\)$/);
+ if (match) {
+ const numbers = match[1].split(",").map((n) => n.trim());
+ const timeUnit = match[2];
+ if (numbers.length === 2) {
+ return `${numbers[0]}-${numbers[1]}${timeUnit}`;
+ }
+ return `${numbers.join(", ")}${timeUnit}`;
+ }
+ }
+
+ return formatInterval(interval, "");
+}
+
+/**
+ * 格式化申请次数区间
+ * @param {string} interval - 申请次数区间表达式,格式如 "2/1"
+ * @returns {string} 格式化后的申请次数文本
+ */
+export function formatApplicationInterval(interval) {
+ if (!interval || interval === "-") {
+ return "-";
+ }
+
+ // 处理 "2/1" 格式,表示 申请次数/机构数
+ if (interval.includes("/")) {
+ const [applyCount, institutionCount] = interval.split("/");
+ return `${applyCount}次/${institutionCount}家`;
+ }
+
+ return formatCountInterval(interval);
+}
+
+/**
+ * 格式化租赁申请数据 - 专门处理司南报告中的 "次数/机构数" 格式
+ * @param {string} data - 租赁申请数据,格式如 "2/1" (次数/机构数)
+ * @returns {Object} 包含格式化后的次数和机构数的对象
+ */
+export function formatRentalApplicationData(data) {
+ if (!data || data === "-" || data === "0/0") {
+ return {
+ count: 0,
+ institutions: 0,
+ countText: "0 次",
+ institutionsText: "0 家",
+ combinedText: "0 次 / 0 家",
+ };
+ }
+
+ if (data.includes("/")) {
+ const [countStr, institutionsStr] = data.split("/");
+ const count = parseInt(countStr) || 0;
+ const institutions = parseInt(institutionsStr) || 0;
+
+ return {
+ count,
+ institutions,
+ countText: `${count} 次`,
+ institutionsText: `${institutions} 家`,
+ combinedText: `${count} 次 / ${institutions} 家`,
+ };
+ }
+
+ // 如果不是标准格式,返回原数据
+ return {
+ count: 0,
+ institutions: 0,
+ countText: data,
+ institutionsText: data,
+ combinedText: data,
+ };
+}
+
+/**
+ * 格式化风险等级文本
+ * @param {string} level - 风险等级,如 "C2,C5"
+ * @returns {string} 格式化后的风险等级文本
+ */
+export function formatRiskLevel(level) {
+ if (!level) return "-";
+
+ const levelMap = {
+ 0: "正常人员",
+ A: "前科:侵犯公民人身权利,民主权利",
+ A1: "盗窃",
+ A2: "诈骗",
+ A3: "抢劫/夺",
+ A4: "故意伤害/杀人",
+ A5: "强奸/性侵/猥亵",
+ B: "经济类前科",
+ B1: "走私",
+ B2: "破坏金融管理秩序",
+ B3: "正常人员",
+ B4: "洗钱",
+ B5: "洗钱",
+ C: "妨害社会管理秩序",
+ C1: "扰乱公共秩序",
+ C2: "妨害司法",
+ C3: "涉毒",
+ C4: "涉黄刑案",
+ C5: "帮信/掩隐/侵公",
+ D: "重点",
+ D1: "危害国家、公共安全",
+ D2: "涉稳",
+ D3: "涉及境外",
+ D4: "涉恐、疆藏",
+ D5: "涉黑",
+ E: "涉交通案件",
+ F: "法院文书",
+ };
+
+ return level
+ .split(",")
+ .map((l) => levelMap[l.trim()] || l.trim())
+ .join("、");
+}
+
+/**
+ * 格式化状态文本
+ * @param {string} status - 状态值
+ * @param {Object} statusMap - 状态映射对象
+ * @returns {string} 格式化后的状态文本
+ */
+export function formatStatus(status, statusMap = {}) {
+ if (status === undefined || status === null || status === "") {
+ return "-";
+ }
+
+ return statusMap[status] || status;
+}
+
+/**
+ * 格式化风险标识
+ * @param {number} flag - 风险标识,0=未查得,1=高风险,2=低风险
+ * @returns {Object} 包含文本和样式的对象
+ */
+export function formatRiskFlag(flag) {
+ const flagMap = {
+ 0: { text: "未查得", class: "bg-gray-100 text-gray-700" },
+ 1: { text: "高风险", class: "bg-red-100 text-red-700" },
+ 2: { text: "低风险", class: "bg-green-100 text-green-700" },
+ };
+
+ return (
+ flagMap[flag] || { text: "未知", class: "bg-gray-100 text-gray-700" }
+ );
+}
+
+/**
+ * 格式化验证结果
+ * @param {string} result - 验证结果
+ * @returns {Object} 包含文本和样式的对象
+ */
+export function formatVerificationResult(result) {
+ const resultMap = {
+ 一致: { text: "一致", class: "text-green-600" },
+ 不一致: { text: "不一致", class: "text-red-600" },
+ 验证通过: { text: "验证通过", class: "text-green-600" },
+ 验证失败: { text: "验证失败", class: "text-red-600" },
+ };
+
+ return resultMap[result] || { text: result || "-", class: "text-gray-600" };
+}
diff --git a/report-viewer/src/ui/DWBG6A2C/utils/simpleSplitter.js b/report-viewer/src/ui/DWBG6A2C/utils/simpleSplitter.js
new file mode 100644
index 0000000..8dc05d1
--- /dev/null
+++ b/report-viewer/src/ui/DWBG6A2C/utils/simpleSplitter.js
@@ -0,0 +1,311 @@
+/**
+ * 司南报告(DWBG6A2C)数据拆分工具
+ * 将完整的司南报告数据拆分成多个独立的模块,用于在不同的tab中显示
+ */
+
+/**
+ * 将DWBG6A2C数据拆分为多个独立的tab模块
+ * @param {Array} reportData - 原始报告数据数组
+ * @returns {Array} 拆分后的模块数组
+ */
+export function splitDWBG6A2CForTabs(reportData) {
+ // 查找DWBG6A2C数据
+ const dwbg6a2cData = reportData.find(item => item.data?.apiID === 'DWBG6A2C');
+
+ if (!dwbg6a2cData || !dwbg6a2cData.data?.data) {
+ return reportData; // 如果没有找到DWBG6A2C数据,返回原数据
+ }
+
+ const originalData = dwbg6a2cData.data.data;
+ const baseTimestamp = dwbg6a2cData.data.timestamp;
+
+ // 创建拆分后的模块数组
+ const splitModules = [];
+
+ // 1. 基本信息
+ // if (originalData.baseInfo) {
+ // splitModules.push({
+ // data: {
+ // apiID: 'DWBG6A2C_BaseInfo',
+ // data: {
+ // baseInfo: originalData.baseInfo
+ // },
+ // success: true,
+ // timestamp: baseTimestamp
+ // }
+ // });
+ // }
+
+ // 2. 身份信息核验
+ if (originalData.standLiveInfo) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_StandLiveInfo',
+ data: {
+ standLiveInfo: originalData.standLiveInfo
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 3. 命中风险标注
+ if (originalData.riskPoint) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_RiskPoint',
+ data: {
+ riskPoint: originalData.riskPoint
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 4. 公安重点人员核验
+ if (originalData.securityInfo) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_SecurityInfo',
+ data: {
+ securityInfo: originalData.securityInfo
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 5. 涉赌涉诈人员核验
+ if (originalData.antiFraudInfo) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_AntiFraudInfo',
+ data: {
+ antiFraudInfo: originalData.antiFraudInfo
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 6. 风险名单
+ if (originalData.riskList) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_RiskList',
+ data: {
+ riskList: originalData.riskList
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 7. 历史借贷行为
+ if (originalData.applicationStatistics) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_ApplicationStatistics',
+ data: {
+ applicationStatistics: originalData.applicationStatistics
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 8. 近24个月放款情况
+ if (originalData.lendingStatistics) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_LendingStatistics',
+ data: {
+ lendingStatistics: originalData.lendingStatistics
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 9. 履约情况
+ if (originalData.performanceStatistics) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_PerformanceStatistics',
+ data: {
+ performanceStatistics: originalData.performanceStatistics
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 10. 历史逾期记录
+ if (originalData.overdueRecord) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_OverdueRecord',
+ data: {
+ overdueRecord: originalData.overdueRecord
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 11. 授信详情
+ if (originalData.creditDetail && Object.keys(originalData.creditDetail).length > 0) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_CreditDetail',
+ data: {
+ creditDetail: originalData.creditDetail
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 12. 租赁行为
+ if (originalData.rentalBehavior) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_RentalBehavior',
+ data: {
+ rentalBehavior: originalData.rentalBehavior
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 13. 关联风险监督
+ if (originalData.riskSupervision) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_RiskSupervision',
+ data: {
+ riskSupervision: originalData.riskSupervision
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 14. 法院风险信息
+ if (originalData.judiciaRiskInfos && originalData.judiciaRiskInfos.length > 0) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_CourtRiskInfo',
+ data: {
+ judiciaRiskInfos: originalData.judiciaRiskInfos
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 移除原始的DWBG6A2C数据,添加拆分后的模块
+ const otherData = reportData.filter(item => item.data?.apiID !== 'DWBG6A2C');
+
+ return [...otherData, ...splitModules];
+}
+
+/**
+ * 格式化风险等级描述
+ * @param {string} level - 风险等级
+ * @returns {object} 包含颜色和文本的对象
+ */
+export function formatRiskLevel(level) {
+ const riskLevels = {
+ '0': { color: 'text-green-600', bg: 'bg-green-100', text: '无风险', icon: '✅' },
+ '1': { color: 'text-red-600', bg: 'bg-red-100', text: '有风险', icon: '⚠️' },
+ 'A': { color: 'text-yellow-600', bg: 'bg-yellow-100', text: '较低风险', icon: '⚠️' },
+ 'B': { color: 'text-orange-600', bg: 'bg-orange-100', text: '低风险', icon: '⚠️' },
+ 'C': { color: 'text-red-600', bg: 'bg-red-100', text: '中风险', icon: '🚨' },
+ 'D': { color: 'text-red-700', bg: 'bg-red-200', text: '高风险', icon: '🚨' }
+ };
+
+ return riskLevels[level] || { color: 'text-gray-600', bg: 'bg-gray-100', text: '未知', icon: '❓' };
+}
+
+/**
+ * 格式化手机号码状态
+ * @param {number} status - 状态码
+ * @returns {object} 包含颜色和文本的对象
+ */
+export function formatPhoneStatus(status) {
+ const statusMap = {
+ '-1': { color: 'text-gray-600', bg: 'bg-gray-100', text: '未查得', icon: '❓' },
+ '0': { color: 'text-red-600', bg: 'bg-red-100', text: '空号', icon: '❌' },
+ '1': { color: 'text-green-600', bg: 'bg-green-100', text: '实号', icon: '✅' },
+ '2': { color: 'text-orange-600', bg: 'bg-orange-100', text: '停机', icon: '⏸️' },
+ '3': { color: 'text-gray-600', bg: 'bg-gray-100', text: '库无', icon: '❓' },
+ '4': { color: 'text-yellow-600', bg: 'bg-yellow-100', text: '沉默号', icon: '😴' },
+ '5': { color: 'text-red-600', bg: 'bg-red-100', text: '风险号', icon: '⚠️' }
+ };
+
+ return statusMap[status.toString()] || { color: 'text-gray-600', bg: 'bg-gray-100', text: '未知', icon: '❓' };
+}
+
+/**
+ * 格式化身份核验结果
+ * @param {string} result - 核验结果
+ * @returns {object} 包含颜色和文本的对象
+ */
+export function formatVerificationResult(result) {
+ const resultMap = {
+ '0': { color: 'text-green-600', bg: 'bg-green-100', text: '一致', icon: '✅' },
+ '1': { color: 'text-red-600', bg: 'bg-red-100', text: '不一致或不存在', icon: '❌' }
+ };
+
+ return resultMap[result] || { color: 'text-gray-600', bg: 'bg-gray-100', text: '未知', icon: '❓' };
+}
+
+/**
+ * 格式化在网时长
+ * @param {string} inTime - 在网时长代码
+ * @returns {object} 包含颜色和文本的对象
+ */
+export function formatInTime(inTime) {
+ const timeMap = {
+ '0': { color: 'text-red-600', bg: 'bg-red-100', text: '0-3个月', icon: '📱' },
+ '3': { color: 'text-orange-600', bg: 'bg-orange-100', text: '3-6个月', icon: '📱' },
+ '6': { color: 'text-yellow-600', bg: 'bg-yellow-100', text: '6-12个月', icon: '📱' },
+ '12': { color: 'text-blue-600', bg: 'bg-blue-100', text: '12-24个月', icon: '📱' },
+ '24': { color: 'text-green-600', bg: 'bg-green-100', text: '24个月以上', icon: '📱' },
+ '99': { color: 'text-gray-600', bg: 'bg-gray-100', text: '状态异常', icon: '⚠️' },
+ '-1': { color: 'text-gray-600', bg: 'bg-gray-100', text: '查无记录', icon: '❓' }
+ };
+
+ return timeMap[inTime] || { color: 'text-gray-600', bg: 'bg-gray-100', text: '未知', icon: '❓' };
+}
+
+/**
+ * 检查是否有风险数据
+ * @param {Object} data - 数据对象
+ * @returns {boolean} 是否有风险
+ */
+export function hasRiskData(data) {
+ if (!data) return false;
+
+ // 检查对象中是否有非0值
+ return Object.values(data).some(value => {
+ if (typeof value === 'number') return value > 0;
+ if (typeof value === 'string') return value !== '0' && value !== '-' && value !== '';
+ return false;
+ });
+}
diff --git a/report-viewer/src/ui/FLXG7E8F/components/CaseDetail.vue b/report-viewer/src/ui/FLXG7E8F/components/CaseDetail.vue
new file mode 100644
index 0000000..06d0299
--- /dev/null
+++ b/report-viewer/src/ui/FLXG7E8F/components/CaseDetail.vue
@@ -0,0 +1,404 @@
+
+
+
+
+ {{ isSpecialCase ? '执行法院' : '经办法院' }}:
+ {{ caseData.n_jbfy || caseData.executiveCourt || "—" }}
+
+
+ 所属地域:
+ {{ caseData.c_ssdy || caseData.province || "—" }}
+
+
+
+ 案件类型:
+ {{ caseData.n_ajlx || "—" }}
+
+
+
+
+ 案号:
+ {{ caseData.c_ah || "—" }}
+
+
+
+
+ 原审案号:
+ {{ caseData.c_ah_ys || "—" }}
+
+
+
+
+ 后续案号:
+ {{ caseData.c_ah_hx || "—" }}
+
+
+
+
+ 立案时间:
+ {{ formatDate(caseData.d_larq || caseData.fileDate || caseData.larq) }}
+
+
+
+
+ 立案案由:
+ {{ caseData.n_laay_tree || caseData.n_laay || "暂无" }}
+
+
+
+
+ 立案案由标签:
+ {{ caseData.n_laay_tag || "—" }}
+
+
+
+
+ 当事人信息:
+
+
+ {{ party.n_ssdw || "其他" }}: {{ party.c_mc }};
+
+
+
+
+
+
+
+
+ 案号:
+ {{ caseData.caseNumber || "—" }}
+
+
+
+
+ 发布日期:
+ {{ formatDate(caseData.issueDate) }}
+
+
+
+
+ 性别:
+ {{ caseData.sex || "—" }}
+
+
+
+
+ 履行情况:
+ {{ caseData.fulfillStatus || "—" }}
+
+
+
+
+ 判决金额估计:
+ {{ formatLawsuitMoney(caseData.estimatedJudgementAmount) || "—" }}
+
+
+
+
+ 行为具体情形:
+ {{ caseData.concreteDetails || "—" }}
+
+
+
+
+ 生效法律文书确定的义务:
+ {{ caseData.obligation || "—" }}
+
+
+
+
+ 执行依据单位:
+ {{ caseData.enforcementBasisOrganization || "—" }}
+
+
+
+
+ 执行依据文号:
+ {{ caseData.enforcementBasisNumber || "—" }}
+
+
+
+
+
+
+
+ 案件编号:
+ {{ caseData.caseNumber || "—" }}
+
+
+
+
+ 发布日期:
+ {{ formatDate(caseData.issueDate) }}
+
+
+
+
+ 立案时间:
+ {{ formatDate(caseData.fileDate) }}
+
+
+
+
+
+
+
+ 定罪罪名:
+ {{ caseData.n_dzzm || "—" }}
+
+
+
+
+ 定罪罪名详细:
+ {{ caseData.n_dzzm_tree || "—" }}
+
+
+
+
+ 判处结果:
+ {{ caseData.n_pcjg || "—" }}
+
+
+
+
+ 犯罪金额:
+ {{ formatLawsuitMoney(caseData.n_fzje) || "—" }}
+
+
+
+
+ 被请求赔偿金额:
+ {{ formatLawsuitMoney(caseData.n_bqqpcje) || "—" }}
+
+
+
+
+ 财产刑执行金额:
+ {{ formatLawsuitMoney(caseData.n_ccxzxje) || "—" }}
+
+
+
+
+ 财产刑执行金额估计:
+ {{ formatLawsuitMoney(caseData.n_ccxzxje_gj) || "—" }}
+
+
+
+
+ 判处赔偿金额:
+ {{ formatLawsuitMoney(caseData.n_pcpcje) || "—" }}
+
+
+
+
+ 判处赔偿金额估计:
+ {{ formatLawsuitMoney(caseData.n_pcpcje_gj) || "—" }}
+
+
+
+
+ 被请求赔偿金额估计:
+ {{ formatLawsuitMoney(caseData.n_bqqpcje_gj) || "—" }}
+
+
+
+
+
+
+
+ 申请执行标的金额:
+ {{ formatLawsuitMoney(caseData.n_sqzxbdje) || "—" }}
+
+
+
+
+ 实际到位金额:
+ {{ formatLawsuitMoney(caseData.n_sjdwje) || "—" }}
+
+
+
+
+ 未执行金额:
+ {{ formatLawsuitMoney(caseData.n_wzxje) || "—" }}
+
+
+
+
+ 相关案件号:
+ {{ caseData.c_gkws_glah || "—" }}
+
+
+
+
+
+
+
+ 申请保全数额:
+ {{ formatLawsuitMoney(caseData.n_sqbqse) || "—" }}
+
+
+
+
+ 申请保全标的物:
+ {{ caseData.c_sqbqbdw || "—" }}
+
+
+
+
+
+
+ 诉讼地位:
+ {{ caseData.n_ssdw || "—" }}
+
+
+
+
+ 一审诉讼地位:
+ {{ caseData.n_ssdw_ys || "—" }}
+
+
+
+
+ 案件进展阶段:
+ {{ caseData.n_ajjzjd || "—" }}
+
+
+
+
+ 审理程序:
+ {{ caseData.n_slcx || "—" }}
+
+
+
+
+ 法院所属层级:
+ {{ caseData.n_jbfy_cj || "—" }}
+
+
+
+
+ 起诉标的金额:
+ {{ formatLawsuitMoney(caseData.n_qsbdje) || "—" }}
+
+
+
+
+ 起诉标的金额估计:
+ {{ formatLawsuitMoney(caseData.n_qsbdje_gj) || "—" }}
+
+
+
+
+ 结案标的金额:
+ {{ formatLawsuitMoney(caseData.n_jabdje) || "—" }}
+
+
+
+
+ 结案标的金额估计:
+ {{ formatLawsuitMoney(caseData.n_jabdje_gj) || "—" }}
+
+
+
+
+ 结案案由:
+ {{ caseData.n_jaay_tree || caseData.n_jaay || "—" }}
+
+
+
+
+ 结案案由标签:
+ {{ caseData.n_jaay_tag || "—" }}
+
+
+
+
+ 结案方式:
+ {{ caseData.n_jafs || "—" }}
+
+
+
+
+ 结案时间:
+ {{ formatDate(caseData.d_jarq) }}
+
+
+
+
+ 胜诉估计:
+ {{ caseData.n_pj_victory || "—" }}
+
+
+
+
+ 公开文书ID:
+ {{ caseData.c_gkws_id || "—" }}
+
+
+
+
+ 相关当事人:
+ {{ caseData.c_gkws_dsr || "—" }}
+
+
+
+
+ 判决结果:
+ {{ caseData.c_gkws_pjjg || "—" }}
+
+
+
+
+ 审理方式信息:
+ {{ caseData.c_slfsxx || "—" }}
+
+
+
+
+ 后续案件:
+
+ {{ caseData.next.c_ah }}
+
+ {{
+ caseData.next.stage_type === 2
+ ? "二审"
+ : caseData.next.stage_type === 3
+ ? "再审"
+ : caseData.next.stage_type === 4
+ ? "申请再审"
+ : caseData.next.stage_type === 5
+ ? "执行"
+ : "其他"
+ }}
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/FLXG7E8F/components/StatisticsOverview.vue b/report-viewer/src/ui/FLXG7E8F/components/StatisticsOverview.vue
new file mode 100644
index 0000000..1fad049
--- /dev/null
+++ b/report-viewer/src/ui/FLXG7E8F/components/StatisticsOverview.vue
@@ -0,0 +1,285 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ totalCases }}
+ 起涉诉案件中,
+
+ {{ stats.highRiskItems }}
+
+ 0
+ 起高风险案件
+
+ ,涉及 {{ stats.caseTypes.length }} 种案件类型
+
+
+
+
+
+
+
+
+
+
+
{{ stats.totalRiskItems || 0 }}项
+
风险事项
+
+ 平均{{ stats.totalRiskItems && totalCases > 0 ?
+ (stats.totalRiskItems / totalCases).toFixed(1) :
+ '0.0'
+ }}项/案件
+
+
+
+
+
+
{{ stats.highRiskItems || 0 }}家
+
高风险案件
+
+ 占比{{ totalCases > 0 && stats ?
+ ((stats.highRiskItems /
+ totalCases) * 100).toFixed(1) : '0.0' }}%
+
+
+ 失信{{ stats.breachCaseCount || 0 }}
+ 限高{{ stats.consumptionRestrictionCount || 0 }}
+
+
+
+
+
+
{{ stats.closedCases || 0 }}家
+
已结案件
+
+ 占比{{ totalCases > 0 && stats ?
+ Math.round((stats.closedCases / totalCases) * 100) :
+ 0
+ }}%
+
+
+
+
+
+
{{ stats.caseTypes.length || 0 }}家
+
案件类型
+
+ 涉及多种类型
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
高风险案件
+
{{ stats.highRiskItems || 0 }}条
+
+
+
+
中风险案件
+
{{ stats.mediumRiskItems || 0 }}条
+
+
+
+
低风险案件
+
{{ stats.lowRiskItems || 0 }}条
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/FLXG7E8F/index.vue b/report-viewer/src/ui/FLXG7E8F/index.vue
new file mode 100644
index 0000000..cef906a
--- /dev/null
+++ b/report-viewer/src/ui/FLXG7E8F/index.vue
@@ -0,0 +1,457 @@
+
+
+
+
+
+
+
+
+
个人涉诉风险分析
+
+
+
+
+
+
+
+
+
+
+
+
+ 全部风险
+ ({{ caseTypeCounts.all }})
+
+
+
+
+
+
+
+
+ {{ typeInfo.text }}({{ caseTypeCounts[type] || 0 }})
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ caseItem.c_ah || caseItem.caseNumber || '暂无案号' }}
+
+
+
+ {{ getCaseTypeText(caseItem.type) }}
+
+
+
+
+
+ 立案:
+ {{ formatDate(caseItem.d_larq || caseItem.fileDate) }}
+
+
+
+
+
+
+ {{ getCaseTypeRiskLevel(caseItem.type).text }}
+
+
+
+ {{ caseItem.n_ajjzjd }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/FLXG7E8F/utils/lawsuitUtils.js b/report-viewer/src/ui/FLXG7E8F/utils/lawsuitUtils.js
new file mode 100644
index 0000000..7f1ff3d
--- /dev/null
+++ b/report-viewer/src/ui/FLXG7E8F/utils/lawsuitUtils.js
@@ -0,0 +1,303 @@
+// 案件类型映射表
+export const lawsuitTypeMap = {
+ breachCase: {
+ text: '失信被执行',
+ color: 'text-red-600 bg-red-50',
+ darkColor: 'bg-red-500',
+ riskLevel: 'high', // 高风险
+ },
+ consumptionRestriction: {
+ 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 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 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 // 如果不是标准格式则返回原始字符串
+}
+
+// 格式化金额显示(单位:万元)
+export const formatLawsuitMoney = money => {
+ if (!money) 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,
+ }) + ' 万元'
+ )
+}
+
+// 获取案件状态样式
+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'
+ }
+}
+
+// 获取企业状态对应的样式
+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'
+ }
+}
+
+// 格式化资本金额显示
+export const formatCapital = (capital, currency) => {
+ if (!capital) return '—'
+
+ // 检查是否包含"万"字或需要显示为万元
+ 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 = '万'
+ }
+
+ // 格式化数字,保留两位小数(如果有小数部分)
+ const formattedValue = value.toLocaleString('zh-CN', {
+ minimumFractionDigits: 0,
+ maximumFractionDigits: 2,
+ })
+
+ return `${formattedValue}${unit} ${currency || '人民币'}`
+}
+
+// 获取涉诉风险等级
+export const getRiskLevel = lawsuitInfo => {
+ if (!lawsuitInfo) {
+ return {
+ level: 'low',
+ text: '低风险',
+ color: 'text-green-600 bg-green-50',
+ }
+ }
+
+ // 失信被执行人是最高风险
+ if (lawsuitInfo.breachCaseList && lawsuitInfo.breachCaseList.length > 0) {
+ return {
+ level: 'high',
+ text: '高风险',
+ color: 'text-red-600 bg-red-50',
+ }
+ }
+
+ // 限高被执行人是最高风险
+ if (lawsuitInfo.consumptionRestrictionList && lawsuitInfo.consumptionRestrictionList.length > 0) {
+ return {
+ level: 'high',
+ text: '高风险',
+ color: 'text-red-600 bg-red-50',
+ }
+ }
+
+ // 有涉诉数据的风险级别
+ if (lawsuitInfo.lawsuitStat && Object.keys(lawsuitInfo.lawsuitStat).length > 0) {
+ // 检查是否有未结案的案件
+ const data = lawsuitInfo.lawsuitStat
+ if (data.count && data.count.count_wei_total && data.count.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',
+ }
+}
+
+// 获取涉诉案件统计
+export const getLawsuitStats = lawsuitInfo => {
+ if (!lawsuitInfo) return null
+
+ const stats = {
+ total: 0,
+ types: [],
+ }
+
+ // 统计各类型案件数量
+ Object.keys(lawsuitTypeMap).forEach(type => {
+ let count = 0
+
+ if (type === 'breachCase') {
+ count = lawsuitInfo.breachCaseList && lawsuitInfo.breachCaseList.length > 0 ? lawsuitInfo.breachCaseList.length : 0
+ } else if (type === 'consumptionRestriction') {
+ count = lawsuitInfo.consumptionRestrictionList && lawsuitInfo.consumptionRestrictionList.length > 0 ? lawsuitInfo.consumptionRestrictionList.length : 0
+ } else if (lawsuitInfo.lawsuitStat && lawsuitInfo.lawsuitStat[type] && Object.keys(lawsuitInfo.lawsuitStat[type]).length > 0) {
+ const typeData = lawsuitInfo.lawsuitStat[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),
+ })
+ }
+ })
+
+ return stats
+}
+
+// 获取案件类型优先级顺序
+export const getCaseTypePriority = () => {
+ return [
+ 'breachCase', // 失信被执行人(最高风险)
+ 'consumptionRestriction', // 限高被执行人
+ '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',
+ }
+ }
+
+ 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],
+ }
+}
+
diff --git a/report-viewer/src/ui/JRZQ09J8/README.md b/report-viewer/src/ui/JRZQ09J8/README.md
new file mode 100644
index 0000000..ee245aa
--- /dev/null
+++ b/report-viewer/src/ui/JRZQ09J8/README.md
@@ -0,0 +1,165 @@
+# 收入评估组件 (JRZQ09J8)
+
+## 组件概述
+
+基于全国社会保险信息系统的缴费基数数据进行收入水平评估,为企业提供专业的收入分析和风险评估服务。
+
+## 组件结构
+
+```
+JRZQ09J8/
+├── index.vue # 主组件
+├── components/ # 子组件目录
+│ ├── IncomeOverview.vue # 华丽的收入评估概览
+│ ├── IncomeAnalysis.vue # 详细收入分析
+│ └── IncomeLevelGuide.vue # 社保评级对照表
+├── utils/ # 工具函数目录
+│ └── incomeUtils.js # 收入评估工具函数
+└── README.md # 说明文档
+```
+
+## 使用方法
+
+### 基本用法
+
+```vue
+
+
+
+
+
+
+
+```
+
+## 数据字段说明
+
+| 字段名 | 类型 | 必填 | 描述 | 示例值 |
+|-------|------|------|------|--------|
+| level | String | 是 | 社保评级等级 | "G" |
+
+## 评级对照表
+
+| level 值 | 社保评级 | 对应月收入范围 | 风险等级 |
+|----------|----------|----------------|----------|
+| - | **无记录** | 查询无社保记录 | 高风险 |
+| A | **A级** | (2000, 4000)元 | 中高风险 |
+| B | **B级** | (4000, 6000)元 | 中等风险 |
+| C | **C级** | (6000, 8000)元 | 中低风险 |
+| D | **D级** | (8000, 10000)元 | 低风险 |
+| E | **E级** | (10000, 14000)元 | 很低风险 |
+| F | **F级** | (14000, 18000)元 | 极低风险 |
+| G | **G级** | (18000, 22000)元 | 极低风险 |
+| H | **H级** | (22000, 26000)元 | 无风险 |
+| I | **I级** | (26000, 30000)元 | 无风险 |
+| J | **J级** | (30000+)元 | 零风险 |
+
+## 组件特性
+
+### 1. 华丽的视觉展示
+- **渐变背景**:使用高级渐变色彩方案
+- **3D效果**:卡片阴影和浮动动画
+- **动态装饰**:浮动圆圈装饰元素
+- **响应式设计**:完美适配各种屏幕尺寸
+
+### 2. 专业的数据分析
+- **收入等级可视化**:柱状图展示收入分布
+- **市场对比分析**:与市场平均水平对比
+- **信用风险评估**:基于收入的风险评级
+- **消费能力分析**:预测消费潜力
+
+### 3. 详细的评级指南
+- **完整对照表**:所有等级的详细说明
+- **特性标签**:每个等级的关键特征
+- **数据可靠性**:展示数据准确率和覆盖范围
+
+### 4. 智能风险评估
+- **动态评分**:根据收入等级自动计算风险分数
+- **个性化建议**:针对不同等级的专业建议
+- **市场定位**:精确的市场百分位排名
+
+## 工具函数
+
+### incomeUtils.js
+
+提供了以下核心功能:
+
+- `getIncomeLevelInfo(level)` - 获取收入等级详细信息
+- `getIncomeRange(level)` - 获取收入范围
+- `getRiskLevel(level)` - 获取风险等级
+- `getMarketComparison(level)` - 获取市场对比分析
+- `getCreditRiskAssessment(level)` - 获取信用风险评估
+- `getConsumptionCapacity(level)` - 获取消费能力分析
+- `generateIncomeAssessmentReport(level)` - 生成完整评估报告
+
+## 视觉设计亮点
+
+### 1. 色彩系统
+- 使用专业的收入等级色彩映射
+- 渐变背景营造高端感
+- 风险等级颜色区分清晰
+
+### 2. 交互体验
+- 悬停效果增强用户体验
+- 平滑的动画过渡
+- 直观的视觉反馈
+
+### 3. 信息架构
+- 层次分明的信息展示
+- 重点突出的核心数据
+- 完整的补充说明
+
+## 数据说明
+
+### 评估依据
+- 基于全国社会保险信息系统
+- 使用社保缴费基数推算收入水平
+- 数据准确率达95%以上
+
+### 使用限制
+- 收入范围为税前月收入
+- 存在地区差异,仅供参考
+- 建议结合其他收入证明材料
+
+### 更新频率
+- 数据实时更新
+- 全国范围覆盖
+- 持续优化算法模型
+
+## 业务价值
+
+### 1. 风险控制
+- 精确的收入评估降低信贷风险
+- 多维度风险分析提升决策质量
+- 智能化评分系统提高效率
+
+### 2. 客户分层
+- 基于收入的客户分级管理
+- 个性化服务策略制定
+- 精准的市场定位分析
+
+### 3. 合规要求
+- 符合金融监管要求
+- 数据来源权威可靠
+- 评估过程透明公开
+
+## 注意事项
+
+1. 确保传入正确的level值
+2. 组件会自动处理异常数据
+3. 建议在网络良好的环境下使用
+4. 定期更新评估标准以保持准确性
+
+## 更新日志
+
+- v1.0.0 - 初始版本,支持基础收入评估功能
+- 华丽的视觉展示效果
+- 完整的评级对照系统
+- 专业的风险分析功能
diff --git a/report-viewer/src/ui/JRZQ09J8/components/IncomeAnalysis.vue b/report-viewer/src/ui/JRZQ09J8/components/IncomeAnalysis.vue
new file mode 100644
index 0000000..19660bc
--- /dev/null
+++ b/report-viewer/src/ui/JRZQ09J8/components/IncomeAnalysis.vue
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+
+
+
+
+
{{ getMarketComparison() }}
+
+
+
+ 低收入
+ 中等收入
+ 高收入
+
+
+
+
+
+
+
+
+
+
{{ getRiskAssessment() }}
+
+
+ {{ getRiskLevel() }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/JRZQ09J8/components/IncomeLevelGuide.vue b/report-viewer/src/ui/JRZQ09J8/components/IncomeLevelGuide.vue
new file mode 100644
index 0000000..b4bdaad
--- /dev/null
+++ b/report-viewer/src/ui/JRZQ09J8/components/IncomeLevelGuide.vue
@@ -0,0 +1,445 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ levelInfo.range }}
+
{{ levelInfo.description }}
+
+
+
+
+
+
+
+
+
+
+
+
+ 本评估基于全国社会保险信息系统的缴费基数数据
+ 收入范围为税前月收入,实际到手收入会有所差异
+ 评级反映的是相对收入水平,不代表绝对收入能力
+ 社保缴费存在地区差异,评估结果仅供参考
+ 建议结合其他收入证明材料进行综合评估
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/JRZQ09J8/components/IncomeOverview.vue b/report-viewer/src/ui/JRZQ09J8/components/IncomeOverview.vue
new file mode 100644
index 0000000..db6e3a7
--- /dev/null
+++ b/report-viewer/src/ui/JRZQ09J8/components/IncomeOverview.vue
@@ -0,0 +1,223 @@
+
+
+
+
+
+
+
+
+
+
+ {{ getIncomeRange(level) }}
+
+
+
+ {{ getIncomeDescription(level) }}
+
+
+
+
+
+
+
+
+
{{ getAssessmentDescription(level) }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/JRZQ09J8/index.vue b/report-viewer/src/ui/JRZQ09J8/index.vue
new file mode 100644
index 0000000..40779c4
--- /dev/null
+++ b/report-viewer/src/ui/JRZQ09J8/index.vue
@@ -0,0 +1,524 @@
+
+
+
+
+
+
+
+
+
+
收入评估
+
+
+
+
+
+
预估月收入
+
+ {{ getIncomeAmount(data.level) }}
+ 元
+
+
+
{{ getIncomeDescription(data.level) }}
+
+
+
+
+
+
+
+
+
+
+
评估结果
+
+
+ {{ getAssessmentDescription(data.level) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
市场对比
+
+
+ {{ getMarketComparison(data.level) }}
+
+
+
+
+
+
+
+
+
+
+
+
+ 低收入
+ 高收入
+
+
+
+
+
+
+
+ {{ getRiskLevel(data.level) }}
+
+
+
+
+
+
+
+
信用风险
+
+
+ {{ getRiskAssessment(data.level) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/JRZQ09J8/utils/incomeUtils.js b/report-viewer/src/ui/JRZQ09J8/utils/incomeUtils.js
new file mode 100644
index 0000000..7f97535
--- /dev/null
+++ b/report-viewer/src/ui/JRZQ09J8/utils/incomeUtils.js
@@ -0,0 +1,414 @@
+/**
+ * 收入评估工具函数
+ */
+
+/**
+ * 收入等级映射表
+ */
+export const INCOME_LEVEL_MAP = {
+ '-': {
+ name: '无记录',
+ range: '查询无社保记录',
+ minAmount: 0,
+ maxAmount: 0,
+ color: '#94a3b8',
+ riskLevel: 'high',
+ description: '未发现社保缴费记录,无法进行收入评估'
+ },
+ 'A': {
+ name: 'A级收入',
+ range: '2,000 - 4,000 元',
+ minAmount: 2000,
+ maxAmount: 4000,
+ color: '#ef4444',
+ riskLevel: 'medium-high',
+ description: '基础收入水平,消费能力有限'
+ },
+ 'B': {
+ name: 'B级收入',
+ range: '4,000 - 6,000 元',
+ minAmount: 4000,
+ maxAmount: 6000,
+ color: '#f97316',
+ riskLevel: 'medium',
+ description: '普通收入水平,具备基础消费能力'
+ },
+ 'C': {
+ name: 'C级收入',
+ range: '6,000 - 8,000 元',
+ minAmount: 6000,
+ maxAmount: 8000,
+ color: '#eab308',
+ riskLevel: 'medium-low',
+ description: '中等收入水平,消费能力良好'
+ },
+ 'D': {
+ name: 'D级收入',
+ range: '8,000 - 10,000 元',
+ minAmount: 8000,
+ maxAmount: 10000,
+ color: '#84cc16',
+ riskLevel: 'low',
+ description: '中等偏上收入,消费能力较强'
+ },
+ 'E': {
+ name: 'E级收入',
+ range: '10,000 - 14,000 元',
+ minAmount: 10000,
+ maxAmount: 14000,
+ color: '#22c55e',
+ riskLevel: 'very-low',
+ description: '良好收入水平,消费能力强劲'
+ },
+ 'F': {
+ name: 'F级收入',
+ range: '14,000 - 18,000 元',
+ minAmount: 14000,
+ maxAmount: 18000,
+ color: '#10b981',
+ riskLevel: 'very-low',
+ description: '较高收入水平,消费能力很强'
+ },
+ 'G': {
+ name: 'G级收入',
+ range: '18,000 - 22,000 元',
+ minAmount: 18000,
+ maxAmount: 22000,
+ color: '#06b6d4',
+ riskLevel: 'minimal',
+ description: '高收入水平,消费能力强大'
+ },
+ 'H': {
+ name: 'H级收入',
+ range: '22,000 - 26,000 元',
+ minAmount: 22000,
+ maxAmount: 26000,
+ color: '#3b82f6',
+ riskLevel: 'minimal',
+ description: '很高收入水平,消费能力顶级'
+ },
+ 'I': {
+ name: 'I级收入',
+ range: '26,000 - 30,000 元',
+ minAmount: 26000,
+ maxAmount: 30000,
+ color: '#8b5cf6',
+ riskLevel: 'none',
+ description: '优秀收入水平,消费能力超强'
+ },
+ 'J': {
+ name: 'J级收入',
+ range: '30,000+ 元',
+ minAmount: 30000,
+ maxAmount: Infinity,
+ color: '#d946ef',
+ riskLevel: 'none',
+ description: '卓越收入水平,消费潜力无限'
+ }
+}
+
+/**
+ * 获取收入等级信息
+ * @param {string} level - 收入等级
+ * @returns {object} 等级信息
+ */
+export const getIncomeLevelInfo = (level) => {
+ return INCOME_LEVEL_MAP[level] || {
+ name: '未知等级',
+ range: '数据异常',
+ minAmount: 0,
+ maxAmount: 0,
+ color: '#94a3b8',
+ riskLevel: 'unknown',
+ description: '数据异常,无法进行准确评估'
+ }
+}
+
+/**
+ * 获取收入等级显示名称
+ * @param {string} level - 收入等级
+ * @returns {string} 显示名称
+ */
+export const getIncomeLevelName = (level) => {
+ const levelInfo = getIncomeLevelInfo(level)
+ return levelInfo.name
+}
+
+/**
+ * 获取收入范围
+ * @param {string} level - 收入等级
+ * @returns {string} 收入范围
+ */
+export const getIncomeRange = (level) => {
+ const levelInfo = getIncomeLevelInfo(level)
+ return levelInfo.range
+}
+
+/**
+ * 获取收入等级颜色
+ * @param {string} level - 收入等级
+ * @returns {string} 颜色值
+ */
+export const getIncomeLevelColor = (level) => {
+ const levelInfo = getIncomeLevelInfo(level)
+ return levelInfo.color
+}
+
+/**
+ * 获取风险等级
+ * @param {string} level - 收入等级
+ * @returns {string} 风险等级
+ */
+export const getRiskLevel = (level) => {
+ const levelInfo = getIncomeLevelInfo(level)
+ return levelInfo.riskLevel
+}
+
+/**
+ * 格式化金额
+ * @param {number} amount - 金额
+ * @returns {string} 格式化后的金额
+ */
+export const formatAmount = (amount) => {
+ if (!amount || amount === 0) return '0'
+
+ return amount.toLocaleString('zh-CN', {
+ style: 'currency',
+ currency: 'CNY',
+ minimumFractionDigits: 0,
+ maximumFractionDigits: 0
+ })
+}
+
+/**
+ * 获取收入等级排名百分比
+ * @param {string} level - 收入等级
+ * @returns {number} 排名百分比 (0-100)
+ */
+export const getIncomePercentile = (level) => {
+ const percentileMap = {
+ '-': 0,
+ 'A': 10,
+ 'B': 25,
+ 'C': 40,
+ 'D': 55,
+ 'E': 70,
+ 'F': 80,
+ 'G': 85,
+ 'H': 90,
+ 'I': 95,
+ 'J': 99
+ }
+
+ return percentileMap[level] || 0
+}
+
+/**
+ * 获取市场对比描述
+ * @param {string} level - 收入等级
+ * @returns {string} 市场对比描述
+ */
+export const getMarketComparison = (level) => {
+ const percentile = getIncomePercentile(level)
+
+ if (percentile === 0) {
+ return '无社保记录,无法与市场平均水平进行对比'
+ } else if (percentile <= 20) {
+ return `低于市场平均收入水平,处于收入分布的底部${percentile}%区间`
+ } else if (percentile <= 40) {
+ return `略低于市场平均收入水平,处于收入分布的底部${percentile}%区间`
+ } else if (percentile <= 60) {
+ return `接近市场平均收入水平,处于收入分布的中等${percentile}%区间`
+ } else if (percentile <= 80) {
+ return `高于市场平均收入水平,处于收入分布的上层${percentile}%区间`
+ } else if (percentile <= 90) {
+ return `显著高于市场平均收入水平,处于收入分布的顶部${100-percentile}%区间`
+ } else {
+ return `远超市场绝大多数收入水平,处于收入分布的顶部${100-percentile}%区间`
+ }
+}
+
+/**
+ * 获取信用风险评估
+ * @param {string} level - 收入等级
+ * @returns {object} 风险评估信息
+ */
+export const getCreditRiskAssessment = (level) => {
+ const riskAssessments = {
+ '-': {
+ level: '高风险',
+ description: '缺乏社保记录,收入稳定性存在不确定性,信用风险较高',
+ score: 20,
+ recommendations: ['核实收入来源', '要求担保措施', '谨慎放贷']
+ },
+ 'A': {
+ level: '中高风险',
+ description: '收入水平较低,还款能力有限,需要谨慎评估信用风险',
+ score: 35,
+ recommendations: ['评估还款能力', '适当降低额度', '关注还款记录']
+ },
+ 'B': {
+ level: '中等风险',
+ description: '收入水平一般,具备基础还款能力,信用风险中等',
+ score: 50,
+ recommendations: ['正常业务流程', '定期跟踪', '建立信用档案']
+ },
+ 'C': {
+ level: '中低风险',
+ description: '收入稳定,还款能力良好,信用风险较低',
+ score: 65,
+ recommendations: ['可正常合作', '适度提升额度', '优化服务']
+ },
+ 'D': {
+ level: '低风险',
+ description: '收入较高,还款能力强,信用风险低',
+ score: 75,
+ recommendations: ['优质客户', '提升服务等级', '拓展业务']
+ },
+ 'E': {
+ level: '很低风险',
+ description: '收入良好,还款能力很强,信用风险很低',
+ score: 85,
+ recommendations: ['重点客户', '专享服务', '深度合作']
+ },
+ 'F': {
+ level: '极低风险',
+ description: '高收入群体,还款能力优秀,信用风险极低',
+ score: 90,
+ recommendations: ['VIP客户', '定制服务', '战略合作']
+ },
+ 'G': {
+ level: '极低风险',
+ description: '高收入群体,还款能力卓越,信用风险极低',
+ score: 92,
+ recommendations: ['顶级客户', '私人定制', '长期合作']
+ },
+ 'H': {
+ level: '无风险',
+ description: '高端收入群体,还款能力顶级,几乎无信用风险',
+ score: 95,
+ recommendations: ['钻石客户', '专属服务', '全面合作']
+ },
+ 'I': {
+ level: '无风险',
+ description: '精英收入群体,还款能力完美,无信用风险',
+ score: 97,
+ recommendations: ['白金客户', '尊享服务', '全方位合作']
+ },
+ 'J': {
+ level: '零风险',
+ description: '顶级收入群体,还款能力无限,零信用风险',
+ score: 99,
+ recommendations: ['至尊客户', '顶级服务', '战略伙伴']
+ }
+ }
+
+ return riskAssessments[level] || {
+ level: '未知风险',
+ description: '数据异常,无法进行风险评估',
+ score: 0,
+ recommendations: ['数据核实', '人工审核', '谨慎处理']
+ }
+}
+
+/**
+ * 获取消费能力分析
+ * @param {string} level - 收入等级
+ * @returns {object} 消费能力分析
+ */
+export const getConsumptionCapacity = (level) => {
+ const capacityAnalysis = {
+ '-': {
+ level: '无法评估',
+ description: '缺乏收入数据,无法评估消费能力',
+ categories: []
+ },
+ 'A': {
+ level: '基础消费',
+ description: '主要满足基本生活需求,消费能力有限',
+ categories: ['基本生活用品', '必需品消费', '低价商品']
+ },
+ 'B': {
+ level: '一般消费',
+ description: '能够满足日常消费需求,偶有小额娱乐支出',
+ categories: ['日常用品', '基础娱乐', '小额投资']
+ },
+ 'C': {
+ level: '中等消费',
+ description: '具备良好的消费能力,可进行中档消费',
+ categories: ['品质商品', '休闲娱乐', '教育投资', '小额理财']
+ },
+ 'D': {
+ level: '较强消费',
+ description: '消费能力较强,可进行中高档消费',
+ categories: ['中高档商品', '旅游度假', '技能培训', '理财投资']
+ },
+ 'E': {
+ level: '强劲消费',
+ description: '消费能力强劲,可进行高档消费和投资',
+ categories: ['高档商品', '奢侈品', '高端服务', '投资理财']
+ },
+ 'F': {
+ level: '很强消费',
+ description: '消费能力很强,可进行奢侈消费和多元投资',
+ categories: ['奢侈品', '高端服务', '房产投资', '金融产品']
+ },
+ 'G': {
+ level: '强大消费',
+ description: '消费能力强大,属于高端消费群体',
+ categories: ['顶级奢侈品', '私人定制', '房产投资', '股权投资']
+ },
+ 'H': {
+ level: '顶级消费',
+ description: '消费能力顶级,属于超高端消费群体',
+ categories: ['超级奢侈品', '私人飞机', '豪华房产', '私募基金']
+ },
+ 'I': {
+ level: '超强消费',
+ description: '消费能力超强,属于精英消费群体',
+ categories: ['收藏品', '艺术品', '豪华游艇', '对冲基金']
+ },
+ 'J': {
+ level: '无限消费',
+ description: '消费潜力无限,属于顶级财富群体',
+ categories: ['任何商品', '私人岛屿', '慈善事业', '风险投资']
+ }
+ }
+
+ return capacityAnalysis[level] || {
+ level: '未知',
+ description: '数据异常,无法分析消费能力',
+ categories: []
+ }
+}
+
+/**
+ * 生成收入评估报告
+ * @param {string} level - 收入等级
+ * @returns {object} 完整的评估报告
+ */
+export const generateIncomeAssessmentReport = (level) => {
+ const levelInfo = getIncomeLevelInfo(level)
+ const riskAssessment = getCreditRiskAssessment(level)
+ const consumptionCapacity = getConsumptionCapacity(level)
+ const marketComparison = getMarketComparison(level)
+ const percentile = getIncomePercentile(level)
+
+ return {
+ level,
+ levelInfo,
+ riskAssessment,
+ consumptionCapacity,
+ marketComparison,
+ percentile,
+ timestamp: new Date().toISOString(),
+ summary: {
+ grade: levelInfo.name,
+ range: levelInfo.range,
+ riskLevel: riskAssessment.level,
+ riskScore: riskAssessment.score,
+ marketPosition: `超过${percentile}%的收入水平`,
+ recommendations: riskAssessment.recommendations
+ }
+ }
+}
diff --git a/report-viewer/src/ui/JRZQ4B6C/README.md b/report-viewer/src/ui/JRZQ4B6C/README.md
new file mode 100644
index 0000000..383e825
--- /dev/null
+++ b/report-viewer/src/ui/JRZQ4B6C/README.md
@@ -0,0 +1,129 @@
+# 信贷表现组件 (JRZQ4B6C)
+
+## 组件概述
+
+信贷表现主要为企业在背景调查过程中探查用户近期信贷表现时提供参考,帮助企业对其内部员工、外部业务进行个人信用过滤。
+
+## 组件结构
+
+```
+JRZQ4B6C/
+├── index.vue # 主组件
+├── components/ # 子组件目录
+│ ├── ProbeOverview.vue # 信贷表现概览组件
+│ ├── OverdueInfoSection.vue # 逾期信息组件
+│ ├── PerformanceInfoSection.vue # 履约信息组件
+│ └── InstitutionStatusSection.vue # 机构状态组件
+├── utils/ # 工具函数目录
+│ └── probeUtils.js # 信贷表现工具函数
+└── README.md # 说明文档
+```
+
+## 使用方法
+
+### 基本用法
+
+```vue
+
+
+
+
+
+
+
+```
+
+## 数据字段说明
+
+| 字段名 | 类型 | 必填 | 描述 | 示例值 |
+|-------|------|------|------|--------|
+| result_code | String | 否 | 探查结果编码 | "1" |
+| max_overdue_amt | String | 否 | 最大逾期金额 | "1000-2000" |
+| max_overdue_days | String | 否 | 最长逾期天数 | "1-15" |
+| latest_overdue_time | String | 否 | 最近逾期时间 | "2018-10" |
+| max_performance_amt | String | 否 | 最大履约金额 | "1000-2000" |
+| latest_performance_time | String | 否 | 最近履约时间 | "2018-10" |
+| count_performance | String | 否 | 履约笔数 | "1" |
+| currently_overdue | String | 否 | 当前逾期机构数 | "1" |
+| currently_performance | String | 否 | 当前履约机构数 | "29" |
+| acc_exc | String | 否 | 异常还款机构数 | "0" |
+| acc_sleep | String | 否 | 睡眠机构数 | "39" |
+
+## 结果编码说明
+
+| 编码 | 显示内容 | 探查明细说明 | 风险等级 |
+|------|----------|-------------|----------|
+| 1 | 用户最近一笔订单未结清 | 用户最近一笔订单未结清 | 高风险 |
+| 2 | 用户订单结清情况良好 | 多笔订单用户最近一笔订单已结清且历史所有订单均已结清,或单笔订单用户该订单发生时间在3个月之内且该订单结清 | 低风险 |
+| 3 | 用户最近订单已结清,历史存在未结清订单 | 用户最近一笔订单已结清,但历史存在未结清订单 | 中等风险 |
+| 4 | 用户数据不充分 | 数据不充分 | 未知风险 |
+
+### 详细说明
+
+**编码1**:通过模型计算展现该用户行为画像,用户最近一笔订单未结清
+**编码2**:通过模型计算展现该用户行为画像,用户订单结清情况良好
+**编码3**:通过模型计算展现该用户行为画像,用户最近订单已结清但历史存在未结清订单
+**编码4**:用户数据不充分无法展现该用户行为画像
+
+## 金额区间说明
+
+组件支持以下金额区间格式:
+- 区间格式:`"1000-2000"`、`"(1000~2000]"`
+- 大于格式:`">1000000"`
+- 零值:`"0"` 表示无记录
+
+## 组件特性
+
+1. **响应式设计**:适配移动端和桌面端
+2. **数据格式化**:自动格式化金额、时间等数据
+3. **风险评估**:基于数据自动生成风险等级和建议
+4. **视觉反馈**:使用颜色区分不同风险等级
+5. **空数据处理**:优雅处理缺失或无效数据
+
+## 工具函数
+
+### probeUtils.js
+
+提供了以下工具函数:
+
+- `getResultCodeInfo(code)` - 获取结果编码信息
+- `formatAmountRange(amount)` - 格式化金额区间
+- `formatDaysRange(days)` - 格式化天数区间
+- `formatTime(time)` - 格式化时间
+- `generateRiskSummary(data)` - 生成风险评估总结
+
+## 样式定制
+
+组件使用 Tailwind CSS 构建,可以通过以下方式定制样式:
+
+1. 修改组件内的 CSS 类名
+2. 使用 CSS 变量覆盖默认样式
+3. 通过 props 传入自定义样式类名
+
+## 注意事项
+
+1. 确保传入的数据格式正确
+2. 所有字段都是可选的,组件会优雅处理缺失数据
+3. 时间格式建议使用 YYYY-MM 格式
+4. 金额和天数支持多种区间格式
+
+## 更新日志
+
+- v1.0.0 - 初始版本,支持信贷表现基本功能展示
diff --git a/report-viewer/src/ui/JRZQ4B6C/components/InstitutionStatusSection.vue b/report-viewer/src/ui/JRZQ4B6C/components/InstitutionStatusSection.vue
new file mode 100644
index 0000000..e9d1a06
--- /dev/null
+++ b/report-viewer/src/ui/JRZQ4B6C/components/InstitutionStatusSection.vue
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
机构状态信息
+
+
+
+
+
+
+
+
+ {{ accExc || '0' }} 个
+
+
异常还款机构数
+
存在异常还款记录的机构数量
+
+
+
+
+
+ {{ accSleep || '0' }} 个
+
+
睡眠机构数
+
长期无交易活动的机构数量
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/JRZQ4B6C/components/OverdueInfoSection.vue b/report-viewer/src/ui/JRZQ4B6C/components/OverdueInfoSection.vue
new file mode 100644
index 0000000..9300b70
--- /dev/null
+++ b/report-viewer/src/ui/JRZQ4B6C/components/OverdueInfoSection.vue
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
逾期信息详情
+
+
+
+
+
+
+
+
+ {{ formatAmountRange(maxOverdueAmt) }}
+
+
最大逾期金额
+
历史最大逾期金额区间
+
+
+
+
+
+ {{ formatDaysRange(maxOverdueDays) }}
+
+
最长逾期天数
+
历史最长逾期天数区间
+
+
+
+
+
+ {{ formatTime(latestOverdueTime) }}
+
+
最近逾期时间
+
最近一次逾期发生时间
+
+
+
+
+
+ {{ currentlyOverdue || '0' }} 个
+
+
当前逾期机构数
+
目前存在逾期的机构数量
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/JRZQ4B6C/components/PerformanceInfoSection.vue b/report-viewer/src/ui/JRZQ4B6C/components/PerformanceInfoSection.vue
new file mode 100644
index 0000000..7f70578
--- /dev/null
+++ b/report-viewer/src/ui/JRZQ4B6C/components/PerformanceInfoSection.vue
@@ -0,0 +1,158 @@
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/JRZQ4B6C/components/ProbeOverview.vue b/report-viewer/src/ui/JRZQ4B6C/components/ProbeOverview.vue
new file mode 100644
index 0000000..8f5602f
--- /dev/null
+++ b/report-viewer/src/ui/JRZQ4B6C/components/ProbeOverview.vue
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
概览
+
+
+
+
+
+
+ {{ getResultCodeText(resultCode) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ getResultDescription(resultCode) }}
+
+
+
+
+
+ 探查明细
+
+
+ {{ getDetailDescription(resultCode) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/JRZQ4B6C/components/Remark.vue b/report-viewer/src/ui/JRZQ4B6C/components/Remark.vue
new file mode 100644
index 0000000..7751664
--- /dev/null
+++ b/report-viewer/src/ui/JRZQ4B6C/components/Remark.vue
@@ -0,0 +1,83 @@
+
+
+
+
+
温馨提示!
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/report-viewer/src/ui/JRZQ4B6C/index.vue b/report-viewer/src/ui/JRZQ4B6C/index.vue
new file mode 100644
index 0000000..6e6aaa6
--- /dev/null
+++ b/report-viewer/src/ui/JRZQ4B6C/index.vue
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
diff --git a/report-viewer/src/ui/JRZQ4B6C/utils/probeUtils.js b/report-viewer/src/ui/JRZQ4B6C/utils/probeUtils.js
new file mode 100644
index 0000000..56d02af
--- /dev/null
+++ b/report-viewer/src/ui/JRZQ4B6C/utils/probeUtils.js
@@ -0,0 +1,288 @@
+/**
+ * 信贷表现工具函数
+ */
+
+/**
+ * 结果编码映射
+ */
+export const RESULT_CODE_MAP = {
+ '1': {
+ text: '用户最近一笔订单未结清',
+ description: '通过模型计算展现该用户行为画像,用户最近一笔订单未结清,建议谨慎评估其信用状况和还款能力。',
+ detail: '用户最近一笔订单未结清',
+ color: 'text-red-500',
+ level: 'high'
+ },
+ '2': {
+ text: '用户订单结清情况良好',
+ description: '通过模型计算展现该用户行为画像,多笔订单用户最近一笔订单已结清且历史所有订单均已结清,或单笔订单用户该订单发生时间在3个月之内且该订单结清,信贷表现良好。',
+ detail: '多笔订单用户最近一笔订单已结清且历史所有订单均已结清,或单笔订单用户该订单发生时间在3个月之内且该订单结清',
+ color: 'text-green-500',
+ level: 'low'
+ },
+ '3': {
+ text: '用户最近订单已结清,历史存在未结清订单',
+ description: '通过模型计算展现该用户行为画像,用户最近一笔订单已结清,但历史存在未结清订单,建议关注其历史还款记录。',
+ detail: '用户最近一笔订单已结清,但历史存在未结清订单',
+ color: 'text-yellow-500',
+ level: 'medium'
+ },
+ '4': {
+ text: '用户数据不充分',
+ description: '用户数据不充分无法展现该用户行为画像。建议通过其他征信渠道补充信息进行综合评估。',
+ detail: '数据不充分',
+ color: 'text-gray-500',
+ level: 'unknown'
+ }
+}
+
+/**
+ * 金额区间映射(根据文档提供的区间)
+ */
+export const AMOUNT_RANGES = [
+ '(1~1000]',
+ '(1000~2000]',
+ '(2000~3000]',
+ '(3000~4000]',
+ '(4000~6000]',
+ '(6000~8000]',
+ '(8000~10000]',
+ '(10000~20000]',
+ '(20000~40000]',
+ '(40000~60000]',
+ '(60000~80000]',
+ '(80000~100000]',
+ '(100000~150000]',
+ '(150000~200000]',
+ '(200000~250000]',
+ '(250000~300000]',
+ '(300000~350000]',
+ '(350000~400000]',
+ '(400000~450000]',
+ '(450000~500000]',
+ '(500000~550000]',
+ '(550000~600000]',
+ '(600000~650000]',
+ '(650000~700000]',
+ '(700000~750000]',
+ '(750000~800000]',
+ '(800000~850000]',
+ '(850000~900000]',
+ '(900000~950000]',
+ '(950000~1000000]',
+ '>1000000'
+]
+
+/**
+ * 获取结果编码信息
+ * @param {string} code - 结果编码
+ * @returns {object} 结果编码信息
+ */
+export const getResultCodeInfo = (code) => {
+ return RESULT_CODE_MAP[code] || {
+ text: '未知状态',
+ description: '信贷表现主要为企业在背景调查过程中探查用户近期信贷表现时提供参考,帮助企业对其内部员工、外部业务进行个人信用过滤。',
+ color: 'text-gray-500',
+ level: 'unknown'
+ }
+}
+
+/**
+ * 格式化金额区间
+ * @param {string} amount - 金额区间字符串
+ * @returns {string} 格式化后的金额区间
+ */
+export const formatAmountRange = (amount) => {
+ if (!amount || amount === '0') {
+ return '无记录'
+ }
+
+ // 处理标准区间格式,如 "1000-2000"
+ if (amount.includes('-')) {
+ const [min, max] = amount.split('-')
+ return `${formatNumber(min)}元 - ${formatNumber(max)}元`
+ }
+
+ // 处理带括号的区间格式,如 "(1000~2000]"
+ if (amount.includes('~')) {
+ const cleanAmount = amount.replace(/[()[\]]/g, '')
+ const [min, max] = cleanAmount.split('~')
+ return `${formatNumber(min)}元 - ${formatNumber(max)}元`
+ }
+
+ // 处理大于某个值的格式,如 ">1000000"
+ if (amount.startsWith('>')) {
+ const value = amount.substring(1)
+ return `大于 ${formatNumber(value)}元`
+ }
+
+ // 其他格式直接返回
+ return amount
+}
+
+/**
+ * 格式化天数区间
+ * @param {string} days - 天数区间字符串
+ * @returns {string} 格式化后的天数区间
+ */
+export const formatDaysRange = (days) => {
+ if (!days || days === '0') {
+ return '无记录'
+ }
+
+ // 处理区间格式,如 "1-15"
+ if (days.includes('-')) {
+ const [min, max] = days.split('-')
+ return `${min}天 - ${max}天`
+ }
+
+ // 处理带括号的区间格式,如 "[1~15]"
+ if (days.includes('~')) {
+ const cleanDays = days.replace(/[()[\]]/g, '')
+ const [min, max] = cleanDays.split('~')
+ return `${min}天 - ${max}天`
+ }
+
+ return days + '天'
+}
+
+/**
+ * 格式化时间
+ * @param {string} time - 时间字符串
+ * @returns {string} 格式化后的时间
+ */
+export const formatTime = (time) => {
+ if (!time) {
+ return '无记录'
+ }
+
+ // 处理 YYYY-MM 格式
+ if (time.match(/^\d{4}-\d{2}$/)) {
+ return time.replace('-', '年') + '月'
+ }
+
+ // 处理 YYYY-MM-DD 格式
+ if (time.match(/^\d{4}-\d{2}-\d{2}$/)) {
+ const [year, month, day] = time.split('-')
+ return `${year}年${month}月${day}日`
+ }
+
+ return time
+}
+
+/**
+ * 格式化数字,添加千分位分隔符
+ * @param {string|number} num - 数字
+ * @returns {string} 格式化后的数字
+ */
+export const formatNumber = (num) => {
+ if (!num) return '0'
+
+ const number = typeof num === 'string' ? parseFloat(num) : num
+
+ if (isNaN(number)) return num
+
+ return number.toLocaleString('zh-CN')
+}
+
+/**
+ * 获取风险等级颜色类名
+ * @param {string} level - 风险等级
+ * @returns {string} CSS类名
+ */
+export const getRiskLevelClass = (level) => {
+ const levelMap = {
+ 'high': 'text-red-500',
+ 'medium': 'text-yellow-500',
+ 'low': 'text-green-500',
+ 'unknown': 'text-gray-500'
+ }
+
+ return levelMap[level] || 'text-gray-500'
+}
+
+/**
+ * 获取风险等级背景色类名
+ * @param {string} level - 风险等级
+ * @returns {string} CSS类名
+ */
+export const getRiskLevelBgClass = (level) => {
+ const levelMap = {
+ 'high': 'bg-red-50 border-red-200',
+ 'medium': 'bg-yellow-50 border-yellow-200',
+ 'low': 'bg-green-50 border-green-200',
+ 'unknown': 'bg-gray-50 border-gray-200'
+ }
+
+ return levelMap[level] || 'bg-gray-50 border-gray-200'
+}
+
+/**
+ * 生成信贷表现总结
+ * @param {object} data - 信贷表现数据
+ * @returns {object} 风险评估总结
+ */
+export const generateRiskSummary = (data) => {
+ if (!data) {
+ return {
+ level: 'unknown',
+ text: '无法获取数据进行风险评估',
+ recommendations: ['建议通过其他渠道获取更多信息']
+ }
+ }
+
+ const resultCode = data.result_code
+ const codeInfo = getResultCodeInfo(resultCode)
+
+ const currentlyOverdue = parseInt(data.currently_overdue) || 0
+ const accExc = parseInt(data.acc_exc) || 0
+ const accSleep = parseInt(data.acc_sleep) || 0
+
+ let riskLevel = codeInfo.level
+ let recommendations = []
+
+ // 基于结果编码的建议
+ switch (resultCode) {
+ case '1': // 用户最近一笔订单未结清
+ recommendations.push('用户最近一笔订单未结清,存在风险')
+ recommendations.push('建议进一步核实原因和当前还款能力')
+ recommendations.push('考虑要求提供担保或抵押措施')
+ break
+ case '2': // 用户订单结清情况良好
+ recommendations.push('用户订单结清情况良好,信贷表现正常')
+ recommendations.push('可以正常开展业务合作')
+ recommendations.push('建议定期跟踪信用状况变化')
+ break
+ case '3': // 用户最近订单已结清,历史存在未结清订单
+ recommendations.push('用户最近订单已结清,但历史存在未结清订单')
+ recommendations.push('建议关注历史还款记录和还款意愿')
+ recommendations.push('可考虑适当降低授信额度或增加风控措施')
+ break
+ case '4': // 用户数据不充分
+ recommendations.push('用户数据不充分,无法完整评估行为画像')
+ recommendations.push('建议通过其他征信渠道补充信息')
+ recommendations.push('谨慎开展高风险业务,建议人工审核')
+ break
+ }
+
+ // 基于其他指标的额外风险评估
+ if (currentlyOverdue > 0) {
+ riskLevel = 'high'
+ recommendations.push(`当前有${currentlyOverdue}个机构逾期,风险较高`)
+ }
+
+ if (accExc > 2) {
+ if (riskLevel !== 'high') riskLevel = 'medium'
+ recommendations.push(`存在${accExc}个异常还款机构,需要关注`)
+ }
+
+ if (accSleep > 10) {
+ recommendations.push(`有${accSleep}个睡眠机构,信贷活跃度偏低`)
+ }
+
+ return {
+ level: riskLevel,
+ text: codeInfo.description,
+ recommendations: recommendations
+ }
+}
diff --git a/report-viewer/src/views/Report.vue b/report-viewer/src/views/Report.vue
new file mode 100644
index 0000000..2b5e445
--- /dev/null
+++ b/report-viewer/src/views/Report.vue
@@ -0,0 +1,104 @@
+
+
+
+
+
+
+
+
diff --git a/report-viewer/tailwind.config.js b/report-viewer/tailwind.config.js
new file mode 100644
index 0000000..7c8d2ac
--- /dev/null
+++ b/report-viewer/tailwind.config.js
@@ -0,0 +1,95 @@
+/** @type {import('tailwindcss').Config} */
+export default {
+ content: [
+ "./index.html",
+ "./src/**/*.{vue,js,ts,jsx,tsx}",
+ ],
+ theme: {
+ extend: {
+ colors: {
+ primary: {
+ DEFAULT: "#5D7EEB",
+ 50: "#F0F3FF",
+ 100: "#E1E8FF",
+ 200: "#C3D1FF",
+ 300: "#A5BAFF",
+ 400: "#87A3FF",
+ 500: "#5D7EEB",
+ 600: "#4A63BC",
+ 700: "#38488D",
+ 800: "#252D5E",
+ 900: "#13122F",
+ },
+ success: {
+ DEFAULT: "#07c160",
+ 50: "#f0f9f0",
+ 100: "#e1f5e1",
+ 200: "#c3ebc3",
+ 300: "#a5e1a5",
+ 400: "#87d787",
+ 500: "#07c160",
+ 600: "#059a4c",
+ 700: "#047338",
+ 800: "#024c24",
+ 900: "#012510",
+ },
+ warning: {
+ DEFAULT: "#ff976a",
+ 50: "#fff5f0",
+ 100: "#ffebe1",
+ 200: "#ffd7c3",
+ 300: "#ffc3a5",
+ 400: "#ffaf87",
+ 500: "#ff976a",
+ 600: "#cc7955",
+ 700: "#995b40",
+ 800: "#663d2a",
+ 900: "#331f15",
+ },
+ danger: {
+ DEFAULT: "#ee0a24",
+ 50: "#fdf2f2",
+ 100: "#fce5e5",
+ 200: "#f9caca",
+ 300: "#f6b0b0",
+ 400: "#f39595",
+ 500: "#ee0a24",
+ 600: "#be081d",
+ 700: "#8f0616",
+ 800: "#5f040e",
+ 900: "#300207",
+ },
+ gray: {
+ 50: "#fafafa",
+ 100: "#f5f5f5",
+ 200: "#e5e5e5",
+ 300: "#d4d4d4",
+ 400: "#a3a3a3",
+ 500: "#737373",
+ 600: "#525252",
+ 700: "#404040",
+ 800: "#262626",
+ 900: "#171717",
+ },
+ },
+ fontFamily: {
+ sans: [
+ "Inter",
+ "-apple-system",
+ "BlinkMacSystemFont",
+ "Segoe UI",
+ "Roboto",
+ "Oxygen",
+ "Ubuntu",
+ "Cantarell",
+ "Fira Sans",
+ "Droid Sans",
+ "Helvetica Neue",
+ "sans-serif",
+ ],
+ },
+ },
+ },
+ plugins: [],
+};
+
diff --git a/report-viewer/vite.config.js b/report-viewer/vite.config.js
new file mode 100644
index 0000000..c0968f1
--- /dev/null
+++ b/report-viewer/vite.config.js
@@ -0,0 +1,66 @@
+import { fileURLToPath, URL } from "node:url";
+import AutoImport from "unplugin-auto-import/vite";
+import Components from "unplugin-vue-components/vite";
+import { VantResolver } from "@vant/auto-import-resolver";
+import { defineConfig } from "vite";
+import vue from "@vitejs/plugin-vue";
+import vueJsx from "@vitejs/plugin-vue-jsx";
+
+export default defineConfig({
+ server: {
+ host: "0.0.0.0",
+ port: 3000,
+ strictPort: true,
+ },
+ build: {
+ target: 'es2015',
+ minify: 'terser',
+ terserOptions: {
+ compress: {
+ drop_console: true,
+ drop_debugger: true,
+ },
+ },
+ rollupOptions: {
+ output: {
+ manualChunks: {
+ vendor: ['vue', 'vue-router'],
+ vant: ['vant'],
+ utils: ['axios', 'lodash'],
+ charts: ['echarts', 'vue-echarts'],
+ },
+ },
+ },
+ cssCodeSplit: true,
+ assetsInlineLimit: 4096,
+ },
+ plugins: [
+ vue(),
+ AutoImport({
+ imports: [
+ "vue",
+ "vue-router",
+ "@vueuse/core",
+ ],
+ dts: "src/auto-imports.d.ts",
+ dirs: [
+ "src/composables",
+ "src/components",
+ ],
+ resolvers: [VantResolver()],
+ }),
+ Components({
+ resolvers: [VantResolver()],
+ }),
+ vueJsx(),
+ ],
+ resolve: {
+ alias: {
+ "@": fileURLToPath(new URL("./src", import.meta.url)),
+ },
+ },
+ optimizeDeps: {
+ include: ['vue', 'vue-router', 'vant', 'axios'],
+ },
+});
+
diff --git a/report-viewer/使用说明.md b/report-viewer/使用说明.md
new file mode 100644
index 0000000..4262add
--- /dev/null
+++ b/report-viewer/使用说明.md
@@ -0,0 +1,198 @@
+# 报告查看器使用说明
+
+## 📋 已包含的组件
+
+本项目已包含以下报告组件的完整代码:
+
+1. **DWBG6A2C** - 司南报告(包含所有子模块)
+2. **FLXG0V4B** - 司法涉诉
+3. **QYGL3F8E** - 人企关系加强版(包含所有子模块)
+4. **JRZQ4B6C** - 信贷表现
+5. **JRZQ09J8** - 收入评估
+6. **QCXG9P1C** - 名下车辆
+7. **DWBG8B4D** - 谛听多维报告(包含所有子模块)
+
+## 📁 需要提供的文件清单
+
+如果要将这些组件提供给其他人使用,需要提供以下文件:
+
+### 1. 核心文件
+- ✅ `src/views/Report.vue` - 报告页面视图
+- ✅ `src/components/BaseReport.vue` - 报告主组件
+
+### 2. UI 业务组件目录
+- ✅ `src/ui/DWBG6A2C/` - 司南报告(完整目录)
+- ✅ `src/ui/CFLXG0V4B/` - 司法涉诉(完整目录)
+- ✅ `src/ui/CQYGL3F8E/` - 人企关系加强版(完整目录)
+- ✅ `src/ui/JRZQ4B6C/` - 信贷表现(完整目录)
+- ✅ `src/ui/JRZQ09J8/` - 收入评估(完整目录)
+- ✅ `src/ui/CQCXG9P1C.vue` - 名下车辆组件
+- ✅ `src/ui/CDWBG8B4D/` - 谛听多维报告(完整目录)
+
+### 3. 基础组件
+- ✅ `src/components/GaugeChart.vue` - 评分图表
+- ✅ `src/components/ShareReportButton.vue` - 分享按钮
+- ✅ `src/components/TitleBanner.vue` - 标题横幅
+- ✅ `src/components/VerificationCard.vue` - 验证卡片
+- ✅ `src/components/StyledTabs.vue` - 样式化标签页
+- ✅ `src/components/LEmpty.vue` - 空状态组件
+- ✅ `src/components/LRemark.vue` - 备注组件
+- ✅ `src/components/LTitle.vue` - 标题组件
+
+### 4. 工具和配置
+- ✅ `src/composables/useApiFetch.js` - API 请求工具
+- ✅ `src/assets/` - 所有样式文件和图片资源
+- ✅ `package.json` - 依赖配置
+- ✅ `vite.config.js` - Vite 配置
+- ✅ `tailwind.config.js` - Tailwind 配置
+- ✅ `postcss.config.js` - PostCSS 配置
+
+### 5. 入口文件
+- ✅ `src/main.js` - 应用入口
+- ✅ `src/App.vue` - 根组件
+- ✅ `index.html` - HTML 模板
+
+## 🚀 快速开始
+
+### 方式一:使用独立项目(推荐)
+
+1. 将整个 `report-viewer` 文件夹复制给别人
+2. 进入目录:`cd report-viewer`
+3. 安装依赖:`npm install` 或 `pnpm install`
+4. 启动开发服务器:`npm run dev`
+5. 访问:`http://localhost:3000/?orderId=xxx` 或 `http://localhost:3000/?orderNo=xxx`
+
+### 方式二:集成到现有项目
+
+1. 复制以下目录到你的项目中:
+ - `src/ui/` - 所有 UI 组件
+ - `src/components/` - 报告相关基础组件
+ - `src/views/Report.vue` - 报告视图
+ - `src/composables/useApiFetch.js` - API 工具(如果需要)
+
+2. 确保安装以下依赖:
+ ```json
+ {
+ "vue": "^3.5.12",
+ "vue-router": "^4.4.5",
+ "vant": "^4.9.9",
+ "echarts": "^5.5.1",
+ "vue-echarts": "^7.0.3",
+ "@vueuse/core": "^11.3.0",
+ "axios": "^1.7.7",
+ "lodash": "^4.17.21",
+ "tailwindcss": "^3.4.15"
+ }
+ ```
+
+3. 配置路由(如果需要):
+ ```javascript
+ {
+ path: '/report',
+ component: () => import('@/views/Report.vue')
+ }
+ ```
+
+## ⚙️ 配置说明
+
+### API 地址配置
+
+编辑 `src/composables/useApiFetch.js`:
+
+```javascript
+const useApiFetch = createFetch({
+ baseUrl: "/api/v1", // 修改为你的 API 地址
+ // ...
+});
+```
+
+### 路由参数
+
+报告页面支持以下 URL 参数:
+
+- `orderId` - 订单ID(数字)
+- `orderNo` - 订单号(字符串)
+- `out_trade_no` - 交易订单号(字符串)
+- `order_id` - 订单ID(字符串,从查询参数获取)
+
+### 使用示例
+
+```javascript
+// 在组件中使用 BaseReport
+import BaseReport from '@/components/BaseReport.vue'
+
+
+```
+
+## 📦 项目结构
+
+```
+report-viewer/
+├── src/
+│ ├── components/ # 基础组件
+│ │ ├── BaseReport.vue # ⭐ 核心组件
+│ │ ├── GaugeChart.vue
+│ │ └── ...
+│ ├── views/
+│ │ └── Report.vue # ⭐ 报告页面
+│ ├── ui/ # ⭐ 业务组件
+│ │ ├── DWBG6A2C/ # 司南报告
+│ │ ├── CFLXG0V4B/ # 司法涉诉
+│ │ ├── CQYGL3F8E/ # 人企关系加强版
+│ │ ├── JRZQ4B6C/ # 信贷表现
+│ │ ├── JRZQ09J8/ # 收入评估
+│ │ ├── CQCXG9P1C.vue # 名下车辆
+│ │ └── CDWBG8B4D/ # 谛听多维报告
+│ ├── composables/
+│ │ └── useApiFetch.js # API 工具
+│ └── assets/ # 样式和图片
+│ ├── images/
+│ └── *.css
+├── package.json
+├── vite.config.js
+├── tailwind.config.js
+└── README.md
+```
+
+## 🔧 注意事项
+
+1. **图片资源**:确保所有图片文件路径正确,特别是背景图片
+2. **API 接口**:需要根据实际后端 API 调整请求地址和格式
+3. **样式依赖**:项目依赖 Tailwind CSS 和 Vant UI,确保正确引入
+4. **浏览器兼容**:需要现代浏览器支持(ES2015+)
+5. **Token 认证**:如果需要认证,确保在 localStorage 中设置 token
+
+## 🐛 常见问题
+
+### Q: 组件导入失败?
+A: 检查路径别名 `@` 是否正确配置在 `vite.config.js` 中
+
+### Q: 样式不生效?
+A: 确保 `tailwind.config.js` 中包含了正确的 content 路径
+
+### Q: API 请求失败?
+A: 检查 `useApiFetch.js` 中的 `baseUrl` 配置和 CORS 设置
+
+### Q: 图片加载失败?
+A: 检查图片路径是否正确,确保图片文件已复制到 `src/assets/images/` 目录
+
+## 📞 技术支持
+
+如有问题,请检查:
+1. 控制台错误信息
+2. 网络请求是否正常
+3. 依赖是否正确安装
+4. 文件路径是否正确
+
+---
+
+**提示**:这是一个独立的 Vue3 项目,可以直接运行,也可以集成到现有项目中。
+
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..0b8c86c
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,216 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/api/user.js b/src/api/user.js
new file mode 100644
index 0000000..860ee29
--- /dev/null
+++ b/src/api/user.js
@@ -0,0 +1,15 @@
+import axios from "axios";
+
+// 获取API基础URL
+const baseURL = import.meta.env.VITE_API_BASE_URL || "";
+
+// 注销账号API
+export function cancelAccount() {
+ return axios({
+ method: "post",
+ url: `${baseURL}/api/user/cancel`,
+ headers: {
+ Authorization: `Bearer ${localStorage.getItem("token")}`,
+ },
+ });
+}
diff --git a/src/assets/base.css b/src/assets/base.css
new file mode 100644
index 0000000..cdad13a
--- /dev/null
+++ b/src/assets/base.css
@@ -0,0 +1,26 @@
+*,
+*::before,
+*::after {
+ box-sizing: border-box;
+ margin: 0;
+ font-weight: normal;
+}
+html {
+ margin: auto !important;
+ @apply max-w-lg;
+ /* 确保在缩放时保持响应式 */
+ min-width: 320px;
+}
+body {
+ background-color: #f8f8f8;
+ min-height: 100vh;
+ transition: color 0.5s, background-color 0.5s;
+ line-height: 1.6;
+ font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
+ Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue",
+ sans-serif;
+ font-size: 15px;
+ text-rendering: optimizeLegibility;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
diff --git a/src/assets/colors.css b/src/assets/colors.css
new file mode 100644
index 0000000..830f175
--- /dev/null
+++ b/src/assets/colors.css
@@ -0,0 +1,211 @@
+/*
+ * 统一颜色变量管理文件
+ * 用于规范化项目中的所有颜色使用
+ * 支持主题切换和颜色统一管理
+ */
+
+:root {
+ /* ===== 主题色系 ===== */
+ --color-primary: #5d7eeb;
+ --color-primary-50: #f0f3ff;
+ --color-primary-100: #e1e8ff;
+ --color-primary-200: #c3d1ff;
+ --color-primary-300: #a5baff;
+ --color-primary-400: #87a3ff;
+ --color-primary-500: #5d7eeb;
+ --color-primary-600: #4a63bc;
+ --color-primary-700: #38488d;
+ --color-primary-800: #252d5e;
+ --color-primary-900: #13122f;
+
+ /* 主题色透明度变体 */
+ --color-primary-light: rgba(93, 126, 235, 0.1);
+ --color-primary-medium: rgba(93, 126, 235, 0.15);
+ --color-primary-dark: rgba(93, 126, 235, 0.8);
+
+ /* ===== 语义化颜色 ===== */
+ --color-success: #07c160;
+ --color-success-50: #f0f9f0;
+ --color-success-100: #e1f5e1;
+ --color-success-200: #c3ebc3;
+ --color-success-300: #a5e1a5;
+ --color-success-400: #87d787;
+ --color-success-500: #07c160;
+ --color-success-600: #059a4c;
+ --color-success-700: #047338;
+ --color-success-800: #024c24;
+ --color-success-900: #012510;
+ --color-success-light: rgba(7, 193, 96, 0.1);
+ --color-success-dark: rgba(7, 193, 96, 0.8);
+
+ --color-warning: #ff976a;
+ --color-warning-50: #fff5f0;
+ --color-warning-100: #ffebe1;
+ --color-warning-200: #ffd7c3;
+ --color-warning-300: #ffc3a5;
+ --color-warning-400: #ffaf87;
+ --color-warning-500: #ff976a;
+ --color-warning-600: #cc7955;
+ --color-warning-700: #995b40;
+ --color-warning-800: #663d2a;
+ --color-warning-900: #331f15;
+ --color-warning-light: rgba(255, 151, 106, 0.1);
+ --color-warning-dark: rgba(255, 151, 106, 0.8);
+
+ --color-danger: #ee0a24;
+ --color-danger-light: rgba(238, 10, 36, 0.1);
+ --color-danger-dark: rgba(238, 10, 36, 0.8);
+
+ --color-info: #1989fa;
+ --color-info-light: rgba(25, 137, 250, 0.1);
+ --color-info-dark: rgba(25, 137, 250, 0.8);
+
+ /* ===== 中性色系 ===== */
+ --color-gray-50: #fafafa;
+ --color-gray-100: #f5f5f5;
+ --color-gray-200: #e5e5e5;
+ --color-gray-300: #d4d4d4;
+ --color-gray-400: #a3a3a3;
+ --color-gray-500: #737373;
+ --color-gray-600: #525252;
+ --color-gray-700: #404040;
+ --color-gray-800: #262626;
+ --color-gray-900: #171717;
+
+ /* ===== 文本颜色 ===== */
+ --color-text-primary: #323233;
+ --color-text-secondary: #646566;
+ --color-text-tertiary: #969799;
+ --color-text-quaternary: #c8c9cc;
+ --color-text-disabled: #c8c9cc;
+ --color-text-white: #ffffff;
+
+ /* ===== 背景颜色 ===== */
+ --color-bg-primary: #ffffff;
+ --color-bg-secondary: #fafafa;
+ --color-bg-tertiary: #f8f8f8;
+ --color-bg-quaternary: #f2f3f5;
+ --color-bg-overlay: rgba(0, 0, 0, 0.5);
+ --color-bg-mask: rgba(0, 0, 0, 0.8);
+
+ /* ===== 边框颜色 ===== */
+ --color-border-primary: #ebedf0;
+ --color-border-secondary: #f2f3f5;
+ --color-border-tertiary: #dcdee0;
+ --color-border-focus: var(--color-primary);
+
+ /* ===== 状态颜色 ===== */
+ --color-active: #f2f3f5;
+ --color-hover: rgba(0, 0, 0, 0.05);
+ --color-focus: var(--color-primary-light);
+
+ /* ===== 阴影颜色 ===== */
+ --color-shadow-light: rgba(0, 0, 0, 0.1);
+ --color-shadow-medium: rgba(0, 0, 0, 0.15);
+ --color-shadow-dark: rgba(0, 0, 0, 0.2);
+
+ /* ===== 业务特定颜色 ===== */
+ --color-service-personal: #5d7eeb; /* 个人大数据 */
+ --color-service-company: #6b9df9; /* 小微企业 */
+ --color-service-loan: #e1a0e4; /* 贷前风险 */
+
+ /* ===== 渐变色彩 ===== */
+ --gradient-primary: linear-gradient(
+ 135deg,
+ var(--color-primary-400),
+ var(--color-primary-600)
+ );
+ --gradient-success: linear-gradient(
+ 135deg,
+ var(--color-success),
+ var(--color-success-dark)
+ );
+ --gradient-warning: linear-gradient(
+ 135deg,
+ var(--color-warning),
+ var(--color-warning-dark)
+ );
+ --gradient-danger: linear-gradient(
+ 135deg,
+ var(--color-danger),
+ var(--color-danger-dark)
+ );
+}
+
+/* ===== 暗色主题支持 ===== */
+@media (prefers-color-scheme: dark) {
+ :root {
+ --color-text-primary: #ffffff;
+ --color-text-secondary: #e5e5e5;
+ --color-text-tertiary: #a3a3a3;
+ --color-text-quaternary: #737373;
+
+ --color-bg-primary: #1a1a1a;
+ --color-bg-secondary: #262626;
+ --color-bg-tertiary: #404040;
+ --color-bg-quaternary: #525252;
+
+ --color-border-primary: #404040;
+ --color-border-secondary: #525252;
+ --color-border-tertiary: #737373;
+ }
+}
+
+/* ===== 工具类 ===== */
+.text-primary {
+ color: var(--color-primary) !important;
+}
+.text-success {
+ color: var(--color-success) !important;
+}
+.text-warning {
+ color: var(--color-warning) !important;
+}
+.text-danger {
+ color: var(--color-danger) !important;
+}
+.text-info {
+ color: var(--color-info) !important;
+}
+
+.bg-primary {
+ background-color: var(--color-primary) !important;
+}
+.bg-success {
+ background-color: var(--color-success) !important;
+}
+.bg-warning {
+ background-color: var(--color-warning) !important;
+}
+.bg-danger {
+ background-color: var(--color-danger) !important;
+}
+.bg-info {
+ background-color: var(--color-info) !important;
+}
+
+.border-primary {
+ border-color: var(--color-primary) !important;
+}
+.border-success {
+ border-color: var(--color-success) !important;
+}
+.border-warning {
+ border-color: var(--color-warning) !important;
+}
+.border-danger {
+ border-color: var(--color-danger) !important;
+}
+.border-info {
+ border-color: var(--color-info) !important;
+}
+
+/* ===== 响应式颜色工具类 ===== */
+@media (max-width: 768px) {
+ .text-primary-mobile {
+ color: var(--color-primary) !important;
+ }
+ .bg-primary-mobile {
+ background-color: var(--color-primary) !important;
+ }
+}
diff --git a/src/assets/images/banner.jpg b/src/assets/images/banner.jpg
new file mode 100644
index 0000000..735852e
Binary files /dev/null and b/src/assets/images/banner.jpg differ
diff --git a/src/assets/images/bg_2.png b/src/assets/images/bg_2.png
new file mode 100644
index 0000000..9b3befe
Binary files /dev/null and b/src/assets/images/bg_2.png differ
diff --git a/src/assets/images/bg_icon.png b/src/assets/images/bg_icon.png
new file mode 100644
index 0000000..44bd467
Binary files /dev/null and b/src/assets/images/bg_icon.png differ
diff --git a/src/assets/images/company_bg.png b/src/assets/images/company_bg.png
new file mode 100644
index 0000000..cc76599
Binary files /dev/null and b/src/assets/images/company_bg.png differ
diff --git a/src/assets/images/empty.svg b/src/assets/images/empty.svg
new file mode 100644
index 0000000..fbecc14
--- /dev/null
+++ b/src/assets/images/empty.svg
@@ -0,0 +1,75 @@
+
+ 空空如也
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/assets/images/favicon.ico b/src/assets/images/favicon.ico
new file mode 100644
index 0000000..f0ae5d6
Binary files /dev/null and b/src/assets/images/favicon.ico differ
diff --git a/src/assets/images/gdrqgx_icon.svg b/src/assets/images/gdrqgx_icon.svg
new file mode 100644
index 0000000..fa64f1a
--- /dev/null
+++ b/src/assets/images/gdrqgx_icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/grbl_icon.svg b/src/assets/images/grbl_icon.svg
new file mode 100644
index 0000000..09f3a67
--- /dev/null
+++ b/src/assets/images/grbl_icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/grss_icon.svg b/src/assets/images/grss_icon.svg
new file mode 100644
index 0000000..2c5296e
--- /dev/null
+++ b/src/assets/images/grss_icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/head_shot.webp b/src/assets/images/head_shot.webp
new file mode 100644
index 0000000..50a540e
Binary files /dev/null and b/src/assets/images/head_shot.webp differ
diff --git a/src/assets/images/homelayout/index.png b/src/assets/images/homelayout/index.png
new file mode 100644
index 0000000..e5b097a
Binary files /dev/null and b/src/assets/images/homelayout/index.png differ
diff --git a/src/assets/images/homelayout/index_active.png b/src/assets/images/homelayout/index_active.png
new file mode 100644
index 0000000..5c42521
Binary files /dev/null and b/src/assets/images/homelayout/index_active.png differ
diff --git a/src/assets/images/homelayout/me.png b/src/assets/images/homelayout/me.png
new file mode 100644
index 0000000..dc3c6b3
Binary files /dev/null and b/src/assets/images/homelayout/me.png differ
diff --git a/src/assets/images/homelayout/me_active.png b/src/assets/images/homelayout/me_active.png
new file mode 100644
index 0000000..09b9437
Binary files /dev/null and b/src/assets/images/homelayout/me_active.png differ
diff --git a/src/assets/images/homelayout/promote.png b/src/assets/images/homelayout/promote.png
new file mode 100644
index 0000000..8cd7420
Binary files /dev/null and b/src/assets/images/homelayout/promote.png differ
diff --git a/src/assets/images/homelayout/promote_active.png b/src/assets/images/homelayout/promote_active.png
new file mode 100644
index 0000000..722136b
Binary files /dev/null and b/src/assets/images/homelayout/promote_active.png differ
diff --git a/src/assets/images/homelayout/ts.png b/src/assets/images/homelayout/ts.png
new file mode 100644
index 0000000..ea73a67
Binary files /dev/null and b/src/assets/images/homelayout/ts.png differ
diff --git a/src/assets/images/icon_1.png b/src/assets/images/icon_1.png
new file mode 100644
index 0000000..7298238
Binary files /dev/null and b/src/assets/images/icon_1.png differ
diff --git a/src/assets/images/icon_2.png b/src/assets/images/icon_2.png
new file mode 100644
index 0000000..964afe8
Binary files /dev/null and b/src/assets/images/icon_2.png differ
diff --git a/src/assets/images/icon_3.png b/src/assets/images/icon_3.png
new file mode 100644
index 0000000..e1419b2
Binary files /dev/null and b/src/assets/images/icon_3.png differ
diff --git a/src/assets/images/icon_4.png b/src/assets/images/icon_4.png
new file mode 100644
index 0000000..ff225f2
Binary files /dev/null and b/src/assets/images/icon_4.png differ
diff --git a/src/assets/images/icon_bg.svg b/src/assets/images/icon_bg.svg
new file mode 100644
index 0000000..fcd561c
--- /dev/null
+++ b/src/assets/images/icon_bg.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/icon_bz.svg b/src/assets/images/icon_bz.svg
new file mode 100644
index 0000000..4daa201
--- /dev/null
+++ b/src/assets/images/icon_bz.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/icon_cwhy.svg b/src/assets/images/icon_cwhy.svg
new file mode 100644
index 0000000..71bb55f
--- /dev/null
+++ b/src/assets/images/icon_cwhy.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/icon_index_apistore.svg b/src/assets/images/icon_index_apistore.svg
new file mode 100644
index 0000000..da95d6e
--- /dev/null
+++ b/src/assets/images/icon_index_apistore.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/icon_index_chacheliang.svg b/src/assets/images/icon_index_chacheliang.svg
new file mode 100644
index 0000000..2bff239
--- /dev/null
+++ b/src/assets/images/icon_index_chacheliang.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/icon_lxkf.svg b/src/assets/images/icon_lxkf.svg
new file mode 100644
index 0000000..75f0724
--- /dev/null
+++ b/src/assets/images/icon_lxkf.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/icon_share_friends.svg b/src/assets/images/icon_share_friends.svg
new file mode 100644
index 0000000..8e8ccb9
--- /dev/null
+++ b/src/assets/images/icon_share_friends.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/icon_share_img.svg b/src/assets/images/icon_share_img.svg
new file mode 100644
index 0000000..e71bc1f
--- /dev/null
+++ b/src/assets/images/icon_share_img.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/icon_share_url.svg b/src/assets/images/icon_share_url.svg
new file mode 100644
index 0000000..0469cfa
--- /dev/null
+++ b/src/assets/images/icon_share_url.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/icon_share_wechat.svg b/src/assets/images/icon_share_wechat.svg
new file mode 100644
index 0000000..ecbc839
--- /dev/null
+++ b/src/assets/images/icon_share_wechat.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/icon_srmx.svg b/src/assets/images/icon_srmx.svg
new file mode 100644
index 0000000..f29166b
--- /dev/null
+++ b/src/assets/images/icon_srmx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/icon_tg.svg b/src/assets/images/icon_tg.svg
new file mode 100644
index 0000000..7e39ed9
--- /dev/null
+++ b/src/assets/images/icon_tg.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/icon_wytx.svg b/src/assets/images/icon_wytx.svg
new file mode 100644
index 0000000..33ef556
--- /dev/null
+++ b/src/assets/images/icon_wytx.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/icon_xj.svg b/src/assets/images/icon_xj.svg
new file mode 100644
index 0000000..bb43ad0
--- /dev/null
+++ b/src/assets/images/icon_xj.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/index/Frame (1).png b/src/assets/images/index/Frame (1).png
new file mode 100644
index 0000000..c2d5212
Binary files /dev/null and b/src/assets/images/index/Frame (1).png differ
diff --git a/src/assets/images/index/banner.jpg b/src/assets/images/index/banner.jpg
new file mode 100644
index 0000000..735852e
Binary files /dev/null and b/src/assets/images/index/banner.jpg differ
diff --git a/src/assets/images/index/bg_icon.png b/src/assets/images/index/bg_icon.png
new file mode 100644
index 0000000..f482f23
Binary files /dev/null and b/src/assets/images/index/bg_icon.png differ
diff --git a/src/assets/images/index/bzzx.png b/src/assets/images/index/bzzx.png
new file mode 100644
index 0000000..a19de9a
Binary files /dev/null and b/src/assets/images/index/bzzx.png differ
diff --git a/src/assets/images/index/company_bg.png b/src/assets/images/index/company_bg.png
new file mode 100644
index 0000000..76ea2dd
Binary files /dev/null and b/src/assets/images/index/company_bg.png differ
diff --git a/src/assets/images/index/cwhy.png b/src/assets/images/index/cwhy.png
new file mode 100644
index 0000000..75f3c8a
Binary files /dev/null and b/src/assets/images/index/cwhy.png differ
diff --git a/src/assets/images/index/go_icon.png b/src/assets/images/index/go_icon.png
new file mode 100644
index 0000000..c2d5212
Binary files /dev/null and b/src/assets/images/index/go_icon.png differ
diff --git a/src/assets/images/index/housekeeping_risk_bg.png b/src/assets/images/index/housekeeping_risk_bg.png
new file mode 100644
index 0000000..6ed1a5a
Binary files /dev/null and b/src/assets/images/index/housekeeping_risk_bg.png differ
diff --git a/src/assets/images/index/loan_check_bg.png b/src/assets/images/index/loan_check_bg.png
new file mode 100644
index 0000000..8beb7e8
Binary files /dev/null and b/src/assets/images/index/loan_check_bg.png differ
diff --git a/src/assets/images/index/lxkf.png b/src/assets/images/index/lxkf.png
new file mode 100644
index 0000000..23719a4
Binary files /dev/null and b/src/assets/images/index/lxkf.png differ
diff --git a/src/assets/images/index/marriage_risk_bg.png b/src/assets/images/index/marriage_risk_bg.png
new file mode 100644
index 0000000..5227eff
Binary files /dev/null and b/src/assets/images/index/marriage_risk_bg.png differ
diff --git a/src/assets/images/index/personal_data_bg.png b/src/assets/images/index/personal_data_bg.png
new file mode 100644
index 0000000..098d627
Binary files /dev/null and b/src/assets/images/index/personal_data_bg.png differ
diff --git a/src/assets/images/index/preloan_risk_bg.png b/src/assets/images/index/preloan_risk_bg.png
new file mode 100644
index 0000000..68202c0
Binary files /dev/null and b/src/assets/images/index/preloan_risk_bg.png differ
diff --git a/src/assets/images/index/right.png b/src/assets/images/index/right.png
new file mode 100644
index 0000000..c947739
Binary files /dev/null and b/src/assets/images/index/right.png differ
diff --git a/src/assets/images/index/srmx.png b/src/assets/images/index/srmx.png
new file mode 100644
index 0000000..bb02375
Binary files /dev/null and b/src/assets/images/index/srmx.png differ
diff --git a/src/assets/images/index/tgbg.png b/src/assets/images/index/tgbg.png
new file mode 100644
index 0000000..39948fb
Binary files /dev/null and b/src/assets/images/index/tgbg.png differ
diff --git a/src/assets/images/index/wdbg.png b/src/assets/images/index/wdbg.png
new file mode 100644
index 0000000..23b44c3
Binary files /dev/null and b/src/assets/images/index/wdbg.png differ
diff --git a/src/assets/images/index/wytx.png b/src/assets/images/index/wytx.png
new file mode 100644
index 0000000..f193660
Binary files /dev/null and b/src/assets/images/index/wytx.png differ
diff --git a/src/assets/images/index/yqhy.png b/src/assets/images/index/yqhy.png
new file mode 100644
index 0000000..6bc8e35
Binary files /dev/null and b/src/assets/images/index/yqhy.png differ
diff --git a/src/assets/images/index_a_banner.png b/src/assets/images/index_a_banner.png
new file mode 100644
index 0000000..09ac268
Binary files /dev/null and b/src/assets/images/index_a_banner.png differ
diff --git a/src/assets/images/index_b_banner.png b/src/assets/images/index_b_banner.png
new file mode 100644
index 0000000..c7daee7
Binary files /dev/null and b/src/assets/images/index_b_banner.png differ
diff --git a/src/assets/images/index_icon_1.png b/src/assets/images/index_icon_1.png
new file mode 100644
index 0000000..a0e3ef9
Binary files /dev/null and b/src/assets/images/index_icon_1.png differ
diff --git a/src/assets/images/index_icon_2.png b/src/assets/images/index_icon_2.png
new file mode 100644
index 0000000..63d9d00
Binary files /dev/null and b/src/assets/images/index_icon_2.png differ
diff --git a/src/assets/images/index_icon_3.png b/src/assets/images/index_icon_3.png
new file mode 100644
index 0000000..537c24f
Binary files /dev/null and b/src/assets/images/index_icon_3.png differ
diff --git a/src/assets/images/index_icon_4.png b/src/assets/images/index_icon_4.png
new file mode 100644
index 0000000..e4fde09
Binary files /dev/null and b/src/assets/images/index_icon_4.png differ
diff --git a/src/assets/images/index_icon_4_1.png b/src/assets/images/index_icon_4_1.png
new file mode 100644
index 0000000..cd62356
Binary files /dev/null and b/src/assets/images/index_icon_4_1.png differ
diff --git a/src/assets/images/index_icon_6.png b/src/assets/images/index_icon_6.png
new file mode 100644
index 0000000..bd7f950
Binary files /dev/null and b/src/assets/images/index_icon_6.png differ
diff --git a/src/assets/images/invitation.png b/src/assets/images/invitation.png
new file mode 100644
index 0000000..183a516
Binary files /dev/null and b/src/assets/images/invitation.png differ
diff --git a/src/assets/images/invitation_agent_apply.png b/src/assets/images/invitation_agent_apply.png
new file mode 100644
index 0000000..63fff5c
Binary files /dev/null and b/src/assets/images/invitation_agent_apply.png differ
diff --git a/src/assets/images/llqdk.jpg b/src/assets/images/llqdk.jpg
new file mode 100644
index 0000000..2966112
Binary files /dev/null and b/src/assets/images/llqdk.jpg differ
diff --git a/src/assets/images/loan_check_bg.png b/src/assets/images/loan_check_bg.png
new file mode 100644
index 0000000..9df947d
Binary files /dev/null and b/src/assets/images/loan_check_bg.png differ
diff --git a/src/assets/images/login_bg.png b/src/assets/images/login_bg.png
new file mode 100644
index 0000000..976b7b7
Binary files /dev/null and b/src/assets/images/login_bg.png differ
diff --git a/src/assets/images/logo.png b/src/assets/images/logo.png
new file mode 100644
index 0000000..3859c5a
Binary files /dev/null and b/src/assets/images/logo.png differ
diff --git a/src/assets/images/me/apisd.png b/src/assets/images/me/apisd.png
new file mode 100644
index 0000000..54fb40f
Binary files /dev/null and b/src/assets/images/me/apisd.png differ
diff --git a/src/assets/images/me/bg.png b/src/assets/images/me/bg.png
new file mode 100644
index 0000000..cbb4b70
Binary files /dev/null and b/src/assets/images/me/bg.png differ
diff --git a/src/assets/images/me/ckjlmx.png b/src/assets/images/me/ckjlmx.png
new file mode 100644
index 0000000..0a3a70c
Binary files /dev/null and b/src/assets/images/me/ckjlmx.png differ
diff --git a/src/assets/images/me/cksymx.png b/src/assets/images/me/cksymx.png
new file mode 100644
index 0000000..778a176
Binary files /dev/null and b/src/assets/images/me/cksymx.png differ
diff --git a/src/assets/images/me/ckwdxj.png b/src/assets/images/me/ckwdxj.png
new file mode 100644
index 0000000..9da5984
Binary files /dev/null and b/src/assets/images/me/ckwdxj.png differ
diff --git a/src/assets/images/me/cwbg.png b/src/assets/images/me/cwbg.png
new file mode 100644
index 0000000..ab86132
Binary files /dev/null and b/src/assets/images/me/cwbg.png differ
diff --git a/src/assets/images/me/djje.png b/src/assets/images/me/djje.png
new file mode 100644
index 0000000..c36187a
Binary files /dev/null and b/src/assets/images/me/djje.png differ
diff --git a/src/assets/images/me/dlbgpz.png b/src/assets/images/me/dlbgpz.png
new file mode 100644
index 0000000..8a5c25a
Binary files /dev/null and b/src/assets/images/me/dlbgpz.png differ
diff --git a/src/assets/images/me/hyxjjl.png b/src/assets/images/me/hyxjjl.png
new file mode 100644
index 0000000..82e35c9
Binary files /dev/null and b/src/assets/images/me/hyxjjl.png differ
diff --git a/src/assets/images/me/jt.png b/src/assets/images/me/jt.png
new file mode 100644
index 0000000..b8ca84c
Binary files /dev/null and b/src/assets/images/me/jt.png differ
diff --git a/src/assets/images/me/login_bg.png b/src/assets/images/me/login_bg.png
new file mode 100644
index 0000000..46ae1bd
Binary files /dev/null and b/src/assets/images/me/login_bg.png differ
diff --git a/src/assets/images/me/logout.png b/src/assets/images/me/logout.png
new file mode 100644
index 0000000..eb540fc
Binary files /dev/null and b/src/assets/images/me/logout.png differ
diff --git a/src/assets/images/me/lxkf.png b/src/assets/images/me/lxkf.png
new file mode 100644
index 0000000..395e17c
Binary files /dev/null and b/src/assets/images/me/lxkf.png differ
diff --git a/src/assets/images/me/qyfkyj.png b/src/assets/images/me/qyfkyj.png
new file mode 100644
index 0000000..1630b9d
Binary files /dev/null and b/src/assets/images/me/qyfkyj.png differ
diff --git a/src/assets/images/me/right.png b/src/assets/images/me/right.png
new file mode 100644
index 0000000..743472b
Binary files /dev/null and b/src/assets/images/me/right.png differ
diff --git a/src/assets/images/me/swhz.png b/src/assets/images/me/swhz.png
new file mode 100644
index 0000000..37cb91f
Binary files /dev/null and b/src/assets/images/me/swhz.png differ
diff --git a/src/assets/images/me/sy.png b/src/assets/images/me/sy.png
new file mode 100644
index 0000000..5dea249
Binary files /dev/null and b/src/assets/images/me/sy.png differ
diff --git a/src/assets/images/me/tcdl.png b/src/assets/images/me/tcdl.png
new file mode 100644
index 0000000..74bb15c
Binary files /dev/null and b/src/assets/images/me/tcdl.png differ
diff --git a/src/assets/images/me/tx.png b/src/assets/images/me/tx.png
new file mode 100644
index 0000000..64a2563
Binary files /dev/null and b/src/assets/images/me/tx.png differ
diff --git a/src/assets/images/me/txjl.png b/src/assets/images/me/txjl.png
new file mode 100644
index 0000000..1ceeab2
Binary files /dev/null and b/src/assets/images/me/txjl.png differ
diff --git a/src/assets/images/me/user.png b/src/assets/images/me/user.png
new file mode 100644
index 0000000..0f72606
Binary files /dev/null and b/src/assets/images/me/user.png differ
diff --git a/src/assets/images/me/wdbg.png b/src/assets/images/me/wdbg.png
new file mode 100644
index 0000000..926453c
Binary files /dev/null and b/src/assets/images/me/wdbg.png differ
diff --git a/src/assets/images/me/xfhy.png b/src/assets/images/me/xfhy.png
new file mode 100644
index 0000000..4037ea3
Binary files /dev/null and b/src/assets/images/me/xfhy.png differ
diff --git a/src/assets/images/me/xjtgjl.png b/src/assets/images/me/xjtgjl.png
new file mode 100644
index 0000000..addaa90
Binary files /dev/null and b/src/assets/images/me/xjtgjl.png differ
diff --git a/src/assets/images/me/xjzhjl.png b/src/assets/images/me/xjzhjl.png
new file mode 100644
index 0000000..7276905
Binary files /dev/null and b/src/assets/images/me/xjzhjl.png differ
diff --git a/src/assets/images/me/xzhyjl.png b/src/assets/images/me/xzhyjl.png
new file mode 100644
index 0000000..422bebf
Binary files /dev/null and b/src/assets/images/me/xzhyjl.png differ
diff --git a/src/assets/images/me/ye.png b/src/assets/images/me/ye.png
new file mode 100644
index 0000000..c7288e2
Binary files /dev/null and b/src/assets/images/me/ye.png differ
diff --git a/src/assets/images/me/yhxy.png b/src/assets/images/me/yhxy.png
new file mode 100644
index 0000000..031a25a
Binary files /dev/null and b/src/assets/images/me/yhxy.png differ
diff --git a/src/assets/images/me/yszc.png b/src/assets/images/me/yszc.png
new file mode 100644
index 0000000..28a0007
Binary files /dev/null and b/src/assets/images/me/yszc.png differ
diff --git a/src/assets/images/me/yxbg.png b/src/assets/images/me/yxbg.png
new file mode 100644
index 0000000..0479486
Binary files /dev/null and b/src/assets/images/me/yxbg.png differ
diff --git a/src/assets/images/me/ztbgsy.png b/src/assets/images/me/ztbgsy.png
new file mode 100644
index 0000000..511146b
Binary files /dev/null and b/src/assets/images/me/ztbgsy.png differ
diff --git a/src/assets/images/mxcl_icon.svg b/src/assets/images/mxcl_icon.svg
new file mode 100644
index 0000000..c21e26a
--- /dev/null
+++ b/src/assets/images/mxcl_icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/pendding.svg b/src/assets/images/pendding.svg
new file mode 100644
index 0000000..2a182b1
--- /dev/null
+++ b/src/assets/images/pendding.svg
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/assets/images/personal_data_bg.png b/src/assets/images/personal_data_bg.png
new file mode 100644
index 0000000..d353b87
Binary files /dev/null and b/src/assets/images/personal_data_bg.png differ
diff --git a/src/assets/images/promote_bg.png b/src/assets/images/promote_bg.png
new file mode 100644
index 0000000..9087024
Binary files /dev/null and b/src/assets/images/promote_bg.png differ
diff --git a/src/assets/images/public_security_record_icon.png b/src/assets/images/public_security_record_icon.png
new file mode 100644
index 0000000..6fe667f
Binary files /dev/null and b/src/assets/images/public_security_record_icon.png differ
diff --git a/src/assets/images/qyss_icon.svg b/src/assets/images/qyss_icon.svg
new file mode 100644
index 0000000..d460c08
--- /dev/null
+++ b/src/assets/images/qyss_icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/rchy_icon.svg b/src/assets/images/rchy_icon.svg
new file mode 100644
index 0000000..4c67a50
--- /dev/null
+++ b/src/assets/images/rchy_icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/report/ajgl.png b/src/assets/images/report/ajgl.png
new file mode 100644
index 0000000..d8ce93d
Binary files /dev/null and b/src/assets/images/report/ajgl.png differ
diff --git a/src/assets/images/report/ajlxfb.png b/src/assets/images/report/ajlxfb.png
new file mode 100644
index 0000000..e012d69
Binary files /dev/null and b/src/assets/images/report/ajlxfb.png differ
diff --git a/src/assets/images/report/backgroundcheck_inquire_bg.png b/src/assets/images/report/backgroundcheck_inquire_bg.png
new file mode 100644
index 0000000..a786bfe
Binary files /dev/null and b/src/assets/images/report/backgroundcheck_inquire_bg.png differ
diff --git a/src/assets/images/report/backgroundcheck_report_bg.png b/src/assets/images/report/backgroundcheck_report_bg.png
new file mode 100644
index 0000000..5e5656f
Binary files /dev/null and b/src/assets/images/report/backgroundcheck_report_bg.png differ
diff --git a/src/assets/images/report/bysj.png b/src/assets/images/report/bysj.png
new file mode 100644
index 0000000..5918eaa
Binary files /dev/null and b/src/assets/images/report/bysj.png differ
diff --git a/src/assets/images/report/dkxwfx.png b/src/assets/images/report/dkxwfx.png
new file mode 100644
index 0000000..8ead64c
Binary files /dev/null and b/src/assets/images/report/dkxwfx.png differ
diff --git a/src/assets/images/report/dqfx_inquire_bg.jpg b/src/assets/images/report/dqfx_inquire_bg.jpg
new file mode 100644
index 0000000..951930a
Binary files /dev/null and b/src/assets/images/report/dqfx_inquire_bg.jpg differ
diff --git a/src/assets/images/report/dqfx_report_bg.jpg b/src/assets/images/report/dqfx_report_bg.jpg
new file mode 100644
index 0000000..6771500
Binary files /dev/null and b/src/assets/images/report/dqfx_report_bg.jpg differ
diff --git a/src/assets/images/report/dwtzls.png b/src/assets/images/report/dwtzls.png
new file mode 100644
index 0000000..f6e5008
Binary files /dev/null and b/src/assets/images/report/dwtzls.png differ
diff --git a/src/assets/images/report/fqzgz.png b/src/assets/images/report/fqzgz.png
new file mode 100644
index 0000000..52fbe22
Binary files /dev/null and b/src/assets/images/report/fqzgz.png differ
diff --git a/src/assets/images/report/fqzpf.png b/src/assets/images/report/fqzpf.png
new file mode 100644
index 0000000..2ef6d23
Binary files /dev/null and b/src/assets/images/report/fqzpf.png differ
diff --git a/src/assets/images/report/fsbq.png b/src/assets/images/report/fsbq.png
new file mode 100644
index 0000000..3a011a2
Binary files /dev/null and b/src/assets/images/report/fsbq.png differ
diff --git a/src/assets/images/report/fx.png b/src/assets/images/report/fx.png
new file mode 100644
index 0000000..b41d56d
Binary files /dev/null and b/src/assets/images/report/fx.png differ
diff --git a/src/assets/images/report/fxbs.png b/src/assets/images/report/fxbs.png
new file mode 100644
index 0000000..ea0b045
Binary files /dev/null and b/src/assets/images/report/fxbs.png differ
diff --git a/src/assets/images/report/fxgl.png b/src/assets/images/report/fxgl.png
new file mode 100644
index 0000000..cdbc0db
Binary files /dev/null and b/src/assets/images/report/fxgl.png differ
diff --git a/src/assets/images/report/fxmd.png b/src/assets/images/report/fxmd.png
new file mode 100644
index 0000000..ef3255d
Binary files /dev/null and b/src/assets/images/report/fxmd.png differ
diff --git a/src/assets/images/report/fxzbxq.png b/src/assets/images/report/fxzbxq.png
new file mode 100644
index 0000000..354b12f
Binary files /dev/null and b/src/assets/images/report/fxzbxq.png differ
diff --git a/src/assets/images/report/fxzl.png b/src/assets/images/report/fxzl.png
new file mode 100644
index 0000000..6139e37
Binary files /dev/null and b/src/assets/images/report/fxzl.png differ
diff --git a/src/assets/images/report/fybgt.png b/src/assets/images/report/fybgt.png
new file mode 100644
index 0000000..9460e11
Binary files /dev/null and b/src/assets/images/report/fybgt.png differ
diff --git a/src/assets/images/report/gazdryhy.png b/src/assets/images/report/gazdryhy.png
new file mode 100644
index 0000000..15d94e4
Binary files /dev/null and b/src/assets/images/report/gazdryhy.png differ
diff --git a/src/assets/images/report/gazdryhycp.png b/src/assets/images/report/gazdryhycp.png
new file mode 100644
index 0000000..2a4d02a
Binary files /dev/null and b/src/assets/images/report/gazdryhycp.png differ
diff --git a/src/assets/images/report/gfx.png b/src/assets/images/report/gfx.png
new file mode 100644
index 0000000..ce402b1
Binary files /dev/null and b/src/assets/images/report/gfx.png differ
diff --git a/src/assets/images/report/gl.png b/src/assets/images/report/gl.png
new file mode 100644
index 0000000..c2f9cab
Binary files /dev/null and b/src/assets/images/report/gl.png differ
diff --git a/src/assets/images/report/glfxjd.png b/src/assets/images/report/glfxjd.png
new file mode 100644
index 0000000..9f5d4a3
Binary files /dev/null and b/src/assets/images/report/glfxjd.png differ
diff --git a/src/assets/images/report/glfxjd2.png b/src/assets/images/report/glfxjd2.png
new file mode 100644
index 0000000..adb5429
Binary files /dev/null and b/src/assets/images/report/glfxjd2.png differ
diff --git a/src/assets/images/report/glsfz.png b/src/assets/images/report/glsfz.png
new file mode 100644
index 0000000..6852094
Binary files /dev/null and b/src/assets/images/report/glsfz.png differ
diff --git a/src/assets/images/report/glsjh.png b/src/assets/images/report/glsjh.png
new file mode 100644
index 0000000..ab59c59
Binary files /dev/null and b/src/assets/images/report/glsjh.png differ
diff --git a/src/assets/images/report/glzdryhy2.png b/src/assets/images/report/glzdryhy2.png
new file mode 100644
index 0000000..6a29b63
Binary files /dev/null and b/src/assets/images/report/glzdryhy2.png differ
diff --git a/src/assets/images/report/grdsj_inquire_bg.jpg b/src/assets/images/report/grdsj_inquire_bg.jpg
new file mode 100644
index 0000000..5d90eb2
Binary files /dev/null and b/src/assets/images/report/grdsj_inquire_bg.jpg differ
diff --git a/src/assets/images/report/grdsj_report_bg.jpg b/src/assets/images/report/grdsj_report_bg.jpg
new file mode 100644
index 0000000..197db31
Binary files /dev/null and b/src/assets/images/report/grdsj_report_bg.jpg differ
diff --git a/src/assets/images/report/gsdfx.png b/src/assets/images/report/gsdfx.png
new file mode 100644
index 0000000..6a59cc4
Binary files /dev/null and b/src/assets/images/report/gsdfx.png differ
diff --git a/src/assets/images/report/hktj.png b/src/assets/images/report/hktj.png
new file mode 100644
index 0000000..68ca536
Binary files /dev/null and b/src/assets/images/report/hktj.png differ
diff --git a/src/assets/images/report/hkylfx.png b/src/assets/images/report/hkylfx.png
new file mode 100644
index 0000000..095ae8a
Binary files /dev/null and b/src/assets/images/report/hkylfx.png differ
diff --git a/src/assets/images/report/homeservice_inquire_bg.jpg b/src/assets/images/report/homeservice_inquire_bg.jpg
new file mode 100644
index 0000000..82fb69c
Binary files /dev/null and b/src/assets/images/report/homeservice_inquire_bg.jpg differ
diff --git a/src/assets/images/report/homeservice_report_bg.jpg b/src/assets/images/report/homeservice_report_bg.jpg
new file mode 100644
index 0000000..48f861b
Binary files /dev/null and b/src/assets/images/report/homeservice_report_bg.jpg differ
diff --git a/src/assets/images/report/j24gyfkqk.png b/src/assets/images/report/j24gyfkqk.png
new file mode 100644
index 0000000..1eab157
Binary files /dev/null and b/src/assets/images/report/j24gyfkqk.png differ
diff --git a/src/assets/images/report/jdpg.png b/src/assets/images/report/jdpg.png
new file mode 100644
index 0000000..e0ade16
Binary files /dev/null and b/src/assets/images/report/jdpg.png differ
diff --git a/src/assets/images/report/jdpggl.png b/src/assets/images/report/jdpggl.png
new file mode 100644
index 0000000..2f9455a
Binary files /dev/null and b/src/assets/images/report/jdpggl.png differ
diff --git a/src/assets/images/report/jgfx.png b/src/assets/images/report/jgfx.png
new file mode 100644
index 0000000..55cab79
Binary files /dev/null and b/src/assets/images/report/jgfx.png differ
diff --git a/src/assets/images/report/jgztxx.png b/src/assets/images/report/jgztxx.png
new file mode 100644
index 0000000..d03b1e2
Binary files /dev/null and b/src/assets/images/report/jgztxx.png differ
diff --git a/src/assets/images/report/jyyc.png b/src/assets/images/report/jyyc.png
new file mode 100644
index 0000000..7d749e8
Binary files /dev/null and b/src/assets/images/report/jyyc.png differ
diff --git a/src/assets/images/report/khlxjdbx.png b/src/assets/images/report/khlxjdbx.png
new file mode 100644
index 0000000..56cbb65
Binary files /dev/null and b/src/assets/images/report/khlxjdbx.png differ
diff --git a/src/assets/images/report/lsjdxw.png b/src/assets/images/report/lsjdxw.png
new file mode 100644
index 0000000..b0fdd82
Binary files /dev/null and b/src/assets/images/report/lsjdxw.png differ
diff --git a/src/assets/images/report/lyqk.png b/src/assets/images/report/lyqk.png
new file mode 100644
index 0000000..4b2bf98
Binary files /dev/null and b/src/assets/images/report/lyqk.png differ
diff --git a/src/assets/images/report/lyxxxq.png b/src/assets/images/report/lyxxxq.png
new file mode 100644
index 0000000..38c797c
Binary files /dev/null and b/src/assets/images/report/lyxxxq.png differ
diff --git a/src/assets/images/report/marriage_inquire_bg.jpg b/src/assets/images/report/marriage_inquire_bg.jpg
new file mode 100644
index 0000000..db0ac26
Binary files /dev/null and b/src/assets/images/report/marriage_inquire_bg.jpg differ
diff --git a/src/assets/images/report/marriage_report_bg.jpg b/src/assets/images/report/marriage_report_bg.jpg
new file mode 100644
index 0000000..5752966
Binary files /dev/null and b/src/assets/images/report/marriage_report_bg.jpg differ
diff --git a/src/assets/images/report/ms.png b/src/assets/images/report/ms.png
new file mode 100644
index 0000000..fa7d7b0
Binary files /dev/null and b/src/assets/images/report/ms.png differ
diff --git a/src/assets/images/report/mzfxbz.png b/src/assets/images/report/mzfxbz.png
new file mode 100644
index 0000000..c98045b
Binary files /dev/null and b/src/assets/images/report/mzfxbz.png differ
diff --git a/src/assets/images/report/qsgg.png b/src/assets/images/report/qsgg.png
new file mode 100644
index 0000000..4666fde
Binary files /dev/null and b/src/assets/images/report/qsgg.png differ
diff --git a/src/assets/images/report/qspc.png b/src/assets/images/report/qspc.png
new file mode 100644
index 0000000..7cdf628
Binary files /dev/null and b/src/assets/images/report/qspc.png differ
diff --git a/src/assets/images/report/rkpm.png b/src/assets/images/report/rkpm.png
new file mode 100644
index 0000000..8ba7f91
Binary files /dev/null and b/src/assets/images/report/rkpm.png differ
diff --git a/src/assets/images/report/rzls.png b/src/assets/images/report/rzls.png
new file mode 100644
index 0000000..4b13c82
Binary files /dev/null and b/src/assets/images/report/rzls.png differ
diff --git a/src/assets/images/report/sagg.png b/src/assets/images/report/sagg.png
new file mode 100644
index 0000000..179e0c2
Binary files /dev/null and b/src/assets/images/report/sagg.png differ
diff --git a/src/assets/images/report/sdszhycp.png b/src/assets/images/report/sdszhycp.png
new file mode 100644
index 0000000..c49bc10
Binary files /dev/null and b/src/assets/images/report/sdszhycp.png differ
diff --git a/src/assets/images/report/sdszryhy.png b/src/assets/images/report/sdszryhy.png
new file mode 100644
index 0000000..ba9df65
Binary files /dev/null and b/src/assets/images/report/sdszryhy.png differ
diff --git a/src/assets/images/report/sfxxhy.png b/src/assets/images/report/sfxxhy.png
new file mode 100644
index 0000000..323da72
Binary files /dev/null and b/src/assets/images/report/sfxxhy.png differ
diff --git a/src/assets/images/report/sfz.png b/src/assets/images/report/sfz.png
new file mode 100644
index 0000000..f565538
Binary files /dev/null and b/src/assets/images/report/sfz.png differ
diff --git a/src/assets/images/report/shjy.png b/src/assets/images/report/shjy.png
new file mode 100644
index 0000000..2c9ee0c
Binary files /dev/null and b/src/assets/images/report/shjy.png differ
diff --git a/src/assets/images/report/sjh.png b/src/assets/images/report/sjh.png
new file mode 100644
index 0000000..17c053e
Binary files /dev/null and b/src/assets/images/report/sjh.png differ
diff --git a/src/assets/images/report/sjqsfx.png b/src/assets/images/report/sjqsfx.png
new file mode 100644
index 0000000..263b29d
Binary files /dev/null and b/src/assets/images/report/sjqsfx.png differ
diff --git a/src/assets/images/report/slbg_inquire_icon.png b/src/assets/images/report/slbg_inquire_icon.png
new file mode 100644
index 0000000..eb96d45
Binary files /dev/null and b/src/assets/images/report/slbg_inquire_icon.png differ
diff --git a/src/assets/images/report/srbq.png b/src/assets/images/report/srbq.png
new file mode 100644
index 0000000..e60b337
Binary files /dev/null and b/src/assets/images/report/srbq.png differ
diff --git a/src/assets/images/report/srpg.png b/src/assets/images/report/srpg.png
new file mode 100644
index 0000000..f3b3dc9
Binary files /dev/null and b/src/assets/images/report/srpg.png differ
diff --git a/src/assets/images/report/ssfxfx.png b/src/assets/images/report/ssfxfx.png
new file mode 100644
index 0000000..d7d3e6b
Binary files /dev/null and b/src/assets/images/report/ssfxfx.png differ
diff --git a/src/assets/images/report/ssfxztgl.png b/src/assets/images/report/ssfxztgl.png
new file mode 100644
index 0000000..eb78d68
Binary files /dev/null and b/src/assets/images/report/ssfxztgl.png differ
diff --git a/src/assets/images/report/sswf.png b/src/assets/images/report/sswf.png
new file mode 100644
index 0000000..816aeb1
Binary files /dev/null and b/src/assets/images/report/sswf.png differ
diff --git a/src/assets/images/report/swfx.png b/src/assets/images/report/swfx.png
new file mode 100644
index 0000000..3ad1954
Binary files /dev/null and b/src/assets/images/report/swfx.png differ
diff --git a/src/assets/images/report/sxaj.png b/src/assets/images/report/sxaj.png
new file mode 100644
index 0000000..700fe0a
Binary files /dev/null and b/src/assets/images/report/sxaj.png differ
diff --git a/src/assets/images/report/sxxq.png b/src/assets/images/report/sxxq.png
new file mode 100644
index 0000000..f0ac43c
Binary files /dev/null and b/src/assets/images/report/sxxq.png differ
diff --git a/src/assets/images/report/title.png b/src/assets/images/report/title.png
new file mode 100644
index 0000000..3e84f7f
Binary files /dev/null and b/src/assets/images/report/title.png differ
diff --git a/src/assets/images/report/title_inquire_bg.png b/src/assets/images/report/title_inquire_bg.png
new file mode 100644
index 0000000..472f6bb
Binary files /dev/null and b/src/assets/images/report/title_inquire_bg.png differ
diff --git a/src/assets/images/report/title_inquire_bg_green.png b/src/assets/images/report/title_inquire_bg_green.png
new file mode 100644
index 0000000..73eedbf
Binary files /dev/null and b/src/assets/images/report/title_inquire_bg_green.png differ
diff --git a/src/assets/images/report/title_inquire_bg_red.png b/src/assets/images/report/title_inquire_bg_red.png
new file mode 100644
index 0000000..f31ccbf
Binary files /dev/null and b/src/assets/images/report/title_inquire_bg_red.png differ
diff --git a/src/assets/images/report/wmz.png b/src/assets/images/report/wmz.png
new file mode 100644
index 0000000..7564469
Binary files /dev/null and b/src/assets/images/report/wmz.png differ
diff --git a/src/assets/images/report/wxts_icon.png b/src/assets/images/report/wxts_icon.png
new file mode 100644
index 0000000..d2da4b8
Binary files /dev/null and b/src/assets/images/report/wxts_icon.png differ
diff --git a/src/assets/images/report/xgaj.png b/src/assets/images/report/xgaj.png
new file mode 100644
index 0000000..73a1232
Binary files /dev/null and b/src/assets/images/report/xgaj.png differ
diff --git a/src/assets/images/report/xl.png b/src/assets/images/report/xl.png
new file mode 100644
index 0000000..59ca3dd
Binary files /dev/null and b/src/assets/images/report/xl.png differ
diff --git a/src/assets/images/report/xs.png b/src/assets/images/report/xs.png
new file mode 100644
index 0000000..27dc5bc
Binary files /dev/null and b/src/assets/images/report/xs.png differ
diff --git a/src/assets/images/report/xwqy_inquire_bg.jpg b/src/assets/images/report/xwqy_inquire_bg.jpg
new file mode 100644
index 0000000..973144d
Binary files /dev/null and b/src/assets/images/report/xwqy_inquire_bg.jpg differ
diff --git a/src/assets/images/report/xwqy_report_bg.jpg b/src/assets/images/report/xwqy_report_bg.jpg
new file mode 100644
index 0000000..a9f1613
Binary files /dev/null and b/src/assets/images/report/xwqy_report_bg.jpg differ
diff --git a/src/assets/images/report/xxlx.png b/src/assets/images/report/xxlx.png
new file mode 100644
index 0000000..bf3cd9c
Binary files /dev/null and b/src/assets/images/report/xxlx.png differ
diff --git a/src/assets/images/report/xxxs.png b/src/assets/images/report/xxxs.png
new file mode 100644
index 0000000..c5461ca
Binary files /dev/null and b/src/assets/images/report/xxxs.png differ
diff --git a/src/assets/images/report/xypf.png b/src/assets/images/report/xypf.png
new file mode 100644
index 0000000..efa7956
Binary files /dev/null and b/src/assets/images/report/xypf.png differ
diff --git a/src/assets/images/report/xypf2.png b/src/assets/images/report/xypf2.png
new file mode 100644
index 0000000..983f507
Binary files /dev/null and b/src/assets/images/report/xypf2.png differ
diff --git a/src/assets/images/report/xz.png b/src/assets/images/report/xz.png
new file mode 100644
index 0000000..039dd18
Binary files /dev/null and b/src/assets/images/report/xz.png differ
diff --git a/src/assets/images/report/xzcf.png b/src/assets/images/report/xzcf.png
new file mode 100644
index 0000000..542b1fe
Binary files /dev/null and b/src/assets/images/report/xzcf.png differ
diff --git a/src/assets/images/report/ycsjdjdbx.png b/src/assets/images/report/ycsjdjdbx.png
new file mode 100644
index 0000000..0ba9fcb
Binary files /dev/null and b/src/assets/images/report/ycsjdjdbx.png differ
diff --git a/src/assets/images/report/yqfx.png b/src/assets/images/report/yqfx.png
new file mode 100644
index 0000000..3d5a624
Binary files /dev/null and b/src/assets/images/report/yqfx.png differ
diff --git a/src/assets/images/report/yqfxgl.png b/src/assets/images/report/yqfxgl.png
new file mode 100644
index 0000000..3db496a
Binary files /dev/null and b/src/assets/images/report/yqfxgl.png differ
diff --git a/src/assets/images/report/yqsjfb.png b/src/assets/images/report/yqsjfb.png
new file mode 100644
index 0000000..a8638af
Binary files /dev/null and b/src/assets/images/report/yqsjfb.png differ
diff --git a/src/assets/images/report/yqxxxq.png b/src/assets/images/report/yqxxxq.png
new file mode 100644
index 0000000..dd0222f
Binary files /dev/null and b/src/assets/images/report/yqxxxq.png differ
diff --git a/src/assets/images/report/yshc.png b/src/assets/images/report/yshc.png
new file mode 100644
index 0000000..18abfe6
Binary files /dev/null and b/src/assets/images/report/yshc.png differ
diff --git a/src/assets/images/report/ywlxjdbx.png b/src/assets/images/report/ywlxjdbx.png
new file mode 100644
index 0000000..f6c4fc3
Binary files /dev/null and b/src/assets/images/report/ywlxjdbx.png differ
diff --git a/src/assets/images/report/yyshy.png b/src/assets/images/report/yyshy.png
new file mode 100644
index 0000000..f89c747
Binary files /dev/null and b/src/assets/images/report/yyshy.png differ
diff --git a/src/assets/images/report/yzgz.png b/src/assets/images/report/yzgz.png
new file mode 100644
index 0000000..903ac38
Binary files /dev/null and b/src/assets/images/report/yzgz.png differ
diff --git a/src/assets/images/report/zfx.png b/src/assets/images/report/zfx.png
new file mode 100644
index 0000000..7a9f3a5
Binary files /dev/null and b/src/assets/images/report/zfx.png differ
diff --git a/src/assets/images/report/zk.png b/src/assets/images/report/zk.png
new file mode 100644
index 0000000..0387bdb
Binary files /dev/null and b/src/assets/images/report/zk.png differ
diff --git a/src/assets/images/report/zlfxpg.png b/src/assets/images/report/zlfxpg.png
new file mode 100644
index 0000000..22d1283
Binary files /dev/null and b/src/assets/images/report/zlfxpg.png differ
diff --git a/src/assets/images/report/zlfxpggl.png b/src/assets/images/report/zlfxpggl.png
new file mode 100644
index 0000000..f79d48a
Binary files /dev/null and b/src/assets/images/report/zlfxpggl.png differ
diff --git a/src/assets/images/report/zlxw.png b/src/assets/images/report/zlxw.png
new file mode 100644
index 0000000..180c1c3
Binary files /dev/null and b/src/assets/images/report/zlxw.png differ
diff --git a/src/assets/images/report/zq.png b/src/assets/images/report/zq.png
new file mode 100644
index 0000000..79c5be6
Binary files /dev/null and b/src/assets/images/report/zq.png differ
diff --git a/src/assets/images/report/zwsc.png b/src/assets/images/report/zwsc.png
new file mode 100644
index 0000000..f17c762
Binary files /dev/null and b/src/assets/images/report/zwsc.png differ
diff --git a/src/assets/images/report/zxaj.png b/src/assets/images/report/zxaj.png
new file mode 100644
index 0000000..1c066ea
Binary files /dev/null and b/src/assets/images/report/zxaj.png differ
diff --git a/src/assets/images/report/zyjy.png b/src/assets/images/report/zyjy.png
new file mode 100644
index 0000000..6f51ca0
Binary files /dev/null and b/src/assets/images/report/zyjy.png differ
diff --git a/src/assets/images/report/zymc.png b/src/assets/images/report/zymc.png
new file mode 100644
index 0000000..b46e3ac
Binary files /dev/null and b/src/assets/images/report/zymc.png differ
diff --git a/src/assets/images/sfzeys_icon.svg b/src/assets/images/sfzeys_icon.svg
new file mode 100644
index 0000000..284a11b
--- /dev/null
+++ b/src/assets/images/sfzeys_icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/sjeck_icon.svg b/src/assets/images/sjeck_icon.svg
new file mode 100644
index 0000000..55ceaef
--- /dev/null
+++ b/src/assets/images/sjeck_icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/sjeys_icon.svg b/src/assets/images/sjeys_icon.svg
new file mode 100644
index 0000000..c4b56a4
--- /dev/null
+++ b/src/assets/images/sjeys_icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/sjhmfx_icon.svg b/src/assets/images/sjhmfx_icon.svg
new file mode 100644
index 0000000..836f8c2
--- /dev/null
+++ b/src/assets/images/sjhmfx_icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/sjsys_icon.svg b/src/assets/images/sjsys_icon.svg
new file mode 100644
index 0000000..3cd4a58
--- /dev/null
+++ b/src/assets/images/sjsys_icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/sjzwsc_icon.svg b/src/assets/images/sjzwsc_icon.svg
new file mode 100644
index 0000000..8fd2103
--- /dev/null
+++ b/src/assets/images/sjzwsc_icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/srhy_icon.svg b/src/assets/images/srhy_icon.svg
new file mode 100644
index 0000000..1588794
--- /dev/null
+++ b/src/assets/images/srhy_icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/tg_qrcode_1.png b/src/assets/images/tg_qrcode_1.png
new file mode 100644
index 0000000..1157bb4
Binary files /dev/null and b/src/assets/images/tg_qrcode_1.png differ
diff --git a/src/assets/images/tg_qrcode_2.jpg b/src/assets/images/tg_qrcode_2.jpg
new file mode 100644
index 0000000..070d849
Binary files /dev/null and b/src/assets/images/tg_qrcode_2.jpg differ
diff --git a/src/assets/images/tg_qrcode_3.jpg b/src/assets/images/tg_qrcode_3.jpg
new file mode 100644
index 0000000..2c296cb
Binary files /dev/null and b/src/assets/images/tg_qrcode_3.jpg differ
diff --git a/src/assets/images/tg_qrcode_4.jpg b/src/assets/images/tg_qrcode_4.jpg
new file mode 100644
index 0000000..9615b9d
Binary files /dev/null and b/src/assets/images/tg_qrcode_4.jpg differ
diff --git a/src/assets/images/tg_qrcode_5.jpg b/src/assets/images/tg_qrcode_5.jpg
new file mode 100644
index 0000000..753a147
Binary files /dev/null and b/src/assets/images/tg_qrcode_5.jpg differ
diff --git a/src/assets/images/tg_qrcode_6.jpg b/src/assets/images/tg_qrcode_6.jpg
new file mode 100644
index 0000000..e093d19
Binary files /dev/null and b/src/assets/images/tg_qrcode_6.jpg differ
diff --git a/src/assets/images/tg_qrcode_7.jpg b/src/assets/images/tg_qrcode_7.jpg
new file mode 100644
index 0000000..0a53d17
Binary files /dev/null and b/src/assets/images/tg_qrcode_7.jpg differ
diff --git a/src/assets/images/tg_qrcode_8.jpg b/src/assets/images/tg_qrcode_8.jpg
new file mode 100644
index 0000000..142d87a
Binary files /dev/null and b/src/assets/images/tg_qrcode_8.jpg differ
diff --git a/src/assets/images/vip_banner.png b/src/assets/images/vip_banner.png
new file mode 100644
index 0000000..5de629d
Binary files /dev/null and b/src/assets/images/vip_banner.png differ
diff --git a/src/assets/images/vip_bg.png b/src/assets/images/vip_bg.png
new file mode 100644
index 0000000..0a30280
Binary files /dev/null and b/src/assets/images/vip_bg.png differ
diff --git a/src/assets/images/xlhy_icon.svg b/src/assets/images/xlhy_icon.svg
new file mode 100644
index 0000000..e0d7292
--- /dev/null
+++ b/src/assets/images/xlhy_icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/xunihaoma_icon.svg b/src/assets/images/xunihaoma_icon.svg
new file mode 100644
index 0000000..55ceaef
--- /dev/null
+++ b/src/assets/images/xunihaoma_icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/yhk4ys_icon.svg b/src/assets/images/yhk4ys_icon.svg
new file mode 100644
index 0000000..7c7549f
--- /dev/null
+++ b/src/assets/images/yhk4ys_icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/yhkhmd_icon.svg b/src/assets/images/yhkhmd_icon.svg
new file mode 100644
index 0000000..a9707df
--- /dev/null
+++ b/src/assets/images/yhkhmd_icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/yhksys_icon.svg b/src/assets/images/yhksys_icon.svg
new file mode 100644
index 0000000..bbfbc02
--- /dev/null
+++ b/src/assets/images/yhksys_icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/images/yq_qrcode_1.png b/src/assets/images/yq_qrcode_1.png
new file mode 100644
index 0000000..d8d4fcc
Binary files /dev/null and b/src/assets/images/yq_qrcode_1.png differ
diff --git a/src/assets/images/zrrsczt_icon.svg b/src/assets/images/zrrsczt_icon.svg
new file mode 100644
index 0000000..64d75cb
--- /dev/null
+++ b/src/assets/images/zrrsczt_icon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/assets/main.css b/src/assets/main.css
new file mode 100644
index 0000000..c11fe04
--- /dev/null
+++ b/src/assets/main.css
@@ -0,0 +1,31 @@
+@import "./base.css";
+@import "./colors.css";
+@import "./nprogress.css";
+@import "./vant-theme.css";
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+#app {
+ margin: 0 auto;
+ font-weight: normal;
+}
+
+a,
+.green {
+ text-decoration: none;
+ color: hsla(160, 100%, 37%, 1);
+ transition: 0.4s;
+ padding: 3px;
+}
+
+@media (hover: hover) {
+ a:hover {
+ background-color: hsla(160, 100%, 37%, 0.2);
+ }
+}
+.card {
+ @apply shadow rounded-xl bg-white p-6;
+}
+.ltitle {
+ @apply mx-auto mt-2 w-64 border rounded-3xl bg-gradient-to-r from-blue-400 via-green-500 to-teal-500 py-2 text-center text-white font-bold;
+}
diff --git a/src/assets/nprogress.css b/src/assets/nprogress.css
new file mode 100644
index 0000000..4a3f6d2
--- /dev/null
+++ b/src/assets/nprogress.css
@@ -0,0 +1,10 @@
+/* 进度条颜色 */
+#nprogress .bar {
+ background: var(--color-primary); /* 主题色 */
+ height: 4px; /* 修改高度 */
+}
+
+/* 圆圈颜色 */
+#nprogress .peg {
+ box-shadow: 0 0 10px var(--color-primary), 0 0 5px var(--color-primary);
+}
diff --git a/src/assets/uni-webview.js b/src/assets/uni-webview.js
new file mode 100644
index 0000000..a3ae2b9
--- /dev/null
+++ b/src/assets/uni-webview.js
@@ -0,0 +1 @@
+!function (e, n) { "object" == typeof exports && "undefined" != typeof module ? module.exports = n() : "function" == typeof define && define.amd ? define(n) : (e = e || self).uni = n() }(this, (function () { "use strict"; try { var e = {}; Object.defineProperty(e, "passive", { get: function () { !0 } }), window.addEventListener("test-passive", null, e) } catch (e) { } var n = Object.prototype.hasOwnProperty; function i(e, i) { return n.call(e, i) } var t = []; function r() { return window.__dcloud_weex_postMessage || window.__dcloud_weex_ } var o = function (e, n) { var i = { options: { timestamp: +new Date }, name: e, arg: n }; if (r()) { if ("postMessage" === e) { var o = { data: [n] }; return window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessage(o) : window.__dcloud_weex_.postMessage(JSON.stringify(o)) } var a = { type: "WEB_INVOKE_APPSERVICE", args: { data: i, webviewIds: t } }; window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessageToService(a) : window.__dcloud_weex_.postMessageToService(JSON.stringify(a)) } if (!window.plus) return window.parent.postMessage({ type: "WEB_INVOKE_APPSERVICE", data: i, pageId: "" }, "*"); if (0 === t.length) { var d = plus.webview.currentWebview(); if (!d) throw new Error("plus.webview.currentWebview() is undefined"); var s = d.parent(), w = ""; w = s ? s.id : d.id, t.push(w) } if (plus.webview.getWebviewById("__uniapp__service")) plus.webview.postMessageToUniNView({ type: "WEB_INVOKE_APPSERVICE", args: { data: i, webviewIds: t } }, "__uniapp__service"); else { var u = JSON.stringify(i); plus.webview.getLaunchWebview().evalJS('UniPlusBridge.subscribeHandler("'.concat("WEB_INVOKE_APPSERVICE", '",').concat(u, ",").concat(JSON.stringify(t), ");")) } }, a = { navigateTo: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = e.url; o("navigateTo", { url: encodeURI(n) }) }, navigateBack: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = e.delta; o("navigateBack", { delta: parseInt(n) || 1 }) }, switchTab: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = e.url; o("switchTab", { url: encodeURI(n) }) }, reLaunch: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = e.url; o("reLaunch", { url: encodeURI(n) }) }, redirectTo: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, n = e.url; o("redirectTo", { url: encodeURI(n) }) }, getEnv: function (e) { r() ? e({ nvue: !0 }) : window.plus ? e({ plus: !0 }) : e({ h5: !0 }) }, postMessage: function () { var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; o("postMessage", e.data || {}) } }, d = /uni-app/i.test(navigator.userAgent), s = /Html5Plus/i.test(navigator.userAgent), w = /complete|loaded|interactive/; var u = window.my && navigator.userAgent.indexOf(["t", "n", "e", "i", "l", "C", "y", "a", "p", "i", "l", "A"].reverse().join("")) > -1; var g = window.swan && window.swan.webView && /swan/i.test(navigator.userAgent); var v = window.qq && window.qq.miniProgram && /QQ/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent); var c = window.tt && window.tt.miniProgram && /toutiaomicroapp/i.test(navigator.userAgent); var m = window.wx && window.wx.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent); var p = window.qa && /quickapp/i.test(navigator.userAgent); var f = window.ks && window.ks.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent); var l = window.tt && window.tt.miniProgram && /Lark|Feishu/i.test(navigator.userAgent); var _ = window.jd && window.jd.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent); var E = window.xhs && window.xhs.miniProgram && /xhsminiapp/i.test(navigator.userAgent); for (var h, P = function () { window.UniAppJSBridge = !0, document.dispatchEvent(new CustomEvent("UniAppJSBridgeReady", { bubbles: !0, cancelable: !0 })) }, b = [function (e) { if (d || s) return window.__dcloud_weex_postMessage || window.__dcloud_weex_ ? document.addEventListener("DOMContentLoaded", e) : window.plus && w.test(document.readyState) ? setTimeout(e, 0) : document.addEventListener("plusready", e), a }, function (e) { if (m) return window.WeixinJSBridge && window.WeixinJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener("WeixinJSBridgeReady", e), window.wx.miniProgram }, function (e) { if (v) return window.QQJSBridge && window.QQJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener("QQJSBridgeReady", e), window.qq.miniProgram }, function (e) { if (u) { document.addEventListener("DOMContentLoaded", e); var n = window.my; return { navigateTo: n.navigateTo, navigateBack: n.navigateBack, switchTab: n.switchTab, reLaunch: n.reLaunch, redirectTo: n.redirectTo, postMessage: n.postMessage, getEnv: n.getEnv } } }, function (e) { if (g) return document.addEventListener("DOMContentLoaded", e), window.swan.webView }, function (e) { if (c) return document.addEventListener("DOMContentLoaded", e), window.tt.miniProgram }, function (e) { if (p) { window.QaJSBridge && window.QaJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener("QaJSBridgeReady", e); var n = window.qa; return { navigateTo: n.navigateTo, navigateBack: n.navigateBack, switchTab: n.switchTab, reLaunch: n.reLaunch, redirectTo: n.redirectTo, postMessage: n.postMessage, getEnv: n.getEnv } } }, function (e) { if (f) return window.WeixinJSBridge && window.WeixinJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener("WeixinJSBridgeReady", e), window.ks.miniProgram }, function (e) { if (l) return document.addEventListener("DOMContentLoaded", e), window.tt.miniProgram }, function (e) { if (_) return window.JDJSBridgeReady && window.JDJSBridgeReady.invoke ? setTimeout(e, 0) : document.addEventListener("JDJSBridgeReady", e), window.jd.miniProgram }, function (e) { if (E) return window.xhs.miniProgram }, function (e) { return document.addEventListener("DOMContentLoaded", e), a }], y = 0; y < b.length && !(h = b[y](P)); y++); h || (h = {}); var B = "undefined" != typeof uni ? uni : {}; if (!B.navigateTo) for (var S in h) i(h, S) && (B[S] = h[S]); return B.webView = h, B }));
\ No newline at end of file
diff --git a/src/assets/vant-theme.css b/src/assets/vant-theme.css
new file mode 100644
index 0000000..2ba8412
--- /dev/null
+++ b/src/assets/vant-theme.css
@@ -0,0 +1,434 @@
+/* Vant 主题色配置 - 使用 CSS 变量统一管理主题色 */
+
+/* 定义主题色变量 */
+:root {
+ /* 主色调 - 可以根据需要修改这个变量来改变整个主题 */
+ --van-theme-primary: #5d7eeb;
+ --van-theme-primary-light: rgba(93, 126, 235, 0.1);
+ --van-theme-primary-dark: rgba(93, 126, 235, 0.8);
+ --van-theme-primary-alpha: rgba(93, 126, 235, 0.15);
+
+ /* 覆盖 Vant 默认的主色调变量 */
+ --van-primary-color: var(--van-theme-primary);
+ --van-success-color: #07c160;
+ --van-warning-color: #ff976a;
+ --van-danger-color: #ee0a24;
+
+ /* 文本颜色 */
+ --van-text-color: #323233;
+ --van-text-color-2: #646566;
+ --van-text-color-3: #969799;
+
+ /* 背景色 */
+ --van-background-color: #ffffff;
+ --van-background-color-light: #fafafa;
+
+ /* 边框色 */
+ --van-border-color: #ebedf0;
+
+ /* 活跃状态颜色 */
+ --van-active-color: #f2f3f5;
+}
+
+/* 使用 CSS 变量覆盖组件样式 */
+
+/* 按钮组件 */
+.van-button--primary {
+ background-color: var(--van-theme-primary) !important;
+ border-color: var(--van-theme-primary) !important;
+}
+
+.van-button--primary:active {
+ background-color: var(--van-theme-primary-dark) !important;
+}
+
+/* 导航栏组件 */
+.van-nav-bar {
+ background-color: #ffffff !important;
+}
+
+.van-nav-bar__title {
+ color: var(--van-theme-primary) !important;
+}
+
+.van-nav-bar__left,
+.van-nav-bar__right {
+ color: var(--van-theme-primary) !important;
+}
+
+.van-nav-bar__arrow {
+ color: var(--van-theme-primary) !important;
+}
+.van-nav-bar__text {
+ color: var(--van-theme-primary) !important;
+}
+/* 标签栏组件 */
+.van-tabbar-item--active {
+ color: var(--van-theme-primary) !important;
+}
+
+/* 标签页组件 */
+.van-tabs__line {
+ background-color: var(--van-theme-primary) !important;
+}
+
+.van-tab--active {
+ color: var(--van-theme-primary) !important;
+}
+
+.van-tabs__wrap {
+ background-color: #ffffff !important;
+}
+
+/* 开关组件 */
+.van-switch--on {
+ background-color: var(--van-theme-primary) !important;
+}
+
+/* 复选框组件 */
+/* 取消复选框主题色配置,使用默认样式 */
+
+/* 单选框组件 */
+/* 取消单选框主题色配置,使用默认样式 */
+
+/* 滑动条组件 */
+.van-slider__bar {
+ background-color: var(--van-theme-primary) !important;
+}
+
+.van-slider__button {
+ background-color: var(--van-theme-primary) !important;
+ border-color: var(--van-theme-primary) !important;
+}
+
+/* 进度条组件 */
+.van-progress__portion {
+ background-color: var(--van-theme-primary) !important;
+}
+
+/* 评分组件 */
+.van-rate__icon--full {
+ color: var(--van-theme-primary) !important;
+}
+
+/* 步进器组件 */
+.van-stepper__plus,
+.van-stepper__minus {
+ color: var(--van-theme-primary) !important;
+ border-color: var(--van-theme-primary) !important;
+}
+
+/* 步骤条组件 */
+.van-steps__item--active .van-steps__item__circle {
+ background-color: var(--van-theme-primary) !important;
+ border-color: var(--van-theme-primary) !important;
+}
+
+/* 标签组件 */
+.van-tag--primary {
+ background-color: var(--van-theme-primary) !important;
+ color: #ffffff !important;
+}
+
+/* 徽章组件 */
+.van-badge--primary {
+ background-color: var(--van-theme-primary) !important;
+}
+
+/* 通知栏组件 */
+.van-notice-bar--primary {
+ background-color: var(--van-theme-primary-light) !important;
+ color: var(--van-theme-primary) !important;
+}
+
+/* 轮播图指示器 */
+.van-swipe__indicator--active {
+ background-color: var(--van-theme-primary) !important;
+}
+
+/* 加载组件 */
+.van-loading__spinner {
+ color: var(--van-theme-primary) !important;
+}
+
+/* 弹窗组件 */
+.van-popup {
+ background-color: var(--van-background-color) !important;
+}
+
+/* 选择器组件 */
+.van-picker {
+ background-color: var(--van-background-color) !important;
+}
+
+.van-picker__toolbar {
+ background-color: var(--van-background-color) !important;
+}
+
+.van-picker__confirm {
+ color: var(--van-theme-primary) !important;
+}
+
+.van-picker__cancel {
+ color: var(--van-text-color-2) !important;
+}
+
+/* 日期选择器组件 */
+.van-date-picker {
+ background-color: var(--van-background-color) !important;
+}
+
+.van-date-picker__toolbar {
+ background-color: var(--van-background-color) !important;
+}
+
+.van-date-picker__confirm {
+ color: var(--van-theme-primary) !important;
+}
+
+.van-date-picker__cancel {
+ color: var(--van-text-color-2) !important;
+}
+
+/* 字段组件 */
+.van-field__control {
+ color: var(--van-text-color) !important;
+}
+
+.van-field__placeholder {
+ color: var(--van-text-color-3) !important;
+}
+
+.van-field__right-icon {
+ color: var(--van-theme-primary) !important;
+}
+
+/* 动作面板组件 */
+.van-action-sheet__item--active {
+ color: var(--van-theme-primary) !important;
+}
+
+/* 选择器组件 */
+.van-picker__confirm {
+ color: var(--van-theme-primary) !important;
+}
+
+/* 日期选择器组件 */
+.van-datetime-picker__confirm {
+ color: var(--van-theme-primary) !important;
+}
+
+/* 地区选择器组件 */
+.van-area__confirm {
+ color: var(--van-theme-primary) !important;
+}
+
+/* 搜索组件 */
+.van-search__action {
+ color: var(--van-theme-primary) !important;
+}
+
+/* 日历组件 */
+.van-calendar__day--selected {
+ background-color: var(--van-theme-primary) !important;
+ color: #ffffff !important;
+}
+
+.van-calendar__day--start,
+.van-calendar__day--end {
+ background-color: var(--van-theme-primary) !important;
+ color: #ffffff !important;
+}
+
+/* 时间选择器组件 */
+.van-time-picker__confirm {
+ color: var(--van-theme-primary) !important;
+}
+
+/* 商品卡片组件 */
+.van-card__price {
+ color: var(--van-theme-primary) !important;
+}
+
+/* 优惠券组件 */
+.van-coupon__discount {
+ color: var(--van-theme-primary) !important;
+}
+
+/* 地址编辑组件 */
+.van-address-edit__default {
+ color: var(--van-theme-primary) !important;
+}
+
+/* 商品规格选择器组件 */
+.van-sku-item--active {
+ color: var(--van-theme-primary) !important;
+ border-color: var(--van-theme-primary) !important;
+}
+
+/* 购物车组件 */
+.van-submit-bar__price {
+ color: var(--van-theme-primary) !important;
+}
+
+/* 提交订单栏组件 */
+.van-submit-bar__button--primary {
+ background-color: var(--van-theme-primary) !important;
+}
+
+/* 侧边栏组件 */
+.van-sidebar-item--select {
+ color: var(--van-theme-primary) !important;
+ border-color: var(--van-theme-primary) !important;
+}
+
+/* 树形选择器组件 */
+.van-tree-select__item--active {
+ color: var(--van-theme-primary) !important;
+}
+
+/* 联系人列表组件 */
+.van-contact-list__item--active {
+ color: var(--van-theme-primary) !important;
+}
+
+/* 密码输入框组件 */
+.van-password-input__item--focus {
+ border-color: var(--van-theme-primary) !important;
+}
+
+/* 下拉菜单组件 */
+.van-dropdown-menu__title--active {
+ color: var(--van-theme-primary) !important;
+}
+
+.van-dropdown-menu__option--active {
+ color: var(--van-theme-primary) !important;
+}
+
+/* 索引组件 */
+.van-index-anchor--active {
+ background-color: var(--van-background-color) !important;
+ color: var(--van-theme-primary) !important;
+}
+
+/* 水印组件 */
+.van-water-mark {
+ color: var(--van-theme-primary-alpha) !important;
+}
+
+/* 分割线组件 */
+.van-divider {
+ color: var(--van-text-color-3) !important;
+}
+
+/* 分享组件 */
+.van-share-sheet__option-name {
+ color: var(--van-text-color) !important;
+}
+
+/* 骨架屏组件 */
+.van-skeleton__content {
+ background-color: var(--van-background-color-light) !important;
+}
+
+/* 空状态组件 */
+.van-empty__description {
+ color: var(--van-text-color-2) !important;
+}
+
+/* 倒计时组件 */
+.van-count-down {
+ color: var(--van-text-color) !important;
+}
+
+/* 签名组件 */
+.van-signature {
+ background-color: var(--van-background-color) !important;
+ border-color: var(--van-border-color) !important;
+}
+
+/* 上传组件 */
+.van-uploader__upload {
+ background-color: var(--van-background-color-light) !important;
+}
+
+/* 列表组件 */
+.van-list__loading,
+.van-list__finished-text {
+ color: var(--van-text-color-2) !important;
+}
+
+/* 下拉刷新组件 */
+.van-pull-refresh__text {
+ color: var(--van-text-color-2) !important;
+}
+
+/* 懒加载组件 */
+.van-lazyload {
+ background-color: var(--van-background-color-light) !important;
+}
+
+/* 图片预览组件 */
+.van-image-preview__index {
+ color: #ffffff !important;
+}
+
+/* 索引组件 */
+.van-index-anchor {
+ background-color: var(--van-background-color-light) !important;
+ color: var(--van-text-color-2) !important;
+}
+
+/* 弹出层遮罩 */
+.van-overlay {
+ background-color: rgba(0, 0, 0, 0.5) !important;
+}
+
+/* Toast 组件 */
+.van-toast {
+ background-color: rgba(0, 0, 0, 0.8) !important;
+ color: #ffffff !important;
+}
+
+.van-toast--success {
+ background-color: rgba(0, 0, 0, 0.8) !important;
+ color: #ffffff !important;
+}
+
+.van-toast--fail {
+ background-color: rgba(0, 0, 0, 0.8) !important;
+ color: #ffffff !important;
+}
+
+.van-toast--loading {
+ background-color: rgba(0, 0, 0, 0.8) !important;
+ color: #ffffff !important;
+}
+
+.van-toast__text {
+ color: #ffffff !important;
+}
+
+.van-toast__icon {
+ color: #ffffff !important;
+}
+
+/* Loading Toast 特殊处理 */
+.van-loading-toast {
+ background-color: rgba(0, 0, 0, 0.8) !important;
+ color: #ffffff !important;
+}
+
+.van-loading-toast .van-loading__spinner {
+ color: #ffffff !important;
+}
+
+.van-loading-toast .van-toast__text {
+ color: #ffffff !important;
+}
+
+/* 数字键盘组件 */
+.van-number-keyboard__key--active {
+ background-color: var(--van-active-color) !important;
+}
diff --git a/src/auto-imports.d.ts b/src/auto-imports.d.ts
new file mode 100644
index 0000000..3a7330e
--- /dev/null
+++ b/src/auto-imports.d.ts
@@ -0,0 +1,320 @@
+/* eslint-disable */
+/* prettier-ignore */
+// @ts-nocheck
+// noinspection JSUnusedGlobalSymbols
+// Generated by unplugin-auto-import
+// biome-ignore lint: disable
+export {}
+declare global {
+ const EffectScope: typeof import('vue')['EffectScope']
+ const VanTabbar: typeof import('vant/es')['Tabbar']
+ const VanTabbarItem: typeof import('vant/es')['TabbarItem']
+ const asyncComputed: typeof import('@vueuse/core')['asyncComputed']
+ const autoResetRef: typeof import('@vueuse/core')['autoResetRef']
+ const closeToast: typeof import('vant/es')['closeToast']
+ const computed: typeof import('vue')['computed']
+ const computedAsync: typeof import('@vueuse/core')['computedAsync']
+ const computedEager: typeof import('@vueuse/core')['computedEager']
+ const computedInject: typeof import('@vueuse/core')['computedInject']
+ const computedWithControl: typeof import('@vueuse/core')['computedWithControl']
+ const controlledComputed: typeof import('@vueuse/core')['controlledComputed']
+ const controlledRef: typeof import('@vueuse/core')['controlledRef']
+ const createApp: typeof import('vue')['createApp']
+ const createEventHook: typeof import('@vueuse/core')['createEventHook']
+ const createGlobalState: typeof import('@vueuse/core')['createGlobalState']
+ const createInjectionState: typeof import('@vueuse/core')['createInjectionState']
+ const createReactiveFn: typeof import('@vueuse/core')['createReactiveFn']
+ const createReusableTemplate: typeof import('@vueuse/core')['createReusableTemplate']
+ const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable']
+ const createTemplatePromise: typeof import('@vueuse/core')['createTemplatePromise']
+ const createUnrefFn: typeof import('@vueuse/core')['createUnrefFn']
+ const customRef: typeof import('vue')['customRef']
+ const debouncedRef: typeof import('@vueuse/core')['debouncedRef']
+ const debouncedWatch: typeof import('@vueuse/core')['debouncedWatch']
+ const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
+ const defineComponent: typeof import('vue')['defineComponent']
+ const eagerComputed: typeof import('@vueuse/core')['eagerComputed']
+ const effectScope: typeof import('vue')['effectScope']
+ const extendRef: typeof import('@vueuse/core')['extendRef']
+ const getCurrentInstance: typeof import('vue')['getCurrentInstance']
+ const getCurrentScope: typeof import('vue')['getCurrentScope']
+ const h: typeof import('vue')['h']
+ const ignorableWatch: typeof import('@vueuse/core')['ignorableWatch']
+ const inject: typeof import('vue')['inject']
+ const injectLocal: typeof import('@vueuse/core')['injectLocal']
+ const isDefined: typeof import('@vueuse/core')['isDefined']
+ const isProxy: typeof import('vue')['isProxy']
+ const isReactive: typeof import('vue')['isReactive']
+ const isReadonly: typeof import('vue')['isReadonly']
+ const isRef: typeof import('vue')['isRef']
+ const makeDestructurable: typeof import('@vueuse/core')['makeDestructurable']
+ const markRaw: typeof import('vue')['markRaw']
+ const nextTick: typeof import('vue')['nextTick']
+ const onActivated: typeof import('vue')['onActivated']
+ const onBeforeMount: typeof import('vue')['onBeforeMount']
+ const onBeforeRouteLeave: typeof import('vue-router')['onBeforeRouteLeave']
+ const onBeforeRouteUpdate: typeof import('vue-router')['onBeforeRouteUpdate']
+ const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
+ const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
+ const onClickOutside: typeof import('@vueuse/core')['onClickOutside']
+ const onDeactivated: typeof import('vue')['onDeactivated']
+ const onErrorCaptured: typeof import('vue')['onErrorCaptured']
+ const onKeyStroke: typeof import('@vueuse/core')['onKeyStroke']
+ const onLongPress: typeof import('@vueuse/core')['onLongPress']
+ const onMounted: typeof import('vue')['onMounted']
+ const onRenderTracked: typeof import('vue')['onRenderTracked']
+ const onRenderTriggered: typeof import('vue')['onRenderTriggered']
+ const onScopeDispose: typeof import('vue')['onScopeDispose']
+ const onServerPrefetch: typeof import('vue')['onServerPrefetch']
+ const onStartTyping: typeof import('@vueuse/core')['onStartTyping']
+ const onUnmounted: typeof import('vue')['onUnmounted']
+ const onUpdated: typeof import('vue')['onUpdated']
+ const onWatcherCleanup: typeof import('vue')['onWatcherCleanup']
+ const pausableWatch: typeof import('@vueuse/core')['pausableWatch']
+ const provide: typeof import('vue')['provide']
+ const provideLocal: typeof import('@vueuse/core')['provideLocal']
+ const reactify: typeof import('@vueuse/core')['reactify']
+ const reactifyObject: typeof import('@vueuse/core')['reactifyObject']
+ const reactive: typeof import('vue')['reactive']
+ const reactiveComputed: typeof import('@vueuse/core')['reactiveComputed']
+ const reactiveOmit: typeof import('@vueuse/core')['reactiveOmit']
+ const reactivePick: typeof import('@vueuse/core')['reactivePick']
+ const readonly: typeof import('vue')['readonly']
+ const ref: typeof import('vue')['ref']
+ const refAutoReset: typeof import('@vueuse/core')['refAutoReset']
+ const refDebounced: typeof import('@vueuse/core')['refDebounced']
+ const refDefault: typeof import('@vueuse/core')['refDefault']
+ const refThrottled: typeof import('@vueuse/core')['refThrottled']
+ const refWithControl: typeof import('@vueuse/core')['refWithControl']
+ const resolveComponent: typeof import('vue')['resolveComponent']
+ const resolveRef: typeof import('@vueuse/core')['resolveRef']
+ const resolveUnref: typeof import('@vueuse/core')['resolveUnref']
+ const shallowReactive: typeof import('vue')['shallowReactive']
+ const shallowReadonly: typeof import('vue')['shallowReadonly']
+ const shallowRef: typeof import('vue')['shallowRef']
+ const showConfirmDialog: typeof import('vant/es')['showConfirmDialog']
+ const showLoadingToast: typeof import('vant/es')['showLoadingToast']
+ const showToast: typeof import('vant/es')['showToast']
+ const syncRef: typeof import('@vueuse/core')['syncRef']
+ const syncRefs: typeof import('@vueuse/core')['syncRefs']
+ const templateRef: typeof import('@vueuse/core')['templateRef']
+ const throttledRef: typeof import('@vueuse/core')['throttledRef']
+ const throttledWatch: typeof import('@vueuse/core')['throttledWatch']
+ const toRaw: typeof import('vue')['toRaw']
+ const toReactive: typeof import('@vueuse/core')['toReactive']
+ const toRef: typeof import('vue')['toRef']
+ const toRefs: typeof import('vue')['toRefs']
+ const toValue: typeof import('vue')['toValue']
+ const triggerRef: typeof import('vue')['triggerRef']
+ const tryOnBeforeMount: typeof import('@vueuse/core')['tryOnBeforeMount']
+ const tryOnBeforeUnmount: typeof import('@vueuse/core')['tryOnBeforeUnmount']
+ const tryOnMounted: typeof import('@vueuse/core')['tryOnMounted']
+ const tryOnScopeDispose: typeof import('@vueuse/core')['tryOnScopeDispose']
+ const tryOnUnmounted: typeof import('@vueuse/core')['tryOnUnmounted']
+ const unref: typeof import('vue')['unref']
+ const unrefElement: typeof import('@vueuse/core')['unrefElement']
+ const until: typeof import('@vueuse/core')['until']
+ const useActiveElement: typeof import('@vueuse/core')['useActiveElement']
+ const useAgent: typeof import('./composables/useAgent.js')['useAgent']
+ const useAgentStore: typeof import('./stores/agentStore.js')['useAgentStore']
+ const useAnimate: typeof import('@vueuse/core')['useAnimate']
+ const useApiFetch: typeof import('./composables/useApiFetch.js')['default']
+ const useArrayDifference: typeof import('@vueuse/core')['useArrayDifference']
+ const useArrayEvery: typeof import('@vueuse/core')['useArrayEvery']
+ const useArrayFilter: typeof import('@vueuse/core')['useArrayFilter']
+ const useArrayFind: typeof import('@vueuse/core')['useArrayFind']
+ const useArrayFindIndex: typeof import('@vueuse/core')['useArrayFindIndex']
+ const useArrayFindLast: typeof import('@vueuse/core')['useArrayFindLast']
+ const useArrayIncludes: typeof import('@vueuse/core')['useArrayIncludes']
+ const useArrayJoin: typeof import('@vueuse/core')['useArrayJoin']
+ const useArrayMap: typeof import('@vueuse/core')['useArrayMap']
+ const useArrayReduce: typeof import('@vueuse/core')['useArrayReduce']
+ const useArraySome: typeof import('@vueuse/core')['useArraySome']
+ const useArrayUnique: typeof import('@vueuse/core')['useArrayUnique']
+ const useAsyncQueue: typeof import('@vueuse/core')['useAsyncQueue']
+ const useAsyncState: typeof import('@vueuse/core')['useAsyncState']
+ const useAttrs: typeof import('vue')['useAttrs']
+ const useAuthStore: typeof import('./stores/authStore.js')['useAuthStore']
+ const useBase64: typeof import('@vueuse/core')['useBase64']
+ const useBattery: typeof import('@vueuse/core')['useBattery']
+ const useBluetooth: typeof import('@vueuse/core')['useBluetooth']
+ const useBreakpoints: typeof import('@vueuse/core')['useBreakpoints']
+ const useBroadcastChannel: typeof import('@vueuse/core')['useBroadcastChannel']
+ const useBrowserLocation: typeof import('@vueuse/core')['useBrowserLocation']
+ const useCached: typeof import('@vueuse/core')['useCached']
+ const useClipboard: typeof import('@vueuse/core')['useClipboard']
+ const useClipboardItems: typeof import('@vueuse/core')['useClipboardItems']
+ const useCloned: typeof import('@vueuse/core')['useCloned']
+ const useColorMode: typeof import('@vueuse/core')['useColorMode']
+ const useConfirmDialog: typeof import('@vueuse/core')['useConfirmDialog']
+ const useCounter: typeof import('@vueuse/core')['useCounter']
+ const useCounterStore: typeof import('./stores/counter.js')['useCounterStore']
+ const useCssModule: typeof import('vue')['useCssModule']
+ const useCssVar: typeof import('@vueuse/core')['useCssVar']
+ const useCssVars: typeof import('vue')['useCssVars']
+ const useCurrentElement: typeof import('@vueuse/core')['useCurrentElement']
+ const useCycleList: typeof import('@vueuse/core')['useCycleList']
+ const useDark: typeof import('@vueuse/core')['useDark']
+ const useDateFormat: typeof import('@vueuse/core')['useDateFormat']
+ const useDebounce: typeof import('@vueuse/core')['useDebounce']
+ const useDebounceFn: typeof import('@vueuse/core')['useDebounceFn']
+ const useDebouncedRefHistory: typeof import('@vueuse/core')['useDebouncedRefHistory']
+ const useDeviceMotion: typeof import('@vueuse/core')['useDeviceMotion']
+ const useDeviceOrientation: typeof import('@vueuse/core')['useDeviceOrientation']
+ const useDevicePixelRatio: typeof import('@vueuse/core')['useDevicePixelRatio']
+ const useDevicesList: typeof import('@vueuse/core')['useDevicesList']
+ const useDialogStore: typeof import('./stores/dialogStore.js')['useDialogStore']
+ const useDisplayMedia: typeof import('@vueuse/core')['useDisplayMedia']
+ const useDocumentVisibility: typeof import('@vueuse/core')['useDocumentVisibility']
+ const useDraggable: typeof import('@vueuse/core')['useDraggable']
+ const useDropZone: typeof import('@vueuse/core')['useDropZone']
+ const useElementBounding: typeof import('@vueuse/core')['useElementBounding']
+ const useElementByPoint: typeof import('@vueuse/core')['useElementByPoint']
+ const useElementHover: typeof import('@vueuse/core')['useElementHover']
+ const useElementSize: typeof import('@vueuse/core')['useElementSize']
+ const useElementVisibility: typeof import('@vueuse/core')['useElementVisibility']
+ const useEnv: typeof import('./composables/useEnv.js')['useEnv']
+ const useEnvironment: typeof import('./composables/useEnvironment.js')['useEnvironment']
+ const useEventBus: typeof import('@vueuse/core')['useEventBus']
+ const useEventListener: typeof import('@vueuse/core')['useEventListener']
+ const useEventSource: typeof import('@vueuse/core')['useEventSource']
+ const useEyeDropper: typeof import('@vueuse/core')['useEyeDropper']
+ const useFavicon: typeof import('@vueuse/core')['useFavicon']
+ const useFetch: typeof import('@vueuse/core')['useFetch']
+ const useFileDialog: typeof import('@vueuse/core')['useFileDialog']
+ const useFileSystemAccess: typeof import('@vueuse/core')['useFileSystemAccess']
+ const useFocus: typeof import('@vueuse/core')['useFocus']
+ const useFocusWithin: typeof import('@vueuse/core')['useFocusWithin']
+ const useFps: typeof import('@vueuse/core')['useFps']
+ const useFullscreen: typeof import('@vueuse/core')['useFullscreen']
+ const useGamepad: typeof import('@vueuse/core')['useGamepad']
+ const useGeolocation: typeof import('@vueuse/core')['useGeolocation']
+ const useHttp: typeof import('./composables/useHttp.js')['useHttp']
+ const useId: typeof import('vue')['useId']
+ const useIdle: typeof import('@vueuse/core')['useIdle']
+ const useImage: typeof import('@vueuse/core')['useImage']
+ const useInfiniteScroll: typeof import('@vueuse/core')['useInfiniteScroll']
+ const useInquireForm: typeof import('./composables/useInquireForm.js')['useInquireForm']
+ const useIntersectionObserver: typeof import('@vueuse/core')['useIntersectionObserver']
+ const useInterval: typeof import('@vueuse/core')['useInterval']
+ const useIntervalFn: typeof import('@vueuse/core')['useIntervalFn']
+ const useKeyModifier: typeof import('@vueuse/core')['useKeyModifier']
+ const useLastChanged: typeof import('@vueuse/core')['useLastChanged']
+ const useLink: typeof import('vue-router')['useLink']
+ const useLocalStorage: typeof import('@vueuse/core')['useLocalStorage']
+ const useMagicKeys: typeof import('@vueuse/core')['useMagicKeys']
+ const useManualRefHistory: typeof import('@vueuse/core')['useManualRefHistory']
+ const useMediaControls: typeof import('@vueuse/core')['useMediaControls']
+ const useMediaQuery: typeof import('@vueuse/core')['useMediaQuery']
+ const useMemoize: typeof import('@vueuse/core')['useMemoize']
+ const useMemory: typeof import('@vueuse/core')['useMemory']
+ const useModel: typeof import('vue')['useModel']
+ const useMounted: typeof import('@vueuse/core')['useMounted']
+ const useMouse: typeof import('@vueuse/core')['useMouse']
+ const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement']
+ const useMousePressed: typeof import('@vueuse/core')['useMousePressed']
+ const useMutationObserver: typeof import('@vueuse/core')['useMutationObserver']
+ const useNavigatorLanguage: typeof import('@vueuse/core')['useNavigatorLanguage']
+ const useNetwork: typeof import('@vueuse/core')['useNetwork']
+ const useNow: typeof import('@vueuse/core')['useNow']
+ const useObjectUrl: typeof import('@vueuse/core')['useObjectUrl']
+ const useOffsetPagination: typeof import('@vueuse/core')['useOffsetPagination']
+ const useOnline: typeof import('@vueuse/core')['useOnline']
+ const usePageLeave: typeof import('@vueuse/core')['usePageLeave']
+ const useParallax: typeof import('@vueuse/core')['useParallax']
+ const useParentElement: typeof import('@vueuse/core')['useParentElement']
+ const usePerformanceObserver: typeof import('@vueuse/core')['usePerformanceObserver']
+ const usePermission: typeof import('@vueuse/core')['usePermission']
+ const usePointer: typeof import('@vueuse/core')['usePointer']
+ const usePointerLock: typeof import('@vueuse/core')['usePointerLock']
+ const usePointerSwipe: typeof import('@vueuse/core')['usePointerSwipe']
+ const usePreferredColorScheme: typeof import('@vueuse/core')['usePreferredColorScheme']
+ const usePreferredContrast: typeof import('@vueuse/core')['usePreferredContrast']
+ const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark']
+ const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages']
+ const usePreferredReducedMotion: typeof import('@vueuse/core')['usePreferredReducedMotion']
+ const usePrevious: typeof import('@vueuse/core')['usePrevious']
+ const useRafFn: typeof import('@vueuse/core')['useRafFn']
+ const useRefHistory: typeof import('@vueuse/core')['useRefHistory']
+ const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver']
+ const useRiskNotifier: typeof import('./composables/useRiskNotifier.js')['useRiskNotifier']
+ const useRoute: typeof import('vue-router')['useRoute']
+ const useRouter: typeof import('vue-router')['useRouter']
+ const useSEO: typeof import('./composables/useSEO.js')['useSEO']
+ const useScreenOrientation: typeof import('@vueuse/core')['useScreenOrientation']
+ const useScreenSafeArea: typeof import('@vueuse/core')['useScreenSafeArea']
+ const useScriptTag: typeof import('@vueuse/core')['useScriptTag']
+ const useScroll: typeof import('@vueuse/core')['useScroll']
+ const useScrollLock: typeof import('@vueuse/core')['useScrollLock']
+ const useSessionStorage: typeof import('@vueuse/core')['useSessionStorage']
+ const useShare: typeof import('@vueuse/core')['useShare']
+ const useSlots: typeof import('vue')['useSlots']
+ const useSorted: typeof import('@vueuse/core')['useSorted']
+ const useSpeechRecognition: typeof import('@vueuse/core')['useSpeechRecognition']
+ const useSpeechSynthesis: typeof import('@vueuse/core')['useSpeechSynthesis']
+ const useStepper: typeof import('@vueuse/core')['useStepper']
+ const useStorage: typeof import('@vueuse/core')['useStorage']
+ const useStorageAsync: typeof import('@vueuse/core')['useStorageAsync']
+ const useStyleTag: typeof import('@vueuse/core')['useStyleTag']
+ const useSupported: typeof import('@vueuse/core')['useSupported']
+ const useSwipe: typeof import('@vueuse/core')['useSwipe']
+ const useTemplateRef: typeof import('vue')['useTemplateRef']
+ const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList']
+ const useTextDirection: typeof import('@vueuse/core')['useTextDirection']
+ const useTextSelection: typeof import('@vueuse/core')['useTextSelection']
+ const useTextareaAutosize: typeof import('@vueuse/core')['useTextareaAutosize']
+ const useThrottle: typeof import('@vueuse/core')['useThrottle']
+ const useThrottleFn: typeof import('@vueuse/core')['useThrottleFn']
+ const useThrottledRefHistory: typeof import('@vueuse/core')['useThrottledRefHistory']
+ const useTimeAgo: typeof import('@vueuse/core')['useTimeAgo']
+ const useTimeout: typeof import('@vueuse/core')['useTimeout']
+ const useTimeoutFn: typeof import('@vueuse/core')['useTimeoutFn']
+ const useTimeoutPoll: typeof import('@vueuse/core')['useTimeoutPoll']
+ const useTimestamp: typeof import('@vueuse/core')['useTimestamp']
+ const useTitle: typeof import('@vueuse/core')['useTitle']
+ const useToNumber: typeof import('@vueuse/core')['useToNumber']
+ const useToString: typeof import('@vueuse/core')['useToString']
+ const useToggle: typeof import('@vueuse/core')['useToggle']
+ const useTransition: typeof import('@vueuse/core')['useTransition']
+ const useUni: typeof import('./composables/useUni.js')['useUni']
+ const useUrlSearchParams: typeof import('@vueuse/core')['useUrlSearchParams']
+ const useUserMedia: typeof import('@vueuse/core')['useUserMedia']
+ const useUserStore: typeof import('./stores/userStore.js')['useUserStore']
+ const useVModel: typeof import('@vueuse/core')['useVModel']
+ const useVModels: typeof import('@vueuse/core')['useVModels']
+ const useVibrate: typeof import('@vueuse/core')['useVibrate']
+ const useVirtualList: typeof import('@vueuse/core')['useVirtualList']
+ const useWakeLock: typeof import('@vueuse/core')['useWakeLock']
+ const useWebNotification: typeof import('@vueuse/core')['useWebNotification']
+ const useWebSocket: typeof import('@vueuse/core')['useWebSocket']
+ const useWebView: typeof import('./composables/useWebView.js')['useWebView']
+ const useWebWorker: typeof import('@vueuse/core')['useWebWorker']
+ const useWebWorkerFn: typeof import('@vueuse/core')['useWebWorkerFn']
+ const useWeixinShare: typeof import('./composables/useWeixinShare.js')['useWeixinShare']
+ const useWindowFocus: typeof import('@vueuse/core')['useWindowFocus']
+ const useWindowScroll: typeof import('@vueuse/core')['useWindowScroll']
+ const useWindowSize: typeof import('@vueuse/core')['useWindowSize']
+ const useZoomAdapter: typeof import('./composables/useZoomAdapter.js')['useZoomAdapter']
+ const watch: typeof import('vue')['watch']
+ const watchArray: typeof import('@vueuse/core')['watchArray']
+ const watchAtMost: typeof import('@vueuse/core')['watchAtMost']
+ const watchDebounced: typeof import('@vueuse/core')['watchDebounced']
+ const watchDeep: typeof import('@vueuse/core')['watchDeep']
+ const watchEffect: typeof import('vue')['watchEffect']
+ const watchIgnorable: typeof import('@vueuse/core')['watchIgnorable']
+ const watchImmediate: typeof import('@vueuse/core')['watchImmediate']
+ const watchOnce: typeof import('@vueuse/core')['watchOnce']
+ const watchPausable: typeof import('@vueuse/core')['watchPausable']
+ const watchPostEffect: typeof import('vue')['watchPostEffect']
+ const watchSyncEffect: typeof import('vue')['watchSyncEffect']
+ const watchThrottled: typeof import('@vueuse/core')['watchThrottled']
+ const watchTriggerable: typeof import('@vueuse/core')['watchTriggerable']
+ const watchWithFilter: typeof import('@vueuse/core')['watchWithFilter']
+ const whenever: typeof import('@vueuse/core')['whenever']
+}
+// for type re-export
+declare global {
+ // @ts-ignore
+ export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
+ import('vue')
+}
diff --git a/src/components/AgentApplicationForm.vue b/src/components/AgentApplicationForm.vue
new file mode 100644
index 0000000..bbbe28c
--- /dev/null
+++ b/src/components/AgentApplicationForm.vue
@@ -0,0 +1,263 @@
+
+
+
+ 成为代理
+
+
+ {{ maskName(ancestor) }}邀您成为幸福查代理方
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ isCountingDown ? `${countdown}s重新获取` : "获取验证码"
+ }}
+
+
+
+
+
+
+ 提交申请
+
+
+ 取消
+
+
+
+
+
+
diff --git a/src/components/Authorization.vue b/src/components/Authorization.vue
new file mode 100644
index 0000000..df0805e
--- /dev/null
+++ b/src/components/Authorization.vue
@@ -0,0 +1,175 @@
+
+
+
+
授权书
+
+
+
+
海口龙华海宇网络技术服务工作室:
+
+ 本人
+ {{ signature ? props.name : "____________" }}
+ 拟向贵司申请大数据分析报告查询业务,贵司需要了解本人相关状况,用于查询大数据分析报告,因此本人同意向贵司提供本人的姓名和手机号等个人信息,并同意贵司向第三方传送上述信息。第三方将使用上述信息核实信息真实情况,查询信用记录,并生成报告。
+
+
授权内容如下:
+
+
+ 贵司向依法成立的第三方服务商根据本人提交的信息进行核实,并有权通过前述第三方服务机构查询、使用本人的身份信息、设备信息、运营商信息等,查询本人信息(包括但不限于学历、婚姻、资产状况及对信息主体产生负面影响的不良信息),出具相关报告。
+
+
+ 依法成立的第三方服务商查询或核实、搜集、保存、处理、共享、使用(含合法业务应用)本人相关数据,且不再另行告知本人,但法律、法规、监管政策禁止的除外。
+
+
+
+ 本人授权有效期为自授权之日起
+ 1个月。本授权为不可撤销授权,但法律法规另有规定的除外。
+
+
+
用户声明与承诺:
+
+
+ 本人在授权签署前,已通过实名认证及动态验证码验证(或其他身份验证手段),确认本授权行为为本人真实意思表示,平台已履行身份验证义务。
+
+
+ 本人在此声明已充分理解上述授权条款含义,知晓并自愿承担因授权数据使用可能带来的后果,包括但不限于影响个人信用评分、生活行为等。本人确认授权范围内的相关信息由本人提供并真实有效。
+
+
+ 若用户冒名签署或提供虚假信息,由用户自行承担全部法律责任,平台不承担任何后果。
+
+
+
特别提示:
+
+
+ 本产品所有数据均来自第三方。可能部分数据未公开、数据更新延迟或信息受到限制,贵司不对数据的准确性、真实性、完整性做任何承诺。用户需根据实际情况,结合报告内容自行判断与决策。
+
+
+ 本产品仅供用户本人查询或被授权查询。除非用户取得合法授权,用户不得利用本产品查询他人信息。用户因未获得合法授权而擅自查询他人信息所产生的任何后果,由用户自行承担责任。
+
+
+ 本授权书涉及对本人敏感信息(包括但不限于婚姻状态、资产状况等)的查询与使用。本人已充分知晓相关信息的敏感性,并明确同意贵司及其合作方依据授权范围使用相关信息。
+
+
+ 平台声明:本授权书涉及的信息核实及查询结果由第三方服务商提供,平台不对数据的准确性、完整性、实时性承担责任;用户根据报告所作决策的风险由用户自行承担,平台对此不承担法律责任。
+
+
+ 本授权书中涉及的数据查询和报告生成由依法成立的第三方服务商提供。若因第三方行为导致数据错误或损失,用户应向第三方主张权利,平台不承担相关责任。
+
+
+
附加说明:
+
+
+ 本人在授权的相关数据将依据法律法规及贵司内部数据管理规范妥善存储,存储期限为法律要求的最短必要时间。超过存储期限或在数据使用目的达成后,贵司将对相关数据进行销毁或匿名化处理。
+
+
+ 本人有权随时撤回本授权书中的授权,但撤回前的授权行为及其法律后果仍具有法律效力。若需撤回授权,本人可通过贵司官方渠道提交书面申请,贵司将在收到申请后依法停止对本人数据的使用。
+
+
+ 你通过“幸福查”,自愿支付相应费用,用于购买海口龙华海宇网络技术服务工作室的大数据报告产品。如若对产品内容存在异议,可通过邮箱admin@iieeii.com或APP“联系客服”按钮进行反馈,贵司将在收到异议之日起20日内进行核查和处理,并将结果答复。
+
+
+ 你向海口龙华海宇网络技术服务工作室的支付方式为:海口龙华海宇网络技术服务工作室及其经官方授权的相关企业的支付宝账户。
+
+
+
争议解决机制:
+
+
+ 若因本授权书引发争议,双方应友好协商解决;协商不成的,双方同意将争议提交至授权书签署地(海南省)有管辖权的人民法院解决。
+
+
+
签署方式的法律效力声明:
+
+
+ 本授权书通过用户在线勾选、电子签名或其他网络签署方式完成,与手写签名具有同等法律效力。平台已通过技术手段保存签署过程的完整记录,作为用户真实意思表示的证据。
+
+
+
本授权书于 {{ signTime }}生效。
+
+ 签署人:{{
+ signature ? props.name : "____________"
+ }}
+
+ 手机号码:
+ {{ signature ? props.mobile : "____________" }}
+
+
+ 签署时间:{{ signTime }}
+
+
+
+
+
+ 取消
+
+
+ {{ scrollMessage }}
+
+
+ {{ signature ? "同意" : "签署" }}
+
+
+
+
+
+
+
diff --git a/src/components/BaseReport.vue b/src/components/BaseReport.vue
new file mode 100644
index 0000000..5051183
--- /dev/null
+++ b/src/components/BaseReport.vue
@@ -0,0 +1,872 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 基本信息
+
+
+
+
+
+ {{ featureMap[item.data.apiID]?.name }}
+
+
+
+
+
+
+
分享当前{{ isExample ? '示例' : '报告' }}链接
+
+
+
+ 免责声明
+
+
+
+ 1、本份报告是在取得您个人授权后,我们才向合法存有您以上个人信息的机构去调取相关内容,我们不会以任何形式对您的报告进行存储,除您和您授权的人外不会提供给任何人和机构进行查看。
+
+
+ 2、本报告自生成之日起,有效期 30
+ 天,过期自动删除。如果您对本份报告存有异议,可能是合作机构数据有延迟或未能获取到您的相关数据,出于合作平台数据隐私的保护,本平台将不做任何解释。
+
+
+ 3、若以上数据有错误,请联系平台客服。
+
+
+
+
+
+
+
+
+
+
+
+
+
琼公网安备46010002000584号
+
+
+
+
海口龙华海宇网络技术服务工作室版权所有
+
+
+
+
+
diff --git a/src/components/BindPhoneDialog.vue b/src/components/BindPhoneDialog.vue
new file mode 100644
index 0000000..27327c9
--- /dev/null
+++ b/src/components/BindPhoneDialog.vue
@@ -0,0 +1,266 @@
+
+
+
+
+
+
+
+
绑定手机号码
+
+ 为使用完整功能请绑定手机号码
+
+
+ 如该微信号之前已绑定过手机号,请输入已绑定的手机号
+
+
+
+
+
+
+
+
+ 幸福查
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ isCountingDown
+ ? `${countdown}s重新获取`
+ : "获取验证码"
+ }}
+
+
+
+
+
+
+
+
+ 确认绑定
+
+
+
+
+
+
+
+
diff --git a/src/components/CarNumberInput.vue b/src/components/CarNumberInput.vue
new file mode 100644
index 0000000..6a8b173
--- /dev/null
+++ b/src/components/CarNumberInput.vue
@@ -0,0 +1,333 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/ClickCaptcha.vue b/src/components/ClickCaptcha.vue
new file mode 100644
index 0000000..aefa1e6
--- /dev/null
+++ b/src/components/ClickCaptcha.vue
@@ -0,0 +1,393 @@
+
+
+
+
+
+
+
+
+
{{ errorMessage }}
+
{{ successMessage }}
+
点击图片中的目标文字
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/GaugeChart.vue b/src/components/GaugeChart.vue
new file mode 100644
index 0000000..4331751
--- /dev/null
+++ b/src/components/GaugeChart.vue
@@ -0,0 +1,254 @@
+
+
+
+ {{ riskDescription }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/ImageSaveGuide.vue b/src/components/ImageSaveGuide.vue
new file mode 100644
index 0000000..d2fbc85
--- /dev/null
+++ b/src/components/ImageSaveGuide.vue
@@ -0,0 +1,275 @@
+
+
+
+
+
+ ×
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/InquireForm.vue b/src/components/InquireForm.vue
new file mode 100644
index 0000000..29c6f99
--- /dev/null
+++ b/src/components/InquireForm.vue
@@ -0,0 +1,779 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
示例报告
+
+
+
+
+
+
+
+
+
+ 我已阅读并同意
+ 《用户协议》
+ 《隐私政策》
+ 《授权书》
+
+
+
+
+
+ {{ buttonText }}
+ ¥{{ featureData.sell_price }}
+
+
+
+
+ 为保证用户的隐私及数据安全,查询结果生成30天后将自动删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ caseType.name }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ module.name }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ module.name }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ module.name }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ module.name }}
+
+
+
+
+
+
+
+
+
+
+ {{ feature.name }}
+
+
+
+
+
+
+
+
+
+
+ {{ featureData.product_name }}
+
+
+
价格:
+
+
+ ¥{{ featureData.sell_price }}
+
+
+
+
+
+
+
+ 为保证用户的隐私以及数据安全,查询的结果生成30天之后将自动清除。
+
+
+
+
+
+
+
+
+
+
+
+ 历史查询
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/LButtonGroup.vue b/src/components/LButtonGroup.vue
new file mode 100644
index 0000000..212d75c
--- /dev/null
+++ b/src/components/LButtonGroup.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+ {{ option.label }}
+
+
+
+
+
+
diff --git a/src/components/LEmpty.vue b/src/components/LEmpty.vue
new file mode 100644
index 0000000..20f22fc
--- /dev/null
+++ b/src/components/LEmpty.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+ 没有查询到相关结果
+
+
+ 订单已申请退款,预计
+ 24小时内到账 。
+
+
+ 如果已到账,您可以忽略本提示。
+
+
+
+
+ 返回上一页
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/LExpandCollapse.vue b/src/components/LExpandCollapse.vue
new file mode 100644
index 0000000..d9f72d3
--- /dev/null
+++ b/src/components/LExpandCollapse.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ truncatedContent }}
+
+
+ {{ isExpanded ? '收起' : '展开' }}
+
+
+
+
+
diff --git a/src/components/LPendding.vue b/src/components/LPendding.vue
new file mode 100644
index 0000000..0c01abb
--- /dev/null
+++ b/src/components/LPendding.vue
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+ 报告正在查询中
+
+
+ 请稍候,我们正在为您查询报告。查询过程可能需要一些时间。
+
+
+ 您可以稍后刷新页面查看结果,或之后访问历史报告列表查看。
+
+
+ 如过久未查询成功,请联系客服为您处理
+
+
+
+
+
+ 刷新页面
+
+
+
+ 查看历史报告
+
+
+
+
+
+
+
+
diff --git a/src/components/LRemark.vue b/src/components/LRemark.vue
new file mode 100644
index 0000000..d833a87
--- /dev/null
+++ b/src/components/LRemark.vue
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/LTable.vue b/src/components/LTable.vue
new file mode 100644
index 0000000..6a2d6ad
--- /dev/null
+++ b/src/components/LTable.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
diff --git a/src/components/LTitle.vue b/src/components/LTitle.vue
new file mode 100644
index 0000000..4c4d89a
--- /dev/null
+++ b/src/components/LTitle.vue
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
diff --git a/src/components/LoginDialog.vue b/src/components/LoginDialog.vue
new file mode 100644
index 0000000..8e92563
--- /dev/null
+++ b/src/components/LoginDialog.vue
@@ -0,0 +1,322 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 幸福查
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ isCountingDown
+ ? `${countdown}s重新获取`
+ : "获取验证码"
+ }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ isPasswordLogin ? '验证码登录' : '密码登录' }}
+
+
+
+
+
+
+
+
+ 登 录
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/MaintenanceDialog.vue b/src/components/MaintenanceDialog.vue
new file mode 100644
index 0000000..9fb165f
--- /dev/null
+++ b/src/components/MaintenanceDialog.vue
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
+
+ 为进一步提升系统稳定性与服务效能,我单位正在进行后台升级改造。
+
+
+ 维护期间,相关功能模块将暂时无法使用。 由此给您带来的不便,敬请谅解。感谢您一直以来的理解与支持!
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/Payment.vue b/src/components/Payment.vue
new file mode 100644
index 0000000..08ab1c0
--- /dev/null
+++ b/src/components/Payment.vue
@@ -0,0 +1,223 @@
+
+
+
+
支付
+
+
+
{{ data.product_name }}
+
+
+
+ ¥ {{ data.sell_price }}
+
+
+ ¥
+ {{
+ discountPrice
+ ? (data.sell_price * 0.2).toFixed(2)
+ : data.sell_price
+ }}
+
+
+
+
+ 活动价:2折优惠
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 确认支付
+
+
+
+
+
+
+
diff --git a/src/components/PriceInputPopup.vue b/src/components/PriceInputPopup.vue
new file mode 100644
index 0000000..839c856
--- /dev/null
+++ b/src/components/PriceInputPopup.vue
@@ -0,0 +1,161 @@
+
+
+
+
设置客户查询价
+
+
+
+
+
+
+
+
+
推广收益为 {{ promotionRevenue }} 元
+
我的成本为 {{ costPrice }} 元
+
+
+
+
收益与成本说明
+
+
推广收益 = 客户查询价 - 我的成本
+
我的成本 = 提价成本 + 底价成本
+
提价成本:超过平台标准定价部分,平台会收取部分成本价
+
设定范围:{{
+ productConfig.price_range_min }} 元 - {{
+ productConfig.price_range_max }} 元
+
+
+ 确认
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/QRcode.vue b/src/components/QRcode.vue
new file mode 100644
index 0000000..790ba30
--- /dev/null
+++ b/src/components/QRcode.vue
@@ -0,0 +1,648 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/QrcodePop.vue b/src/components/QrcodePop.vue
new file mode 100644
index 0000000..6f3d4d5
--- /dev/null
+++ b/src/components/QrcodePop.vue
@@ -0,0 +1,14 @@
+
+
+
+
+ 更多服务请关注幸福查公众号
+
+
+
+
+
+
+
diff --git a/src/components/RealNameAuthDialog.vue b/src/components/RealNameAuthDialog.vue
new file mode 100644
index 0000000..ce28341
--- /dev/null
+++ b/src/components/RealNameAuthDialog.vue
@@ -0,0 +1,376 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 实名认证说明:
+
+
1. 实名认证是提现的必要条件
+
2. 提现金额将转入您实名认证的银行卡账户
+
3. 请确保填写的信息真实有效,否则将影响提现功能的使用
+
4. 认证信息提交后将无法修改,请仔细核对
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ isCountingDown
+ ? `${countdown}s`
+ : "获取验证码"
+ }}
+
+
+
+
+
+
+
+ 我已阅读并同意
+ 《用户协议》
+ 和
+ 《隐私政策》
+ ,并确认以上信息真实有效,将用于提现等资金操作
+
+
+
+
+
+ 确认认证
+
+
+
+
+
+
+
+
+
diff --git a/src/components/SectionTitle.vue b/src/components/SectionTitle.vue
new file mode 100644
index 0000000..cc370c3
--- /dev/null
+++ b/src/components/SectionTitle.vue
@@ -0,0 +1,17 @@
+
+
+
+
+
diff --git a/src/components/ShareReportButton.vue b/src/components/ShareReportButton.vue
new file mode 100644
index 0000000..dad7947
--- /dev/null
+++ b/src/components/ShareReportButton.vue
@@ -0,0 +1,133 @@
+
+
+
+
+
+
+ {{ isLoading ? "生成中..." : (isExample ? "分享示例" : "分享报告") }}
+
+
+
+
+
diff --git a/src/components/StyledTabs.vue b/src/components/StyledTabs.vue
new file mode 100644
index 0000000..96a2e42
--- /dev/null
+++ b/src/components/StyledTabs.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/TitleBanner.vue b/src/components/TitleBanner.vue
new file mode 100644
index 0000000..f2b2684
--- /dev/null
+++ b/src/components/TitleBanner.vue
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/VerificationCard.vue b/src/components/VerificationCard.vue
new file mode 100644
index 0000000..66972ea
--- /dev/null
+++ b/src/components/VerificationCard.vue
@@ -0,0 +1,180 @@
+
+
+
+
+
+
+
+
+
+
+
+ 报告时间:
+ {{
+ reportDateTime ||
+ "2025-01-01 12:00:00"
+ }}
+
+
+ 报告项目:
+
+ {{ reportName }}
+
+
+
+
+
+
+
+
+
+ 姓名
+ {{
+ maskValue(
+ "name",
+ reportParams?.name
+ )
+ }}
+
+
+
+
+ 身份证号
+ {{
+ maskValue(
+ "id_card",
+ reportParams?.id_card
+ )
+ }}
+
+
+
+
+ 手机号
+ {{
+ maskValue(
+ "mobile",
+ reportParams?.mobile
+ )
+ }}
+
+
+
+
+
+
+
+
+
+
+
+ 身份证检查结果
+
+
+ 身份证信息核验通过
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/VipBanner.vue b/src/components/VipBanner.vue
new file mode 100644
index 0000000..750526e
--- /dev/null
+++ b/src/components/VipBanner.vue
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/components/WechatOverlay.vue b/src/components/WechatOverlay.vue
new file mode 100644
index 0000000..8d8fc61
--- /dev/null
+++ b/src/components/WechatOverlay.vue
@@ -0,0 +1,63 @@
+
+
+
+
+ 点击右上角的 然后点击在浏览器中打开
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/composables/useApiFetch.js b/src/composables/useApiFetch.js
new file mode 100644
index 0000000..0e8c604
--- /dev/null
+++ b/src/composables/useApiFetch.js
@@ -0,0 +1,95 @@
+// src/plugins/fetch.js
+import { createFetch } from "@vueuse/core";
+import router from "@/router"; // 假设你使用 Vue Router
+import { useUserStore } from "@/stores/userStore";
+import { useAgentStore } from "@/stores/agentStore";
+// 创建全局的 fetch 实例
+const useApiFetch = createFetch({
+ baseUrl: "/api/v1", // 你的 API 基础路径
+ options: {
+ async beforeFetch({ url, options }) {
+ showLoadingToast({
+ message: "加载中...",
+ forbidClick: true,
+ duration: 0, // 设置为 0 表示不会自动关闭
+ loadingType: "spinner",
+ });
+
+ const timestamp = Date.now();
+ const separator = url.includes("?") ? "&" : "?"; // 判断是否已有参数
+ url += `${separator}t=${timestamp}`; // 追加时间戳
+
+ // 在请求前添加通用的 Header,例如 Authorization
+ const token = localStorage.getItem("token");
+ let platform = "h5";
+ const userAgent = navigator.userAgent.toLowerCase();
+ const isWechat = /micromessenger/.test(userAgent);
+ if (isWechat) {
+ platform = "wxh5";
+ }
+ options.headers['X-Platform'] = platform
+
+ if (token) {
+ options.headers = {
+ ...options.headers,
+ Authorization: `${token}`,
+ };
+ }
+ return { url, options };
+ },
+ async afterFetch({ data, response }) {
+ closeToast();
+ // 全局处理响应
+ if (response.status === 401) {
+ // 清除本地存储的 token
+ localStorage.removeItem("token");
+ localStorage.removeItem('refreshAfter')
+ localStorage.removeItem('accessExpire')
+ // 跳转到登录页
+ router.replace("/login");
+ }
+
+ if (data.code !== 200) {
+ if (data.code === 100009) {
+ // 改进的存储管理
+ localStorage.removeItem('token')
+ localStorage.removeItem('refreshAfter')
+ localStorage.removeItem('accessExpire')
+ localStorage.removeItem('userInfo')
+ localStorage.removeItem('agentInfo')
+
+ // 重置状态
+ const userStore = useUserStore();
+ const agentStore = useAgentStore();
+ userStore.resetUser()
+ agentStore.resetAgent()
+ location.reload()
+
+ }
+ if (data.code !== 200002 && data.code !== 200003 && data.code !== 200004 && data.code !== 100009) {
+ showToast({ message: data.msg });
+ }
+ }
+ return { data, response };
+ },
+ async onFetchError({ error, response }) {
+ console.log("error", error);
+ closeToast();
+ if (response.status === 401) {
+ // 清除本地存储的 token
+ localStorage.removeItem("token");
+ localStorage.removeItem('refreshAfter')
+ localStorage.removeItem('accessExpire')
+ // 跳转到登录页
+ router.replace("/login");
+ } else {
+ if (typeof error === "string") {
+ showToast({ message: error });
+ }
+ }
+ return { error };
+ },
+ },
+});
+
+export default useApiFetch;
diff --git a/src/composables/useEnv.js b/src/composables/useEnv.js
new file mode 100644
index 0000000..10c96c7
--- /dev/null
+++ b/src/composables/useEnv.js
@@ -0,0 +1,16 @@
+// src/composables/useEnv.js
+import { ref, onMounted } from 'vue'
+
+// 创建一个全局的 ref
+const isWeChat = ref(false)
+
+// 立即执行检测
+const userAgent = navigator.userAgent.toLowerCase()
+const keywords = ['micromessenger', 'wechat'].map(key => key.toLowerCase())
+isWeChat.value = keywords.some(keyword => userAgent.includes(keyword))
+
+export function useEnv() {
+ return {
+ isWeChat,
+ }
+}
diff --git a/src/composables/useHttp.js b/src/composables/useHttp.js
new file mode 100644
index 0000000..78f455f
--- /dev/null
+++ b/src/composables/useHttp.js
@@ -0,0 +1,27 @@
+import { useFetch, createFetch } from '@vueuse/core';
+
+export function useHttp(url, options = {}, token) {
+ const fetch = createFetch(url, {
+ baseUrl: '/api/v1',
+ options: {
+ async beforeFetch({ url, options, cancel }) {
+ console.log("asdasd", options)
+ options.headers = {
+ ...options.headers,
+ Authorization: `${token}`,
+ }
+ return {
+ options,
+ }
+ },
+ async afterFetch(ctx) {
+ console.log("ctx", ctx)
+ // if (ctx.data.code !== 200) {
+ // throw new Error(ctx.data.message || '请求失败');
+ // }
+ return ctx;
+ },
+ }
+ })
+ return fetch(url)
+}
diff --git a/src/composables/useRiskNotifier.js b/src/composables/useRiskNotifier.js
new file mode 100644
index 0000000..631874e
--- /dev/null
+++ b/src/composables/useRiskNotifier.js
@@ -0,0 +1,18 @@
+import { watch } from "vue";
+
+/**
+ * 风险评分通知 composable
+ * 用于组件向父组件通知自己的风险评分(0-100分,分数越高越安全)
+ */
+export function useRiskNotifier(props, riskScore) {
+ // 监听 riskScore 变化,通知父组件
+ watch(
+ riskScore,
+ (newValue) => {
+ if (props.apiId && props.notifyRiskStatus) {
+ props.notifyRiskStatus(props.apiId, props.index, newValue);
+ }
+ },
+ { immediate: true }
+ );
+}
diff --git a/src/composables/useSEO.js b/src/composables/useSEO.js
new file mode 100644
index 0000000..052f1ae
--- /dev/null
+++ b/src/composables/useSEO.js
@@ -0,0 +1,197 @@
+import { ref, watch } from 'vue'
+import { useRoute } from 'vue-router'
+
+export function useSEO() {
+ const route = useRoute()
+
+ // 默认SEO信息
+ const defaultSEO = {
+ title: '幸福查|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用',
+ description: '幸福查,专业大数据风险报告查询与代理平台,支持个人信用查询、小微企业风控、贷前风险背调等多场景报告应用,免费开通代理权限,助力高效识别信用与风险。',
+ keywords: '大数据风险报告查询、大数据风险评估、大数据分析报告、个人大数据风险查询、小微企业风险、贷前风险背调、代理管理平台、免费开通代理、风险管控平台、信用风险分析、企业风险报告、贷前信用审核、失信人名单查询、被执行人信息、信用黑名单查询',
+ url: 'https://www.zhinengcha.cn'
+ }
+
+ // 页面SEO配置
+ const pageSEO = ref({
+ title: '',
+ description: '',
+ keywords: '',
+ url: ''
+ })
+
+ // 更新页面SEO信息
+ const updateSEO = (seoConfig) => {
+ const config = { ...defaultSEO, ...seoConfig }
+
+ // 更新页面标题
+ document.title = config.title
+
+ // 更新meta描述
+ let metaDescription = document.querySelector('meta[name="description"]')
+ if (!metaDescription) {
+ metaDescription = document.createElement('meta')
+ metaDescription.name = 'description'
+ document.head.appendChild(metaDescription)
+ }
+ metaDescription.content = config.description
+
+ // 更新meta关键词
+ let metaKeywords = document.querySelector('meta[name="keywords"]')
+ if (!metaKeywords) {
+ metaKeywords = document.createElement('meta')
+ metaKeywords.name = 'keywords'
+ document.head.appendChild(metaKeywords)
+ }
+ metaKeywords.content = config.keywords
+
+ // 更新Open Graph标签
+ updateOpenGraph(config)
+
+ // 更新Twitter Cards
+ updateTwitterCards(config)
+
+ // 更新canonical URL
+ updateCanonicalURL(config.url)
+
+ // 更新结构化数据
+ updateStructuredData(config)
+ }
+
+ // 更新Open Graph标签
+ const updateOpenGraph = (config) => {
+ const ogTags = {
+ 'og:title': config.title,
+ 'og:description': config.description,
+ 'og:url': config.url,
+ 'og:type': 'website',
+ 'og:site_name': '幸福查',
+ 'og:locale': 'zh_CN'
+ }
+
+ Object.entries(ogTags).forEach(([property, content]) => {
+ let meta = document.querySelector(`meta[property="${property}"]`)
+ if (!meta) {
+ meta = document.createElement('meta')
+ meta.setAttribute('property', property)
+ document.head.appendChild(meta)
+ }
+ meta.content = content
+ })
+ }
+
+ // 更新Twitter Cards
+ const updateTwitterCards = (config) => {
+ const twitterTags = {
+ 'twitter:card': 'summary',
+ 'twitter:title': config.title,
+ 'twitter:description': config.description,
+ 'twitter:url': config.url
+ }
+
+ Object.entries(twitterTags).forEach(([name, content]) => {
+ let meta = document.querySelector(`meta[name="${name}"]`)
+ if (!meta) {
+ meta = document.createElement('meta')
+ meta.name = name
+ document.head.appendChild(meta)
+ }
+ meta.content = content
+ })
+ }
+
+ // 更新canonical URL
+ const updateCanonicalURL = (url) => {
+ let canonical = document.querySelector('link[rel="canonical"]')
+ if (!canonical) {
+ canonical = document.createElement('link')
+ canonical.rel = 'canonical'
+ document.head.appendChild(canonical)
+ }
+ canonical.href = url
+ }
+
+ // 更新结构化数据
+ const updateStructuredData = (config) => {
+ // 移除现有的结构化数据
+ const existingScripts = document.querySelectorAll('script[type="application/ld+json"]')
+ existingScripts.forEach(script => {
+ if (script.textContent.includes('"@type":"WebPage"')) {
+ script.remove()
+ }
+ })
+
+ // 添加新的结构化数据
+ const structuredData = {
+ "@context": "https://schema.org",
+ "@type": "WebPage",
+ "name": config.title,
+ "description": config.description,
+ "url": config.url,
+ "mainEntity": {
+ "@type": "Organization",
+ "name": "幸福查",
+ "url": "https://www.zhinengcha.cn/",
+ "description": "专业大数据风险报告查询与代理平台,支持个人和企业多场景风控应用"
+ }
+ }
+
+ const script = document.createElement('script')
+ script.type = 'application/ld+json'
+ script.textContent = JSON.stringify(structuredData)
+ document.head.appendChild(script)
+ }
+
+ // 根据路由自动更新SEO
+ const updateSEOByRoute = () => {
+ const routeConfigs = {
+ '/': {
+ title: '幸福查|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用',
+ description: '幸福查,专业大数据风险报告查询与代理平台,支持个人信用查询、小微企业风控、贷前风险背调等多场景报告应用,免费开通代理权限,助力高效识别信用与风险。',
+ keywords: '大数据风险报告查询、大数据风险评估、大数据分析报告、个人大数据风险查询、小微企业风险、贷前风险背调、代理管理平台、免费开通代理、风险管控平台、信用风险分析、企业风险报告、贷前信用审核、失信人名单查询、被执行人信息、信用黑名单查询'
+ },
+ '/agent': {
+ title: '幸福查代理 - 免费开通代理权限 | 大数据风险报告代理',
+ description: '幸福查代理平台,免费开通代理权限,享受大数据风险报告查询服务代理收益。专业的大数据风险报告、婚姻查询、个人信用评估等服务的代理合作。',
+ keywords: '幸福查代理, 免费代理, 大数据风险报告代理, 代理权限, 代理收益'
+ },
+ '/help': {
+ title: '帮助中心 - 幸福查使用指南 | 常见问题解答',
+ description: '幸福查帮助中心,提供详细的使用指南、常见问题解答、操作教程等,帮助用户更好地使用大数据风险报告查询服务。',
+ keywords: '幸福查帮助, 使用指南, 常见问题, 操作教程, 客服支持'
+ },
+ '/help/guide': {
+ title: '使用指南 - 幸福查操作教程 | 功能说明',
+ description: '幸福查详细使用指南,包含各功能模块的操作教程、功能说明、注意事项等,让用户快速上手使用。',
+ keywords: '使用指南, 操作教程, 功能说明, 快速上手, 幸福查教程'
+ },
+ '/example': {
+ title: '示例报告 - 幸福查报告展示 | 大数据风险报告样例',
+ description: '幸福查示例报告展示,包含大数据风险报告、婚姻状况查询、个人信用评估等服务的报告样例,让用户了解报告内容和格式。',
+ keywords: '示例报告, 报告展示, 报告样例, 大数据风险报告, 婚姻查询报告'
+ },
+ '/service': {
+ title: '客服中心 - 幸福查在线客服 | 技术支持',
+ description: '幸福查客服中心,提供在线客服支持、技术咨询、问题反馈等服务,确保用户获得及时有效的帮助。',
+ keywords: '客服中心, 在线客服, 技术支持, 问题反馈, 幸福查客服'
+ }
+ }
+
+ const currentPath = route?.path || '/'
+ const config = routeConfigs[currentPath] || defaultSEO
+
+ updateSEO({
+ ...config,
+ url: `https://www.zhinengcha.cn${currentPath}`
+ })
+ }
+
+ // 监听路由变化
+ watch(() => route?.path, updateSEOByRoute, { immediate: true })
+
+ return {
+ updateSEO,
+ updateSEOByRoute,
+ pageSEO
+ }
+}
diff --git a/src/composables/useWebView.js b/src/composables/useWebView.js
new file mode 100644
index 0000000..318791f
--- /dev/null
+++ b/src/composables/useWebView.js
@@ -0,0 +1,130 @@
+import { ref, onMounted } from "vue";
+import "@/assets/uni-webview"
+
+export function useWebView() {
+ const platform = ref("");
+ const token = ref("");
+ // 检测环境并通知父窗口加载完毕
+ const handleBridgeReady = () => {
+ if (platform.value) {
+ h5PostMessage("loaded", true);
+ }
+ };
+
+
+ // 获取 Token(从 URL 中解析)
+ const getTokenFromUrl = () => {
+ const urlParams = new URLSearchParams(window.location.search);
+ const tokenFromUrl = urlParams.get("token");
+ token.value = tokenFromUrl || ""; // 如果 URL 没有 token,返回空字符串
+ if (token.value) {
+ localStorage.setItem("token", token.value);
+ }
+ return tokenFromUrl;
+ };
+
+ // 封装 postMessage 方法
+ const postMessage = (data) => {
+ if (platform.value === "h5") {
+ h5PostMessage("postMessage", data);
+ } else if (uni && uni.webView.postMessage) {
+ uni.webView.postMessage(data);
+ } else {
+ console.error("uni.webView.postMessage is not available.");
+ }
+ };
+
+ const redirectTo = (data) => {
+ if (platform.value === "h5") {
+ h5PostMessage("redirectTo", data)
+ } else if (uni && uni.webView.redirectTo) {
+ // 非 H5 环境,调用 uni.webView.redirectTo
+ uni.webView.redirectTo(data);
+ } else {
+ console.error("uni.webView.redirectTo is not available.");
+ }
+ };
+
+ // 封装 navigateBack 方法
+ const navigateBack = (data) => {
+ if (platform.value === "h5") {
+ window.top.history.back();
+ // h5PostMessage("navigateBack", data)
+ } else if (uni && uni.webView.navigateBack) {
+ // 非 H5 环境,调用 uni.webView.navigateBack
+ uni.webView.navigateBack(data);
+ } else {
+ console.error("uni.webView.navigateBack is not available.");
+ }
+ };
+
+ // 封装 navigateTo 方法
+ const navigateTo = (data) => {
+ if (platform.value === "h5") {
+ // h5PostMessage("navigateTo", data)
+ window.top.location.href = "/app" + data.url
+ } else if (uni && uni.webView.navigateTo) {
+ uni.webView.navigateTo(data);
+ } else {
+ console.error("uni.webView.navigateTo is not available.");
+ }
+ };
+ const payment = (data) => {
+ if (platform.value === "h5") {
+ h5PostMessage("payment", data)
+ } else if (uni && uni.webView.navigateTo) {
+ // 非 H5 环境,调用 uni.webView.navigateTo
+ uni.webView.navigateTo(data);
+ } else {
+ console.error("uni.webView.navigateTo is not available.");
+ }
+ }
+ const getEnv = () => {
+ return new Promise((resolve, reject) => {
+ let env = localStorage.getItem(platform)
+ if (env) {
+ platform.value = env
+ resolve(env);
+ } else {
+ uni.webView.getEnv((env) => {
+ // 遍历 env 对象,找到值为 true 的键
+ const platformKey = Object.keys(env).find(key => env[key] === true);
+ platform.value = platformKey;
+ if (platformKey) {
+ resolve(platformKey); // 返回键名(如 'h5', 'mp-weixin' 等)
+ } else {
+ reject('未知平台');
+ }
+ });
+ }
+ });
+ };
+
+ onMounted(async () => {
+ try {
+ const envValue = await getEnv();
+ console.log("当前环境", envValue)
+ // 将返回的键名(如 'h5', 'mp-weixin')存储到 platform
+ handleBridgeReady();
+ } catch (error) {
+ console.error(error);
+ }
+ // 获取 Token
+ getTokenFromUrl();
+ });
+
+ return {
+ platform,
+ token,
+ getEnv,
+ redirectTo,
+ postMessage,
+ navigateTo,
+ navigateBack,
+ payment
+ };
+}
+const h5PostMessage = (action, data) => {
+ window.parent.postMessage({ action, data, messageId: generateUniqueId(action) }, "*");
+}
+const generateUniqueId = (action) => `msg_${action}_${new Date().getTime()}`;
diff --git a/src/composables/useWeixinShare.js b/src/composables/useWeixinShare.js
new file mode 100644
index 0000000..66748c7
--- /dev/null
+++ b/src/composables/useWeixinShare.js
@@ -0,0 +1,234 @@
+import { ref } from "vue";
+import { useEnv } from "./useEnv";
+
+export function useWeixinShare() {
+ const { isWeChat } = useEnv();
+ const wxConfigReady = ref(false);
+ const signMap = new Map(); // 存储各个链接的签名信息
+
+ /**
+ * 从后端获取签名信息
+ * @param {string} url - 需要签名的URL
+ * @returns {Promise} 签名信息
+ */
+ const getWxSignature = async (url) => {
+ try {
+ const { data, error } = await useApiFetch("/wechat/getSignature")
+ .post({ url })
+ .json();
+
+ if (error.value || data.value?.code !== 200) {
+ console.error("获取微信签名失败:", error.value || data.value);
+ return null;
+ }
+
+ return data.value.data;
+ } catch (err) {
+ console.error("获取微信签名异常:", err);
+ return null;
+ }
+ };
+
+ /**
+ * 配置微信SDK
+ * @param {Object} signature - 签名信息
+ * @param {Object} shareConfig - 分享配置
+ */
+ const wxConfigJSSDK = (signature, shareConfig) => {
+ const { title, desc, link, imgUrl } = shareConfig;
+
+ window.jWeixin.config({
+ debug: false, // 生产环境设为false,开发时可设为true查看错误
+ appId: signature.appId,
+ timestamp: signature.timestamp,
+ nonceStr: signature.nonceStr,
+ signature: signature.signature,
+ jsApiList: [
+ "updateAppMessageShareData",
+ "updateTimelineShareData",
+ "onMenuShareAppMessage",
+ "onMenuShareTimeline",
+ ],
+ });
+
+ window.jWeixin.ready(() => {
+ console.log("微信SDK配置成功");
+
+ const shareData = {
+ title,
+ desc,
+ link,
+ imgUrl,
+ };
+
+ // 新版分享接口 - 分享给朋友
+ window.jWeixin.updateAppMessageShareData({
+ ...shareData,
+ success: function (res) {
+ console.log("分享给朋友配置成功", res);
+ },
+ fail: function (err) {
+ console.error("分享给朋友配置失败", err);
+ },
+ });
+
+ // 新版分享接口 - 分享到朋友圈
+ window.jWeixin.updateTimelineShareData({
+ ...shareData,
+ success: function (res) {
+ console.log("分享到朋友圈配置成功", res);
+ },
+ fail: function (err) {
+ console.error("分享到朋友圈配置失败", err);
+ },
+ });
+
+ // 兼容旧版微信 - 分享给朋友
+ window.jWeixin.onMenuShareAppMessage({
+ ...shareData,
+ success: function (res) {
+ console.log("分享给朋友成功", res);
+ },
+ fail: function (err) {
+ console.error("分享给朋友失败", err);
+ },
+ cancel: function () {
+ console.log("用户取消分享");
+ },
+ });
+
+ // 兼容旧版微信 - 分享到朋友圈
+ window.jWeixin.onMenuShareTimeline({
+ ...shareData,
+ success: function (res) {
+ console.log("分享到朋友圈成功", res);
+ },
+ fail: function (err) {
+ console.error("分享到朋友圈失败", err);
+ },
+ cancel: function () {
+ console.log("用户取消分享");
+ },
+ });
+
+ wxConfigReady.value = true;
+ });
+
+ window.jWeixin.error((res) => {
+ console.error("微信SDK配置失败:", res);
+ // 常见错误:
+ // 1. invalid url domain - 当前域名未在公众号后台配置
+ // 2. invalid signature - 签名错误
+ // 3. permission denied - 没有权限使用该接口
+ });
+ };
+
+ /**
+ * 配置微信分享
+ * @param {Object} shareConfig - 分享配置
+ * @param {string} shareConfig.title - 分享标题
+ * @param {string} shareConfig.desc - 分享描述
+ * @param {string} shareConfig.link - 分享链接
+ * @param {string} shareConfig.imgUrl - 分享图标URL
+ */
+ const configWeixinShare = async (shareConfig = {}) => {
+ console.log("configWeixinShare", shareConfig);
+ console.log("isWeChat", isWeChat.value);
+ console.log("window.jWeixin", window.jWeixin);
+ // 只在微信环境中配置
+ if (!isWeChat.value || !window.jWeixin) {
+ console.log("非微信环境或微信SDK未加载");
+ return;
+ }
+
+ const defaultConfig = {
+ title: "幸福查|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用",
+ desc: "提供个人信用评估、人事背调、信贷风控、企业风险监测等服务",
+ link: window.location.href.split("#")[0], // 获取当前页面URL,不包括hash
+ imgUrl: "https://www.www.xingfucha.cn/logo.jpg",
+ };
+
+ const config = { ...defaultConfig, ...shareConfig };
+
+ // 获取当前页面的完整URL(不包括hash)
+ const currentUrl = window.location.href.split("#")[0];
+
+ // 检查是否已有该URL的签名
+ if (signMap.has(currentUrl)) {
+ console.log("使用缓存的签名信息");
+ wxConfigJSSDK(signMap.get(currentUrl), config);
+ return;
+ }
+
+ // 从后端获取签名
+ console.log("正在获取微信签名...");
+ const signature = await getWxSignature(currentUrl);
+
+ if (!signature) {
+ console.error("获取微信签名失败,无法配置分享");
+ return;
+ }
+
+ // 缓存签名信息
+ signMap.set(currentUrl, signature);
+
+ // 配置微信SDK
+ wxConfigJSSDK(signature, config);
+ };
+
+ /**
+ * 动态更新分享配置
+ * @param {Object} shareConfig - 分享配置
+ */
+ const updateShareConfig = (shareConfig) => {
+ configWeixinShare(shareConfig);
+ };
+
+ /**
+ * 根据当前页面动态设置分享内容
+ */
+ const setDynamicShare = async () => {
+ const route = window.location.pathname;
+ let shareConfig = {};
+
+ // 根据不同的路由设置不同的分享内容
+ if (route.includes("/example")) {
+ shareConfig = {
+ title: "幸福查 - 大数据风险报告示例",
+ desc: "查看完整的大数据风险报告示例,了解个人信用评估等服务",
+ link: window.location.href.split("#")[0],
+ imgUrl: "https://www.www.xingfucha.cn/logo.jpg",
+ };
+ } else if (route.includes("/agent")) {
+ shareConfig = {
+ title: "幸福查 - 免费开通代理权限",
+ desc: "免费开通代理权限,享受大数据风险报告查询服务代理收益",
+ link: window.location.href.split("#")[0],
+ imgUrl: "https://www.www.xingfucha.cn/logo.jpg",
+ };
+ } else if (route.includes("/help")) {
+ shareConfig = {
+ title: "幸福查 - 帮助中心",
+ desc: "详细的使用指南、常见问题解答、操作教程",
+ link: window.location.href.split("#")[0],
+ imgUrl: "https://www.www.xingfucha.cn/logo.jpg",
+ };
+ } else {
+ shareConfig = {
+ title: "幸福查|大数据风险报告查询与代理平台,支持个人和企业多场景风控应用",
+ desc: "提供个人信用评估、人事背调、信贷风控、企业风险监测等服务",
+ link: window.location.href.split("#")[0],
+ imgUrl: "https://www.www.xingfucha.cn/logo.jpg",
+ };
+ }
+
+ await configWeixinShare(shareConfig);
+ };
+
+ return {
+ wxConfigReady,
+ configWeixinShare,
+ updateShareConfig,
+ setDynamicShare,
+ };
+}
diff --git a/src/composables/useZoomAdapter.js b/src/composables/useZoomAdapter.js
new file mode 100644
index 0000000..beb8d21
--- /dev/null
+++ b/src/composables/useZoomAdapter.js
@@ -0,0 +1,32 @@
+import { ref, onMounted } from 'vue';
+import zoomAdapter from '../utils/zoomAdapter.js';
+
+/**
+ * 简化版缩放适配组合式函数
+ */
+export function useZoomAdapter() {
+ const currentZoom = ref(1);
+ const isTooHighZoom = ref(false);
+
+ const handleZoomChange = (event) => {
+ const { zoom } = event.detail;
+ currentZoom.value = zoom;
+ isTooHighZoom.value = zoom > 3;
+ };
+
+ onMounted(() => {
+ if (!zoomAdapter.isInitialized) {
+ zoomAdapter.init();
+ }
+ window.addEventListener('zoomChanged', handleZoomChange);
+ });
+
+ return {
+ currentZoom,
+ isTooHighZoom,
+ getZoomAdaptiveClass: () => ({
+ 'zoom-adaptive': true,
+ 'too-high-zoom': isTooHighZoom.value
+ })
+ };
+}
\ No newline at end of file
diff --git a/src/data/ivyz3p9m-dictionary.json b/src/data/ivyz3p9m-dictionary.json
new file mode 100644
index 0000000..04e56cd
--- /dev/null
+++ b/src/data/ivyz3p9m-dictionary.json
@@ -0,0 +1,6416 @@
+{
+ "educationLevel": {
+ "1": "专科",
+ "2": "本科",
+ "3": "硕士研究生",
+ "4": "博士研究生",
+ "5": "第二学士学位",
+ "99": "未知"
+ },
+ "learningForm": {
+ "1": "脱产",
+ "2": "普通全日制",
+ "3": "全日制",
+ "4": "开放教育",
+ "5": "夜大学",
+ "6": "函授",
+ "7": "网络教育",
+ "8": "非全日制",
+ "9": "业余",
+ "99": "未知"
+ },
+ "specialties": {
+ "10100": "哲学类",
+ "10101": "哲学",
+ "10102": "逻辑学",
+ "10103": "宗教学",
+ "10104": "伦理学",
+ "10105": "伦理学",
+ "10106": "美学",
+ "10107": "宗教学",
+ "10108": "科学技术哲学",
+ "20100": "经济学类",
+ "20101": "经济学",
+ "20102": "经济统计学",
+ "20103": "国民经济管理",
+ "20104": "资源与环境经济学",
+ "20105": "商务经济学",
+ "20106": "能源经济",
+ "20107": "劳动经济学",
+ "20108": "经济工程",
+ "20109": "数字经济",
+ "20200": "财政学类",
+ "20201": "财政学",
+ "20202": "税收学",
+ "20203": "国际税收",
+ "20204": "金融学",
+ "20205": "产业经济学",
+ "20206": "国际贸易学",
+ "20207": "劳动经济学",
+ "20208": "统计学",
+ "20209": "数量经济学",
+ "20210": "国防经济",
+ "20300": "金融学类",
+ "20301": "金融学",
+ "20302": "金融工程",
+ "20303": "保险学",
+ "20304": "投资学",
+ "20305": "金融数学",
+ "20306": "信用管理",
+ "20307": "经济与金融",
+ "20308": "精算学",
+ "20309": "互联网金融",
+ "20310": "金融科技",
+ "20400": "经济与贸易类",
+ "20401": "国际经济与贸易",
+ "20402": "贸易经济",
+ "25100": "金融",
+ "25200": "应用统计",
+ "25300": "税务",
+ "25400": "国际商务",
+ "25500": "保险",
+ "25600": "资产评估",
+ "25700": "审计",
+ "27000": "统计学",
+ "30100": "法学类",
+ "30101": "法学",
+ "30102": "知识产权",
+ "30103": "监狱学",
+ "30104": "信用风险管理与法律防控",
+ "30105": "国际经贸规则",
+ "30106": "司法警察学",
+ "30107": "社区矫正",
+ "30108": "环境与资源保护法学",
+ "30109": "国际法学",
+ "30110": "军事法学",
+ "30200": "政治学类",
+ "30201": "政治学与行政学",
+ "30202": "国际政治",
+ "30203": "外交学",
+ "30204": "国际事务与国际关系",
+ "30205": "政治学、经济学与哲学",
+ "30206": "国际组织与全球治理",
+ "30207": "国际关系",
+ "30208": "外交学",
+ "30300": "社会学类",
+ "30301": "社会学",
+ "30302": "社会工作",
+ "30303": "人类学",
+ "30304": "女性学",
+ "30305": "家政学",
+ "30306": "老年学",
+ "30400": "民族学类",
+ "30401": "民族学",
+ "30402": "马克思主义民族理论与政策",
+ "30403": "中国少数民族经济",
+ "30404": "中国少数民族史",
+ "30405": "中国少数民族艺术",
+ "30500": "马克思主义理论类",
+ "30501": "科学社会主义",
+ "30502": "中国共产党历史",
+ "30503": "思想政治教育",
+ "30504": "马克思主义理论",
+ "30505": "思想政治教育",
+ "30506": "中国近现代史基本问题研究",
+ "30600": "公安学类",
+ "30601": "治安学",
+ "30602": "侦查学",
+ "30603": "边防管理",
+ "30604": "禁毒学",
+ "30605": "警犬技术",
+ "30606": "经济犯罪侦查",
+ "30607": "边防指挥",
+ "30608": "消防指挥",
+ "30609": "警卫学",
+ "30610": "公安情报学",
+ "30611": "犯罪学",
+ "30612": "公安管理学",
+ "30613": "涉外警务",
+ "30614": "国内安全保卫",
+ "30615": "警务指挥与战术",
+ "30616": "技术侦查学",
+ "30617": "海警执法",
+ "30618": "公安政治工作",
+ "30619": "移民管理",
+ "30620": "出入境管理",
+ "35100": "法律",
+ "35101": "法律(非法学)",
+ "35102": "法律(法学)",
+ "35200": "社会工作",
+ "35300": "警务",
+ "40100": "教育学类",
+ "40101": "教育学",
+ "40102": "科学教育",
+ "40103": "人文教育",
+ "40104": "教育技术学",
+ "40105": "艺术教育",
+ "40106": "学前教育",
+ "40107": "小学教育",
+ "40108": "特殊教育",
+ "40109": "华文教育",
+ "40110": "教育康复学",
+ "40111": "卫生教育",
+ "40112": "认知科学与技术",
+ "40200": "体育学类",
+ "40201": "体育教育",
+ "40202": "运动训练",
+ "40203": "社会体育指导与管理",
+ "40204": "武术与民族传统体育",
+ "40205": "运动人体科学",
+ "40206": "运动康复",
+ "40207": "休闲体育",
+ "40208": "体能训练",
+ "40209": "冰雪运动",
+ "40210": "电子竞技运动与管理",
+ "40211": "智能体育工程",
+ "40212": "体育旅游",
+ "40213": "运动能力开发",
+ "40300": "体育学",
+ "40301": "体育人文社会学",
+ "40302": "运动人体科学",
+ "40303": "体育教育训练学",
+ "40304": "民族传统体育学",
+ "45100": "教育",
+ "45101": "教育管理",
+ "45102": "学科教学(思政)",
+ "45103": "学科教学(语文)",
+ "45104": "学科教学(数学)",
+ "45105": "学科教学(物理)",
+ "45106": "学科教学(化学)",
+ "45107": "学科教学(生物)",
+ "45108": "学科教学(英语)",
+ "45109": "学科教学(历史)",
+ "45110": "学科教学(地理)",
+ "45111": "学科教学(音乐)",
+ "45112": "学科教学(体育)",
+ "45113": "学科教学(美术)",
+ "45114": "现代教育技术",
+ "45115": "小学教育",
+ "45116": "心理健康教育",
+ "45117": "科学与技术教育",
+ "45118": "学前教育",
+ "45119": "特殊教育",
+ "45120": "职业技术教育",
+ "45171": "学校课程与教学",
+ "45172": "学生发展与教育",
+ "45173": "教育领导与管理",
+ "45174": "汉语国际教育",
+ "45200": "体育",
+ "45201": "体育教学",
+ "45202": "运动训练",
+ "45203": "竞赛组织",
+ "45204": "社会体育指导",
+ "45300": "汉语国际教育",
+ "45400": "应用心理",
+ "47100": "教育经济与管理",
+ "47101": "教育经济与管理",
+ "48100": "教育博士",
+ "48102": "学生发展与教育",
+ "48103": "教育领导与管理",
+ "50100": "中国语言文学类",
+ "50101": "汉语言文学",
+ "50102": "汉语言",
+ "50103": "汉语国际教育",
+ "50104": "中国少数民族语言文学",
+ "50105": "古典文献学",
+ "50106": "应用语言学",
+ "50107": "秘书学",
+ "50108": "中国语言与文化",
+ "50109": "手语翻译",
+ "50200": "外国语言文学类",
+ "50201": "英语",
+ "50202": "俄语",
+ "50203": "德语",
+ "50204": "法语",
+ "50205": "西班牙语",
+ "50206": "阿拉伯语",
+ "50207": "日语",
+ "50208": "波斯语",
+ "50209": "朝鲜语",
+ "50210": "菲律宾语",
+ "50211": "梵语巴利语",
+ "50212": "印度尼西亚语",
+ "50213": "印地语",
+ "50214": "柬埔寨语",
+ "50215": "老挝语",
+ "50216": "缅甸语",
+ "50217": "马来语",
+ "50218": "蒙古语",
+ "50219": "僧伽罗语",
+ "50220": "泰语",
+ "50221": "乌尔都语",
+ "50222": "希伯来语",
+ "50223": "越南语",
+ "50224": "豪萨语",
+ "50225": "斯瓦希里语",
+ "50226": "阿尔巴尼亚语",
+ "50227": "保加利亚语",
+ "50228": "波兰语",
+ "50229": "捷克语",
+ "50230": "斯洛伐克语",
+ "50231": "罗马尼亚语",
+ "50232": "葡萄牙语",
+ "50233": "瑞典语",
+ "50234": "塞尔维亚语",
+ "50235": "土耳其语",
+ "50236": "希腊语",
+ "50237": "匈牙利语",
+ "50238": "意大利语",
+ "50239": "泰米尔语",
+ "50240": "普什图语",
+ "50241": "世界语",
+ "50242": "孟加拉语",
+ "50243": "尼泊尔语",
+ "50244": "克罗地亚语",
+ "50245": "荷兰语",
+ "50246": "芬兰语",
+ "50247": "乌克兰语",
+ "50248": "挪威语",
+ "50249": "丹麦语",
+ "50250": "冰岛语",
+ "50251": "爱尔兰语",
+ "50252": "拉脱维亚语",
+ "50253": "立陶宛语",
+ "50254": "斯洛文尼亚语",
+ "50255": "爱沙尼亚语",
+ "50256": "马耳他语",
+ "50257": "哈萨克语",
+ "50258": "乌兹别克语",
+ "50259": "祖鲁语",
+ "50260": "拉丁语",
+ "50261": "翻译",
+ "50262": "商务英语",
+ "50263": "阿姆哈拉语",
+ "50264": "吉尔吉斯语",
+ "50265": "索马里语",
+ "50266": "土库曼语",
+ "50267": "加泰罗尼亚语",
+ "50268": "约鲁巴语",
+ "50269": "亚美尼亚语",
+ "50270": "马达加斯加语",
+ "50271": "格鲁吉亚语",
+ "50272": "阿塞拜疆语",
+ "50273": "阿非利卡语",
+ "50274": "马其顿语",
+ "50275": "塔吉克语",
+ "50276": "茨瓦纳语",
+ "50277": "恩德贝莱语",
+ "50278": "科摩罗语",
+ "50279": "克里奥尔语",
+ "50280": "绍纳语",
+ "50281": "提格雷尼亚语",
+ "50282": "白俄罗斯语",
+ "50283": "毛利语",
+ "50284": "汤加语",
+ "50285": "萨摩亚语",
+ "50286": "库尔德语",
+ "50287": "比斯拉马语",
+ "50288": "达里语",
+ "50289": "德顿语",
+ "50290": "迪维希语",
+ "50291": "斐济语",
+ "50292": "库克群岛毛利语",
+ "50293": "隆迪语",
+ "50294": "卢森堡语",
+ "50295": "卢旺达语",
+ "50296": "纽埃语",
+ "50297": "皮金语",
+ "50298": "切瓦语",
+ "50299": "塞苏陀语",
+ "50300": "新闻传播学类",
+ "50301": "新闻学",
+ "50302": "广播电视学",
+ "50303": "广告学",
+ "50304": "传播学",
+ "50305": "编辑出版学",
+ "50306": "网络与新媒体",
+ "50307": "数字出版",
+ "50308": "时尚传播",
+ "50309": "国际新闻与传播",
+ "50310": "会展",
+ "55100": "翻译",
+ "55101": "英语笔译",
+ "55102": "英语口译",
+ "55103": "俄语笔译",
+ "55104": "俄语口译",
+ "55105": "日语笔译",
+ "55106": "日语口译",
+ "55107": "法语笔译",
+ "55108": "法语口译",
+ "55109": "德语笔译",
+ "55110": "德语口译",
+ "55111": "朝鲜语笔译",
+ "55112": "朝鲜语口译",
+ "55113": "西班牙语笔译",
+ "55114": "西班牙语口译",
+ "55115": "阿拉伯语笔译",
+ "55116": "阿拉伯语口译",
+ "55117": "泰语笔译",
+ "55118": "泰语口译",
+ "55119": "意大利语笔译",
+ "55120": "意大利语口译",
+ "55121": "越南语笔译",
+ "55122": "越南语口译",
+ "55200": "新闻与传播",
+ "55300": "出版",
+ "60100": "历史学类",
+ "60101": "历史学",
+ "60102": "世界史",
+ "60103": "考古学",
+ "60104": "文物与博物馆学",
+ "60105": "文物保护技术",
+ "60106": "外国语言与外国历史",
+ "60107": "文化遗产",
+ "60200": "中国史",
+ "60201": "中国古代史",
+ "60202": "历史地理学",
+ "60204": "专门史",
+ "60300": "世界史",
+ "65100": "文物与博物馆",
+ "65101": "考古学",
+ "65102": "博物馆学",
+ "65103": "文化遗产",
+ "65104": "文物保护",
+ "70100": "数学类",
+ "70101": "数学与应用数学",
+ "70102": "信息与计算科学",
+ "70103": "数理基础科学",
+ "70104": "数据计算及应用",
+ "70105": "运筹学与控制论",
+ "70200": "物理学类",
+ "70201": "物理学",
+ "70202": "应用物理学",
+ "70203": "核物理",
+ "70204": "声学",
+ "70205": "系统科学与工程",
+ "70206": "量子信息科学",
+ "70207": "光学",
+ "70208": "无线电物理",
+ "70300": "化学类",
+ "70301": "化学",
+ "70302": "应用化学",
+ "70303": "化学生物学",
+ "70304": "分子科学与工程",
+ "70305": "能源化学",
+ "70306": "化学测量学技术",
+ "70400": "天文学类",
+ "70401": "天文学",
+ "70402": "天体测量与天体力学",
+ "70500": "地理科学类",
+ "70501": "地理科学",
+ "70502": "自然地理与资源环境",
+ "70503": "人文地理与城乡规划",
+ "70504": "地理信息科学",
+ "70600": "大气科学类",
+ "70601": "大气科学",
+ "70602": "应用气象学",
+ "70603": "气象技术与工程",
+ "70700": "海洋科学类",
+ "70701": "海洋科学",
+ "70702": "海洋技术",
+ "70703": "海洋资源与环境",
+ "70704": "军事海洋学",
+ "70800": "地球物理学类",
+ "70801": "地球物理学",
+ "70802": "空间科学与技术",
+ "70803": "防灾减灾科学与工程",
+ "70900": "地质学类",
+ "70901": "地质学",
+ "70902": "地球化学",
+ "70903": "地球信息科学与技术",
+ "70904": "古生物学",
+ "70905": "第四纪地质学",
+ "71000": "生物科学类",
+ "71001": "生物科学",
+ "71002": "生物技术",
+ "71003": "生物信息学",
+ "71004": "生态学",
+ "71005": "整合科学",
+ "71006": "神经科学",
+ "71007": "遗传学",
+ "71008": "发育生物学",
+ "71009": "细胞生物学",
+ "71010": "生物化学与分子生物学",
+ "71011": "生物物理学",
+ "71012": "生态学",
+ "71100": "心理学类",
+ "71101": "心理学",
+ "71102": "应用心理学",
+ "71200": "统计学类",
+ "71201": "统计学",
+ "71202": "应用统计学",
+ "71300": "生态学",
+ "71400": "统计学",
+ "77100": "心理学",
+ "77101": "基础心理学",
+ "77102": "发展与教育心理学",
+ "77103": "应用心理学",
+ "77200": "力学",
+ "77201": "一般力学与力学基础",
+ "77202": "固体力学",
+ "77203": "流体力学",
+ "77204": "工程力学",
+ "77300": "材料科学与工程",
+ "77301": "材料物理与化学",
+ "77302": "材料学",
+ "77303": "材料加工工程",
+ "77400": "电子科学与技术",
+ "77401": "物理电子学",
+ "77402": "电路与系统",
+ "77403": "微电子学与固体电子学",
+ "77404": "电磁场与微波技术",
+ "77500": "计算机科学与技术",
+ "77501": "计算机系统结构",
+ "77502": "计算机软件与理论",
+ "77503": "计算机应用技术",
+ "77600": "环境科学与工程",
+ "77601": "环境科学",
+ "77602": "环境工程",
+ "77700": "生物医学工程",
+ "77800": "基础医学",
+ "77801": "人体解剖与组织胚胎学",
+ "77802": "免疫学",
+ "77803": "病原生物学",
+ "77804": "病理学与病理生理学",
+ "77805": "法医学",
+ "77806": "放射医学",
+ "77900": "公共卫生与预防医学",
+ "77901": "流行病与卫生统计学",
+ "77902": "劳动卫生与环境卫生学",
+ "77903": "营养与食品卫生学",
+ "77904": "儿少卫生与妇幼保健学",
+ "77905": "卫生毒理学",
+ "77906": "军事预防医学",
+ "78000": "药学",
+ "78001": "药物化学",
+ "78002": "药剂学",
+ "78003": "生药学",
+ "78004": "药物分析学",
+ "78005": "微生物与生化药学",
+ "78006": "药理学",
+ "78100": "中药学",
+ "78200": "医学技术",
+ "78300": "护理学",
+ "78400": "教育技术学",
+ "78401": "教育技术学",
+ "78500": "运动人体科学",
+ "78501": "运动人体科学",
+ "78600": "农药学",
+ "78601": "农药学",
+ "80100": "力学类",
+ "80101": "理论与应用力学",
+ "80102": "工程力学",
+ "80103": "流体力学",
+ "80104": "工程力学",
+ "80200": "机械类",
+ "80201": "机械工程",
+ "80202": "机械设计制造及其自动化",
+ "80203": "材料成型及控制工程",
+ "80204": "机械电子工程",
+ "80205": "工业设计",
+ "80206": "过程装备与控制工程",
+ "80207": "车辆工程",
+ "80208": "汽车服务工程",
+ "80209": "机械工艺技术",
+ "80210": "微机电系统工程",
+ "80211": "机电技术教育",
+ "80212": "汽车维修工程教育",
+ "80213": "智能制造工程",
+ "80214": "智能车辆工程",
+ "80215": "仿生科学与工程",
+ "80216": "新能源汽车工程",
+ "80300": "仪器类",
+ "80301": "测控技术与仪器",
+ "80302": "精密仪器",
+ "80303": "智能感知工程",
+ "80400": "材料类",
+ "80401": "材料科学与工程",
+ "80402": "材料物理",
+ "80403": "材料化学",
+ "80404": "冶金工程",
+ "80405": "金属材料工程",
+ "80406": "无机非金属材料工程",
+ "80407": "高分子材料与工程",
+ "80408": "复合材料与工程",
+ "80409": "粉体材料科学与工程",
+ "80410": "宝石及材料工艺学",
+ "80411": "焊接技术与工程",
+ "80412": "功能材料",
+ "80413": "纳米材料与技术",
+ "80414": "新能源材料与器件",
+ "80415": "材料设计科学与工程",
+ "80416": "复合材料成型工程",
+ "80417": "智能材料与结构",
+ "80500": "能源动力类",
+ "80501": "能源与动力工程",
+ "80502": "能源与环境系统工程",
+ "80503": "新能源科学与工程",
+ "80504": "储能科学与工程",
+ "80600": "电气类",
+ "80601": "电气工程及其自动化",
+ "80602": "智能电网信息工程",
+ "80603": "光源与照明",
+ "80604": "电气工程与智能控制",
+ "80605": "电机电器智能化",
+ "80606": "电缆工程",
+ "80700": "电子信息类",
+ "80701": "电子信息工程",
+ "80702": "电子科学与技术",
+ "80703": "通信工程",
+ "80704": "微电子科学与工程",
+ "80705": "光电信息科学与工程",
+ "80706": "信息工程",
+ "80707": "广播电视工程",
+ "80708": "水声工程",
+ "80709": "电子封装技术",
+ "80710": "集成电路设计与集成系统",
+ "80711": "医学信息工程",
+ "80712": "电磁场与无线技术",
+ "80713": "电波传播与天线",
+ "80714": "电子信息科学与技术",
+ "80715": "电信工程及管理",
+ "80716": "应用电子技术教育",
+ "80717": "人工智能",
+ "80718": "海洋信息工程",
+ "80800": "自动化类",
+ "80801": "自动化",
+ "80802": "轨道交通信号与控制",
+ "80803": "机器人工程",
+ "80804": "邮政工程",
+ "80805": "核电技术与控制工程",
+ "80806": "智能装备与系统",
+ "80807": "工业智能",
+ "80900": "计算机类",
+ "80901": "计算机科学与技术",
+ "80902": "软件工程",
+ "80903": "网络工程",
+ "80904": "信息安全",
+ "80905": "物联网工程",
+ "80906": "数字媒体技术",
+ "80907": "智能科学与技术",
+ "80908": "空间信息与数字技术",
+ "80909": "电子与计算机工程",
+ "80910": "数据科学与大数据技术",
+ "80911": "网络空间安全",
+ "80912": "新媒体技术",
+ "80913": "电影制作",
+ "80914": "保密技术",
+ "80915": "服务科学与工程",
+ "80916": "虚拟现实技术",
+ "80917": "区块链工程",
+ "80918": "密码科学与技术",
+ "81000": "土木类",
+ "81001": "土木工程",
+ "81002": "建筑环境与能源应用工程",
+ "81003": "给排水科学与工程",
+ "81004": "建筑电气与智能化",
+ "81005": "城市地下空间工程",
+ "81006": "道路桥梁与渡河工程",
+ "81007": "铁道工程",
+ "81008": "智能建造",
+ "81009": "土木、水利与海洋工程",
+ "81010": "土木、水利与交通工程",
+ "81011": "城市水系统工程",
+ "81012": "智能建造与智慧交通",
+ "81100": "水利类",
+ "81101": "水利水电工程",
+ "81102": "水文与水资源工程",
+ "81103": "港口航道与海岸工程",
+ "81104": "水务工程",
+ "81105": "水利科学与工程",
+ "81200": "测绘类",
+ "81201": "测绘工程",
+ "81202": "遥感科学与技术",
+ "81203": "导航工程",
+ "81204": "地理国情监测",
+ "81205": "地理空间信息工程",
+ "81300": "化工与制药类",
+ "81301": "化学工程与工艺",
+ "81302": "制药工程",
+ "81303": "资源循环科学与工程",
+ "81304": "能源化学工程",
+ "81305": "化学工程与工业生物工程",
+ "81306": "化工安全工程",
+ "81307": "涂料工程",
+ "81308": "精细化工",
+ "81400": "地质类",
+ "81401": "地质工程",
+ "81402": "勘查技术与工程",
+ "81403": "资源勘查工程",
+ "81404": "地下水科学与工程",
+ "81405": "旅游地学与规划工程",
+ "81406": "桥梁与隧道工程",
+ "81500": "矿业类",
+ "81501": "采矿工程",
+ "81502": "石油工程",
+ "81503": "矿物加工工程",
+ "81504": "油气储运工程",
+ "81505": "矿物资源工程",
+ "81506": "海洋油气工程",
+ "81600": "纺织类",
+ "81601": "纺织工程",
+ "81602": "服装设计与工程",
+ "81603": "非织造材料与工程",
+ "81604": "服装设计与工艺教育",
+ "81605": "丝绸设计与工程",
+ "81700": "轻工类",
+ "81701": "轻化工程",
+ "81702": "包装工程",
+ "81703": "印刷工程",
+ "81704": "香料香精技术与工程",
+ "81705": "化妆品技术与工程",
+ "81800": "交通运输类",
+ "81801": "交通运输",
+ "81802": "交通工程",
+ "81803": "航海技术",
+ "81804": "轮机工程",
+ "81805": "飞行技术",
+ "81806": "交通设备与控制工程",
+ "81807": "救助与打捞工程",
+ "81808": "船舶电子电气工程",
+ "81809": "轨道交通电气与控制",
+ "81810": "邮轮工程与管理",
+ "81900": "海洋工程类",
+ "81901": "船舶与海洋工程",
+ "81902": "海洋工程与技术",
+ "81903": "海洋资源开发技术",
+ "81904": "海洋机器人",
+ "82000": "航空航天类",
+ "82001": "航空航天工程",
+ "82002": "飞行器设计与工程",
+ "82003": "飞行器制造工程",
+ "82004": "飞行器动力工程",
+ "82005": "飞行器环境与生命保障工程",
+ "82006": "飞行器质量与可靠性",
+ "82007": "飞行器适航技术",
+ "82008": "飞行器控制与信息工程",
+ "82009": "无人驾驶航空器系统工程",
+ "82100": "兵器类",
+ "82101": "武器系统与工程",
+ "82102": "武器发射工程",
+ "82103": "探测制导与控制技术",
+ "82104": "弹药工程与爆炸技术",
+ "82105": "特种能源技术与工程",
+ "82106": "装甲车辆工程",
+ "82107": "信息对抗技术",
+ "82108": "智能无人系统技术",
+ "82200": "核工程类",
+ "82201": "核工程与核技术",
+ "82202": "辐射防护与核安全",
+ "82203": "工程物理",
+ "82204": "核化工与核燃料工程",
+ "82300": "农业工程类",
+ "82301": "农业工程",
+ "82302": "农业机械化及其自动化",
+ "82303": "农业电气化",
+ "82304": "农业建筑环境与能源工程",
+ "82305": "农业水利工程",
+ "82306": "土地整治工程",
+ "82307": "农业智能装备工程",
+ "82400": "林业工程类",
+ "82401": "森林工程",
+ "82402": "木材科学与工程",
+ "82403": "林产化工",
+ "82404": "家具设计与工程",
+ "82500": "环境科学与工程类",
+ "82501": "环境科学与工程",
+ "82502": "环境工程",
+ "82503": "环境科学",
+ "82504": "环境生态工程",
+ "82505": "环保设备工程",
+ "82506": "资源环境科学",
+ "82507": "水质科学与技术",
+ "82600": "生物医学工程类",
+ "82601": "生物医学工程",
+ "82602": "假肢矫形工程",
+ "82603": "临床工程技术",
+ "82604": "康复工程",
+ "82700": "食品科学与工程类",
+ "82701": "食品科学与工程",
+ "82702": "食品质量与安全",
+ "82703": "粮食工程",
+ "82704": "乳品工程",
+ "82705": "酿酒工程",
+ "82706": "葡萄与葡萄酒工程",
+ "82707": "食品营养与检验教育",
+ "82708": "烹饪与营养教育",
+ "82709": "食品安全与检测",
+ "82711": "食用菌科学与工程",
+ "82712": "白酒酿造工程",
+ "82800": "建筑类",
+ "82801": "建筑学",
+ "82802": "城乡规划",
+ "82803": "风景园林",
+ "82804": "历史建筑保护工程",
+ "82805": "人居环境科学与技术",
+ "82806": "城市设计",
+ "82900": "安全科学与工程类",
+ "82901": "安全工程",
+ "82902": "应急技术与管理",
+ "82903": "职业卫生工程",
+ "83000": "生物工程类",
+ "83001": "生物工程",
+ "83002": "生物制药",
+ "83003": "合成生物学",
+ "83100": "公安技术类",
+ "83101": "刑事科学技术",
+ "83102": "消防工程",
+ "83103": "交通管理工程",
+ "83104": "安全防范工程",
+ "83105": "公安视听技术",
+ "83106": "抢险救援指挥与技术",
+ "83107": "火灾勘查",
+ "83108": "网络安全与执法",
+ "83109": "核生化消防",
+ "83110": "海警舰艇指挥与技术",
+ "83111": "数据警务技术",
+ "83200": "食品科学与工程",
+ "83201": "食品科学",
+ "83202": "粮食、油脂及植物蛋白工程",
+ "83203": "农产品加工及贮藏工程",
+ "83204": "水产品加工及贮藏工程",
+ "83300": "城乡规划学",
+ "83400": "风景园林学",
+ "83500": "软件工程",
+ "83600": "生物工程",
+ "83700": "安全科学与工程",
+ "83800": "公安技术",
+ "83900": "网络空间安全",
+ "85100": "建筑学",
+ "85200": "工程",
+ "85201": "机械工程",
+ "85202": "光学工程",
+ "85203": "仪器仪表工程",
+ "85204": "材料工程",
+ "85205": "冶金工程",
+ "85206": "动力工程",
+ "85207": "电气工程",
+ "85208": "电子与通信工程",
+ "85209": "集成电路工程",
+ "85210": "控制工程",
+ "85211": "计算机技术",
+ "85212": "软件工程",
+ "85213": "建筑与土木工程",
+ "85214": "水利工程",
+ "85215": "测绘工程",
+ "85216": "化学工程",
+ "85217": "地质工程",
+ "85218": "矿业工程",
+ "85219": "石油与天然气工程",
+ "85220": "纺织工程",
+ "85221": "轻工技术与工程",
+ "85222": "交通运输工程",
+ "85223": "船舶与海洋工程",
+ "85224": "安全工程",
+ "85225": "兵器工程",
+ "85226": "核能与核技术工程",
+ "85227": "农业工程",
+ "85228": "林业工程",
+ "85229": "环境工程",
+ "85230": "生物医学工程",
+ "85231": "食品工程",
+ "85232": "航空工程",
+ "85233": "航天工程",
+ "85234": "车辆工程",
+ "85235": "制药工程",
+ "85236": "工业工程",
+ "85237": "工业设计工程",
+ "85238": "生物工程",
+ "85239": "项目管理",
+ "85240": "物流工程",
+ "85271": "电子与信息",
+ "85272": "先进制造",
+ "85273": "生物与医药",
+ "85274": "能源与环保",
+ "85300": "城市规划",
+ "85400": "电子信息",
+ "85401": "新一代电子信息技术(含量子技术等)",
+ "85402": "通信工程(含宽带网络、移动通信等)",
+ "85403": "集成电路工程",
+ "85404": "计算机技术",
+ "85405": "软件工程",
+ "85406": "控制工程",
+ "85407": "仪器仪表工程",
+ "85408": "光电信息工程",
+ "85409": "生物医学工程",
+ "85410": "人工智能",
+ "85411": "大数据技术与工程",
+ "85412": "网络与信息安全",
+ "85500": "机械",
+ "85501": "机械工程",
+ "85502": "车辆工程",
+ "85503": "航空工程",
+ "85504": "航天工程",
+ "85505": "船舶工程",
+ "85506": "兵器工程",
+ "85507": "工业设计工程",
+ "85508": "农机装备工程",
+ "85509": "智能制造技术",
+ "85510": "机器人工程",
+ "85600": "材料与化工",
+ "85601": "材料工程",
+ "85602": "化学工程",
+ "85603": "冶金工程",
+ "85604": "纺织工程",
+ "85605": "林业工程",
+ "85606": "轻化工程(含皮革、纸张、织物加工等)",
+ "85700": "资源与环境",
+ "85701": "环境工程",
+ "85702": "安全工程",
+ "85703": "地质工程",
+ "85704": "测绘工程",
+ "85705": "矿业工程",
+ "85706": "石油与天然气工程",
+ "85800": "能源动力",
+ "85801": "电气工程",
+ "85802": "动力工程",
+ "85803": "核能工程",
+ "85804": "航空发动机工程",
+ "85805": "燃气轮机工程",
+ "85806": "航天动力工程",
+ "85807": "清洁能源技术",
+ "85808": "储能技术",
+ "85900": "土木水利",
+ "85901": "土木工程",
+ "85902": "水利工程",
+ "85903": "海洋工程",
+ "85904": "农田水土工程",
+ "85905": "市政工程(含给排水等)",
+ "85906": "人工环境工程(含供热、通风及空调等)",
+ "86000": "生物与医药",
+ "86001": "生物技术与工程",
+ "86002": "制药工程",
+ "86003": "食品工程",
+ "86004": "发酵工程",
+ "86100": "交通运输",
+ "86101": "轨道交通运输",
+ "86102": "道路交通运输",
+ "86103": "水路交通运输",
+ "86104": "航空交通运输",
+ "86105": "管道交通运输",
+ "87000": "科学技术史",
+ "87100": "管理科学与工程",
+ "87200": "设计学",
+ "90100": "植物生产类",
+ "90101": "农学",
+ "90102": "园艺",
+ "90103": "植物保护",
+ "90104": "植物科学与技术",
+ "90105": "种子科学与工程",
+ "90106": "设施农业科学与工程",
+ "90107": "茶学",
+ "90108": "烟草",
+ "90109": "应用生物科学",
+ "90110": "农艺教育",
+ "90111": "园艺教育",
+ "90112": "智慧农业",
+ "90113": "菌物科学与工程",
+ "90114": "农药化肥",
+ "90200": "自然保护与环境生态类",
+ "90201": "农业资源与环境",
+ "90202": "野生动物与自然保护区管理",
+ "90203": "水土保持与荒漠化防治",
+ "90300": "动物生产类",
+ "90301": "动物科学",
+ "90302": "蚕学",
+ "90303": "蜂学",
+ "90304": "经济动物学",
+ "90305": "马业科学",
+ "90400": "动物医学类",
+ "90401": "动物医学",
+ "90402": "动物药学",
+ "90403": "动植物检疫",
+ "90404": "实验动物学",
+ "90405": "中兽医学",
+ "90500": "林学类",
+ "90501": "林学",
+ "90502": "园林",
+ "90503": "森林保护",
+ "90504": "经济林",
+ "90600": "水产类",
+ "90601": "水产养殖学",
+ "90602": "海洋渔业科学与技术",
+ "90603": "水族科学与技术",
+ "90604": "水生动物医学",
+ "90700": "草学类",
+ "90701": "草业科学",
+ "90702": "草坪科学与工程",
+ "90703": "森林保护学",
+ "90704": "森林经理学",
+ "90705": "野生动植物保护与利用",
+ "90706": "园林植物与观赏园艺",
+ "90707": "水土保持与荒漠化防治",
+ "90800": "水产",
+ "90801": "水产养殖",
+ "90802": "捕捞学",
+ "90803": "渔业资源",
+ "90900": "草学",
+ "95100": "农业",
+ "95101": "作物",
+ "95102": "园艺",
+ "95103": "农业资源利用",
+ "95104": "植物保护",
+ "95105": "养殖",
+ "95106": "草业",
+ "95107": "林业",
+ "95108": "渔业",
+ "95109": "农业机械化",
+ "95110": "农村与区域发展",
+ "95111": "农业科技组织与服务",
+ "95112": "农业信息化",
+ "95113": "食品加工与安全",
+ "95114": "设施农业",
+ "95115": "种业",
+ "95131": "农艺与种业",
+ "95132": "资源利用与植物保护",
+ "95133": "畜牧",
+ "95134": "渔业发展",
+ "95135": "食品加工与安全",
+ "95136": "农业工程与信息技术",
+ "95137": "农业管理",
+ "95138": "农村发展",
+ "95200": "兽医",
+ "95300": "风景园林",
+ "95400": "林业",
+ "97000": "科学技术史",
+ "97100": "环境科学与工程",
+ "97101": "环境科学",
+ "97102": "环境工程",
+ "97200": "食品科学与工程",
+ "97201": "食品科学",
+ "97202": "粮食、油脂及植物蛋白工程",
+ "97203": "农产品加工及贮藏工程",
+ "97204": "水产品加工及贮藏工程",
+ "97300": "风景园林学",
+ "100100": "基础医学类",
+ "100101": "基础医学",
+ "100102": "生物医学",
+ "100103": "生物医学科学",
+ "100104": "病理学与病理生理学",
+ "100105": "法医学",
+ "100106": "放射医学",
+ "100200": "临床医学类",
+ "100201": "临床医学",
+ "100202": "麻醉学",
+ "100203": "医学影像学",
+ "100204": "眼视光医学",
+ "100205": "精神医学",
+ "100206": "放射医学",
+ "100207": "儿科学",
+ "100208": "临床检验诊断学",
+ "100209": "护理学",
+ "100210": "外科学",
+ "100211": "妇产科学",
+ "100212": "眼科学",
+ "100213": "耳鼻咽喉科学",
+ "100214": "肿瘤学",
+ "100215": "康复医学与理疗学",
+ "100216": "运动医学",
+ "100217": "麻醉学",
+ "100218": "急诊医学",
+ "100300": "口腔医学类",
+ "100301": "口腔医学",
+ "100302": "口腔临床医学",
+ "100400": "公共卫生与预防医学类",
+ "100401": "预防医学",
+ "100402": "食品卫生与营养学",
+ "100403": "妇幼保健医学",
+ "100404": "卫生监督",
+ "100405": "全球健康学",
+ "100406": "军事预防医学",
+ "100500": "中医学类",
+ "100501": "中医学",
+ "100502": "针灸推拿学",
+ "100503": "藏医学",
+ "100504": "蒙医学",
+ "100505": "维医学",
+ "100506": "壮医学",
+ "100507": "哈医学",
+ "100508": "傣医学",
+ "100509": "回医学",
+ "100510": "中医康复学",
+ "100511": "中医养生学",
+ "100512": "中医儿科学",
+ "100513": "中医骨伤科学",
+ "100600": "中西医结合类",
+ "100601": "中西医临床医学",
+ "100602": "中西医结合临床",
+ "100700": "药学类",
+ "100701": "药学",
+ "100702": "药物制剂",
+ "100703": "临床药学",
+ "100704": "药事管理",
+ "100705": "药物分析",
+ "100706": "药物化学",
+ "100707": "海洋药学",
+ "100708": "化妆品科学与技术",
+ "100800": "中药学类",
+ "100801": "中药学",
+ "100802": "中药资源与开发",
+ "100803": "藏药学",
+ "100804": "蒙药学",
+ "100805": "中药制药",
+ "100806": "中草药栽培与鉴定",
+ "100900": "法医学类",
+ "100901": "法医学",
+ "101000": "医学技术类",
+ "101001": "医学检验技术",
+ "101002": "医学实验技术",
+ "101003": "医学影像技术",
+ "101004": "眼视光学",
+ "101005": "康复治疗学",
+ "101006": "口腔医学技术",
+ "101007": "卫生检验与检疫",
+ "101008": "听力与言语康复学",
+ "101009": "康复物理治疗",
+ "101010": "康复作业治疗",
+ "101011": "智能医学工程",
+ "101100": "护理学类",
+ "101101": "护理学",
+ "101102": "助产学",
+ "105100": "临床医学",
+ "105101": "内科学",
+ "105102": "儿科学",
+ "105103": "老年医学",
+ "105104": "神经病学",
+ "105105": "精神病与精神卫生学",
+ "105106": "皮肤病与性病学",
+ "105107": ", 影像医学与核医学",
+ "105108": ", 临床检验诊断学",
+ "105109": ", 全科医学",
+ "105110": ", 妇产科学",
+ "105111": ", 外科学",
+ "105112": ", 耳鼻咽喉科学",
+ "105113": ", 肿瘤学",
+ "105114": ", 康复医学与理疗学",
+ "105115": ", 妇产科学",
+ "105116": ", 眼科学",
+ "105117": ", 耳鼻咽喉科学",
+ "105118": ", 中医内科学",
+ "105119": ", 临床病理",
+ "105120": "临床检验诊断学",
+ "105121": "肿瘤学",
+ "105122": "放射肿瘤学",
+ "105123": "放射影像学",
+ "105124": "超声医学",
+ "105125": "核医学",
+ "105126": "医学遗传学",
+ "105127": "全科医学(不授博士学位)",
+ "105128": "临床病理学(不授博士学位)",
+ "105200": "口腔医学",
+ "105300": "公共卫生",
+ "105400": "护理",
+ "105500": "药学",
+ "105600": "中药学",
+ "105700": "中医",
+ "105701": "中医内科学",
+ "105702": "中医外科学",
+ "105703": "中医骨伤科学",
+ "105704": "中医妇科学",
+ "105705": "中医儿科学",
+ "105706": "中医五官科学",
+ "105707": "针灸推拿学",
+ "105708": "民族医学(含:藏医学、蒙医学等)",
+ "105709": "中西医结合临床",
+ "105710": "全科医学(中医,不授博士学位)",
+ "107100": "科学技术史",
+ "107200": "生物医学工程",
+ "107400": "社会医学与卫生事业管理",
+ "107401": "社会医学与卫生事业管理",
+ "110500": "军队指挥学",
+ "115100": "军事",
+ "115101": "军事指挥",
+ "115102": "军队政治工作",
+ "115103": "军事后勤",
+ "115104": "军事装备",
+ "120100": "管理科学与工程类",
+ "120101": "管理科学",
+ "120102": "信息管理与信息系统",
+ "120103": "工程管理",
+ "120104": "房地产开发与管理",
+ "120105": "工程造价",
+ "120106": "保密管理",
+ "120107": "邮政管理",
+ "120108": "大数据管理与应用",
+ "120109": "工程审计",
+ "120110": "计算金融",
+ "120200": "工商管理类",
+ "120201": "工商管理",
+ "120202": "市场营销",
+ "120203": "会计学",
+ "120204": "财务管理",
+ "120205": "国际商务",
+ "120206": "人力资源管理",
+ "120207": "审计学",
+ "120208": "资产评估",
+ "120209": "物业管理",
+ "120210": "文化产业管理",
+ "120211": "劳动关系",
+ "120212": "体育经济与管理",
+ "120213": "财务会计教育",
+ "120214": "市场营销教育",
+ "120215": "零售业管理",
+ "120300": "农业经济管理类",
+ "120301": "农林经济管理",
+ "120302": "农村区域发展",
+ "120400": "公共管理类",
+ "120401": "公共事业管理",
+ "120402": "行政管理",
+ "120403": "劳动与社会保障",
+ "120404": "土地资源管理",
+ "120405": "城市管理",
+ "120406": "海关管理",
+ "120407": "交通管理",
+ "120408": "海事管理",
+ "120409": "公共关系学",
+ "120410": "健康服务与管理",
+ "120411": "海警后勤管理",
+ "120412": "医疗产品管理",
+ "120413": "医疗保险",
+ "120414": "养老服务管理",
+ "120500": "图书情报与档案管理类",
+ "120501": "图书馆学",
+ "120502": "档案学",
+ "120503": "信息资源管理",
+ "120600": "物流管理与工程类",
+ "120601": "物流管理",
+ "120602": "物流工程",
+ "120603": "采购管理",
+ "120604": "供应链管理",
+ "120700": "工业工程类",
+ "120701": "工业工程",
+ "120702": "标准化工程",
+ "120703": "质量管理工程",
+ "120800": "电子商务类",
+ "120801": "电子商务",
+ "120802": "电子商务及法律",
+ "120803": "跨境电子商务",
+ "120900": "旅游管理类",
+ "120901": "旅游管理",
+ "120902": "酒店管理",
+ "120903": "会展经济与管理",
+ "120904": "旅游管理与服务教育",
+ "125100": "工商管理",
+ "125200": "公共管理",
+ "125300": "会计",
+ "125400": "旅游管理",
+ "125500": "图书情报",
+ "125600": "工程管理",
+ "125601": "工程管理",
+ "125602": "项目管理",
+ "125603": "工业工程与管理",
+ "125604": "物流工程与管理",
+ "130100": "艺术学理论类",
+ "130101": "艺术史论",
+ "130102": "艺术管理",
+ "130200": "音乐与舞蹈学类",
+ "130201": "音乐表演",
+ "130202": "音乐学",
+ "130203": "作曲与作曲技术理论",
+ "130204": "舞蹈表演",
+ "130205": "舞蹈学",
+ "130206": "舞蹈编导",
+ "130207": "舞蹈教育",
+ "130208": "航空服务艺术与管理",
+ "130209": "流行音乐",
+ "130210": "音乐治疗",
+ "130211": "流行舞蹈",
+ "130300": "戏剧与影视学类",
+ "130301": "表演",
+ "130302": "戏剧学",
+ "130303": "电影学",
+ "130304": "戏剧影视文学",
+ "130305": "广播电视编导",
+ "130306": "戏剧影视导演",
+ "130307": "戏剧影视美术设计",
+ "130308": "录音艺术",
+ "130309": "播音与主持艺术",
+ "130310": "动画",
+ "130311": "影视摄影与制作",
+ "130312": "影视技术",
+ "130313": "戏剧教育",
+ "130400": "美术学类",
+ "130401": "美术学",
+ "130402": "绘画",
+ "130403": "雕塑",
+ "130404": "摄影",
+ "130405": "书法学",
+ "130406": "中国画",
+ "130407": "实验艺术",
+ "130408": "跨媒体艺术",
+ "130409": "文物保护与修复",
+ "130410": "漫画",
+ "130500": "设计学类",
+ "130501": "艺术设计学",
+ "130502": "视觉传达设计",
+ "130503": "环境设计",
+ "130504": "产品设计",
+ "130505": "服装与服饰设计",
+ "130506": "公共艺术",
+ "130507": "工艺美术",
+ "130508": "数字媒体艺术",
+ "130509": "艺术与科技",
+ "130510": "陶瓷艺术设计",
+ "130511": "新媒体艺术",
+ "130512": "包装设计",
+ "135100": "艺术",
+ "135101": "音乐",
+ "135102": "戏剧",
+ "135103": "戏曲",
+ "135104": "电影",
+ "135105": "广播电视",
+ "135106": "舞蹈",
+ "135107": "美术",
+ "135108": "艺术设计",
+ "140100": "集成电路科学与工程",
+ "140200": "国家安全学",
+ "210100": "农业类",
+ "210101": "现代种业技术",
+ "210102": "作物生产与品质改良",
+ "210103": "智慧农业技术",
+ "210104": "设施园艺",
+ "210105": "现代农业经营与管理",
+ "210200": "林业类",
+ "210201": "智慧林业技术",
+ "210202": "园林工程",
+ "210203": "木业产品智能制造",
+ "210300": "畜牧业类",
+ "210301": "动物医学",
+ "210302": "动物药学",
+ "210303": "宠物医疗",
+ "210304": "现代畜牧",
+ "210400": "渔业类",
+ "210401": "现代水产养殖技术",
+ "220100": "资源勘查类",
+ "220101": "资源勘查工程技术",
+ "220200": "地质类",
+ "220201": "环境地质工程",
+ "220300": "测绘地理信息类",
+ "220301": "导航工程技术",
+ "220302": "测绘工程技术",
+ "220303": "地理信息技术",
+ "220400": "石油与天然气类",
+ "220401": "油气储运工程",
+ "220402": "石油工程技术",
+ "220500": "煤炭类",
+ "220501": "智能采矿技术",
+ "220502": "煤炭清洁利用工程",
+ "220700": "气象类",
+ "220701": "智慧气象技术",
+ "220800": "环境保护类",
+ "220801": "生态环境工程技术",
+ "220900": "安全类",
+ "220901": "安全工程技术",
+ "220902": "应急管理",
+ "230100": "电力技术类",
+ "230101": "电力工程及自动化",
+ "230102": "智能电网工程技术",
+ "230200": "热能与发电工程类",
+ "230201": "热能动力工程",
+ "230300": "新能源发电工程类",
+ "230301": "新能源发电工程技术",
+ "230400": "黑色金属材料类",
+ "230401": "钢铁智能冶金技术",
+ "230500": "有色金属材料类",
+ "230501": "材料化冶金应用技术",
+ "230502": "金属智能成型技术",
+ "230503": "储能材料工程技术",
+ "230600": "非金属材料类",
+ "230601": "高分子材料工程技术",
+ "230602": "新材料与应用技术",
+ "230700": "建筑材料类",
+ "230701": "建筑材料智能制造",
+ "240100": "建筑设计类",
+ "240101": "建筑设计",
+ "240102": "建筑装饰工程",
+ "240103": "古建筑工程",
+ "240104": "园林景观工程",
+ "240105": "城市设计数字技术",
+ "240200": "城乡规划与管理类",
+ "240201": "城乡规划",
+ "240300": "土建施工类",
+ "240301": "建筑工程",
+ "240302": "智能建造工程",
+ "240303": "城市地下工程",
+ "240304": "建筑智能检测与修复",
+ "240400": "建筑设备类",
+ "240401": "建筑环境与能源工程",
+ "240402": "建筑电气与智能化工程",
+ "240500": "建设工程管理类",
+ "240501": "工程造价",
+ "240502": "建设工程管理",
+ "240600": "市政工程类",
+ "240601": "市政工程",
+ "240602": "城市设施智慧管理",
+ "240700": "房地产类",
+ "240701": "房地产投资与策划",
+ "240702": "现代物业管理",
+ "250100": "水文水资源类",
+ "250101": "水文与水资源工程技术",
+ "250200": "水利工程与管理类",
+ "250201": "智慧水利工程",
+ "250202": "农业水利工程",
+ "250203": "水利水电工程",
+ "250204": "治河与港航工程",
+ "250300": "水利水电设备类",
+ "250301": "水利水电设备及自动化",
+ "250400": "水土保持与水环境类",
+ "250401": "生态水利工程",
+ "250402": "水环境工程",
+ "260100": "机械设计制造类",
+ "260101": "机械设计制造及自动化",
+ "260102": "智能制造工程技术",
+ "260103": "数控技术",
+ "260104": "工业设计",
+ "260105": "工业工程技术",
+ "260106": "材料成型及控制工程",
+ "260200": "机电设备类",
+ "260201": "装备智能化技术",
+ "260202": "制冷与空调工程",
+ "260203": "电梯工程技术",
+ "260300": "自动化类",
+ "260301": "机械电子工程技术",
+ "260302": "电气工程及自动化",
+ "260303": "智能控制技术",
+ "260304": "机器人技术",
+ "260305": "自动化技术与应用",
+ "260306": "现代测控工程技术",
+ "260307": "工业互联网工程",
+ "260400": "轨道装备类",
+ "260401": "轨道交通车辆工程技术",
+ "260402": "轨道交通智能控制装备技术",
+ "260500": "船舶与海洋工程装备类",
+ "260501": "船舶智能制造技术",
+ "260502": "船舶动力工程技术",
+ "260503": "船舶电气工程技术",
+ "260600": "航空装备类",
+ "260601": "航空智能制造技术",
+ "260602": "飞行器维修工程技术",
+ "260603": "航空动力装置维修技术",
+ "260604": "无人机系统应用技术",
+ "260700": "汽车制造类",
+ "260701": "汽车工程技术",
+ "260702": "新能源汽车工程技术",
+ "260703": "智能网联汽车工程技术",
+ "270100": "生物技术类",
+ "270101": "生物检验检测技术",
+ "270102": "合成生物技术",
+ "270103": "农业生物技术",
+ "270200": "化工技术类",
+ "270201": "应用化工技术",
+ "270202": "化工智能制造工程技术",
+ "270203": "现代精细化工技术",
+ "270204": "现代分析测试技术",
+ "280100": "轻化工类",
+ "280101": "化妆品工程技术",
+ "280102": "现代造纸工程技术",
+ "280200": "包装类",
+ "280201": "包装工程技术",
+ "280300": "印刷类",
+ "280301": "数字印刷工程",
+ "280400": "纺织服装类",
+ "280401": "现代纺织工程技术",
+ "280402": "服装工程技术",
+ "290100": "食品类",
+ "290101": "食品工程技术",
+ "290102": "食品质量与安全",
+ "290103": "食品营养与健康",
+ "290200": "药品与医疗器械类",
+ "290201": "制药工程技术",
+ "290202": "药品质量管理",
+ "290203": "医疗器械工程技术",
+ "290204": "药事服务与管理",
+ "290300": "粮食类",
+ "290301": "现代粮食工程技术",
+ "300100": "铁道运输类",
+ "300101": "高速铁路工程",
+ "300102": "高速铁路动车组技术",
+ "300103": "高速铁路信号控制技术",
+ "300104": "铁道机车智能运用技术",
+ "300105": "高速铁路运营管理",
+ "300200": "道路运输类",
+ "300201": "道路与桥梁工程",
+ "300202": "智能交通管理",
+ "300203": "汽车服务工程技术",
+ "300300": "水上运输类",
+ "300301": "航海技术",
+ "300302": "港口智能工程技术",
+ "300303": "轮机工程技术",
+ "300304": "国际邮轮运营管理",
+ "300305": "水路运输与海事管理",
+ "300400": "航空运输类",
+ "300401": "民航运输服务与管理",
+ "300402": "航空机电设备维修技术",
+ "300403": "智慧机场运行与管理",
+ "300404": "通用航空航务技术",
+ "300600": "城市轨道交通类",
+ "300601": "城市轨道交通信号与控制技术",
+ "300602": "城市轨道交通设备与控制技术",
+ "300603": "城市轨道交通智能运营",
+ "300700": "邮政类",
+ "300701": "邮政快递管理",
+ "310100": "电子信息类",
+ "310101": "电子信息工程技术",
+ "310102": "物联网工程技术",
+ "310103": "柔性电子技术",
+ "310104": "光电信息工程技术",
+ "310200": "计算机类",
+ "310201": "计算机应用工程",
+ "310202": "网络工程技术",
+ "310203": "软件工程技术",
+ "310204": "数字媒体技术",
+ "310205": "大数据工程技术",
+ "310206": "云计算技术",
+ "310207": "信息安全与管理",
+ "310208": "虚拟现实技术",
+ "310209": "人工智能工程技术",
+ "310210": "嵌入式技术",
+ "310211": "工业互联网技术",
+ "310212": "区块链技术",
+ "310300": "通信类",
+ "310301": "现代通信工程",
+ "310400": "集成电路类",
+ "310401": "集成电路工程技术",
+ "320200": "护理类",
+ "320201": "护理",
+ "320300": "药学类",
+ "320301": "药学",
+ "320400": "中医药类",
+ "320401": "中药制药",
+ "320500": "医学技术类",
+ "320501": "医学检验技术",
+ "320502": "医学影像技术",
+ "320503": "医学生物技术",
+ "320504": "口腔医学技术",
+ "320505": "放射治疗技术",
+ "320506": "呼吸治疗技术",
+ "320600": "康复治疗类",
+ "320601": "康复治疗",
+ "320602": "康复辅助器具技术",
+ "320603": "言语听觉治疗技术",
+ "320604": "儿童康复治疗",
+ "320700": "公共卫生与卫生管理类",
+ "320701": "公共卫生管理",
+ "320702": "职业卫生工程技术",
+ "320703": "职业病危害检测评价技术",
+ "320800": "健康管理与促进类",
+ "320801": "健康管理",
+ "320802": "婴幼儿发展与健康管理",
+ "320803": "医养照护与管理",
+ "320900": "眼视光类",
+ "320901": "眼视光技术",
+ "330100": "财政税务类",
+ "330101": "财税大数据应用",
+ "330200": "金融类",
+ "330201": "金融管理",
+ "330202": "金融科技应用",
+ "330203": "保险",
+ "330204": "信用管理",
+ "330300": "财务会计类",
+ "330301": "大数据与财务管理",
+ "330302": "大数据与会计",
+ "330303": "大数据与审计",
+ "330500": "经济贸易类",
+ "330501": "国际经济与贸易",
+ "330600": "工商管理类",
+ "330601": "企业数字化管理",
+ "330602": "市场营销",
+ "330700": "电子商务类",
+ "330701": "电子商务",
+ "330702": "跨境电子商务",
+ "330703": "全媒体电商运营",
+ "330800": "物流类",
+ "330801": "物流工程技术",
+ "330802": "现代物流管理",
+ "340100": "旅游类",
+ "340101": "旅游管理",
+ "340102": "酒店管理",
+ "340103": "旅游规划与设计",
+ "340200": "餐饮类",
+ "340201": "烹饪与餐饮管理",
+ "350100": "艺术设计类",
+ "350101": "工艺美术",
+ "350102": "视觉传达设计",
+ "350103": "数字媒体艺术",
+ "350104": "产品设计",
+ "350105": "服装与服饰设计",
+ "350106": "环境艺术设计",
+ "350107": "美术",
+ "350108": "公共艺术设计",
+ "350109": "游戏创意设计",
+ "350110": "展示艺术设计",
+ "350111": "数字影像设计",
+ "350112": "时尚品设计",
+ "350200": "表演艺术类",
+ "350201": "音乐表演",
+ "350202": "舞蹈表演与编导",
+ "350203": "戏曲表演",
+ "350204": "舞台艺术设计",
+ "350400": "文化服务类",
+ "350401": "文物修复与保护",
+ "360100": "新闻出版类",
+ "360101": "网络与新媒体",
+ "360200": "广播影视类",
+ "360201": "播音与主持",
+ "360202": "影视摄影与制作",
+ "360203": "数字广播电视技术",
+ "360204": "影视编导",
+ "360205": "全媒体新闻采编与制作",
+ "360206": "数字动画",
+ "370100": "教育类",
+ "370101": "学前教育",
+ "370200": "语言类",
+ "370201": "应用英语",
+ "370202": "应用日语",
+ "370203": "应用韩语",
+ "370204": "应用俄语",
+ "370205": "应用泰语",
+ "370206": "应用外语",
+ "370207": "应用西班牙语",
+ "370208": "中文国际教育",
+ "370300": "体育类",
+ "370301": "社会体育指导与管理",
+ "370302": "休闲体育",
+ "370303": "体能训练",
+ "370304": "电子竞技技术与管理",
+ "380200": "公安技术类",
+ "380201": "刑事科学技术",
+ "380202": "网络安全与执法",
+ "380300": "侦查类",
+ "380301": "刑事侦查",
+ "380400": "法律实务类",
+ "380401": "法律",
+ "380500": "法律执行类",
+ "380501": "刑事矫正与管理",
+ "380502": "司法警务管理",
+ "380503": "综合行政执法",
+ "380600": "司法技术类",
+ "380601": "智慧司法技术与应用",
+ "380700": "安全防范类",
+ "380701": "数字安防技术",
+ "380702": "国际安保服务与管理",
+ "390100": "公共事业类",
+ "390101": "社会工作",
+ "390102": "党务工作",
+ "390103": "智慧社区管理",
+ "390200": "公共管理类",
+ "390201": "民政管理",
+ "390202": "人力资源管理",
+ "390203": "行政管理",
+ "390204": "外事实务",
+ "390300": "公共服务类",
+ "390301": "现代家政管理",
+ "390302": "智慧健康养老管理",
+ "410100": "农业类",
+ "410101": "种子生产与经营",
+ "410102": "作物生产与经营管理",
+ "410103": "现代农业技术",
+ "410104": "生态农业技术",
+ "410105": "园艺技术",
+ "410106": "植物保护与检疫技术",
+ "410107": "茶叶生产与加工技术",
+ "410108": "中草药栽培与加工技术",
+ "410109": "烟草栽培与加工技术",
+ "410110": "饲草生产技术",
+ "410111": "食用菌生产与加工技术",
+ "410112": "设施农业与装备",
+ "410113": "现代农业装备应用技术",
+ "410114": "农产品加工与质量检测",
+ "410115": "绿色食品生产技术",
+ "410116": "农产品流通与管理",
+ "410117": "棉花加工与经营管理",
+ "410118": "休闲农业经营与管理",
+ "410119": "现代农业经济管理",
+ "410120": "农村新型经济组织管理",
+ "410200": "林业类",
+ "410201": "林业技术",
+ "410202": "园林技术",
+ "410203": "草业技术",
+ "410204": "花卉生产与花艺",
+ "410205": "经济林培育与利用",
+ "410206": "森林和草原资源保护",
+ "410207": "林草生态保护与修复",
+ "410208": "野生动植物资源保护与利用",
+ "410209": "自然保护地建设与管理",
+ "410210": "森林生态旅游与康养",
+ "410211": "林业信息技术应用",
+ "410212": "木业智能装备应用技术",
+ "410213": "木业产品设计与制造",
+ "410300": "畜牧业类",
+ "410301": "动物医学",
+ "410302": "动物药学",
+ "410303": "畜牧兽医",
+ "410304": "中兽医",
+ "410305": "宠物医疗技术",
+ "410306": "动物防疫与检疫",
+ "410307": "畜禽智能化养殖",
+ "410308": "特种动物养殖技术",
+ "410309": "宠物养护与驯导",
+ "410310": "动物营养与饲料",
+ "410311": "蚕桑技术",
+ "410400": "渔业类",
+ "410401": "水产养殖技术",
+ "410402": "海洋渔业技术",
+ "410403": "水族科学与技术",
+ "410404": "水生动物医学",
+ "420100": "资源勘查类",
+ "420101": "国土资源调查与管理",
+ "420102": "地质调查与矿产普查",
+ "420103": "生态地质调查",
+ "420104": "矿产地质勘查",
+ "420105": "煤田地质勘查",
+ "420106": "岩矿分析与鉴定",
+ "420107": "宝玉石鉴定与加工",
+ "420200": "地质类",
+ "420201": "工程地质勘查",
+ "420202": "水文与工程地质",
+ "420203": "矿山地质",
+ "420204": "钻探工程技术",
+ "420205": "岩土工程技术",
+ "420206": "地球物理勘探技术",
+ "420207": "地质灾害调查与防治",
+ "420208": "环境地质工程",
+ "420209": "城市地质勘查",
+ "420300": "测绘地理信息类",
+ "420301": "工程测量技术",
+ "420302": "测绘工程技术",
+ "420303": "测绘地理信息技术",
+ "420304": "摄影测量与遥感技术",
+ "420305": "地籍测绘与土地管理",
+ "420306": "国土空间规划与测绘",
+ "420307": "无人机测绘技术",
+ "420308": "矿山测量",
+ "420309": "导航与位置服务",
+ "420310": "空间数字建模与应用技术",
+ "420400": "石油与天然气类",
+ "420401": "油气储运技术",
+ "420402": "油气地质勘探技术",
+ "420403": "钻井技术",
+ "420404": "油气智能开采技术",
+ "420405": "油田化学应用技术",
+ "420406": "石油工程技术",
+ "420500": "煤炭类",
+ "420501": "煤矿智能开采技术",
+ "420502": "矿井建设工程技术",
+ "420503": "通风技术与安全管理",
+ "420504": "矿山机电与智能装备",
+ "420505": "煤炭清洁利用技术",
+ "420506": "煤层气采输技术",
+ "420600": "金属与非金属矿类",
+ "420601": "矿山智能开采技术",
+ "420602": "矿物加工技术",
+ "420700": "气象类",
+ "420701": "大气科学技术",
+ "420702": "大气探测技术",
+ "420703": "应用气象技术",
+ "420704": "雷电防护技术",
+ "420800": "环境保护类",
+ "420801": "环境监测技术",
+ "420802": "环境工程技术",
+ "420803": "生态保护技术",
+ "420804": "生态环境大数据技术",
+ "420805": "环境管理与评价",
+ "420806": "生态环境修复技术",
+ "420807": "绿色低碳技术",
+ "420808": "资源综合利用技术",
+ "420809": "水净化与安全技术",
+ "420810": "核与辐射检测防护技术",
+ "420811": "智能环保装备技术",
+ "420900": "安全类",
+ "420901": "安全技术与管理",
+ "420902": "化工安全技术",
+ "420903": "工程安全评价与监理",
+ "420904": "安全智能监测技术",
+ "420905": "应急救援技术",
+ "420906": "消防救援技术",
+ "420907": "森林草原防火技术",
+ "420908": "职业健康安全技术",
+ "430100": "电力技术类",
+ "430101": "发电厂及电力系统",
+ "430102": "水电站机电设备与自动化",
+ "430103": "水电站与电力网技术",
+ "430104": "分布式发电与智能微电网技术",
+ "430105": "电力系统自动化技术",
+ "430106": "电力系统继电保护技术",
+ "430107": "输配电工程技术",
+ "430108": "供用电技术",
+ "430109": "农业电气化技术",
+ "430110": "机场电工技术",
+ "430111": "电力客户服务与管理",
+ "430200": "热能与发电工程类",
+ "430201": "热能动力工程技术",
+ "430202": "城市热能应用技术",
+ "430203": "地热开发技术",
+ "430204": "太阳能光热技术与应用",
+ "430205": "发电运行技术",
+ "430206": "热工自动化技术",
+ "430207": "核电站动力设备运行与维护",
+ "430208": "电厂化学与环保技术",
+ "430300": "新能源发电工程类",
+ "430301": "光伏工程技术",
+ "430302": "风力发电工程技术",
+ "430303": "生物质能应用技术",
+ "430304": "氢能技术应用",
+ "430305": "工业节能技术",
+ "430306": "节电技术与管理",
+ "430307": "新能源材料应用技术",
+ "430400": "黑色金属材料类",
+ "430401": "钢铁智能冶金技术",
+ "430402": "智能轧钢技术",
+ "430403": "钢铁冶金设备维护",
+ "430404": "金属材料检测技术",
+ "430500": "有色金属材料类",
+ "430501": "有色金属智能冶金技术",
+ "430502": "金属智能加工技术",
+ "430503": "金属精密成型技术",
+ "430504": "储能材料技术",
+ "430505": "稀土材料技术",
+ "430600": "非金属材料类",
+ "430601": "材料工程技术",
+ "430602": "高分子材料智能制造技术",
+ "430603": "复合材料智能制造技术",
+ "430604": "航空复合材料成型与加工技术",
+ "430605": "非金属矿物材料技术",
+ "430606": "光伏材料制备技术",
+ "430607": "硅材料制备技术",
+ "430608": "炭材料工程技术",
+ "430609": "橡胶智能制造技术",
+ "430700": "建筑材料类",
+ "430701": "建筑材料工程技术",
+ "430702": "新型建筑材料技术",
+ "430703": "建筑装饰材料技术",
+ "430704": "建筑材料检测技术",
+ "430705": "装配式建筑构件智能制造技术",
+ "440100": "建筑设计类",
+ "440101": "建筑设计",
+ "440102": "建筑装饰工程技术",
+ "440103": "古建筑工程技术",
+ "440104": "园林工程技术",
+ "440105": "风景园林设计",
+ "440106": "建筑室内设计",
+ "440107": "建筑动画技术",
+ "440200": "城乡规划与管理类",
+ "440201": "城乡规划",
+ "440202": "智慧城市管理技术",
+ "440203": "村镇建设与管理",
+ "440300": "土建施工类",
+ "440301": "建筑工程技术",
+ "440302": "装配式建筑工程技术",
+ "440303": "建筑钢结构工程技术",
+ "440304": "智能建造技术",
+ "440305": "地下与隧道工程技术",
+ "440306": "土木工程检测技术",
+ "440400": "建筑设备类",
+ "440401": "建筑设备工程技术",
+ "440402": "建筑电气工程技术",
+ "440403": "供热通风与空调工程技术",
+ "440404": "建筑智能化工程技术",
+ "440405": "工业设备安装工程技术",
+ "440406": "建筑消防技术",
+ "440500": "建设工程管理类",
+ "440501": "工程造价",
+ "440502": "建设工程管理",
+ "440503": "建筑经济信息化管理",
+ "440504": "建设工程监理",
+ "440600": "市政工程类",
+ "440601": "市政工程技术",
+ "440602": "给排水工程技术",
+ "440603": "城市燃气工程技术",
+ "440604": "市政管网智能检测与维护",
+ "440605": "城市环境工程技术",
+ "440700": "房地产类",
+ "440701": "房地产经营与管理",
+ "440702": "房地产智能检测与估价",
+ "440703": "现代物业管理",
+ "450100": "水文水资源类",
+ "450101": "水文与水资源技术",
+ "450102": "水政水资源管理",
+ "450200": "水利工程与管理类",
+ "450201": "水利工程",
+ "450202": "智慧水利技术",
+ "450203": "水利水电工程技术",
+ "450204": "水利水电工程智能管理",
+ "450205": "水利水电建筑工程",
+ "450206": "机电排灌工程技术",
+ "450207": "治河与航道工程技术",
+ "450208": "智能水务管理",
+ "450300": "水利水电设备类",
+ "450301": "水电站设备安装与管理",
+ "450302": "水电站运行与智能管理",
+ "450303": "水利机电设备智能管理",
+ "450400": "水土保持与水环境类",
+ "450401": "水土保持技术",
+ "450402": "水环境智能监测与治理",
+ "450403": "水生态修复技术",
+ "460100": "机械设计制造类",
+ "460101": "机械设计与制造",
+ "460102": "数字化设计与制造技术",
+ "460103": "数控技术",
+ "460104": "机械制造及自动化",
+ "460105": "工业设计",
+ "460106": "工业工程技术",
+ "460107": "材料成型及控制技术",
+ "460108": "现代铸造技术",
+ "460109": "现代锻压技术",
+ "460110": "智能焊接技术",
+ "460111": "工业材料表面处理技术",
+ "460112": "增材制造技术",
+ "460113": "模具设计与制造",
+ "460114": "特种加工技术",
+ "460115": "智能光电制造技术",
+ "460116": "电线电缆制造技术",
+ "460117": "内燃机制造与应用技术",
+ "460118": "机械装备制造技术",
+ "460119": "工业产品质量检测技术",
+ "460120": "理化测试与质检技术",
+ "460200": "机电设备类",
+ "460201": "智能制造装备技术",
+ "460202": "机电设备技术",
+ "460203": "电机与电器技术",
+ "460204": "新能源装备技术",
+ "460205": "制冷与空调技术",
+ "460206": "电梯工程技术",
+ "460300": "自动化类",
+ "460301": "机电一体化技术",
+ "460302": "智能机电技术",
+ "460303": "智能控制技术",
+ "460304": "智能机器人技术",
+ "460305": "工业机器人技术",
+ "460306": "电气自动化技术",
+ "460307": "工业过程自动化技术",
+ "460308": "工业自动化仪表技术",
+ "460309": "液压与气动技术",
+ "460310": "工业互联网应用",
+ "460311": "计量测试与应用技术",
+ "460400": "轨道装备类",
+ "460401": "铁道机车车辆制造与维护",
+ "460402": "高速铁路动车组制造与维护",
+ "460403": "城市轨道交通车辆制造与维护",
+ "460404": "轨道交通通信信号设备制造与维护",
+ "460405": "轨道交通工程机械制造与维护",
+ "460500": "船舶与海洋工程装备类",
+ "460501": "船舶工程技术",
+ "460502": "船舶动力工程技术",
+ "460503": "船舶电气工程技术",
+ "460504": "船舶智能焊接技术",
+ "460505": "船舶舾装工程技术",
+ "460506": "船舶涂装工程技术",
+ "460507": "船舶通信装备技术",
+ "460508": "游艇设计与制造",
+ "460509": "邮轮内装技术",
+ "460510": "海洋工程装备技术",
+ "460600": "航空装备类",
+ "460601": "飞行器数字化制造技术",
+ "460602": "飞行器数字化装配技术",
+ "460603": "航空发动机制造技术",
+ "460604": "航空发动机装配调试技术",
+ "460605": "飞机机载设备装配调试技术",
+ "460606": "航空装备表面处理技术",
+ "460607": "飞行器维修技术",
+ "460608": "航空发动机维修技术",
+ "460609": "无人机应用技术",
+ "460610": "航空材料精密成型技术",
+ "460611": "导弹维修技术",
+ "460700": "汽车制造类",
+ "460701": "汽车制造与试验技术",
+ "460702": "新能源汽车技术",
+ "460703": "汽车电子技术",
+ "460704": "智能网联汽车技术",
+ "460705": "汽车造型与改装技术",
+ "470100": "生物技术类",
+ "470101": "食品生物技术",
+ "470102": "药品生物技术",
+ "470103": "农业生物技术",
+ "470104": "化工生物技术",
+ "470105": "生物产品检验检疫",
+ "470106": "绿色生物制造技术",
+ "470107": "生物信息技术",
+ "470200": "化工技术类",
+ "470201": "应用化工技术",
+ "470202": "石油炼制技术",
+ "470203": "精细化工技术",
+ "470204": "石油化工技术",
+ "470205": "煤化工技术",
+ "470206": "高分子合成技术",
+ "470207": "海洋化工技术",
+ "470208": "分析检验技术",
+ "470209": "化工智能制造技术",
+ "470210": "化工装备技术",
+ "470211": "化工自动化技术",
+ "470212": "涂装防护技术",
+ "470213": "烟花爆竹技术与管理",
+ "480100": "轻化工类",
+ "480101": "化妆品技术",
+ "480102": "现代造纸技术",
+ "480103": "家具设计与制造",
+ "480104": "鞋类设计与工艺",
+ "480105": "陶瓷制造技术与工艺",
+ "480106": "珠宝首饰技术与管理",
+ "480107": "皮革加工技术",
+ "480108": "皮具制作与工艺",
+ "480109": "乐器制造与维护",
+ "480110": "香料香精技术与工艺",
+ "480111": "表面精饰工艺",
+ "480200": "包装类",
+ "480201": "包装工程技术",
+ "480202": "包装策划与设计",
+ "480300": "印刷类",
+ "480301": "数字印刷技术",
+ "480302": "印刷媒体技术",
+ "480303": "印刷数字图文技术",
+ "480304": "印刷设备应用技术",
+ "480400": "纺织服装类",
+ "480401": "现代纺织技术",
+ "480402": "服装设计与工艺",
+ "480403": "丝绸技术",
+ "480404": "针织技术与针织服装",
+ "480405": "数字化染整技术",
+ "480406": "纺织品设计",
+ "480407": "现代家用纺织品设计",
+ "480408": "纺织材料与应用",
+ "480409": "现代非织造技术",
+ "480410": "纺织机电技术",
+ "480411": "纺织品检验与贸易",
+ "480412": "皮革服装制作与工艺",
+ "490100": "食品类",
+ "490101": "食品智能加工技术",
+ "490102": "食品质量与安全",
+ "490103": "食品营养与健康",
+ "490104": "食品检验检测技术",
+ "490105": "酿酒技术",
+ "490106": "食品贮运与营销",
+ "490200": "药品与医疗器械类",
+ "490201": "药品生产技术",
+ "490202": "生物制药技术",
+ "490203": "药物制剂技术",
+ "490204": "化学制药技术",
+ "490205": "兽药制药技术",
+ "490206": "药品质量与安全",
+ "490207": "制药设备应用技术",
+ "490208": "药品经营与管理",
+ "490209": "食品药品监督管理",
+ "490210": "智能医疗装备技术",
+ "490211": "医用电子仪器技术",
+ "490212": "医用材料与应用",
+ "490213": "医疗器械维护与管理",
+ "490214": "医疗器械经营与服务",
+ "490215": "康复工程技术",
+ "490216": "保健食品质量与管理",
+ "490217": "化妆品经营与管理",
+ "490218": "化妆品质量与安全",
+ "490300": "粮食类",
+ "490301": "粮食工程技术与管理",
+ "490302": "粮食储运与质量安全",
+ "500100": "铁道运输类",
+ "500101": "铁道工程技术",
+ "500102": "高速铁路施工与维护",
+ "500103": "铁道桥梁隧道工程技术",
+ "500104": "铁道养路机械应用技术",
+ "500105": "铁道机车运用与维护",
+ "500106": "铁道车辆技术",
+ "500107": "铁道供电技术",
+ "500108": "动车组检修技术",
+ "500109": "高速铁路综合维修技术",
+ "500110": "铁道信号自动控制",
+ "500111": "铁道通信与信息化技术",
+ "500112": "铁道交通运营管理",
+ "500113": "高速铁路客运服务",
+ "500200": "道路运输类",
+ "500201": "道路与桥梁工程技术",
+ "500202": "道路机械化施工技术",
+ "500203": "智能工程机械运用技术",
+ "500204": "道路工程检测技术",
+ "500205": "道路工程造价",
+ "500206": "道路养护与管理",
+ "500207": "智能交通技术",
+ "500208": "道路运输管理",
+ "500209": "交通运营管理",
+ "500210": "汽车技术服务与营销",
+ "500211": "汽车检测与维修技术",
+ "500212": "新能源汽车检测与维修技术",
+ "500300": "水上运输类",
+ "500301": "航海技术",
+ "500302": "港口与航道工程技术",
+ "500303": "轮机工程技术",
+ "500304": "国际邮轮乘务管理",
+ "500305": "水路运输安全管理",
+ "500306": "港口机械与智能控制",
+ "500307": "港口与航运管理",
+ "500308": "船舶电子电气技术",
+ "500309": "船舶检验",
+ "500310": "集装箱运输管理",
+ "500400": "航空运输类",
+ "500401": "民航运输服务",
+ "500402": "民航通信技术",
+ "500403": "定翼机驾驶技术",
+ "500404": "直升机驾驶技术",
+ "500405": "空中乘务",
+ "500406": "民航安全技术管理",
+ "500407": "民航空中安全保卫",
+ "500408": "机场运行服务与管理",
+ "500409": "飞机机电设备维修",
+ "500410": "飞机电子设备维修",
+ "500411": "飞机部件修理",
+ "500412": "通用航空器维修",
+ "500413": "飞机结构修理",
+ "500414": "航空地面设备维修",
+ "500415": "机场场务技术与管理",
+ "500416": "通用航空航务技术",
+ "500417": "航空油料",
+ "500500": "管道运输类",
+ "500501": "管道工程技术",
+ "500502": "管道运输管理",
+ "500600": "城市轨道交通类",
+ "500601": "城市轨道交通工程技术",
+ "500602": "城市轨道车辆应用技术",
+ "500603": "城市轨道交通机电技术",
+ "500604": "城市轨道交通通信信号技术",
+ "500605": "城市轨道交通供配电技术",
+ "500606": "城市轨道交通运营管理",
+ "500700": "邮政类",
+ "500701": "邮政快递运营管理",
+ "500702": "邮政快递智能技术",
+ "500703": "邮政通信管理",
+ "502100": "语言学",
+ "502101": "塔玛齐格特语",
+ "502102": "爪哇语",
+ "502103": "旁遮普语",
+ "510100": "农业类",
+ "510101": "作物生产技术",
+ "510102": "种子生产与经营",
+ "510103": "设施农业与装备",
+ "510104": "现代农业技术",
+ "510105": "休闲农业",
+ "510106": "生态农业技术",
+ "510107": "园艺技术",
+ "510108": "植物保护与检疫技术",
+ "510109": "茶树栽培与茶叶加工",
+ "510110": "中草药栽培技术",
+ "510111": "烟草栽培与加工",
+ "510112": "棉花加工与经营管理",
+ "510113": "农产品加工与质量检测",
+ "510114": "绿色食品生产与检验",
+ "510115": "农资营销与服务",
+ "510116": "农产品流通与管理",
+ "510117": "农业装备应用技术",
+ "510118": "农业经济管理",
+ "510119": "农村经营管理",
+ "510120": "食用菌生产与加工",
+ "510200": "林业类",
+ "510201": "林业技术",
+ "510202": "园林技术",
+ "510203": "森林资源保护",
+ "510204": "经济林培育与利用",
+ "510205": "野生植物资源保护与利用",
+ "510206": "野生动物资源保护与利用",
+ "510207": "森林生态旅游",
+ "510208": "森林防火指挥与通讯",
+ "510209": "自然保护区建设与管理",
+ "510210": "木工设备应用技术",
+ "510211": "木材加工技术",
+ "510212": "林业调查与信息处理",
+ "510213": "林业信息技术与管理",
+ "510214": "工业软件开发技术",
+ "510215": "动漫制作技术",
+ "510216": "密码技术应用",
+ "510300": "畜牧业类",
+ "510301": "畜牧兽医",
+ "510302": "动物医学",
+ "510303": "动物药学",
+ "510304": "动物防疫与检疫",
+ "510305": "动物医学检验技术",
+ "510306": "宠物养护与驯导",
+ "510307": "实验动物技术",
+ "510308": "饲料与动物营养",
+ "510309": "特种动物养殖",
+ "510310": "畜牧工程技术",
+ "510311": "蚕桑技术",
+ "510312": "草业技术",
+ "510313": "养蜂与蜂产品加工",
+ "510314": "畜牧业经济管理",
+ "510315": "宠物临床诊疗技术",
+ "510400": "渔业类",
+ "510401": "水产养殖技术",
+ "510402": "海洋渔业技术",
+ "510403": "水族科学与技术",
+ "510404": "水生动物医学",
+ "510405": "渔业经济管理",
+ "520100": "资源勘查类",
+ "520101": "国土资源调查与管理",
+ "520102": "地质调查与矿产普查",
+ "520103": "矿产地质与勘查",
+ "520104": "岩矿分析与鉴定",
+ "520105": "宝玉石鉴定与加工",
+ "520106": "煤田地质与勘查技术",
+ "520107": "权籍信息化管理",
+ "520200": "地质类",
+ "520201": "工程地质勘查",
+ "520202": "水文与工程地质",
+ "520203": "钻探技术",
+ "520204": "矿山地质",
+ "520205": "地球物理勘探技术",
+ "520206": "地质灾害调查与防治",
+ "520207": "环境地质工程",
+ "520208": "岩土工程技术",
+ "520300": "测绘地理信息类",
+ "520301": "工程测量技术",
+ "520302": "摄影测量与遥感技术",
+ "520303": "测绘工程技术",
+ "520304": "测绘地理信息技术",
+ "520305": "地籍测绘与土地管理",
+ "520306": "矿山测量",
+ "520307": "测绘与地质工程技术",
+ "520308": "导航与位置服务",
+ "520309": "地图制图与数字传播技术",
+ "520310": "地理国情监测技术",
+ "520311": "国土测绘与规划",
+ "520400": "石油与天然气类",
+ "520401": "钻井技术",
+ "520402": "油气开采技术",
+ "520403": "油气储运技术",
+ "520404": "油气地质勘探技术",
+ "520405": "油田化学应用技术",
+ "520406": "石油工程技术",
+ "520407": "傣医学",
+ "520408": "哈医学",
+ "520409": "朝医学",
+ "520410": "中药学",
+ "520411": "蒙药学",
+ "520412": "维药学",
+ "520413": "藏药学",
+ "520414": "中药材生产与加工",
+ "520415": "中药制药",
+ "520416": "中医康复技术",
+ "520417": "中医养生保健",
+ "520418": "药膳与食疗",
+ "520500": "煤炭类",
+ "520501": "煤矿开采技术",
+ "520502": "矿井建设",
+ "520503": "矿山机电技术",
+ "520504": "矿井通风与安全",
+ "520505": "综合机械化采煤",
+ "520506": "选煤技术",
+ "520507": "煤炭深加工与利用",
+ "520508": "煤化分析与检验",
+ "520509": "煤层气采输技术",
+ "520510": "矿井运输与提升",
+ "520600": "金属与非金属矿类",
+ "520601": "金属与非金属矿开采技术",
+ "520602": "矿物加工技术",
+ "520603": "矿业装备维护技术",
+ "520700": "气象类",
+ "520701": "大气科学技术",
+ "520702": "大气探测技术",
+ "520703": "应用气象技术",
+ "520704": "防雷技术",
+ "520800": "环境保护类",
+ "520801": "环境监测与控制技术",
+ "520802": "农村环境保护",
+ "520803": "室内环境检测与控制技术",
+ "520804": "环境工程技术",
+ "520805": "环境信息技术",
+ "520806": "核与辐射检测防护技术",
+ "520807": "环境规划与管理",
+ "520808": "环境评价与咨询服务",
+ "520809": "污染修复与生态工程技术",
+ "520810": "清洁生产与减排技术",
+ "520811": "资源综合利用与管理技术",
+ "520812": "水净化与安全技术",
+ "520900": "安全类",
+ "520901": "安全健康与环保",
+ "520902": "化工安全技术",
+ "520903": "救援技术",
+ "520904": "安全技术与管理",
+ "520905": "工程安全评价与监理",
+ "520906": "安全生产监测监控",
+ "520907": "职业卫生技术与管理",
+ "530100": "电力技术类",
+ "530101": "发电厂及电力系统",
+ "530102": "供用电技术",
+ "530103": "电力系统自动化技术",
+ "530104": "高压输配电线路施工运行与维护",
+ "530105": "电力系统继电保护与自动化技术",
+ "530106": "水电站机电设备与自动化",
+ "530107": "电网监控技术",
+ "530108": "电力客户服务与管理",
+ "530109": "水电站与电力网",
+ "530110": "电源变换技术与应用",
+ "530111": "农业电气化技术",
+ "530112": "分布式发电与微电网技术",
+ "530113": "机场电工技术",
+ "530200": "热能与发电工程类",
+ "530201": "电厂热能动力装置",
+ "530202": "城市热能应用技术",
+ "530203": "核电站动力设备运行与维护",
+ "530204": "火电厂集控运行",
+ "530205": "电厂化学与环保技术",
+ "530206": "电厂热工自动化技术",
+ "530207": "国际金融",
+ "530208": "农村金融",
+ "530300": "新能源发电工程类",
+ "530301": "风力发电工程技术",
+ "530302": "风电系统运行与维护",
+ "530303": "生物质能应用技术",
+ "530304": "光伏发电技术与应用",
+ "530305": "工业节能技术",
+ "530306": "节电技术与管理",
+ "530307": "太阳能光热技术与应用",
+ "530308": "农村能源与环境技术",
+ "530309": "氢能技术应用",
+ "530400": "黑色金属材料类",
+ "530401": "黑色冶金技术",
+ "530402": "轧钢工程技术",
+ "530403": "钢铁冶金设备应用技术",
+ "530404": "金属材料质量检测",
+ "530405": "铁矿资源综合利用",
+ "530500": "有色金属材料类",
+ "530501": "有色冶金技术",
+ "530502": "有色冶金设备应用技术",
+ "530503": "金属压力加工",
+ "530504": "金属精密成型技术",
+ "530505": "储能材料技术",
+ "530600": "非金属材料类",
+ "530601": "材料工程技术",
+ "530602": "高分子材料工程技术",
+ "530603": "复合材料工程技术",
+ "530604": "非金属矿物材料技术",
+ "530605": "光伏材料制备技术",
+ "530606": "炭素加工技术",
+ "530607": "硅材料制备技术",
+ "530608": "橡胶工程技术",
+ "530700": "建筑材料类",
+ "530701": "建筑材料工程技术",
+ "530702": "建筑材料检测技术",
+ "530703": "建筑装饰材料技术",
+ "530704": "建筑材料设备应用",
+ "530705": "新型建筑材料技术",
+ "530706": "建筑材料生产与管理",
+ "530800": "物流类",
+ "530801": "物流工程技术",
+ "530802": "现代物流管理",
+ "530803": "航空物流管理",
+ "530804": "铁路物流管理",
+ "530805": "冷链物流技术与管理",
+ "530806": "港口物流管理",
+ "530807": "工程物流管理",
+ "530808": "采购与供应管理",
+ "530809": "智能物流技术",
+ "530810": "供应链运营",
+ "540100": "建筑设计类",
+ "540101": "建筑设计",
+ "540102": "建筑装饰工程技术",
+ "540103": "古建筑工程技术",
+ "540104": "建筑室内设计",
+ "540105": "风景园林设计",
+ "540106": "园林工程技术",
+ "540107": "建筑动画与模型制作",
+ "540108": "葡萄酒文化与营销",
+ "540109": "茶艺与茶文化",
+ "540110": "智慧景区开发与管理",
+ "540111": "智慧旅游技术应用",
+ "540112": "会展策划与管理",
+ "540113": "休闲服务与管理",
+ "540200": "城乡规划与管理类",
+ "540201": "城乡规划",
+ "540202": "村镇建设与管理",
+ "540203": "城市信息化管理",
+ "540204": "西式烹饪工艺",
+ "540205": "营养配餐",
+ "540300": "土建施工类",
+ "540301": "建筑工程技术",
+ "540302": "地下与隧道工程技术",
+ "540303": "土木工程检测技术",
+ "540304": "建筑钢结构工程技术",
+ "540400": "建筑设备类",
+ "540401": "建筑设备工程技术",
+ "540402": "供热通风与空调工程技术",
+ "540403": "建筑电气工程技术",
+ "540404": "建筑智能化工程技术",
+ "540405": "工业设备安装工程技术",
+ "540406": "消防工程技术",
+ "540500": "建设工程管理类",
+ "540501": "建设工程管理",
+ "540502": "工程造价",
+ "540503": "建筑经济管理",
+ "540504": "建设项目信息化管理",
+ "540505": "建设工程监理",
+ "540600": "市政工程类",
+ "540601": "市政工程技术",
+ "540602": "城市燃气工程技术",
+ "540603": "给排水工程技术",
+ "540604": "环境卫生工程技术",
+ "540700": "房地产类",
+ "540701": "房地产经营与管理",
+ "540702": "房地产检测与估价",
+ "540703": "物业管理",
+ "550100": "水文水资源类",
+ "550101": "水文与水资源工程",
+ "550102": "水文测报技术",
+ "550103": "水政水资源管理",
+ "550104": "产品艺术设计",
+ "550105": "服装与服饰设计",
+ "550106": "环境艺术设计",
+ "550107": "书画艺术",
+ "550108": "公共艺术设计",
+ "550109": "游戏艺术设计",
+ "550110": "展示艺术设计",
+ "550111": "美容美体艺术",
+ "550112": "工艺美术品设计",
+ "550113": "广告艺术设计",
+ "550114": "室内艺术设计",
+ "550115": "家具艺术设计",
+ "550116": "动漫设计",
+ "550117": "人物形象设计",
+ "550118": "摄影与摄像艺术",
+ "550119": "雕刻艺术设计",
+ "550120": "皮具艺术设计",
+ "550121": "包装艺术设计",
+ "550122": "陶瓷设计与工艺",
+ "550123": "首饰设计与工艺",
+ "550124": "玉器设计与工艺",
+ "550125": "刺绣设计与工艺",
+ "550126": "雕塑设计",
+ "550127": "服装陈列与展示设计",
+ "550200": "水利工程与管理类",
+ "550201": "水利工程",
+ "550202": "水利水电工程技术",
+ "550203": "水利水电工程管理",
+ "550204": "水利水电建筑工程",
+ "550205": "机电排灌工程技术",
+ "550206": "港口航道与治河工程",
+ "550207": "水务管理",
+ "550208": "音乐剧表演",
+ "550209": "国际标准舞",
+ "550210": "现代流行音乐",
+ "550211": "戏曲音乐",
+ "550212": "音乐制作",
+ "550213": "钢琴伴奏",
+ "550214": "钢琴调律",
+ "550215": "舞蹈编导",
+ "550216": "音乐传播",
+ "550217": "时尚表演与传播",
+ "550218": "舞台艺术设计与制作",
+ "550219": "作曲技术",
+ "550220": "现代魔术设计与表演",
+ "550300": "水利水电设备类",
+ "550301": "水电站动力设备",
+ "550302": "水电站电气设备",
+ "550303": "水电站运行与管理",
+ "550304": "水利机电设备运行与管理",
+ "550305": "中国少数民族语言文化",
+ "550400": "水土保持与水环境类",
+ "550401": "水土保持技术",
+ "550402": "水环境监测与治理",
+ "550403": "公共文化服务与管理",
+ "550404": "文物修复与保护",
+ "550405": "文物考古技术",
+ "550406": "文物展示利用技术",
+ "550407": "图书档案管理",
+ "550408": "石窟寺保护技术",
+ "560100": "机械设计制造类",
+ "560101": "机械设计与制造",
+ "560102": "机械制造与自动化",
+ "560103": "数控技术",
+ "560104": "精密机械技术",
+ "560105": "特种加工技术",
+ "560106": "材料成型与控制技术",
+ "560107": "金属材料与热处理技术",
+ "560108": "铸造技术",
+ "560109": "锻压技术",
+ "560110": "焊接技术与自动化",
+ "560111": "机械产品检测检验技术",
+ "560112": "理化测试与质检技术",
+ "560113": "模具设计与制造",
+ "560114": "电机与电器技术",
+ "560115": "电线电缆制造技术",
+ "560116": "内燃机制造与维修",
+ "560117": "机械装备制造技术",
+ "560118": "工业设计",
+ "560119": "工业工程技术",
+ "560200": "机电设备类",
+ "560201": "自动化生产设备应用",
+ "560202": "机电设备安装技术",
+ "560203": "机电设备维修与管理",
+ "560204": "数控设备应用与维护",
+ "560205": "制冷与空调技术",
+ "560206": "光电制造与应用技术",
+ "560207": "新能源装备技术",
+ "560208": "影视多媒体技术",
+ "560209": "影视照明技术与艺术",
+ "560210": "音像技术",
+ "560211": "录音技术与艺术",
+ "560212": "摄影摄像技术",
+ "560213": "融媒体技术与运营",
+ "560214": "网络直播与运营",
+ "560215": "传播与策划",
+ "560216": "全媒体广告策划与营销",
+ "560300": "自动化类",
+ "560301": "机电一体化技术",
+ "560302": "电气自动化技术",
+ "560303": "工业过程自动化技术",
+ "560304": "智能控制技术",
+ "560305": "工业网络技术",
+ "560306": "工业自动化仪表",
+ "560307": "液压与气动技术",
+ "560308": "电梯工程技术",
+ "560309": "工业机器人技术",
+ "560400": "铁道装备类",
+ "560401": "铁道机车车辆制造与维护",
+ "560402": "铁道通信信号设备制造与维护",
+ "560403": "铁道施工和养路机械制造与维护",
+ "560500": "船舶与海洋工程装备类",
+ "560501": "船舶工程技术",
+ "560502": "船舶机械工程技术",
+ "560503": "船舶电气工程技术",
+ "560504": "船舶舾装工程技术",
+ "560505": "船舶涂装工程技术",
+ "560506": "游艇设计与制造",
+ "560507": "海洋工程技术",
+ "560508": "船舶通信与导航",
+ "560509": "船舶动力工程技术",
+ "560600": "航空装备类",
+ "560601": "飞行器制造技术",
+ "560602": "飞行器维修技术",
+ "560603": "航空发动机制造技术",
+ "560604": "航空发动机装试技术",
+ "560605": "航空发动机维修技术",
+ "560606": "飞机机载设备制造技术",
+ "560607": "飞机机载设备维修技术",
+ "560608": "航空电子电气技术",
+ "560609": "航空材料精密成型技术",
+ "560610": "无人机应用技术",
+ "560611": "导弹维修",
+ "560700": "汽车制造类",
+ "560701": "汽车制造与装配技术",
+ "560702": "汽车检测与维修技术",
+ "560703": "汽车电子技术",
+ "560704": "汽车造型技术",
+ "560705": "汽车试验技术",
+ "560706": "汽车改装技术",
+ "560707": "新能源汽车技术",
+ "570100": "生物技术类",
+ "570101": "食品生物技术",
+ "570102": "化工生物技术",
+ "570103": "药品生物技术",
+ "570104": "农业生物技术",
+ "570105": "生物产品检验检疫",
+ "570106": "小学英语教育",
+ "570107": "小学科学教育",
+ "570108": "音乐教育",
+ "570109": "美术教育",
+ "570110": "体育教育",
+ "570111": "小学道德与法治教育",
+ "570112": "舞蹈教育",
+ "570113": "艺术教育",
+ "570114": "特殊教育",
+ "570115": "现代教育技术",
+ "570116": "心理健康教育",
+ "570200": "化工技术类",
+ "570201": "应用化工技术",
+ "570202": "石油炼制技术",
+ "570203": "石油化工技术",
+ "570204": "高分子合成技术",
+ "570205": "精细化工技术",
+ "570206": "海洋化工技术",
+ "570207": "工业分析技术",
+ "570208": "化工装备技术",
+ "570209": "化工自动化技术",
+ "570210": "涂装防护技术",
+ "570211": "烟花爆竹技术与管理",
+ "570212": "煤化工技术",
+ "570213": "应用德语",
+ "570214": "应用泰语",
+ "570215": "应用越南语",
+ "570216": "应用阿拉伯语",
+ "570300": "体育类",
+ "570301": "社会体育",
+ "570302": "休闲体育",
+ "570303": "运动训练",
+ "570304": "民族传统体育",
+ "570305": "运动防护",
+ "570306": "体育保健与康复",
+ "570307": "健身指导与管理",
+ "570308": "运动健康指导",
+ "570309": "运动数据分析",
+ "570310": "体能训练",
+ "570311": "体育运营与管理",
+ "570312": "电子竞技运动与管理",
+ "570313": "高尔夫球运动与管理",
+ "570314": "冰雪运动与管理",
+ "570315": "冰雪设施运维与管理",
+ "570316": "体育艺术表演",
+ "580100": "轻化工类",
+ "580101": "高分子材料加工技术",
+ "580102": "制浆造纸技术",
+ "580103": "香料香精工艺",
+ "580104": "表面精饰工艺",
+ "580105": "家具设计与制造",
+ "580106": "化妆品技术",
+ "580107": "皮革加工技术",
+ "580108": "皮具制作与工艺",
+ "580109": "鞋类设计与工艺",
+ "580110": "乐器制造与维护",
+ "580111": "陶瓷制造工艺",
+ "580112": "珠宝首饰技术与管理",
+ "580200": "包装类",
+ "580201": "包装工程技术",
+ "580202": "包装策划与设计",
+ "580203": "包装设备应用技术",
+ "580204": "食品包装技术",
+ "580300": "印刷类",
+ "580301": "数字图文信息技术",
+ "580302": "印刷设备应用技术",
+ "580303": "印刷媒体设计与制作",
+ "580304": "印刷媒体技术",
+ "580305": "数字印刷技术",
+ "580400": "纺织服装类",
+ "580401": "现代纺织技术",
+ "580402": "丝绸技术",
+ "580403": "染整技术",
+ "580404": "纺织机电技术",
+ "580405": "纺织品检验与贸易",
+ "580406": "纺织品设计",
+ "580407": "家用纺织品设计",
+ "580408": "纺织材料与应用",
+ "580409": "针织技术与针织服装",
+ "580410": "服装设计与工艺",
+ "580411": "皮革服装制作与工艺",
+ "580412": "服装陈列与展示设计",
+ "580500": "法律执行类",
+ "580501": "刑事执行",
+ "580502": "民事执行",
+ "580503": "行政执行",
+ "580504": "司法警务",
+ "580505": "社区矫正",
+ "580600": "司法技术类",
+ "580601": "刑事侦查技术",
+ "580602": "司法信息技术",
+ "580603": "司法鉴定技术",
+ "580604": "司法信息安全",
+ "580605": "罪犯心理测量与矫正技术",
+ "580606": "戒毒矫治技术",
+ "580700": "安全防范类",
+ "580701": "安全防范技术",
+ "580702": "安全保卫管理",
+ "580703": "智能安防运营管理",
+ "590100": "食品工业类",
+ "590101": "食品加工技术",
+ "590102": "酿酒技术",
+ "590103": "食品质量与安全",
+ "590104": "食品贮运与营销",
+ "590105": "食品检测技术",
+ "590106": "食品营养与卫生",
+ "590107": "食品营养与检测",
+ "590200": "药品制造类",
+ "590201": "中药生产与加工",
+ "590202": "药品生产技术",
+ "590203": "兽药制药技术",
+ "590204": "药品质量与安全",
+ "590205": "制药设备应用技术",
+ "590206": "化学制药技术",
+ "590207": "生物制药技术",
+ "590208": "中药制药技术",
+ "590209": "药物制剂技术",
+ "590210": "标准化技术",
+ "590300": "食品药品管理类",
+ "590301": "药品经营与管理",
+ "590302": "药品服务与管理",
+ "590303": "保健品开发与管理",
+ "590304": "化妆品经营与管理",
+ "590305": "食品药品监督管理",
+ "590306": "殡葬设备维护技术",
+ "590307": "陵园服务与管理",
+ "590400": "粮食工业类",
+ "590401": "粮食工程技术",
+ "590500": "粮食储检类",
+ "590501": "粮油储藏与检测技术",
+ "600100": "铁道运输类",
+ "600101": "铁道机车",
+ "600102": "铁道车辆",
+ "600103": "铁道供电技术",
+ "600104": "铁道工程技术",
+ "600105": "铁道机械化维修技术",
+ "600106": "铁道信号自动控制",
+ "600107": "铁道通信与信息化技术",
+ "600108": "铁道交通运营管理",
+ "600109": "铁路物流管理",
+ "600110": "铁路桥梁与隧道工程技术",
+ "600111": "高速铁道工程技术",
+ "600112": "高速铁路客运乘务",
+ "600113": "动车组检修技术",
+ "600114": "高铁综合维修技术",
+ "600200": "道路运输类",
+ "600201": "智能交通技术运用",
+ "600202": "道路桥梁工程技术",
+ "600203": "道路运输与路政管理",
+ "600204": "道路养护与管理",
+ "600205": "公路机械化施工技术",
+ "600206": "工程机械运用技术",
+ "600207": "交通运营管理",
+ "600208": "交通枢纽运营管理",
+ "600209": "汽车运用与维修技术",
+ "600210": "汽车车身维修技术",
+ "600211": "汽车运用安全管理",
+ "600212": "新能源汽车运用与维修",
+ "600300": "水上运输类",
+ "600301": "航海技术",
+ "600302": "国际邮轮乘务管理",
+ "600303": "船舶电子电气技术",
+ "600304": "船舶检验",
+ "600305": "港口机械与自动控制",
+ "600306": "港口电气技术",
+ "600307": "港口与航道工程技术",
+ "600308": "港口与航运管理",
+ "600309": "港口物流管理",
+ "600310": "轮机工程技术",
+ "600311": "水上救捞技术",
+ "600312": "水路运输与海事管理",
+ "600313": "集装箱运输管理",
+ "600400": "航空运输类",
+ "600401": "民航运输",
+ "600402": "民航通信技术",
+ "600403": "定翼机驾驶技术",
+ "600404": "直升机驾驶技术",
+ "600405": "空中乘务",
+ "600406": "民航安全技术管理",
+ "600407": "民航空中安全保卫",
+ "600408": "机场运行",
+ "600409": "飞机机电设备维修",
+ "600410": "飞机电子设备维修",
+ "600411": "飞机部件修理",
+ "600412": "航空地面设备维修",
+ "600413": "机场场务技术与管理",
+ "600414": "航空油料",
+ "600415": "航空物流",
+ "600416": "通用航空器维修",
+ "600417": "通用航空航务技术",
+ "600418": "飞机结构修理",
+ "600500": "管道运输类",
+ "600501": "管道工程技术",
+ "600502": "管道运输管理",
+ "600600": "城市轨道交通类",
+ "600601": "城市轨道交通车辆技术",
+ "600602": "城市轨道交通机电技术",
+ "600603": "城市轨道交通通信信号技术",
+ "600604": "城市轨道交通供配电技术",
+ "600605": "城市轨道交通工程技术",
+ "600606": "城市轨道交通运营管理",
+ "600700": "邮政类",
+ "600701": "邮政通信管理",
+ "600702": "快递运营管理",
+ "610100": "电子信息类",
+ "610101": "电子信息工程技术",
+ "610102": "应用电子技术",
+ "610103": "微电子技术",
+ "610104": "智能产品开发",
+ "610105": "智能终端技术与应用",
+ "610106": "智能监控技术应用",
+ "610107": "汽车智能技术",
+ "610108": "电子产品质量检测",
+ "610109": "电子产品营销与服务",
+ "610110": "电子电路设计与工艺",
+ "610111": "电子制造技术与设备",
+ "610112": "电子测量技术与仪器",
+ "610113": "电子工艺与管理",
+ "610114": "声像工程技术",
+ "610115": "移动互联应用技术",
+ "610116": "光电技术应用",
+ "610117": "光伏工程技术",
+ "610118": "光电显示技术",
+ "610119": "物联网应用技术",
+ "610120": "集成电路技术应用",
+ "610200": "计算机类",
+ "610201": "计算机应用技术",
+ "610202": "计算机网络技术",
+ "610203": "计算机信息管理",
+ "610204": "计算机系统与维护",
+ "610205": "软件技术",
+ "610206": "软件与信息服务",
+ "610207": "动漫制作技术",
+ "610208": "嵌入式技术与应用",
+ "610209": "数字展示技术",
+ "610210": "数字媒体应用技术",
+ "610211": "信息安全与管理",
+ "610212": "移动应用开发",
+ "610213": "云计算技术与应用",
+ "610214": "电子商务技术",
+ "610215": "大数据技术与应用",
+ "610216": "虚拟现实应用技术",
+ "610217": "人工智能技术服务",
+ "610300": "通信类",
+ "610301": "通信技术",
+ "610302": "移动通信技术",
+ "610303": "通信系统运行管理",
+ "610304": "通信工程设计与监理",
+ "610305": "电信服务与管理",
+ "610306": "光通信技术",
+ "610307": "物联网工程技术",
+ "620100": "临床医学类",
+ "620101": "临床医学",
+ "620102": "口腔医学",
+ "620103": "中医学",
+ "620104": "中医骨伤",
+ "620105": "针灸推拿",
+ "620106": "蒙医学",
+ "620107": "藏医学",
+ "620108": "维医学",
+ "620109": "傣医学",
+ "620110": "哈医学",
+ "620111": "朝医学",
+ "620200": "护理类",
+ "620201": "护理",
+ "620202": "助产",
+ "620300": "药学类",
+ "620301": "药学",
+ "620302": "中药学",
+ "620303": "蒙药学",
+ "620304": "维药学",
+ "620305": "藏药学",
+ "620400": "医学技术类",
+ "620401": "医学检验技术",
+ "620402": "医学生物技术",
+ "620403": "医学影像技术",
+ "620404": "医学美容技术",
+ "620405": "口腔医学技术",
+ "620406": "卫生检验与检疫技术",
+ "620407": "眼视光技术",
+ "620408": "放射治疗技术",
+ "620409": "呼吸治疗技术",
+ "620500": "康复治疗类",
+ "620501": "康复治疗技术",
+ "620502": "言语听觉康复技术",
+ "620503": "中医康复技术",
+ "620600": "公共卫生与卫生管理类",
+ "620601": "预防医学",
+ "620602": "公共卫生管理",
+ "620603": "卫生监督",
+ "620604": "卫生信息管理",
+ "620700": "人口与计划生育类",
+ "620701": "人口与家庭发展服务",
+ "620702": "生殖健康服务与管理",
+ "620800": "健康管理与促进类",
+ "620801": "健康管理",
+ "620802": "医学营养",
+ "620803": "中医养生保健",
+ "620804": "心理咨询",
+ "620805": "医疗设备应用技术",
+ "620806": "精密医疗器械技术",
+ "620807": "医疗器械维护与管理",
+ "620808": "康复工程技术",
+ "620809": "康复辅助器具技术",
+ "620810": "假肢与矫形器技术",
+ "620811": "老年保健与管理",
+ "620812": "医疗器械经营与管理",
+ "630100": "财政税务类",
+ "630101": "财政",
+ "630102": "税务",
+ "630103": "资产评估与管理",
+ "630104": "政府采购管理",
+ "630200": "金融类",
+ "630201": "金融管理",
+ "630202": "国际金融",
+ "630203": "证券与期货",
+ "630204": "信托与租赁",
+ "630205": "保险",
+ "630206": "投资与理财",
+ "630207": "信用管理",
+ "630208": "农村金融",
+ "630209": "互联网金融",
+ "630300": "财务会计类",
+ "630301": "财务管理",
+ "630302": "会计",
+ "630303": "审计",
+ "630304": "会计信息管理",
+ "630400": "统计类",
+ "630401": "信息统计与分析",
+ "630402": "统计与会计核算",
+ "630500": "经济贸易类",
+ "630501": "国际贸易实务",
+ "630502": "国际经济与贸易",
+ "630503": "国际商务",
+ "630504": "服务外包",
+ "630505": "经济信息管理",
+ "630506": "报关与国际货运",
+ "630507": "商务经纪与代理",
+ "630508": "国际文化贸易",
+ "630600": "工商管理类",
+ "630601": "工商企业管理",
+ "630602": "商务管理",
+ "630603": "商检技术",
+ "630604": "连锁经营管理",
+ "630605": "市场管理与服务",
+ "630606": "品牌代理经营",
+ "630607": "中小企业创业与经营",
+ "630700": "市场营销类",
+ "630701": "市场营销",
+ "630702": "汽车营销与服务",
+ "630703": "广告策划与营销",
+ "630704": "茶艺与茶叶营销",
+ "630800": "电子商务类",
+ "630801": "电子商务",
+ "630802": "移动商务",
+ "630803": "网络营销",
+ "630804": "商务数据分析与应用",
+ "630805": "跨境电子商务",
+ "630900": "物流类",
+ "630901": "物流工程技术",
+ "630902": "物流信息技术",
+ "630903": "物流管理",
+ "630904": "物流金融管理",
+ "630905": "工程物流管理",
+ "630906": "冷链物流技术与管理",
+ "630907": "采购与供应管理",
+ "640100": "旅游类",
+ "640101": "旅游管理",
+ "640102": "导游",
+ "640103": "旅行社经营管理",
+ "640104": "景区开发与管理",
+ "640105": "酒店管理",
+ "640106": "休闲服务与管理",
+ "640107": "研学旅行管理与服务",
+ "640108": "葡萄酒营销与服务",
+ "640200": "餐饮类",
+ "640201": "餐饮管理",
+ "640202": "烹调工艺与营养",
+ "640203": "营养配餐",
+ "640204": "中西面点工艺",
+ "640205": "西餐工艺",
+ "640300": "会展类",
+ "640301": "会展策划与管理",
+ "650100": "艺术设计类",
+ "650101": "艺术设计",
+ "650102": "视觉传播设计与制作",
+ "650103": "广告设计与制作",
+ "650104": "数字媒体艺术设计",
+ "650105": "产品艺术设计",
+ "650106": "家具艺术设计",
+ "650107": "皮具艺术设计",
+ "650108": "服装与服饰设计",
+ "650109": "室内艺术设计",
+ "650110": "展示艺术设计",
+ "650111": "环境艺术设计",
+ "650112": "公共艺术设计",
+ "650113": "雕刻艺术设计",
+ "650114": "包装艺术设计",
+ "650115": "陶瓷设计与工艺",
+ "650116": "刺绣设计与工艺",
+ "650117": "玉器设计与工艺",
+ "650118": "首饰设计与工艺",
+ "650119": "工艺美术品设计",
+ "650120": "动漫设计",
+ "650121": "游戏设计",
+ "650122": "人物形象设计",
+ "650123": "美容美体艺术",
+ "650124": "摄影与摄像艺术",
+ "650125": "美术",
+ "650200": "表演艺术类",
+ "650201": "表演艺术",
+ "650202": "戏剧影视表演",
+ "650203": "歌舞表演",
+ "650204": "戏曲表演",
+ "650205": "曲艺表演",
+ "650206": "音乐剧表演",
+ "650207": "舞蹈表演",
+ "650208": "国际标准舞",
+ "650209": "服装表演",
+ "650210": "模特与礼仪",
+ "650211": "现代流行音乐",
+ "650212": "作曲技术",
+ "650213": "音乐制作",
+ "650214": "钢琴伴奏",
+ "650215": "钢琴调律",
+ "650216": "舞蹈编导",
+ "650217": "戏曲导演",
+ "650218": "舞台艺术设计与制作",
+ "650219": "音乐表演",
+ "650220": "音乐传播",
+ "650300": "民族文化类",
+ "650301": "民族表演艺术",
+ "650302": "民族美术",
+ "650303": "民族服装与服饰",
+ "650304": "民族民居装饰",
+ "650305": "民族传统技艺",
+ "650306": "少数民族古籍修复",
+ "650307": "中国少数民族语言文化",
+ "650400": "文化服务类",
+ "650401": "文化创意与策划",
+ "650402": "文化市场经营管理",
+ "650403": "公共文化服务与管理",
+ "650404": "文物修复与保护",
+ "650405": "考古探掘技术",
+ "650406": "文物博物馆服务与管理",
+ "650407": "图书档案管理",
+ "660100": "新闻出版类",
+ "660101": "图文信息处理",
+ "660102": "网络新闻与传播",
+ "660103": "版面编辑与校对",
+ "660104": "出版商务",
+ "660105": "出版与电脑编辑技术",
+ "660106": "出版信息管理",
+ "660107": "数字出版",
+ "660108": "数字媒体设备管理",
+ "660200": "广播影视类",
+ "660201": "新闻采编与制作",
+ "660202": "播音与主持",
+ "660203": "广播影视节目制作",
+ "660204": "广播电视技术",
+ "660205": "影视制片管理",
+ "660206": "影视编导",
+ "660207": "影视美术",
+ "660208": "影视多媒体技术",
+ "660209": "影视动画",
+ "660210": "影视照明技术与艺术",
+ "660211": "音像技术",
+ "660212": "录音技术与艺术",
+ "660213": "摄影摄像技术",
+ "660214": "传播与策划",
+ "660215": "媒体营销",
+ "670100": "教育类",
+ "670101": "早期教育",
+ "670102": "学前教育",
+ "670103": "小学教育",
+ "670104": "语文教育",
+ "670105": "数学教育",
+ "670106": "英语教育",
+ "670107": "物理教育",
+ "670108": "化学教育",
+ "670109": "生物教育",
+ "670110": "历史教育",
+ "670111": "地理教育",
+ "670112": "音乐教育",
+ "670113": "美术教育",
+ "670114": "体育教育",
+ "670115": "思想政治教育",
+ "670116": "舞蹈教育",
+ "670117": "艺术教育",
+ "670118": "特殊教育",
+ "670119": "科学教育",
+ "670120": "现代教育技术",
+ "670121": "心理健康教育",
+ "670200": "语言类",
+ "670201": "汉语",
+ "670202": "商务英语",
+ "670203": "应用英语",
+ "670204": "旅游英语",
+ "670205": "商务日语",
+ "670206": "应用日语",
+ "670207": "旅游日语",
+ "670208": "应用韩语",
+ "670209": "应用俄语",
+ "670210": "应用法语",
+ "670211": "应用德语",
+ "670212": "应用西班牙语",
+ "670213": "应用越南语",
+ "670214": "应用泰语",
+ "670215": "应用阿拉伯语",
+ "670216": "应用外语",
+ "670300": "文秘类",
+ "670301": "文秘",
+ "670302": "文秘速录",
+ "670400": "体育类",
+ "670401": "运动训练",
+ "670402": "运动防护",
+ "670403": "社会体育",
+ "670404": "休闲体育",
+ "670405": "高尔夫球运动与管理",
+ "670406": "民族传统体育",
+ "670407": "体育艺术表演",
+ "670408": "体育运营与管理",
+ "670409": "体育保健与康复",
+ "670410": "健身指导与管理",
+ "670411": "电子竞技运动与管理",
+ "670412": "冰雪设施运维与管理",
+ "680100": "公安管理类",
+ "680101": "治安管理",
+ "680102": "交通管理",
+ "680103": "信息网络安全监察",
+ "680104": "防火管理",
+ "680105": "边防检查",
+ "680106": "边境管理",
+ "680107": "特警",
+ "680108": "警察管理",
+ "680109": "公共安全管理",
+ "680110": "森林消防",
+ "680111": "部队后勤管理",
+ "680112": "部队政治工作",
+ "680200": "公安指挥类",
+ "680201": "警察指挥与战术",
+ "680202": "边防指挥",
+ "680203": "船艇指挥",
+ "680204": "通信指挥",
+ "680205": "消防指挥",
+ "680206": "参谋业务",
+ "680207": "抢险救援",
+ "680300": "公安技术类",
+ "680301": "刑事科学技术",
+ "680302": "警犬技术",
+ "680400": "侦查类",
+ "680401": "刑事侦查",
+ "680402": "国内安全保卫",
+ "680403": "经济犯罪侦查",
+ "680404": "禁毒",
+ "680500": "法律实务类",
+ "680501": "司法助理",
+ "680502": "法律文秘",
+ "680503": "法律事务",
+ "680504": "检察事务",
+ "680600": "法律执行类",
+ "680601": "刑事执行",
+ "680602": "民事执行",
+ "680603": "行政执行",
+ "680604": "司法警务",
+ "680605": "社区矫正",
+ "680700": "司法技术类",
+ "680701": "刑事侦查技术",
+ "680702": "安全防范技术",
+ "680703": "司法信息技术",
+ "680704": "司法鉴定技术",
+ "680705": "司法信息安全",
+ "680706": "罪犯心理测量与矫正技术",
+ "680707": "戒毒矫治技术",
+ "680708": "职务犯罪预防与控制",
+ "690100": "公共事业类",
+ "690101": "社会工作",
+ "690102": "社会福利事业管理",
+ "690103": "青少年工作与管理",
+ "690104": "社区管理与服务",
+ "690105": "公共关系",
+ "690106": "人民武装",
+ "690200": "公共管理类",
+ "690201": "民政管理",
+ "690202": "人力资源管理",
+ "690203": "劳动与社会保障",
+ "690204": "网络舆情监测",
+ "690205": "公共事务管理",
+ "690206": "行政管理",
+ "690207": "质量管理与认证",
+ "690208": "知识产权管理",
+ "690209": "公益慈善事业管理",
+ "690300": "公共服务类",
+ "690301": "老年服务与管理",
+ "690302": "家政服务与管理",
+ "690303": "婚庆服务与管理",
+ "690304": "社区康复",
+ "690305": "现代殡葬技术与管理",
+ "690306": "幼儿发展与健康管理",
+ "690307": "陵园服务与管理",
+ "720300": "测绘地理信息类",
+ "720301": "导航工程",
+ "720400": "石油与天然气类",
+ "720401": "油气储运工程",
+ "720500": "煤炭类",
+ "720501": "采矿工程",
+ "730300": "新能源发电工程类",
+ "730301": "新能源工程",
+ "740100": "城乡规划与管理类",
+ "740101": "土木工程",
+ "740200": "城乡规划与管理类",
+ "740201": "工程造价",
+ "740202": "工程管理",
+ "740300": "土建施工类",
+ "740301": "建筑设计",
+ "740302": "风景园林",
+ "760100": "机械设计制造类",
+ "760101": "机械设计制造及其自动化",
+ "760102": "材料成型及控制工程",
+ "760103": "智能制造工程",
+ "760300": "自动化类",
+ "760301": "机械电子工程",
+ "760302": "电气工程及其自动化",
+ "760303": "智能控制技术",
+ "760304": "工业机器人技术",
+ "760305": "电梯工程技术",
+ "760306": "自动化技术与应用",
+ "760700": "汽车制造类",
+ "760701": "车辆工程",
+ "760702": "汽车服务工程",
+ "760703": "新能源汽车工程",
+ "770200": "化工技术类",
+ "770201": "化学工程与工艺",
+ "780300": "印刷类",
+ "780301": "印刷工程",
+ "790100": "食品工业类",
+ "790101": "食品质量与安全",
+ "790200": "药品制造类",
+ "790201": "制药工程",
+ "800200": "道路运输类",
+ "800201": "道路桥梁工程",
+ "800300": "水上运输类",
+ "800301": "航海技术",
+ "800302": "水路运输与海事管理",
+ "800600": "城市轨道交通类",
+ "800601": "轨道交通信号与控制",
+ "800602": "城市轨道交通设备与控制",
+ "810100": "电子信息类",
+ "810101": "电子信息工程",
+ "810102": "物联网工程",
+ "810103": "集成电路技术与应用",
+ "810200": "计算机类",
+ "810201": "计算机应用工程",
+ "810202": "网络工程",
+ "810203": "软件工程",
+ "810204": "数字媒体技术",
+ "810205": "信息安全与管理",
+ "810206": "大数据技术与应用",
+ "810207": "区块链技术与应用",
+ "810208": "虚拟现实技术与应用",
+ "810300": "通信类",
+ "810301": "通信工程",
+ "820200": "护理类",
+ "820201": "护理",
+ "820500": "康复治疗类",
+ "820501": "康复治疗",
+ "820800": "健康管理与促进类",
+ "820801": "健康服务与管理",
+ "830200": "金融类",
+ "830201": "金融管理",
+ "830202": "互联网金融",
+ "830300": "财务会计类",
+ "830301": "财务管理",
+ "830302": "会计",
+ "830500": "经济贸易类",
+ "830501": "国际经济与贸易",
+ "830700": "市场营销类",
+ "830701": "市场营销",
+ "830800": "电子商务类",
+ "830801": "电子商务",
+ "830802": "跨境电子商务",
+ "830900": "物流类",
+ "830901": "物流管理",
+ "830902": "物流工程",
+ "840100": "旅游类",
+ "840101": "旅游管理",
+ "840102": "酒店管理",
+ "850100": "艺术设计类",
+ "850101": "视觉传达设计",
+ "850102": "数字媒体艺术",
+ "850103": "服装与服饰设计",
+ "850104": "环境艺术设计",
+ "850105": "工艺美术",
+ "850106": "美术",
+ "850107": "产品设计",
+ "850108": "公共艺术设计",
+ "850200": "表演艺术类",
+ "850201": "舞蹈表演",
+ "850202": "音乐表演",
+ "860100": "新闻出版类",
+ "860101": "网络与新媒体",
+ "860200": "广播影视类",
+ "860201": "播音与主持",
+ "860202": "影视编导",
+ "860203": "影视摄影与制作",
+ "870100": "教育类",
+ "870101": "学前教育",
+ "870200": "语言类",
+ "870201": "商务英语",
+ "870202": "商务日语",
+ "870203": "应用韩语",
+ "870204": "应用俄语",
+ "870205": "应用泰语",
+ "870400": "体育类",
+ "870401": "社会体育指导与管理",
+ "870402": "休闲体育",
+ "890300": "公共服务类",
+ "890301": "家政管理",
+ "999999": "未知",
+ "01SY00": "人文科学试验班类",
+ "01SY01": "人文科学试验班",
+ "02SY00": "经济试验班类",
+ "02SY01": "经济试验班",
+ "02SY02": "经济管理试验班",
+ "03SY00": "社会科学试验班",
+ "03SY01": "社会科学试验班",
+ "050200A": "桑戈语",
+ "05SY00": "文科试验班类",
+ "07SY00": "理科试验班类",
+ "07SY01": "理科试验班",
+ "07SY02": "自然科学试验班",
+ "08SY00": "工科试验班类",
+ "08SY01": "工科试验班",
+ "08SY02": "科技与创意设计试验班",
+ "08SY03": "技术科学试验班",
+ "10SY00": "医学试验班类",
+ "10SY01": "医学试验班"
+ },
+ "schools": {
+ "10001": "北京大学",
+ "10002": "中国人民大学",
+ "10003": "清华大学",
+ "10004": "北京交通大学",
+ "10005": "北京工业大学",
+ "10006": "北京航空航天大学",
+ "10007": "北京理工大学",
+ "10008": "北京科技大学",
+ "10009": "北方工业大学",
+ "10010": "北京化工大学",
+ "10011": "北京工商大学",
+ "10012": "北京服装学院",
+ "10013": "北京邮电大学",
+ "10015": "北京印刷学院",
+ "10016": "北京建筑大学",
+ "10017": "北京石油化工学院",
+ "10018": "北京电子科技学院",
+ "10019": "中国农业大学",
+ "10020": "北京农学院",
+ "10022": "北京林业大学",
+ "10023": "北京协和医学院(清华大学医学部)",
+ "10025": "首都医科大学",
+ "10026": "北京中医药大学",
+ "10027": "北京师范大学",
+ "10028": "首都师范大学",
+ "10029": "首都体育学院",
+ "10030": "北京外国语大学",
+ "10031": "北京第二外国语学院",
+ "10032": "北京语言大学",
+ "10033": "中国传媒大学",
+ "10034": "中央财经大学",
+ "10035": "桂林生命与健康职业技术学院",
+ "10036": "对外经济贸易大学",
+ "10037": "北京物资学院",
+ "10038": "首都经济贸易大学",
+ "10039": "中国消防救援学院",
+ "10040": "外交学院",
+ "10041": "中国人民公安大学",
+ "10042": "国际关系学院",
+ "10043": "北京体育大学",
+ "10045": "中央音乐学院",
+ "10046": "中国音乐学院",
+ "10047": "中央美术学院",
+ "10048": "中央戏剧学院",
+ "10049": "中国戏曲学院",
+ "10050": "北京电影学院",
+ "10051": "北京舞蹈学院",
+ "10052": "中央民族大学",
+ "10053": "中国政法大学",
+ "10054": "华北电力大学",
+ "10055": "南开大学",
+ "10056": "天津大学",
+ "10057": "天津科技大学",
+ "10058": "天津工业大学",
+ "10059": "中国民航大学",
+ "10060": "天津理工大学",
+ "10061": "天津农学院",
+ "10062": "天津医科大学",
+ "10063": "天津中医药大学",
+ "10065": "天津师范大学",
+ "10066": "天津职业技术师范大学",
+ "10068": "天津外国语大学",
+ "10069": "天津商业大学",
+ "10070": "天津财经大学",
+ "10071": "天津体育学院",
+ "10072": "天津音乐学院",
+ "10073": "天津美术学院",
+ "10075": "河北大学",
+ "10076": "河北工程大学",
+ "10077": "河北地质大学",
+ "10078": "华北水利水电大学",
+ "10079": "华北电力大学(保定)",
+ "10080": "河北工业大学",
+ "10081": "华北理工大学",
+ "10082": "河北科技大学",
+ "10084": "河北建筑工程学院",
+ "10085": "河北水利电力学院",
+ "10086": "河北农业大学",
+ "10089": "河北医科大学",
+ "10092": "河北北方学院",
+ "10093": "承德医学院",
+ "10094": "河北师范大学",
+ "10096": "保定学院",
+ "10098": "河北民族师范学院",
+ "10099": "唐山师范学院",
+ "10100": "廊坊师范学院",
+ "10101": "衡水学院",
+ "10102": "石家庄学院",
+ "10103": "邯郸学院",
+ "10104": "邢台学院",
+ "10105": "沧州师范学院",
+ "10107": "石家庄铁道大学",
+ "10108": "山西大学",
+ "10109": "太原科技大学",
+ "10110": "中北大学",
+ "10112": "太原理工大学",
+ "10113": "山西农业大学",
+ "10114": "山西医科大学",
+ "10117": "长治医学院",
+ "10118": "山西师范大学",
+ "10119": "太原师范学院",
+ "10120": "山西大同大学",
+ "10121": "晋中学院",
+ "10122": "长治学院",
+ "10123": "运城学院",
+ "10124": "忻州师范学院",
+ "10125": "山西财经大学",
+ "10126": "内蒙古大学",
+ "10127": "内蒙古科技大学",
+ "10128": "内蒙古工业大学",
+ "10129": "内蒙古农业大学",
+ "10132": "内蒙古医科大学",
+ "10135": "内蒙古师范大学",
+ "10136": "内蒙古民族大学",
+ "10138": "赤峰学院",
+ "10139": "内蒙古财经大学",
+ "10140": "辽宁大学",
+ "10141": "大连理工大学",
+ "10142": "沈阳工业大学",
+ "10143": "沈阳航空航天大学",
+ "10144": "沈阳理工大学",
+ "10145": "东北大学",
+ "10146": "辽宁科技大学",
+ "10147": "辽宁工程技术大学",
+ "10148": "辽宁石油化工大学",
+ "10149": "沈阳化工大学",
+ "10150": "大连交通大学",
+ "10151": "大连海事大学",
+ "10152": "大连工业大学",
+ "10153": "沈阳建筑大学",
+ "10154": "辽宁工业大学",
+ "10157": "沈阳农业大学",
+ "10158": "大连海洋大学",
+ "10159": "中国医科大学",
+ "10160": "锦州医科大学",
+ "10161": "大连医科大学",
+ "10162": "辽宁中医药大学",
+ "10163": "沈阳药科大学",
+ "10164": "沈阳医学院",
+ "10165": "辽宁师范大学",
+ "10166": "沈阳师范大学",
+ "10167": "渤海大学",
+ "10169": "鞍山师范学院",
+ "10171": "朝阳师范高等专科学校",
+ "10172": "大连外国语大学",
+ "10173": "东北财经大学",
+ "10175": "中国刑事警察学院",
+ "10176": "沈阳体育学院",
+ "10177": "沈阳音乐学院",
+ "10178": "鲁迅美术学院",
+ "10179": "抚顺师范高等专科学校",
+ "10180": "锦州师范高等专科学校",
+ "10181": "营口职业技术学院",
+ "10182": "铁岭师范高等专科学校",
+ "10183": "吉林大学",
+ "10184": "延边大学",
+ "10186": "长春理工大学",
+ "10188": "东北电力大学",
+ "10190": "长春工业大学",
+ "10191": "吉林建筑大学",
+ "10192": "吉林化工学院",
+ "10193": "吉林农业大学",
+ "10199": "长春中医药大学",
+ "10200": "东北师范大学",
+ "10201": "北华大学",
+ "10202": "通化师范学院",
+ "10203": "吉林师范大学",
+ "10204": "吉林工程技术师范学院",
+ "10205": "长春师范大学",
+ "10206": "白城师范学院",
+ "10207": "吉林财经大学",
+ "10208": "吉林体育学院",
+ "10209": "吉林艺术学院",
+ "10212": "黑龙江大学",
+ "10213": "哈尔滨工业大学",
+ "10214": "哈尔滨理工大学",
+ "10216": "燕山大学",
+ "10217": "哈尔滨工程大学",
+ "10219": "黑龙江科技大学",
+ "10220": "东北石油大学",
+ "10222": "佳木斯大学",
+ "10223": "黑龙江八一农垦大学",
+ "10224": "东北农业大学",
+ "10225": "东北林业大学",
+ "10226": "哈尔滨医科大学",
+ "10228": "黑龙江中医药大学",
+ "10229": "牡丹江医学院",
+ "10231": "哈尔滨师范大学",
+ "10232": "齐齐哈尔大学",
+ "10233": "牡丹江师范学院",
+ "10234": "哈尔滨学院",
+ "10235": "大庆师范学院",
+ "10236": "绥化学院",
+ "10238": "齐齐哈尔高等师范专科学校",
+ "10240": "哈尔滨商业大学",
+ "10242": "哈尔滨体育学院",
+ "10245": "哈尔滨金融学院",
+ "10246": "复旦大学",
+ "10247": "同济大学",
+ "10248": "上海交通大学",
+ "10251": "华东理工大学",
+ "10252": "上海理工大学",
+ "10254": "上海海事大学",
+ "10255": "东华大学",
+ "10256": "上海电力大学",
+ "10259": "上海应用技术大学",
+ "10262": "上海健康医学院",
+ "10264": "上海海洋大学",
+ "10268": "上海中医药大学",
+ "10269": "华东师范大学",
+ "10270": "上海师范大学",
+ "10271": "上海外国语大学",
+ "10272": "上海财经大学",
+ "10273": "上海对外经贸大学",
+ "10274": "上海海关学院",
+ "10275": "上海旅游高等专科学校",
+ "10276": "华东政法大学",
+ "10277": "上海体育大学",
+ "10278": "上海音乐学院",
+ "10279": "上海戏剧学院",
+ "10280": "上海大学",
+ "10283": "上海公安学院",
+ "10284": "南京大学",
+ "10285": "苏州大学",
+ "10286": "东南大学",
+ "10287": "南京航空航天大学",
+ "10288": "南京理工大学",
+ "10289": "江苏科技大学",
+ "10290": "中国矿业大学",
+ "10291": "南京工业大学",
+ "10292": "常州大学",
+ "10293": "南京邮电大学",
+ "10294": "河海大学",
+ "10295": "江南大学",
+ "10298": "南京林业大学",
+ "10299": "江苏大学",
+ "10300": "南京信息工程大学",
+ "10304": "南通大学",
+ "10305": "盐城工学院",
+ "10307": "南京农业大学",
+ "10312": "南京医科大学",
+ "10313": "徐州医科大学",
+ "10315": "南京中医药大学",
+ "10316": "中国药科大学",
+ "10319": "南京师范大学",
+ "10320": "江苏师范大学",
+ "10323": "淮阴师范学院",
+ "10324": "盐城师范学院",
+ "10327": "南京财经大学",
+ "10329": "江苏警官学院",
+ "10330": "南京体育学院",
+ "10331": "南京艺术学院",
+ "10332": "苏州科技大学",
+ "10333": "常熟理工学院",
+ "10335": "浙江大学",
+ "10336": "杭州电子科技大学",
+ "10337": "浙江工业大学",
+ "10338": "浙江理工大学",
+ "10340": "浙江海洋大学",
+ "10341": "浙江农林大学",
+ "10343": "温州医科大学",
+ "10344": "浙江中医药大学",
+ "10345": "浙江师范大学",
+ "10346": "杭州师范大学",
+ "10347": "湖州师范学院",
+ "10349": "绍兴文理学院",
+ "10350": "台州学院",
+ "10351": "温州大学",
+ "10352": "丽水学院",
+ "10353": "浙江工商大学",
+ "10354": "嘉兴学院",
+ "10355": "中国美术学院",
+ "10356": "中国计量大学",
+ "10357": "安徽大学",
+ "10358": "中国科学技术大学",
+ "10359": "合肥工业大学",
+ "10360": "安徽工业大学",
+ "10361": "安徽理工大学",
+ "10363": "安徽工程大学",
+ "10364": "安徽农业大学",
+ "10366": "安徽医科大学",
+ "10367": "蚌埠医学院",
+ "10368": "皖南医学院",
+ "10369": "安徽中医药大学",
+ "10370": "安徽师范大学",
+ "10371": "阜阳师范大学",
+ "10372": "安庆师范大学",
+ "10373": "淮北师范大学",
+ "10375": "黄山学院",
+ "10376": "皖西学院",
+ "10377": "滁州学院",
+ "10378": "安徽财经大学",
+ "10379": "宿州学院",
+ "10380": "巢湖学院",
+ "10381": "淮南师范学院",
+ "10383": "铜陵学院",
+ "10384": "厦门大学",
+ "10385": "华侨大学",
+ "10386": "福州大学",
+ "10388": "福建理工大学",
+ "10389": "福建农林大学",
+ "10390": "集美大学",
+ "10392": "福建医科大学",
+ "10393": "福建中医药大学",
+ "10394": "福建师范大学",
+ "10395": "闽江学院",
+ "10397": "武夷学院",
+ "10398": "宁德师范学院",
+ "10399": "泉州师范学院",
+ "10402": "闽南师范大学",
+ "10403": "南昌大学",
+ "10404": "华东交通大学",
+ "10405": "东华理工大学",
+ "10406": "南昌航空大学",
+ "10407": "江西理工大学",
+ "10408": "景德镇陶瓷大学",
+ "10410": "江西农业大学",
+ "10412": "江西中医药大学",
+ "10413": "赣南医学院",
+ "10414": "江西师范大学",
+ "10416": "上饶师范学院",
+ "10417": "宜春学院",
+ "10418": "赣南师范大学",
+ "10419": "井冈山大学",
+ "10421": "江西财经大学",
+ "10422": "山东大学",
+ "10423": "中国海洋大学",
+ "10424": "山东科技大学",
+ "10425": "中国石油大学(华东)",
+ "10426": "青岛科技大学",
+ "10427": "济南大学",
+ "10429": "青岛理工大学",
+ "10430": "山东建筑大学",
+ "10431": "齐鲁工业大学",
+ "10433": "山东理工大学",
+ "10434": "山东农业大学",
+ "10435": "青岛农业大学",
+ "10438": "潍坊医学院",
+ "10439": "山东第一医科大学",
+ "10440": "滨州医学院",
+ "10441": "山东中医药大学",
+ "10442": "山东医学高等专科学校",
+ "10443": "济宁医学院",
+ "10444": "菏泽医学专科学校",
+ "10445": "山东师范大学",
+ "10446": "曲阜师范大学",
+ "10447": "聊城大学",
+ "10448": "德州学院",
+ "10449": "滨州学院",
+ "10451": "鲁东大学",
+ "10452": "临沂大学",
+ "10453": "泰山学院",
+ "10454": "济宁学院",
+ "10455": "菏泽学院",
+ "10456": "山东财经大学",
+ "10457": "山东体育学院",
+ "10458": "山东艺术学院",
+ "10459": "郑州大学",
+ "10460": "河南理工大学",
+ "10462": "郑州轻工业大学",
+ "10463": "河南工业大学",
+ "10464": "河南科技大学",
+ "10465": "中原工学院",
+ "10466": "河南农业大学",
+ "10467": "河南科技学院",
+ "10469": "河南牧业经济学院",
+ "10471": "河南中医药大学",
+ "10472": "新乡医学院",
+ "10475": "河南大学",
+ "10476": "河南师范大学",
+ "10477": "信阳师范学院",
+ "10478": "周口师范学院",
+ "10479": "安阳师范学院",
+ "10480": "许昌学院",
+ "10481": "南阳师范学院",
+ "10482": "洛阳师范学院",
+ "10483": "商丘师范学院",
+ "10484": "河南财经政法大学",
+ "10485": "郑州航空工业管理学院",
+ "10486": "武汉大学",
+ "10487": "华中科技大学",
+ "10488": "武汉科技大学",
+ "10489": "长江大学",
+ "10490": "武汉工程大学",
+ "10491": "中国地质大学(武汉)",
+ "10495": "武汉纺织大学",
+ "10496": "武汉轻工大学",
+ "10497": "武汉理工大学",
+ "10500": "湖北工业大学",
+ "10504": "华中农业大学",
+ "10507": "湖北中医药大学",
+ "10511": "华中师范大学",
+ "10512": "湖北大学",
+ "10513": "湖北师范大学",
+ "10514": "黄冈师范学院",
+ "10517": "湖北民族大学",
+ "10518": "汉江师范学院",
+ "10519": "湖北文理学院",
+ "10520": "中南财经政法大学",
+ "10522": "武汉体育学院",
+ "10523": "湖北美术学院",
+ "10524": "中南民族大学",
+ "10525": "湖北汽车工业学院",
+ "10528": "湖北工程学院",
+ "10530": "湘潭大学",
+ "10531": "吉首大学",
+ "10532": "湖南大学",
+ "10533": "中南大学",
+ "10534": "湖南科技大学",
+ "10536": "长沙理工大学",
+ "10537": "湖南农业大学",
+ "10538": "中南林业科技大学",
+ "10541": "湖南中医药大学",
+ "10542": "湖南师范大学",
+ "10543": "湖南理工学院",
+ "10545": "湘南学院",
+ "10546": "衡阳师范学院",
+ "10547": "邵阳学院",
+ "10548": "怀化学院",
+ "10549": "湖南文理学院",
+ "10551": "湖南科技学院",
+ "10553": "湖南人文科技学院",
+ "10554": "湖南工商大学",
+ "10555": "南华大学",
+ "10558": "中山大学",
+ "10559": "暨南大学",
+ "10560": "汕头大学",
+ "10561": "华南理工大学",
+ "10564": "华南农业大学",
+ "10566": "广东海洋大学",
+ "10570": "广州医科大学",
+ "10571": "广东医科大学",
+ "10572": "广州中医药大学",
+ "10573": "广东药科大学",
+ "10574": "华南师范大学",
+ "10576": "韶关学院",
+ "10577": "惠州学院",
+ "10578": "韩山师范学院",
+ "10579": "岭南师范学院",
+ "10580": "肇庆学院",
+ "10582": "嘉应学院",
+ "10585": "广州体育学院",
+ "10586": "广州美术学院",
+ "10587": "星海音乐学院",
+ "10588": "广东技术师范大学",
+ "10589": "海南大学",
+ "10590": "深圳大学",
+ "10592": "广东财经大学",
+ "10593": "广西大学",
+ "10594": "广西科技大学",
+ "10595": "桂林电子科技大学",
+ "10596": "桂林理工大学",
+ "10598": "广西医科大学",
+ "10599": "右江民族医学院",
+ "10600": "广西中医药大学",
+ "10601": "桂林医学院",
+ "10602": "广西师范大学",
+ "10603": "南宁师范大学",
+ "10604": "广西民族师范学院",
+ "10605": "河池学院",
+ "10606": "玉林师范学院",
+ "10607": "广西艺术学院",
+ "10608": "广西民族大学",
+ "10609": "百色学院",
+ "10610": "四川大学",
+ "10611": "重庆大学",
+ "10613": "西南交通大学",
+ "10614": "电子科技大学",
+ "10615": "西南石油大学",
+ "10616": "成都理工大学",
+ "10617": "重庆邮电大学",
+ "10618": "重庆交通大学",
+ "10619": "西南科技大学",
+ "10621": "成都信息工程大学",
+ "10622": "四川轻化工大学",
+ "10623": "西华大学",
+ "10624": "中国民用航空飞行学院",
+ "10626": "四川农业大学",
+ "10628": "西昌学院",
+ "10631": "重庆医科大学",
+ "10632": "西南医科大学",
+ "10633": "成都中医药大学",
+ "10634": "川北医学院",
+ "10635": "西南大学",
+ "10636": "四川师范大学",
+ "10637": "重庆师范大学",
+ "10638": "西华师范大学",
+ "10639": "绵阳师范学院",
+ "10640": "内江师范学院",
+ "10641": "宜宾学院",
+ "10642": "重庆文理学院",
+ "10643": "重庆三峡学院",
+ "10644": "四川文理学院",
+ "10646": "阿坝师范学院",
+ "10647": "长江师范学院",
+ "10649": "乐山师范学院",
+ "10650": "四川外国语大学",
+ "10651": "西南财经大学",
+ "10652": "西南政法大学",
+ "10653": "成都体育学院",
+ "10654": "四川音乐学院",
+ "10655": "四川美术学院",
+ "10656": "西南民族大学",
+ "10657": "贵州大学",
+ "10660": "贵州医科大学",
+ "10661": "遵义医科大学",
+ "10662": "贵州中医药大学",
+ "10663": "贵州师范大学",
+ "10664": "遵义师范学院",
+ "10665": "铜仁学院",
+ "10666": "兴义民族师范学院",
+ "10667": "安顺学院",
+ "10668": "贵州工程应用技术学院",
+ "10669": "凯里学院",
+ "10670": "黔南民族师范学院",
+ "10671": "贵州财经大学",
+ "10672": "贵州民族大学",
+ "10673": "云南大学",
+ "10674": "昆明理工大学",
+ "10676": "云南农业大学",
+ "10677": "西南林业大学",
+ "10678": "昆明医科大学",
+ "10679": "大理大学",
+ "10680": "云南中医药大学",
+ "10681": "云南师范大学",
+ "10683": "昭通学院",
+ "10684": "曲靖师范学院",
+ "10685": "普洱学院",
+ "10686": "保山学院",
+ "10687": "红河学院",
+ "10689": "云南财经大学",
+ "10690": "云南艺术学院",
+ "10691": "云南民族大学",
+ "10692": "西藏警官高等专科学校",
+ "10693": "西藏农牧学院",
+ "10694": "西藏大学",
+ "10695": "西藏民族大学",
+ "10696": "西藏藏医药大学",
+ "10697": "西北大学",
+ "10698": "西安交通大学",
+ "10699": "西北工业大学",
+ "10700": "西安理工大学",
+ "10701": "西安电子科技大学",
+ "10702": "西安工业大学",
+ "10703": "西安建筑科技大学",
+ "10704": "西安科技大学",
+ "10705": "西安石油大学",
+ "10708": "陕西科技大学",
+ "10709": "西安工程大学",
+ "10710": "长安大学",
+ "10712": "西北农林科技大学",
+ "10716": "陕西中医药大学",
+ "10718": "陕西师范大学",
+ "10719": "延安大学",
+ "10720": "陕西理工大学",
+ "10721": "宝鸡文理学院",
+ "10722": "咸阳师范学院",
+ "10723": "渭南师范学院",
+ "10724": "西安外国语大学",
+ "10726": "西北政法大学",
+ "10727": "西安体育学院",
+ "10728": "西安音乐学院",
+ "10729": "西安美术学院",
+ "10730": "兰州大学",
+ "10731": "兰州理工大学",
+ "10732": "兰州交通大学",
+ "10733": "甘肃农业大学",
+ "10735": "甘肃中医药大学",
+ "10736": "西北师范大学",
+ "10737": "兰州城市学院",
+ "10738": "陇东学院",
+ "10739": "天水师范学院",
+ "10740": "河西学院",
+ "10741": "兰州财经大学",
+ "10742": "西北民族大学",
+ "10743": "青海大学",
+ "10746": "青海师范大学",
+ "10748": "青海民族大学",
+ "10749": "宁夏大学",
+ "10752": "宁夏医科大学",
+ "10753": "宁夏师范学院",
+ "10755": "新疆大学",
+ "10757": "塔里木大学",
+ "10758": "新疆农业大学",
+ "10759": "石河子大学",
+ "10760": "新疆医科大学",
+ "10762": "新疆师范大学",
+ "10763": "喀什大学",
+ "10764": "伊犁师范大学",
+ "10765": "和田师范专科学校",
+ "10766": "新疆财经大学",
+ "10768": "新疆艺术学院",
+ "10792": "天津城建大学",
+ "10798": "河北科技师范学院",
+ "10809": "山西中医药大学",
+ "10812": "吕梁学院",
+ "10819": "呼伦贝尔学院",
+ "10822": "广东白云学院",
+ "10823": "长沙医学院",
+ "10824": "河南职业技术学院",
+ "10825": "齐鲁医药学院",
+ "10826": "明达职业技术学院",
+ "10827": "长沙民政职业技术学院",
+ "10828": "陕西工业职业技术学院",
+ "10829": "公安海警学院",
+ "10830": "湖南工业职业技术学院",
+ "10831": "顺德职业技术学院",
+ "10832": "山东商业职业技术学院",
+ "10833": "广东轻工职业技术学院",
+ "10834": "武汉职业技术学院",
+ "10835": "漯河职业技术学院",
+ "10836": "株洲师范高等专科学校",
+ "10838": "兰州石化职业技术学院",
+ "10839": "江西工业职业技术学院",
+ "10841": "辽宁对外经贸学院",
+ "10842": "三门峡职业技术学院",
+ "10843": "郑州铁路职业技术学院",
+ "10845": "大连职业技术学院",
+ "10846": "江西科技学院",
+ "10847": "辽源职业技术学院",
+ "10848": "无锡职业技术学院",
+ "10849": "江苏建筑职业技术学院",
+ "10850": "南京工业职业技术大学",
+ "10851": "上海东海职业技术学院",
+ "10852": "上海工商职业技术学院",
+ "10853": "北京工业职业技术学院",
+ "10856": "上海工程技术大学",
+ "10857": "北京信息职业技术学院",
+ "10858": "北京电子科技职业学院",
+ "10859": "天津天狮学院",
+ "10861": "广东交通职业技术学院",
+ "10862": "广东水利电力职业技术学院",
+ "10863": "宁波职业技术学院",
+ "10864": "温州职业技术学院",
+ "10865": "湖南信息职业技术学院",
+ "10866": "福建船政交通职业学院",
+ "10867": "广西机电职业技术学院",
+ "10868": "青岛滨海学院",
+ "10869": "安徽职业技术学院",
+ "10870": "重庆航天职业技术学院",
+ "10871": "内蒙古建筑职业技术学院",
+ "10872": "伊春职业学院",
+ "10873": "河北工业职业技术学院",
+ "10876": "浙江万里学院",
+ "10878": "安徽建筑大学",
+ "10879": "安徽科技学院",
+ "10888": "江西医学高等专科学校",
+ "10894": "景德镇学院",
+ "10895": "萍乡学院",
+ "10904": "枣庄学院",
+ "10908": "山东工艺美术学院",
+ "10918": "黄淮学院",
+ "10919": "平顶山学院",
+ "10920": "湖北理工学院",
+ "10927": "湖北科技学院",
+ "10929": "湖北医药学院",
+ "10955": "黄冈职业技术学院",
+ "10956": "长江职业学院",
+ "10957": "辽宁农业职业技术学院",
+ "10958": "江苏工程职业技术学院",
+ "10959": "安徽三联学院",
+ "10960": "苏州工艺美术职业技术学院",
+ "10963": "淮北职业技术学院",
+ "10964": "吉林外国语大学",
+ "10965": "潮汕职业技术学院",
+ "10966": "杨凌职业技术学院",
+ "10976": "贵阳学院",
+ "10977": "六盘水师范学院",
+ "10994": "新疆工程学院",
+ "10995": "新疆农业职业技术学院",
+ "10997": "昌吉学院",
+ "11032": "天津市职业大学",
+ "11033": "唐山学院",
+ "11034": "邯郸职业技术学院",
+ "11035": "沈阳大学",
+ "11037": "抚顺职业技术学院",
+ "11044": "四平职业大学",
+ "11046": "牡丹江大学",
+ "11047": "上海立信会计金融学院",
+ "11049": "淮阴工学院",
+ "11050": "连云港职业技术学院",
+ "11051": "镇江市高等专科学校",
+ "11052": "南通职业大学",
+ "11054": "苏州市职业大学",
+ "11055": "常州工学院",
+ "11057": "浙江科技学院",
+ "11058": "宁波工程学院",
+ "11059": "合肥学院",
+ "11061": "芜湖职业技术学院",
+ "11062": "厦门理工学院",
+ "11065": "青岛大学",
+ "11066": "烟台大学",
+ "11067": "潍坊学院",
+ "11068": "郑州工程技术学院",
+ "11069": "开封大学",
+ "11070": "洛阳理工学院",
+ "11071": "新乡学院",
+ "11072": "江汉大学",
+ "11074": "荆州理工职业学院",
+ "11075": "三峡大学",
+ "11077": "长沙学院",
+ "11078": "广州大学",
+ "11079": "成都大学",
+ "11080": "西安文理学院",
+ "11084": "北京科技大学延庆分校",
+ "11090": "北京京北职业技术学院",
+ "11092": "北京交通职业技术学院",
+ "11097": "首都经济贸易大学密云分校",
+ "11099": "北京工业大学通州分校",
+ "11100": "海南热带海洋学院",
+ "11104": "华北科技学院",
+ "11105": "中国人民警察大学",
+ "11106": "广州航海学院",
+ "11110": "广东警官学院",
+ "11113": "深圳职业技术学院",
+ "11114": "广东南华工商职业学院",
+ "11116": "成都工业学院",
+ "11117": "扬州大学",
+ "11121": "私立华联学院",
+ "11122": "三江学院",
+ "11149": "中华女子学院",
+ "11230": "齐齐哈尔医学院",
+ "11232": "北京信息科技大学",
+ "11236": "河北体育学院",
+ "11238": "石家庄职业技术学院",
+ "11242": "太原学院",
+ "11249": "辽阳职业技术学院",
+ "11250": "阜新高等专科学校",
+ "11258": "大连大学",
+ "11261": "吉林工商学院",
+ "11276": "南京工程学院",
+ "11287": "南京审计大学",
+ "11288": "沙洲职业工学院",
+ "11305": "蚌埠学院",
+ "11306": "池州学院",
+ "11308": "淮南联合大学",
+ "11311": "三明学院",
+ "11312": "龙岩学院",
+ "11313": "福建商学院",
+ "11314": "漳州职业技术学院",
+ "11315": "闽西职业技术学院",
+ "11317": "黎明职业大学",
+ "11318": "江西科技师范大学",
+ "11319": "南昌工程学院",
+ "11324": "山东警察学院",
+ "11326": "信阳农林学院",
+ "11329": "河南工学院",
+ "11330": "安阳工学院",
+ "11332": "湖北警官学院",
+ "11334": "湖北工业职业技术学院",
+ "11335": "鄂州职业大学",
+ "11336": "荆楚理工学院",
+ "11342": "湖南工程学院",
+ "11347": "仲恺农业工程学院",
+ "11349": "五邑大学",
+ "11350": "广西体育高等专科学校",
+ "11354": "梧州学院",
+ "11355": "南宁职业技术学院",
+ "11360": "攀枝花学院",
+ "11390": "玉溪师范学院",
+ "11391": "楚雄师范学院",
+ "11392": "云南警官学院",
+ "11393": "昆明学院",
+ "11395": "榆林学院",
+ "11396": "商洛学院",
+ "11397": "安康学院",
+ "11400": "西安培华学院",
+ "11406": "甘肃政法大学",
+ "11407": "北方民族大学",
+ "11413": "中国矿业大学(北京)",
+ "11414": "中国石油大学(北京)",
+ "11415": "中国地质大学(北京)",
+ "11417": "北京联合大学",
+ "11418": "北京城市学院",
+ "11420": "河北金融学院",
+ "11423": "张家口职业技术学院",
+ "11427": "集宁师范学院",
+ "11429": "内蒙古丰州职业学院",
+ "11430": "辽宁科技学院",
+ "11432": "辽宁警察学院",
+ "11436": "长春汽车工业高等专科学校",
+ "11437": "长春工程学院",
+ "11439": "吉林农业科技学院",
+ "11440": "长春金融高等专科学校",
+ "11441": "吉林警察学院",
+ "11445": "黑龙江工业学院",
+ "11446": "黑龙江东方学院",
+ "11449": "黑龙江职业学院",
+ "11458": "上海电机学院",
+ "11460": "南京晓庄学院",
+ "11462": "扬州市职业大学",
+ "11463": "江苏理工学院",
+ "11481": "浙江水利水电学院",
+ "11482": "浙江财经大学",
+ "11483": "浙江警察学院",
+ "11488": "衢州学院",
+ "11495": "福建警察学院",
+ "11498": "莆田学院",
+ "11499": "福建华南女子职业学院",
+ "11500": "辽宁省交通高等专科学校",
+ "11502": "福州职业技术学院",
+ "11504": "江西警察学院",
+ "11505": "九江职业大学",
+ "11508": "新余学院",
+ "11510": "山东交通学院",
+ "11517": "河南工程学院",
+ "11522": "焦作大学",
+ "11524": "武汉音乐学院",
+ "11527": "湖南城市学院",
+ "11528": "湖南工学院",
+ "11532": "湖南财政经济学院",
+ "11534": "湖南警察学院",
+ "11535": "湖南工业大学",
+ "11538": "湖南女子学院",
+ "11540": "广东金融学院",
+ "11545": "电子科技大学中山学院",
+ "11546": "广西科技师范学院",
+ "11548": "广西财经学院",
+ "11549": "南宁学院",
+ "11551": "重庆科技学院",
+ "11552": "四川旅游学院",
+ "11553": "成都纺织高等专科学校",
+ "11556": "文山学院",
+ "11557": "昆明冶金高等专科学校",
+ "11560": "西安财经大学",
+ "11561": "甘肃民族师范学院",
+ "11562": "兰州文理学院",
+ "11565": "乌鲁木齐职业大学",
+ "11585": "连云港师范高等专科学校",
+ "11600": "湖北经济学院",
+ "11607": "北部湾大学",
+ "11608": "广西水利电力职业技术学院",
+ "11625": "中国青年政治学院",
+ "11626": "北京青年政治学院",
+ "11629": "北华航天工业学院",
+ "11630": "山西省财政税务专科学校",
+ "11631": "河套学院",
+ "11632": "沈阳工程学院",
+ "11635": "哈尔滨信息工程学院",
+ "11641": "江苏海洋大学",
+ "11646": "宁波大学",
+ "11647": "浙江传媒学院",
+ "11652": "河南财政金融学院",
+ "11653": "南阳理工学院",
+ "11654": "武汉商学院",
+ "11656": "广东石油化工学院",
+ "11658": "海南师范大学",
+ "11660": "重庆理工大学",
+ "11661": "四川民族学院",
+ "11663": "黔南民族医学高等专科学校",
+ "11664": "西安邮电大学",
+ "11671": "桂林师范高等专科学校",
+ "11688": "山东工商学院",
+ "11709": "呼和浩特民族学院",
+ "11726": "长春大学",
+ "11731": "贵州商学院",
+ "11733": "上海出版印刷高等专科学校",
+ "11736": "西安航空学院",
+ "11765": "河南城建学院",
+ "11773": "广西职业技术学院",
+ "11775": "防灾科技学院",
+ "11777": "承德石油高等专科学校",
+ "11779": "辽东学院",
+ "11784": "仰恩大学",
+ "11785": "九江职业技术学院",
+ "11787": "濮阳职业技术学院",
+ "11788": "河南警察学院",
+ "11796": "武汉城市职业学院",
+ "11798": "武汉东湖学院",
+ "11799": "重庆工商大学",
+ "11800": "汉口学院",
+ "11802": "黑龙江工程学院",
+ "11805": "甘肃医学院",
+ "11806": "陇南师范高等专科学校",
+ "11807": "兰州工业学院",
+ "11808": "定西师范高等专科学校",
+ "11810": "海南医学院",
+ "11818": "新疆维吾尔医学专科学校",
+ "11819": "东莞理工学院",
+ "11821": "邢台职业技术学院",
+ "11823": "长春医学高等专科学校",
+ "11825": "桂林航天工业学院",
+ "11826": "西安电力高等专科学校",
+ "11827": "山东电力高等专科学校",
+ "11828": "郑州电力高等专科学校",
+ "11831": "首钢工学院",
+ "11832": "河北经贸大学",
+ "11833": "上海杉达学院",
+ "11834": "黄河科技学院",
+ "11835": "上海政法学院",
+ "11837": "桂林旅游学院",
+ "11838": "贺州学院",
+ "11840": "西安医学院",
+ "11841": "民办四川天一学院",
+ "11842": "浙江树人学院",
+ "11843": "九江学院",
+ "11845": "广东工业大学",
+ "11846": "广东外语外贸大学",
+ "11847": "佛山科学技术学院",
+ "11848": "重庆电力高等专科学校",
+ "11903": "中央司法警官学院",
+ "11998": "徐州工程学院",
+ "11999": "海南职业技术学院",
+ "12026": "大连民族大学",
+ "12034": "湖南第一师范学院",
+ "12036": "浙江交通职业技术学院",
+ "12040": "广州民航职业技术学院",
+ "12044": "上海第二工业大学",
+ "12046": "广州番禺职业技术学院",
+ "12047": "江苏经贸职业技术学院",
+ "12048": "南京特殊教育师范学院",
+ "12049": "吉林交通职业技术学院",
+ "12050": "上海商学院",
+ "12051": "湖北职业技术学院",
+ "12052": "武汉船舶职业技术学院",
+ "12053": "黑龙江建筑职业技术学院",
+ "12054": "九州职业技术学院",
+ "12055": "长沙航空职业技术学院",
+ "12056": "南通理工学院",
+ "12057": "包头职业技术学院",
+ "12058": "黄河水利职业技术学院",
+ "12059": "广东培正学院",
+ "12060": "广东松山职业技术学院",
+ "12061": "金华职业技术学院",
+ "12062": "日照职业技术学院",
+ "12063": "盘锦职业技术学院",
+ "12064": "成都航空职业技术学院",
+ "12065": "四川电力职业技术学院",
+ "12067": "许昌职业技术学院",
+ "12070": "曲阜远东职业技术学院",
+ "12072": "安徽商贸职业技术学院",
+ "12073": "安徽水利水电职业技术学院",
+ "12074": "阜阳职业技术学院",
+ "12078": "硅湖职业技术学院",
+ "12104": "柳州职业技术学院",
+ "12105": "天津中德应用技术大学",
+ "12106": "泰州职业技术学院",
+ "12107": "贵州警察学院",
+ "12111": "山西警察学院",
+ "12121": "南方医科大学",
+ "12212": "四川警察学院",
+ "12213": "南京森林警察学院",
+ "12214": "湖南医药学院",
+ "12215": "重庆工业职业技术学院",
+ "12216": "安徽新华学院",
+ "12217": "铜陵职业技术学院",
+ "12218": "民办万博科技职业学院",
+ "12219": "安徽警官职业学院",
+ "12220": "淮南职业技术学院",
+ "12222": "贵州交通职业技术学院",
+ "12223": "贵州航天职业技术学院",
+ "12300": "湖南大众传媒职业技术学院",
+ "12301": "永州职业技术学院",
+ "12302": "湖南铁道职业技术学院",
+ "12303": "湖南涉外经济学院",
+ "12304": "湖南科技职业学院",
+ "12306": "长春东方职业学院",
+ "12308": "海口经济学院",
+ "12309": "武昌首义学院",
+ "12310": "武昌理工学院",
+ "12317": "常州信息职业技术学院",
+ "12322": "广东农工商职业技术学院",
+ "12324": "青岛职业技术学院",
+ "12325": "广东新安职业技术学院",
+ "12326": "威海职业学院",
+ "12327": "佛山职业技术学院",
+ "12328": "山东职业学院",
+ "12329": "山东劳动职业技术学院",
+ "12330": "莱芜职业技术学院",
+ "12331": "山东女子学院",
+ "12332": "烟台南山学院",
+ "12334": "安徽工业经济职业技术学院",
+ "12335": "济宁职业技术学院",
+ "12336": "贵州电子信息职业技术学院",
+ "12343": "湖南生物机电职业技术学院",
+ "12344": "广西生态工程职业技术学院",
+ "12347": "恩施职业技术学院",
+ "12349": "云南国土资源职业学院",
+ "12352": "河北软件职业技术学院",
+ "12354": "襄阳职业技术学院",
+ "12356": "广西交通职业技术学院",
+ "12357": "云南交通职业技术学院",
+ "12362": "武汉生物工程学院",
+ "12364": "广西工业职业技术学院",
+ "12367": "河北石油职业技术学院",
+ "12369": "武汉工贸职业学院",
+ "12379": "广西国际商务职业技术学院",
+ "12382": "广西农业职业技术学院",
+ "12388": "长治职业技术学院",
+ "12389": "河北建材职业技术学院",
+ "12391": "潍坊职业学院",
+ "12392": "柳州铁道职业技术学院",
+ "12393": "昆明工业职业技术学院",
+ "12396": "烟台职业学院",
+ "12397": "湖南交通职业技术学院",
+ "12401": "湖南商务职业技术学院",
+ "12408": "河北政法职业学院",
+ "12410": "合肥通用职业技术学院",
+ "12415": "沧州职业技术学院",
+ "12418": "河北能源职业技术学院",
+ "12423": "湖南体育职业学院",
+ "12424": "石家庄铁路职业技术学院",
+ "12425": "湖南工程职业技术学院",
+ "12440": "东营职业学院",
+ "12441": "聊城职业技术学院",
+ "12443": "兴安职业技术学院",
+ "12448": "北京农业职业学院",
+ "12451": "北京政法职业学院",
+ "12453": "中国劳动关系学院",
+ "12481": "拉萨师范高等专科学校",
+ "12482": "克拉玛依职业技术学院",
+ "12484": "天津滨海职业学院",
+ "12487": "天津工程职业技术学院",
+ "12490": "黑龙江艺术职业学院",
+ "12493": "上海行健职业学院",
+ "12495": "上海城建职业学院",
+ "12497": "上海交通职业技术学院",
+ "12498": "上海海事职业技术学院",
+ "12499": "上海电子信息职业技术学院",
+ "12510": "陕西能源职业技术学院",
+ "12511": "甘肃建筑职业技术学院",
+ "12514": "新疆轻工职业技术学院",
+ "12539": "酒泉职业技术学院",
+ "12543": "保定职业技术学院",
+ "12544": "宁夏理工学院",
+ "12555": "云南农业职业技术学院",
+ "12556": "云南司法警官职业学院",
+ "12558": "云南文化艺术职业学院",
+ "12559": "云南体育运动职业技术学院",
+ "12560": "云南经济管理学院",
+ "12561": "北京财贸职业学院",
+ "12562": "青海卫生职业技术学院",
+ "12564": "北京北大方正软件职业技术学院",
+ "12565": "北京经贸职业学院",
+ "12566": "北京经济技术职业学院",
+ "12567": "北京戏曲艺术职业学院",
+ "12568": "北京汇佳职业学院",
+ "12569": "北京现代职业技术学院",
+ "12570": "新疆能源职业技术学院",
+ "12572": "广东科学技术职业学院",
+ "12573": "广东食品药品职业学院",
+ "12574": "广东东软学院",
+ "12575": "广州康大职业技术学院",
+ "12576": "珠海艺术职业学院",
+ "12577": "广东行政职业学院",
+ "12578": "广东体育职业技术学院",
+ "12581": "河南工业和信息化职业学院",
+ "12582": "河南水利与环境职业学院",
+ "12583": "上海震旦职业学院",
+ "12584": "上海民远职业技术学院",
+ "12586": "上海思博职业技术学院",
+ "12587": "上海立达学院",
+ "12588": "上海工艺美术职业学院",
+ "12591": "辽宁体育运动职业技术学院",
+ "12592": "辽宁职业学院",
+ "12593": "辽宁生态工程职业学院",
+ "12594": "沈阳职业技术学院",
+ "12595": "辽宁理工职业大学",
+ "12596": "保险职业学院",
+ "12597": "湖南外贸职业学院",
+ "12598": "湖南网络工程职业学院",
+ "12599": "湘潭大学兴湘学院",
+ "12600": "邵阳职业技术学院",
+ "12601": "湖南司法警官职业学院",
+ "12603": "长沙商贸旅游职业技术学院",
+ "12604": "湖南工业大学科技学院",
+ "12605": "重庆三峡职业学院",
+ "12606": "重庆工贸职业技术学院",
+ "12607": "重庆机电职业技术大学",
+ "12608": "重庆工程学院",
+ "12609": "重庆电子工程职业学院",
+ "12616": "重庆城市科技学院",
+ "12617": "华南理工大学广州学院",
+ "12618": "广州大学华软软件学院",
+ "12619": "广州南方学院",
+ "12620": "广东外语外贸大学南国商学院",
+ "12621": "广东财经大学华商学院",
+ "12622": "湛江科技学院",
+ "12623": "华南农业大学珠江学院",
+ "12625": "福建林业职业技术学院",
+ "12626": "福建信息职业技术学院",
+ "12627": "福建水利电力职业技术学院",
+ "12628": "福建电力职业技术学院",
+ "12629": "厦门海洋职业技术学院",
+ "12630": "福建农业职业技术学院",
+ "12631": "厦门医学院",
+ "12633": "福建卫生职业技术学院",
+ "12634": "泉州医学高等专科学校",
+ "12635": "成都职业技术学院",
+ "12636": "成都东软学院",
+ "12637": "四川化工职业技术学院",
+ "12638": "四川水利职业技术学院",
+ "12639": "南充职业技术学院",
+ "12640": "内江职业技术学院",
+ "12641": "四川航天职业技术学院",
+ "12642": "四川邮电职业技术学院",
+ "12645": "宁波城市职业技术学院",
+ "12647": "浙江同济科技职业学院",
+ "12649": "湖南科技大学潇湘学院",
+ "12650": "南华大学船山学院",
+ "12651": "湘潭理工学院",
+ "12652": "湖南师范大学树达学院",
+ "12653": "湖南农业大学东方科技学院",
+ "12656": "中南林业科技大学涉外学院",
+ "12657": "湖南文理学院芙蓉学院",
+ "12658": "湖南理工学院南湖学院",
+ "12659": "衡阳师范学院南岳学院",
+ "12660": "湖南工程学院应用技术学院",
+ "12661": "湖南中医药大学湘杏学院",
+ "12662": "吉首大学张家界学院",
+ "12664": "辽宁省残疾人中等职业技术学校",
+ "12668": "广州理工学院",
+ "12670": "呼和浩特职业学院",
+ "12671": "包头轻工职业技术学院",
+ "12673": "内蒙古电子信息职业技术学院",
+ "12674": "内蒙古机电职业技术学院",
+ "12675": "内蒙古化工职业学院",
+ "12676": "内蒙古商贸职业学院",
+ "12677": "锡林郭勒职业学院",
+ "12678": "江苏联合职业技术学院",
+ "12679": "江苏海事职业技术学院",
+ "12680": "应天职业技术学院",
+ "12681": "无锡科技职业学院",
+ "12682": "江苏医药职业学院",
+ "12683": "扬州环境资源职业技术学院",
+ "12684": "南通科技职业学院",
+ "12685": "苏州经贸职业技术学院",
+ "12686": "苏州工业职业技术学院",
+ "12687": "苏州托普信息职业技术学院",
+ "12688": "苏州卫生职业技术学院",
+ "12689": "东南大学成贤学院",
+ "12702": "无锡商业职业技术学院",
+ "12703": "江苏航运职业技术学院",
+ "12704": "山西艺术职业学院",
+ "12708": "福州英华职业学院",
+ "12709": "厦门华厦学院",
+ "12710": "闽南理工学院",
+ "12711": "泉州纺织服装职业学院",
+ "12712": "西安欧亚学院",
+ "12713": "西安外事学院",
+ "12714": "西安翻译学院",
+ "12715": "西京学院",
+ "12716": "宁夏民族职业技术学院",
+ "12717": "三亚城市职业学院",
+ "12718": "大庆职业学院",
+ "12719": "天津渤海职业技术学院",
+ "12720": "天津电子信息职业技术学院",
+ "12721": "天津机电职业技术学院",
+ "12722": "天津现代职业技术学院",
+ "12723": "天津公安警官职业学院",
+ "12724": "黑龙江林业职业技术学院",
+ "12725": "黑龙江农业职业技术学院",
+ "12726": "黑龙江农业工程职业学院",
+ "12727": "黑龙江农垦职业学院",
+ "12728": "黑龙江司法警官职业学院",
+ "12729": "齐齐哈尔工程学院",
+ "12730": "大连商务职业学院",
+ "12732": "天津轻工职业技术学院",
+ "12733": "北京科技经营管理学院",
+ "12734": "新疆警察学院",
+ "12735": "铁道警察学院",
+ "12736": "广东职业技术学院",
+ "12737": "荆州职业技术学院",
+ "12738": "武汉工程职业技术学院",
+ "12739": "湖南环境生物职业技术学院",
+ "12740": "仙桃职业学院",
+ "12741": "广东建设职业技术学院",
+ "12742": "广东女子职业技术学院",
+ "12743": "广东机电职业技术学院",
+ "12744": "湖北轻工职业技术学院",
+ "12745": "商丘职业技术学院",
+ "12746": "郑州科技学院",
+ "12747": "郑州工业应用技术学院",
+ "12748": "平顶山工业职业技术学院",
+ "12749": "广东岭南职业技术学院",
+ "12750": "周口职业技术学院",
+ "12751": "四川机电职业技术学院",
+ "12752": "湖北交通职业技术学院",
+ "12753": "绵阳职业技术学院",
+ "12754": "重庆海联职业技术学院",
+ "12755": "重庆信息技术职业学院",
+ "12756": "重庆传媒职业学院",
+ "12757": "重庆警察学院",
+ "12758": "重庆城市管理职业学院",
+ "12759": "重庆工程职业技术学院",
+ "12761": "四川交通职业技术学院",
+ "12762": "四川工商职业技术学院",
+ "12763": "四川工程职业技术学院",
+ "12764": "四川建筑职业技术学院",
+ "12765": "汕尾职业技术学院",
+ "12766": "江西工程学院",
+ "12767": "达州职业技术学院",
+ "12768": "济源职业技术学院",
+ "12770": "罗定职业技术学院",
+ "12771": "阳江职业技术学院",
+ "12772": "河源职业技术学院",
+ "12773": "秦皇岛职业技术学院",
+ "12774": "晋城职业技术学院",
+ "12775": "山西建筑职业技术学院",
+ "12776": "山西药科职业学院",
+ "12778": "山西交通职业技术学院",
+ "12779": "山西应用科技学院",
+ "12780": "大同煤炭职业技术学院",
+ "12781": "河南司法警官职业学院",
+ "12782": "石家庄工程职业学院",
+ "12783": "石家庄城市经济职业学院",
+ "12784": "河北传媒学院",
+ "12785": "唐山职业技术学院",
+ "12786": "衡水职业技术学院",
+ "12787": "唐山工业职业技术学院",
+ "12788": "天津商务职业学院",
+ "12789": "浙江工商职业技术学院",
+ "12790": "台州职业技术学院",
+ "12791": "浙江工贸职业技术学院",
+ "12792": "浙江越秀外国语学院",
+ "12793": "鹤壁职业技术学院",
+ "12794": "河南工业职业技术学院",
+ "12795": "南昌理工学院",
+ "12796": "河北工程技术学院",
+ "12797": "内蒙古警察职业学院",
+ "12798": "上海济光职业技术学院",
+ "12799": "上海建桥学院",
+ "12800": "上海工商外国语职业学院",
+ "12801": "上海科学技术职业学院",
+ "12802": "吉利学院",
+ "12803": "天津国土资源和房屋职业学院",
+ "12804": "南京交通职业技术学院",
+ "12805": "江苏电子信息职业学院",
+ "12806": "江苏农牧科技职业学院",
+ "12807": "常州纺织服装职业技术学院",
+ "12808": "苏州农业职业技术学院",
+ "12809": "苏州工业园区职业技术学院",
+ "12810": "安徽文达信息工程学院",
+ "12811": "安徽工贸职业技术学院",
+ "12812": "宿州职业技术学院",
+ "12813": "六安职业技术学院",
+ "12814": "安徽电子信息职业技术学院",
+ "12815": "民办合肥经济技术职业学院",
+ "12816": "安徽交通职业技术学院",
+ "12817": "安徽体育运动职业技术学院",
+ "12818": "滨州职业学院",
+ "12819": "山东科技职业学院",
+ "12820": "重庆建筑科技职业学院",
+ "12821": "安顺职业技术学院",
+ "12822": "黔东南民族职业技术学院",
+ "12823": "黔南民族职业技术学院",
+ "12824": "遵义职业技术学院",
+ "12825": "云南科技信息职业学院",
+ "12826": "西双版纳职业技术学院",
+ "12827": "陕西国防工业职业技术学院",
+ "12828": "西安航空职业技术学院",
+ "12829": "陕西财经职业技术学院",
+ "12830": "陕西交通职业技术学院",
+ "12831": "陕西职业技术学院",
+ "12832": "兰州外语职业学院",
+ "12833": "兰州职业技术学院",
+ "12834": "甘肃警察职业学院",
+ "12835": "甘肃林业职业技术学院",
+ "12836": "甘肃工业职业技术学院",
+ "12837": "宁夏工业职业学院",
+ "12838": "昌吉职业技术学院",
+ "12841": "山东服装职业学院",
+ "12842": "德州科技职业学院",
+ "12843": "潍坊科技学院",
+ "12844": "山东力明科技职业学院",
+ "12845": "湖南邮电职业技术学院",
+ "12846": "湘潭医卫职业技术学院",
+ "12847": "郴州职业技术学院",
+ "12848": "娄底职业技术学院",
+ "12849": "张家界航空工业职业技术学院",
+ "12850": "贵州城市职业学院",
+ "12851": "昆明艺术职业学院",
+ "12852": "青海警官职业学院",
+ "12860": "浙江医药高等专科学校",
+ "12861": "浙江机电职业技术学院",
+ "12862": "浙江建设职业技术学院",
+ "12863": "浙江艺术职业学院",
+ "12864": "浙江经贸职业技术学院",
+ "12865": "浙江商业职业技术学院",
+ "12866": "浙江经济职业技术学院",
+ "12867": "浙江旅游职业学院",
+ "12868": "浙江育英职业技术学院",
+ "12869": "浙江警官职业学院",
+ "12870": "浙江金融职业学院",
+ "12871": "浙江工业职业技术学院",
+ "12872": "杭州职业技术学院",
+ "12874": "嘉兴职业技术学院",
+ "12875": "湖州职业技术学院",
+ "12876": "绍兴职业技术学院",
+ "12877": "衢州职业技术学院",
+ "12878": "丽水职业技术学院",
+ "12880": "天津医学高等专科学校",
+ "12881": "天津开发区职业技术学院",
+ "12882": "天津艺术职业学院",
+ "12883": "天津交通职业学院",
+ "12884": "邢台医学高等专科学校",
+ "12885": "河北艺术职业学院",
+ "12887": "河北旅游职业学院",
+ "12888": "山西机电职业技术学院",
+ "12890": "山西财贸职业技术学院",
+ "12891": "山西林业职业技术学院",
+ "12892": "山西水利职业技术学院",
+ "12893": "阳泉职业技术学院",
+ "12894": "内蒙古体育职业学院",
+ "12895": "辽宁金融职业学院",
+ "12896": "辽宁轨道交通职业学院",
+ "12897": "辽宁广告职业学院",
+ "12898": "辽宁机电职业技术学院",
+ "12899": "辽宁经济职业技术学院",
+ "12900": "辽宁石化职业技术学院",
+ "12901": "吉林司法警官职业学院",
+ "12902": "吉林电子信息职业技术学院",
+ "12903": "吉林工业职业技术学院",
+ "12904": "吉林工程职业学院",
+ "12905": "鹤岗师范高等专科学校",
+ "12906": "哈尔滨电力职业技术学院",
+ "12907": "哈尔滨铁道职业技术学院",
+ "12908": "大兴安岭职业学院",
+ "12910": "黑龙江农业经济职业学院",
+ "12911": "哈尔滨职业技术学院",
+ "12912": "上海农林职业技术学院",
+ "12913": "上海邦德职业技术学院",
+ "12914": "上海兴伟学院",
+ "12915": "上海中侨职业技术大学",
+ "12917": "泰州学院",
+ "12918": "太湖创意职业技术学院",
+ "12919": "炎黄职业技术学院",
+ "12920": "南京科技职业学院",
+ "12921": "正德职业技术学院",
+ "12922": "钟山职业技术学院",
+ "12923": "无锡南洋职业技术学院",
+ "12924": "安徽中医药高等专科学校",
+ "12925": "安徽医学高等专科学校",
+ "12926": "亳州学院",
+ "12927": "泉州华光职业学院",
+ "12928": "泉州职业技术大学",
+ "12929": "江西司法警官职业学院",
+ "12930": "江西陶瓷工艺美术职业技术学院",
+ "12931": "渤海船舶职业学院",
+ "12932": "江西旅游商贸职业学院",
+ "12933": "江西电力职业技术学院",
+ "12934": "江西环境工程职业学院",
+ "12936": "江西艺术职业学院",
+ "12937": "鹰潭职业技术学院",
+ "12938": "江西应用科技学院",
+ "12939": "江西信息应用职业技术学院",
+ "12940": "江西交通职业技术学院",
+ "12941": "江西财经职业学院",
+ "12942": "江西应用技术职业学院",
+ "12943": "江西现代职业技术学院",
+ "12944": "江西工业工程职业技术学院",
+ "12945": "山东圣翰财贸职业学院",
+ "12946": "山东水利职业学院",
+ "12947": "山东畜牧兽医职业学院",
+ "12948": "郑州澍青医学高等专科学校",
+ "12949": "郑州师范学院",
+ "12950": "焦作师范高等专科学校",
+ "12951": "湖北中医药高等专科学校",
+ "12952": "武汉航海职业技术学院",
+ "12953": "广东邮电职业技术学院",
+ "12954": "汕头职业技术学院",
+ "12956": "揭阳职业技术学院",
+ "12957": "深圳信息职业技术学院",
+ "12958": "清远职业技术学院",
+ "12959": "广东工贸职业技术学院",
+ "12960": "广东司法警官职业学院",
+ "12961": "广东亚视演艺职业学院",
+ "12962": "广东省外语艺术职业学院",
+ "12963": "四川托普信息技术职业学院",
+ "12964": "四川国际标榜职业学院",
+ "12965": "成都农业科技职业学院",
+ "12966": "宜宾职业技术学院",
+ "12967": "泸州职业技术学院",
+ "12968": "眉山职业技术学院",
+ "12969": "成都艺术职业大学",
+ "12970": "四川职业技术学院",
+ "12971": "玉溪农业职业技术学院",
+ "12972": "青海畜牧兽医职业技术学院",
+ "12973": "青海交通职业技术学院",
+ "12974": "青海建筑职业技术学院",
+ "12975": "伊犁职业技术学院",
+ "12976": "江西机电职业技术学院",
+ "12977": "武汉铁路职业技术学院",
+ "12978": "武汉软件工程职业学院",
+ "12979": "湖北三峡职业技术学院",
+ "12980": "随州职业技术学院",
+ "12981": "武汉电力职业技术学院",
+ "12982": "湖北水利水电职业技术学院",
+ "12983": "湖北城市建设职业技术学院",
+ "12984": "武汉警官职业学院",
+ "12985": "湖北生物科技职业学院",
+ "12986": "湖北开放职业学院",
+ "12987": "武汉科技职业学院",
+ "12988": "武汉外语外事职业学院",
+ "12989": "武汉信息传播职业技术学院",
+ "12990": "武昌职业学院",
+ "12991": "武汉商贸职业学院",
+ "12992": "闽南科技学院",
+ "12993": "福州工商学院",
+ "13001": "宁波财经学院",
+ "13002": "浙江东方职业技术学院",
+ "13003": "义乌工商职业技术学院",
+ "13005": "青岛飞洋职业技术学院",
+ "13006": "山东英才学院",
+ "13007": "东营科技职业学院",
+ "13008": "山东交通职业学院",
+ "13009": "淄博职业学院",
+ "13010": "山东外贸职业学院",
+ "13011": "青岛酒店管理职业技术学院",
+ "13012": "山东信息职业技术学院",
+ "13014": "青岛港湾职业技术学院",
+ "13015": "青岛恒星科技学院",
+ "13017": "江南影视艺术职业学院",
+ "13021": "浙大城市学院",
+ "13022": "浙大宁波理工学院",
+ "13023": "杭州医学院",
+ "13025": "浙江纺织服装职业技术学院",
+ "13026": "杭州科技职业技术学院",
+ "13027": "浙江长征职业技术学院",
+ "13028": "嘉兴南洋职业技术学院",
+ "13029": "浙江广厦建设职业技术大学",
+ "13030": "杭州万向职业技术学院",
+ "13031": "长沙环境保护职业技术学院",
+ "13032": "湖南艺术职业学院",
+ "13033": "湖南机电职业技术学院",
+ "13036": "长沙职业技术学院",
+ "13037": "怀化职业技术学院",
+ "13038": "岳阳职业技术学院",
+ "13039": "常德职业技术学院",
+ "13041": "长沙南方职业学院",
+ "13042": "潇湘职业学院",
+ "13043": "湖南化工职业技术学院",
+ "13044": "湖南城建职业技术学院",
+ "13045": "湖南石油化工职业技术学院",
+ "13048": "乐山职业技术学院",
+ "13049": "雅安职业技术学院",
+ "13052": "贵州工业职业技术学院",
+ "13053": "贵州电力职业技术学院",
+ "13054": "六盘水职业技术学院",
+ "13055": "铜仁职业技术学院",
+ "13058": "合肥职业技术学院",
+ "13059": "滁州职业技术学院",
+ "13060": "池州职业技术学院",
+ "13061": "宣城职业技术学院",
+ "13062": "安徽广播影视职业技术学院",
+ "13064": "民办合肥滨湖职业技术学院",
+ "13065": "安徽外国语学院",
+ "13070": "石家庄财经职业学院",
+ "13071": "河北交通职业技术学院",
+ "13072": "河北化工医药职业技术学院",
+ "13073": "石家庄信息工程职业学院",
+ "13074": "河北对外经贸职业学院",
+ "13075": "河北美术学院",
+ "13086": "宁夏职业技术学院",
+ "13087": "宁夏工商职业技术学院",
+ "13088": "宁夏财经职业技术学院",
+ "13089": "宁夏警官职业学院",
+ "13093": "阿克苏职业技术学院",
+ "13094": "巴音郭楞职业技术学院",
+ "13100": "金肯职业技术学院",
+ "13101": "常州工业职业技术学院",
+ "13102": "常州工程职业技术学院",
+ "13103": "江苏农林职业技术学院",
+ "13104": "江苏食品药品职业技术学院",
+ "13105": "建东职业技术学院",
+ "13106": "南京铁道职业技术学院",
+ "13107": "徐州工业职业技术学院",
+ "13108": "江苏信息职业技术学院",
+ "13110": "宿迁职业技术学院",
+ "13112": "南京信息职业技术学院",
+ "13113": "江海职业技术学院",
+ "13114": "常州机电职业技术学院",
+ "13115": "厦门工学院",
+ "13121": "西安思源学院",
+ "13122": "西安高新科技职业学院",
+ "13123": "陕西国际商贸学院",
+ "13124": "西安城市建设职业学院",
+ "13125": "陕西服装工程学院",
+ "13136": "云南能源职业技术学院",
+ "13137": "江阴职业技术学院",
+ "13138": "广西建设职业技术学院",
+ "13151": "宁夏建设职业技术学院",
+ "13161": "长春职业技术学院",
+ "13171": "临汾职业技术学院",
+ "13177": "北京师范大学珠海分校",
+ "13188": "武汉晴川学院",
+ "13198": "大连理工大学城市学院",
+ "13201": "沈阳工学院",
+ "13203": "大连工业大学艺术与信息工程学院",
+ "13207": "大连科技学院",
+ "13208": "沈阳城市建设学院",
+ "13212": "大连医科大学中山学院",
+ "13213": "锦州医科大学医疗学院",
+ "13215": "辽宁师范大学海华学院",
+ "13217": "辽宁理工学院",
+ "13218": "大连财经学院",
+ "13220": "沈阳城市学院",
+ "13234": "湖北大学知行学院",
+ "13235": "武汉科技大学城市学院",
+ "13236": "三峡大学科技学院",
+ "13237": "武汉文理学院",
+ "13238": "湖北工业大学工程技术学院",
+ "13239": "武汉工程大学邮电与信息工程学院",
+ "13240": "武汉纺织大学外经贸学院",
+ "13241": "武昌工学院",
+ "13242": "武汉工商学院",
+ "13245": "长江大学工程技术学院",
+ "13246": "长江大学文理学院",
+ "13247": "湖北商贸学院",
+ "13248": "湖北汽车工业学院科技学院",
+ "13249": "湖北医药学院药护学院",
+ "13250": "湖北民族大学科技学院",
+ "13251": "湖北经济学院法商学院",
+ "13253": "武汉体育学院体育科技学院",
+ "13256": "湖北师范大学文理学院",
+ "13257": "湖北文理学院理工学院",
+ "13258": "湖北工程学院新技术学院",
+ "13262": "文华学院",
+ "13263": "湖北艺术职业学院",
+ "13264": "武汉交通职业学院",
+ "13265": "咸宁职业技术学院",
+ "13266": "长江工程职业技术学院",
+ "13275": "浙江工业大学之江学院",
+ "13276": "浙江师范大学行知学院",
+ "13277": "宁波大学科学技术学院",
+ "13279": "杭州电子科技大学信息工程学院",
+ "13280": "浙江理工大学科技与艺术学院",
+ "13282": "浙江海洋大学东海科学技术学院",
+ "13283": "浙江农林大学暨阳学院",
+ "13284": "温州医科大学仁济学院",
+ "13285": "浙江中医药大学滨江学院",
+ "13286": "杭州师范大学钱江学院",
+ "13287": "湖州学院",
+ "13288": "绍兴文理学院元培学院",
+ "13289": "温州理工学院",
+ "13290": "浙江工商大学杭州商学院",
+ "13291": "嘉兴南湖学院",
+ "13292": "中国计量大学现代科技学院",
+ "13294": "浙江财经大学东方学院",
+ "13296": "黑龙江外国语学院",
+ "13298": "黑龙江财经学院",
+ "13299": "哈尔滨石油学院",
+ "13300": "黑龙江工商学院",
+ "13301": "哈尔滨远东理工学院",
+ "13302": "哈尔滨传媒职业学院",
+ "13303": "哈尔滨剑桥学院",
+ "13304": "黑龙江工程学院昆仑旅游学院",
+ "13306": "哈尔滨广厦学院",
+ "13307": "哈尔滨华德学院",
+ "13316": "山东胜利职业学院",
+ "13317": "山东经贸职业学院",
+ "13318": "山东工业职业学院",
+ "13319": "山东化工职业学院",
+ "13320": "青岛黄海学院",
+ "13321": "青岛求实职业技术学院",
+ "13322": "山东现代学院",
+ "13323": "济南职业学院",
+ "13324": "山东协和学院",
+ "13325": "宁夏大学新华学院",
+ "13326": "云南大学滇池学院",
+ "13328": "云南大学旅游文化学院",
+ "13329": "昆明理工大学津桥学院",
+ "13330": "云南师范大学商学院",
+ "13331": "昆明文理学院",
+ "13332": "昆明医科大学海源学院",
+ "13333": "云南艺术学院文华学院",
+ "13336": "安徽电气工程职业技术学院",
+ "13337": "安徽冶金科技职业学院",
+ "13338": "安徽城市管理职业学院",
+ "13339": "安徽机电职业技术学院",
+ "13340": "安徽工商职业学院",
+ "13341": "安徽中澳科技职业学院",
+ "13342": "阜阳科技职业学院",
+ "13343": "亳州职业技术学院",
+ "13344": "安徽国防科技职业学院",
+ "13345": "安庆职业技术学院",
+ "13346": "安徽艺术职业学院",
+ "13355": "烟台工程职业技术学院",
+ "13356": "山东工程职业技术大学",
+ "13359": "烟台理工学院",
+ "13373": "聊城大学东昌学院",
+ "13378": "青岛城市学院",
+ "13379": "潍坊理工学院",
+ "13383": "山东财经大学燕山学院",
+ "13386": "山东石油化工学院",
+ "13387": "山东外国语职业技术大学",
+ "13388": "潍坊工商职业学院",
+ "13389": "德州职业技术学院",
+ "13390": "枣庄科技职业学院",
+ "13391": "河北科技学院",
+ "13392": "保定电力职业技术学院",
+ "13393": "河北机电职业技术学院",
+ "13394": "渤海石油职业学院",
+ "13395": "廊坊职业技术学院",
+ "13396": "唐山科技职业技术学院",
+ "13397": "石家庄邮电职业技术学院",
+ "13398": "河北公安警察职业学院",
+ "13399": "石家庄工商职业学院",
+ "13400": "石家庄理工职业学院",
+ "13401": "石家庄医学高等专科学校",
+ "13402": "河北外国语学院",
+ "13403": "石家庄科技信息职业学院",
+ "13404": "河北大学工商学院",
+ "13408": "华北理工大学轻工学院",
+ "13409": "河北科技大学理工学院",
+ "13411": "河北师范大学汇华学院",
+ "13414": "河北经贸大学经济管理学院",
+ "13415": "河北医科大学临床学院",
+ "13417": "华北电力大学科技学院",
+ "13418": "江西服装学院",
+ "13419": "江西科技职业学院",
+ "13420": "南昌职业大学",
+ "13421": "南昌工学院",
+ "13422": "江西外语外贸职业学院",
+ "13423": "江西工业贸易职业技术学院",
+ "13424": "宜春职业技术学院",
+ "13425": "江西应用工程职业学院",
+ "13426": "江西生物科技职业学院",
+ "13427": "江西建设职业技术学院",
+ "13428": "抚州职业技术学院",
+ "13429": "南昌大学科学技术学院",
+ "13430": "南昌大学共青学院",
+ "13431": "华东交通大学理工学院",
+ "13432": "东华理工大学长江学院",
+ "13433": "南昌航空大学科技学院",
+ "13434": "江西理工大学应用科学学院",
+ "13435": "景德镇艺术职业大学",
+ "13436": "江西农业大学南昌商学院",
+ "13437": "江西中医药大学科技学院",
+ "13438": "江西师范大学科学技术学院",
+ "13439": "赣南师范大学科技学院",
+ "13440": "江西科技师范大学理工学院",
+ "13441": "江西财经大学现代经济管理学院",
+ "13447": "黑龙江生物科技职业学院",
+ "13448": "黑龙江商业职业学院",
+ "13449": "黑龙江公安警官职业学院",
+ "13450": "黑龙江信息技术职业学院",
+ "13451": "哈尔滨城市职业学院",
+ "13453": "黑龙江农垦科技职业学院",
+ "13468": "阳光学院",
+ "13469": "厦门大学嘉庚学院",
+ "13470": "福州大学至诚学院",
+ "13471": "集美大学诚毅学院",
+ "13472": "福建师范大学协和学院",
+ "13497": "郑州财经学院",
+ "13498": "黄河交通学院",
+ "13499": "河南检察职业学院",
+ "13500": "商丘工学院",
+ "13501": "河南大学民生学院",
+ "13502": "中原科技学院",
+ "13503": "信阳学院",
+ "13504": "安阳学院",
+ "13505": "新乡医学院三全学院",
+ "13506": "新乡工程学院",
+ "13507": "郑州工商学院",
+ "13508": "郑州经贸学院",
+ "13510": "西北师范大学知行学院",
+ "13511": "兰州工商学院",
+ "13512": "兰州财经大学长青学院",
+ "13514": "兰州博文科技学院",
+ "13515": "兰州信息科技学院",
+ "13518": "武威职业学院",
+ "13519": "甘肃交通职业技术学院",
+ "13520": "广西警察学院",
+ "13522": "广西现代职业技术学院",
+ "13523": "北海职业学院",
+ "13524": "北海艺术设计学院",
+ "13526": "桂林山水职业学院",
+ "13528": "山西职业技术学院",
+ "13530": "山西金融职业学院",
+ "13532": "太原城市职业技术学院",
+ "13533": "山西大学商务学院",
+ "13534": "山西工学院",
+ "13535": "山西农业大学信息学院",
+ "13537": "山西师范大学现代文理学院",
+ "13538": "中北大学信息商务学院",
+ "13541": "山西信息职业技术学院",
+ "13548": "重庆人文科技学院",
+ "13558": "新疆理工学院",
+ "13559": "新疆农业大学科学技术学院",
+ "13560": "新疆第二医学院",
+ "13561": "新疆科技学院",
+ "13562": "新疆建设职业技术学院",
+ "13564": "河南质量工程职业学院",
+ "13565": "郑州信息科技职业学院",
+ "13566": "陕西铁路工程职业技术学院",
+ "13567": "宝鸡职业技术学院",
+ "13568": "陕西航空职业技术学院",
+ "13569": "西安交通工程学院",
+ "13570": "陕西电子信息职业技术学院",
+ "13571": "无锡太湖学院",
+ "13573": "金陵科技学院",
+ "13575": "海南软件职业技术学院",
+ "13576": "海南政法职业学院",
+ "13577": "海南外国语职业学院",
+ "13578": "河北工程大学科信学院",
+ "13579": "中国矿业大学徐海学院",
+ "13584": "河北工业大学城市学院",
+ "13588": "重庆外语外事学院",
+ "13589": "重庆对外经贸学院",
+ "13590": "重庆财经学院",
+ "13591": "重庆工商大学派斯学院",
+ "13592": "燕山大学里仁学院",
+ "13593": "石家庄铁道大学四方学院",
+ "13594": "河北地质大学华信学院",
+ "13595": "河北农业大学现代科技学院",
+ "13596": "华北理工大学冀唐学院",
+ "13597": "太原科技大学华科学院",
+ "13598": "山西医科大学晋祠学院",
+ "13599": "大连艺术学院",
+ "13600": "长春光华学院",
+ "13601": "长春工业大学人文信息学院",
+ "13602": "长春理工大学光电信息学院",
+ "13603": "长春财经学院",
+ "13604": "吉林建筑科技学院",
+ "13605": "长春建筑学院",
+ "13606": "长春科技学院",
+ "13607": "吉林动画学院",
+ "13608": "山西财经大学华商学院",
+ "13609": "辽宁中医药大学杏林学院",
+ "13610": "辽宁何氏医学院",
+ "13611": "蚌埠工商学院",
+ "13612": "安徽大学江淮学院",
+ "13613": "安徽信息工程学院",
+ "13614": "马鞍山学院",
+ "13615": "合肥城市学院",
+ "13616": "合肥经济学院",
+ "13617": "安徽师范大学皖江学院",
+ "13618": "安徽医科大学临床医学院",
+ "13619": "阜阳师范大学信息工程学院",
+ "13620": "淮北理工学院",
+ "13621": "沈阳科技学院",
+ "13622": "吉林师范大学博达学院",
+ "13623": "长春大学旅游学院",
+ "13624": "泰山科技学院",
+ "13627": "重庆移通学院",
+ "13628": "新疆政法学院",
+ "13629": "首都师范大学科德学院",
+ "13630": "北京工商大学嘉华学院",
+ "13631": "大连东软信息学院",
+ "13632": "上海视觉艺术学院",
+ "13634": "武汉学院",
+ "13635": "长沙理工大学城南学院",
+ "13636": "上海外国语大学贤达经济人文学院",
+ "13637": "温州商学院",
+ "13638": "广西大学行健文理学院",
+ "13639": "柳州工学院",
+ "13640": "广西民族大学相思湖学院",
+ "13641": "广西师范大学漓江学院",
+ "13642": "南宁师范大学师园学院",
+ "13643": "广西中医药大学赛恩斯新医药学院",
+ "13644": "桂林电子科技大学信息科技学院",
+ "13645": "桂林理工大学博文管理学院",
+ "13646": "南京大学金陵学院",
+ "13647": "贵州中医药大学时珍学院",
+ "13648": "贵州财经大学商务学院",
+ "13649": "贵州大学科技学院",
+ "13650": "贵州大学明德学院",
+ "13651": "贵州民族大学人文科技学院",
+ "13652": "贵州师范大学求是学院",
+ "13653": "遵义医科大学医学与科技学院",
+ "13654": "南京理工大学紫金学院",
+ "13655": "南京航空航天大学金城学院",
+ "13656": "广州华立学院",
+ "13657": "广州大学松田学院",
+ "13658": "天津外国语大学滨海外事学院",
+ "13659": "天津体育学院运动与文化艺术学院",
+ "13660": "天津商业大学宝德学院",
+ "13661": "天津医科大学临床医学院",
+ "13662": "东北师范大学人文学院",
+ "13663": "南开大学滨海学院",
+ "13664": "武汉工程科技学院",
+ "13665": "电子科技大学成都学院",
+ "13666": "武汉华夏理工学院",
+ "13667": "广州商学院",
+ "13668": "成都理工大学工程技术学院",
+ "13669": "四川传媒学院",
+ "13670": "成都银杏酒店管理学院",
+ "13671": "成都文理学院",
+ "13672": "四川工商学院",
+ "13673": "四川外国语大学成都学院",
+ "13674": "青海大学昆仑学院",
+ "13675": "北京理工大学珠海学院",
+ "13676": "贵州医科大学神奇民族医药学院",
+ "13677": "西安交通大学城市学院",
+ "13678": "西北大学现代学院",
+ "13679": "西安建筑科技大学华清学院",
+ "13680": "西安财经大学行知学院",
+ "13681": "陕西科技大学镐京学院",
+ "13682": "西安工商学院",
+ "13683": "延安大学西安创新学院",
+ "13684": "珠海科技学院",
+ "13685": "西安电子科技大学长安学院",
+ "13686": "武汉传媒学院",
+ "13687": "南京传媒学院",
+ "13688": "浙江邮电职业技术学院",
+ "13690": "河北司法警官职业学院",
+ "13691": "山西工商学院",
+ "13692": "山西体育职业学院",
+ "13693": "山西警官职业学院",
+ "13694": "山西国际商务职业学院",
+ "13695": "潞安职业技术学院",
+ "13696": "太原旅游职业学院",
+ "13697": "山西旅游职业学院",
+ "13698": "山西管理职业学院",
+ "13699": "乌兰察布职业学院",
+ "13700": "天津工业职业学院",
+ "13701": "天津石油职业技术学院",
+ "13702": "天津城市职业学院",
+ "13703": "北京科技职业学院",
+ "13705": "成都医学院",
+ "13706": "吉林医药学院",
+ "13707": "广东文艺职业学院",
+ "13708": "广州体育职业技术学院",
+ "13709": "广州工程技术职业学院",
+ "13710": "中山火炬职业技术学院",
+ "13711": "江门职业技术学院",
+ "13712": "茂名职业技术学院",
+ "13713": "珠海城市职业技术学院",
+ "13714": "广州工商学院",
+ "13715": "广州涉外经济职业技术学院",
+ "13716": "广州南洋理工职业学院",
+ "13717": "广州科技职业技术大学",
+ "13718": "惠州经济职业技术学院",
+ "13719": "广东科技学院",
+ "13720": "广东理工学院",
+ "13721": "广东工商职业技术大学",
+ "13726": "新疆现代职业技术学院",
+ "13727": "新疆天山职业技术大学",
+ "13728": "北京培黎职业学院",
+ "13729": "黑龙江旅游职业技术学院",
+ "13730": "黑龙江三江美术职业学院",
+ "13731": "黑龙江生态工程职业学院",
+ "13732": "黑龙江能源职业学院",
+ "13734": "重庆城市职业学院",
+ "13735": "重庆水利电力职业技术学院",
+ "13736": "陕西邮电职业技术学院",
+ "13737": "西安海棠职业学院",
+ "13738": "西安汽车职业大学",
+ "13739": "西安健康工程职业学院",
+ "13740": "通辽职业学院",
+ "13741": "科尔沁艺术职业学院",
+ "13742": "宁波卫生职业技术学院",
+ "13743": "白城医学高等专科学校",
+ "13744": "黑河学院",
+ "13745": "山西电力职业技术学院",
+ "13746": "台州科技职业学院",
+ "13747": "上海电影艺术职业学院",
+ "13748": "无锡城市职业技术学院",
+ "13749": "无锡工艺职业技术学院",
+ "13750": "金山职业技术学院",
+ "13751": "苏州健雄职业技术学院",
+ "13752": "盐城工业职业技术学院",
+ "13753": "江苏财经职业技术学院",
+ "13754": "扬州工业职业技术学院",
+ "13756": "云南国防工业职业技术学院",
+ "13757": "云南机电职业技术学院",
+ "13758": "云南林业职业技术学院",
+ "13759": "云南城市建设职业学院",
+ "13760": "马鞍山师范高等专科学校",
+ "13761": "云南工程职业学院",
+ "13762": "福州外语外贸学院",
+ "13763": "福建江夏学院",
+ "13764": "闽北职业技术学院",
+ "13765": "福州黎明职业技术学院",
+ "13766": "泉州信息工程学院",
+ "13767": "厦门演艺职业学院",
+ "13768": "厦门华天涉外职业技术学院",
+ "13769": "福州科技职业技术学院",
+ "13770": "泉州经贸职业技术学院",
+ "13772": "湄洲湾职业技术学院",
+ "13773": "福州理工学院",
+ "13774": "豫章师范学院",
+ "13775": "江西中医药高等专科学校",
+ "13776": "江西软件职业技术大学",
+ "13777": "淄博师范高等专科学校",
+ "13778": "山东中医药高等专科学校",
+ "13779": "沧州医学高等专科学校",
+ "13780": "漯河医学高等专科学校",
+ "13781": "南阳医学高等专科学校",
+ "13782": "商丘医学高等专科学校",
+ "13783": "郑州电子信息职业技术学院",
+ "13784": "信阳职业技术学院",
+ "13785": "嵩山少林武术职业学院",
+ "13786": "郑州工业安全职业学院",
+ "13787": "永城职业学院",
+ "13788": "河南经贸职业学院",
+ "13789": "河南交通职业技术学院",
+ "13790": "河南农业职业学院",
+ "13791": "郑州旅游职业学院",
+ "13792": "郑州职业技术学院",
+ "13793": "江汉艺术职业学院",
+ "13795": "武汉工业职业技术学院",
+ "13796": "武汉民政职业学院",
+ "13797": "湖北黄冈应急管理职业技术学院",
+ "13798": "湖北财税职业学院",
+ "13799": "黄冈科技职业学院",
+ "13800": "湖北国土资源职业学院",
+ "13801": "湖北生态工程职业技术学院",
+ "13802": "湖南中医药高等专科学校",
+ "13804": "湖南民族职业学院",
+ "13805": "湘西民族职业技术学院",
+ "13806": "长沙师范学院",
+ "13807": "湖南财经工业职业技术学院",
+ "13808": "益阳职业技术学院",
+ "13809": "湖南应用技术学院",
+ "13810": "肇庆医学高等专科学校",
+ "13811": "琼台师范学院",
+ "13812": "四川商务职业学院",
+ "13813": "四川司法警官职业学院",
+ "13814": "广安职业技术学院",
+ "13815": "四川信息职业技术学院",
+ "13816": "四川工业科技学院",
+ "13817": "黔西南民族职业技术学院",
+ "13818": "贵州轻工职业技术学院",
+ "13819": "陕西警官职业学院",
+ "13820": "银川能源学院",
+ "13821": "忻州职业技术学院",
+ "13822": "河北女子职业技术学院",
+ "13824": "内蒙古交通职业技术学院",
+ "13827": "广西经贸职业技术学院",
+ "13828": "广西工商职业技术学院",
+ "13829": "广西演艺职业学院",
+ "13830": "广西外国语学院",
+ "13831": "广西电力职业技术学院",
+ "13836": "湖南信息学院",
+ "13842": "南京理工大学泰州科技学院",
+ "13843": "南京师范大学泰州学院",
+ "13844": "东莞城市学院",
+ "13845": "安徽财贸职业学院",
+ "13846": "安徽国际商务职业学院",
+ "13847": "安徽公安职业学院",
+ "13848": "安徽林业职业技术学院",
+ "13849": "安徽审计职业学院",
+ "13850": "安徽新闻出版职业技术学院",
+ "13851": "安徽邮电职业技术学院",
+ "13852": "安徽工业职业技术学院",
+ "13853": "浙江国际海运职业技术学院",
+ "13854": "浙江体育职业技术学院",
+ "13855": "济南工程职业技术学院",
+ "13856": "山东电子职业技术学院",
+ "13857": "山东华宇工学院",
+ "13858": "山东旅游职业学院",
+ "13859": "山东铝业职业学院",
+ "13860": "山东杏林科技职业学院",
+ "13861": "泰山职业技术学院",
+ "13862": "山西同文职业技术学院",
+ "13863": "天津铁道职业技术学院",
+ "13864": "包头钢铁职业技术学院",
+ "13866": "江西经济管理职业学院",
+ "13867": "江西制造职业技术学院",
+ "13868": "江西工程职业学院",
+ "13869": "江西青年职业学院",
+ "13870": "上饶职业技术学院",
+ "13871": "江西航空职业技术学院",
+ "13872": "江西农业工程职业学院",
+ "13873": "赣西科技职业学院",
+ "13874": "山东外事职业大学",
+ "13875": "海南经贸职业技术学院",
+ "13876": "海南工商职业学院",
+ "13885": "河南信息统计职业学院",
+ "13889": "河南林业职业学院",
+ "13891": "保定理工学院",
+ "13892": "三亚学院",
+ "13893": "上海师范大学天华学院",
+ "13894": "西安明德理工学院",
+ "13895": "燕京理工学院",
+ "13896": "天津师范大学津沽学院",
+ "13897": "天津理工大学中环信息学院",
+ "13898": "北京科技大学天津学院",
+ "13899": "北京中医药大学东方学院",
+ "13900": "辽宁财贸学院",
+ "13901": "北京邮电大学世纪学院",
+ "13902": "广州新华学院",
+ "13903": "四川大学锦城学院",
+ "13904": "北京工业大学耿丹学院",
+ "13905": "南京工业大学浦江学院",
+ "13906": "南京师范大学中北学院",
+ "13909": "云南工商学院",
+ "13911": "天津工艺美术职业学院",
+ "13912": "广州现代信息工程职业技术学院",
+ "13913": "晋中职业技术学院",
+ "13914": "山西华澳商贸职业学院",
+ "13915": "乌海职业技术学院",
+ "13916": "长春信息技术职业学院",
+ "13917": "松原职业技术学院",
+ "13918": "七台河职业学院",
+ "13919": "广东理工职业学院",
+ "13920": "广西城市职业大学",
+ "13921": "湖南工艺美术职业学院",
+ "13922": "湖南九嶷职业技术学院",
+ "13923": "湖南理工职业技术学院",
+ "13924": "湖南交通工程学院",
+ "13925": "湖南软件职业技术大学",
+ "13926": "新疆交通职业技术学院",
+ "13927": "广州华南商贸职业学院",
+ "13928": "广州华立科技职业学院",
+ "13929": "广州城市职业学院",
+ "13930": "广东工程职业技术学院",
+ "13931": "三亚航空旅游职业学院",
+ "13932": "陕西经济管理职业技术学院",
+ "13933": "兰州资源环境职业技术学院",
+ "13934": "山西运城农业职业技术学院",
+ "13935": "黑龙江民族职业学院",
+ "13936": "河南工业贸易职业学院",
+ "13937": "湖南汽车工程职业学院",
+ "13938": "长沙电力职业技术学院",
+ "13939": "湖南水利水电职业技术学院",
+ "13940": "湖南现代物流职业技术学院",
+ "13941": "湖南高速铁路职业技术学院",
+ "13942": "湖南铁路科技职业技术学院",
+ "13943": "广州铁路职业技术学院",
+ "13945": "西安铁路职业技术学院",
+ "13946": "咸阳职业技术学院",
+ "13947": "西安职业技术学院",
+ "13948": "商洛职业技术学院",
+ "13949": "汉中职业技术学院",
+ "13950": "延安职业技术学院",
+ "13951": "渭南职业技术学院",
+ "13952": "安康职业技术学院",
+ "13953": "铜川职业技术学院",
+ "13954": "甘肃农业职业技术学院",
+ "13955": "甘肃畜牧工程职业技术学院",
+ "13956": "新疆石河子职业技术学院",
+ "13957": "辽宁传媒学院",
+ "13958": "大连软件职业学院",
+ "13959": "大连翻译职业学院",
+ "13960": "辽宁商贸职业学院",
+ "13961": "大连枫叶职业技术学院",
+ "13962": "苏州百年职业学院",
+ "13963": "昆山登云科技职业学院",
+ "13964": "南京视觉艺术职业学院",
+ "13965": "江西卫生职业学院",
+ "13966": "山东药品食品职业学院",
+ "13967": "重庆工商职业学院",
+ "13968": "重庆应用技术职业学院",
+ "13969": "福建生物工程职业技术学院",
+ "13970": "福建艺术职业学院",
+ "13972": "福建幼儿师范高等专科学校",
+ "13973": "厦门城市职业学院",
+ "13975": "泉州工艺美术职业学院",
+ "13976": "三明医学科技职业学院",
+ "13977": "宁德职业技术学院",
+ "13978": "福州软件职业技术学院",
+ "13979": "厦门兴才职业技术学院",
+ "13980": "南京医科大学康达学院",
+ "13981": "南京中医药大学翰林学院",
+ "13982": "南京信息工程大学滨江学院",
+ "13983": "苏州大学文正学院",
+ "13984": "苏州大学应用技术学院",
+ "13985": "苏州科技大学天平学院",
+ "13986": "江苏大学京江学院",
+ "13987": "扬州大学广陵学院",
+ "13988": "江苏师范大学科文学院",
+ "13989": "南京邮电大学通达学院",
+ "13990": "南京财经大学红山学院",
+ "13991": "江苏科技大学苏州理工学院",
+ "13992": "常州大学怀德学院",
+ "13993": "南通大学杏林学院",
+ "13994": "南京审计大学金审学院",
+ "13995": "青岛工学院",
+ "13997": "青岛农业大学海都学院",
+ "13998": "齐鲁理工学院",
+ "13999": "山东财经大学东方学院",
+ "14000": "江苏城市职业学院",
+ "14001": "南京城市职业学院",
+ "14002": "烟台科技学院",
+ "14003": "商丘学院",
+ "14004": "四川文化传媒职业学院",
+ "14005": "四川华新现代职业学院",
+ "14006": "四川铁道职业学院",
+ "14007": "四川艺术职业学院",
+ "14008": "重庆三峡医药高等专科学校",
+ "14009": "重庆医药高等专科学校",
+ "14010": "四川中医药高等专科学校",
+ "14011": "遵义医药高等专科学校",
+ "14012": "曲靖医学高等专科学校",
+ "14013": "楚雄医药高等专科学校",
+ "14014": "保山中医药高等专科学校",
+ "14015": "丽江师范高等专科学校",
+ "14016": "德宏师范高等专科学校",
+ "14017": "大庆医学高等专科学校",
+ "14020": "天津城市建设管理职业技术学院",
+ "14021": "天津生物工程职业技术学院",
+ "14022": "天津海运职业学院",
+ "14025": "湖南安全技术职业学院",
+ "14026": "广西英华国际职业学院",
+ "14029": "陕西工商职业学院",
+ "14030": "西安信息职业大学",
+ "14031": "陕西旅游烹饪职业学院",
+ "14032": "云南新兴职业学院",
+ "14034": "长安大学兴华学院",
+ "14035": "武汉设计工程学院",
+ "14037": "西南财经大学天府学院",
+ "14038": "天津大学仁爱学院",
+ "14039": "四川大学锦江学院",
+ "14040": "郑州商学院",
+ "14041": "西安理工大学高科学院",
+ "14042": "西安科技大学高新学院",
+ "14043": "四川文化艺术学院",
+ "14045": "西南科技大学城市学院",
+ "14046": "福建农林大学金山学院",
+ "14047": "石家庄经济职业学院",
+ "14048": "内蒙古科技职业学院",
+ "14049": "内蒙古北方职业技术学院",
+ "14050": "赤峰职业技术学院",
+ "14051": "内蒙古经贸外语职业学院",
+ "14052": "吉林铁道职业技术学院",
+ "14053": "黑龙江交通职业技术学院",
+ "14055": "哈尔滨应用职业技术学院",
+ "14056": "南京机电职业技术学院",
+ "14058": "民办合肥财经职业学院",
+ "14059": "厦门软件职业技术学院",
+ "14060": "福建体育职业技术学院",
+ "14061": "三峡电力职业学院",
+ "14062": "郑州电力职业技术学院",
+ "14063": "广东科贸职业学院",
+ "14065": "广州科技贸易职业学院",
+ "14066": "中山职业技术学院",
+ "14067": "柳州城市职业学院",
+ "14068": "百色职业学院",
+ "14069": "重庆青年职业技术学院",
+ "14070": "四川科技职业学院",
+ "14071": "湖南电气职业技术学院",
+ "14072": "湖南外国语职业学院",
+ "14073": "北京经济管理职业学院",
+ "14075": "北京劳动保障职业学院",
+ "14076": "辽宁装备制造职业技术学院",
+ "14078": "山东商务职业学院",
+ "14079": "山东轻工职业学院",
+ "14080": "山东城市建设职业学院",
+ "14081": "烟台汽车工程职业学院",
+ "14082": "山东司法警官职业学院",
+ "14083": "贵阳护理职业学院",
+ "14085": "西藏职业技术学院",
+ "14086": "四川文化产业职业学院",
+ "14087": "天津财经大学珠江学院",
+ "14088": "温州科技职业学院",
+ "14089": "浙江汽车职业技术学院",
+ "14090": "浙江横店影视职业学院",
+ "14091": "四川财经职业学院",
+ "14092": "滇西科技师范学院",
+ "14093": "运城幼儿师范高等专科学校",
+ "14095": "黑龙江幼儿师范高等专科学校",
+ "14096": "安庆医药高等专科学校",
+ "14097": "益阳医学高等专科学校",
+ "14098": "合肥师范学院",
+ "14099": "湖北第二师范学院",
+ "14100": "山东政法学院",
+ "14101": "太原工业学院",
+ "14102": "天津广播影视职业学院",
+ "14103": "冀中职业学院",
+ "14105": "山西老区职业技术学院",
+ "14106": "辽宁地质工程职业学院",
+ "14107": "白城职业技术学院",
+ "14108": "哈尔滨科学技术职业学院",
+ "14110": "漳州城市职业学院",
+ "14111": "厦门南洋职业学院",
+ "14112": "厦门东海职业技术学院",
+ "14113": "漳州科技职业学院",
+ "14115": "漳州理工职业学院",
+ "14116": "武夷山职业学院",
+ "14117": "漳州卫生职业学院",
+ "14118": "菏泽家政职业学院",
+ "14119": "湖北科技职业学院",
+ "14120": "湖北青年职业学院",
+ "14121": "湖南都市职业学院",
+ "14122": "湖南电子科技职业学院",
+ "14123": "广州珠江职业技术学院",
+ "14125": "广州松田职业学院",
+ "14126": "广东文理职业学院",
+ "14127": "广西工程职业学院",
+ "14128": "重庆财经职业学院",
+ "14129": "贵阳职业技术学院",
+ "14130": "云南锡业职业技术学院",
+ "14131": "甘肃钢铁职业技术学院",
+ "14132": "安徽涉外经济职业学院",
+ "14133": "安徽绿海商务职业学院",
+ "14135": "合肥共达职业技术学院",
+ "14136": "广州城建职业学院",
+ "14137": "蚌埠经济技术职业学院",
+ "14138": "新疆职业大学",
+ "14139": "北京社会管理职业学院(民政部培训中心)",
+ "14140": "北京艺术传媒职业学院",
+ "14158": "石家庄人民医学高等专科学校",
+ "14160": "宿迁学院",
+ "14163": "苏州高博软件技术职业学院",
+ "14165": "民办安徽旅游职业学院",
+ "14166": "江西新能源科技职业学院",
+ "14167": "江西枫林涉外经贸职业学院",
+ "14168": "江西泰豪动漫职业学院",
+ "14169": "河南科技职业大学",
+ "14170": "广西理工职业技术学院",
+ "14171": "梧州职业学院",
+ "14172": "海南科技职业大学",
+ "14173": "重庆科创职业学院",
+ "14175": "四川城市职业学院",
+ "14176": "四川现代职业学院",
+ "14177": "山西经贸职业学院",
+ "14178": "佳木斯职业学院",
+ "14179": "上海体育职业学院",
+ "14180": "南京旅游职业学院",
+ "14181": "河南建筑职业技术学院",
+ "14182": "湖南国防工业职业技术学院",
+ "14183": "重庆建筑工程职业学院",
+ "14185": "河北正定师范高等专科学校",
+ "14186": "朔州职业技术学院",
+ "14187": "包头铁道职业技术学院",
+ "14188": "辽宁铁道职业技术学院",
+ "14189": "辽宁建筑职业学院",
+ "14190": "长白山职业技术学院",
+ "14191": "徽商职业学院",
+ "14192": "马鞍山职业技术学院",
+ "14193": "山东传媒职业学院",
+ "14195": "临沂职业学院",
+ "14196": "枣庄职业学院",
+ "14197": "湖北工程职业学院",
+ "14198": "毕节职业技术学院",
+ "14199": "内蒙古大学创业学院",
+ "14200": "银川科技学院",
+ "14201": "北京第二外国语学院中瑞酒店管理学院",
+ "14202": "沧州交通学院",
+ "14203": "皖江工学院",
+ "14205": "内蒙古师范大学鸿德学院",
+ "14206": "同济大学浙江学院",
+ "14207": "上海财经大学浙江学院",
+ "14208": "河北劳动关系职业学院",
+ "14209": "大连航运职业技术学院",
+ "14210": "安徽现代信息工程职业学院",
+ "14211": "广西经济职业学院",
+ "14212": "云南经贸外事职业学院",
+ "14213": "石家庄科技职业学院",
+ "14215": "北京体育职业学院",
+ "14219": "乌兰察布医学高等专科学校",
+ "14220": "广西幼儿师范高等专科学校",
+ "14221": "四川幼儿师范高等专科学校",
+ "14222": "西安医学高等专科学校",
+ "14223": "贵州师范学院",
+ "14225": "河北东方学院",
+ "14226": "运城职业技术大学",
+ "14227": "大连装备制造职业技术学院",
+ "14228": "大连汽车职业技术学院",
+ "14229": "安徽矿业职业技术学院",
+ "14230": "合肥信息技术职业学院",
+ "14231": "泉州海洋职业学院",
+ "14232": "泉州轻工职业学院",
+ "14233": "漯河食品职业学院",
+ "14235": "郑州城市职业学院",
+ "14236": "三亚理工职业学院",
+ "14237": "重庆电讯职业学院",
+ "14238": "重庆能源职业学院",
+ "14239": "云南三鑫职业技术学院",
+ "14240": "辽宁现代服务职业技术学院",
+ "14241": "江西冶金职业技术学院",
+ "14242": "山东理工职业学院",
+ "14243": "安阳职业技术学院",
+ "14245": "新乡职业技术学院",
+ "14246": "重庆商务职业学院",
+ "14247": "山西铁道职业技术学院",
+ "14248": "鄂尔多斯职业学院",
+ "14249": "江西管理职业学院",
+ "14250": "江西传媒职业学院",
+ "14251": "驻马店职业技术学院",
+ "14252": "贵州职业技术学院",
+ "14253": "德宏职业学院",
+ "14255": "江苏卫生健康职业学院",
+ "14256": "苏州信息职业技术学院",
+ "14257": "厦门安防科技职业学院",
+ "14258": "三峡旅游职业技术学院",
+ "14259": "沧州幼儿师范高等专科学校",
+ "14260": "宣化科技职业学院",
+ "14261": "山东文化产业职业学院",
+ "14262": "西南交通大学希望学院",
+ "14263": "东莞职业技术学院",
+ "14265": "广东南方职业学院",
+ "14266": "广州华商职业学院",
+ "14267": "重庆交通职业学院",
+ "14268": "广州华夏职业学院",
+ "14269": "浙江农业商贸职业学院",
+ "14270": "晋中师范高等专科学校",
+ "14271": "阳泉师范高等专科学校",
+ "14272": "黑龙江护理高等专科学校",
+ "14273": "桐城师范高等专科学校",
+ "14275": "浙江外国语学院",
+ "14276": "齐鲁师范学院",
+ "14277": "山东青年政治学院",
+ "14278": "广东第二师范学院",
+ "14279": "北京交通运输职业学院",
+ "14280": "廊坊燕京职业技术学院",
+ "14281": "承德护理职业学院",
+ "14282": "内蒙古工业职业学院",
+ "14283": "呼伦贝尔职业技术学院",
+ "14285": "满洲里俄语职业学院",
+ "14286": "辽宁冶金职业技术学院",
+ "14287": "辽宁工程职业学院",
+ "14288": "辽宁城市建设职业技术学院",
+ "14289": "辽宁医药职业学院",
+ "14290": "铁岭卫生职业学院",
+ "14291": "吉林科技职业技术学院",
+ "14293": "宿迁泽达职业技术学院",
+ "14295": "苏州工业园区服务外包职业学院",
+ "14296": "黄山职业技术学院",
+ "14297": "滁州城市职业学院",
+ "14298": "安徽汽车职业技术学院",
+ "14299": "皖西卫生职业学院",
+ "14300": "焦作工贸职业学院",
+ "14301": "许昌陶瓷职业学院",
+ "14302": "郑州理工职业学院",
+ "14303": "郑州信息工程职业学院",
+ "14305": "长垣烹饪职业技术学院",
+ "14306": "开封文化艺术职业学院",
+ "14307": "河南应用技术职业学院",
+ "14308": "河南艺术职业学院",
+ "14309": "湖南高尔夫旅游职业学院",
+ "14310": "湖南工商职业学院",
+ "14311": "广东环境保护工程职业学院",
+ "14312": "广西科技职业学院",
+ "14313": "广西卫生职业技术学院",
+ "14315": "重庆化工职业学院",
+ "14316": "重庆旅游职业学院",
+ "14317": "云南商务职业学院",
+ "14318": "榆林职业技术学院",
+ "14319": "甘肃机电职业技术学院",
+ "14320": "青岛远洋船员职业学院",
+ "14321": "江西工商职业技术学院",
+ "14322": "湖南三一工业职业技术学院",
+ "14323": "四川长江职业学院",
+ "14325": "南方科技大学",
+ "14327": "青岛电影学院",
+ "14328": "石家庄幼儿师范高等专科学校",
+ "14329": "徐州幼儿师范高等专科学校",
+ "14330": "合肥幼儿师范高等专科学校",
+ "14331": "泉州幼儿师范高等专科学校",
+ "14332": "济南幼儿师范高等专科学校",
+ "14333": "郑州升达经贸管理学院",
+ "14335": "廊坊卫生职业学院",
+ "14336": "山西青年职业学院",
+ "14337": "内蒙古能源职业学院",
+ "14338": "赤峰工业职业技术学院",
+ "14339": "阿拉善职业技术学院",
+ "14340": "延边职业技术学院",
+ "14342": "安徽扬子职业技术学院",
+ "14343": "济南护理职业学院",
+ "14345": "泰山护理职业学院",
+ "14346": "山东海事职业学院",
+ "14347": "潍坊护理职业学院",
+ "14348": "河南机电职业学院",
+ "14349": "河南护理职业学院",
+ "14350": "许昌电气职业学院",
+ "14351": "信阳涉外职业技术学院",
+ "14352": "鹤壁汽车工程职业学院",
+ "14353": "南阳职业学院",
+ "14355": "天门职业学院",
+ "14356": "湖北体育职业学院",
+ "14357": "襄阳汽车职业技术学院",
+ "14358": "长沙卫生职业学院",
+ "14359": "湖南食品药品职业学院",
+ "14360": "湖南有色金属职业技术学院",
+ "14361": "广东青年职业学院",
+ "14362": "广州东华职业学院",
+ "14363": "广东创新科技职业学院",
+ "14365": "重庆安全技术职业学院",
+ "14366": "重庆公共运输职业学院",
+ "14367": "重庆艺术工程职业学院",
+ "14368": "重庆轻工职业学院",
+ "14369": "重庆电信职业学院",
+ "14370": "重庆经贸职业学院",
+ "14371": "贵州盛华职业学院",
+ "14372": "昆明卫生职业学院",
+ "14373": "云南现代职业技术学院",
+ "14375": "甘肃有色冶金职业技术学院",
+ "14376": "白银矿冶职业技术学院",
+ "14377": "宁夏葡萄酒与防沙治沙职业技术学院",
+ "14378": "安徽黄梅戏艺术职业学院",
+ "14379": "潍坊工程职业学院",
+ "14380": "郑州商贸旅游职业学院",
+ "14381": "云南旅游职业学院",
+ "14382": "河南推拿职业学院",
+ "14383": "洛阳职业技术学院",
+ "14385": "沈阳北软信息职业技术学院",
+ "14386": "四川三河职业学院",
+ "14387": "内蒙古美术职业学院",
+ "14388": "重庆第二师范学院",
+ "14389": "成都师范学院",
+ "14390": "陕西学前师范学院",
+ "14391": "郑州幼儿师范高等专科学校",
+ "14392": "安阳幼儿师范高等专科学校",
+ "14393": "川北幼儿师范高等专科学校",
+ "14394": "上海民航职业技术学院",
+ "14395": "北京卫生职业学院",
+ "14396": "河北轨道运输职业技术学院",
+ "14397": "运城护理职业学院",
+ "14400": "齐齐哈尔理工职业学院",
+ "14401": "徐州生物工程职业技术学院",
+ "14402": "景德镇陶瓷职业技术学院",
+ "14403": "共青科技职业学院",
+ "14405": "郑州黄河护理职业学院",
+ "14406": "湖南吉利汽车职业技术学院",
+ "14407": "广东舞蹈戏剧职业学院",
+ "14408": "惠州卫生职业技术学院",
+ "14409": "四川卫生康复职业学院",
+ "14410": "四川电影电视学院",
+ "14411": "四川汽车职业技术学院",
+ "14412": "贵州工商职业学院",
+ "14413": "红河卫生职业学院",
+ "14415": "云南外事外语职业学院",
+ "14416": "新疆体育职业技术学院",
+ "14417": "新疆应用职业技术学院",
+ "14418": "安徽粮食工程职业学院",
+ "14419": "安徽卫生健康职业学院",
+ "14420": "合肥科技职业学院",
+ "14421": "新疆师范高等专科学校",
+ "14423": "上海科技大学",
+ "14425": "哈尔滨幼儿师范高等专科学校",
+ "14426": "吉林城市职业技术学院",
+ "14427": "广东信息工程职业学院",
+ "14428": "重庆幼儿师范高等专科学校",
+ "14430": "中国科学院大学",
+ "14431": "浙江特殊教育职业学院",
+ "14432": "河北中医学院",
+ "14434": "山西传媒学院",
+ "14435": "营口理工学院",
+ "14436": "江苏第二师范学院",
+ "14437": "南昌师范学院",
+ "14438": "山东管理学院",
+ "14439": "山东农业工程学院",
+ "14440": "贵州理工学院",
+ "14458": "张家口学院",
+ "14460": "保定幼儿师范高等专科学校",
+ "14461": "运城师范高等专科学校",
+ "14462": "朔州师范高等专科学校",
+ "14463": "内蒙古民族幼儿师范高等专科学校",
+ "14464": "辽宁民族师范高等专科学校",
+ "14465": "赣州师范高等专科学校",
+ "14466": "河南医学高等专科学校",
+ "14467": "湖北幼儿师范高等专科学校",
+ "14468": "湖南幼儿师范高等专科学校",
+ "14469": "贵阳幼儿师范高等专科学校",
+ "14470": "铜仁幼儿师范高等专科学校",
+ "14471": "河北工艺美术职业学院",
+ "14472": "渤海理工职业学院",
+ "14473": "辽宁轻工职业学院",
+ "14475": "江苏商贸职业学院",
+ "14476": "江西水利职业学院",
+ "14477": "菏泽职业学院",
+ "14478": "郑州财税金融职业学院",
+ "14479": "南阳农业职业学院",
+ "14480": "洛阳科技职业学院",
+ "14481": "广西培贤国际职业学院",
+ "14482": "重庆文化艺术职业学院",
+ "14483": "巴中职业技术学院",
+ "14484": "四川希望汽车职业学院",
+ "14485": "四川电子机械职业技术学院",
+ "14486": "四川文轩职业学院",
+ "14487": "大理农林职业技术学院",
+ "14488": "陕西艺术职业学院",
+ "14489": "新疆铁道职业技术学院",
+ "14490": "闽江师范高等专科学校",
+ "14491": "重庆科技职业学院",
+ "14492": "浙江安防职业技术学院",
+ "14493": "南通师范高等专科学校",
+ "14494": "宜春幼儿师范高等专科学校",
+ "14495": "湘南幼儿师范高等专科学校",
+ "14496": "川南幼儿师范高等专科学校",
+ "14497": "黔南民族幼儿师范高等专科学校",
+ "14498": "宁夏幼儿师范高等专科学校",
+ "14499": "毕节医学高等专科学校",
+ "14500": "吕梁职业技术学院",
+ "14501": "鄂尔多斯生态环境职业学院",
+ "14502": "皖北卫生职业学院",
+ "14503": "泉州工程职业技术学院",
+ "14504": "吉安职业技术学院",
+ "14505": "江西洪州职业学院",
+ "14506": "山东艺术设计职业学院",
+ "14507": "威海海洋职业学院",
+ "14508": "湖南劳动人事职业学院",
+ "14509": "广东生态工程职业学院",
+ "14510": "惠州城市职业学院",
+ "14511": "广东碧桂园职业学院",
+ "14512": "广西金融职业技术学院",
+ "14513": "四川护理职业学院",
+ "14514": "成都工业职业技术学院",
+ "14515": "四川西南航空职业学院",
+ "14516": "贵州建设职业技术学院",
+ "14517": "甘肃卫生职业学院",
+ "14518": "兰州科技职业学院",
+ "14519": "西宁城市职业技术学院",
+ "14520": "青海高等职业技术学院",
+ "14521": "青海柴达木职业技术学院",
+ "14522": "宁夏艺术职业学院",
+ "14523": "新疆生产建设兵团兴新职业技术学院",
+ "14524": "哈密职业技术学院",
+ "14525": "新疆科技职业技术学院",
+ "14526": "辽宁特殊教育师范高等专科学校",
+ "14527": "山西工程技术学院",
+ "14528": "扬州中瑞酒店职业学院",
+ "14529": "鹤壁能源化工职业学院",
+ "14530": "平顶山文化艺术职业学院",
+ "14531": "内蒙古艺术学院",
+ "14532": "鄂尔多斯应用技术学院",
+ "14534": "公安消防部队高等专科学校",
+ "14535": "浙江音乐学院",
+ "14536": "阜阳幼儿师范高等专科学校",
+ "14537": "江西师范高等专科学校",
+ "14538": "毕节幼儿师范高等专科学校",
+ "14539": "扎兰屯职业学院",
+ "14540": "黑龙江冰雪体育职业学院",
+ "14541": "江苏护理职业学院",
+ "14542": "江苏财会职业学院",
+ "14543": "江苏城乡建设职业学院",
+ "14544": "南昌影视传播职业学院",
+ "14545": "山东特殊教育职业学院",
+ "14546": "广西中远职业学院",
+ "14547": "成都工贸职业技术学院",
+ "14548": "四川应用技术职业学院",
+ "14549": "贵州农业职业学院",
+ "14550": "云南财经职业学院",
+ "14551": "庆阳职业技术学院",
+ "14552": "临夏现代职业学院",
+ "14553": "湖北铁道运输职业学院",
+ "14554": "武汉海事职业学院",
+ "14555": "长江艺术工程职业学院",
+ "14556": "广东茂名健康职业学院",
+ "14557": "重庆资源与环境保护职业学院",
+ "14558": "贵州工程职业学院",
+ "14559": "贵州工贸职业学院",
+ "14560": "哈尔滨音乐学院",
+ "14567": "吉林职业技术学院",
+ "14568": "江苏航空职业技术学院",
+ "14569": "赣南卫生健康职业学院",
+ "14570": "烟台黄金职业学院",
+ "14571": "荆门职业学院",
+ "14572": "广东酒店管理职业技术学院",
+ "14573": "玉柴职业技术学院",
+ "14574": "广西蓝天航空职业学院",
+ "14575": "海南体育职业技术学院",
+ "14576": "重庆护理职业学院",
+ "14577": "贵州水利水电职业技术学院",
+ "14578": "贵州电子商务职业技术学院",
+ "14579": "贵州应用技术职业学院",
+ "14580": "贵州电子科技职业学院",
+ "14581": "昆明铁道职业技术学院",
+ "14582": "昭通卫生职业学院",
+ "14583": "大理护理职业学院",
+ "14584": "云南水利水电职业学院",
+ "14585": "吐鲁番职业技术学院",
+ "14586": "唐山幼儿师范高等专科学校",
+ "14587": "广东茂名幼儿师范专科学校",
+ "14588": "北京网络职业学院",
+ "14589": "江苏安全技术职业学院",
+ "14590": "武汉铁路桥梁职业学院",
+ "14591": "武汉光谷职业学院",
+ "14592": "广州卫生职业技术学院",
+ "14594": "兰州现代职业学院",
+ "14595": "平凉职业技术学院",
+ "14596": "中国社会科学院大学",
+ "14597": "濮阳医学高等专科学校",
+ "14598": "驻马店幼儿师范高等专科学校",
+ "14599": "天津体育职业学院",
+ "14600": "天津滨海汽车工程职业学院",
+ "14601": "曹妃甸职业技术学院",
+ "14602": "吉林水利电力职业学院",
+ "14603": "长春健康职业学院",
+ "14604": "江苏旅游职业学院",
+ "14605": "日照航海工程职业学院",
+ "14606": "三门峡社会管理职业学院",
+ "14607": "河南轻工职业学院",
+ "14608": "河南测绘职业学院",
+ "14609": "惠州工程职业学院",
+ "14610": "广东江门中医药职业学院",
+ "14611": "广西安全工程职业技术学院",
+ "14612": "三亚中瑞酒店管理职业学院",
+ "14613": "贵州装备制造职业学院",
+ "14614": "贵州健康职业学院",
+ "14615": "贵州食品工程职业学院",
+ "14616": "贵州经贸职业技术学院",
+ "14617": "贵州护理职业技术学院",
+ "14618": "云南轻纺职业学院",
+ "14619": "云南特殊教育职业学院",
+ "14620": "云南工贸职业技术学院",
+ "14621": "云南交通运输职业学院",
+ "14622": "博尔塔拉职业技术学院",
+ "14623": "滇西应用技术大学",
+ "14624": "宁夏体育职业学院",
+ "14625": "茅台学院",
+ "14626": "西湖大学",
+ "14627": "大同师范高等专科学校",
+ "14628": "太原幼儿师范高等专科学校",
+ "14629": "西昌民族幼儿师范高等专科学校",
+ "14630": "六盘水幼儿师范高等专科学校",
+ "14631": "昆明幼儿师范高等专科学校",
+ "14632": "承德应用技术职业学院",
+ "14633": "哈尔滨北方航空职业技术学院",
+ "14634": "信阳航空职业学院",
+ "14635": "郑州卫生健康职业学院",
+ "14636": "河南物流职业学院",
+ "14637": "河南地矿职业学院",
+ "14638": "广东茂名农林科技职业学院",
+ "14639": "海南健康管理职业技术学院",
+ "14640": "眉山药科职业学院",
+ "14641": "天府新区信息职业学院",
+ "14642": "德阳城市轨道交通职业学院",
+ "14643": "德阳科贸职业学院",
+ "14644": "江阳城建职业学院",
+ "14645": "天府新区航空旅游职业学院",
+ "14646": "天府新区通用航空职业学院",
+ "14647": "阿坝职业学院",
+ "14648": "毕节工业职业技术学院",
+ "14649": "云南医药健康职业学院",
+ "14650": "神木职业技术学院",
+ "14651": "宝鸡三和职业学院",
+ "14652": "和田职业技术学院",
+ "14654": "郑州西亚斯学院",
+ "14655": "深圳技术大学",
+ "14656": "萍乡卫生职业学院",
+ "14657": "江西婺源茶业职业学院",
+ "14660": "铁门关职业技术学院",
+ "14661": "石河子工程职业技术学院",
+ "14662": "辽宁师范高等专科学校",
+ "14663": "怀化师范高等专科学校",
+ "14664": "广东江门幼儿师范高等专科学校",
+ "14665": "赣州职业技术学院",
+ "14666": "青岛工程职业学院",
+ "14667": "广东财贸职业学院",
+ "14668": "广西自然资源职业技术学院",
+ "14669": "达州中医药职业学院",
+ "14670": "内江卫生与健康职业学院",
+ "14671": "南充科技职业学院",
+ "14672": "攀枝花攀西职业学院",
+ "14673": "资阳口腔职业学院",
+ "14674": "资阳环境科技职业学院",
+ "14675": "云南理工职业学院",
+ "14676": "曲靖职业技术学院",
+ "14677": "喀什职业技术学院",
+ "14678": "克孜勒苏职业技术学院",
+ "14679": "新疆科信职业技术学院",
+ "14680": "阿勒泰职业技术学院",
+ "14681": "山西工程职业学院",
+ "14682": "安徽艺术学院",
+ "14683": "福建技术师范学院",
+ "14684": "广西职业师范学院",
+ "14685": "郑州亚欧交通职业学院",
+ "14686": "邯郸幼儿师范高等专科学校",
+ "14687": "长治幼儿师范高等专科学校",
+ "14688": "青岛幼儿师范高等专科学校",
+ "14689": "烟台幼儿师范高等专科学校",
+ "14690": "永州师范高等专科学校",
+ "14691": "衡阳幼儿师范高等专科学校",
+ "14692": "长沙幼儿师范高等专科学校",
+ "14693": "钦州幼儿师范高等专科学校",
+ "14694": "梧州医学高等专科学校",
+ "14695": "邯郸科技职业学院",
+ "14696": "唐山海运职业学院",
+ "14697": "山西通用航空职业技术学院",
+ "14698": "朔州陶瓷职业技术学院",
+ "14699": "赤峰应用技术职业学院",
+ "14700": "鞍山职业技术学院",
+ "14701": "长春早期教育职业学院",
+ "14702": "梅河口康美职业技术学院",
+ "14703": "浙江宇翔职业技术学院",
+ "14704": "黄山健康职业学院",
+ "14705": "南昌健康职业技术学院",
+ "14706": "九江理工职业学院",
+ "14707": "烟台文化旅游职业学院",
+ "14708": "临沂科技职业学院",
+ "14709": "青岛航空科技职业学院",
+ "14710": "潍坊环境工程职业学院",
+ "14711": "河南女子职业学院",
+ "14712": "河南对外经济贸易职业学院",
+ "14713": "濮阳石油化工职业技术学院",
+ "14714": "南阳科技职业学院",
+ "14715": "兰考三农职业学院",
+ "14716": "汝州职业技术学院",
+ "14717": "林州建筑职业技术学院",
+ "14718": "郑州电子商务职业学院",
+ "14719": "郑州轨道工程职业学院",
+ "14720": "郑州体育职业学院",
+ "14721": "湖北健康职业学院",
+ "14722": "广西制造工程职业技术学院",
+ "14723": "广西物流职业技术学院",
+ "14724": "海南卫生健康职业学院",
+ "14725": "重庆理工职业学院",
+ "14726": "重庆智能工程职业学院",
+ "14727": "重庆健康职业学院",
+ "14728": "南充文化旅游职业学院",
+ "14729": "南充电影工业职业学院",
+ "14730": "绵阳飞行职业学院",
+ "14731": "德阳农业科技职业学院",
+ "14732": "泸州医疗器械职业学院",
+ "14733": "贵州机电职业技术学院",
+ "14734": "贵州财经职业学院",
+ "14735": "贵州民用航空职业学院",
+ "14736": "红河职业技术学院",
+ "14737": "榆林能源科技职业学院",
+ "14738": "培黎职业学院",
+ "14739": "石嘴山工贸职业技术学院",
+ "14740": "塔城职业技术学院",
+ "14741": "塔里木职业技术学院",
+ "14742": "邢台应用技术职业学院",
+ "14743": "吉林通用航空职业技术学院",
+ "14744": "通化医药健康职业学院",
+ "14745": "上海南湖职业技术学院",
+ "14746": "浙江金华科贸职业技术学院",
+ "14747": "宿州航空职业学院",
+ "14748": "和君职业学院",
+ "14749": "滨州科技职业学院",
+ "14750": "洛阳文化旅游职业学院",
+ "14751": "周口文理职业学院",
+ "14752": "信阳艺术职业学院",
+ "14753": "郑州城建职业学院",
+ "14754": "郑州医药健康职业学院",
+ "14755": "湖北孝感美珈职业学院",
+ "14756": "广州幼儿师范高等专科学校",
+ "14757": "广东汕头幼儿师范高等专科学校",
+ "14758": "广东梅州职业技术学院",
+ "14759": "广东潮州卫生健康职业学院",
+ "14760": "广东云浮中医药职业学院",
+ "14761": "广东肇庆航空职业学院",
+ "14762": "防城港职业技术学院",
+ "14763": "广西信息职业技术学院",
+ "14764": "广西农业工程职业技术学院",
+ "14765": "北海康养职业学院",
+ "14766": "重庆工信职业学院",
+ "14767": "甘孜职业学院",
+ "14768": "自贡职业技术学院",
+ "14769": "贵州文化旅游职业学院",
+ "14770": "宝鸡中北职业学院",
+ "14771": "兰州航空职业技术学院",
+ "14772": "白银希望职业技术学院",
+ "15312": "上饶幼儿师范高等专科学校",
+ "15335": "长春师范高等专科学校",
+ "15466": "盐城幼儿师范高等专科学校",
+ "15496": "湘中幼儿师范高等专科学校",
+ "15519": "抚州幼儿师范高等专科学校",
+ "15583": "苏州幼儿师范高等专科学校",
+ "16201": "山西工程科技职业大学",
+ "16202": "河北石油职业技术大学",
+ "16203": "河北科技工程职业技术大学",
+ "16204": "河北工业职业技术大学",
+ "16205": "广西农业职业技术大学",
+ "16206": "贵阳康养职业大学",
+ "16207": "浙江药科职业大学",
+ "16208": "兰州资源环境职业技术大学",
+ "16209": "兰州石化职业技术大学",
+ "16301": "宁波诺丁汉大学",
+ "16401": "北京师范大学-香港浸会大学联合国际学院",
+ "16402": "长江商学院",
+ "16403": "西交利物浦大学",
+ "16404": "上海纽约大学",
+ "16405": "温州肯恩大学",
+ "16406": "昆山杜克大学",
+ "16407": "香港中文大学(深圳)",
+ "16408": "浙江舟山群岛新区旅游与健康职业学院",
+ "16409": "深圳北理莫斯科大学",
+ "16410": "广东以色列理工学院",
+ "16411": "福州墨尔本理工职业学院",
+ "18213": "哈尔滨工业大学(深圳)",
+ "19027": "北京师范大学(珠海校区)",
+ "19145": "东北大学秦皇岛分校",
+ "19213": "哈尔滨工业大学(威海)",
+ "19414": "中国石油大学(北京)克拉玛依校区",
+ "19422": "山东大学威海分校",
+ "19802": "北京吉利学院",
+ "50028": "北京警察学院",
+ "50083": "陕西航天职工大学",
+ "50084": "陕西机电职业技术学院",
+ "50085": "陕西青年职业学院",
+ "50139": "河北地质职工大学",
+ "50166": "山西卫生健康职业学院",
+ "50252": "吉林省教育学院",
+ "50337": "黑龙江农垦管理干部学院",
+ "50343": "黑龙江省政法管理干部学院",
+ "50344": "黑龙江省教育学院",
+ "50559": "宁波幼儿师范高等专科学校",
+ "50561": "金华教育学院",
+ "50581": "安徽经济管理干部学院",
+ "50591": "福建教育学院",
+ "50607": "南昌钢铁有限责任公司职工大学",
+ "50649": "山东省经济管理干部学院",
+ "50680": "第一拖拉机制造厂拖拉机学院",
+ "50709": "平顶山职业技术学院",
+ "50763": "荆州教育学院",
+ "50788": "株洲市职工大学",
+ "50793": "湖南航空工业职工工学院",
+ "50810": "长沙教育学院",
+ "50812": "湘潭教育学院",
+ "50853": "湛江幼儿师范专科学校",
+ "50870": "广西教育学院",
+ "50881": "广元中核职业技术学院",
+ "50963": "贵州航空职业技术学院",
+ "50966": "聊城教育学院",
+ "50990": "西安飞机工业公司职工工学院",
+ "51006": "西安铁路工程职工大学",
+ "51009": "西安电力机械制造公司机电学院",
+ "51010": "陕西省建筑工程总公司职工大学",
+ "51038": "兰州航空职业技术学院",
+ "51060": "新疆工业职业技术学院",
+ "51177": "河北广播电视大学",
+ "51180": "石家庄职工大学",
+ "51189": "山西能源学院",
+ "51243": "吉林省经济管理干部学院",
+ "51255": "江苏开放大学",
+ "51257": "江苏省省级机关管理干部学院",
+ "51283": "南昌教育学院",
+ "51285": "江西经济管理干部学院",
+ "51340": "广西政法管理干部学院",
+ "51351": "四川体育职业学院",
+ "51373": "陕西工运学院",
+ "51378": "甘肃财贸职业学院",
+ "51614": "上海工会管理职业学院",
+ "51675": "崇左幼儿师范高等专科学校",
+ "51721": "河北环境工程学院",
+ "51723": "河北管理干部学院",
+ "51787": "山西省政法管理干部学院",
+ "51802": "河北青年管理干部学院",
+ "51828": "江苏省青年管理干部学院",
+ "80000": "中共中央党校",
+ "80002": "中科院数学与系统科学研究院",
+ "80005": "中国科学院武汉岩土力学研究所",
+ "80007": "中国科学院力学研究所",
+ "80008": "中国科学院物理研究所",
+ "80009": "中科院高能物理所",
+ "80010": "中国科学院声学研究所",
+ "80012": "中科院理论物理所",
+ "80014": "中国科学院上海应用物理研究所",
+ "80017": "中科院近代物理研究所",
+ "80018": "中科院南京天文光学技术研究所",
+ "80020": "中国科学院武汉物理与数学研究所",
+ "80021": "中国科学院紫金山天文台",
+ "80022": "中国科学院上海天文台",
+ "80023": "中科院云南天文台",
+ "80024": "中国科学院国家授时中心",
+ "80025": "中国科学院国家天文台",
+ "80026": "中国科学院声学研究所东海研究站",
+ "80028": "中科院新疆理化技术研究所",
+ "80029": "中国科学院自然科学史研究所",
+ "80030": "中国科学院理化技术研究所",
+ "80032": "中科院化学研究所",
+ "80035": "中国科学院上海有机化学所",
+ "80036": "中国科学院成都有机化学研究所",
+ "80037": "中国科学院长春应用化学研究所",
+ "80038": "中科院大连化学物理所",
+ "80039": "中国科学院兰州化物所",
+ "80040": "中国科学院上海硅酸盐研究所",
+ "80041": "中科院过程工程所",
+ "80042": "中科院生态环境中心",
+ "80043": "中国科学院山西煤炭化学研究所",
+ "80045": "中国科学院福建物质结构研究所",
+ "80046": "中国科学院盐湖研究所",
+ "80047": "中国科学院青海盐湖研究所",
+ "80053": "中科院兰州地质研究所",
+ "80054": "中科院古脊椎所",
+ "80055": "中科院南京地质古生物研究所",
+ "80057": "中国科学院测量与地球物理研究所",
+ "80058": "中国科学院大气物理研究所",
+ "80060": "中国科学院地理科学与资源研究所",
+ "80061": "中科院南京地理与湖泊研究所",
+ "80062": "中国科学院东北地理与农业生态研究所",
+ "80063": "中科院成都山地灾害与环境研究所",
+ "80065": "中国科学院地球化学研究所",
+ "80068": "中国科学院海洋研究所",
+ "80070": "遥感应用研究所",
+ "80073": "空间科学与应用研究中心",
+ "80074": "中科院中国遥感卫星地面站",
+ "80075": "中科院地质与地球物理研究所",
+ "80076": "中科院寒区旱区环境与工程研究所",
+ "80080": "南京天文仪器研制中心",
+ "80102": "中国科学院新疆生态与地理研究所",
+ "80103": "中科院动物研究所",
+ "80104": "中国科学院昆明动物研究所",
+ "80105": "中科院植物研究所",
+ "80106": "中科院昆明植物研究所",
+ "80108": "中国科学院武汉植物园",
+ "80110": "中科院成都生物研究所",
+ "80112": "中国科学院生物物理研究所",
+ "80113": "中科院微生物所",
+ "80119": "中国科学院水生生物研究所",
+ "80121": "中国科学院遗传与发育生物学研究所",
+ "80122": "中国科学院西北高原生物研究所",
+ "80123": "中国科学院上海药物研究所",
+ "80124": "中国科学院武汉病毒研究所",
+ "80125": "中科院心理研究所",
+ "80126": "中国科学院南京土壤研究所",
+ "80127": "中科院沈阳应用生态所",
+ "80128": "中国科学院西双版纳热带植物园",
+ "80129": "中国科学院水土保持与生态环境研究中心",
+ "80132": "中国科学院计算技术研究所",
+ "80133": "中科院沈阳计算技术所",
+ "80135": "中国科学院工程热物理研究所",
+ "80136": "中科院半导体所",
+ "80137": "中科院电子学所",
+ "80138": "中科院上海微系统与信息技术所",
+ "80139": "中科院长春光学精密机械与物理研究所",
+ "80140": "中国科学院上海光学精密机械研究所",
+ "80142": "中科院西安光学精密机械研究所",
+ "80143": "中国科学院上海技术物理研究所",
+ "80144": "中科院金属研究所",
+ "80146": "中科院自动化所",
+ "80147": "中科院沈阳自动化所",
+ "80148": "中科院电工研究所",
+ "80150": "中科院软件研究所",
+ "80151": "中国科学院光电技术研究所",
+ "80153": "中科院成都计算机应用研究所",
+ "80155": "中科院文献情报中心",
+ "80156": "中科院遗传发育所农业资源中心",
+ "80158": "中科院地球环境研究所",
+ "80159": "中科院微电子研究所",
+ "80160": "中国科学院计算机网络信息中心",
+ "80162": "中国科学院亚热带农业生态研究所",
+ "80163": "中科院南京天文仪器研制中心",
+ "80164": "科技政策与管理科学研究所",
+ "80166": "中科院国家天文台乌鲁木齐天文站",
+ "80167": "中国科学院北京基因组研究所",
+ "80168": "中国科学院合肥物质科学研究院",
+ "80176": "中国科学院上海免疫与感染研究所",
+ "80177": "中国科学院深圳先进技术研究院",
+ "80184": "中国科学院上海高等研究院",
+ "80189": "中国科学院分子细胞科学卓越创新中心",
+ "80190": "中国科学院脑科学与智能技术卓越创新中心",
+ "80191": "中国科学院分子植物科学卓越创新中心",
+ "80192": "中国科学院上海营养与健康研究所",
+ "80193": "中国科学院微小卫星创新研究院",
+ "80201": "中国社会科学院研究生院",
+ "80202": "国家行政学院",
+ "80401": "北京国家会计学院",
+ "80402": "上海国家会计学院",
+ "80403": "厦门国家会计学院",
+ "80901": "中国科学技术信息研究所",
+ "81601": "中国财政科学研究院",
+ "82001": "商务部国际贸易经济合作研究院",
+ "82101": "中国农业科学院研究生院",
+ "82110": "中国兽医药品监察所",
+ "82201": "中国林业科学研究院",
+ "82301": "中国水利水电科学研究院",
+ "82302": "中国电力科学研究院",
+ "82303": "国网电力科学研究院",
+ "82304": "西安热工研究院",
+ "82305": "长江科学院",
+ "82306": "南京水利科学研究院",
+ "82401": "中国建筑科学研究院",
+ "82402": "中国城市规划设计研究院",
+ "82403": "中国建筑设计研究院",
+ "82405": "中国环境科学研究院",
+ "82501": "中国地质科学院",
+ "82601": "钢铁研究总院",
+ "82602": "中冶集团建筑研究总院",
+ "82603": "长沙矿冶研究院",
+ "82604": "中钢集团马鞍山矿山研究院",
+ "82605": "冶金自动化研究设计院",
+ "82606": "洛阳耐火材料研究院",
+ "82608": "中钢集团天津地质研究院有限公司",
+ "82609": "中钢集团武汉安全环保研究院",
+ "82701": "机械科学研究总院",
+ "82702": "北京机械工业自动化研究所",
+ "82703": "北京机电研究所",
+ "82705": "沈阳铸造研究所",
+ "82706": "机械科学研究院哈尔滨焊接研究所",
+ "82707": "上海材料研究所",
+ "82708": "郑州机械研究所",
+ "82709": "武汉材料保护研究所",
+ "82715": "中国农业机械化科学研究院",
+ "82717": "上海发电设备成套设计研究院",
+ "82718": "上海内燃机研究所",
+ "82720": "洛阳船舶材料研究所",
+ "82721": "郑州机电工程研究所",
+ "82801": "中国原子能科学研究院",
+ "82802": "中国核动力研究设计院",
+ "82803": "核工业第二研究设计院",
+ "82804": "核工业理化工程研究院",
+ "82805": "上海核工程研究设计院",
+ "82806": "核工业北京地质研究院",
+ "82807": "核工业北京化工冶金研究院",
+ "82808": "中国辐射防护研究院",
+ "82809": "核工业西南物理研究院",
+ "82818": "中国工程物理研究院",
+ "82901": "中国航空研究院",
+ "82902": "北京航空精密机械研究所",
+ "82903": "中国航空研究院 601 所",
+ "82904": "中国航空工业总公司第 603 研究所",
+ "82905": "中国航空研究院 606 所",
+ "82906": "中国航空研究院 611 研究所",
+ "82907": "中国空空导弹研究院",
+ "82908": "中国航空研究院 613 所",
+ "82909": "中国航空研究院 623 所",
+ "82910": "中国航空研究院第六二四研究所",
+ "82911": "中国飞行试验研究院",
+ "82912": "中国航空研究院 631 所",
+ "82913": "北京航空材料研究院",
+ "82914": "中国航空制造技术研究院",
+ "82920": "中国航空工业规划设计研究院",
+ "82925": "中国航发湖南动力机械研究所",
+ "82927": "中国航空研究院 609 所",
+ "82928": "中国航空研究院 627 研究所",
+ "82929": "中国航空研究院 626 所",
+ "82931": "中国航空工业总公司第 628 研究所",
+ "82932": "北京长城计量测试技术研究所",
+ "82936": "中国航空研究院 618 所",
+ "82937": "中国航空研究院 640 所",
+ "82938": "中国航空研究院 602 所",
+ "82961": "中国航空研究院 610 所",
+ "83000": "中国电子科技集团公司电子科学研究院",
+ "83001": "华北计算机系统工程研究所",
+ "83002": "华北计算技术研究所",
+ "83003": "北京真空电子技术研究所",
+ "83004": "河北半导体研究所",
+ "83005": "南京电子技术研究所",
+ "83006": "中国电波传播研究所",
+ "83007": "南京电子器件研究所",
+ "83008": "西南通信研究所",
+ "83009": "华东计算技术研究所",
+ "83010": "通信测控技术研究所",
+ "83011": "华北光电技术研究所",
+ "83101": "西安近代化学研究所",
+ "83102": "内蒙古金属材料研究所",
+ "83103": "西安应用光学研究所",
+ "83104": "昆明物理研究所",
+ "83105": "西南技术物理研究所",
+ "83106": "北方自动控制技术研究所",
+ "83107": "中国北方车辆研究所",
+ "83109": "西安机电信息技术研究所",
+ "83110": "陕西应用物理化学研究所",
+ "83111": "中国兵器工业第 202 研究所",
+ "83112": "中国兵器工业第 203 研究所",
+ "83113": "中国兵器工业第 206 研究所",
+ "83114": "西南自动化研究所",
+ "83115": "山东非金属材料研究所",
+ "83116": "中国兵器装备研究院",
+ "83201": "中国运载火箭技术研究院",
+ "83221": "中国航天科工集团第二研究院",
+ "83232": "中国航天系统科学与工程研究院",
+ "83233": "中国航天科技集团公司第十六研究所",
+ "83241": "中国航天科工集团第三研究院",
+ "83245": "中国航天科工集团三院 8357 研究所",
+ "83246": "中国航天科工集团三院 8358 研究所",
+ "83256": "航天动力技术研究院",
+ "83258": "中国航天科技集团公司第四研究院 42 所",
+ "83266": "中国空间技术研究院",
+ "83269": "中国空间技术研究院 504 所",
+ "83271": "中国空间技术研究院兰州空间技术物理研究所",
+ "83276": "中国航天工业总公司西安微电子技术研究所",
+ "83277": "中国航天空气动力技术研究院",
+ "83278": "中国航天科技集团有限公司第六研究院第十一研究所",
+ "83285": "上海航天技术研究院",
+ "83286": "中国航天科工集团第十研究院",
+ "83301": "煤炭科学研究总院",
+ "83303": "煤科院上海分院",
+ "83304": "煤科院抚顺分院",
+ "83306": "煤科院西安分院",
+ "83307": "煤科院唐山分院",
+ "83309": "煤科院北京建井研究所",
+ "83310": "煤科院北京煤化研究所",
+ "83311": "煤科院北京开采研究所",
+ "83401": "中国石油勘探开发研究院",
+ "83501": "北京化工研究院",
+ "83502": "上海化工研究院",
+ "83503": "沈阳化工研究院",
+ "83504": "北京橡胶工业研究设计院",
+ "83505": "天华化工机械及自动化研究设计院有限公司",
+ "83702": "北京市科学技术研究院资源环境研究所",
+ "83704": "中国日用化学工业研究院",
+ "83705": "中国食品发酵工业研究院",
+ "83706": "中国制浆造纸研究院有限公司",
+ "83801": "中国铁道科学研究院",
+ "83901": "上海船舶运输科学研究所",
+ "83902": "交通运输部公路科学研究所",
+ "84001": "电信科学技术研究院",
+ "84002": "电信科学技术第一研究所",
+ "84003": "电信科学技术第四研究所",
+ "84004": "电信科学技术第五研究所",
+ "84011": "武汉邮电科学研究院",
+ "84201": "中国艺术研究院",
+ "84202": "中国电影艺术研究中心",
+ "84501": "中国疾病预防控制中心",
+ "84502": "中国中医科学院",
+ "84503": "中国食品药品检定研究院",
+ "84504": "北京生物制品研究所",
+ "84505": "上海生物制品研究所",
+ "84506": "武汉生物制品研究所",
+ "84507": "兰州生物制品研究所",
+ "84508": "中日友好临床医学研究所",
+ "84509": "长春生物制品研究所",
+ "84512": "卫生部北京老年医学研究所",
+ "84601": "国家体育总局体育科学研究所",
+ "84901": "中国建筑材料科学研究总院",
+ "85101": "中国气象科学研究院",
+ "85301": "自然资源部第一海洋研究所",
+ "85302": "自然资源部第二海洋研究所",
+ "85303": "自然资源部第三海洋研究所",
+ "85304": "国家海洋环境预报中心",
+ "85305": "国家海洋技术中心",
+ "85401": "中国地震局地球物理研究所",
+ "85402": "中国地震局地质研究所",
+ "85403": "中国地震局兰州地震研究所",
+ "85404": "中国地震局地震研究所",
+ "85405": "中国地震局地震预测研究所",
+ "85406": "中国地震局工程力学研究所",
+ "85407": "应急管理部国家自然灾害防治研究院",
+ "85801": "中国计量科学研究院",
+ "85802": "中国测绘科学研究院",
+ "85901": "中国医药工业研究总院",
+ "85902": "四川抗菌素工业研究所",
+ "86201": "中国舰船研究院",
+ "86202": "武汉数字工程研究所",
+ "86203": "中国舰船研究设计中心",
+ "86204": "杭州应用声学研究所",
+ "86205": "中国船舶科学研究中心",
+ "86206": "中国船舶及海洋工程设计研究院",
+ "86207": "上海船舶设备研究所",
+ "86208": "上海船用柴油机研究所",
+ "86209": "哈尔滨船舶锅炉涡轮机研究所",
+ "86210": "江苏自动化研究所",
+ "86211": "天津航海仪器研究所",
+ "86212": "西安精密机械研究所",
+ "86215": "武汉船用电力推进装置研究所",
+ "86216": "武汉华中光电技术研究所",
+ "86217": "武汉船舶通信研究所",
+ "86218": "武汉第二船舶设计研究所",
+ "86219": "上海船舶电子设备研究所",
+ "86220": "大连测控技术研究所",
+ "86221": "中国舰船研究院邯郸净化设备研究所",
+ "86222": "中国舰船研究院宜昌测试技术研究所",
+ "86223": "扬州船用电子仪器研究所",
+ "86224": "南京船舶雷达研究所",
+ "86301": "中国石油化工股份有限公司石油化工科学研究院",
+ "86401": "昆明贵金属研究所",
+ "86402": "北京矿冶研究总院",
+ "86403": "北京有色金属研究总院",
+ "86404": "长沙矿山研究院",
+ "86406": "中共广东省委党校",
+ "86601": "郑州烟草研究院",
+ "87102": "北京市科学技术研究院城市安全与环境科学研究所",
+ "87103": "北京市生态环境保护科学研究院",
+ "87110": "北京市心肺血管疾病研究所",
+ "87111": "北京市市政工程研究院",
+ "87112": "北京市结核病胸部肿瘤研究所",
+ "87113": "北京市创伤骨科研究所",
+ "87120": "首都儿科研究所",
+ "87401": "山西省中医药研究院",
+ "87801": "黑龙江省中医药科学院",
+ "87802": "黑龙江省社会科学院",
+ "87804": "黑龙江省科学院",
+ "87901": "上海市计算技术研究所",
+ "87902": "上海国际问题研究院",
+ "87903": "上海社会科学院",
+ "88001": "江苏省植物研究所",
+ "88002": "江苏省血吸虫病防治研究所",
+ "88101": "浙江省医学科学院",
+ "88701": "湖北省社会科学院",
+ "88901": "广东省社会科学院",
+ "88911": "广东省心血管病研究所",
+ "89101": "四川省社会科学院",
+ "89611": "中共北京市委党校",
+ "89621": "中共辽宁省委党校",
+ "89622": "中共吉林省委党校",
+ "89623": "中共黑龙江省委党校",
+ "89631": "中共上海市委党校",
+ "89632": "中共江苏省委党校",
+ "89633": "中共浙江省委党校",
+ "89637": "中共山东省委党校",
+ "89642": "中共湖北省委党校",
+ "89643": "中共湖南省委党校",
+ "89651": "中共四川省委党校",
+ "89655": "中共重庆市委党校",
+ "89661": "中共陕西省委党校",
+ "90106": "军事医学科学院",
+ "91001": "国防大学",
+ "91002": "国防科技大学",
+ "91004": "陆军工程大学",
+ "91012": "陆军军医大学",
+ "91014": "中国人民解放军陆军勤务学院",
+ "91016": "海军工程大学",
+ "91020": "海军军医大学",
+ "91024": "中国人民解放军空军工程大学",
+ "91030": "空军军医大学",
+ "91034": "火箭军工程大学",
+ "91036": "航天工程大学",
+ "91037": "中国人民解放军战略支援部队信息工程大学",
+ "91101": "军事科学院",
+ "91102": "解放军医学院"
+ }
+}
\ No newline at end of file
diff --git a/src/layouts/GlobalLayout.vue b/src/layouts/GlobalLayout.vue
new file mode 100644
index 0000000..f98df9f
--- /dev/null
+++ b/src/layouts/GlobalLayout.vue
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/layouts/HomeLayout.vue b/src/layouts/HomeLayout.vue
new file mode 100644
index 0000000..0515b01
--- /dev/null
+++ b/src/layouts/HomeLayout.vue
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ item.title }}
+
+
+
+
+
+
+
+
+
+
琼公网安备46010002000584号
+
+
+
+
海口龙华海宇网络技术服务工作室版权所有
+
+
+
+
+
+
+
diff --git a/src/layouts/PageLayout.vue b/src/layouts/PageLayout.vue
new file mode 100644
index 0000000..0ffa498
--- /dev/null
+++ b/src/layouts/PageLayout.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main.js b/src/main.js
new file mode 100644
index 0000000..de3950e
--- /dev/null
+++ b/src/main.js
@@ -0,0 +1,29 @@
+import 'nprogress/nprogress.css'; // 默认样式,可根据需要自定义样式
+import './assets/main.css'
+import { createApp } from 'vue'
+import { createPinia } from 'pinia'
+import App from './App.vue'
+import router from './router'
+import 'vant/lib/index.css';
+import { useSEO } from './composables/useSEO'
+
+const app = createApp(App)
+app.use(createPinia())
+app.use(router)
+
+app.mount('#app')
+
+// 在应用挂载后初始化SEO功能,确保路由已准备好
+router.isReady().then(() => {
+ const { updateSEOByRoute } = useSEO()
+})
+
+document.addEventListener('DOMContentLoaded', () => {
+ const loadingElement = document.getElementById('app-loading');
+ if (loadingElement) {
+ loadingElement.style.opacity = '0';
+ setTimeout(() => {
+ loadingElement.parentNode.removeChild(loadingElement);
+ }, 500); // 动画过渡时间
+ }
+});
\ No newline at end of file
diff --git a/src/router/index.js b/src/router/index.js
new file mode 100644
index 0000000..2ebc21e
--- /dev/null
+++ b/src/router/index.js
@@ -0,0 +1,467 @@
+import { createRouter, createWebHistory } from 'vue-router'
+import NProgress from 'nprogress'
+import GlobalLayout from '@/layouts/GlobalLayout.vue'
+import HomeLayout from '@/layouts/HomeLayout.vue'
+import PageLayout from '@/layouts/PageLayout.vue'
+import index from '@/views/index.vue'
+import Promote from '@/views/Promote.vue'
+import { useAgentStore } from '@/stores/agentStore'
+import { useUserStore } from '@/stores/userStore'
+import { useDialogStore } from '@/stores/dialogStore'
+import { useEnv } from '@/composables/useEnv'
+import { storeToRefs } from 'pinia'
+import { useSEO } from '@/composables/useSEO'
+
+const router = createRouter({
+ history: createWebHistory(import.meta.env.BASE_URL),
+ // 路由切换时的滚动行为
+ scrollBehavior(to, from, savedPosition) {
+ // 如果有保存的位置(浏览器前进/后退)
+ if (savedPosition) {
+ return savedPosition;
+ } else {
+ // 否则滚动到顶部
+ return { top: 0, behavior: "smooth" };
+ }
+ },
+ routes: [
+ {
+ path: '/',
+ component: GlobalLayout, // 使用 Layout 作为父组件
+ children: [
+ {
+ path: '',
+ component: HomeLayout, // 使用 Layout 作为父组件
+ children: [
+ {
+ path: '',
+ name: 'index',
+ component: index,
+ },
+ {
+ path: '/agent/promote',
+ name: 'promote',
+ component: Promote,
+ meta: {
+ requiresAuth: true,
+ requiresAgent: true,
+ },
+ },
+ {
+ path: '/agent',
+ name: 'agent',
+ component: () => import('@/views/Agent.vue'),
+ },
+ {
+ path: 'me',
+ name: 'me',
+ component: () => import('@/views/Me.vue'),
+ },
+ ],
+ },
+ {
+ path: '',
+ component: PageLayout,
+ children: [
+ {
+ path: '/historyQuery',
+ name: 'history',
+ component: () => import('@/views/HistoryQuery.vue'),
+ meta: { title: '历史报告', requiresAuth: true },
+ },
+ {
+ path: '/help',
+ name: 'help',
+ component: () => import('@/views/Help.vue'),
+ meta: { title: '帮助中心' },
+ },
+ {
+ path: '/help/detail',
+ name: 'helpDetail',
+ component: () => import('@/views/HelpDetail.vue'),
+ meta: { title: '帮助中心' },
+ },
+ {
+ path: '/help/guide',
+ name: 'helpGuide',
+ component: () => import('@/views/HelpGuide.vue'),
+ meta: { title: '引导指南' },
+ },
+ {
+ path: '/withdraw',
+ name: 'withdraw',
+ component: () => import('@/views/Withdraw.vue'),
+ meta: { title: '提现', requiresAuth: true },
+ },
+ {
+ path: '/service',
+ name: 'service',
+ component: () => import('@/views/Service.vue'),
+ meta: { title: '客服' },
+ },
+ {
+ path: '/complaint',
+ name: 'complaint',
+ component: () => import('@/views/Complaint.vue'),
+ meta: { title: '投诉' },
+ },
+ {
+ path: '/report',
+ name: 'report',
+ component: () => import('@/views/Report.vue'),
+ meta: {
+ title: '报告结果', requiresAuth: true, notNeedBindPhone: true
+ },
+ },
+ {
+ path: '/example',
+ name: 'example',
+ component: () => import('@/views/Example.vue'),
+ meta: { title: '示例报告', notNeedBindPhone: true },
+ },
+ {
+ path: '/vant-theme-test',
+ name: 'vantThemeTest',
+ component: () => import('@/views/VantThemeTest.vue'),
+ meta: { title: 'Vant主题色测试' },
+ },
+ {
+ path: '/privacyPolicy',
+ name: 'privacyPolicy',
+ component: () => import('@/views/PrivacyPolicy.vue'),
+ meta: { title: '隐私政策' },
+ },
+ {
+ path: '/userAgreement',
+ name: 'userAgreement',
+ component: () => import('@/views/UserAgreement.vue'),
+ meta: { title: '用户协议' },
+ },
+ {
+ path: '/agentManageAgreement',
+ name: 'agentManageAgreement',
+ component: () => import('@/views/AgentManageAgreement.vue'),
+ meta: { title: '代理管理协议' },
+ },
+ {
+ path: '/agentSerivceAgreement',
+ name: 'agentSerivceAgreement',
+ component: () => import('@/views/AgentServiceAgreement.vue'),
+ meta: { title: '信息技术服务合同' },
+ },
+ {
+ path: '/inquire/marriage',
+ name: 'inquire-marriage',
+ component: () => import('@/views/Maintenance.vue'),
+ meta: { title: '维护通知' },
+ },
+ {
+ path: '/inquire/:feature',
+ name: 'inquire',
+ component: () => import('@/views/Inquire.vue'),
+ meta: { title: '查询报告' },
+ },
+
+ {
+ path: '/authorization',
+ name: 'authorization',
+ component: () => import('@/views/Authorization.vue'),
+ meta: { title: '授权书' },
+ },
+ {
+ path: '/payment/result',
+ name: 'paymentResult',
+ component: () => import('@/views/PaymentResult.vue'),
+ meta: { title: '支付结果', requiresAuth: true },
+ },
+ ],
+ },
+ {
+ path: 'agent',
+ component: PageLayout,
+ children: [
+ {
+ path: 'promoteDetails',
+ name: 'promoteDetails',
+ component: () => import('@/views/AgentPromoteDetails.vue'),
+ meta: {
+ title: '直推报告收益明细',
+ requiresAuth: true,
+ requiresAgent: true,
+ },
+ },
+ {
+ path: 'rewardsDetails',
+ name: 'rewardsDetails',
+ component: () => import('@/views/AgentRewardsDetails.vue'),
+ meta: {
+ title: '代理奖励收益明细',
+ requiresAuth: true,
+ requiresAgent: true,
+ },
+ },
+
+ {
+ path: 'invitation',
+ name: 'invitation',
+ component: () => import('@/views/Invitation.vue'),
+ meta: {
+ title: '邀请下级',
+ requiresAuth: true,
+ requiresAgent: true,
+ },
+ },
+ {
+ path: 'agentVip',
+ name: 'agentVip',
+ component: () => import('@/views/AgentVip.vue'),
+ meta: {
+ title: '代理会员',
+ requiresAuth: true,
+ requiresAgent: true,
+ },
+ },
+ {
+ path: 'vipApply',
+ name: 'agentVipApply',
+ component: () => import('@/views/AgentVipApply.vue'),
+ meta: {
+ title: 'VIP代理申请',
+ requiresAuth: true,
+ requiresAgent: true,
+ },
+ },
+ {
+ path: 'vipConfig',
+ name: 'agentVipConfig',
+ component: () => import('@/views/AgentVipConfig.vue'),
+ meta: {
+ title: '代理会员报告配置',
+ requiresAuth: true,
+ requiresAgent: true,
+ },
+ },
+ {
+ path: 'withdraw',
+ name: 'withdraw',
+ component: () => import('@/views/Withdraw.vue'),
+ meta: {
+ title: '提现',
+ requiresAuth: true,
+ requiresAgent: true,
+ },
+ },
+ {
+ path: 'withdrawDetails',
+ name: 'withdrawDetails',
+ component: () => import('@/views/WithdrawDetails.vue'),
+ meta: {
+ title: '提现记录',
+ requiresAuth: true,
+ requiresAgent: true,
+ },
+ },
+ {
+ path: 'invitationAgentApply/self',
+ name: 'invitationAgentApplySelf',
+ component: () => import('@/views/InvitationAgentApply.vue'),
+ meta: { title: '代理申请', requiresAuth: true },
+ },
+ {
+ path: 'subordinateList',
+ name: 'subordinateList',
+ component: () => import('@/views/SubordinateList.vue'),
+ meta: {
+ title: '我的下级',
+ requiresAuth: true,
+ requiresAgent: true,
+ },
+ },
+ {
+ path: 'subordinateDetail/:id',
+ name: 'subordinateDetail',
+ component: () => import('@/views/SubordinateDetail.vue'),
+ meta: {
+ title: '下级贡献详情',
+ requiresAuth: true,
+ requiresAgent: true,
+ },
+ },
+ ],
+ },
+ {
+ path: 'app',
+ children: [
+ {
+ path: 'authorization',
+ name: 'appAuthorization',
+ component: () => import('@/views/Authorization.vue'),
+ meta: { title: '授权书' },
+ },
+ {
+ path: 'privacyPolicy',
+ name: 'appPrivacyPolicy',
+ component: () => import('@/views/PrivacyPolicy.vue'),
+ meta: { title: '隐私政策' },
+ },
+ {
+ path: 'userAgreement',
+ name: 'appUserAgreement',
+ component: () => import('@/views/UserAgreement.vue'),
+ meta: { title: '用户协议' },
+ },
+ {
+ path: 'agentManageAgreement',
+ name: 'appAgentManageAgreement',
+ component: () => import('@/views/AgentManageAgreement.vue'),
+ meta: { title: '代理管理协议' },
+ },
+ {
+ path: 'agentSerivceAgreement',
+ name: 'appAgentSerivceAgreement',
+ component: () => import('@/views/AgentServiceAgreement.vue'),
+ meta: { title: '信息技术服务合同' },
+ },
+ ],
+ },
+ ],
+ },
+
+ {
+ path: '/login',
+ name: 'login',
+ component: () => import('@/views/Login.vue'),
+ },
+ {
+ path: '/agent/promotionInquire/:linkIdentifier',
+ name: 'promotionInquire',
+ component: () => import('@/views/PromotionInquire.vue'),
+ meta: { notNeedBindPhone: true },
+ },
+ {
+ path: '/agent/invitationAgentApply/:linkIdentifier',
+ name: 'invitationAgentApply',
+ component: () => import('@/views/InvitationAgentApply.vue'),
+ meta: { title: '代理申请' },
+ },
+ {
+ path: '/report/share/:linkIdentifier',
+ name: 'reportShare',
+ component: () => import('@/views/ReportShare.vue'),
+ },
+ {
+ path: '/:pathMatch(.*)*',
+ name: 'NotFound',
+ component: () => import('@/views/NotFound.vue'),
+ },
+ ],
+})
+NProgress.configure({
+ easing: 'ease', // 动画方式
+ speed: 500, // 递增进度条的速度(毫秒)
+ showSpinner: false, // 是否显示加载的圆圈
+ trickleSpeed: 200, // 自动递增间隔
+ minimum: 0.3, // 初始化最小百分比
+})
+
+// 路由导航守卫
+router.beforeEach(async (to, from, next) => {
+ NProgress.start(); // 启动进度条
+ const isAuthenticated = localStorage.getItem("token");
+ const agentStore = useAgentStore();
+ const userStore = useUserStore();
+ const dialogStore = useDialogStore();
+ const authStore = useAuthStore();
+ const { isWeChat } = useEnv();
+ const { isAgent, isLoaded } = storeToRefs(agentStore);
+ const { mobile, isLoggedIn } = storeToRefs(userStore);
+ const { isWeixinAuthing, weixinAuthComplete } = storeToRefs(authStore);
+
+ // 微信环境下,如果正在进行授权,等待授权完成
+ if (isWeChat.value && isWeixinAuthing.value && !weixinAuthComplete.value) {
+ // 等待授权完成,使用响应式监听
+ await new Promise((resolve) => {
+ const stopWatcher = watch(
+ [isWeixinAuthing, weixinAuthComplete],
+ ([authing, complete]) => {
+ if (!authing || complete) {
+ stopWatcher();
+ resolve();
+ }
+ },
+ { immediate: true }
+ );
+ });
+ }
+
+ // 处理需要登录的页面
+ if (to.meta.requiresAuth && !isAuthenticated) {
+ if (isWeChat.value) {
+ // 微信环境下,如果授权失败或超时,重定向到首页
+ if (!weixinAuthComplete.value) {
+ next("/");
+ location.reload();
+ } else {
+ // 授权完成但仍无token,可能是授权失败
+ next("/");
+ location.reload();
+ }
+ } else {
+ next("/login");
+ }
+ return;
+ }
+
+ // 已登录状态下的处理
+ if (isAuthenticated) {
+ // 确保用户信息已加载
+ if (!isLoggedIn.value) {
+ await userStore.fetchUserInfo();
+ }
+
+ // 检查手机号绑定状态
+ // 只有在未绑定手机号,且目标路由需要登录并且没有设置notNeedBindPhone时,才弹出绑定手机号弹窗
+ if (
+ !mobile.value &&
+ to.meta.requiresAuth &&
+ !to.meta.notNeedBindPhone
+ ) {
+ dialogStore.openBindPhone();
+ next(false);
+ return;
+ }
+
+ // 检查代理权限
+ if (to.meta.requiresAgent) {
+ if (!isLoaded.value) {
+ await agentStore.fetchAgentStatus();
+ }
+ if (!isAgent.value) {
+ next("/agent/invitationAgentApply/self");
+ return;
+ }
+ }
+ }
+
+ // 其他情况正常通过
+ next();
+})
+
+router.afterEach((to) => {
+ NProgress.done() // 结束进度条
+
+ // SEO优化:更新页面标题和meta信息
+ const { updateSEO } = useSEO()
+
+ // 根据路由meta信息更新SEO
+ if (to.meta.title) {
+ const seoConfig = {
+ title: `${to.meta.title} - 幸福查`,
+ description: `幸福查${to.meta.title}页面,提供专业的大数据风险管控服务。`,
+ url: `https://www.zhinengcha.cn${to.path}`
+ }
+ updateSEO(seoConfig)
+ }
+})
+
+export default router
diff --git a/src/stores/agentStore.js b/src/stores/agentStore.js
new file mode 100644
index 0000000..f31a786
--- /dev/null
+++ b/src/stores/agentStore.js
@@ -0,0 +1,76 @@
+import { defineStore } from 'pinia'
+
+export const useAgentStore = defineStore('agent', {
+ state: () => ({
+ isLoaded: false,
+ level: '',
+ status: 3, // 0=待审核,1=审核通过,2=审核未通过,3=未申请
+ isAgent: false,
+ ancestorID: null,
+ agentID: null,
+ mobile: '',
+ ExpiryTime: '',
+ isRealName: false,
+ }),
+ actions: {
+ async fetchAgentStatus() {
+ const { data, error } = await useApiFetch('/agent/info').get().json()
+
+ if (data.value && !error.value) {
+ if (data.value.code === 200) {
+ this.level = data.value.data.level
+ this.isAgent = data.value.data.is_agent // 判断是否是代理
+ this.status = data.value.data.status // 获取代理状态 0=待审核,1=审核通过,2=审核未通过,3=未申请
+ this.agentID = data.value.data.agent_id
+ this.mobile = data.value.data.mobile
+ this.ExpiryTime = data.value.data.expiry_time
+ this.isRealName = data.value.data.is_real_name
+
+ // 保存到localStorage
+ localStorage.setItem(
+ 'agentInfo',
+ JSON.stringify({
+ isAgent: this.isAgent,
+ level: this.level,
+ status: this.status,
+ agentID: this.agentID,
+ mobile: this.mobile,
+ ExpiryTime: this.ExpiryTime,
+ isRealName: this.isRealName,
+
+ })
+ )
+ } else {
+ console.log('Error fetching agent info', data.value)
+ }
+ }
+ this.isLoaded = true
+ },
+
+ // 更新代理信息
+ updateAgentInfo(agentInfo) {
+ if (agentInfo) {
+ this.isAgent = agentInfo.isAgent || false
+ this.level = agentInfo.level || ''
+ this.status = agentInfo.status || 3
+ this.agentID = agentInfo.agentID || null
+ this.mobile = agentInfo.mobile || ''
+ this.isLoaded = true
+ this.isRealName = agentInfo.isRealName || false
+
+ }
+ },
+
+ // 重置代理信息
+ resetAgent() {
+ this.isLoaded = false
+ this.level = ''
+ this.status = 3
+ this.isAgent = false
+ this.ancestorID = null
+ this.agentID = null
+ this.mobile = ''
+ this.isRealName = false
+ },
+ },
+})
diff --git a/src/stores/authStore.js b/src/stores/authStore.js
new file mode 100644
index 0000000..96a96a2
--- /dev/null
+++ b/src/stores/authStore.js
@@ -0,0 +1,73 @@
+import { defineStore } from "pinia";
+
+export const useAuthStore = defineStore("auth", {
+ state: () => ({
+ // 微信授权状态
+ isWeixinAuthing: false, // 是否正在进行微信授权
+ weixinAuthComplete: false, // 微信授权是否完成
+ pendingRoute: null, // 等待授权完成后跳转的路由
+ }),
+
+ actions: {
+ // 开始微信授权
+ startWeixinAuth(targetRoute = null) {
+ this.isWeixinAuthing = true;
+ this.weixinAuthComplete = false;
+ this.pendingRoute = targetRoute;
+
+ // 保存到localStorage,防止页面刷新后状态丢失
+ localStorage.setItem("weixinAuthing", "true");
+ if (targetRoute) {
+ localStorage.setItem(
+ "pendingRoute",
+ JSON.stringify(targetRoute)
+ );
+ }
+ },
+
+ // 微信授权完成
+ completeWeixinAuth() {
+ this.isWeixinAuthing = false;
+ this.weixinAuthComplete = true;
+
+ // 清除localStorage中的授权状态
+ localStorage.removeItem("weixinAuthing");
+ localStorage.removeItem("pendingRoute");
+ },
+
+ // 清除待处理路由
+ clearPendingRoute() {
+ this.pendingRoute = null;
+ localStorage.removeItem("pendingRoute");
+ },
+
+ // 重置授权状态
+ resetAuthState() {
+ this.isWeixinAuthing = false;
+ this.weixinAuthComplete = false;
+ this.pendingRoute = null;
+ localStorage.removeItem("weixinAuthing");
+ localStorage.removeItem("pendingRoute");
+ },
+
+ // 从localStorage恢复状态(页面刷新后调用)
+ restoreFromStorage() {
+ const isAuthing = localStorage.getItem("weixinAuthing") === "true";
+ const pendingRouteStr = localStorage.getItem("pendingRoute");
+
+ if (isAuthing) {
+ this.isWeixinAuthing = true;
+ this.weixinAuthComplete = false;
+
+ if (pendingRouteStr) {
+ try {
+ this.pendingRoute = JSON.parse(pendingRouteStr);
+ } catch (e) {
+ console.error("Failed to parse pending route:", e);
+ this.pendingRoute = null;
+ }
+ }
+ }
+ },
+ },
+});
diff --git a/src/stores/dialogStore.js b/src/stores/dialogStore.js
new file mode 100644
index 0000000..c12908f
--- /dev/null
+++ b/src/stores/dialogStore.js
@@ -0,0 +1,44 @@
+import { defineStore } from 'pinia'
+import { ref } from 'vue'
+
+export const useDialogStore = defineStore('dialog', () => {
+ const showBindPhone = ref(false)
+ const showRealNameAuth = ref(false)
+ const showLogin = ref(false)
+
+ function openBindPhone() {
+ showBindPhone.value = true
+ }
+
+ function closeBindPhone() {
+ showBindPhone.value = false
+ }
+
+ function openRealNameAuth() {
+ showRealNameAuth.value = true
+ }
+
+ function closeRealNameAuth() {
+ showRealNameAuth.value = false
+ }
+
+ function openLogin() {
+ showLogin.value = true
+ }
+
+ function closeLogin() {
+ showLogin.value = false
+ }
+
+ return {
+ showBindPhone,
+ openBindPhone,
+ closeBindPhone,
+ showRealNameAuth,
+ openRealNameAuth,
+ closeRealNameAuth,
+ showLogin,
+ openLogin,
+ closeLogin,
+ }
+})
diff --git a/src/stores/userStore.js b/src/stores/userStore.js
new file mode 100644
index 0000000..0ec9a6c
--- /dev/null
+++ b/src/stores/userStore.js
@@ -0,0 +1,59 @@
+import { defineStore } from 'pinia'
+
+export const useUserStore = defineStore('user', {
+ state: () => ({
+ userName: '',
+ mobile: '',
+ userAvatar: '',
+ isLoggedIn: false,
+ }),
+ actions: {
+ async fetchUserInfo() {
+ const { data, error } = await useApiFetch('/user/detail').get().json()
+ if (data.value && !error.value) {
+ if (data.value.code === 200) {
+ const userinfo = data.value.data.userInfo
+ this.userName = userinfo.mobile || ''
+ this.mobile = userinfo.mobile || ''
+ this.userAvatar = userinfo.userAvatar
+ this.isLoggedIn = true
+
+ // 保存到localStorage
+ localStorage.setItem(
+ 'userInfo',
+ JSON.stringify({
+ nickName: this.userName,
+ avatar: this.userAvatar,
+ })
+ )
+ } else if (data.value.code === 100009) {
+ localStorage.removeItem('token')
+ localStorage.removeItem('refreshAfter')
+ localStorage.removeItem('accessExpire')
+ localStorage.removeItem('userInfo')
+ localStorage.removeItem('agentInfo')
+
+ this.resetUser()
+ window.location.reload()
+ }
+ } else {
+ }
+ },
+
+ // 更新用户信息
+ updateUserInfo(userInfo) {
+ if (userInfo) {
+ this.userName = userInfo.mobile || userInfo.nickName || ''
+ this.userAvatar = userInfo.avatar || ''
+ this.isLoggedIn = true
+ }
+ },
+
+ // 重置用户信息
+ resetUser() {
+ this.userName = ''
+ this.userAvatar = ''
+ this.isLoggedIn = false
+ },
+ },
+})
diff --git a/src/ui/CBehaviorRiskScan.vue b/src/ui/CBehaviorRiskScan.vue
new file mode 100644
index 0000000..7d72c4c
--- /dev/null
+++ b/src/ui/CBehaviorRiskScan.vue
@@ -0,0 +1,747 @@
+
+
+
+
+
+ 暂无风险行为扫描数据
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ getRiskTypeName(item.riskType) }}
+
+
+
+ {{ riskLevelText(item.riskLevel, 'gaming') }}
+
+
+
+
+
+
暂无反诈反赌核验数据
+
反诈反赌核验评估用户是否有涉及诈骗或赌博活动的风险
+
+
+
+
+
+
+
+
+ 定期更新密码,使用复杂且不易猜测的密码
+
+
+
+ 开启双因素认证,提高账户安全性
+
+
+
+ 不点击来源不明的链接或下载不明文件
+
+
+
+ 不向陌生人透露个人敏感信息
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CDWBG8B4D/components/ElementVerification.vue b/src/ui/CDWBG8B4D/components/ElementVerification.vue
new file mode 100644
index 0000000..f7e9d68
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/ElementVerification.vue
@@ -0,0 +1,202 @@
+
+
+
+
+
+
+
+
+
+ {{ getRiskFlagText(sfzeysFlag) }}
+
+
+
+
+
+
+
身份证二要素验证
+
+
+
+
+
+
+ {{ getResultText(personCheckDetails.result) }}
+
+
+
+
+
+
+
+
{{ personCheckDetails.ele || '身份证号、姓名' }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getRiskFlagText(sjsysFlag) }}
+
+
+
+
+
+
+
手机三要素验证
+
+
+
+
+
+
+ {{ getResultText(phoneCheckDetails.result) }}
+
+
+
+
+
+
+
+
{{ phoneCheckDetails.ele || '身份证号、手机号、姓名' }}
+
{{ phoneCheckDetails.phoneCompany || '运营商: 中国移动' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CDWBG8B4D/components/Identity.vue b/src/ui/CDWBG8B4D/components/Identity.vue
new file mode 100644
index 0000000..2f0d4e1
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/Identity.vue
@@ -0,0 +1,367 @@
+
+
+
+
+
+
+
+ {{ getOnlineTimeRiskText(inTime) }}
+
+
+
+
+
+
+
在网时长
+
+
+
+
+
+
+ {{ getOnlineTimeRiskText(inTime) }}
+
+
+
+
+
+
+
+
{{ getOnlineTimeText(inTime) }}
+
状态说明:{{ getOnlineTimeStatusText(inTime) }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getPhoneVailRiskText(phoneVailRiskFlag) }}
+
+
+
+
+
+
+
手机信息验证
+
+
+
+
+
+
+ {{ getPhoneVailRiskText(phoneVailRiskFlag) }}
+
+
+
+
+
+
+
+
手机状态:{{ phoneVailRisks.phoneStatus || '沉默号' }}
+
运营商:{{ phoneVailRisks.phoneCompany || '移动' }} 在网时长:{{
+ phoneVailRisks.phoneTimes || '3个月' }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getRiskFlagText(belongRiskFlag) }}
+
+
+
+
+
+
+
归属地风险
+
+
+
+
+
+ 身份证省份:
+ {{ belongRisks.personProvence || '江苏省' }}
+
+
+ 身份证城市:
+ {{ belongRisks.personCity || '徐州市' }}
+
+
+ 手机省份:
+ {{ belongRisks.phoneProvence || '江苏' }}
+
+
+ 手机城市:
+ {{ belongRisks.phoneCity || '徐州' }}
+
+
+ 手机卡类型:
+ {{ belongRisks.phoneCardType || '移动' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CDWBG8B4D/components/LeasingRiskSection.vue b/src/ui/CDWBG8B4D/components/LeasingRiskSection.vue
new file mode 100644
index 0000000..6cca2b4
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/LeasingRiskSection.vue
@@ -0,0 +1,492 @@
+
+
+
+
+
+
+
+
+
租赁风险评估概览
+
+
+ {{ getRiskFlagText(leasingRiskAssessment.riskFlag) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CDWBG8B4D/components/LoanEvaluationSection.vue b/src/ui/CDWBG8B4D/components/LoanEvaluationSection.vue
new file mode 100644
index 0000000..28e69e8
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/LoanEvaluationSection.vue
@@ -0,0 +1,526 @@
+
+
+
+
+
+
+
+
+
借贷评估概览
+
+
+ {{ getRiskFlagText(loanEvaluationVerificationDetail.riskFlag) }}
+
+
+
+
+
+
+
+
+
+
机构借贷表现
+
+
+
+
+
+
+
+
+
+
+
+
客户类型借贷表现
+
+
+
+
+
+
+
+
+
+
+
+
业务类型借贷表现
+
+
+
+
+
+
+
+
+
+
+
+
异常时间段借贷表现
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CDWBG8B4D/components/MultCourtInfoSection.vue b/src/ui/CDWBG8B4D/components/MultCourtInfoSection.vue
new file mode 100644
index 0000000..120879b
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/MultCourtInfoSection.vue
@@ -0,0 +1,521 @@
+
+
+
+
+
+
+
+
+
+
+
+
案件概览
+
+
+
+
+
+
{{ getCaseCount(multCourtInfo.legalCases) }}
+
涉案公告
+
+ {{ getCaseFlagText(multCourtInfo.legalCasesFlag) }}
+
+
+
+
{{ getCaseCount(multCourtInfo.executionCases) }}
+
执行公告
+
+ {{ getCaseFlagText(multCourtInfo.executionCasesFlag) }}
+
+
+
+
{{ getCaseCount(multCourtInfo.disinCases) }}
+
失信公告
+
+ {{ getCaseFlagText(multCourtInfo.disinCasesFlag) }}
+
+
+
+
{{ getCaseCount(multCourtInfo.limitCases) }}
+
限高公告
+
+ {{ getCaseFlagText(multCourtInfo.limitCasesFlag) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
涉案公告
+
+ {{ multCourtInfo.legalCases.length }}件
+
+
+
+
+
+
+
+
+
+
+
+ 案件类型:
+ {{ caseItem.caseType }}
+
+
+ 审理法院:
+ {{ caseItem.court }}
+
+
+ 诉讼地位:
+ {{ caseItem.litigantType }}
+
+
+ 立案时间:
+ {{ caseItem.filingTime }}
+
+
+ 结案时间:
+ {{ caseItem.disposalTime }}
+
+
+ 结案方式:
+ {{ caseItem.disposalMethod }}
+
+
+ 案由:
+ {{ caseItem.caseReason }}
+
+
+ 判决结果:
+ {{ caseItem.judgmentResult }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
执行案件
+
+ {{ multCourtInfo.executionCases.length }}件
+
+
+
+
+
+
+
+
+
+
+
+ 案件类型:
+ {{ caseItem.caseType }}
+
+
+ 执行法院:
+ {{ caseItem.court }}
+
+
+ 被执行人地位:
+ {{ caseItem.litigantType }}
+
+
+ 立案时间:
+ {{ caseItem.filingTime }}
+
+
+ 结案时间:
+ {{ caseItem.disposalTime }}
+
+
+ 执行金额:
+ {{ caseItem.executionAmount }}元
+
+
+ 已还款金额:
+ {{ caseItem.repaidAmount }}元
+
+
+ 案由:
+ {{ caseItem.caseReason }}
+
+
+ 结案方式:
+ {{ caseItem.disposalMethod }}
+
+
+ 执行结果:
+ {{ caseItem.judgmentResult }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
失信案件
+
+ {{ multCourtInfo.disinCases.length }}件
+
+
+
+
+
+
+
+
+
+
+
+ 案件类型:
+ {{ caseItem.caseType }}
+
+
+ 执行法院:
+ {{ caseItem.court }}
+
+
+ 被执行人地位:
+ {{ caseItem.litigantType }}
+
+
+ 立案时间:
+ {{ caseItem.filingTime }}
+
+
+ 结案时间:
+ {{ caseItem.disposalTime }}
+
+
+ 执行金额:
+ {{ caseItem.executionAmount }}元
+
+
+ 已还款金额:
+ {{ caseItem.repaidAmount }}元
+
+
+ 案由:
+ {{ caseItem.caseReason }}
+
+
+ 结案方式:
+ {{ caseItem.disposalMethod }}
+
+
+ 失信原因:
+ {{ caseItem.judgmentResult }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
限高案件
+
+ {{ multCourtInfo.limitCases.length }}件
+
+
+
+
+
+
+
+
+
+
+
+ 案件类型:
+ {{ caseItem.caseType }}
+
+
+ 执行法院:
+ {{ caseItem.court }}
+
+
+ 被执行人地位:
+ {{ caseItem.litigantType }}
+
+
+ 立案时间:
+ {{ caseItem.filingTime }}
+
+
+ 结案时间:
+ {{ caseItem.disposalTime }}
+
+
+ 执行金额:
+ {{ caseItem.executionAmount }}元
+
+
+ 已还款金额:
+ {{ caseItem.repaidAmount }}元
+
+
+ 案由:
+ {{ caseItem.caseReason }}
+
+
+ 结案方式:
+ {{ caseItem.disposalMethod }}
+
+
+ 限高原因:
+ {{ caseItem.judgmentResult }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ui/CDWBG8B4D/components/OverdueRiskSection.vue b/src/ui/CDWBG8B4D/components/OverdueRiskSection.vue
new file mode 100644
index 0000000..a8cd6b9
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/OverdueRiskSection.vue
@@ -0,0 +1,494 @@
+
+
+
+
+
+
+
+ {{ getOverdueStatusText(overdueRiskProduct.hasUnsettledOverdue) }}
+
+
+
+
+
+
+
逾期风险概览
+
+
+
+
+
+
{{
+ formatInstitutionInterval(overdueRiskProduct.currentOverdueInstitutionCount) }}
+
当前逾期机构数
+
+
+
{{
+ formatAmountInterval(overdueRiskProduct.currentOverdueAmount) }}
+
当前逾期金额
+
+
+
{{
+ formatInstitutionInterval(overdueRiskProduct.settledInstitutionCount) }}
+
已结清机构数
+
+
+
{{
+ formatInstitutionInterval(overdueRiskProduct.totalLoanInstitutions) }}
+
贷款总机构
+
+
+
+
+
+
+
+
+
+
+ {{ getOverdueTimeDistributionTagText(overdueRiskProduct) }}
+
+
+
+
+
+
+
逾期时间分布
+
+
+
+
+
{{ getOverdueTimeText(overdueRiskProduct.overdueLast1Day) }}
+
近1天
+
+
+
{{ getOverdueTimeText(overdueRiskProduct.overdueLast7Days) }}
+
近7天
+
+
+
{{ getOverdueTimeText(overdueRiskProduct.overdueLast14Days) }}
+
近14天
+
+
+
{{ getOverdueTimeText(overdueRiskProduct.overdueLast30Days) }}
+
近30天
+
+
+
+
+
+
+
+
+
+
+
+
+
还款统计
+
+
+
+
+
+ 最近一次成功还款距今天数
+ {{
+ formatDaysInterval(overdueRiskProduct.daysSinceLastSuccessfulRepayment) }}
+
+
+
+
+
+
+
+
+
+
+
最近7天
+
+
+
{{
+ formatCountInterval(overdueRiskProduct.repaymentFailureCountLast7Days) }}
+
失败次数
+
+
+
{{
+ formatAmountInterval(overdueRiskProduct.repaymentFailureAmountLast7Days) }}
+
失败金额
+
+
+
+
+
+
+
最近14天
+
+
+
{{
+ formatCountInterval(overdueRiskProduct.repaymentFailureCountLast14Days) }}
+
失败次数
+
+
+
{{
+ formatAmountInterval(overdueRiskProduct.repaymentFailureAmountLast14Days) }}
+
失败金额
+
+
+
+
+
+
+
最近1个月
+
+
+
{{
+ formatCountInterval(overdueRiskProduct.repaymentFailureCountLastMonth) }}
+
失败次数
+
+
+
{{
+ formatAmountInterval(overdueRiskProduct.repaymentFailureAmountLastMonth) }}
+
失败金额
+
+
+
+
+
+
+
最近3个月
+
+
+
{{
+ formatCountInterval(overdueRiskProduct.repaymentFailureCountLast3Months) }}
+
失败次数
+
+
+
{{
+ formatAmountInterval(overdueRiskProduct.repaymentFailureAmountLast3Months) }}
+
失败金额
+
+
+
+
+
+
+
+
+
+
+
+
+
+
最近7天
+
+
+
{{
+ formatCountInterval(overdueRiskProduct.repaymentSuccessCountLast7Days) }}
+
成功次数
+
+
+
{{
+ formatAmountInterval(overdueRiskProduct.repaymentSuccessAmountLast7Days) }}
+
成功金额
+
+
+
+
+
+
+
最近14天
+
+
+
{{
+ formatCountInterval(overdueRiskProduct.repaymentSuccessCountLast14Days) }}
+
成功次数
+
+
+
{{
+ formatAmountInterval(overdueRiskProduct.repaymentSuccessAmountLast14Days) }}
+
成功金额
+
+
+
+
+
+
+
最近1个月
+
+
+
{{
+ formatCountInterval(overdueRiskProduct.repaymentSuccessCountLastMonth) }}
+
成功次数
+
+
+
{{
+ formatAmountInterval(overdueRiskProduct.repaymentSuccessAmountLastMonth) }}
+
成功金额
+
+
+
+
+
+
+
最近3个月
+
+
+
{{
+ formatCountInterval(overdueRiskProduct.repaymentSuccessCountLast3Months) }}
+
成功次数
+
+
+
{{
+ formatAmountInterval(overdueRiskProduct.repaymentSuccessAmountLast3Months) }}
+
成功金额
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
风险标识
+
+
+
+
+
+ {{ getRiskFlagText(overdueRiskProduct.lyjlhyFlag) }}
+
+
逾期风险产品
+
+
+
+ {{ getRiskFlagText(overdueRiskProduct.dkzhktjFlag) }}
+
+
贷款中还款统计
+
+
+
+ {{ getRiskFlagText(overdueRiskProduct.tsmdyzFlag) }}
+
+
特殊名单验证
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CDWBG8B4D/components/ReportOverview.vue b/src/ui/CDWBG8B4D/components/ReportOverview.vue
new file mode 100644
index 0000000..8d0d02e
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/ReportOverview.vue
@@ -0,0 +1,320 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ checkSuggest || '建议拒绝' }}
+
+
+
+
+
+
+
+
+
+
+ 姓名:
+ {{ maskName(baseInfo.name) }}
+
+
+ 年龄:
+ {{ baseInfo.age }}岁
+
+
+ 性别:
+ {{ baseInfo.sex }}
+
+
+ 手机号:
+ {{ maskPhone(baseInfo.phone) }}
+
+
+ 身份证号:
+ {{ maskIdCard(baseInfo.idCard) }}
+
+
+ 户籍所在地:
+ {{ baseInfo.location }}
+
+
+ 号码归属地:
+ {{ baseInfo.phoneArea }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getFraudRiskLevel(fraudScore) }}
+
+
+
+
+
+
+
{{ fraudScore === -1 ? '未命中' : fraudScore }}
+
反欺诈评分
+
+
+
+
+
+
+
+
+ {{ getCreditLevel(creditScore) }}
+
+
+
+
+
+
+
{{ creditScore === -1 ? '未命中' : creditScore }}
+
信用评分
+
+
+
+
+
+
+
+
+ {{ verifyRule || '未评估' }}
+
+
+
+
+
+
+
{{ verifyRule || '未评估' }}
+
验证规则
+
+
+
+
+
+
+
+
+ {{ fraudRule || '未评估' }}
+
+
+
+
+
+
+
{{ fraudRule || '未评估' }}
+
反欺诈规则
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CDWBG8B4D/components/RiskSupervisionSection.vue b/src/ui/CDWBG8B4D/components/RiskSupervisionSection.vue
new file mode 100644
index 0000000..c8afaab
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/RiskSupervisionSection.vue
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+
+
+
+
+
关联风险监督
+
最后申请时间: {{ riskSupervision.leastApplicationTime || '未知' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ riskSupervision.rentalRiskListIdCardRelationsPhones || 0
+ }}
+
同一身份证关联手机号数
+
+
+
+
+
+
+
+
+
+
+
+
{{ riskSupervision.rentalRiskListPhoneRelationsIdCards || 0
+ }}
+
同一手机号关联身份证数
+
+
+
+
+
+
+
+
+
+
+
+
{{ getRiskStatusText() }}
+
{{ getRiskStatusDescription() }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CDWBG8B4D/components/RiskWarning.vue b/src/ui/CDWBG8B4D/components/RiskWarning.vue
new file mode 100644
index 0000000..b10f301
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/RiskWarning.vue
@@ -0,0 +1,409 @@
+
+
+
+
+
+
+
+ {{ getRiskFlagText(highRiskFlag) }}
+
+
+
+
+
+
+
公安重点人员核验产品
+
+
+
+
+
+
+
+
+ {{ getRiskTypeText(keyPersonCheckList.fontFlag) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getRiskTypeText(keyPersonCheckList.jingJiFontFlag) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getRiskTypeText(keyPersonCheckList.fangAiFlag) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getRiskTypeText(keyPersonCheckList.zhongDianFlag) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getRiskTypeText(keyPersonCheckList.sheJiaoTongFlag) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getAntiFraudRiskFlagText(antiFraudInfo) }}
+
+
+
+
+
+
+
涉赌涉诈核验产品
+
+
+
+
+
+
+
+
+ {{ getAntiFraudRiskText(antiFraudInfo?.moneyLaundering) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getAntiFraudRiskText(antiFraudInfo?.deceiver) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getAntiFraudRiskText(antiFraudInfo?.gamblerPlayer) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getAntiFraudRiskText(antiFraudInfo?.gamblerBanker) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CDWBG8B4D/components/RiskWarningSection.vue b/src/ui/CDWBG8B4D/components/RiskWarningSection.vue
new file mode 100644
index 0000000..5e5f204
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/RiskWarningSection.vue
@@ -0,0 +1,747 @@
+
+
+
+
+
+
+
+
+
+
+
{{ riskWarning.totalRiskCounts || 0 }}
+
总风险点数量
+
+
+
+
+
+
+
高风险
+
{{ getHighRiskCount() }}
+
+
+
中风险
+
{{ getMiddleRiskCount() }}
+
+
+
风险等级
+
{{ riskWarning.level || '-' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
要素核查
+
+
+ {{ getElementVerificationRisks().length }}条风险
+
+
+
w'w'w'w'w'w'w'w'w'w
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
运营商核验
+
+
+ {{ getOperatorVerificationRisks().length }}条风险
+
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
公安重点人员核验
+
+
+ {{ getPoliceVerificationRisks().length }}条风险
+
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
逾期风险
+
+
+ {{ getOverdueRiskRisks().length }}条风险
+
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
法院曝光台信息
+
+
+ {{ getCourtRiskRisks().length }}条风险
+
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
借贷评估
+
+
+ {{ getLoanEvaluationRisks().length }}条风险
+
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
租赁风险评估
+
+
+ {{ getLeasingRiskRisks().length }}条风险
+
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ui/CDWBG8B4D/components/RiskWarningTab.vue b/src/ui/CDWBG8B4D/components/RiskWarningTab.vue
new file mode 100644
index 0000000..a5e6360
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/RiskWarningTab.vue
@@ -0,0 +1,1147 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
总风险点
+
{{ riskWarning.value?.totalRiskCounts || 0 }}条
+
+
+
+
高风险
+
{{ getHighRiskCount() }}条
+
+
+
+
中风险
+
{{ getMiddleRiskCount() }}条
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getElementVerificationRisks().length }}条风险
+
+
+
+
+
+
+
要素核查
+
身份证、手机号等基础信息验证
+
+
+
+
+
+ {{ getElementVerificationRisks()[0]?.level || '高风险' }}
+
+
+
+
+
+
+
{{ getElementVerificationRisks()[0]?.description ||
+ '检测到风险' }}
+
+
{{ getElementVerificationRisks()[0]?.detail || '该模块检测到风险' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getOperatorVerificationRisks().length }}条风险
+
+
+
+
+
+
+
运营商核验
+
手机号状态、在网时长等运营商信息
+
+
+
+
+
+ {{ getOperatorVerificationRisks()[0]?.level || '高风险' }}
+
+
+
+
+
+
+
{{ getOperatorVerificationRisks()[0]?.description ||
+ '手机在网状态为风险号'
+ }}
+
{{ getOperatorVerificationRisks()[0]?.detail ||
+ '手机号状态异常,存在风险' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getPoliceVerificationRisks().length }}条风险
+
+
+
+
+
+
+
公安重点人员核验
+
前科记录、重点人员、涉赌涉诈等
+
+
+
+
+
+
+
+
+
+
+
风险等级
+
+
+
+
+ {{ level
+ }}
+ {{ getRiskLevelText(level) }}
+
+
+
+
+
+
+
+
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getOverdueRiskRisks().length }}条风险
+
+
+
+
+
+
+
+
+
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getCourtRiskRisks().length }}条风险
+
+
+
+
+
+
+
法院曝光台信息
+
民事、刑事、行政案件等司法记录
+
+
+
+
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getLoanEvaluationRisks().length }}条风险
+
+
+
+
+
+
+
借贷评估
+
申请频率、偿债压力、欺诈团伙等
+
+
+
+
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getLeasingRiskRisks().length }}条风险
+
+
+
+
+
+
+
+
+
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ui/CDWBG8B4D/index.vue b/src/ui/CDWBG8B4D/index.vue
new file mode 100644
index 0000000..605232c
--- /dev/null
+++ b/src/ui/CDWBG8B4D/index.vue
@@ -0,0 +1,112 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CDWBG8B4D/utils/intervalFormatter.js b/src/ui/CDWBG8B4D/utils/intervalFormatter.js
new file mode 100644
index 0000000..418e3b9
--- /dev/null
+++ b/src/ui/CDWBG8B4D/utils/intervalFormatter.js
@@ -0,0 +1,264 @@
+/**
+ * 区间表达式格式化工具
+ * 将数学区间表达式转换为用户友好的文本描述
+ */
+
+/**
+ * 格式化区间表达式
+ * @param {string} interval - 区间表达式,如 "(0,1000)", "[2000,30000)", "[17,+)"
+ * @param {string} unit - 单位,如 "元", "次", "个", "天" 等
+ * @returns {string} 格式化后的文本,如果格式化失败则返回原数据
+ */
+export function formatInterval(interval, unit = "") {
+ // 如果数据为空或无效,返回原数据
+ if (!interval || interval === "-" || interval === "0") {
+ return interval || "-";
+ }
+
+ try {
+ // 处理特殊格式,如 "3,6(个月)"
+ if (interval.includes("(") && interval.includes(")")) {
+ const match = interval.match(/^(\d+(?:,\d+)*)\((.+)\)$/);
+ if (match) {
+ const numbers = match[1].split(",").map((n) => n.trim());
+ const timeUnit = match[2];
+ if (numbers.length === 2) {
+ return `${numbers[0]}-${numbers[1]}${timeUnit}`;
+ }
+ return `${numbers.join(", ")}${timeUnit}`;
+ }
+ }
+
+ // 处理区间表达式
+ const intervalPattern =
+ /^([\[\(])(\d+(?:\.\d+)?),(\d+(?:\.\d+)?|\+)([\]\)])$/;
+ const match = interval.match(intervalPattern);
+
+ // 如果不是区间表达式,返回原数据
+ if (!match) {
+ return interval;
+ }
+
+ const [, leftBracket, leftValue, rightValue, rightBracket] = match;
+ const isLeftInclusive = leftBracket === "[";
+ const isRightInclusive = rightBracket === "]";
+ const isRightInfinity = rightValue === "+";
+
+ let result = "";
+
+ if (isRightInfinity) {
+ // 处理无穷大情况,如 "[17,+)"
+ if (isLeftInclusive) {
+ result = `≥${leftValue}${unit}`;
+ } else {
+ result = `>${leftValue}${unit}`;
+ }
+ } else {
+ // 处理有限区间
+ const leftNum = parseFloat(leftValue);
+ const rightNum = parseFloat(rightValue);
+
+ // 检查数值是否有效
+ if (isNaN(leftNum) || isNaN(rightNum)) {
+ return interval;
+ }
+
+ if (leftNum === rightNum) {
+ // 单点值
+ result = `${leftNum}${unit}`;
+ } else {
+ // 区间值 - 简化为实际数值范围
+ if (isLeftInclusive && isRightInclusive) {
+ result = `${leftNum}-${rightNum}${unit}`;
+ } else if (isLeftInclusive && !isRightInclusive) {
+ // 右开区间,显示到 rightNum-1
+ result = `${leftNum}-${rightNum - 1}${unit}`;
+ } else if (!isLeftInclusive && isRightInclusive) {
+ // 左开区间,显示从 leftNum+1
+ result = `${leftNum + 1}-${rightNum}${unit}`;
+ } else {
+ // 两端都不包含,显示从 leftNum+1 到 rightNum-1
+ result = `${leftNum + 1}-${rightNum - 1}${unit}`;
+ }
+ }
+ }
+
+ return result;
+ } catch (error) {
+ // 如果格式化过程中出现错误,返回原数据
+ console.warn("区间格式化失败:", error, "原数据:", interval);
+ return interval;
+ }
+}
+
+/**
+ * 格式化金额区间
+ * @param {string} interval - 金额区间表达式
+ * @returns {string} 格式化后的金额文本
+ */
+export function formatAmountInterval(interval) {
+ return formatInterval(interval, "元");
+}
+
+/**
+ * 格式化次数区间
+ * @param {string} interval - 次数区间表达式
+ * @returns {string} 格式化后的次数文本
+ */
+export function formatCountInterval(interval) {
+ return formatInterval(interval, "次");
+}
+
+/**
+ * 格式化天数区间
+ * @param {string} interval - 天数区间表达式
+ * @returns {string} 格式化后的天数文本
+ */
+export function formatDaysInterval(interval) {
+ return formatInterval(interval, "天");
+}
+
+/**
+ * 格式化机构数量区间
+ * @param {string} interval - 机构数量区间表达式
+ * @returns {string} 格式化后的机构数量文本
+ */
+export function formatInstitutionInterval(interval) {
+ return formatInterval(interval, "家");
+}
+
+/**
+ * 格式化时间区间
+ * @param {string} interval - 时间区间表达式
+ * @returns {string} 格式化后的时间文本
+ */
+export function formatTimeInterval(interval) {
+ if (!interval || interval === "-") {
+ return "-";
+ }
+
+ // 处理特殊格式,如 "3,6(个月)"
+ if (interval.includes("(") && interval.includes(")")) {
+ const match = interval.match(/^(\d+(?:,\d+)*)\((.+)\)$/);
+ if (match) {
+ const numbers = match[1].split(",").map((n) => n.trim());
+ const timeUnit = match[2];
+ if (numbers.length === 2) {
+ return `${numbers[0]}-${numbers[1]}${timeUnit}`;
+ }
+ return `${numbers.join(", ")}${timeUnit}`;
+ }
+ }
+
+ return formatInterval(interval, "");
+}
+
+/**
+ * 格式化申请次数区间
+ * @param {string} interval - 申请次数区间表达式,格式如 "2/1"
+ * @returns {string} 格式化后的申请次数文本
+ */
+export function formatApplicationInterval(interval) {
+ if (!interval || interval === "-") {
+ return "-";
+ }
+
+ // 处理 "2/1" 格式,表示 申请次数/机构数
+ if (interval.includes("/")) {
+ const [applyCount, institutionCount] = interval.split("/");
+ return `${applyCount}次/${institutionCount}家`;
+ }
+
+ return formatCountInterval(interval);
+}
+
+/**
+ * 格式化风险等级文本
+ * @param {string} level - 风险等级,如 "C2,C5"
+ * @returns {string} 格式化后的风险等级文本
+ */
+export function formatRiskLevel(level) {
+ if (!level) return "-";
+
+ const levelMap = {
+ 0: "正常人员",
+ A: "前科:侵犯公民人身权利,民主权利",
+ A1: "盗窃",
+ A2: "诈骗",
+ A3: "抢劫/夺",
+ A4: "故意伤害/杀人",
+ A5: "强奸/性侵/猥亵",
+ B: "经济类前科",
+ B1: "走私",
+ B2: "破坏金融管理秩序",
+ B3: "正常人员",
+ B4: "洗钱",
+ B5: "洗钱",
+ C: "妨害社会管理秩序",
+ C1: "扰乱公共秩序",
+ C2: "妨害司法",
+ C3: "涉毒",
+ C4: "涉黄刑案",
+ C5: "帮信/掩隐/侵公",
+ D: "重点",
+ D1: "危害国家、公共安全",
+ D2: "涉稳",
+ D3: "涉及境外",
+ D4: "涉恐、疆藏",
+ D5: "涉黑",
+ E: "涉交通案件",
+ F: "法院文书",
+ };
+
+ return level
+ .split(",")
+ .map((l) => levelMap[l.trim()] || l.trim())
+ .join("、");
+}
+
+/**
+ * 格式化状态文本
+ * @param {string} status - 状态值
+ * @param {Object} statusMap - 状态映射对象
+ * @returns {string} 格式化后的状态文本
+ */
+export function formatStatus(status, statusMap = {}) {
+ if (status === undefined || status === null || status === "") {
+ return "-";
+ }
+
+ return statusMap[status] || status;
+}
+
+/**
+ * 格式化风险标识
+ * @param {number} flag - 风险标识,0=未查得,1=高风险,2=低风险
+ * @returns {Object} 包含文本和样式的对象
+ */
+export function formatRiskFlag(flag) {
+ const flagMap = {
+ 0: { text: "未查得", class: "bg-gray-100 text-gray-700" },
+ 1: { text: "高风险", class: "bg-red-100 text-red-700" },
+ 2: { text: "低风险", class: "bg-green-100 text-green-700" },
+ };
+
+ return (
+ flagMap[flag] || { text: "未知", class: "bg-gray-100 text-gray-700" }
+ );
+}
+
+/**
+ * 格式化验证结果
+ * @param {string} result - 验证结果
+ * @returns {Object} 包含文本和样式的对象
+ */
+export function formatVerificationResult(result) {
+ const resultMap = {
+ 一致: { text: "一致", class: "text-green-600" },
+ 不一致: { text: "不一致", class: "text-red-600" },
+ 验证通过: { text: "验证通过", class: "text-green-600" },
+ 验证失败: { text: "验证失败", class: "text-red-600" },
+ };
+
+ return resultMap[result] || { text: result || "-", class: "text-gray-600" };
+}
diff --git a/src/ui/CDWBG8B4D/utils/simpleSplitter.js b/src/ui/CDWBG8B4D/utils/simpleSplitter.js
new file mode 100644
index 0000000..d178c0f
--- /dev/null
+++ b/src/ui/CDWBG8B4D/utils/simpleSplitter.js
@@ -0,0 +1,157 @@
+/**
+ * 简单的DWBG8B4D数据拆分演示
+ * 直接在BaseReport.vue中处理
+ */
+
+// 在BaseReport.vue的script部分添加这个函数
+function splitDWBG8B4DForTabs(reportData) {
+ const result = []
+
+ reportData.forEach(item => {
+ if (item.data.apiID === 'DWBG8B4D') {
+ // 将DWBG8B4D拆分成多个独立的tab
+ const dwbgData = item.data.data
+
+ // 报告概览
+ result.push({
+ data: {
+ apiID: 'DWBG8B4D_Overview',
+ data: {
+ baseInfo: dwbgData.baseInfo,
+ checkSuggest: dwbgData.checkSuggest,
+ fraudScore: dwbgData.fraudScore,
+ creditScore: dwbgData.creditScore,
+ verifyRule: dwbgData.verifyRule,
+ fraudRule: dwbgData.fraudRule,
+ success: dwbgData.success,
+ timestamp: dwbgData.timestamp
+ }
+ }
+ })
+
+ // 规则风险提示
+ result.push({
+ data: {
+ apiID: 'DWBG8B4D_RiskWarningTab',
+ data: {
+ riskWarning: dwbgData.riskWarning,
+ success: dwbgData.success,
+ timestamp: dwbgData.timestamp
+ }
+ }
+ })
+
+ // 要素核查
+ result.push({
+ data: {
+ apiID: 'DWBG8B4D_ElementVerification',
+ data: {
+ sfzeysFlag: dwbgData.elementVerificationDetail?.sfzeysFlag || 0,
+ personCheckDetails: dwbgData.elementVerificationDetail?.personCheckDetails || {},
+ sjsysFlag: dwbgData.elementVerificationDetail?.sjsysFlag || 0,
+ phoneCheckDetails: dwbgData.elementVerificationDetail?.phoneCheckDetails || {},
+ success: dwbgData.success,
+ timestamp: dwbgData.timestamp
+ }
+ }
+ })
+
+ // 运营商核验
+ result.push({
+ data: {
+ apiID: 'DWBG8B4D_Identity',
+ data: {
+ inTime: dwbgData.standLiveInfo?.inTime || '',
+ phoneVailRiskFlag: dwbgData.elementVerificationDetail?.phoneVailRiskFlag || 0,
+ phoneVailRisks: dwbgData.elementVerificationDetail?.phoneVailRisks || {},
+ belongRiskFlag: dwbgData.elementVerificationDetail?.belongRiskFlag || 0,
+ belongRisks: dwbgData.elementVerificationDetail?.belongRisks || {},
+ success: dwbgData.success,
+ timestamp: dwbgData.timestamp
+ }
+ }
+ })
+
+ // 公安重点人员检验
+ result.push({
+ data: {
+ apiID: 'DWBG8B4D_RiskWarning',
+ data: {
+ highRiskFlag: dwbgData.elementVerificationDetail?.highRiskFlag || 0,
+ keyPersonCheckList: dwbgData.elementVerificationDetail?.keyPersonCheckList || {},
+ antiFraudInfo: dwbgData.elementVerificationDetail?.antiFraudInfo || {},
+ success: dwbgData.success,
+ timestamp: dwbgData.timestamp
+ }
+ }
+ })
+
+ // 逾期风险
+ result.push({
+ data: {
+ apiID: 'DWBG8B4D_OverdueRisk',
+ data: {
+ overdueRiskProduct: dwbgData.overdueRiskProduct,
+ success: dwbgData.success,
+ timestamp: dwbgData.timestamp
+ }
+ }
+ })
+
+ // 法院曝光台信息
+ result.push({
+ data: {
+ apiID: 'DWBG8B4D_CourtInfo',
+ data: {
+ multCourtInfo: dwbgData.multCourtInfo,
+ success: dwbgData.success,
+ timestamp: dwbgData.timestamp
+ }
+ }
+ })
+
+ // 借贷评估
+ result.push({
+ data: {
+ apiID: 'DWBG8B4D_LoanEvaluation',
+ data: {
+ loanEvaluationVerificationDetail: dwbgData.loanEvaluationVerificationDetail,
+ success: dwbgData.success,
+ timestamp: dwbgData.timestamp
+ }
+ }
+ })
+
+ // 租赁风险评估
+ result.push({
+ data: {
+ apiID: 'DWBG8B4D_LeasingRisk',
+ data: {
+ leasingRiskAssessment: dwbgData.leasingRiskAssessment,
+ success: dwbgData.success,
+ timestamp: dwbgData.timestamp
+ }
+ }
+ })
+
+ // 关联风险监督
+ result.push({
+ data: {
+ apiID: 'DWBG8B4D_RiskSupervision',
+ data: {
+ riskSupervision: dwbgData.riskSupervision,
+ success: dwbgData.success,
+ timestamp: dwbgData.timestamp
+ }
+ }
+ })
+ } else {
+ // 其他数据直接添加
+ result.push(item)
+ }
+ })
+
+ return result
+}
+
+export { splitDWBG8B4DForTabs }
diff --git a/src/ui/CFLXG0V4B/components/CaseDetail.vue b/src/ui/CFLXG0V4B/components/CaseDetail.vue
new file mode 100644
index 0000000..f1efe42
--- /dev/null
+++ b/src/ui/CFLXG0V4B/components/CaseDetail.vue
@@ -0,0 +1,171 @@
+
+
+
+
+ {{ isSpecialCase ? '执行法院' : '经办法院' }}:
+ {{ caseData.n_jbfy || caseData.zxfy || "—" }}
+
+
+ 所属地域:
+ {{ caseData.c_ssdy || caseData.sf || "—" }}
+
+
+
+ 案件类型:
+ {{ caseData.n_ajlx || "—" }}
+
+
+
+
+ 立案时间:
+ {{ formatDate(caseData.d_larq || caseData.larq) }}
+
+
+
+
+ 立案案由:
+ {{ caseData.n_laay_tree || caseData.n_laay || "暂无" }}
+
+
+
+
+ 当事人信息:
+
+
+ {{ party.n_ssdw || "其他" }}: {{ party.c_mc }};
+
+
+
+
+
+
+
+
+ 企业法人:
+ {{ caseData.qyfr || "—" }}
+
+
+
+
+ 组织机构代码:
+ {{ caseData.zzjgdm || "—" }}
+
+
+
+
+ 执行依据文号:
+ {{ caseData.zxyjwh || "—" }}
+
+
+
+
+ 执行依据单位:
+ {{ caseData.zxyjdw || "—" }}
+
+
+
+
+ 义务内容:
+ {{ caseData.yw || "—" }}
+
+
+
+
+ 履行情况:
+ {{ caseData.lxqk || "—" }}
+
+
+
+
+ 行为情形:
+ {{ caseData.xwqx || "—" }}
+
+
+
+
+ 金额估计:
+ {{ formatLawsuitMoney(caseData.pjje_gj) || "—" }}
+
+
+
+
+
+
+
+ 结案方式:
+ {{ caseData.n_jafs || "暂无" }}
+
+
+
+
+ 结案时间:
+ {{ formatDate(caseData.d_jarq) }}
+
+
+
+
+ 结案案由:
+ {{ caseData.n_jaay_tree || "与立案案由相同" }}
+
+
+
+
+ 相关当事人:
+ {{ caseData.c_gkws_dsr || "暂无" }}
+
+
+
+
+ 判决结果:
+ {{ caseData.c_gkws_pjjg || "暂无" }}
+
+
+
+
+
+ 后续案件:
+
+ {{ caseData.next.c_ah }}
+
+ {{
+ caseData.next.stage_type === 2
+ ? "二审"
+ : caseData.next.stage_type === 3
+ ? "再审"
+ : caseData.next.stage_type === 4
+ ? "申请再审"
+ : caseData.next.stage_type === 5
+ ? "执行"
+ : "其他"
+ }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ui/CFLXG0V4B/components/StatisticsOverview.vue b/src/ui/CFLXG0V4B/components/StatisticsOverview.vue
new file mode 100644
index 0000000..3d8fa47
--- /dev/null
+++ b/src/ui/CFLXG0V4B/components/StatisticsOverview.vue
@@ -0,0 +1,284 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ totalCases }}
+ 起涉诉案件中,
+
+ {{ stats.highRiskItems }}
+
+ 0
+ 起高风险案件
+
+ ,涉及 {{ stats.caseTypes.length }} 种案件类型
+
+
+
+
+
+
+
+
+
+
+
{{ stats.totalRiskItems || 0 }}项
+
风险事项
+
+ 平均{{ stats.totalRiskItems && totalCases > 0 ?
+ (stats.totalRiskItems / totalCases).toFixed(1) :
+ '0.0'
+ }}项/案件
+
+
+
+
+
+
{{ stats.highRiskItems || 0 }}家
+
高风险案件
+
+ 占比{{ totalCases > 0 && stats ?
+ ((stats.highRiskItems /
+ totalCases) * 100).toFixed(1) : '0.0' }}%
+
+
+ 失信{{ stats.sxbzxrCount || 0 }}
+ 限高{{ stats.xgbzxrCount || 0 }}
+
+
+
+
+
+
{{ stats.closedCases || 0 }}家
+
已结案件
+
+ 占比{{ totalCases > 0 && stats ?
+ Math.round((stats.closedCases / totalCases) * 100) :
+ 0
+ }}%
+
+
+
+
+
+
{{ stats.caseTypes.length || 0 }}家
+
案件类型
+
+ 涉及多种类型
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
高风险案件
+
{{ stats.highRiskItems || 0 }}条
+
+
+
+
中风险案件
+
{{ stats.mediumRiskItems || 0 }}条
+
+
+
+
低风险案件
+
{{ stats.lowRiskItems || 0 }}条
+
+
+
+
+
+
+
+
diff --git a/src/ui/CFLXG0V4B/index.vue b/src/ui/CFLXG0V4B/index.vue
new file mode 100644
index 0000000..fb61592
--- /dev/null
+++ b/src/ui/CFLXG0V4B/index.vue
@@ -0,0 +1,451 @@
+
+
+
+
+
+
+
+
+
涉诉风险分析
+
+
+
+
+
+
+
+
+
+
+
+
+ 全部风险
+ ({{ caseTypeCounts.all }})
+
+
+
+
+
+
+
+
+ {{ typeInfo.text }}({{ caseTypeCounts[type] || 0 }})
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ caseItem.c_ah || caseItem.ah || '暂无案号' }}
+
+
+
+ {{ getCaseTypeText(caseItem.type) }}
+
+
+
+
+
+ 立案:
+ {{ formatDate(caseItem.d_larq || caseItem.larq) }}
+
+
+
+
+
+
+ {{ getCaseTypeRiskLevel(caseItem.type).text }}
+
+
+
+ {{ caseItem.n_ajjzjd }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CFLXG0V4B/utils/lawsuitUtils.js b/src/ui/CFLXG0V4B/utils/lawsuitUtils.js
new file mode 100644
index 0000000..3ee3608
--- /dev/null
+++ b/src/ui/CFLXG0V4B/utils/lawsuitUtils.js
@@ -0,0 +1,292 @@
+// 案件类型映射表
+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', // 低风险
+ },
+}
+
+// 案件类型文本
+export const getCaseTypeText = type => {
+ return lawsuitTypeMap[type]?.text || '其他案件'
+}
+
+// 案件类型颜色
+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 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 // 如果不是标准格式则返回原始字符串
+}
+
+// 格式化金额显示
+export const formatLawsuitMoney = money => {
+ if (!money) return "—";
+
+ const value = parseFloat(money);
+ if (isNaN(value)) return "—";
+
+ // 直接显示原始金额(元)
+ return (
+ value.toLocaleString("zh-CN", {
+ minimumFractionDigits: 0,
+ maximumFractionDigits: 2,
+ }) + " 元"
+ );
+}
+
+// 获取案件状态样式
+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'
+ }
+}
+
+// 获取企业状态对应的样式
+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'
+ }
+}
+
+// 格式化资本金额显示
+export const formatCapital = (capital, currency) => {
+ if (!capital) return '—'
+
+ // 检查是否包含"万"字或需要显示为万元
+ 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 = '万'
+ }
+
+ // 格式化数字,保留两位小数(如果有小数部分)
+ const formattedValue = value.toLocaleString('zh-CN', {
+ minimumFractionDigits: 0,
+ maximumFractionDigits: 2,
+ })
+
+ return `${formattedValue}${unit} ${currency || '人民币'}`
+}
+
+// 获取涉诉风险等级
+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',
+ }
+}
+
+// 获取涉诉案件统计
+export const getLawsuitStats = lawsuitInfo => {
+ if (!lawsuitInfo) return null
+
+ const stats = {
+ total: 0,
+ types: [],
+ }
+
+ // 统计各类型案件数量
+ 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 (count > 0) {
+ stats.total += count
+ stats.types.push({
+ type,
+ count,
+ name: getCaseTypeText(type),
+ color: getCaseTypeColor(type),
+ darkColor: getCaseTypeDarkColor(type),
+ })
+ }
+ })
+
+ return stats
+}
+
+// 获取案件类型优先级顺序
+export const getCaseTypePriority = () => {
+ 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',
+ }
+ }
+
+ 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],
+ }
+}
diff --git a/src/ui/CFLXG3D56.vue b/src/ui/CFLXG3D56.vue
new file mode 100644
index 0000000..1a358e6
--- /dev/null
+++ b/src/ui/CFLXG3D56.vue
@@ -0,0 +1,1007 @@
+
+
+
+
+
+
+
+
+
借贷违约失信风险查询结果
+
+ {{ riskSeverity.label }}
+
+
+
+
+
+
+
+
+
+ {{ tab }}
+
+ {{summaryData.byRiskLevel.find(level => level.id === key).triggered}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ levelSummary.label }}
+
+
+ {{ levelSummary.triggered > 0 ? '已命中' : '未命中' }}
+
+
+
+
+
命中项
+
+ {{ levelSummary.triggered }} / {{ levelSummary.total }}
+
+
+
+ 查看详情
+
+
+
+
+
+
+
+
风险主体分布
+
+
+
+
+
+ {{ typeSummary.label }}
+
+
+ 命中项
+
+ {{ typeSummary.triggered }}
+
+ /
+ {{ typeSummary.total }}
+
+
+
+
+
+
+
+
+
+
机构风险分布
+
+
+
+
+
+ {{ institutionSummary.triggered }}
+
+
+
+
+ {{ institutionSummary.label }}
+
+
+ 命中项:{{ institutionSummary.triggered }}/{{ institutionSummary.total }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ tabConfigs[activeTab].title }}
+
+
+
+ {{ tabConfigs[activeTab].description }}
+
+
+
+
+
+
+ {{ riskTypeConfigs.idCard.title }}
+
+
+
+
+
+
+
+ {{ item.institutionLabel }}{{ item.levelLabel }}
+
+
+
+
+ {{ item.isTriggered ? '命中' : '无' }}
+
+
+
+
+ 发生次数:
+
+ {{ item.count === '0' ? '-' : item.count }}
+
+
+
+ 最近发生:
+
+ {{ item.time !== '0' ? `近${item.time}年内` : '-' }}
+
+
+
+
+
+ {{ riskTypeConfigs.idCard.emptyText }}
+
+
+
+
+
+
+
+ {{ riskTypeConfigs.mobile.title }}
+
+
+
+
+
+
+
+ {{ item.institutionLabel }}{{ item.levelLabel }}
+
+
+
+
+ {{ item.isTriggered ? '命中' : '无' }}
+
+
+
+
+ 发生次数:
+
+ {{ item.count === '0' ? '-' : item.count }}
+
+
+
+ 最近发生:
+
+ {{ item.time !== '0' ? `近${item.time}年内` : '-' }}
+
+
+
+
+
+ {{ riskTypeConfigs.mobile.emptyText }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CIVYZ5733.vue b/src/ui/CIVYZ5733.vue
new file mode 100644
index 0000000..728dca1
--- /dev/null
+++ b/src/ui/CIVYZ5733.vue
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+ {{ currentStatus.text }}
+
+
+ {{ currentStatus.description }}
+
+
+
+
+
+
diff --git a/src/ui/CIVYZ7F3A.vue b/src/ui/CIVYZ7F3A.vue
new file mode 100644
index 0000000..059a8f9
--- /dev/null
+++ b/src/ui/CIVYZ7F3A.vue
@@ -0,0 +1,296 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ data.educationLevel }}学历
+
Education Information
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
软科排名
+
+ 第 {{ data.Ranking }} 名
+
+
+
+
+
+
+
+
+ {{ badge.icon }}
+ {{ badge.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
专业名称
+
{{ data.major }}
+
+
+
+
+
+
+
+
+
+
+
+
学校类型
+
+ {{ data.schoolType }}类院校
+
+
+
+
+
+
+
+
+
+
+
+
+
学习形式
+
{{ data.educationType }}
+
+
+
+
+
+
+
+
+
+
+
+
毕业时间
+
{{ formatDate(data.graduationDate) }}
+
+
+
+
+
+
+
+
+
+ 💡
+
+
+
+
学历说明
+ 信息
+
+
+ {{ getEducationLevelDesc(data.educationLevel) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
暂无学历信息
+
+ 系统中暂无相关的学历信息记录。这可能是因为学历信息未公开或数据正在同步中。
+
+
+
+
+
+
diff --git a/src/ui/CIVYZ81NC.vue b/src/ui/CIVYZ81NC.vue
new file mode 100644
index 0000000..b01f936
--- /dev/null
+++ b/src/ui/CIVYZ81NC.vue
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+ {{ currentStatus.text }}
+
+
+
+ 登记日期:{{ currentStatus.opDate }}
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CIVYZ9A2B.vue b/src/ui/CIVYZ9A2B.vue
new file mode 100644
index 0000000..bdd1f1e
--- /dev/null
+++ b/src/ui/CIVYZ9A2B.vue
@@ -0,0 +1,818 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ index + 1
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ education.xxlx }}
+
+
+
+
+
+
+
+
+
{{ formatDate(education.ksrq) }} -
+ {{ formatDate(education.jsrq) }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ education.xl }}
+
+
+
+
+ 顶级
+
+
+
+
+ "{{ getSchoolSlogan(education.xxlx) }}"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
入学时间:
+
{{
+ formatDate(education.ksrq) }}
+
+
+
+
+
+
+
+
+
毕业时间:
+
{{
+ formatDate(education.jsrq) }}
+
+
+
+
+
+
+
+
+
专业:
+
{{ education.zymc }}
+
+
+
+
+
+
+
+
学习方式:
+
{{ education.xxxs }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ education.xl }}学历
+ 高级
+
+
+ {{ getEducationDesc(education.xl) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 暂无学历信息记录。这可能是因为:
+
+
+ 学历信息不公开
+
+
+ 暂无高等教育学历
+
+
+ 学历较早,暂未被教育部门数字化收录
+
+
+
+
+
+
+
+
diff --git a/src/ui/CJRZQ0A03.vue b/src/ui/CJRZQ0A03.vue
new file mode 100644
index 0000000..df3af36
--- /dev/null
+++ b/src/ui/CJRZQ0A03.vue
@@ -0,0 +1,1307 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
借贷申请分析报告
+
本报告统计借贷申请记录和机构情况,帮助评估信贷风险
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 身份证匹配
+
+
+
+
+
+
+
+
+ 手机号匹配
+
+
+
+
+
+
+
+
+
数据类型说明:
+
+
+
+ 身份证匹配: 通过身份证号码匹配获取的借贷申请记录,能够反映与身份证关联的所有金融机构申请行为
+
+
+
+ 手机号匹配: 通过手机号码匹配获取的借贷申请记录,能够反映与手机号关联的所有金融机构申请行为
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 借贷类别
+ 近7日
+ 近1月
+ 近3月
+ 近6月
+ 近1年
+
+
+
+ {{ row.label }}
+
+ {{ row.d7 }}
+ {{ row.m1 }}
+ {{ row.m3 }}
+ {{ row.m6 }}
+ {{ row.m12 }}
+
+
+
+
+
+
+
+
+
借贷类型说明:
+
+
+
+ {{ desc }}: {{key === 'bank' ? '包含各类银行贷款' : tableGroup[key].map(i =>
+ i.name).join('、')
+ }}
+
+
+
+
+
+
+
+
+
+ 此表格展示在周末或夜间时段的借贷申请情况,这类时段的高频申请可能需要额外关注
+
+
+
+
+
+
+
+ 时段类型
+ 近7日
+ 近1月
+ 近3月
+ 近6月
+ 近1年
+
+
+
+ {{ row.label }}
+
+
+ {{ row.specialDisplay ? '-' : row.d7 }}
+
+
+ {{ row.specialDisplay ? '-' : row.m1 }}
+
+
+ {{ row.specialDisplay ? '-' : row.m3 }}
+
+
+ {{ row.specialDisplay ? '-' : row.m6 }}
+
+ {{ row.m12 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
暂无借贷申请数据
+
当前没有匹配到任何借贷申请记录
+
+
+
+
+
+
+
+
diff --git a/src/ui/CJRZQ4AA8.vue b/src/ui/CJRZQ4AA8.vue
new file mode 100644
index 0000000..52e612b
--- /dev/null
+++ b/src/ui/CJRZQ4AA8.vue
@@ -0,0 +1,369 @@
+
+
+
+
+
+
+
+
+
+
+
+
还款压力分析
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ pressureLevel.text }}
+
+ 分值越高表示还款压力越大,建议关注债务比例
+
+
+
+
+
+
+
+
+
+
+
+
+
财务建议
+
+
+
+ 建议合理规划财务,控制债务比例,增加收入来源,避免过度负债。
+
+
+ 可尝试分期付款或延长还款周期,减轻每月还款压力。
+
+
+ 当前还款压力在可控范围内,继续保持良好的财务习惯。
+
+
+ 建议定期检查收支平衡,确保及时还款,维持良好信用记录。
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CJRZQ5E9F/README.md b/src/ui/CJRZQ5E9F/README.md
new file mode 100644
index 0000000..afe2154
--- /dev/null
+++ b/src/ui/CJRZQ5E9F/README.md
@@ -0,0 +1,246 @@
+# 贷款风险报告组件 (CJRZQ5E9F) - 模块化架构
+
+## 概述
+
+贷款风险报告组件采用模块化架构设计,将完整的贷款风险评估拆分成7个独立的模块,每个模块都可以作为独立的tab显示,具有独立的大标题。
+
+## 数据结构
+
+贷款风险报告的数据结构如下:
+
+```javascript
+{
+ "apiID": "CJRZQ5E9F",
+ "data": {
+ "xyp_cpl0001": "5", // 贷款总机构数
+ "xyp_cpl0002": "3", // 已结清机构数
+ "xyp_cpl0007": "2", // 消费金融类机构数
+ "xyp_cpl0008": "1", // 网络贷款类机构数
+ "xyp_cpl0009": "1", // 最近7天机构数
+ "xyp_cpl0014": "15", // 历史成功还款笔数
+ "xyp_cpl0015": "2", // 历史失败还款笔数
+ "xyp_cpl0016": "1", // 最近1天失败笔数
+ "xyp_cpl0017": "3", // 最近1天成功笔数
+ "xyp_cpl0018": "1", // 最近7天失败笔数
+ "xyp_cpl0019": "5", // 最近7天成功笔数
+ "xyp_cpl0020": "1", // 最近14天失败笔数
+ "xyp_cpl0021": "7", // 最近14天成功笔数
+ "xyp_cpl0022": "2", // 最近30天失败笔数
+ "xyp_cpl0023": "10", // 最近30天成功笔数
+ "xyp_cpl0024": "2", // 最近90天失败笔数
+ "xyp_cpl0025": "12", // 最近90天成功笔数
+ "xyp_cpl0026": "2", // 最近180天失败笔数
+ "xyp_cpl0027": "14", // 最近180天成功笔数
+ "xyp_cpl0028": "0", // 最近1天逾期标识
+ "xyp_cpl0029": "0", // 最近7天逾期标识
+ "xyp_cpl0030": "0", // 最近14天逾期标识
+ "xyp_cpl0031": "0", // 最近30天逾期标识
+ "xyp_cpl0032": "1000", // 最近1天失败金额
+ "xyp_cpl0033": "5000", // 最近1天成功金额
+ "xyp_cpl0034": "2000", // 最近7天失败金额
+ "xyp_cpl0035": "8000", // 最近7天成功金额
+ "xyp_cpl0036": "1500", // 最近14天失败金额
+ "xyp_cpl0037": "12000", // 最近14天成功金额
+ "xyp_cpl0038": "3000", // 最近30天失败金额
+ "xyp_cpl0039": "20000", // 最近30天成功金额
+ "xyp_cpl0040": "4000", // 最近90天失败金额
+ "xyp_cpl0041": "35000", // 最近90天成功金额
+ "xyp_cpl0042": "5000", // 最近180天失败金额
+ "xyp_cpl0043": "45000", // 最近180天成功金额
+ "xyp_cpl0044": "0", // 当前逾期状态
+ "xyp_cpl0045": "365", // 信用贷款时长
+ "xyp_cpl0046": "30", // 最近一次交易距今天数
+ "xyp_cpl0064": "1", // 最近21天成功笔数
+ "xyp_cpl0065": "0", // 最近21天失败笔数
+ "xyp_cpl0066": "1000", // 最近21天失败金额
+ "xyp_cpl0067": "6000", // 最近21天成功金额
+ "xyp_cpl0068": "15", // 最近一次还款距今天数
+ "xyp_cpl0070": "1", // 最近1天机构数
+ "xyp_cpl0071": "0", // 当前逾期机构数
+ "xyp_cpl0072": "0", // 当前逾期金额
+ "xyp_cpl0073": "0.85", // 近5次金额成功率
+ "xyp_cpl0074": "0.80", // 近5次还款成功率
+ "xyp_cpl0075": "0.75", // 近20次小贷成功率
+ "xyp_cpl0079": "0.70", // 近90天金额成功率
+ "xyp_cpl0080": "0.65", // 近90天还款成功率
+ "xyp_cpl0081": "0.25", // 信用风险评分
+ "xyp_cpl0082": "0.30", // 履约金额综合指数
+ "xyp_cpl0083": "0.35", // 履约笔数综合指数
+ "xyp_model_score_high": "750", // 小额网贷分
+ "xyp_model_score_mid": "680", // 小额分期分
+ "xyp_model_score_low": "720", // 中大额分期分
+ "xyp_t0400002": "0.78", // 近20次还款成功率
+ "xyp_t0400003": "0.82", // 近50次还款成功率
+ "xyp_t0400004": "0.80" // 近100次还款成功率
+ },
+ "success": true,
+ "timestamp": "2025-01-20 21:19:58"
+}
+```
+
+## 模块拆分
+
+贷款风险报告被拆分成以下7个独立模块:
+
+| API ID | 模块名称 | 包含数据 | 组件文件 |
+|--------|----------|----------|----------|
+| `CJRZQ5E9F_RiskOverview` | 风险概览 | 综合风险等级、当前状态、关键指标 | RiskOverview.vue |
+| `CJRZQ5E9F_CreditScores` | 信用评分 | 综合信用指数、专业模型评分、还款表现 | CreditScores.vue |
+| `CJRZQ5E9F_LoanBehaviorAnalysis` | 贷款行为分析 | 机构类型分布、还款表现统计、时间维度分析 | LoanBehaviorAnalysis.vue |
+| `CJRZQ5E9F_InstitutionAnalysis` | 机构分析 | 机构类型分析、合作机构详情 | InstitutionAnalysis.vue |
+| `CJRZQ5E9F_TimeTrendAnalysis` | 时间趋势分析 | 历史趋势、周期性分析 | TimeTrendAnalysis.vue |
+| `CJRZQ5E9F_RiskIndicators` | 风险指标详情 | 详细风险指标、风险因子分析 | RiskIndicators.vue |
+| `CJRZQ5E9F_RiskAdvice` | 专业建议 | 风险评估建议、优化建议 | RiskAdvice.vue |
+
+## 使用方法
+
+### 1. 前端自动拆分
+
+BaseReport.vue 已自动配置支持贷款风险报告的模块化显示:
+
+```javascript
+import { splitCJRZQ5E9FForTabs } from '@/ui/CJRZQ5E9F/utils/simpleSplitter.js';
+
+// 处理数据拆分(支持DWBG8B4D、DWBG6A2C和CJRZQ5E9F)
+const processedReportData = computed(() => {
+ let data = reportData.value;
+
+ // 拆分DWBG8B4D数据
+ data = splitDWBG8B4DForTabs(data);
+
+ // 拆分DWBG6A2C数据
+ data = splitDWBG6A2CForTabs(data);
+
+ // 拆分CJRZQ5E9F数据
+ data = splitCJRZQ5E9FForTabs(data);
+
+ return data;
+});
+```
+
+### 2. 组件配置
+
+BaseReport.vue 中已配置所有贷款风险报告模块:
+
+```javascript
+// 贷款风险报告
+JRZQ5E9F: {
+ name: "贷款风险评估",
+ component: defineAsyncComponent(() => import("@/ui/CJRZQ5E9F/index.vue")),
+ remark: '贷款风险评估提供全面的个人贷款风险分析,包括风险概览、信用评分、贷款行为分析、机构分析等多维度评估。'
+},
+// ... 其他模块配置
+```
+
+## 组件结构
+
+```
+src/ui/CJRZQ5E9F/
+├── index.vue # 原始完整组件(保留)
+├── README.md # 文档说明
+├── components/ # 子组件目录
+│ ├── RiskOverview.vue # 风险概览
+│ ├── CreditScores.vue # 信用评分
+│ ├── LoanBehaviorAnalysis.vue # 贷款行为分析
+│ ├── InstitutionAnalysis.vue # 机构分析
+│ ├── TimeTrendAnalysis.vue # 时间趋势分析
+│ ├── RiskIndicators.vue # 风险指标详情
+│ └── RiskAdvice.vue # 专业建议
+└── utils/
+ └── simpleSplitter.js # 数据拆分工具
+```
+
+## 特色功能
+
+### 1. 智能风险评估
+- 多维度风险等级计算
+- 智能颜色编码
+- 动态风险提示
+
+### 2. 数据可视化
+- 渐变色彩设计
+- 图标化展示
+- 响应式布局
+- 交互式图表
+
+### 3. 用户友好
+- 清晰的层次结构
+- 详细的说明文档
+- 直观的风险提示
+- 专业的建议指导
+
+### 4. 模块化设计
+- 独立的模块组件
+- 可复用的工具函数
+- 灵活的数据拆分
+- 易于维护和扩展
+
+## 工具函数
+
+`utils/simpleSplitter.js` 提供了以下工具函数:
+
+- `splitCJRZQ5E9FForTabs()` - 数据拆分
+- `parseIntervalValue()` - 解析区间化数值
+- `formatMetricValue()` - 格式化指标值
+- `formatDays()` - 格式化天数显示
+- `formatAmount()` - 格式化金额显示
+- `calculateRiskLevel()` - 计算风险等级
+- `calculateCreditScore()` - 计算信用评分
+- `getCreditScoreLevel()` - 获取信用等级描述
+- `getCreditScoreBadgeClass()` - 获取信用等级样式
+- `getScoreClass()` - 获取评分样式
+- `getCircleStyle()` - 获取圆形进度样式
+- `hasRiskData()` - 检查是否有风险数据
+
+## 使用示例
+
+```javascript
+// 在页面中使用
+
+```
+
+## 数据字段说明
+
+### 主要指标字段
+- `xyp_cpl0001`: 贷款总机构数
+- `xyp_cpl0002`: 已结清机构数
+- `xyp_cpl0044`: 当前逾期状态 (0: 无逾期, 1: 有逾期)
+- `xyp_cpl0081`: 信用风险评分 (0-1)
+- `xyp_cpl0082`: 履约金额综合指数 (0-1)
+- `xyp_cpl0083`: 履约笔数综合指数 (0-1)
+
+### 模型评分字段
+- `xyp_model_score_high`: 小额网贷分 (350-950)
+- `xyp_model_score_mid`: 小额分期分 (350-950)
+- `xyp_model_score_low`: 中大额分期分 (350-950)
+
+### 还款表现字段
+- `xyp_cpl0073`: 近5次金额成功率
+- `xyp_cpl0074`: 近5次还款成功率
+- `xyp_t0400002`: 近20次还款成功率
+- `xyp_t0400003`: 近50次还款成功率
+- `xyp_t0400004`: 近100次还款成功率
+
+## 注意事项
+
+1. 确保数据格式符合贷款风险报告的标准结构
+2. 所有模块都支持数据为空的情况
+3. 风险评估基于实际数据动态计算
+4. 组件采用 Tailwind CSS 进行样式设计
+5. 支持移动端响应式布局
+6. 区间化数值会自动解析为具体数值进行显示
+
+## 更新日志
+
+- v1.0.0: 初始版本,支持完整的贷款风险报告模块化显示
+- 包含7个独立模块
+- 支持自动数据拆分
+- 提供完整的风险评估功能
+- 支持多种数据可视化方式
diff --git a/src/ui/CJRZQ5E9F/components/CreditScores.vue b/src/ui/CJRZQ5E9F/components/CreditScores.vue
new file mode 100644
index 0000000..2c93225
--- /dev/null
+++ b/src/ui/CJRZQ5E9F/components/CreditScores.vue
@@ -0,0 +1,579 @@
+
+
+
+
+
+
+
+
+
信用评分
+
+
+
+
+
+
+
基于多维度风险评估的综合评分
+
+
+
+
+
+
评分范围: 150-1000
+
+ {{ getCreditScoreLevel() }}
+
+
+
+
+
+
+
+
+
+
+
+ 信用风险评分
+ {{ (creditRiskScore * 100).toFixed(0)
+ }}%
+
+
+
+
+
+
+
+
+
+
+
+ 履约金额综合指数
+ {{ (amountComplianceIndex *
+ 100).toFixed(0)
+ }}%
+
+
+
+
+
+
+
+
+
+
+
+ 履约笔数综合指数
+ {{ (countComplianceIndex *
+ 100).toFixed(0)
+ }}%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
星耀Pro系列AI评分模型
+
+
+
+
+
+
+
+
小额网贷分 V1
+
针对小额网贷风险评估
+
+
+
评分: 350-950
+
+ {{ formatModelScore(highRiskScore) }}
+
+
+
+
+
+
+
+
+
小额分期分 V1
+
针对小额分期产品评估
+
+
+
评分: 350-950
+
+ {{ formatModelScore(midRiskScore) }}
+
+
+
+
+
+
+
+
+
中大额分期分 V1
+
针对中大额分期产品评估
+
+
+
评分: 350-950
+
+ {{ formatModelScore(lowRiskScore) }}
+
+
+
+
+
+
+
+
+
+
+
近期还款成功率统计
+
+
+
+
+
+
+
金额: {{
+ (recent5AmountRatio * 100).toFixed(0) }} %
+
近5次
+
+
+
+
+
+
+
+
+
+
小贷: {{
+ (recent20SmallLoanRatio * 100).toFixed(0) }} %
+
近20次
+
+
+
+
+
+
+
+
+
金额: {{
+ (recent90AmountRatio * 100).toFixed(0) }} %
+
近90天
+
+
+
+
+
+
+
+
+
成功率: {{
+ (recent50PaymentRatio * 100).toFixed(0) }} %
+
近50次
+
+
+
+
+
+
+
+
+
成功率: {{
+ (recent100PaymentRatio * 100).toFixed(0) }} %
+
近100次
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CJRZQ5E9F/components/InstitutionAnalysis.vue b/src/ui/CJRZQ5E9F/components/InstitutionAnalysis.vue
new file mode 100644
index 0000000..0235e29
--- /dev/null
+++ b/src/ui/CJRZQ5E9F/components/InstitutionAnalysis.vue
@@ -0,0 +1,372 @@
+
+
+
+
+
+
+
+
+
+
机构分析
+
+
+
+
+
+
不同类型贷款机构数量统计
+
+
+
+
+
+
+ {{ formatMetricValue(consumerFinanceInstitutions) }} 家机构
+
+
+
+
+
+
+
+ {{ formatMetricValue(smallLoanSuccessInstitutions) }} 家机构
+
+
+
+
+
+
+
+ {{ formatMetricValue(networkLoanInstitutions) }} 家机构
+
+
+
+
+
+
+
+
+
不同时间段的交易金额分析
+
+
+
+
+
+
+
时间段
+
最大
+
最小
+
平均
+
总计
+
+
+
+
+
+
+
+
近5次
+
+ {{ formatAmount(transactionAmountStats.recent5.max) }}
+
+
+ {{ formatAmount(transactionAmountStats.recent5.min) }}
+
+
+ {{ formatAmount(transactionAmountStats.recent5.avg) }}
+
+
+ {{ formatAmount(transactionAmountStats.recent5.sum) }}
+
+
+
+
+
+
近20次
+
+ {{ formatAmount(transactionAmountStats.recent20.max) }}
+
+
+ {{ formatAmount(transactionAmountStats.recent20.min) }}
+
+
+ {{ formatAmount(transactionAmountStats.recent20.avg) }}
+
+
+ {{ formatAmount(transactionAmountStats.recent20.sum) }}
+
+
+
+
+
+
近50次
+
+ {{ formatAmount(transactionAmountStats.recent50.max) }}
+
+
+ {{ formatAmount(transactionAmountStats.recent50.min) }}
+
+
+ {{ formatAmount(transactionAmountStats.recent50.avg) }}
+
+
+ {{ formatAmount(transactionAmountStats.recent50.sum) }}
+
+
+
+
+
+
近100次
+
+ {{ formatAmount(transactionAmountStats.recent100.max) }}
+
+
+ {{ formatAmount(transactionAmountStats.recent100.min) }}
+
+
+ {{ formatAmount(transactionAmountStats.recent100.avg) }}
+
+
+ {{ formatAmount(transactionAmountStats.recent100.sum) }}
+
+
+
+
+
+
+
+
+
+
不同风险等级的机构分布
+
+
+
+
+
+
+ {{ formatMetricValue(highRiskInstitutions) }} 家
+
+
+
+
+
+
+
+ {{ formatMetricValue(mediumRiskInstitutions) }} 家
+
+
+
+
+
+
+
+ {{ formatMetricValue(lowRiskInstitutions) }} 家
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CJRZQ5E9F/components/LoanBehaviorAnalysis.vue b/src/ui/CJRZQ5E9F/components/LoanBehaviorAnalysis.vue
new file mode 100644
index 0000000..cfa3f5e
--- /dev/null
+++ b/src/ui/CJRZQ5E9F/components/LoanBehaviorAnalysis.vue
@@ -0,0 +1,715 @@
+
+
+
+
+
+
+
+
+
+
贷款行为分析
+
+
+
+
+
+
不同类型贷款机构数量统计
+
+
+
+
+
+
+ {{ formatMetricValue(consumerFinanceInstitutions) }} 家机构
+
+
+
+
+
+
+
+ {{ formatMetricValue(smallLoanInstitutions) }} 家机构
+
+
+
+
+
+
+
+ {{ formatMetricValue(networkLoanInstitutions) }} 家机构
+
+
+
+
+
+
+
+
+
历史还款成功与失败记录
+
+
+
+
+
+
+ {{ formatMetricValue(historicalSuccessPayments) }} 笔
+
+
+
+
+
+
+
+ {{ formatMetricValue(historicalFailurePayments) }} 笔
+
+
+
+
+
+
+
+ {{ overallSuccessRate }} %
+
+
+
+
+
+
+
+
+
+
+
不同时间段的还款成功和失败统计
+
+
+
+
+
+
+
+
+
+
+
+
+
各时间段逾期情况统计
+
+
+
+
+
+ {{ item.hasOverdue ? '有逾期' : '无逾期' }}
+
+
+
+
+
+
+
+
{{ item.period }}
+
{{ item.description }}
+
+
+
+
+
+
+
+
+
+
需要立即处理的逾期情况
+
+
+
+
+ 逾期机构数量
+ {{ formatMetricValue(currentOverdueInstitutions) }}家
+
+
+
+
+ 逾期金额
+ {{ formatAmount(currentOverdueAmount) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CJRZQ5E9F/components/RiskAdvice.vue b/src/ui/CJRZQ5E9F/components/RiskAdvice.vue
new file mode 100644
index 0000000..fd994cb
--- /dev/null
+++ b/src/ui/CJRZQ5E9F/components/RiskAdvice.vue
@@ -0,0 +1,414 @@
+
+
+
+
+
+
+
+
专业建议
+
+
+
+
+
+
+
+ 风险分:{{ overallRiskScore }}
+
+
+
+
+
+
+
+
{{ overallRiskLevel.title }}
+
{{ overallRiskLevel.subtitle }}
+
+
+
+ {{ overallRiskLevel.description }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ recommendation.priorityText }}
+
+
+
+
+
+
+
+
{{ recommendation.title }}
+
{{ recommendation.description }}
+
+
+ {{ action }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CJRZQ5E9F/components/RiskIndicators.vue b/src/ui/CJRZQ5E9F/components/RiskIndicators.vue
new file mode 100644
index 0000000..d240fc2
--- /dev/null
+++ b/src/ui/CJRZQ5E9F/components/RiskIndicators.vue
@@ -0,0 +1,638 @@
+
+
+
+
+
+
+
+
风险指标详情
+
+
+
+
+
+
关键风险评估指标汇总
+
+
+
+
+
警示指标
+
+
+ 最近1天申请机构
+ {{ formatMetricValue(recent1DayInstitutions) }}家
+
+
+ 最近7天申请机构
+ {{ formatMetricValue(recent7DayInstitutions) }}家
+
+
+ 履约金额指数
+ {{ (amountComplianceIndex * 100).toFixed(0) }}%
+
+
+ 履约笔数指数
+ {{ (countComplianceIndex * 100).toFixed(0) }}%
+
+
+
+
+
+
+
正面指标
+
+
+ 已结清机构数
+ {{ formatMetricValue(settledInstitutions) }}家
+
+
+ 信用贷款时长
+ {{ formatDays(creditLoanDuration) }}
+
+
+ 历史成功还款
+ {{ formatMetricValue(historicalSuccessPayments)
+ }}笔
+
+
+
+
+
+
+
+
+
+
失败后的恢复能力评估
+
+
+
+
+
失败后还款次数
+
+
+
已结清机构数
+
+
{{
+ formatMetricValue(consumerFailureRecovery) }}次
+
+
+
+
信用贷款时长
+
+
{{
+ formatMetricValue(smallLoanFailureRecovery) }}次
+
+
+
+
历史成功还款
+
+
{{
+ formatMetricValue(overallFailureRecovery) }}次
+
+
+
+
+
+
+
恢复时间分析
+
+
+ 平均恢复时间
+ {{ formatDays(avgRecoveryTime) }}
+
+
+ 最短: {{ formatDays(minRecoveryTime) }}
+ 最长: {{ formatDays(maxRecoveryTime) }}
+
+
+
+
+
+
+
+
+
+
各类交易行为的比例统计
+
+
+
+
金额比例指标
+
+
+
+
+ {{ item.name }}
+ {{ (item.ratio * 100).toFixed(1) }}%
+
+
+
{{ item.description }}
+
+
+
+
+
+
笔数比例指标
+
+
+
+
+ {{ item.name }}
+ {{ (item.ratio * 100).toFixed(1) }}%
+
+
+
{{ item.description }}
+
+
+
+
+
+
+
+
+
+
其他重要风险评估指标
+
+
+
+
+
时间相关指标
+
+
+ 最近一次交易距今
+ {{ formatDays(lastTransactionDays) }}
+
+
+ 最近一次还款距今
+ {{ formatDays(lastRepaymentDays) }}
+
+
+ 信用贷款总时长
+ {{ formatDays(creditLoanDuration) }}
+
+
+
+
+
+
+
交易失败机构
+
+
+
+ {{ item.period }}
+ {{ formatMetricValue(item.count) }}家
+
+
+
+
+
+
+
+
+
新增机构比例
+
+
+ {{ item.period }}
+ {{ (item.ratio * 100).toFixed(0) }}%
+
+
+
+
+
+
+
交易金额统计
+
+
+ 近90天最大交易金额
+ {{ formatAmount(parseIntervalValue(data.xyp_t01aafzzz))
+ }}
+
+
+ 近90天最小交易金额
+ {{ formatAmount(parseIntervalValue(data.xyp_t01abfzzz))
+ }}
+
+
+ 近90天平均交易金额
+ {{ formatAmount(parseIntervalValue(data.xyp_t01adfzzz))
+ }}
+
+
+
+
+
+
+
机构去重统计
+
+
+ 近20次交易还款成功机构
+ {{
+ formatMetricValue(parseIntervalValue(data.xyp_t01dejzzc)) }}家
+
+
+ 近50次交易还款成功机构
+ {{
+ formatMetricValue(parseIntervalValue(data.xyp_t01dekzzc)) }}家
+
+
+ 近100次交易还款成功机构
+ {{
+ formatMetricValue(parseIntervalValue(data.xyp_t01delzzc)) }}家
+
+
+
+
+
+
+
特殊风险指标
+
+
+ 最近90天交易失败机构
+ {{
+ formatMetricValue(parseIntervalValue(data.xyp_t03td111))
+ }}家
+
+
+ 最近180天交易失败机构
+ {{
+ formatMetricValue(parseIntervalValue(data.xyp_t03td115))
+ }}家
+
+
+ 最近一次交易为失败机构
+ {{
+ formatMetricValue(parseIntervalValue(data.xyp_t03td148))
+ }}家
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CJRZQ5E9F/components/RiskOverview.vue b/src/ui/CJRZQ5E9F/components/RiskOverview.vue
new file mode 100644
index 0000000..1bc962e
--- /dev/null
+++ b/src/ui/CJRZQ5E9F/components/RiskOverview.vue
@@ -0,0 +1,375 @@
+
+
+
+
+
+
+
+
+
+
风险概览
+
+
+
+
+
+
+
+
+
+
+
+
+
综合风险等级
+
+ {{ riskLevel }}
+
+
+
+ 基于多维度数据分析的风险评估
+
+
+ {{ riskDescription }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
逾期状态
+
+ {{ overdueStatus }}
+
+
+
+ 当前逾期情况
+
+
+
+
+
+
+
+
+
+
+
+
+
+
当前逾期机构
+
+ {{ currentOverdueInstitutions }}家
+
+
+
+ 逾期机构数量
+
+
+
+
+
+
+
+
+
+
+
+
+ 贷款总机构数
+ {{ formatMetricValue(totalInstitutions) }}家
+
+
+ 已结清机构数
+ {{ formatMetricValue(settledInstitutions) }}家
+
+
+ 信用贷款时长
+ {{ formatDays(creditLoanDuration) }}
+
+
+ 最近一次交易距今
+ {{ formatDays(lastTransactionDays) }}
+
+
+ 最近一次还款距今
+ {{ formatDays(lastRepaymentDays) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CJRZQ5E9F/components/TimeTrendAnalysis.vue b/src/ui/CJRZQ5E9F/components/TimeTrendAnalysis.vue
new file mode 100644
index 0000000..b0fce82
--- /dev/null
+++ b/src/ui/CJRZQ5E9F/components/TimeTrendAnalysis.vue
@@ -0,0 +1,1466 @@
+
+
+
+
+
+
+
+
贷款行为分析
+
+
+
+
+
+
+
+
+
+
+
+
+
+
峰值
+
{{ formatAmount(maxAmountTrend) }}
+
+
+
低值
+
{{ formatAmount(minAmountTrend) }}
+
+
+
均值
+
{{ formatAmount(avgAmountTrend) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
峰值
+
{{ maxCountTrend }} 笔
+
+
+
低值
+
{{ minCountTrend }} 笔
+
+
+
均值
+
{{ avgCountTrend.toFixed(0) }} 笔
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ rate.period }}
+
+ {{ (rate.rate * 100).toFixed(1) }}%
+
+
+
+
+ 成功: {{ rate.success }}笔
+ 失败: {{ rate.failure }}笔
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.period }}
+ 总数: {{ item.total }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ item.trendText }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ event.title }}
+
{{ event.description }}
+
+
{{ event.timeAgo }}
+
+
+
+
+
+
+
+
+
+
高风险事件
+
{{ riskEventCounts.high }}
+
+
+
中风险事件
+
{{ riskEventCounts.medium }}
+
+
+
低风险事件
+
{{ riskEventCounts.low }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CJRZQ5E9F/index.vue b/src/ui/CJRZQ5E9F/index.vue
new file mode 100644
index 0000000..63fa84f
--- /dev/null
+++ b/src/ui/CJRZQ5E9F/index.vue
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CJRZQ5E9F/utils/simpleSplitter.js b/src/ui/CJRZQ5E9F/utils/simpleSplitter.js
new file mode 100644
index 0000000..2d8e8d1
--- /dev/null
+++ b/src/ui/CJRZQ5E9F/utils/simpleSplitter.js
@@ -0,0 +1,317 @@
+/**
+ * 贷款风险报告(CJRZQ5E9F)数据拆分工具
+ * 将完整的贷款风险报告数据拆分成多个独立的模块,用于在不同的tab中显示
+ */
+
+/**
+ * 将CJRZQ5E9F数据拆分为多个独立的tab模块
+ * @param {Array} reportData - 原始报告数据数组
+ * @returns {Array} 拆分后的模块数组
+ */
+export function splitCJRZQ5E9FForTabs(reportData) {
+ // 查找CJRZQ5E9F数据
+ const cjrzq5e9fData = reportData.find(
+ (item) => item.data?.apiID === "JRZQ5E9F"
+ );
+
+ if (!cjrzq5e9fData || !cjrzq5e9fData.data?.data) {
+ return reportData; // 如果没有找到CJRZQ5E9F数据,返回原数据
+ }
+
+ const originalData = cjrzq5e9fData.data.data;
+ const baseTimestamp = cjrzq5e9fData.data.timestamp;
+
+ // 创建拆分后的模块数组
+ const splitModules = [];
+
+ // 1. 风险概览
+ if (originalData && Object.keys(originalData).length > 0) {
+ splitModules.push({
+ data: {
+ apiID: "CJRZQ5E9F_RiskOverview",
+ data: originalData,
+ success: true,
+ timestamp: baseTimestamp,
+ },
+ });
+ }
+
+ // 2. 信用评分
+ if (originalData && Object.keys(originalData).length > 0) {
+ splitModules.push({
+ data: {
+ apiID: "CJRZQ5E9F_CreditScores",
+ data: originalData,
+ success: true,
+ timestamp: baseTimestamp,
+ },
+ });
+ }
+
+ // 3. 贷款行为分析
+ if (originalData && Object.keys(originalData).length > 0) {
+ splitModules.push({
+ data: {
+ apiID: "CJRZQ5E9F_LoanBehaviorAnalysis",
+ data: originalData,
+ success: true,
+ timestamp: baseTimestamp,
+ },
+ });
+ }
+
+ // 4. 机构分析
+ if (originalData && Object.keys(originalData).length > 0) {
+ splitModules.push({
+ data: {
+ apiID: "CJRZQ5E9F_InstitutionAnalysis",
+ data: originalData,
+ success: true,
+ timestamp: baseTimestamp,
+ },
+ });
+ }
+
+ // 5. 时间趋势分析
+ if (originalData && Object.keys(originalData).length > 0) {
+ splitModules.push({
+ data: {
+ apiID: "CJRZQ5E9F_TimeTrendAnalysis",
+ data: originalData,
+ success: true,
+ timestamp: baseTimestamp,
+ },
+ });
+ }
+
+ // 6. 风险指标详情
+ if (originalData && Object.keys(originalData).length > 0) {
+ splitModules.push({
+ data: {
+ apiID: "CJRZQ5E9F_RiskIndicators",
+ data: originalData,
+ success: true,
+ timestamp: baseTimestamp,
+ },
+ });
+ }
+
+ // 7. 专业建议
+ if (originalData && Object.keys(originalData).length > 0) {
+ splitModules.push({
+ data: {
+ apiID: "CJRZQ5E9F_RiskAdvice",
+ data: originalData,
+ success: true,
+ timestamp: baseTimestamp,
+ },
+ });
+ }
+
+ // 移除原始的JRZQ5E9F数据,添加拆分后的模块
+ const otherData = reportData.filter(
+ (item) => item.data?.apiID !== "JRZQ5E9F"
+ );
+
+ return [...otherData, ...splitModules];
+}
+
+/**
+ * 解析区间化数值
+ * @param {string|number} value - 原始值
+ * @returns {number} 解析后的数值
+ */
+export function parseIntervalValue(value) {
+ if (!value || value === "" || value === "-1") return 0;
+ const num = parseInt(value);
+ if (isNaN(num)) return 0;
+
+ // 根据区间映射返回大致范围的中值
+ switch (num) {
+ case 1:
+ return 1;
+ case 2:
+ return 3;
+ case 3:
+ return 7;
+ case 4:
+ return 15;
+ case 5:
+ return 25;
+ default:
+ return num;
+ }
+}
+
+/**
+ * 格式化指标值显示
+ * @param {number} value - 数值
+ * @returns {string} 格式化后的显示文本
+ */
+export function formatMetricValue(value) {
+ if (value === 0) return "0";
+ if (value < 5) return `${value}`;
+ return `${value}+`;
+}
+
+/**
+ * 格式化天数显示
+ * @param {number} value - 天数
+ * @returns {string} 格式化后的显示文本
+ */
+export function formatDays(value) {
+ if (value === 0) return "无记录";
+ if (value < 30) return `${value}天`;
+ if (value < 365) return `${Math.floor(value / 30)}个月`;
+ return `${Math.floor(value / 365)}年`;
+}
+
+/**
+ * 格式化金额显示
+ * @param {number} value - 金额
+ * @returns {string} 格式化后的显示文本
+ */
+export function formatAmount(value) {
+ if (value === 0) return "0元";
+ if (value < 1000) return `${value}元`;
+ if (value < 10000) return `${(value / 1000).toFixed(1)}千元`;
+ return `${(value / 10000).toFixed(1)}万元`;
+}
+
+/**
+ * 计算风险等级
+ * @param {number} creditScore - 信用风险评分
+ * @param {number} overdueIndex - 逾期指数
+ * @param {boolean} currentOverdue - 当前是否逾期
+ * @returns {object} 包含等级、颜色和描述的对象
+ */
+export function calculateRiskLevel(creditScore, overdueIndex, currentOverdue) {
+ if (creditScore > 0.7 || overdueIndex > 0.7 || currentOverdue) {
+ return {
+ level: "高风险",
+ color: "text-red-600",
+ bgColor: "bg-red-100",
+ iconColor: "bg-red-500",
+ description: "存在较高信用风险,建议谨慎放贷",
+ };
+ } else if (creditScore > 0.4 || overdueIndex > 0.4) {
+ return {
+ level: "中风险",
+ color: "text-yellow-600",
+ bgColor: "bg-yellow-100",
+ iconColor: "bg-yellow-500",
+ description: "信用风险适中,需要进一步评估",
+ };
+ } else {
+ return {
+ level: "低风险",
+ color: "text-green-600",
+ bgColor: "bg-green-100",
+ iconColor: "bg-green-500",
+ description: "信用风险较低,具备良好还款能力",
+ };
+ }
+}
+
+/**
+ * 计算信用评分显示
+ * @param {number} creditRiskScore - 信用风险评分
+ * @param {number} amountComplianceIndex - 履约金额综合指数
+ * @param {number} countComplianceIndex - 履约笔数综合指数
+ * @returns {object} 包含评分、进度和颜色的对象
+ */
+export function calculateCreditScore(
+ creditRiskScore,
+ amountComplianceIndex,
+ countComplianceIndex
+) {
+ const avgRisk =
+ (creditRiskScore + amountComplianceIndex + countComplianceIndex) / 3;
+ // 风险越高,信用分越低
+ const score = Math.round((1 - avgRisk) * 850 + 150);
+ const progress = (score / 1000) * 283;
+
+ let color = "#ef4444";
+ if (score >= 750) color = "#10b981";
+ else if (score >= 650) color = "#f59e0b";
+
+ return {
+ score,
+ progress,
+ color,
+ };
+}
+
+/**
+ * 获取信用等级描述
+ * @param {number} score - 信用评分
+ * @returns {string} 等级描述
+ */
+export function getCreditScoreLevel(score) {
+ if (score >= 800) return "优秀";
+ if (score >= 700) return "良好";
+ if (score >= 600) return "一般";
+ if (score >= 500) return "较差";
+ return "很差";
+}
+
+/**
+ * 获取信用等级样式类
+ * @param {number} score - 信用评分
+ * @returns {string} 样式类名
+ */
+export function getCreditScoreBadgeClass(score) {
+ if (score >= 800) return "bg-green-100 text-green-800";
+ if (score >= 700) return "bg-blue-100 text-blue-800";
+ if (score >= 600) return "bg-yellow-100 text-yellow-800";
+ if (score >= 500) return "bg-orange-100 text-orange-800";
+ return "bg-red-100 text-red-800";
+}
+
+/**
+ * 获取评分样式类
+ * @param {number} score - 评分
+ * @returns {string} 样式类名
+ */
+export function getScoreClass(score) {
+ if (score === null) return "text-gray-400";
+ if (score >= 750) return "text-green-600";
+ if (score >= 650) return "text-yellow-600";
+ return "text-red-600";
+}
+
+/**
+ * 获取圆形进度样式
+ * @param {number} ratio - 比例值 (0-1)
+ * @returns {object} 样式对象
+ */
+export function getCircleStyle(ratio) {
+ let color = "#ef4444";
+ if (ratio >= 0.8) color = "#10b981";
+ else if (ratio >= 0.6) color = "#f59e0b";
+
+ // 确保至少显示10度,让用户知道是图表
+ const minDegree = 10;
+ const actualDegree = Math.max(ratio * 360, minDegree);
+
+ return {
+ background: `conic-gradient(${color} ${actualDegree}deg, #e5e7eb 0deg)`,
+ };
+}
+
+/**
+ * 检查是否有风险数据
+ * @param {Object} data - 数据对象
+ * @returns {boolean} 是否有风险
+ */
+export function hasRiskData(data) {
+ if (!data) return false;
+
+ // 检查对象中是否有非0值
+ return Object.values(data).some((value) => {
+ if (typeof value === "number") return value > 0;
+ if (typeof value === "string")
+ return value !== "0" && value !== "-" && value !== "";
+ return false;
+ });
+}
diff --git a/src/ui/CJRZQ8203.vue b/src/ui/CJRZQ8203.vue
new file mode 100644
index 0000000..739b0c9
--- /dev/null
+++ b/src/ui/CJRZQ8203.vue
@@ -0,0 +1,908 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
借贷行为分析报告
+
本报告统计审批额度与应还情况,帮助评估信贷风险
+
+
+
+
+
+
+
+
+
+
+
+ 身份证数据
+
+
+
+
+
+
+
+
+ 手机号数据
+
+
+
+
+
+
+
+
数据类型说明:
+
+
+
+ 身份证数据: 通过身份证号码匹配获取的借贷记录,反映与身份证关联的所有借贷行为
+
+
+
+ 手机号数据: 通过手机号码匹配获取的借贷记录,反映与手机号关联的所有借贷行为
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 时间
+ 借贷机构数
+ 借贷次数
+ 审批额度
+
+
+
+ {{ row.month }}
+
+
+ {{ row.orgCount }}
+
+
+ {{ row.loanCount }}
+
+
+ {{ row.borrowAmount }}
+
+
+
+
+
+
+
+
+
+
+ 时间
+ 借贷机构数
+ 借贷次数
+ 审批额度
+ 应还金额
+ 审批与应还比例
+
+
+
+ {{ row.month }}
+
+
+ {{ row.orgCount }}
+
+
+ {{ row.loanCount }}
+
+
+ {{ row.borrowAmount }}
+
+
+ {{ row.repayAmount }}
+
+
+ {{ row.ratio }}
+
+
+
+
+
+
+
+
+
数据时间范围: 近1年
+
+
+
总申请次数
+
{{ behaviorSummary.totalApplications }}次
+
+
+
借贷机构数
+
{{ behaviorSummary.totalOrgs }}家
+
+
+
总审批额度
+
{{ behaviorSummary.totalAmount }}元
+
+
+
月均申请次数
+
{{ behaviorSummary.avgMonthlyApplications }}次
+
+
+
+
+
+ 风险评估:
+ {{ behaviorSummary.riskLevel }}风险
+
+
+
+ · 月均审批额度:
+ {{ behaviorSummary.avgMonthlyAmount }}元
+
+
+ · 月均应还金额:
+ {{ behaviorSummary.avgMonthlyRepay }}元
+
+
· 还款比例: {{ behaviorSummary.repayRatio }}
+
· {{ behaviorSummary.riskDesc }}
+
+
+
+
+
+
+
+
diff --git a/src/ui/CQCXG7A2B.vue b/src/ui/CQCXG7A2B.vue
new file mode 100644
index 0000000..0f602e3
--- /dev/null
+++ b/src/ui/CQCXG7A2B.vue
@@ -0,0 +1,65 @@
+
+
+
+
+
名下车辆
+
此人名下拥有车辆:{{ data?.carNum }} 辆
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ui/CQCXG9P1C.vue b/src/ui/CQCXG9P1C.vue
new file mode 100644
index 0000000..1d98682
--- /dev/null
+++ b/src/ui/CQCXG9P1C.vue
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+ 共 {{ vehicleCount }} 辆
+
+
+
+
+
+
+
+
+ {{ vehicle.plateNum }}
+
+
+
+ 🏷️
+ {{ getPlateColorText(vehicle.plateColor) }}
+
+
+ 车辆类型:
+ {{ getVehicleTypeText(vehicle.vehicleType)
+ }}
+
+
+
+
+
+
+
+
+
🚫
+
暂无车辆信息
+
No vehicle records found
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ui/CQYGL3F8E/README.md b/src/ui/CQYGL3F8E/README.md
new file mode 100644
index 0000000..88fb581
--- /dev/null
+++ b/src/ui/CQYGL3F8E/README.md
@@ -0,0 +1,238 @@
+# 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**: 新增欠税公告和税收违法模块,完善企业风险分析功能
diff --git a/src/ui/CQYGL3F8E/components/Abnormal.vue b/src/ui/CQYGL3F8E/components/Abnormal.vue
new file mode 100644
index 0000000..4baf4e4
--- /dev/null
+++ b/src/ui/CQYGL3F8E/components/Abnormal.vue
@@ -0,0 +1,273 @@
+
+
+
+
+
+
+
+
经营异常
+
+
+
+
+
+
+
+
+
+
+
{{ group.companyName }}
+
+
+ 异常企业
+ 异常记录: {{
+ group.totalAbnormals }}
+
+
+
+
+
+
+
+
+
+
+
{{ abnormal.putReason || '经营异常' }}
+
+
+
+
+
+
+
+ 已移出
+
+
+ {{ abnormal.removeDepartment }}
+
+
+
+
+
+ {{ abnormal.putDepartment || '—' }}
+
+
+
+
+
+ 列入:
+ {{ formatDate(abnormal.putDate) }}
+
+
+ 移出:
+ {{ formatDate(abnormal.removeDate) }}
+
+
+
+
+
+ 移出部门:
+ {{ abnormal.removeDepartment }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ui/CQYGL3F8E/components/FinancingHistory.vue b/src/ui/CQYGL3F8E/components/FinancingHistory.vue
new file mode 100644
index 0000000..f99eec9
--- /dev/null
+++ b/src/ui/CQYGL3F8E/components/FinancingHistory.vue
@@ -0,0 +1,265 @@
+
+
+
+
+
+
+
+
融资历史
+
+
+
+
+
+
+
+
+
+
+
{{ group.companyName }}
+
+
+ 融资企业
+ 融资轮次: {{
+ group.totalFinancings }}
+
+
+
+
+
+
+
+
+
+
+
{{ financing.companyName }}
+
+ {{ financing.round }}
+
+
+
+
+
+
+
+ 投资方:
+ {{ financing.investorName || '—' }}
+
+
+
+
+ 披露:
+ {{ formatDate(financing.pubTime) }}
+
+
+
+
+ 融资金额:
+ {{ financing.money || '—' }}
+
+
+
+
+
+
+ 估值: {{ financing.value }}
+
+
+
+
+ 股权: {{ financing.share }}
+
+
+
+
+ 有新闻
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ui/CQYGL3F8E/components/InvestHistory.vue b/src/ui/CQYGL3F8E/components/InvestHistory.vue
new file mode 100644
index 0000000..830c1ad
--- /dev/null
+++ b/src/ui/CQYGL3F8E/components/InvestHistory.vue
@@ -0,0 +1,337 @@
+
+
+
+
+
+
+
+
对外投资历史
+
+
+
+
+
+
+
+
+
+
+
{{ group.investorCompany }}
+
+
+ 投资企业
+ 投资项目: {{
+ group.totalInvestments }}
+
+
+
+
+
+
+
+
+
+
+
{{ investment.name }}
+
+ {{ investment.regStatus }}
+
+
+
+
+
+
+
+ {{ getPersonTypeText(investment.personType) }}法人
+
+ 成立: {{ formatDate(investment.estiblishTime) }}
+
+
+ 注册资本: {{ formatCapital(investment.regCapital) }}
+
+
+ 持股比例:
+ {{ investment.percent || '—' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ui/CQYGL3F8E/components/Investment.vue b/src/ui/CQYGL3F8E/components/Investment.vue
new file mode 100644
index 0000000..19cd296
--- /dev/null
+++ b/src/ui/CQYGL3F8E/components/Investment.vue
@@ -0,0 +1,335 @@
+
+
+
+
+
+
+
+
+
{{ company.orgName }}
+
+
+
+
+
+
+ {{ getRelationshipText(relation) }}
+
+
+
+
+
+
+
+
+ {{ company.basicInfo.regStatus }}
+
+
+ {{ formatCapital(company.basicInfo.regCapital, company.basicInfo.regCapitalCurrency) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CQYGL3F8E/components/Lawsuit.vue b/src/ui/CQYGL3F8E/components/Lawsuit.vue
new file mode 100644
index 0000000..ca85693
--- /dev/null
+++ b/src/ui/CQYGL3F8E/components/Lawsuit.vue
@@ -0,0 +1,1705 @@
+
+
+
+
+
+
+
+
+
涉诉风险整体概览
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ totalCompanies }}
+ 家关联企业中,
+ {{ allLawsuitStats.totalCompanies }}
+ 0
+ 家存在涉诉风险
+
+ (高风险: {{ allLawsuitStats.highRiskCompanies }} 家)
+
+
+ ,共 {{ allLawsuitStats.totalRiskItems }} 个风险事项
+
+
+
+
+
+
+
+
+
+
+
+
{{ allLawsuitStats?.totalRiskItems ||
+ 0 }}
+
+
+
风险事项
+
+ 平均{{ allLawsuitStats && allLawsuitStats.totalCompanies > 0 ?
+ (allLawsuitStats.totalRiskItems / allLawsuitStats.totalCompanies).toFixed(1) :
+ '0.0'
+ }}项/企业
+
+
+
+
+
+
+
+
+
{{ allLawsuitStats?.totalCompanies
+ || 0
+ }}
+
+
风险企业
+
+ 占比关联企业{{ totalCompanies > 0 && allLawsuitStats ?
+ ((allLawsuitStats.totalCompanies /
+ totalCompanies) * 100).toFixed(1) : '0.0' }}%
+
+
+ 高风险: {{ allLawsuitStats?.highRiskCompanies ||
+ 0
+ }}
+ 中风险: {{
+ allLawsuitStats?.mediumRiskCompanies ||
+ 0 }}
+
+
+
+
+
+
+
+
+
{{
+ allLawsuitStats?.normalOperatingCompanies || 0 }}
+
+
正常经营企业
+
+ 占比{{ totalCompanies > 0 && allLawsuitStats ?
+ Math.round((allLawsuitStats.normalOperatingCompanies / totalCompanies) * 100) :
+ 0
+ }}%
+
+
+
+
+
+
+
+
+
{{ allLawsuitStats?.canceledCompanies
+ ||
+ 0 }}
+
+
吊销注销企业
+
+ 占比{{ totalCompanies > 0 && allLawsuitStats ?
+ Math.round((allLawsuitStats.canceledCompanies / totalCompanies) * 100) : 0 }}%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
高风险
+
{{
+ allLawsuitStats?.highRiskCompanies || 0 }}
+
+
+
+
中风险
+
{{
+ allLawsuitStats?.mediumRiskCompanies || 0 }}
+
+
+
+
低风险
+
{{
+ allLawsuitStats?.lowRiskCompanies || 0 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 全部风险
+ ({{ caseTypeCompanyCounts.all }})
+
+
+
+
+
+
+
+
+ {{ typeInfo.text }}({{ caseTypeCompanyCounts[type] || 0 }})
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ company.orgName }}
+
+
+
+
+
+ 案件:
+ {{ getLawsuitStats(company).total
+ ||
+ 0
+ }}
+
+
+
+ {{ company.basicInfo.regStatus }}
+
+
+
+
+
+
+
+
+
+
+ {{ caseType.text }}
+
+
+ +{{ getCompanyCaseTypes(company).length - 3 }}
+
+
+
+ 无涉诉信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CQYGL3F8E/components/Punishment.vue b/src/ui/CQYGL3F8E/components/Punishment.vue
new file mode 100644
index 0000000..312cd6d
--- /dev/null
+++ b/src/ui/CQYGL3F8E/components/Punishment.vue
@@ -0,0 +1,289 @@
+
+
+
+
+
+
+
+
行政处罚
+
+
+
+
+
+
+
+
+
+
+
{{ group.companyName }}
+
+
+ 被处罚企业
+ 处罚记录: {{
+ group.totalPunishments }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ punishment.punishName || punishment.punishNumber || '行政处罚决定' }}
+
+
+ {{ punishment.type }}
+
+
+
+
+
+
+
+ 处罚单位:
+ {{ punishment.departmentName || '—' }}
+
+
+
+
+ 决定日期:
+ {{ formatDate(punishment.decisionDate) }}
+
+
+
+
+ 处罚金额:
+ {{ formatPecuniary(punishment.pecuniary) }}
+
+
+
+
+
+
+ {{ punishment.reason }}
+
+
+
+
+ {{ punishment.punishStatus }}
+
+
+
+
+ 法人: {{ punishment.legalPersonName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ui/CQYGL3F8E/components/SeniorExecutive.vue b/src/ui/CQYGL3F8E/components/SeniorExecutive.vue
new file mode 100644
index 0000000..28660d1
--- /dev/null
+++ b/src/ui/CQYGL3F8E/components/SeniorExecutive.vue
@@ -0,0 +1,307 @@
+
+
+
+
+
+
+
+
+
+
{{ company.orgName }}
+
+
+
+
+
+
+ {{ getRelationshipText(relation) }}
+
+
+
+
+
+
+
+
+ {{ company.basicInfo.regStatus }}
+
+
+ {{ formatCapital(company.basicInfo.regCapital, company.basicInfo.regCapitalCurrency) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CQYGL3F8E/components/TaxRisk/OwnTax.vue b/src/ui/CQYGL3F8E/components/TaxRisk/OwnTax.vue
new file mode 100644
index 0000000..746d380
--- /dev/null
+++ b/src/ui/CQYGL3F8E/components/TaxRisk/OwnTax.vue
@@ -0,0 +1,265 @@
+
+
+
+
+
+
+
+
欠税公告
+
+
+
+
+
+
+
+
+
+
+
{{ group.companyName }}
+
+
+ 欠税企业
+ 欠税记录: {{
+ group.totalOwnTax }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ tax.type }}
+
+ {{ tax.taxCategory || '企业所得税' }}
+
+
+
+
+
+
+
+ 纳税人:
+ {{ tax.name || '—' }}
+
+
+
+
+ 发布:
+ {{ formatDate(tax.publishDate) }}
+
+
+
+
+ 欠税金额:
+ {{ tax.ownTaxAmount || '—' }}
+
+
+
+
+
+ 识别号: {{ tax.taxIdNumber || '—' }}
+
+
+ 纳税人类型: {{ tax.taxpayerType || '—' }}
+
+
+ 法人: {{ tax.legalpersonName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CQYGL3F8E/components/TaxRisk/TaxContravention.vue b/src/ui/CQYGL3F8E/components/TaxRisk/TaxContravention.vue
new file mode 100644
index 0000000..05ad3dd
--- /dev/null
+++ b/src/ui/CQYGL3F8E/components/TaxRisk/TaxContravention.vue
@@ -0,0 +1,208 @@
+
+
+
+
+
+
+
+
税收违法
+
+
+
+
+
+
+
+
+
+
+
{{ group.companyName }}
+
+
+ 违法企业
+ 违法记录: {{
+ group.totalContraventions }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ contravention.case_type }}
+
+ {{ contravention.taxpayer_name || group.companyName }}
+
+
+
+
+
+
+
+
+
+ 违法ID:
+ {{ contravention.id || '—' }}
+
+
+ 发布:
+ {{ formatDate(contravention.publish_time) }}
+
+
+
+
+
+ 案件编号:
+ #{{ contravention.id || '—' }}
+
+
+
+
+
+ 税务机关: {{ contravention.department }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CQYGL3F8E/components/TaxRisk/index.vue b/src/ui/CQYGL3F8E/components/TaxRisk/index.vue
new file mode 100644
index 0000000..9e6dfed
--- /dev/null
+++ b/src/ui/CQYGL3F8E/components/TaxRisk/index.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
+
+
税务风险
+
+
+
+
+
+
+
+
+
{{ ownTaxStats.companyCount }}家
+
涉及企业
+
+
+
{{ ownTaxStats.recordCount }}条
+
欠税记录
+
+
+
{{ ownTaxStats.totalAmount }}
+
欠税总额
+
+
+
+
+
+
+
+
+
+
{{ taxContraventionStats.companyCount
+ }}家
+
涉及企业
+
+
+
{{ taxContraventionStats.recordCount
+ }}条
+
违法记录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CQYGL3F8E/index.vue b/src/ui/CQYGL3F8E/index.vue
new file mode 100644
index 0000000..62e45de
--- /dev/null
+++ b/src/ui/CQYGL3F8E/index.vue
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CQYGL3F8E/utils/simpleSplitter.js b/src/ui/CQYGL3F8E/utils/simpleSplitter.js
new file mode 100644
index 0000000..94e89da
--- /dev/null
+++ b/src/ui/CQYGL3F8E/utils/simpleSplitter.js
@@ -0,0 +1,302 @@
+/**
+ * CQYGL3F8E企业关联数据拆分工具
+ * 将企业关联数据拆分为投资企业记录、高管任职记录和涉诉风险三个独立模块
+ */
+
+/**
+ * 拆分CQYGL3F8E数据为多个独立的tab模块
+ * @param {Array} reportData - 报告数据数组
+ * @returns {Array} 拆分后的数据数组
+ */
+export function splitCQYGL3F8EForTabs(reportData) {
+ const result = []
+
+ reportData.forEach(item => {
+ if (item.data?.apiID === 'QYGL3F8E') {
+ // 将QYGL3F8E拆分成多个独立的tab
+ const qyglData = item.data.data
+ const baseTimestamp = item.data.timestamp
+
+ // 投资类关系
+ const investRelations = ["sh", "his_sh", "lp", "his_lp"]
+
+ // 高管类关系
+ const managerRelations = ["tm", "his_tm"]
+
+ // 获取投资企业记录(股东、历史股东、法人、历史法人)
+ const investCompanies = (qyglData?.items || []).filter((item) => {
+ const relationships = item?.relationship || []
+ return relationships.some((r) => investRelations.includes(r))
+ })
+
+ // 获取高管任职记录(高管、历史高管)
+ const managerPositions = (qyglData?.items || []).filter((item) => {
+ const relationships = item?.relationship || []
+ return relationships.some((r) => managerRelations.includes(r))
+ })
+
+ // 获取有涉诉风险的企业
+ const lawsuitCompanies = (qyglData?.items || []).filter((item) => {
+ const lawsuit = item?.lawsuitInfo || {}
+ return (
+ (lawsuit.entout && lawsuit.entout.data && Object.keys(lawsuit.entout.data).length > 0) ||
+ (lawsuit.sxbzxr && lawsuit.sxbzxr.data && lawsuit.sxbzxr.data.sxbzxr && lawsuit.sxbzxr.data.sxbzxr.length > 0) ||
+ (lawsuit.xgbzxr && lawsuit.xgbzxr.data && lawsuit.xgbzxr.data.xgbzxr && lawsuit.xgbzxr.data.xgbzxr.length > 0)
+ )
+ })
+
+ // 1. 投资企业记录模块
+ result.push({
+ data: {
+ apiID: 'CQYGL3F8E_Investment',
+ data: investCompanies,
+ success: true,
+ timestamp: baseTimestamp
+ }
+ })
+
+ // 2. 高管任职记录模块
+ result.push({
+ data: {
+ apiID: 'CQYGL3F8E_SeniorExecutive',
+ data: managerPositions,
+ success: true,
+ timestamp: baseTimestamp
+ }
+ })
+ // 3. 涉诉风险模块
+ result.push({
+ data: {
+ apiID: 'CQYGL3F8E_Lawsuit',
+ data: {
+ lawsuitCompanies: lawsuitCompanies,
+ totalCompanies: qyglData?.items?.length || 0
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ })
+ // 4. 对外投资历史模块 - 从所有企业中收集投资历史
+ const allInvestHistory = []
+ qyglData?.items?.forEach(company => {
+ if (company.invest_history?.items) {
+ company.invest_history.items.forEach(investment => {
+ allInvestHistory.push({
+ ...investment,
+ companyName: company.orgName, // 添加企业名称
+ companyInfo: {
+ orgName: company.orgName,
+ relationship: company.relationship,
+ basicInfo: company.basicInfo
+ }
+ })
+ })
+ }
+ })
+ result.push({
+ data: {
+ apiID: 'CQYGL3F8E_InvestHistory',
+ data: { items: allInvestHistory, total: allInvestHistory.length },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ })
+
+ // 5. 融资历史模块 - 从所有企业中收集融资历史
+ const allFinancingHistory = []
+ qyglData?.items?.forEach(company => {
+ if (company.financing_history?.items) {
+ company.financing_history.items.forEach(financing => {
+ allFinancingHistory.push({
+ ...financing,
+ companyName: company.orgName, // 添加企业名称
+ companyInfo: {
+ orgName: company.orgName,
+ relationship: company.relationship,
+ basicInfo: company.basicInfo
+ }
+ })
+ })
+ }
+ })
+ result.push({
+ data: {
+ apiID: 'CQYGL3F8E_FinancingHistory',
+ data: { items: allFinancingHistory, total: allFinancingHistory.length },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ })
+
+ // 6. 行政处罚模块 - 从所有企业中收集行政处罚
+ const allPunishmentInfo = []
+ qyglData?.items?.forEach(company => {
+ if (company.punishment_info?.items) {
+ company.punishment_info.items.forEach(punishment => {
+ allPunishmentInfo.push({
+ ...punishment,
+ companyName: company.orgName, // 添加企业名称
+ companyInfo: {
+ orgName: company.orgName,
+ relationship: company.relationship,
+ basicInfo: company.basicInfo
+ }
+ })
+ })
+ }
+ })
+ result.push({
+ data: {
+ apiID: 'CQYGL3F8E_Punishment',
+ data: { items: allPunishmentInfo, total: allPunishmentInfo.length },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ })
+
+ // 7. 经营异常模块 - 从所有企业中收集经营异常
+ const allAbnormalInfo = []
+ qyglData?.items?.forEach(company => {
+ if (company.abnormal_info?.items) {
+ company.abnormal_info.items.forEach(abnormal => {
+ allAbnormalInfo.push({
+ ...abnormal,
+ companyName: company.orgName, // 添加企业名称
+ companyInfo: {
+ orgName: company.orgName,
+ relationship: company.relationship,
+ basicInfo: company.basicInfo
+ }
+ })
+ })
+ }
+ })
+ result.push({
+ data: {
+ apiID: 'CQYGL3F8E_Abnormal',
+ data: { items: allAbnormalInfo, total: allAbnormalInfo.length },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ })
+
+ // 8. 税务风险模块 - 包含欠税公告和税收违法
+ const taxRiskCompanies = (qyglData?.items || []).filter((item) => {
+ const ownTax = item?.own_tax || {};
+ const taxContravention = item?.tax_contravention || {};
+ return (ownTax.total > 0 && ownTax.items && ownTax.items.length > 0) ||
+ (taxContravention.total > 0 && taxContravention.items && taxContravention.items.length > 0);
+ });
+
+ result.push({
+ data: {
+ apiID: 'CQYGL3F8E_TaxRisk',
+ data: { items: taxRiskCompanies },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ })
+
+ } else {
+ // 其他数据直接添加
+ result.push(item)
+ }
+ })
+
+ return result
+}
+
+/**
+ * 获取关系文本描述
+ * @param {string} relation - 关系代码
+ * @returns {string} 关系文本
+ */
+export function getRelationshipText(relation) {
+ const relationshipMap = {
+ sh: '股东',
+ his_sh: '曾任股东',
+ lp: '法人',
+ his_lp: '曾任法人',
+ tm: '高管',
+ his_tm: '曾任高管'
+ }
+ return relationshipMap[relation] || relation
+}
+
+/**
+ * 获取关系样式类
+ * @param {string} relation - 关系代码
+ * @returns {string} 样式类名
+ */
+export function getRelationshipClass(relation) {
+ const relationshipMap = {
+ sh: 'bg-blue-100 text-blue-700',
+ his_sh: 'bg-blue-50 text-blue-600',
+ lp: 'bg-green-100 text-green-700',
+ his_lp: 'bg-green-50 text-green-600',
+ tm: 'bg-purple-100 text-purple-700',
+ his_tm: 'bg-purple-50 text-purple-600'
+ }
+ return relationshipMap[relation] || 'bg-gray-100 text-gray-600'
+}
+
+/**
+ * 获取企业状态对应的样式类
+ * @param {string} status - 企业状态
+ * @returns {string} 样式类名
+ */
+export function 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'
+ }
+}
+
+/**
+ * 格式化资本金额显示
+ * @param {string|number} capital - 资本金额
+ * @param {string} currency - 货币类型
+ * @returns {string} 格式化后的金额
+ */
+export function formatCapital(capital, currency) {
+ if (!capital) return '—'
+
+ 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 = '万'
+ }
+
+ // 格式化数字,保留两位小数(如果有小数部分)
+ const formattedValue = value.toLocaleString('zh-CN', {
+ minimumFractionDigits: 0,
+ maximumFractionDigits: 2,
+ })
+
+ return `${formattedValue}${unit} ${currency || '人民币'}`
+}
+
+/**
+ * 格式化日期显示
+ * @param {string} dateStr - 日期字符串
+ * @returns {string} 格式化后的日期
+ */
+export function formatDate(dateStr) {
+ if (!dateStr) return '—'
+ return dateStr
+}
diff --git a/src/ui/DWBG6A2C/README.md b/src/ui/DWBG6A2C/README.md
new file mode 100644
index 0000000..036c5dc
--- /dev/null
+++ b/src/ui/DWBG6A2C/README.md
@@ -0,0 +1,178 @@
+# 司南报告组件 (DWBG6A2C) - 模块化架构
+
+## 概述
+
+司南报告组件采用模块化架构设计,将完整的司南报告拆分成13个独立的模块,每个模块都可以作为独立的tab显示,具有独立的大标题。
+
+## 数据结构
+
+司南报告的数据结构如下:
+
+```javascript
+{
+ "apiID": "DWBG6A2C",
+ "data": {
+ "baseInfo": {}, // 基本信息
+ "standLiveInfo": {}, // 身份信息核验
+ "riskPoint": {}, // 命中风险标注
+ "securityInfo": {}, // 公安重点人员核验
+ "antiFraudInfo": {}, // 涉赌涉诈人员核验
+ "riskList": {}, // 风险名单
+ "applicationStatistics": {}, // 历史借贷行为
+ "lendingStatistics": {}, // 近24个月放款情况
+ "performanceStatistics": {}, // 履约情况
+ "overdueRecord": {}, // 历史逾期记录
+ "creditDetail": {}, // 授信详情
+ "rentalBehavior": {}, // 租赁行为
+ "riskSupervision": {}, // 关联风险监督
+ "judiciaRiskInfos": [] // 法院风险信息
+ },
+ "success": true,
+ "timestamp": "2025-01-20 21:19:58"
+}
+```
+
+## 模块拆分
+
+司南报告被拆分成以下14个独立模块:
+
+| API ID | 模块名称 | 包含数据 | 组件文件 |
+|--------|----------|----------|----------|
+| `DWBG6A2C_BaseInfo` | 基本信息 | baseInfo | BaseInfoSection.vue |
+| `DWBG6A2C_StandLiveInfo` | 身份信息核验 | standLiveInfo | StandLiveInfoSection.vue |
+| `DWBG6A2C_RiskPoint` | 命中风险标注 | riskPoint | RiskPointSection.vue |
+| `DWBG6A2C_SecurityInfo` | 公安重点人员核验 | securityInfo | SecurityInfoSection.vue |
+| `DWBG6A2C_AntiFraudInfo` | 涉赌涉诈人员核验 | antiFraudInfo | AntiFraudInfoSection.vue |
+| `DWBG6A2C_RiskList` | 风险名单 | riskList | RiskListSection.vue |
+| `DWBG6A2C_ApplicationStatistics` | 历史借贷行为 | applicationStatistics | ApplicationStatisticsSection.vue |
+| `DWBG6A2C_LendingStatistics` | 近24个月放款情况 | lendingStatistics | LendingStatisticsSection.vue |
+| `DWBG6A2C_PerformanceStatistics` | 履约情况 | performanceStatistics | PerformanceStatisticsSection.vue |
+| `DWBG6A2C_OverdueRecord` | 历史逾期记录 | overdueRecord | OverdueRecordSection.vue |
+| `DWBG6A2C_CreditDetail` | 授信详情 | creditDetail | CreditDetailSection.vue |
+| `DWBG6A2C_RentalBehavior` | 租赁行为 | rentalBehavior | RentalBehaviorSection.vue |
+| `DWBG6A2C_RiskSupervision` | 关联风险监督 | riskSupervision | RiskSupervisionSection.vue |
+| `DWBG6A2C_CourtRiskInfo` | 法院风险信息 | judiciaRiskInfos | CourtRiskInfoSection.vue |
+
+## 使用方法
+
+### 1. 前端自动拆分
+
+BaseReport.vue 已自动配置支持司南报告的模块化显示:
+
+```javascript
+import { splitDWBG6A2CForTabs } from '@/ui/DWBG6A2C/utils/simpleSplitter.js';
+
+// 处理数据拆分(支持DWBG8B4D和DWBG6A2C)
+const processedReportData = computed(() => {
+ let data = reportData.value;
+
+ // 拆分DWBG8B4D数据
+ data = splitDWBG8B4DForTabs(data);
+
+ // 拆分DWBG6A2C数据
+ data = splitDWBG6A2CForTabs(data);
+
+ return data;
+});
+```
+
+### 2. 组件配置
+
+BaseReport.vue 中已配置所有司南报告模块:
+
+```javascript
+// 司南报告
+DWBG6A2C: {
+ name: "司南报告",
+ component: defineAsyncComponent(() => import("@/ui/DWBG6A2C/index.vue")),
+ remark: '司南报告提供全面的个人信用风险评估,包括身份核验、风险名单、借贷行为、履约情况等多维度分析。'
+},
+// ... 其他模块配置
+```
+
+## 组件结构
+
+```
+src/ui/DWBG6A2C/
+├── index.vue # 原始完整组件(保留)
+├── README.md # 文档说明
+├── components/ # 子组件目录
+│ ├── BaseInfoSection.vue # 基本信息
+│ ├── StandLiveInfoSection.vue # 身份信息核验
+│ ├── RiskPointSection.vue # 命中风险标注
+│ ├── SecurityInfoSection.vue # 公安重点人员核验
+│ ├── AntiFraudInfoSection.vue # 涉赌涉诈人员核验
+│ ├── RiskListSection.vue # 风险名单
+│ ├── ApplicationStatisticsSection.vue # 历史借贷行为
+│ ├── LendingStatisticsSection.vue # 近24个月放款情况
+│ ├── PerformanceStatisticsSection.vue # 履约情况
+│ ├── OverdueRecordSection.vue # 历史逾期记录
+│ ├── CreditDetailSection.vue # 授信详情
+│ ├── RentalBehaviorSection.vue # 租赁行为
+│ ├── RiskSupervisionSection.vue # 关联风险监督
+│ └── CourtRiskInfoSection.vue # 法院风险信息
+└── utils/
+ └── simpleSplitter.js # 数据拆分工具
+```
+
+## 特色功能
+
+### 1. 智能风险评估
+- 多维度风险标注
+- 智能颜色编码
+- 风险等级自动判断
+
+### 2. 数据可视化
+- 渐变色彩设计
+- 图标化展示
+- 响应式布局
+
+### 3. 用户友好
+- 清晰的层次结构
+- 详细的说明文档
+- 直观的风险提示
+
+### 4. 模块化设计
+- 独立的模块组件
+- 可复用的工具函数
+- 灵活的数据拆分
+
+## 工具函数
+
+`utils/simpleSplitter.js` 提供了以下工具函数:
+
+- `splitDWBG6A2CForTabs()` - 数据拆分
+- `formatRiskLevel()` - 格式化风险等级
+- `formatPhoneStatus()` - 格式化手机号状态
+- `formatVerificationResult()` - 格式化身份核验结果
+- `formatInTime()` - 格式化在网时长
+- `hasRiskData()` - 检查是否有风险数据
+
+## 使用示例
+
+```javascript
+// 在页面中使用
+
+```
+
+## 注意事项
+
+1. 确保数据格式符合司南报告的标准结构
+2. 所有模块都支持数据为空的情况
+3. 风险评估基于实际数据动态计算
+4. 组件采用 Tailwind CSS 进行样式设计
+5. 支持移动端响应式布局
+
+## 更新日志
+
+- v1.0.0: 初始版本,支持完整的司南报告模块化显示
+- 包含13个独立模块
+- 支持自动数据拆分
+- 提供完整的风险评估功能
diff --git a/src/ui/DWBG6A2C/components/AntiFraudInfoSection.vue b/src/ui/DWBG6A2C/components/AntiFraudInfoSection.vue
new file mode 100644
index 0000000..914c775
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/AntiFraudInfoSection.vue
@@ -0,0 +1,527 @@
+
+
+
+
+
+
+
+
涉赌涉诈人员核验
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ overallRiskLevel.level }}
+
+
风险等级
+
+
+
+ {{ riskItemCount }}
+
+
风险项数量
+
+
+
+
+
+
+
+
+
+
+
+ {{ getRiskLevelText(item.riskLevel) }}
+
+
+
+
+
+
+
+
+
+
{{ getItemRiskDescription(key, item.riskLevel) }}
+
+
+
+
+
+
+
+
+
+
+
+
+ 📊
+ 综合风险评分
+
+
+ {{ antiFraudInfo.riskScore }}
+
+
+
+
+
+
+
+
+
+
+
高风险警告
+
+
+ 检测到涉赌涉诈高风险,建议立即停止相关业务并进行详细调查。
+
+
+
+
+
+
+
+
+
+
涉赌涉诈核验通过
+
+
+ 未检测到涉赌涉诈风险,各项指标正常。
+
+
+
+
+
+
+
+
+
+
风险等级说明
+
+
+
0: 无风险
+
A: 较低风险 - 近三个月有参与疑似涉赌涉诈中风险交易
+
B: 低风险 - 近三个月有参与疑似涉赌涉诈高风险交易,近期未参与
+
C: 中风险 - 近三个月有与赌博庄家、欺诈收款关联交易
+
D: 高风险 - 近三个月有被交易处罚,涉赌、涉诈等高危风险交易
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/DWBG6A2C/components/ApplicationStatisticsSection.vue b/src/ui/DWBG6A2C/components/ApplicationStatisticsSection.vue
new file mode 100644
index 0000000..08fe280
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/ApplicationStatisticsSection.vue
@@ -0,0 +1,398 @@
+
+
+
+
+
+
+
+
+
历史借贷行为
+
+
+
+
+
+
+
+
+ {{ applicationStatistics?.totalApplicationCount || 0 }}
+
+
总申请机构数
+
+
+
+ {{ formatDaysSinceLastApplication }}
+
+
距最近申请
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 近1个月申请机构数
+
+ {{ applicationStatistics?.applicationCountLastMonth || 0 }}家
+
+
+
+ 近3个月申请机构数
+
+ {{ applicationStatistics?.applicationCountLast3Months || 0 }}家
+
+
+
+ 近6个月申请机构数
+
+ {{ applicationStatistics?.applicationCountLast6Months || 0 }}家
+
+
+
+ 近12个月申请机构数
+
+ {{ applicationStatistics?.applicationCountLast12Months || 0 }}家
+
+
+
+
+
+
+
+
+
近期申请时间
+
+ 最后一次申请时间
+
+ {{ applicationStatistics?.lastApplicationDate || '-' }}
+
+
+
+ 距离最近一次申请
+
+ {{ formatDaysSinceLastApplication }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/DWBG6A2C/components/BaseInfoSection.vue b/src/ui/DWBG6A2C/components/BaseInfoSection.vue
new file mode 100644
index 0000000..7edbf10
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/BaseInfoSection.vue
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
+
+
+ 个人信息
+
+
+
+ 姓名
+ {{ baseInfo?.name || '-' }}
+
+
+ 性别
+ {{ baseInfo?.sex || '-' }}
+
+
+ 年龄
+ {{ baseInfo?.age ? baseInfo.age + '岁' : '-' }}
+
+
+ 身份证号
+ {{ baseInfo?.idCard || '-' }}
+
+
+ 手机号码
+ {{ baseInfo?.phone || '-' }}
+
+
+
+
+
+
+
+
+ 地域信息
+
+
+
+ 户籍所在地
+ {{ baseInfo?.location || '-' }}
+
+
+ 号码归属地
+ {{ baseInfo?.phoneArea || '-' }}
+
+
+ 手机运营商
+ {{ baseInfo?.channel || '-' }}
+
+
+
+
+
+
+
+
+ 号码状态
+
+
+
手机号状态
+
+ {{ phoneStatusInfo.icon }}
+
+ {{ phoneStatusInfo.text }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/DWBG6A2C/components/CourtRiskInfoSection.vue b/src/ui/DWBG6A2C/components/CourtRiskInfoSection.vue
new file mode 100644
index 0000000..4c94553
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/CourtRiskInfoSection.vue
@@ -0,0 +1,591 @@
+
+
+
+
+
+
+
+
+
+ 法院风险概览
+
+
+
+
+ {{ courtRiskInfos?.length || 0 }}
+
+
法院案件数
+
+
+
+ {{ courtRiskInfos?.length > 0 ? '有风险' : '无风险' }}
+
+
风险状态
+
+
+
+
+
+
+
+
+
+
+
+
+
案件类型分布
+
+
+
+
+
+
+
+
+
+
+ {{ typeInfo.count }}
+
+
{{ getCaseTypeShortName(type) }}
+
+ {{ typeInfo.count > 0 ? '有风险' : '无风险' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ getCaseTypeName(caseType) }}
+
+ {{ cases.length }}件
+
+
+
+
+
+
+
+
+
+
+
+ 案件类型:
+ {{ caseItem.caseType || '-' }}
+
+
+ 审理法院:
+ {{ caseItem.court || '-' }}
+
+
+ 诉讼地位:
+ {{ caseItem.litigantType || '-' }}
+
+
+ 立案时间:
+ {{ caseItem.filingTime || '-' }}
+
+
+ 结案时间:
+ {{ caseItem.disposalTime || '-' }}
+
+
+ 案件状态:
+
+ {{ caseItem.caseStatus || '-' }}
+
+
+
+ 执行金额:
+ {{ caseItem.executionAmount }}
+
+
+ 已还款金额:
+ {{ caseItem.repaidAmount }}
+
+
+ 案由:
+ {{ caseItem.caseReason || '-' }}
+
+
+ 结案方式:
+ {{ caseItem.disposalMethod || '-' }}
+
+
+ 判决结果:
+ {{ caseItem.judgmentResult || '-' }}
+
+
+ 案件分类:
+ {{ caseItem.type || '-' }}
+
+
+
+
+
+
+ 身份匹配度
+
+ {{ (caseItem.matchScore * 100).toFixed(1) }}%
+
+
+
+
+
+
+
+
案件摘要:
+
+
+ {{ formatContentSummary(caseItem.contentSummary) }}
+
+
+
+
+
+
+
公告编号:
+
+
+ {{ caseItem.executionAnnouncementId }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
法院风险警告
+
+ 检测到法院相关案件记录,存在司法风险,建议立即停止相关业务并进行详细核实。
+
+
+ 涉及案件类型:
+ {{ getCaseTypesList.join('、') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
法院风险核验通过
+
+ 未检测到法院相关案件记录,司法风险较低。
+
+
+
+
+
+
+
+
案件类型说明
+
+
民事案件: 涉及财产、合同等民事纠纷
+
刑事案件: 涉及刑法规定的犯罪行为
+
行政案件: 涉及行政管理相关纠纷
+
执行案件: 强制执行相关案件
+
非诉保全审查案件: 财产保全等非诉讼案件
+
强制清算与破产案件: 企业清算破产相关案件
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ui/DWBG6A2C/components/CreditDetailSection.vue b/src/ui/DWBG6A2C/components/CreditDetailSection.vue
new file mode 100644
index 0000000..a609125
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/CreditDetailSection.vue
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+
+
+
授信详情
+
+
+
+
+
+
+
+
+ {{ hasAnyCredit ? '有授信记录' : '无授信记录' }}
+
+
授信状态
+
+
+
+
+
+
+
+
+
+
+ {{ creditDetail.maxOnlineLoanCredit }}
+
+
最大授信额度
+
+
+
+ {{ creditDetail.avgOnlineLoanCredit }}
+
+
平均授信额度
+
+
+
+
+
+
+
+
+
+
+ {{ creditDetail.maxConsumptionInstallmentCredit }}
+
+
最大授信额度
+
+
+
+ {{ creditDetail.avgConsumptionInstallmentCredit }}
+
+
平均授信额度
+
+
+
+
+
+
+
+
+
+
+ {{ getMaxCreditLevel }}
+
+
最高授信等级
+
+
+
+ {{ getCreditTypeCount }}
+
+
授信产品类型
+
+
+
+
+
+
+
+
+
+
+
+
+
高额授信风险提示
+
+ 检测到较高的授信额度,可能存在过度授信风险,需关注实际使用情况和还款能力。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
暂无授信记录
+
+ 未检测到授信详情信息,可能是新用户或未使用相关金融产品。
+
+
+
+
+
+
+
+
+
+
+
+ 网络贷款类
+ 包括各类线上信贷产品的授信额度
+
+
+ 消费分期类
+ 包括各类消费分期产品的授信额度
+
+
+ 最大授信额度
+ 该类产品中的最高授信额度
+
+
+ 平均授信额度
+ 该类产品的平均授信额度
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/DWBG6A2C/components/LendingStatisticsSection.vue b/src/ui/DWBG6A2C/components/LendingStatisticsSection.vue
new file mode 100644
index 0000000..700e948
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/LendingStatisticsSection.vue
@@ -0,0 +1,567 @@
+
+
+
+
+
+
+
+
+
近24个月放款情况
+
+
+
+
+
+
+
+
+ {{ lendingStatistics?.totalLendingInstitutionCount || 0 }}
+
+
放贷机构总数
+
+
+
+ {{ getTotalLendingStatus }}
+
+
放款状态
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 近1个月放贷次数
+
+ {{ lendingStatistics?.lendingCountLastMonth || 0 }}次
+
+
+
+ 近3个月放贷次数
+
+ {{ lendingStatistics?.lendingCountLast3Months || 0 }}次
+
+
+
+ 近6个月放贷次数
+
+ {{ lendingStatistics?.lendingCountLast6Months || 0 }}次
+
+
+
+ 近12个月放贷次数
+
+ {{ lendingStatistics?.lendingCountLast12Months || 0 }}次
+
+
+
+ 近24个月放贷次数
+
+ {{ lendingStatistics?.lendingCountLast24Months || 0 }}次
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 近1个月放贷金额
+
+ {{ lendingStatistics?.lendingAmountLastMonth || '-' }}
+
+
+
+ 近3个月放贷金额
+
+ {{ formatAmountInterval(lendingStatistics?.lendingAmountLast3Months) }}
+
+
+
+ 近6个月放贷金额
+
+ {{ formatAmountInterval(lendingStatistics?.lendingAmountLast6Months) }}
+
+
+
+ 近12个月放贷金额
+
+ {{ formatAmountInterval(lendingStatistics?.lendingAmountLast12Months) }}
+
+
+
+ 近24个月放贷金额
+
+ {{ formatAmountInterval(lendingStatistics?.lendingAmountLast24Months) }}
+
+
+
+
+
+
+
+
+
近期放款时间
+
+ 最近一次放款日期
+
+ {{ lendingStatistics?.lastLendingDate || '-' }}
+
+
+
+ 距离最近一次放款日期已有(天)
+
+ {{ formatDaysInterval(lendingStatistics?.daysSinceLastLending) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/DWBG6A2C/components/OverdueRecordSection.vue b/src/ui/DWBG6A2C/components/OverdueRecordSection.vue
new file mode 100644
index 0000000..8e91936
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/OverdueRecordSection.vue
@@ -0,0 +1,617 @@
+
+
+
+
+
+
+
+
+
历史逾期记录
+
+
+
+
+
+
+
+
+ {{ overdueRecord?.currentOverdueCount || 0 }}
+
+
当前逾期笔数
+
+
+
+ {{ overdueRecord?.currentOverdueInstitution || '-' }}
+
+
当前逾期机构
+
+
+
+
+
+
+
+
+
+
+ {{ overdueRecord?.totalOverdueAmount || '-' }}
+
+
逾期总金额
+
+
+
+ {{ overdueRecord?.lastOverdueDate || '-' }}
+
+
最近逾期时间
+
+
+
+
+
+
+
+
+
+
+
+
+
+
时间段
+
M0+笔数
+
M1+笔数
+
累计金额
+
+
+
+
+
+
+
+
近6个月
+
+ {{ overdueRecord?.m0PlusCountLast6Months || 0 }} 笔
+
+
+ {{ overdueRecord?.m1PlusCountLast6Months || 0 }} 笔
+
+
+ {{ overdueRecord?.totalAmountLast6Months || '-' }}
+
+
+
+
+
+
近12个月
+
+ {{ overdueRecord?.m0PlusCountLast12Months || 0 }} 笔
+
+
+ {{ overdueRecord?.m1PlusCountLast12Months || 0 }} 笔
+
+
+ {{ overdueRecord?.totalAmountLast12Months || '-' }}
+
+
+
+
+
+
近24个月
+
+ {{ overdueRecord?.m0PlusCountLast24Months || 0 }} 笔
+
+
+ {{ overdueRecord?.m1PlusCountLast24Months || 0 }} 笔
+
+
+ {{ overdueRecord?.totalAmountLast24Months || '-' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
逾期风险提示
+
+
+
+
+
+
当前逾期风险警告
+
+ 检测到当前存在逾期记录,存在较高的信用风险,建议谨慎处理。
+
+
+ 当前逾期:
+ {{ overdueRecord?.currentOverdueCount || 0 }} 笔
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
历史逾期风险提示
+
+ 存在历史逾期记录,需关注其还款意愿和能力。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
逾期记录良好
+
+ 未检测到逾期记录,信用表现良好。
+
+
+
+
+
+
+
+
+
+
逾期等级说明
+
+ M0+
+ 逾期1-29天
+
+
+ M1+
+ 逾期30天以上
+
+
+ 当前逾期
+ 尚未结清的逾期订单
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/DWBG6A2C/components/PerformanceStatisticsSection.vue b/src/ui/DWBG6A2C/components/PerformanceStatisticsSection.vue
new file mode 100644
index 0000000..da4c6b8
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/PerformanceStatisticsSection.vue
@@ -0,0 +1,522 @@
+
+
+
+
+
+
+
+
+
履约情况
+
+
+
+
+
+
+
+
+ {{ performanceStatistics?.settledLoanOrderCount || 0 }}
+
+
已结清订单数
+
+
+
+ {{ performanceStatistics?.creditLoanDuration || 0 }}
+
+
信用贷款时长
+
+
+
+
+
+
+
+
+
+
+ {{ performanceStatistics.normalRepaymentRatio }}
+
+
正常还款占总订单比例
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 近1个月履约次数
+
+ {{ performanceStatistics?.performanceCountLastMonth || 0 }}次
+
+
+
+ 近3个月履约次数
+
+ {{ performanceStatistics?.performanceCountLast3Months || 0 }}次
+
+
+
+ 近6个月履约次数
+
+ {{ performanceStatistics?.performanceCountLast6Months || 0 }}次
+
+
+
+ 近12个月履约次数
+
+ {{ performanceStatistics?.performanceCountLast12Months || 0 }}次
+
+
+
+ 近24个月履约次数
+
+ {{ performanceStatistics?.performanceCountLast24Months || 0 }}次
+
+
+
+
+
+
+
+
+
+
+ 近1个月履约金额
+
+ {{ performanceStatistics.performanceAmountLastMonth }}
+
+
+
+ 近3个月履约金额
+
+ {{ formatAmountInterval(performanceStatistics.performanceAmountLast3Months) }}
+
+
+
+ 近6个月履约金额
+
+ {{ formatAmountInterval(performanceStatistics.performanceAmountLast6Months) }}
+
+
+
+ 近12个月履约金额
+
+ {{ formatAmountInterval(performanceStatistics.performanceAmountLast12Months) }}
+
+
+
+ 近24个月履约金额
+
+ {{ formatAmountInterval(performanceStatistics.performanceAmountLast24Months) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 近1个月还款异常次数
+
+ {{ performanceStatistics?.repaymentExceptionCountLastMonth || 0 }}次
+
+
+
+ 近3个月还款异常次数
+
+ {{ performanceStatistics?.repaymentExceptionCountLast3Months || 0 }}次
+
+
+
+ 近6个月还款异常次数
+
+ {{ performanceStatistics?.repaymentExceptionCountLast6Months || 0 }}次
+
+
+
+ 近12个月还款异常次数
+
+ {{ performanceStatistics?.repaymentExceptionCountLast12Months || 0 }}次
+
+
+
+ 近24个月还款异常次数
+
+ {{ performanceStatistics?.repaymentExceptionCountLast24Months || 0 }}次
+
+
+
+
+
+
+
+
+
近期履约时间
+
+ 距离最近一次履约
+
+ {{ formatDaysInterval(performanceStatistics.daysSinceLastPerformance) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/DWBG6A2C/components/RentalBehaviorSection.vue b/src/ui/DWBG6A2C/components/RentalBehaviorSection.vue
new file mode 100644
index 0000000..03d1c8f
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/RentalBehaviorSection.vue
@@ -0,0 +1,824 @@
+
+
+
+
+
+
+
+
+
租赁行为
+
+
+
+
+
+
+
+
+ {{ get12MonthsApplicationCount }}
+
+
近12个月申请次数
+
+
+
+ {{ get12MonthsInstitutionCount }}
+
+
近12个月申请机构数
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 申请次数
+
+ {{ getApplicationCount(getCurrentTabData(tab.key).count) }} 次
+
+
+
+ 申请机构数
+
+ {{ getInstitutionCount(getCurrentTabData(tab.key).institutions) }} 家
+
+
+
+ 周末申请次数
+
+ {{ getApplicationCount(getCurrentTabData(tab.key).weekend) }} 次
+
+
+
+ 夜间申请次数
+
+ {{ getApplicationCount(getCurrentTabData(tab.key).night) }} 次
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 申请次数
+
+ {{ getApplicationCount(getCurrentTabData(tab.key).count) }} 次
+
+
+
+ 申请机构数
+
+ {{ getInstitutionCount(getCurrentTabData(tab.key).institutions) }} 家
+
+
+
+ 周末申请次数
+
+ {{ getApplicationCount(getCurrentTabData(tab.key).weekend) }} 次
+
+
+
+ 夜间申请次数
+
+ {{ getApplicationCount(getCurrentTabData(tab.key).night) }} 次
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 申请次数
+
+ {{ getApplicationCount(getCurrentTabData(tab.key).count) }} 次
+
+
+
+ 申请机构数
+
+ {{ getInstitutionCount(getCurrentTabData(tab.key).institutions) }} 家
+
+
+
+ 周末申请次数
+
+ {{ getApplicationCount(getCurrentTabData(tab.key).weekend) }} 次
+
+
+
+ 夜间申请次数
+
+ {{ getApplicationCount(getCurrentTabData(tab.key).night) }} 次
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
风险提示
+
+
+
周末申请: 可能存在异常行为模式
+
夜间申请: 需关注是否存在规避监管的行为
+
高频申请: 短期内多次申请可能存在套现风险
+
+
+
+
+
+
+
+
+
+
+
+
+
+
高频租赁风险警告
+
+ 检测到近期高频租赁申请行为,可能存在套现、欺诈或资金链紧张等风险。
+
+
+
+ 高频时段:
+ {{ recentHighActivity.join('、') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
异常时间段活动提示
+
+ 检测到周末或夜间租赁申请活动,需关注是否存在异常行为。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
租赁行为正常
+
+ 未检测到异常租赁申请行为,风险较低。
+
+
+
+
+
+
+
+
+
+
数据说明
+
+ 申请次数
+ 该时间段内的租赁申请总次数
+
+
+ 申请机构数
+ 该时间段内申请的不同机构数量
+
+
+ 周末申请
+ 周六、周日的申请活动
+
+
+ 夜间申请
+ 通常指22:00-06:00时间段的申请
+
+
+ 风险评估
+ 短期内高频申请可能存在较高风险
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ui/DWBG6A2C/components/RiskListSection.vue b/src/ui/DWBG6A2C/components/RiskListSection.vue
new file mode 100644
index 0000000..9f2aae6
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/RiskListSection.vue
@@ -0,0 +1,407 @@
+
+
+
+
+
+
+
+
风险名单
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ riskCount }}
+
+
命中名单数
+
+
+
+ {{ riskCount > 0 ? '有风险' : '无风险' }}
+
+
综合评估
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.hasRisk ? '命中' : '未命中' }}
+
+
+
+
+
+
+
+
+
+
{{ item.name }}
+
+
+
+ {{ getSeverityText(item.severity) }}级
+
+
+
+
{{ item.description }}
+
+
+
+
+
+
+
+
+
+
+
+
高风险名单警告
+
+
+ 命中多个高风险名单,建议立即停止业务并进行详细核实。
+
+
+ 命中名单:{{ highRiskItemNames.join('、') }}
+
+
+
+
+
+
+
+
+
+
风险名单核查通过
+
+
+ 未命中任何风险名单,各项指标正常。
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/DWBG6A2C/components/RiskPointSection.vue b/src/ui/DWBG6A2C/components/RiskPointSection.vue
new file mode 100644
index 0000000..5e946d2
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/RiskPointSection.vue
@@ -0,0 +1,436 @@
+
+
+
+
+
+
+
+
命中风险标注
+
+
+
+
+
+
+
+
+
+
+
+
{{ totalRiskCount }}
+
风险点总数
+
+
+
+ {{ totalRiskCount > 0 ? '有风险' : '无风险' }}
+
+
综合评估
+
+
+
+
+
+
+
+
+
+
+ {{ getRiskLevelText(riskItem) }}
+
+
+
+
+
+
+
+
+
{{ riskItem.name }}
+
{{ riskItem.description }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
高风险警告
+
+
+ 检测到多个高风险项目,建议谨慎处理。特别关注司法涉诉、公安重点人员等关键风险指标。
+
+
+
+
+
+
+
+
+
+
风险评估通过
+
+
+ 未检测到明显风险项目,各项指标表现良好。
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/DWBG6A2C/components/RiskSupervisionSection.vue b/src/ui/DWBG6A2C/components/RiskSupervisionSection.vue
new file mode 100644
index 0000000..2e5d339
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/RiskSupervisionSection.vue
@@ -0,0 +1,384 @@
+
+
+
+
+
+
+
+
+
关联风险监督
+
+
+
+
+
+
+
+
+
+ {{ getOverallRiskStatus }}
+
+
关联风险状态
+
+
+
+ {{ totalAssociations }}
+
+
关联项目总数
+
+
+
+
+
+
+
+
+
+
+ {{ riskSupervision?.rentalRiskListIdCardRelationsPhones || 0 }}
+
+
同一身份证关联手机号数
+
+
+
+ {{ riskSupervision?.rentalRiskListPhoneRelationsIdCards || 0 }}
+
+
同一手机号关联身份证数
+
+
+
+
+
+
+
+
+
+
+ {{ riskSupervision?.leastApplicationTime || '-' }}
+
+
最后申请时间
+
+
+
+
+
+
+
+
+
+
+ {{ riskSupervision.details }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getPhoneRiskLevel }}
+
+
+
+
手机号关联风险:
+
{{ getPhoneRiskDescription }}
+
+
+
+
+
+ {{ getIdCardRiskLevel }}
+
+
+
+
身份证关联风险:
+
{{ getIdCardRiskDescription }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
高关联风险警告
+
+ 检测到异常的身份证或手机号关联情况,可能存在身份伪冒、团伙欺诈等风险。
+
+
+
+ 风险项:
+ {{ highRiskItems.join('、') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
关联风险提示
+
+ 存在一定的关联风险,建议进一步核实相关信息。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
关联风险正常
+
+ 未检测到异常关联情况,风险较低。
+
+
+
+
+
+
+
+
+
+
风险说明
+
+ 身份证关联手机号:
+ 同一身份证绑定的不同手机号数量
+
+
+ 手机号关联身份证:
+ 同一手机号绑定的不同身份证数量
+
+
+ 风险评估:
+ 关联数量过多可能存在身份伪冒或团伙风险
+
+
+ 正常范围:
+ 一般情况下,关联数量在1-2个属于正常范围
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/DWBG6A2C/components/SecurityInfoSection.vue b/src/ui/DWBG6A2C/components/SecurityInfoSection.vue
new file mode 100644
index 0000000..14adb53
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/SecurityInfoSection.vue
@@ -0,0 +1,427 @@
+
+
+
+
+
+
+
+
公安重点人员核验
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ riskCount }}
+
+
风险项数量
+
+
+
+ {{ riskCount > 0 ? '有风险' : '安全' }}
+
+
综合评估
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.hasRisk ? '危险' : '安全' }}
+
+
+
+
+
+
+
+
+
+
{{ item.name }}
+
+
+
+ {{ item.severity === 'high' ? '高级' : '中级' }}
+
+
+
+
{{ item.description }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
高风险警告
+
+
+ 检测到公安重点人员风险,建议立即停止业务往来并进行详细核实。
+
+
+ 命中项目:{{ highRiskItemNames.join('、') }}
+
+
+
+
+
+
+
+
+
+
公安核验通过
+
+
+ 未命中公安重点人员名单,各项安全指标正常。
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/DWBG6A2C/components/StandLiveInfoSection.vue b/src/ui/DWBG6A2C/components/StandLiveInfoSection.vue
new file mode 100644
index 0000000..7d07e97
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/StandLiveInfoSection.vue
@@ -0,0 +1,383 @@
+
+
+
+
+
+
+
+
身份信息核验
+
+
+
+
+
+
+
+
+
+
+
+ {{ getOverallVerificationStatus }}
+
+
综合核验状态
+
+
+
+ {{ inTimeInfo.text }}
+
+
在网时长
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ finalAuthResultInfo.text }}
+
+
实名核验结果
+
说明:{{ getFinalAuthResultDescription }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ verificationInfo.text }}
+
+
运营商三要素核验
+
三要素核验:{{ getVerificationDescription }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ inTimeInfo.text }}
+
+
运营商在网时长
+
在网时长:{{ getInTimeDescription }}
+
+
+
+
+
+
+
+
+
+
+
+
+
身份核验风险提示
+
+
+ {{ riskDescription }}
+
+
+ 风险项:{{ verificationRiskItems.join('、') }}
+
+
+
+
+
+
+
+
+
+
核验说明
+
+
+
实名核验:验证姓名与身份证号的一致性
+
三要素核验:验证姓名、身份证号、手机号在运营商的一致性
+
在网时长:手机号在运营商的使用时长,时长越长信用度越高
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ui/DWBG6A2C/index.vue b/src/ui/DWBG6A2C/index.vue
new file mode 100644
index 0000000..6b710b0
--- /dev/null
+++ b/src/ui/DWBG6A2C/index.vue
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/DWBG6A2C/utils/intervalFormatter.js b/src/ui/DWBG6A2C/utils/intervalFormatter.js
new file mode 100644
index 0000000..dd54cf2
--- /dev/null
+++ b/src/ui/DWBG6A2C/utils/intervalFormatter.js
@@ -0,0 +1,304 @@
+/**
+ * 区间表达式格式化工具
+ * 将数学区间表达式转换为用户友好的文本描述
+ */
+
+/**
+ * 格式化区间表达式
+ * @param {string} interval - 区间表达式,如 "(0,1000)", "[2000,30000)", "[17,+)"
+ * @param {string} unit - 单位,如 "元", "次", "个", "天" 等
+ * @returns {string} 格式化后的文本,如果格式化失败则返回原数据
+ */
+export function formatInterval(interval, unit = "") {
+ // 如果数据为空或无效,返回原数据
+ if (!interval || interval === "-" || interval === "0") {
+ return interval || "-";
+ }
+
+ try {
+ // 处理特殊格式,如 "3,6(个月)"
+ if (interval.includes("(") && interval.includes(")")) {
+ const match = interval.match(/^(\d+(?:,\d+)*)\((.+)\)$/);
+ if (match) {
+ const numbers = match[1].split(",").map((n) => n.trim());
+ const timeUnit = match[2];
+ if (numbers.length === 2) {
+ return `${numbers[0]}-${numbers[1]}${timeUnit}`;
+ }
+ return `${numbers.join(", ")}${timeUnit}`;
+ }
+ }
+
+ // 处理区间表达式
+ const intervalPattern =
+ /^([\[\(])(\d+(?:\.\d+)?),(\d+(?:\.\d+)?|\+)([\]\)])$/;
+ const match = interval.match(intervalPattern);
+
+ // 如果不是区间表达式,返回原数据
+ if (!match) {
+ return interval;
+ }
+
+ const [, leftBracket, leftValue, rightValue, rightBracket] = match;
+ const isLeftInclusive = leftBracket === "[";
+ const isRightInclusive = rightBracket === "]";
+ const isRightInfinity = rightValue === "+";
+
+ let result = "";
+
+ if (isRightInfinity) {
+ // 处理无穷大情况,如 "[17,+)"
+ if (isLeftInclusive) {
+ result = `≥${leftValue}${unit}`;
+ } else {
+ result = `>${leftValue}${unit}`;
+ }
+ } else {
+ // 处理有限区间
+ const leftNum = parseFloat(leftValue);
+ const rightNum = parseFloat(rightValue);
+
+ // 检查数值是否有效
+ if (isNaN(leftNum) || isNaN(rightNum)) {
+ return interval;
+ }
+
+ if (leftNum === rightNum) {
+ // 单点值
+ result = `${leftNum}${unit}`;
+ } else {
+ // 区间值 - 简化为实际数值范围
+ if (isLeftInclusive && isRightInclusive) {
+ result = `${leftNum}-${rightNum}${unit}`;
+ } else if (isLeftInclusive && !isRightInclusive) {
+ // 右开区间,显示到 rightNum-1
+ result = `${leftNum}-${rightNum - 1}${unit}`;
+ } else if (!isLeftInclusive && isRightInclusive) {
+ // 左开区间,显示从 leftNum+1
+ result = `${leftNum + 1}-${rightNum}${unit}`;
+ } else {
+ // 两端都不包含,显示从 leftNum+1 到 rightNum-1
+ result = `${leftNum + 1}-${rightNum - 1}${unit}`;
+ }
+ }
+ }
+
+ return result;
+ } catch (error) {
+ // 如果格式化过程中出现错误,返回原数据
+ console.warn("区间格式化失败:", error, "原数据:", interval);
+ return interval;
+ }
+}
+
+/**
+ * 格式化金额区间
+ * @param {string} interval - 金额区间表达式
+ * @returns {string} 格式化后的金额文本
+ */
+export function formatAmountInterval(interval) {
+ return formatInterval(interval, "元");
+}
+
+/**
+ * 格式化次数区间
+ * @param {string} interval - 次数区间表达式
+ * @returns {string} 格式化后的次数文本
+ */
+export function formatCountInterval(interval) {
+ return formatInterval(interval, "次");
+}
+
+/**
+ * 格式化天数区间
+ * @param {string} interval - 天数区间表达式
+ * @returns {string} 格式化后的天数文本
+ */
+export function formatDaysInterval(interval) {
+ return formatInterval(interval, "天");
+}
+
+/**
+ * 格式化机构数量区间
+ * @param {string} interval - 机构数量区间表达式
+ * @returns {string} 格式化后的机构数量文本
+ */
+export function formatInstitutionInterval(interval) {
+ return formatInterval(interval, "家");
+}
+
+/**
+ * 格式化时间区间
+ * @param {string} interval - 时间区间表达式
+ * @returns {string} 格式化后的时间文本
+ */
+export function formatTimeInterval(interval) {
+ if (!interval || interval === "-") {
+ return "-";
+ }
+
+ // 处理特殊格式,如 "3,6(个月)"
+ if (interval.includes("(") && interval.includes(")")) {
+ const match = interval.match(/^(\d+(?:,\d+)*)\((.+)\)$/);
+ if (match) {
+ const numbers = match[1].split(",").map((n) => n.trim());
+ const timeUnit = match[2];
+ if (numbers.length === 2) {
+ return `${numbers[0]}-${numbers[1]}${timeUnit}`;
+ }
+ return `${numbers.join(", ")}${timeUnit}`;
+ }
+ }
+
+ return formatInterval(interval, "");
+}
+
+/**
+ * 格式化申请次数区间
+ * @param {string} interval - 申请次数区间表达式,格式如 "2/1"
+ * @returns {string} 格式化后的申请次数文本
+ */
+export function formatApplicationInterval(interval) {
+ if (!interval || interval === "-") {
+ return "-";
+ }
+
+ // 处理 "2/1" 格式,表示 申请次数/机构数
+ if (interval.includes("/")) {
+ const [applyCount, institutionCount] = interval.split("/");
+ return `${applyCount}次/${institutionCount}家`;
+ }
+
+ return formatCountInterval(interval);
+}
+
+/**
+ * 格式化租赁申请数据 - 专门处理司南报告中的 "次数/机构数" 格式
+ * @param {string} data - 租赁申请数据,格式如 "2/1" (次数/机构数)
+ * @returns {Object} 包含格式化后的次数和机构数的对象
+ */
+export function formatRentalApplicationData(data) {
+ if (!data || data === "-" || data === "0/0") {
+ return {
+ count: 0,
+ institutions: 0,
+ countText: "0 次",
+ institutionsText: "0 家",
+ combinedText: "0 次 / 0 家",
+ };
+ }
+
+ if (data.includes("/")) {
+ const [countStr, institutionsStr] = data.split("/");
+ const count = parseInt(countStr) || 0;
+ const institutions = parseInt(institutionsStr) || 0;
+
+ return {
+ count,
+ institutions,
+ countText: `${count} 次`,
+ institutionsText: `${institutions} 家`,
+ combinedText: `${count} 次 / ${institutions} 家`,
+ };
+ }
+
+ // 如果不是标准格式,返回原数据
+ return {
+ count: 0,
+ institutions: 0,
+ countText: data,
+ institutionsText: data,
+ combinedText: data,
+ };
+}
+
+/**
+ * 格式化风险等级文本
+ * @param {string} level - 风险等级,如 "C2,C5"
+ * @returns {string} 格式化后的风险等级文本
+ */
+export function formatRiskLevel(level) {
+ if (!level) return "-";
+
+ const levelMap = {
+ 0: "正常人员",
+ A: "前科:侵犯公民人身权利,民主权利",
+ A1: "盗窃",
+ A2: "诈骗",
+ A3: "抢劫/夺",
+ A4: "故意伤害/杀人",
+ A5: "强奸/性侵/猥亵",
+ B: "经济类前科",
+ B1: "走私",
+ B2: "破坏金融管理秩序",
+ B3: "正常人员",
+ B4: "洗钱",
+ B5: "洗钱",
+ C: "妨害社会管理秩序",
+ C1: "扰乱公共秩序",
+ C2: "妨害司法",
+ C3: "涉毒",
+ C4: "涉黄刑案",
+ C5: "帮信/掩隐/侵公",
+ D: "重点",
+ D1: "危害国家、公共安全",
+ D2: "涉稳",
+ D3: "涉及境外",
+ D4: "涉恐、疆藏",
+ D5: "涉黑",
+ E: "涉交通案件",
+ F: "法院文书",
+ };
+
+ return level
+ .split(",")
+ .map((l) => levelMap[l.trim()] || l.trim())
+ .join("、");
+}
+
+/**
+ * 格式化状态文本
+ * @param {string} status - 状态值
+ * @param {Object} statusMap - 状态映射对象
+ * @returns {string} 格式化后的状态文本
+ */
+export function formatStatus(status, statusMap = {}) {
+ if (status === undefined || status === null || status === "") {
+ return "-";
+ }
+
+ return statusMap[status] || status;
+}
+
+/**
+ * 格式化风险标识
+ * @param {number} flag - 风险标识,0=未查得,1=高风险,2=低风险
+ * @returns {Object} 包含文本和样式的对象
+ */
+export function formatRiskFlag(flag) {
+ const flagMap = {
+ 0: { text: "未查得", class: "bg-gray-100 text-gray-700" },
+ 1: { text: "高风险", class: "bg-red-100 text-red-700" },
+ 2: { text: "低风险", class: "bg-green-100 text-green-700" },
+ };
+
+ return (
+ flagMap[flag] || { text: "未知", class: "bg-gray-100 text-gray-700" }
+ );
+}
+
+/**
+ * 格式化验证结果
+ * @param {string} result - 验证结果
+ * @returns {Object} 包含文本和样式的对象
+ */
+export function formatVerificationResult(result) {
+ const resultMap = {
+ 一致: { text: "一致", class: "text-green-600" },
+ 不一致: { text: "不一致", class: "text-red-600" },
+ 验证通过: { text: "验证通过", class: "text-green-600" },
+ 验证失败: { text: "验证失败", class: "text-red-600" },
+ };
+
+ return resultMap[result] || { text: result || "-", class: "text-gray-600" };
+}
diff --git a/src/ui/DWBG6A2C/utils/simpleSplitter.js b/src/ui/DWBG6A2C/utils/simpleSplitter.js
new file mode 100644
index 0000000..8dc05d1
--- /dev/null
+++ b/src/ui/DWBG6A2C/utils/simpleSplitter.js
@@ -0,0 +1,311 @@
+/**
+ * 司南报告(DWBG6A2C)数据拆分工具
+ * 将完整的司南报告数据拆分成多个独立的模块,用于在不同的tab中显示
+ */
+
+/**
+ * 将DWBG6A2C数据拆分为多个独立的tab模块
+ * @param {Array} reportData - 原始报告数据数组
+ * @returns {Array} 拆分后的模块数组
+ */
+export function splitDWBG6A2CForTabs(reportData) {
+ // 查找DWBG6A2C数据
+ const dwbg6a2cData = reportData.find(item => item.data?.apiID === 'DWBG6A2C');
+
+ if (!dwbg6a2cData || !dwbg6a2cData.data?.data) {
+ return reportData; // 如果没有找到DWBG6A2C数据,返回原数据
+ }
+
+ const originalData = dwbg6a2cData.data.data;
+ const baseTimestamp = dwbg6a2cData.data.timestamp;
+
+ // 创建拆分后的模块数组
+ const splitModules = [];
+
+ // 1. 基本信息
+ // if (originalData.baseInfo) {
+ // splitModules.push({
+ // data: {
+ // apiID: 'DWBG6A2C_BaseInfo',
+ // data: {
+ // baseInfo: originalData.baseInfo
+ // },
+ // success: true,
+ // timestamp: baseTimestamp
+ // }
+ // });
+ // }
+
+ // 2. 身份信息核验
+ if (originalData.standLiveInfo) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_StandLiveInfo',
+ data: {
+ standLiveInfo: originalData.standLiveInfo
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 3. 命中风险标注
+ if (originalData.riskPoint) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_RiskPoint',
+ data: {
+ riskPoint: originalData.riskPoint
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 4. 公安重点人员核验
+ if (originalData.securityInfo) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_SecurityInfo',
+ data: {
+ securityInfo: originalData.securityInfo
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 5. 涉赌涉诈人员核验
+ if (originalData.antiFraudInfo) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_AntiFraudInfo',
+ data: {
+ antiFraudInfo: originalData.antiFraudInfo
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 6. 风险名单
+ if (originalData.riskList) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_RiskList',
+ data: {
+ riskList: originalData.riskList
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 7. 历史借贷行为
+ if (originalData.applicationStatistics) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_ApplicationStatistics',
+ data: {
+ applicationStatistics: originalData.applicationStatistics
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 8. 近24个月放款情况
+ if (originalData.lendingStatistics) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_LendingStatistics',
+ data: {
+ lendingStatistics: originalData.lendingStatistics
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 9. 履约情况
+ if (originalData.performanceStatistics) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_PerformanceStatistics',
+ data: {
+ performanceStatistics: originalData.performanceStatistics
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 10. 历史逾期记录
+ if (originalData.overdueRecord) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_OverdueRecord',
+ data: {
+ overdueRecord: originalData.overdueRecord
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 11. 授信详情
+ if (originalData.creditDetail && Object.keys(originalData.creditDetail).length > 0) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_CreditDetail',
+ data: {
+ creditDetail: originalData.creditDetail
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 12. 租赁行为
+ if (originalData.rentalBehavior) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_RentalBehavior',
+ data: {
+ rentalBehavior: originalData.rentalBehavior
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 13. 关联风险监督
+ if (originalData.riskSupervision) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_RiskSupervision',
+ data: {
+ riskSupervision: originalData.riskSupervision
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 14. 法院风险信息
+ if (originalData.judiciaRiskInfos && originalData.judiciaRiskInfos.length > 0) {
+ splitModules.push({
+ data: {
+ apiID: 'DWBG6A2C_CourtRiskInfo',
+ data: {
+ judiciaRiskInfos: originalData.judiciaRiskInfos
+ },
+ success: true,
+ timestamp: baseTimestamp
+ }
+ });
+ }
+
+ // 移除原始的DWBG6A2C数据,添加拆分后的模块
+ const otherData = reportData.filter(item => item.data?.apiID !== 'DWBG6A2C');
+
+ return [...otherData, ...splitModules];
+}
+
+/**
+ * 格式化风险等级描述
+ * @param {string} level - 风险等级
+ * @returns {object} 包含颜色和文本的对象
+ */
+export function formatRiskLevel(level) {
+ const riskLevels = {
+ '0': { color: 'text-green-600', bg: 'bg-green-100', text: '无风险', icon: '✅' },
+ '1': { color: 'text-red-600', bg: 'bg-red-100', text: '有风险', icon: '⚠️' },
+ 'A': { color: 'text-yellow-600', bg: 'bg-yellow-100', text: '较低风险', icon: '⚠️' },
+ 'B': { color: 'text-orange-600', bg: 'bg-orange-100', text: '低风险', icon: '⚠️' },
+ 'C': { color: 'text-red-600', bg: 'bg-red-100', text: '中风险', icon: '🚨' },
+ 'D': { color: 'text-red-700', bg: 'bg-red-200', text: '高风险', icon: '🚨' }
+ };
+
+ return riskLevels[level] || { color: 'text-gray-600', bg: 'bg-gray-100', text: '未知', icon: '❓' };
+}
+
+/**
+ * 格式化手机号码状态
+ * @param {number} status - 状态码
+ * @returns {object} 包含颜色和文本的对象
+ */
+export function formatPhoneStatus(status) {
+ const statusMap = {
+ '-1': { color: 'text-gray-600', bg: 'bg-gray-100', text: '未查得', icon: '❓' },
+ '0': { color: 'text-red-600', bg: 'bg-red-100', text: '空号', icon: '❌' },
+ '1': { color: 'text-green-600', bg: 'bg-green-100', text: '实号', icon: '✅' },
+ '2': { color: 'text-orange-600', bg: 'bg-orange-100', text: '停机', icon: '⏸️' },
+ '3': { color: 'text-gray-600', bg: 'bg-gray-100', text: '库无', icon: '❓' },
+ '4': { color: 'text-yellow-600', bg: 'bg-yellow-100', text: '沉默号', icon: '😴' },
+ '5': { color: 'text-red-600', bg: 'bg-red-100', text: '风险号', icon: '⚠️' }
+ };
+
+ return statusMap[status.toString()] || { color: 'text-gray-600', bg: 'bg-gray-100', text: '未知', icon: '❓' };
+}
+
+/**
+ * 格式化身份核验结果
+ * @param {string} result - 核验结果
+ * @returns {object} 包含颜色和文本的对象
+ */
+export function formatVerificationResult(result) {
+ const resultMap = {
+ '0': { color: 'text-green-600', bg: 'bg-green-100', text: '一致', icon: '✅' },
+ '1': { color: 'text-red-600', bg: 'bg-red-100', text: '不一致或不存在', icon: '❌' }
+ };
+
+ return resultMap[result] || { color: 'text-gray-600', bg: 'bg-gray-100', text: '未知', icon: '❓' };
+}
+
+/**
+ * 格式化在网时长
+ * @param {string} inTime - 在网时长代码
+ * @returns {object} 包含颜色和文本的对象
+ */
+export function formatInTime(inTime) {
+ const timeMap = {
+ '0': { color: 'text-red-600', bg: 'bg-red-100', text: '0-3个月', icon: '📱' },
+ '3': { color: 'text-orange-600', bg: 'bg-orange-100', text: '3-6个月', icon: '📱' },
+ '6': { color: 'text-yellow-600', bg: 'bg-yellow-100', text: '6-12个月', icon: '📱' },
+ '12': { color: 'text-blue-600', bg: 'bg-blue-100', text: '12-24个月', icon: '📱' },
+ '24': { color: 'text-green-600', bg: 'bg-green-100', text: '24个月以上', icon: '📱' },
+ '99': { color: 'text-gray-600', bg: 'bg-gray-100', text: '状态异常', icon: '⚠️' },
+ '-1': { color: 'text-gray-600', bg: 'bg-gray-100', text: '查无记录', icon: '❓' }
+ };
+
+ return timeMap[inTime] || { color: 'text-gray-600', bg: 'bg-gray-100', text: '未知', icon: '❓' };
+}
+
+/**
+ * 检查是否有风险数据
+ * @param {Object} data - 数据对象
+ * @returns {boolean} 是否有风险
+ */
+export function hasRiskData(data) {
+ if (!data) return false;
+
+ // 检查对象中是否有非0值
+ return Object.values(data).some(value => {
+ if (typeof value === 'number') return value > 0;
+ if (typeof value === 'string') return value !== '0' && value !== '-' && value !== '';
+ return false;
+ });
+}
diff --git a/src/ui/FLXG7E8F/components/CaseDetail.vue b/src/ui/FLXG7E8F/components/CaseDetail.vue
new file mode 100644
index 0000000..06d0299
--- /dev/null
+++ b/src/ui/FLXG7E8F/components/CaseDetail.vue
@@ -0,0 +1,404 @@
+
+
+
+
+ {{ isSpecialCase ? '执行法院' : '经办法院' }}:
+ {{ caseData.n_jbfy || caseData.executiveCourt || "—" }}
+
+
+ 所属地域:
+ {{ caseData.c_ssdy || caseData.province || "—" }}
+
+
+
+ 案件类型:
+ {{ caseData.n_ajlx || "—" }}
+
+
+
+
+ 案号:
+ {{ caseData.c_ah || "—" }}
+
+
+
+
+ 原审案号:
+ {{ caseData.c_ah_ys || "—" }}
+
+
+
+
+ 后续案号:
+ {{ caseData.c_ah_hx || "—" }}
+
+
+
+
+ 立案时间:
+ {{ formatDate(caseData.d_larq || caseData.fileDate || caseData.larq) }}
+
+
+
+
+ 立案案由:
+ {{ caseData.n_laay_tree || caseData.n_laay || "暂无" }}
+
+
+
+
+ 立案案由标签:
+ {{ caseData.n_laay_tag || "—" }}
+
+
+
+
+ 当事人信息:
+
+
+ {{ party.n_ssdw || "其他" }}: {{ party.c_mc }};
+
+
+
+
+
+
+
+
+ 案号:
+ {{ caseData.caseNumber || "—" }}
+
+
+
+
+ 发布日期:
+ {{ formatDate(caseData.issueDate) }}
+
+
+
+
+ 性别:
+ {{ caseData.sex || "—" }}
+
+
+
+
+ 履行情况:
+ {{ caseData.fulfillStatus || "—" }}
+
+
+
+
+ 判决金额估计:
+ {{ formatLawsuitMoney(caseData.estimatedJudgementAmount) || "—" }}
+
+
+
+
+ 行为具体情形:
+ {{ caseData.concreteDetails || "—" }}
+
+
+
+
+ 生效法律文书确定的义务:
+ {{ caseData.obligation || "—" }}
+
+
+
+
+ 执行依据单位:
+ {{ caseData.enforcementBasisOrganization || "—" }}
+
+
+
+
+ 执行依据文号:
+ {{ caseData.enforcementBasisNumber || "—" }}
+
+
+
+
+
+
+
+ 案件编号:
+ {{ caseData.caseNumber || "—" }}
+
+
+
+
+ 发布日期:
+ {{ formatDate(caseData.issueDate) }}
+
+
+
+
+ 立案时间:
+ {{ formatDate(caseData.fileDate) }}
+
+
+
+
+
+
+
+ 定罪罪名:
+ {{ caseData.n_dzzm || "—" }}
+
+
+
+
+ 定罪罪名详细:
+ {{ caseData.n_dzzm_tree || "—" }}
+
+
+
+
+ 判处结果:
+ {{ caseData.n_pcjg || "—" }}
+
+
+
+
+ 犯罪金额:
+ {{ formatLawsuitMoney(caseData.n_fzje) || "—" }}
+
+
+
+
+ 被请求赔偿金额:
+ {{ formatLawsuitMoney(caseData.n_bqqpcje) || "—" }}
+
+
+
+
+ 财产刑执行金额:
+ {{ formatLawsuitMoney(caseData.n_ccxzxje) || "—" }}
+
+
+
+
+ 财产刑执行金额估计:
+ {{ formatLawsuitMoney(caseData.n_ccxzxje_gj) || "—" }}
+
+
+
+
+ 判处赔偿金额:
+ {{ formatLawsuitMoney(caseData.n_pcpcje) || "—" }}
+
+
+
+
+ 判处赔偿金额估计:
+ {{ formatLawsuitMoney(caseData.n_pcpcje_gj) || "—" }}
+
+
+
+
+ 被请求赔偿金额估计:
+ {{ formatLawsuitMoney(caseData.n_bqqpcje_gj) || "—" }}
+
+
+
+
+
+
+
+ 申请执行标的金额:
+ {{ formatLawsuitMoney(caseData.n_sqzxbdje) || "—" }}
+
+
+
+
+ 实际到位金额:
+ {{ formatLawsuitMoney(caseData.n_sjdwje) || "—" }}
+
+
+
+
+ 未执行金额:
+ {{ formatLawsuitMoney(caseData.n_wzxje) || "—" }}
+
+
+
+
+ 相关案件号:
+ {{ caseData.c_gkws_glah || "—" }}
+
+
+
+
+
+
+
+ 申请保全数额:
+ {{ formatLawsuitMoney(caseData.n_sqbqse) || "—" }}
+
+
+
+
+ 申请保全标的物:
+ {{ caseData.c_sqbqbdw || "—" }}
+
+
+
+
+
+
+ 诉讼地位:
+ {{ caseData.n_ssdw || "—" }}
+
+
+
+
+ 一审诉讼地位:
+ {{ caseData.n_ssdw_ys || "—" }}
+
+
+
+
+ 案件进展阶段:
+ {{ caseData.n_ajjzjd || "—" }}
+
+
+
+
+ 审理程序:
+ {{ caseData.n_slcx || "—" }}
+
+
+
+
+ 法院所属层级:
+ {{ caseData.n_jbfy_cj || "—" }}
+
+
+
+
+ 起诉标的金额:
+ {{ formatLawsuitMoney(caseData.n_qsbdje) || "—" }}
+
+
+
+
+ 起诉标的金额估计:
+ {{ formatLawsuitMoney(caseData.n_qsbdje_gj) || "—" }}
+
+
+
+
+ 结案标的金额:
+ {{ formatLawsuitMoney(caseData.n_jabdje) || "—" }}
+
+
+
+
+ 结案标的金额估计:
+ {{ formatLawsuitMoney(caseData.n_jabdje_gj) || "—" }}
+
+
+
+
+ 结案案由:
+ {{ caseData.n_jaay_tree || caseData.n_jaay || "—" }}
+
+
+
+
+ 结案案由标签:
+ {{ caseData.n_jaay_tag || "—" }}
+
+
+
+
+ 结案方式:
+ {{ caseData.n_jafs || "—" }}
+
+
+
+
+ 结案时间:
+ {{ formatDate(caseData.d_jarq) }}
+
+
+
+
+ 胜诉估计:
+ {{ caseData.n_pj_victory || "—" }}
+
+
+
+
+ 公开文书ID:
+ {{ caseData.c_gkws_id || "—" }}
+
+
+
+
+ 相关当事人:
+ {{ caseData.c_gkws_dsr || "—" }}
+
+
+
+
+ 判决结果:
+ {{ caseData.c_gkws_pjjg || "—" }}
+
+
+
+
+ 审理方式信息:
+ {{ caseData.c_slfsxx || "—" }}
+
+
+
+
+ 后续案件:
+
+ {{ caseData.next.c_ah }}
+
+ {{
+ caseData.next.stage_type === 2
+ ? "二审"
+ : caseData.next.stage_type === 3
+ ? "再审"
+ : caseData.next.stage_type === 4
+ ? "申请再审"
+ : caseData.next.stage_type === 5
+ ? "执行"
+ : "其他"
+ }}
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/FLXG7E8F/components/StatisticsOverview.vue b/src/ui/FLXG7E8F/components/StatisticsOverview.vue
new file mode 100644
index 0000000..1fad049
--- /dev/null
+++ b/src/ui/FLXG7E8F/components/StatisticsOverview.vue
@@ -0,0 +1,285 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ totalCases }}
+ 起涉诉案件中,
+
+ {{ stats.highRiskItems }}
+
+ 0
+ 起高风险案件
+
+ ,涉及 {{ stats.caseTypes.length }} 种案件类型
+
+
+
+
+
+
+
+
+
+
+
{{ stats.totalRiskItems || 0 }}项
+
风险事项
+
+ 平均{{ stats.totalRiskItems && totalCases > 0 ?
+ (stats.totalRiskItems / totalCases).toFixed(1) :
+ '0.0'
+ }}项/案件
+
+
+
+
+
+
{{ stats.highRiskItems || 0 }}家
+
高风险案件
+
+ 占比{{ totalCases > 0 && stats ?
+ ((stats.highRiskItems /
+ totalCases) * 100).toFixed(1) : '0.0' }}%
+
+
+ 失信{{ stats.breachCaseCount || 0 }}
+ 限高{{ stats.consumptionRestrictionCount || 0 }}
+
+
+
+
+
+
{{ stats.closedCases || 0 }}家
+
已结案件
+
+ 占比{{ totalCases > 0 && stats ?
+ Math.round((stats.closedCases / totalCases) * 100) :
+ 0
+ }}%
+
+
+
+
+
+
{{ stats.caseTypes.length || 0 }}家
+
案件类型
+
+ 涉及多种类型
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
高风险案件
+
{{ stats.highRiskItems || 0 }}条
+
+
+
+
中风险案件
+
{{ stats.mediumRiskItems || 0 }}条
+
+
+
+
低风险案件
+
{{ stats.lowRiskItems || 0 }}条
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/FLXG7E8F/index.vue b/src/ui/FLXG7E8F/index.vue
new file mode 100644
index 0000000..cef906a
--- /dev/null
+++ b/src/ui/FLXG7E8F/index.vue
@@ -0,0 +1,457 @@
+
+
+
+
+
+
+
+
+
个人涉诉风险分析
+
+
+
+
+
+
+
+
+
+
+
+
+ 全部风险
+ ({{ caseTypeCounts.all }})
+
+
+
+
+
+
+
+
+ {{ typeInfo.text }}({{ caseTypeCounts[type] || 0 }})
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ caseItem.c_ah || caseItem.caseNumber || '暂无案号' }}
+
+
+
+ {{ getCaseTypeText(caseItem.type) }}
+
+
+
+
+
+ 立案:
+ {{ formatDate(caseItem.d_larq || caseItem.fileDate) }}
+
+
+
+
+
+
+ {{ getCaseTypeRiskLevel(caseItem.type).text }}
+
+
+
+ {{ caseItem.n_ajjzjd }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/FLXG7E8F/utils/lawsuitUtils.js b/src/ui/FLXG7E8F/utils/lawsuitUtils.js
new file mode 100644
index 0000000..8ee1142
--- /dev/null
+++ b/src/ui/FLXG7E8F/utils/lawsuitUtils.js
@@ -0,0 +1,316 @@
+// 案件类型映射表
+export const lawsuitTypeMap = {
+ breachCase: {
+ text: "失信被执行",
+ color: "text-red-600 bg-red-50",
+ darkColor: "bg-red-500",
+ riskLevel: "high", // 高风险
+ },
+ consumptionRestriction: {
+ 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 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 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; // 如果不是标准格式则返回原始字符串
+};
+
+export const formatLawsuitMoney = (money) => {
+ if (!money) return "—";
+
+ const value = parseFloat(money);
+ if (isNaN(value)) return "—";
+
+ // 直接显示原始金额(元)
+ return (
+ value.toLocaleString("zh-CN", {
+ minimumFractionDigits: 0,
+ maximumFractionDigits: 2,
+ }) + " 元"
+ );
+};
+
+// 获取案件状态样式
+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";
+ }
+};
+
+// 获取企业状态对应的样式
+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";
+ }
+};
+
+// 格式化资本金额显示
+export const formatCapital = (capital, currency) => {
+ if (!capital) return "—";
+
+ // 检查是否包含"万"字或需要显示为万元
+ 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 = "万";
+ }
+
+ // 格式化数字,保留两位小数(如果有小数部分)
+ const formattedValue = value.toLocaleString("zh-CN", {
+ minimumFractionDigits: 0,
+ maximumFractionDigits: 2,
+ });
+
+ return `${formattedValue}${unit} ${currency || "人民币"}`;
+};
+
+// 获取涉诉风险等级
+export const getRiskLevel = (lawsuitInfo) => {
+ if (!lawsuitInfo) {
+ return {
+ level: "low",
+ text: "低风险",
+ color: "text-green-600 bg-green-50",
+ };
+ }
+
+ // 失信被执行人是最高风险
+ if (lawsuitInfo.breachCaseList && lawsuitInfo.breachCaseList.length > 0) {
+ return {
+ level: "high",
+ text: "高风险",
+ color: "text-red-600 bg-red-50",
+ };
+ }
+
+ // 限高被执行人是最高风险
+ if (
+ lawsuitInfo.consumptionRestrictionList &&
+ lawsuitInfo.consumptionRestrictionList.length > 0
+ ) {
+ return {
+ level: "high",
+ text: "高风险",
+ color: "text-red-600 bg-red-50",
+ };
+ }
+
+ // 有涉诉数据的风险级别
+ if (
+ lawsuitInfo.lawsuitStat &&
+ Object.keys(lawsuitInfo.lawsuitStat).length > 0
+ ) {
+ // 检查是否有未结案的案件
+ const data = lawsuitInfo.lawsuitStat;
+ if (
+ data.count &&
+ data.count.count_wei_total &&
+ data.count.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",
+ };
+};
+
+// 获取涉诉案件统计
+export const getLawsuitStats = (lawsuitInfo) => {
+ if (!lawsuitInfo) return null;
+
+ const stats = {
+ total: 0,
+ types: [],
+ };
+
+ // 统计各类型案件数量
+ Object.keys(lawsuitTypeMap).forEach((type) => {
+ let count = 0;
+
+ if (type === "breachCase") {
+ count =
+ lawsuitInfo.breachCaseList &&
+ lawsuitInfo.breachCaseList.length > 0
+ ? lawsuitInfo.breachCaseList.length
+ : 0;
+ } else if (type === "consumptionRestriction") {
+ count =
+ lawsuitInfo.consumptionRestrictionList &&
+ lawsuitInfo.consumptionRestrictionList.length > 0
+ ? lawsuitInfo.consumptionRestrictionList.length
+ : 0;
+ } else if (
+ lawsuitInfo.lawsuitStat &&
+ lawsuitInfo.lawsuitStat[type] &&
+ Object.keys(lawsuitInfo.lawsuitStat[type]).length > 0
+ ) {
+ const typeData = lawsuitInfo.lawsuitStat[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),
+ });
+ }
+ });
+
+ return stats;
+};
+
+// 获取案件类型优先级顺序
+export const getCaseTypePriority = () => {
+ return [
+ "breachCase", // 失信被执行人(最高风险)
+ "consumptionRestriction", // 限高被执行人
+ "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",
+ };
+ }
+
+ 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],
+ };
+};
diff --git a/src/ui/IVYZ3P9M.vue b/src/ui/IVYZ3P9M.vue
new file mode 100644
index 0000000..ad2dc8f
--- /dev/null
+++ b/src/ui/IVYZ3P9M.vue
@@ -0,0 +1,696 @@
+
+
+
+
+
+
+
+
+
+
+
+
学历信息查询
+
+
+
+
+ 共 {{ orderedRecords.length }} 条记录
+
+
+ 最高学历:{{ summaryRecord.educationLevel }}
+ ·
+ 最新毕业时间:{{ latestGraduationText }}
+
+
+
+
+
+
+
+
+
+
+
+
{{ summaryRecord.studentName }}
+
身份证:{{ summaryRecord.maskedIdNumber }}
+
+
{{ summaryRecord.educationLevel }}
+
+
+ {{ summaryRecord.schoolName }}
+
+
+
+
+
+
+
该学校名称信息未找到,可能是学校已改名
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ record.educationLevel }}学历
+
+
+ 学习形式:{{ record.learningForm }}
+
+
+
+
+
+
+
+
+
+
+
专业名称
+
+
+ {{ record.specialtyName }}
+
+
+
+
+
+
+
该专业名称信息未找到,可能是该学校专业已受到变动
+
+
+
+
+
+
+
+
+
+
学习形式
+
+ {{ record.learningForm }}
+
+
+
+
+
+
+
+
+
+
入学时间
+
{{ record.enrollmentDate }}
+
+
+
+
+
+
+
+
+
毕业时间
+
{{ record.graduationDate }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
暂无学历记录
+
+ 未查询到相关的学历信息,可能是数据正在更新或尚未录入。建议稍后重试或联系数据提供方确认。
+
+
+
+
+
+
+
diff --git a/src/ui/JRZQ09J8/README.md b/src/ui/JRZQ09J8/README.md
new file mode 100644
index 0000000..ee245aa
--- /dev/null
+++ b/src/ui/JRZQ09J8/README.md
@@ -0,0 +1,165 @@
+# 收入评估组件 (JRZQ09J8)
+
+## 组件概述
+
+基于全国社会保险信息系统的缴费基数数据进行收入水平评估,为企业提供专业的收入分析和风险评估服务。
+
+## 组件结构
+
+```
+JRZQ09J8/
+├── index.vue # 主组件
+├── components/ # 子组件目录
+│ ├── IncomeOverview.vue # 华丽的收入评估概览
+│ ├── IncomeAnalysis.vue # 详细收入分析
+│ └── IncomeLevelGuide.vue # 社保评级对照表
+├── utils/ # 工具函数目录
+│ └── incomeUtils.js # 收入评估工具函数
+└── README.md # 说明文档
+```
+
+## 使用方法
+
+### 基本用法
+
+```vue
+
+
+
+
+
+
+
+```
+
+## 数据字段说明
+
+| 字段名 | 类型 | 必填 | 描述 | 示例值 |
+|-------|------|------|------|--------|
+| level | String | 是 | 社保评级等级 | "G" |
+
+## 评级对照表
+
+| level 值 | 社保评级 | 对应月收入范围 | 风险等级 |
+|----------|----------|----------------|----------|
+| - | **无记录** | 查询无社保记录 | 高风险 |
+| A | **A级** | (2000, 4000)元 | 中高风险 |
+| B | **B级** | (4000, 6000)元 | 中等风险 |
+| C | **C级** | (6000, 8000)元 | 中低风险 |
+| D | **D级** | (8000, 10000)元 | 低风险 |
+| E | **E级** | (10000, 14000)元 | 很低风险 |
+| F | **F级** | (14000, 18000)元 | 极低风险 |
+| G | **G级** | (18000, 22000)元 | 极低风险 |
+| H | **H级** | (22000, 26000)元 | 无风险 |
+| I | **I级** | (26000, 30000)元 | 无风险 |
+| J | **J级** | (30000+)元 | 零风险 |
+
+## 组件特性
+
+### 1. 华丽的视觉展示
+- **渐变背景**:使用高级渐变色彩方案
+- **3D效果**:卡片阴影和浮动动画
+- **动态装饰**:浮动圆圈装饰元素
+- **响应式设计**:完美适配各种屏幕尺寸
+
+### 2. 专业的数据分析
+- **收入等级可视化**:柱状图展示收入分布
+- **市场对比分析**:与市场平均水平对比
+- **信用风险评估**:基于收入的风险评级
+- **消费能力分析**:预测消费潜力
+
+### 3. 详细的评级指南
+- **完整对照表**:所有等级的详细说明
+- **特性标签**:每个等级的关键特征
+- **数据可靠性**:展示数据准确率和覆盖范围
+
+### 4. 智能风险评估
+- **动态评分**:根据收入等级自动计算风险分数
+- **个性化建议**:针对不同等级的专业建议
+- **市场定位**:精确的市场百分位排名
+
+## 工具函数
+
+### incomeUtils.js
+
+提供了以下核心功能:
+
+- `getIncomeLevelInfo(level)` - 获取收入等级详细信息
+- `getIncomeRange(level)` - 获取收入范围
+- `getRiskLevel(level)` - 获取风险等级
+- `getMarketComparison(level)` - 获取市场对比分析
+- `getCreditRiskAssessment(level)` - 获取信用风险评估
+- `getConsumptionCapacity(level)` - 获取消费能力分析
+- `generateIncomeAssessmentReport(level)` - 生成完整评估报告
+
+## 视觉设计亮点
+
+### 1. 色彩系统
+- 使用专业的收入等级色彩映射
+- 渐变背景营造高端感
+- 风险等级颜色区分清晰
+
+### 2. 交互体验
+- 悬停效果增强用户体验
+- 平滑的动画过渡
+- 直观的视觉反馈
+
+### 3. 信息架构
+- 层次分明的信息展示
+- 重点突出的核心数据
+- 完整的补充说明
+
+## 数据说明
+
+### 评估依据
+- 基于全国社会保险信息系统
+- 使用社保缴费基数推算收入水平
+- 数据准确率达95%以上
+
+### 使用限制
+- 收入范围为税前月收入
+- 存在地区差异,仅供参考
+- 建议结合其他收入证明材料
+
+### 更新频率
+- 数据实时更新
+- 全国范围覆盖
+- 持续优化算法模型
+
+## 业务价值
+
+### 1. 风险控制
+- 精确的收入评估降低信贷风险
+- 多维度风险分析提升决策质量
+- 智能化评分系统提高效率
+
+### 2. 客户分层
+- 基于收入的客户分级管理
+- 个性化服务策略制定
+- 精准的市场定位分析
+
+### 3. 合规要求
+- 符合金融监管要求
+- 数据来源权威可靠
+- 评估过程透明公开
+
+## 注意事项
+
+1. 确保传入正确的level值
+2. 组件会自动处理异常数据
+3. 建议在网络良好的环境下使用
+4. 定期更新评估标准以保持准确性
+
+## 更新日志
+
+- v1.0.0 - 初始版本,支持基础收入评估功能
+- 华丽的视觉展示效果
+- 完整的评级对照系统
+- 专业的风险分析功能
diff --git a/src/ui/JRZQ09J8/components/IncomeAnalysis.vue b/src/ui/JRZQ09J8/components/IncomeAnalysis.vue
new file mode 100644
index 0000000..19660bc
--- /dev/null
+++ b/src/ui/JRZQ09J8/components/IncomeAnalysis.vue
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+
+
+
+
+
{{ getMarketComparison() }}
+
+
+
+ 低收入
+ 中等收入
+ 高收入
+
+
+
+
+
+
+
+
+
+
{{ getRiskAssessment() }}
+
+
+ {{ getRiskLevel() }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/JRZQ09J8/components/IncomeLevelGuide.vue b/src/ui/JRZQ09J8/components/IncomeLevelGuide.vue
new file mode 100644
index 0000000..b4bdaad
--- /dev/null
+++ b/src/ui/JRZQ09J8/components/IncomeLevelGuide.vue
@@ -0,0 +1,445 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ levelInfo.range }}
+
{{ levelInfo.description }}
+
+
+
+
+
+
+
+
+
+
+
+
+ 本评估基于全国社会保险信息系统的缴费基数数据
+ 收入范围为税前月收入,实际到手收入会有所差异
+ 评级反映的是相对收入水平,不代表绝对收入能力
+ 社保缴费存在地区差异,评估结果仅供参考
+ 建议结合其他收入证明材料进行综合评估
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/JRZQ09J8/components/IncomeOverview.vue b/src/ui/JRZQ09J8/components/IncomeOverview.vue
new file mode 100644
index 0000000..db6e3a7
--- /dev/null
+++ b/src/ui/JRZQ09J8/components/IncomeOverview.vue
@@ -0,0 +1,223 @@
+
+
+
+
+
+
+
+
+
+
+ {{ getIncomeRange(level) }}
+
+
+
+ {{ getIncomeDescription(level) }}
+
+
+
+
+
+
+
+
+
{{ getAssessmentDescription(level) }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/JRZQ09J8/index.vue b/src/ui/JRZQ09J8/index.vue
new file mode 100644
index 0000000..40779c4
--- /dev/null
+++ b/src/ui/JRZQ09J8/index.vue
@@ -0,0 +1,524 @@
+
+
+
+
+
+
+
+
+
+
收入评估
+
+
+
+
+
+
预估月收入
+
+ {{ getIncomeAmount(data.level) }}
+ 元
+
+
+
{{ getIncomeDescription(data.level) }}
+
+
+
+
+
+
+
+
+
+
+
评估结果
+
+
+ {{ getAssessmentDescription(data.level) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
市场对比
+
+
+ {{ getMarketComparison(data.level) }}
+
+
+
+
+
+
+
+
+
+
+
+
+ 低收入
+ 高收入
+
+
+
+
+
+
+
+ {{ getRiskLevel(data.level) }}
+
+
+
+
+
+
+
+
信用风险
+
+
+ {{ getRiskAssessment(data.level) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/JRZQ09J8/utils/incomeUtils.js b/src/ui/JRZQ09J8/utils/incomeUtils.js
new file mode 100644
index 0000000..7f97535
--- /dev/null
+++ b/src/ui/JRZQ09J8/utils/incomeUtils.js
@@ -0,0 +1,414 @@
+/**
+ * 收入评估工具函数
+ */
+
+/**
+ * 收入等级映射表
+ */
+export const INCOME_LEVEL_MAP = {
+ '-': {
+ name: '无记录',
+ range: '查询无社保记录',
+ minAmount: 0,
+ maxAmount: 0,
+ color: '#94a3b8',
+ riskLevel: 'high',
+ description: '未发现社保缴费记录,无法进行收入评估'
+ },
+ 'A': {
+ name: 'A级收入',
+ range: '2,000 - 4,000 元',
+ minAmount: 2000,
+ maxAmount: 4000,
+ color: '#ef4444',
+ riskLevel: 'medium-high',
+ description: '基础收入水平,消费能力有限'
+ },
+ 'B': {
+ name: 'B级收入',
+ range: '4,000 - 6,000 元',
+ minAmount: 4000,
+ maxAmount: 6000,
+ color: '#f97316',
+ riskLevel: 'medium',
+ description: '普通收入水平,具备基础消费能力'
+ },
+ 'C': {
+ name: 'C级收入',
+ range: '6,000 - 8,000 元',
+ minAmount: 6000,
+ maxAmount: 8000,
+ color: '#eab308',
+ riskLevel: 'medium-low',
+ description: '中等收入水平,消费能力良好'
+ },
+ 'D': {
+ name: 'D级收入',
+ range: '8,000 - 10,000 元',
+ minAmount: 8000,
+ maxAmount: 10000,
+ color: '#84cc16',
+ riskLevel: 'low',
+ description: '中等偏上收入,消费能力较强'
+ },
+ 'E': {
+ name: 'E级收入',
+ range: '10,000 - 14,000 元',
+ minAmount: 10000,
+ maxAmount: 14000,
+ color: '#22c55e',
+ riskLevel: 'very-low',
+ description: '良好收入水平,消费能力强劲'
+ },
+ 'F': {
+ name: 'F级收入',
+ range: '14,000 - 18,000 元',
+ minAmount: 14000,
+ maxAmount: 18000,
+ color: '#10b981',
+ riskLevel: 'very-low',
+ description: '较高收入水平,消费能力很强'
+ },
+ 'G': {
+ name: 'G级收入',
+ range: '18,000 - 22,000 元',
+ minAmount: 18000,
+ maxAmount: 22000,
+ color: '#06b6d4',
+ riskLevel: 'minimal',
+ description: '高收入水平,消费能力强大'
+ },
+ 'H': {
+ name: 'H级收入',
+ range: '22,000 - 26,000 元',
+ minAmount: 22000,
+ maxAmount: 26000,
+ color: '#3b82f6',
+ riskLevel: 'minimal',
+ description: '很高收入水平,消费能力顶级'
+ },
+ 'I': {
+ name: 'I级收入',
+ range: '26,000 - 30,000 元',
+ minAmount: 26000,
+ maxAmount: 30000,
+ color: '#8b5cf6',
+ riskLevel: 'none',
+ description: '优秀收入水平,消费能力超强'
+ },
+ 'J': {
+ name: 'J级收入',
+ range: '30,000+ 元',
+ minAmount: 30000,
+ maxAmount: Infinity,
+ color: '#d946ef',
+ riskLevel: 'none',
+ description: '卓越收入水平,消费潜力无限'
+ }
+}
+
+/**
+ * 获取收入等级信息
+ * @param {string} level - 收入等级
+ * @returns {object} 等级信息
+ */
+export const getIncomeLevelInfo = (level) => {
+ return INCOME_LEVEL_MAP[level] || {
+ name: '未知等级',
+ range: '数据异常',
+ minAmount: 0,
+ maxAmount: 0,
+ color: '#94a3b8',
+ riskLevel: 'unknown',
+ description: '数据异常,无法进行准确评估'
+ }
+}
+
+/**
+ * 获取收入等级显示名称
+ * @param {string} level - 收入等级
+ * @returns {string} 显示名称
+ */
+export const getIncomeLevelName = (level) => {
+ const levelInfo = getIncomeLevelInfo(level)
+ return levelInfo.name
+}
+
+/**
+ * 获取收入范围
+ * @param {string} level - 收入等级
+ * @returns {string} 收入范围
+ */
+export const getIncomeRange = (level) => {
+ const levelInfo = getIncomeLevelInfo(level)
+ return levelInfo.range
+}
+
+/**
+ * 获取收入等级颜色
+ * @param {string} level - 收入等级
+ * @returns {string} 颜色值
+ */
+export const getIncomeLevelColor = (level) => {
+ const levelInfo = getIncomeLevelInfo(level)
+ return levelInfo.color
+}
+
+/**
+ * 获取风险等级
+ * @param {string} level - 收入等级
+ * @returns {string} 风险等级
+ */
+export const getRiskLevel = (level) => {
+ const levelInfo = getIncomeLevelInfo(level)
+ return levelInfo.riskLevel
+}
+
+/**
+ * 格式化金额
+ * @param {number} amount - 金额
+ * @returns {string} 格式化后的金额
+ */
+export const formatAmount = (amount) => {
+ if (!amount || amount === 0) return '0'
+
+ return amount.toLocaleString('zh-CN', {
+ style: 'currency',
+ currency: 'CNY',
+ minimumFractionDigits: 0,
+ maximumFractionDigits: 0
+ })
+}
+
+/**
+ * 获取收入等级排名百分比
+ * @param {string} level - 收入等级
+ * @returns {number} 排名百分比 (0-100)
+ */
+export const getIncomePercentile = (level) => {
+ const percentileMap = {
+ '-': 0,
+ 'A': 10,
+ 'B': 25,
+ 'C': 40,
+ 'D': 55,
+ 'E': 70,
+ 'F': 80,
+ 'G': 85,
+ 'H': 90,
+ 'I': 95,
+ 'J': 99
+ }
+
+ return percentileMap[level] || 0
+}
+
+/**
+ * 获取市场对比描述
+ * @param {string} level - 收入等级
+ * @returns {string} 市场对比描述
+ */
+export const getMarketComparison = (level) => {
+ const percentile = getIncomePercentile(level)
+
+ if (percentile === 0) {
+ return '无社保记录,无法与市场平均水平进行对比'
+ } else if (percentile <= 20) {
+ return `低于市场平均收入水平,处于收入分布的底部${percentile}%区间`
+ } else if (percentile <= 40) {
+ return `略低于市场平均收入水平,处于收入分布的底部${percentile}%区间`
+ } else if (percentile <= 60) {
+ return `接近市场平均收入水平,处于收入分布的中等${percentile}%区间`
+ } else if (percentile <= 80) {
+ return `高于市场平均收入水平,处于收入分布的上层${percentile}%区间`
+ } else if (percentile <= 90) {
+ return `显著高于市场平均收入水平,处于收入分布的顶部${100-percentile}%区间`
+ } else {
+ return `远超市场绝大多数收入水平,处于收入分布的顶部${100-percentile}%区间`
+ }
+}
+
+/**
+ * 获取信用风险评估
+ * @param {string} level - 收入等级
+ * @returns {object} 风险评估信息
+ */
+export const getCreditRiskAssessment = (level) => {
+ const riskAssessments = {
+ '-': {
+ level: '高风险',
+ description: '缺乏社保记录,收入稳定性存在不确定性,信用风险较高',
+ score: 20,
+ recommendations: ['核实收入来源', '要求担保措施', '谨慎放贷']
+ },
+ 'A': {
+ level: '中高风险',
+ description: '收入水平较低,还款能力有限,需要谨慎评估信用风险',
+ score: 35,
+ recommendations: ['评估还款能力', '适当降低额度', '关注还款记录']
+ },
+ 'B': {
+ level: '中等风险',
+ description: '收入水平一般,具备基础还款能力,信用风险中等',
+ score: 50,
+ recommendations: ['正常业务流程', '定期跟踪', '建立信用档案']
+ },
+ 'C': {
+ level: '中低风险',
+ description: '收入稳定,还款能力良好,信用风险较低',
+ score: 65,
+ recommendations: ['可正常合作', '适度提升额度', '优化服务']
+ },
+ 'D': {
+ level: '低风险',
+ description: '收入较高,还款能力强,信用风险低',
+ score: 75,
+ recommendations: ['优质客户', '提升服务等级', '拓展业务']
+ },
+ 'E': {
+ level: '很低风险',
+ description: '收入良好,还款能力很强,信用风险很低',
+ score: 85,
+ recommendations: ['重点客户', '专享服务', '深度合作']
+ },
+ 'F': {
+ level: '极低风险',
+ description: '高收入群体,还款能力优秀,信用风险极低',
+ score: 90,
+ recommendations: ['VIP客户', '定制服务', '战略合作']
+ },
+ 'G': {
+ level: '极低风险',
+ description: '高收入群体,还款能力卓越,信用风险极低',
+ score: 92,
+ recommendations: ['顶级客户', '私人定制', '长期合作']
+ },
+ 'H': {
+ level: '无风险',
+ description: '高端收入群体,还款能力顶级,几乎无信用风险',
+ score: 95,
+ recommendations: ['钻石客户', '专属服务', '全面合作']
+ },
+ 'I': {
+ level: '无风险',
+ description: '精英收入群体,还款能力完美,无信用风险',
+ score: 97,
+ recommendations: ['白金客户', '尊享服务', '全方位合作']
+ },
+ 'J': {
+ level: '零风险',
+ description: '顶级收入群体,还款能力无限,零信用风险',
+ score: 99,
+ recommendations: ['至尊客户', '顶级服务', '战略伙伴']
+ }
+ }
+
+ return riskAssessments[level] || {
+ level: '未知风险',
+ description: '数据异常,无法进行风险评估',
+ score: 0,
+ recommendations: ['数据核实', '人工审核', '谨慎处理']
+ }
+}
+
+/**
+ * 获取消费能力分析
+ * @param {string} level - 收入等级
+ * @returns {object} 消费能力分析
+ */
+export const getConsumptionCapacity = (level) => {
+ const capacityAnalysis = {
+ '-': {
+ level: '无法评估',
+ description: '缺乏收入数据,无法评估消费能力',
+ categories: []
+ },
+ 'A': {
+ level: '基础消费',
+ description: '主要满足基本生活需求,消费能力有限',
+ categories: ['基本生活用品', '必需品消费', '低价商品']
+ },
+ 'B': {
+ level: '一般消费',
+ description: '能够满足日常消费需求,偶有小额娱乐支出',
+ categories: ['日常用品', '基础娱乐', '小额投资']
+ },
+ 'C': {
+ level: '中等消费',
+ description: '具备良好的消费能力,可进行中档消费',
+ categories: ['品质商品', '休闲娱乐', '教育投资', '小额理财']
+ },
+ 'D': {
+ level: '较强消费',
+ description: '消费能力较强,可进行中高档消费',
+ categories: ['中高档商品', '旅游度假', '技能培训', '理财投资']
+ },
+ 'E': {
+ level: '强劲消费',
+ description: '消费能力强劲,可进行高档消费和投资',
+ categories: ['高档商品', '奢侈品', '高端服务', '投资理财']
+ },
+ 'F': {
+ level: '很强消费',
+ description: '消费能力很强,可进行奢侈消费和多元投资',
+ categories: ['奢侈品', '高端服务', '房产投资', '金融产品']
+ },
+ 'G': {
+ level: '强大消费',
+ description: '消费能力强大,属于高端消费群体',
+ categories: ['顶级奢侈品', '私人定制', '房产投资', '股权投资']
+ },
+ 'H': {
+ level: '顶级消费',
+ description: '消费能力顶级,属于超高端消费群体',
+ categories: ['超级奢侈品', '私人飞机', '豪华房产', '私募基金']
+ },
+ 'I': {
+ level: '超强消费',
+ description: '消费能力超强,属于精英消费群体',
+ categories: ['收藏品', '艺术品', '豪华游艇', '对冲基金']
+ },
+ 'J': {
+ level: '无限消费',
+ description: '消费潜力无限,属于顶级财富群体',
+ categories: ['任何商品', '私人岛屿', '慈善事业', '风险投资']
+ }
+ }
+
+ return capacityAnalysis[level] || {
+ level: '未知',
+ description: '数据异常,无法分析消费能力',
+ categories: []
+ }
+}
+
+/**
+ * 生成收入评估报告
+ * @param {string} level - 收入等级
+ * @returns {object} 完整的评估报告
+ */
+export const generateIncomeAssessmentReport = (level) => {
+ const levelInfo = getIncomeLevelInfo(level)
+ const riskAssessment = getCreditRiskAssessment(level)
+ const consumptionCapacity = getConsumptionCapacity(level)
+ const marketComparison = getMarketComparison(level)
+ const percentile = getIncomePercentile(level)
+
+ return {
+ level,
+ levelInfo,
+ riskAssessment,
+ consumptionCapacity,
+ marketComparison,
+ percentile,
+ timestamp: new Date().toISOString(),
+ summary: {
+ grade: levelInfo.name,
+ range: levelInfo.range,
+ riskLevel: riskAssessment.level,
+ riskScore: riskAssessment.score,
+ marketPosition: `超过${percentile}%的收入水平`,
+ recommendations: riskAssessment.recommendations
+ }
+ }
+}
diff --git a/src/ui/JRZQ4B6C/README.md b/src/ui/JRZQ4B6C/README.md
new file mode 100644
index 0000000..383e825
--- /dev/null
+++ b/src/ui/JRZQ4B6C/README.md
@@ -0,0 +1,129 @@
+# 信贷表现组件 (JRZQ4B6C)
+
+## 组件概述
+
+信贷表现主要为企业在背景调查过程中探查用户近期信贷表现时提供参考,帮助企业对其内部员工、外部业务进行个人信用过滤。
+
+## 组件结构
+
+```
+JRZQ4B6C/
+├── index.vue # 主组件
+├── components/ # 子组件目录
+│ ├── ProbeOverview.vue # 信贷表现概览组件
+│ ├── OverdueInfoSection.vue # 逾期信息组件
+│ ├── PerformanceInfoSection.vue # 履约信息组件
+│ └── InstitutionStatusSection.vue # 机构状态组件
+├── utils/ # 工具函数目录
+│ └── probeUtils.js # 信贷表现工具函数
+└── README.md # 说明文档
+```
+
+## 使用方法
+
+### 基本用法
+
+```vue
+
+
+
+
+
+
+
+```
+
+## 数据字段说明
+
+| 字段名 | 类型 | 必填 | 描述 | 示例值 |
+|-------|------|------|------|--------|
+| result_code | String | 否 | 探查结果编码 | "1" |
+| max_overdue_amt | String | 否 | 最大逾期金额 | "1000-2000" |
+| max_overdue_days | String | 否 | 最长逾期天数 | "1-15" |
+| latest_overdue_time | String | 否 | 最近逾期时间 | "2018-10" |
+| max_performance_amt | String | 否 | 最大履约金额 | "1000-2000" |
+| latest_performance_time | String | 否 | 最近履约时间 | "2018-10" |
+| count_performance | String | 否 | 履约笔数 | "1" |
+| currently_overdue | String | 否 | 当前逾期机构数 | "1" |
+| currently_performance | String | 否 | 当前履约机构数 | "29" |
+| acc_exc | String | 否 | 异常还款机构数 | "0" |
+| acc_sleep | String | 否 | 睡眠机构数 | "39" |
+
+## 结果编码说明
+
+| 编码 | 显示内容 | 探查明细说明 | 风险等级 |
+|------|----------|-------------|----------|
+| 1 | 用户最近一笔订单未结清 | 用户最近一笔订单未结清 | 高风险 |
+| 2 | 用户订单结清情况良好 | 多笔订单用户最近一笔订单已结清且历史所有订单均已结清,或单笔订单用户该订单发生时间在3个月之内且该订单结清 | 低风险 |
+| 3 | 用户最近订单已结清,历史存在未结清订单 | 用户最近一笔订单已结清,但历史存在未结清订单 | 中等风险 |
+| 4 | 用户数据不充分 | 数据不充分 | 未知风险 |
+
+### 详细说明
+
+**编码1**:通过模型计算展现该用户行为画像,用户最近一笔订单未结清
+**编码2**:通过模型计算展现该用户行为画像,用户订单结清情况良好
+**编码3**:通过模型计算展现该用户行为画像,用户最近订单已结清但历史存在未结清订单
+**编码4**:用户数据不充分无法展现该用户行为画像
+
+## 金额区间说明
+
+组件支持以下金额区间格式:
+- 区间格式:`"1000-2000"`、`"(1000~2000]"`
+- 大于格式:`">1000000"`
+- 零值:`"0"` 表示无记录
+
+## 组件特性
+
+1. **响应式设计**:适配移动端和桌面端
+2. **数据格式化**:自动格式化金额、时间等数据
+3. **风险评估**:基于数据自动生成风险等级和建议
+4. **视觉反馈**:使用颜色区分不同风险等级
+5. **空数据处理**:优雅处理缺失或无效数据
+
+## 工具函数
+
+### probeUtils.js
+
+提供了以下工具函数:
+
+- `getResultCodeInfo(code)` - 获取结果编码信息
+- `formatAmountRange(amount)` - 格式化金额区间
+- `formatDaysRange(days)` - 格式化天数区间
+- `formatTime(time)` - 格式化时间
+- `generateRiskSummary(data)` - 生成风险评估总结
+
+## 样式定制
+
+组件使用 Tailwind CSS 构建,可以通过以下方式定制样式:
+
+1. 修改组件内的 CSS 类名
+2. 使用 CSS 变量覆盖默认样式
+3. 通过 props 传入自定义样式类名
+
+## 注意事项
+
+1. 确保传入的数据格式正确
+2. 所有字段都是可选的,组件会优雅处理缺失数据
+3. 时间格式建议使用 YYYY-MM 格式
+4. 金额和天数支持多种区间格式
+
+## 更新日志
+
+- v1.0.0 - 初始版本,支持信贷表现基本功能展示
diff --git a/src/ui/JRZQ4B6C/components/InstitutionStatusSection.vue b/src/ui/JRZQ4B6C/components/InstitutionStatusSection.vue
new file mode 100644
index 0000000..e9d1a06
--- /dev/null
+++ b/src/ui/JRZQ4B6C/components/InstitutionStatusSection.vue
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
机构状态信息
+
+
+
+
+
+
+
+
+ {{ accExc || '0' }} 个
+
+
异常还款机构数
+
存在异常还款记录的机构数量
+
+
+
+
+
+ {{ accSleep || '0' }} 个
+
+
睡眠机构数
+
长期无交易活动的机构数量
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/JRZQ4B6C/components/OverdueInfoSection.vue b/src/ui/JRZQ4B6C/components/OverdueInfoSection.vue
new file mode 100644
index 0000000..9300b70
--- /dev/null
+++ b/src/ui/JRZQ4B6C/components/OverdueInfoSection.vue
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
逾期信息详情
+
+
+
+
+
+
+
+
+ {{ formatAmountRange(maxOverdueAmt) }}
+
+
最大逾期金额
+
历史最大逾期金额区间
+
+
+
+
+
+ {{ formatDaysRange(maxOverdueDays) }}
+
+
最长逾期天数
+
历史最长逾期天数区间
+
+
+
+
+
+ {{ formatTime(latestOverdueTime) }}
+
+
最近逾期时间
+
最近一次逾期发生时间
+
+
+
+
+
+ {{ currentlyOverdue || '0' }} 个
+
+
当前逾期机构数
+
目前存在逾期的机构数量
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/JRZQ4B6C/components/PerformanceInfoSection.vue b/src/ui/JRZQ4B6C/components/PerformanceInfoSection.vue
new file mode 100644
index 0000000..7f70578
--- /dev/null
+++ b/src/ui/JRZQ4B6C/components/PerformanceInfoSection.vue
@@ -0,0 +1,158 @@
+
+
+
+
+
+
diff --git a/src/ui/JRZQ4B6C/components/ProbeOverview.vue b/src/ui/JRZQ4B6C/components/ProbeOverview.vue
new file mode 100644
index 0000000..8f5602f
--- /dev/null
+++ b/src/ui/JRZQ4B6C/components/ProbeOverview.vue
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
概览
+
+
+
+
+
+
+ {{ getResultCodeText(resultCode) }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ getResultDescription(resultCode) }}
+
+
+
+
+
+ 探查明细
+
+
+ {{ getDetailDescription(resultCode) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/JRZQ4B6C/components/Remark.vue b/src/ui/JRZQ4B6C/components/Remark.vue
new file mode 100644
index 0000000..7751664
--- /dev/null
+++ b/src/ui/JRZQ4B6C/components/Remark.vue
@@ -0,0 +1,83 @@
+
+
+
+
+
温馨提示!
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ui/JRZQ4B6C/index.vue b/src/ui/JRZQ4B6C/index.vue
new file mode 100644
index 0000000..6e6aaa6
--- /dev/null
+++ b/src/ui/JRZQ4B6C/index.vue
@@ -0,0 +1,136 @@
+
+
+
+
+
+
+
diff --git a/src/ui/JRZQ4B6C/utils/probeUtils.js b/src/ui/JRZQ4B6C/utils/probeUtils.js
new file mode 100644
index 0000000..56d02af
--- /dev/null
+++ b/src/ui/JRZQ4B6C/utils/probeUtils.js
@@ -0,0 +1,288 @@
+/**
+ * 信贷表现工具函数
+ */
+
+/**
+ * 结果编码映射
+ */
+export const RESULT_CODE_MAP = {
+ '1': {
+ text: '用户最近一笔订单未结清',
+ description: '通过模型计算展现该用户行为画像,用户最近一笔订单未结清,建议谨慎评估其信用状况和还款能力。',
+ detail: '用户最近一笔订单未结清',
+ color: 'text-red-500',
+ level: 'high'
+ },
+ '2': {
+ text: '用户订单结清情况良好',
+ description: '通过模型计算展现该用户行为画像,多笔订单用户最近一笔订单已结清且历史所有订单均已结清,或单笔订单用户该订单发生时间在3个月之内且该订单结清,信贷表现良好。',
+ detail: '多笔订单用户最近一笔订单已结清且历史所有订单均已结清,或单笔订单用户该订单发生时间在3个月之内且该订单结清',
+ color: 'text-green-500',
+ level: 'low'
+ },
+ '3': {
+ text: '用户最近订单已结清,历史存在未结清订单',
+ description: '通过模型计算展现该用户行为画像,用户最近一笔订单已结清,但历史存在未结清订单,建议关注其历史还款记录。',
+ detail: '用户最近一笔订单已结清,但历史存在未结清订单',
+ color: 'text-yellow-500',
+ level: 'medium'
+ },
+ '4': {
+ text: '用户数据不充分',
+ description: '用户数据不充分无法展现该用户行为画像。建议通过其他征信渠道补充信息进行综合评估。',
+ detail: '数据不充分',
+ color: 'text-gray-500',
+ level: 'unknown'
+ }
+}
+
+/**
+ * 金额区间映射(根据文档提供的区间)
+ */
+export const AMOUNT_RANGES = [
+ '(1~1000]',
+ '(1000~2000]',
+ '(2000~3000]',
+ '(3000~4000]',
+ '(4000~6000]',
+ '(6000~8000]',
+ '(8000~10000]',
+ '(10000~20000]',
+ '(20000~40000]',
+ '(40000~60000]',
+ '(60000~80000]',
+ '(80000~100000]',
+ '(100000~150000]',
+ '(150000~200000]',
+ '(200000~250000]',
+ '(250000~300000]',
+ '(300000~350000]',
+ '(350000~400000]',
+ '(400000~450000]',
+ '(450000~500000]',
+ '(500000~550000]',
+ '(550000~600000]',
+ '(600000~650000]',
+ '(650000~700000]',
+ '(700000~750000]',
+ '(750000~800000]',
+ '(800000~850000]',
+ '(850000~900000]',
+ '(900000~950000]',
+ '(950000~1000000]',
+ '>1000000'
+]
+
+/**
+ * 获取结果编码信息
+ * @param {string} code - 结果编码
+ * @returns {object} 结果编码信息
+ */
+export const getResultCodeInfo = (code) => {
+ return RESULT_CODE_MAP[code] || {
+ text: '未知状态',
+ description: '信贷表现主要为企业在背景调查过程中探查用户近期信贷表现时提供参考,帮助企业对其内部员工、外部业务进行个人信用过滤。',
+ color: 'text-gray-500',
+ level: 'unknown'
+ }
+}
+
+/**
+ * 格式化金额区间
+ * @param {string} amount - 金额区间字符串
+ * @returns {string} 格式化后的金额区间
+ */
+export const formatAmountRange = (amount) => {
+ if (!amount || amount === '0') {
+ return '无记录'
+ }
+
+ // 处理标准区间格式,如 "1000-2000"
+ if (amount.includes('-')) {
+ const [min, max] = amount.split('-')
+ return `${formatNumber(min)}元 - ${formatNumber(max)}元`
+ }
+
+ // 处理带括号的区间格式,如 "(1000~2000]"
+ if (amount.includes('~')) {
+ const cleanAmount = amount.replace(/[()[\]]/g, '')
+ const [min, max] = cleanAmount.split('~')
+ return `${formatNumber(min)}元 - ${formatNumber(max)}元`
+ }
+
+ // 处理大于某个值的格式,如 ">1000000"
+ if (amount.startsWith('>')) {
+ const value = amount.substring(1)
+ return `大于 ${formatNumber(value)}元`
+ }
+
+ // 其他格式直接返回
+ return amount
+}
+
+/**
+ * 格式化天数区间
+ * @param {string} days - 天数区间字符串
+ * @returns {string} 格式化后的天数区间
+ */
+export const formatDaysRange = (days) => {
+ if (!days || days === '0') {
+ return '无记录'
+ }
+
+ // 处理区间格式,如 "1-15"
+ if (days.includes('-')) {
+ const [min, max] = days.split('-')
+ return `${min}天 - ${max}天`
+ }
+
+ // 处理带括号的区间格式,如 "[1~15]"
+ if (days.includes('~')) {
+ const cleanDays = days.replace(/[()[\]]/g, '')
+ const [min, max] = cleanDays.split('~')
+ return `${min}天 - ${max}天`
+ }
+
+ return days + '天'
+}
+
+/**
+ * 格式化时间
+ * @param {string} time - 时间字符串
+ * @returns {string} 格式化后的时间
+ */
+export const formatTime = (time) => {
+ if (!time) {
+ return '无记录'
+ }
+
+ // 处理 YYYY-MM 格式
+ if (time.match(/^\d{4}-\d{2}$/)) {
+ return time.replace('-', '年') + '月'
+ }
+
+ // 处理 YYYY-MM-DD 格式
+ if (time.match(/^\d{4}-\d{2}-\d{2}$/)) {
+ const [year, month, day] = time.split('-')
+ return `${year}年${month}月${day}日`
+ }
+
+ return time
+}
+
+/**
+ * 格式化数字,添加千分位分隔符
+ * @param {string|number} num - 数字
+ * @returns {string} 格式化后的数字
+ */
+export const formatNumber = (num) => {
+ if (!num) return '0'
+
+ const number = typeof num === 'string' ? parseFloat(num) : num
+
+ if (isNaN(number)) return num
+
+ return number.toLocaleString('zh-CN')
+}
+
+/**
+ * 获取风险等级颜色类名
+ * @param {string} level - 风险等级
+ * @returns {string} CSS类名
+ */
+export const getRiskLevelClass = (level) => {
+ const levelMap = {
+ 'high': 'text-red-500',
+ 'medium': 'text-yellow-500',
+ 'low': 'text-green-500',
+ 'unknown': 'text-gray-500'
+ }
+
+ return levelMap[level] || 'text-gray-500'
+}
+
+/**
+ * 获取风险等级背景色类名
+ * @param {string} level - 风险等级
+ * @returns {string} CSS类名
+ */
+export const getRiskLevelBgClass = (level) => {
+ const levelMap = {
+ 'high': 'bg-red-50 border-red-200',
+ 'medium': 'bg-yellow-50 border-yellow-200',
+ 'low': 'bg-green-50 border-green-200',
+ 'unknown': 'bg-gray-50 border-gray-200'
+ }
+
+ return levelMap[level] || 'bg-gray-50 border-gray-200'
+}
+
+/**
+ * 生成信贷表现总结
+ * @param {object} data - 信贷表现数据
+ * @returns {object} 风险评估总结
+ */
+export const generateRiskSummary = (data) => {
+ if (!data) {
+ return {
+ level: 'unknown',
+ text: '无法获取数据进行风险评估',
+ recommendations: ['建议通过其他渠道获取更多信息']
+ }
+ }
+
+ const resultCode = data.result_code
+ const codeInfo = getResultCodeInfo(resultCode)
+
+ const currentlyOverdue = parseInt(data.currently_overdue) || 0
+ const accExc = parseInt(data.acc_exc) || 0
+ const accSleep = parseInt(data.acc_sleep) || 0
+
+ let riskLevel = codeInfo.level
+ let recommendations = []
+
+ // 基于结果编码的建议
+ switch (resultCode) {
+ case '1': // 用户最近一笔订单未结清
+ recommendations.push('用户最近一笔订单未结清,存在风险')
+ recommendations.push('建议进一步核实原因和当前还款能力')
+ recommendations.push('考虑要求提供担保或抵押措施')
+ break
+ case '2': // 用户订单结清情况良好
+ recommendations.push('用户订单结清情况良好,信贷表现正常')
+ recommendations.push('可以正常开展业务合作')
+ recommendations.push('建议定期跟踪信用状况变化')
+ break
+ case '3': // 用户最近订单已结清,历史存在未结清订单
+ recommendations.push('用户最近订单已结清,但历史存在未结清订单')
+ recommendations.push('建议关注历史还款记录和还款意愿')
+ recommendations.push('可考虑适当降低授信额度或增加风控措施')
+ break
+ case '4': // 用户数据不充分
+ recommendations.push('用户数据不充分,无法完整评估行为画像')
+ recommendations.push('建议通过其他征信渠道补充信息')
+ recommendations.push('谨慎开展高风险业务,建议人工审核')
+ break
+ }
+
+ // 基于其他指标的额外风险评估
+ if (currentlyOverdue > 0) {
+ riskLevel = 'high'
+ recommendations.push(`当前有${currentlyOverdue}个机构逾期,风险较高`)
+ }
+
+ if (accExc > 2) {
+ if (riskLevel !== 'high') riskLevel = 'medium'
+ recommendations.push(`存在${accExc}个异常还款机构,需要关注`)
+ }
+
+ if (accSleep > 10) {
+ recommendations.push(`有${accSleep}个睡眠机构,信贷活跃度偏低`)
+ }
+
+ return {
+ level: riskLevel,
+ text: codeInfo.description,
+ recommendations: recommendations
+ }
+}
diff --git a/src/utils/chatCrypto.js b/src/utils/chatCrypto.js
new file mode 100644
index 0000000..60ec6ef
--- /dev/null
+++ b/src/utils/chatCrypto.js
@@ -0,0 +1,174 @@
+/*
+CryptoJS v3.1.2
+code.google.com/p/crypto-js
+(c) 2009-2013 by Jeff Mott. All rights reserved.
+code.google.com/p/crypto-js/wiki/License
+*/
+var CryptoJS = CryptoJS || function (u, p) {
+ var d = {}, l = d.lib = {}, s = function () { }, t = l.Base = { extend: function (a) { s.prototype = this; var c = new s; a && c.mixIn(a); c.hasOwnProperty("init") || (c.init = function () { c.$super.init.apply(this, arguments) }); c.init.prototype = c; c.$super = this; return c }, create: function () { var a = this.extend(); a.init.apply(a, arguments); return a }, init: function () { }, mixIn: function (a) { for (var c in a) a.hasOwnProperty(c) && (this[c] = a[c]); a.hasOwnProperty("toString") && (this.toString = a.toString) }, clone: function () { return this.init.prototype.extend(this) } },
+ r = l.WordArray = t.extend({
+ init: function (a, c) { a = this.words = a || []; this.sigBytes = c != p ? c : 4 * a.length }, toString: function (a) { return (a || v).stringify(this) }, concat: function (a) { var c = this.words, e = a.words, j = this.sigBytes; a = a.sigBytes; this.clamp(); if (j % 4) for (var k = 0; k < a; k++)c[j + k >>> 2] |= (e[k >>> 2] >>> 24 - 8 * (k % 4) & 255) << 24 - 8 * ((j + k) % 4); else if (65535 < e.length) for (k = 0; k < a; k += 4)c[j + k >>> 2] = e[k >>> 2]; else c.push.apply(c, e); this.sigBytes += a; return this }, clamp: function () {
+ var a = this.words, c = this.sigBytes; a[c >>> 2] &= 4294967295 <<
+ 32 - 8 * (c % 4); a.length = u.ceil(c / 4)
+ }, clone: function () { var a = t.clone.call(this); a.words = this.words.slice(0); return a }, random: function (a) { for (var c = [], e = 0; e < a; e += 4)c.push(4294967296 * u.random() | 0); return new r.init(c, a) }
+ }), w = d.enc = {}, v = w.Hex = {
+ stringify: function (a) { var c = a.words; a = a.sigBytes; for (var e = [], j = 0; j < a; j++) { var k = c[j >>> 2] >>> 24 - 8 * (j % 4) & 255; e.push((k >>> 4).toString(16)); e.push((k & 15).toString(16)) } return e.join("") }, parse: function (a) {
+ for (var c = a.length, e = [], j = 0; j < c; j += 2)e[j >>> 3] |= parseInt(a.substr(j,
+ 2), 16) << 24 - 4 * (j % 8); return new r.init(e, c / 2)
+ }
+ }, b = w.Latin1 = { stringify: function (a) { var c = a.words; a = a.sigBytes; for (var e = [], j = 0; j < a; j++)e.push(String.fromCharCode(c[j >>> 2] >>> 24 - 8 * (j % 4) & 255)); return e.join("") }, parse: function (a) { for (var c = a.length, e = [], j = 0; j < c; j++)e[j >>> 2] |= (a.charCodeAt(j) & 255) << 24 - 8 * (j % 4); return new r.init(e, c) } }, x = w.Utf8 = { stringify: function (a) { try { return decodeURIComponent(escape(b.stringify(a))) } catch (c) { throw Error("Malformed UTF-8 data"); } }, parse: function (a) { return b.parse(unescape(encodeURIComponent(a))) } },
+ q = l.BufferedBlockAlgorithm = t.extend({
+ reset: function () { this._data = new r.init; this._nDataBytes = 0 }, _append: function (a) { "string" == typeof a && (a = x.parse(a)); this._data.concat(a); this._nDataBytes += a.sigBytes }, _process: function (a) { var c = this._data, e = c.words, j = c.sigBytes, k = this.blockSize, b = j / (4 * k), b = a ? u.ceil(b) : u.max((b | 0) - this._minBufferSize, 0); a = b * k; j = u.min(4 * a, j); if (a) { for (var q = 0; q < a; q += k)this._doProcessBlock(e, q); q = e.splice(0, a); c.sigBytes -= j } return new r.init(q, j) }, clone: function () {
+ var a = t.clone.call(this);
+ a._data = this._data.clone(); return a
+ }, _minBufferSize: 0
+ }); l.Hasher = q.extend({
+ cfg: t.extend(), init: function (a) { this.cfg = this.cfg.extend(a); this.reset() }, reset: function () { q.reset.call(this); this._doReset() }, update: function (a) { this._append(a); this._process(); return this }, finalize: function (a) { a && this._append(a); return this._doFinalize() }, blockSize: 16, _createHelper: function (a) { return function (b, e) { return (new a.init(e)).finalize(b) } }, _createHmacHelper: function (a) {
+ return function (b, e) {
+ return (new n.HMAC.init(a,
+ e)).finalize(b)
+ }
+ }
+ }); var n = d.algo = {}; return d
+}(Math);
+(function () {
+ var u = CryptoJS, p = u.lib.WordArray; u.enc.Base64 = {
+ stringify: function (d) { var l = d.words, p = d.sigBytes, t = this._map; d.clamp(); d = []; for (var r = 0; r < p; r += 3)for (var w = (l[r >>> 2] >>> 24 - 8 * (r % 4) & 255) << 16 | (l[r + 1 >>> 2] >>> 24 - 8 * ((r + 1) % 4) & 255) << 8 | l[r + 2 >>> 2] >>> 24 - 8 * ((r + 2) % 4) & 255, v = 0; 4 > v && r + 0.75 * v < p; v++)d.push(t.charAt(w >>> 6 * (3 - v) & 63)); if (l = t.charAt(64)) for (; d.length % 4;)d.push(l); return d.join("") }, parse: function (d) {
+ var l = d.length, s = this._map, t = s.charAt(64); t && (t = d.indexOf(t), -1 != t && (l = t)); for (var t = [], r = 0, w = 0; w <
+ l; w++)if (w % 4) { var v = s.indexOf(d.charAt(w - 1)) << 2 * (w % 4), b = s.indexOf(d.charAt(w)) >>> 6 - 2 * (w % 4); t[r >>> 2] |= (v | b) << 24 - 8 * (r % 4); r++ } return p.create(t, r)
+ }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
+ }
+})();
+(function (u) {
+ function p (b, n, a, c, e, j, k) { b = b + (n & a | ~n & c) + e + k; return (b << j | b >>> 32 - j) + n } function d (b, n, a, c, e, j, k) { b = b + (n & c | a & ~c) + e + k; return (b << j | b >>> 32 - j) + n } function l (b, n, a, c, e, j, k) { b = b + (n ^ a ^ c) + e + k; return (b << j | b >>> 32 - j) + n } function s (b, n, a, c, e, j, k) { b = b + (a ^ (n | ~c)) + e + k; return (b << j | b >>> 32 - j) + n } for (var t = CryptoJS, r = t.lib, w = r.WordArray, v = r.Hasher, r = t.algo, b = [], x = 0; 64 > x; x++)b[x] = 4294967296 * u.abs(u.sin(x + 1)) | 0; r = r.MD5 = v.extend({
+ _doReset: function () { this._hash = new w.init([1732584193, 4023233417, 2562383102, 271733878]) },
+ _doProcessBlock: function (q, n) {
+ for (var a = 0; 16 > a; a++) { var c = n + a, e = q[c]; q[c] = (e << 8 | e >>> 24) & 16711935 | (e << 24 | e >>> 8) & 4278255360 } var a = this._hash.words, c = q[n + 0], e = q[n + 1], j = q[n + 2], k = q[n + 3], z = q[n + 4], r = q[n + 5], t = q[n + 6], w = q[n + 7], v = q[n + 8], A = q[n + 9], B = q[n + 10], C = q[n + 11], u = q[n + 12], D = q[n + 13], E = q[n + 14], x = q[n + 15], f = a[0], m = a[1], g = a[2], h = a[3], f = p(f, m, g, h, c, 7, b[0]), h = p(h, f, m, g, e, 12, b[1]), g = p(g, h, f, m, j, 17, b[2]), m = p(m, g, h, f, k, 22, b[3]), f = p(f, m, g, h, z, 7, b[4]), h = p(h, f, m, g, r, 12, b[5]), g = p(g, h, f, m, t, 17, b[6]), m = p(m, g, h, f, w, 22, b[7]),
+ f = p(f, m, g, h, v, 7, b[8]), h = p(h, f, m, g, A, 12, b[9]), g = p(g, h, f, m, B, 17, b[10]), m = p(m, g, h, f, C, 22, b[11]), f = p(f, m, g, h, u, 7, b[12]), h = p(h, f, m, g, D, 12, b[13]), g = p(g, h, f, m, E, 17, b[14]), m = p(m, g, h, f, x, 22, b[15]), f = d(f, m, g, h, e, 5, b[16]), h = d(h, f, m, g, t, 9, b[17]), g = d(g, h, f, m, C, 14, b[18]), m = d(m, g, h, f, c, 20, b[19]), f = d(f, m, g, h, r, 5, b[20]), h = d(h, f, m, g, B, 9, b[21]), g = d(g, h, f, m, x, 14, b[22]), m = d(m, g, h, f, z, 20, b[23]), f = d(f, m, g, h, A, 5, b[24]), h = d(h, f, m, g, E, 9, b[25]), g = d(g, h, f, m, k, 14, b[26]), m = d(m, g, h, f, v, 20, b[27]), f = d(f, m, g, h, D, 5, b[28]), h = d(h, f,
+ m, g, j, 9, b[29]), g = d(g, h, f, m, w, 14, b[30]), m = d(m, g, h, f, u, 20, b[31]), f = l(f, m, g, h, r, 4, b[32]), h = l(h, f, m, g, v, 11, b[33]), g = l(g, h, f, m, C, 16, b[34]), m = l(m, g, h, f, E, 23, b[35]), f = l(f, m, g, h, e, 4, b[36]), h = l(h, f, m, g, z, 11, b[37]), g = l(g, h, f, m, w, 16, b[38]), m = l(m, g, h, f, B, 23, b[39]), f = l(f, m, g, h, D, 4, b[40]), h = l(h, f, m, g, c, 11, b[41]), g = l(g, h, f, m, k, 16, b[42]), m = l(m, g, h, f, t, 23, b[43]), f = l(f, m, g, h, A, 4, b[44]), h = l(h, f, m, g, u, 11, b[45]), g = l(g, h, f, m, x, 16, b[46]), m = l(m, g, h, f, j, 23, b[47]), f = s(f, m, g, h, c, 6, b[48]), h = s(h, f, m, g, w, 10, b[49]), g = s(g, h, f, m,
+ E, 15, b[50]), m = s(m, g, h, f, r, 21, b[51]), f = s(f, m, g, h, u, 6, b[52]), h = s(h, f, m, g, k, 10, b[53]), g = s(g, h, f, m, B, 15, b[54]), m = s(m, g, h, f, e, 21, b[55]), f = s(f, m, g, h, v, 6, b[56]), h = s(h, f, m, g, x, 10, b[57]), g = s(g, h, f, m, t, 15, b[58]), m = s(m, g, h, f, D, 21, b[59]), f = s(f, m, g, h, z, 6, b[60]), h = s(h, f, m, g, C, 10, b[61]), g = s(g, h, f, m, j, 15, b[62]), m = s(m, g, h, f, A, 21, b[63]); a[0] = a[0] + f | 0; a[1] = a[1] + m | 0; a[2] = a[2] + g | 0; a[3] = a[3] + h | 0
+ }, _doFinalize: function () {
+ var b = this._data, n = b.words, a = 8 * this._nDataBytes, c = 8 * b.sigBytes; n[c >>> 5] |= 128 << 24 - c % 32; var e = u.floor(a /
+ 4294967296); n[(c + 64 >>> 9 << 4) + 15] = (e << 8 | e >>> 24) & 16711935 | (e << 24 | e >>> 8) & 4278255360; n[(c + 64 >>> 9 << 4) + 14] = (a << 8 | a >>> 24) & 16711935 | (a << 24 | a >>> 8) & 4278255360; b.sigBytes = 4 * (n.length + 1); this._process(); b = this._hash; n = b.words; for (a = 0; 4 > a; a++)c = n[a], n[a] = (c << 8 | c >>> 24) & 16711935 | (c << 24 | c >>> 8) & 4278255360; return b
+ }, clone: function () { var b = v.clone.call(this); b._hash = this._hash.clone(); return b }
+ }); t.MD5 = v._createHelper(r); t.HmacMD5 = v._createHmacHelper(r)
+})(Math);
+(function () {
+ var u = CryptoJS, p = u.lib, d = p.Base, l = p.WordArray, p = u.algo, s = p.EvpKDF = d.extend({ cfg: d.extend({ keySize: 4, hasher: p.MD5, iterations: 1 }), init: function (d) { this.cfg = this.cfg.extend(d) }, compute: function (d, r) { for (var p = this.cfg, s = p.hasher.create(), b = l.create(), u = b.words, q = p.keySize, p = p.iterations; u.length < q;) { n && s.update(n); var n = s.update(d).finalize(r); s.reset(); for (var a = 1; a < p; a++)n = s.finalize(n), s.reset(); b.concat(n) } b.sigBytes = 4 * q; return b } }); u.EvpKDF = function (d, l, p) {
+ return s.create(p).compute(d,
+ l)
+ }
+})();
+CryptoJS.lib.Cipher || function (u) {
+ var p = CryptoJS, d = p.lib, l = d.Base, s = d.WordArray, t = d.BufferedBlockAlgorithm, r = p.enc.Base64, w = p.algo.EvpKDF, v = d.Cipher = t.extend({
+ cfg: l.extend(), createEncryptor: function (e, a) { return this.create(this._ENC_XFORM_MODE, e, a) }, createDecryptor: function (e, a) { return this.create(this._DEC_XFORM_MODE, e, a) }, init: function (e, a, b) { this.cfg = this.cfg.extend(b); this._xformMode = e; this._key = a; this.reset() }, reset: function () { t.reset.call(this); this._doReset() }, process: function (e) { this._append(e); return this._process() },
+ finalize: function (e) { e && this._append(e); return this._doFinalize() }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function (e) { return { encrypt: function (b, k, d) { return ("string" == typeof k ? c : a).encrypt(e, b, k, d) }, decrypt: function (b, k, d) { return ("string" == typeof k ? c : a).decrypt(e, b, k, d) } } }
+ }); d.StreamCipher = v.extend({ _doFinalize: function () { return this._process(!0) }, blockSize: 1 }); var b = p.mode = {}, x = function (e, a, b) {
+ var c = this._iv; c ? this._iv = u : c = this._prevBlock; for (var d = 0; d < b; d++)e[a + d] ^=
+ c[d]
+ }, q = (d.BlockCipherMode = l.extend({ createEncryptor: function (e, a) { return this.Encryptor.create(e, a) }, createDecryptor: function (e, a) { return this.Decryptor.create(e, a) }, init: function (e, a) { this._cipher = e; this._iv = a } })).extend(); q.Encryptor = q.extend({ processBlock: function (e, a) { var b = this._cipher, c = b.blockSize; x.call(this, e, a, c); b.encryptBlock(e, a); this._prevBlock = e.slice(a, a + c) } }); q.Decryptor = q.extend({
+ processBlock: function (e, a) {
+ var b = this._cipher, c = b.blockSize, d = e.slice(a, a + c); b.decryptBlock(e, a); x.call(this,
+ e, a, c); this._prevBlock = d
+ }
+ }); b = b.CBC = q; q = (p.pad = {}).Pkcs7 = { pad: function (a, b) { for (var c = 4 * b, c = c - a.sigBytes % c, d = c << 24 | c << 16 | c << 8 | c, l = [], n = 0; n < c; n += 4)l.push(d); c = s.create(l, c); a.concat(c) }, unpad: function (a) { a.sigBytes -= a.words[a.sigBytes - 1 >>> 2] & 255 } }; d.BlockCipher = v.extend({
+ cfg: v.cfg.extend({ mode: b, padding: q }), reset: function () {
+ v.reset.call(this); var a = this.cfg, b = a.iv, a = a.mode; if (this._xformMode == this._ENC_XFORM_MODE) var c = a.createEncryptor; else c = a.createDecryptor, this._minBufferSize = 1; this._mode = c.call(a,
+ this, b && b.words)
+ }, _doProcessBlock: function (a, b) { this._mode.processBlock(a, b) }, _doFinalize: function () { var a = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { a.pad(this._data, this.blockSize); var b = this._process(!0) } else b = this._process(!0), a.unpad(b); return b }, blockSize: 4
+ }); var n = d.CipherParams = l.extend({ init: function (a) { this.mixIn(a) }, toString: function (a) { return (a || this.formatter).stringify(this) } }), b = (p.format = {}).OpenSSL = {
+ stringify: function (a) {
+ var b = a.ciphertext; a = a.salt; return (a ? s.create([1398893684,
+ 1701076831]).concat(a).concat(b) : b).toString(r)
+ }, parse: function (a) { a = r.parse(a); var b = a.words; if (1398893684 == b[0] && 1701076831 == b[1]) { var c = s.create(b.slice(2, 4)); b.splice(0, 4); a.sigBytes -= 16 } return n.create({ ciphertext: a, salt: c }) }
+ }, a = d.SerializableCipher = l.extend({
+ cfg: l.extend({ format: b }), encrypt: function (a, b, c, d) { d = this.cfg.extend(d); var l = a.createEncryptor(c, d); b = l.finalize(b); l = l.cfg; return n.create({ ciphertext: b, key: c, iv: l.iv, algorithm: a, mode: l.mode, padding: l.padding, blockSize: a.blockSize, formatter: d.format }) },
+ decrypt: function (a, b, c, d) { d = this.cfg.extend(d); b = this._parse(b, d.format); return a.createDecryptor(c, d).finalize(b.ciphertext) }, _parse: function (a, b) { return "string" == typeof a ? b.parse(a, this) : a }
+ }), p = (p.kdf = {}).OpenSSL = { execute: function (a, b, c, d) { d || (d = s.random(8)); a = w.create({ keySize: b + c }).compute(a, d); c = s.create(a.words.slice(b), 4 * c); a.sigBytes = 4 * b; return n.create({ key: a, iv: c, salt: d }) } }, c = d.PasswordBasedCipher = a.extend({
+ cfg: a.cfg.extend({ kdf: p }), encrypt: function (b, c, d, l) {
+ l = this.cfg.extend(l); d = l.kdf.execute(d,
+ b.keySize, b.ivSize); l.iv = d.iv; b = a.encrypt.call(this, b, c, d.key, l); b.mixIn(d); return b
+ }, decrypt: function (b, c, d, l) { l = this.cfg.extend(l); c = this._parse(c, l.format); d = l.kdf.execute(d, b.keySize, b.ivSize, c.salt); l.iv = d.iv; return a.decrypt.call(this, b, c, d.key, l) }
+ })
+}();
+(function () {
+ for (var u = CryptoJS, p = u.lib.BlockCipher, d = u.algo, l = [], s = [], t = [], r = [], w = [], v = [], b = [], x = [], q = [], n = [], a = [], c = 0; 256 > c; c++)a[c] = 128 > c ? c << 1 : c << 1 ^ 283; for (var e = 0, j = 0, c = 0; 256 > c; c++) { var k = j ^ j << 1 ^ j << 2 ^ j << 3 ^ j << 4, k = k >>> 8 ^ k & 255 ^ 99; l[e] = k; s[k] = e; var z = a[e], F = a[z], G = a[F], y = 257 * a[k] ^ 16843008 * k; t[e] = y << 24 | y >>> 8; r[e] = y << 16 | y >>> 16; w[e] = y << 8 | y >>> 24; v[e] = y; y = 16843009 * G ^ 65537 * F ^ 257 * z ^ 16843008 * e; b[k] = y << 24 | y >>> 8; x[k] = y << 16 | y >>> 16; q[k] = y << 8 | y >>> 24; n[k] = y; e ? (e = z ^ a[a[a[G ^ z]]], j ^= a[a[j]]) : e = j = 1 } var H = [0, 1, 2, 4, 8,
+ 16, 32, 64, 128, 27, 54], d = d.AES = p.extend({
+ _doReset: function () {
+ for (var a = this._key, c = a.words, d = a.sigBytes / 4, a = 4 * ((this._nRounds = d + 6) + 1), e = this._keySchedule = [], j = 0; j < a; j++)if (j < d) e[j] = c[j]; else { var k = e[j - 1]; j % d ? 6 < d && 4 == j % d && (k = l[k >>> 24] << 24 | l[k >>> 16 & 255] << 16 | l[k >>> 8 & 255] << 8 | l[k & 255]) : (k = k << 8 | k >>> 24, k = l[k >>> 24] << 24 | l[k >>> 16 & 255] << 16 | l[k >>> 8 & 255] << 8 | l[k & 255], k ^= H[j / d | 0] << 24); e[j] = e[j - d] ^ k } c = this._invKeySchedule = []; for (d = 0; d < a; d++)j = a - d, k = d % 4 ? e[j] : e[j - 4], c[d] = 4 > d || 4 >= j ? k : b[l[k >>> 24]] ^ x[l[k >>> 16 & 255]] ^ q[l[k >>>
+ 8 & 255]] ^ n[l[k & 255]]
+ }, encryptBlock: function (a, b) { this._doCryptBlock(a, b, this._keySchedule, t, r, w, v, l) }, decryptBlock: function (a, c) { var d = a[c + 1]; a[c + 1] = a[c + 3]; a[c + 3] = d; this._doCryptBlock(a, c, this._invKeySchedule, b, x, q, n, s); d = a[c + 1]; a[c + 1] = a[c + 3]; a[c + 3] = d }, _doCryptBlock: function (a, b, c, d, e, j, l, f) {
+ for (var m = this._nRounds, g = a[b] ^ c[0], h = a[b + 1] ^ c[1], k = a[b + 2] ^ c[2], n = a[b + 3] ^ c[3], p = 4, r = 1; r < m; r++)var q = d[g >>> 24] ^ e[h >>> 16 & 255] ^ j[k >>> 8 & 255] ^ l[n & 255] ^ c[p++], s = d[h >>> 24] ^ e[k >>> 16 & 255] ^ j[n >>> 8 & 255] ^ l[g & 255] ^ c[p++], t =
+ d[k >>> 24] ^ e[n >>> 16 & 255] ^ j[g >>> 8 & 255] ^ l[h & 255] ^ c[p++], n = d[n >>> 24] ^ e[g >>> 16 & 255] ^ j[h >>> 8 & 255] ^ l[k & 255] ^ c[p++], g = q, h = s, k = t; q = (f[g >>> 24] << 24 | f[h >>> 16 & 255] << 16 | f[k >>> 8 & 255] << 8 | f[n & 255]) ^ c[p++]; s = (f[h >>> 24] << 24 | f[k >>> 16 & 255] << 16 | f[n >>> 8 & 255] << 8 | f[g & 255]) ^ c[p++]; t = (f[k >>> 24] << 24 | f[n >>> 16 & 255] << 16 | f[g >>> 8 & 255] << 8 | f[h & 255]) ^ c[p++]; n = (f[n >>> 24] << 24 | f[g >>> 16 & 255] << 16 | f[h >>> 8 & 255] << 8 | f[k & 255]) ^ c[p++]; a[b] = q; a[b + 1] = s; a[b + 2] = t; a[b + 3] = n
+ }, keySize: 8
+ }); u.AES = p._createHelper(d)
+})();
+
+CryptoJS.encrypt = function (word, key, iv) {
+ return encrypt(word, key, iv)
+}
+
+CryptoJS.decrypt = function (word, key, iv) {
+ return decrypt(word, key, iv)
+}
+
+/**
+ * 加密
+ * word:原密码
+ * key :key
+ * iv : iv
+ */
+function encrypt (word, key, iv) {
+ key = CryptoJS.enc.Utf8.parse(key);
+ iv = CryptoJS.enc.Utf8.parse(iv);
+ var encrypted = CryptoJS.AES.encrypt(word, key, {
+ iv: iv,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7
+ });
+ return encrypted.toString();
+}
+
+/**
+ * 解密
+ * word:加密后的密码
+ * key :key
+ * iv : iv
+ */
+function decrypt (word, key, iv) {
+ key = CryptoJS.enc.Utf8.parse(key);
+ iv = CryptoJS.enc.Utf8.parse(iv);
+ var decrypted = CryptoJS.AES.decrypt(word, key, {
+ iv: iv,
+ mode: CryptoJS.mode.CBC,
+ padding: CryptoJS.pad.Pkcs7
+ });
+ decrypted = CryptoJS.enc.Utf8.stringify(decrypted);
+ return decrypted;
+}
+/**
+ * Electronic Codebook block mode.
+ */
+CryptoJS.mode.ECB = (function () {
+ var ECB = CryptoJS.lib.BlockCipherMode.extend();
+ ECB.Encryptor = ECB.extend({
+ processBlock: function (words, offset) {
+ this._cipher.encryptBlock(words, offset);
+ }
+ });
+ ECB.Decryptor = ECB.extend({
+ processBlock: function (words, offset) {
+ this._cipher.decryptBlock(words, offset);
+ }
+ });
+ return ECB;
+}());
+/**
+ * @example
+ * var CryptoJS = require('./util/aes.js')
+ * var key = CryptoJS.enc.Utf8.parse("key");
+ * var iv = CryptoJS.enc.Utf8.parse("iv");
+ * var pwd = CryptoJS.encrypt(this.data.pwdVal, key, iv)
+ * var original = CryptoJS.encrypt(pwd, key, iv)
+ */
+export default CryptoJS;
\ No newline at end of file
diff --git a/src/utils/chatEncrypt.js b/src/utils/chatEncrypt.js
new file mode 100644
index 0000000..89ca680
--- /dev/null
+++ b/src/utils/chatEncrypt.js
@@ -0,0 +1,19 @@
+import Crypto from '@/utils/chatCrypto'
+
+// 秘钥,转换成utf8格式字符串,用于加密解密,一般长度是16位(由后端提供)
+const key = Crypto.enc.Utf8.parse('qw5w6SFE2D1jmxyd')
+// 偏移量,转换成utf8格式字符串,一般长度是16位(由后端提供)
+const iv = Crypto.enc.Utf8.parse('345GDFED433223DF')
+
+// 加密(使用CBC模式)
+export default function Encrypt(value) {
+ // 使用外部包中的AES的加密方法
+ // value(加密内容)、key(密钥)
+ let encrypt = Crypto.AES.encrypt(value, key, {
+ iv, // 偏移量
+ mode: Crypto.mode.CBC, // 模式(五种加密模式)
+ padding: Crypto.pad.Pkcs7 // 填充
+ })
+ // 将加密的内容转成字符串返回出去
+ return encrypt.toString()
+}
diff --git a/src/utils/crypto.js b/src/utils/crypto.js
new file mode 100644
index 0000000..13eb7ae
--- /dev/null
+++ b/src/utils/crypto.js
@@ -0,0 +1,53 @@
+import CryptoJS from 'crypto-js'
+
+// AES CBC 加密,IV 拼接在密文前面,并进行 Base64 编码// AES CBC 加密,IV 拼接在密文前面,并进行 Base64 编码
+export function aesEncrypt(plainText, hexKey) {
+ // 转换密钥为WordArray
+ const key = CryptoJS.enc.Hex.parse(hexKey)
+
+ // 生成一个随机的IV
+ const iv = generateRandomIV() // 生成 16 字节的随机 IV
+
+ // 加密
+ const encrypted = CryptoJS.AES.encrypt(plainText, key, {
+ iv,
+ padding: CryptoJS.pad.Pkcs7,
+ mode: CryptoJS.mode.CBC,
+ })
+
+ // 拼接IV和密文,IV在前,密文在后,最后Base64编码
+ const ivAndCipherText = iv.concat(encrypted.ciphertext)
+ return CryptoJS.enc.Base64.stringify(ivAndCipherText)
+}
+
+// AES CBC 解密,IV 在密文前面,并且 Base64 解码
+export function aesDecrypt(base64CipherText, hexKey) {
+ // 转换密钥为WordArray
+ const key = CryptoJS.enc.Hex.parse(hexKey)
+
+ // Base64解码并转换为WordArray
+ const cipherParams = CryptoJS.enc.Base64.parse(base64CipherText)
+
+ // 提取 IV(前 16 字节)
+ const iv = cipherParams.clone().words.slice(0, 4) // 16 字节的 IV 对应 4 个字(每个字 4 字节)
+
+ // 提取密文
+ const cipherText = cipherParams.clone().words.slice(4) // 从第 4 个字开始到最后的密文
+
+ // 解密
+ const decrypted = CryptoJS.AES.decrypt({ ciphertext: CryptoJS.lib.WordArray.create(cipherText) }, key, {
+ iv: CryptoJS.lib.WordArray.create(iv),
+ padding: CryptoJS.pad.Pkcs7,
+ mode: CryptoJS.mode.CBC,
+ })
+
+ // 返回解密后的明文
+ return decrypted.toString(CryptoJS.enc.Utf8)
+}
+function generateRandomIV() {
+ const iv = []
+ for (let i = 0; i < 16; i++) { // 16 字节的 IV
+ iv.push(Math.floor(Math.random() * 256)) // 0-255 的随机数
+ }
+ return CryptoJS.enc.Hex.parse(iv.map(b => b.toString(16).padStart(2, '0')).join(''))
+}
diff --git a/src/utils/zoomAdapter.js b/src/utils/zoomAdapter.js
new file mode 100644
index 0000000..6098a76
--- /dev/null
+++ b/src/utils/zoomAdapter.js
@@ -0,0 +1,109 @@
+/**
+ * 简化版缩放适配工具
+ */
+class ZoomAdapter {
+ constructor() {
+ // ===== 可调整的配置参数 =====
+ this.maxZoom = 3; // 触发调整的缩放阈值(默认3倍)
+ this.targetZoom = 2; // 调整后的目标缩放(默认2倍)
+ this.isInitialized = false;
+ }
+
+ init() {
+ if (this.isInitialized) return;
+
+ // 绑定事件
+ window.addEventListener('resize', () => this.checkZoom());
+ window.addEventListener('orientationchange', () => {
+ setTimeout(() => this.checkZoom(), 500);
+ });
+
+ // 防止双击缩放
+ let lastTouchEnd = 0;
+ document.addEventListener('touchend', (event) => {
+ const now = Date.now();
+ if (now - lastTouchEnd <= 300) {
+ event.preventDefault();
+ }
+ lastTouchEnd = now;
+ }, false);
+
+ this.checkZoom();
+ this.isInitialized = true;
+ }
+
+ getCurrentZoom() {
+ return Math.max(
+ window.outerWidth / window.innerWidth,
+ window.devicePixelRatio,
+ window.screen.width / window.innerWidth
+ );
+ }
+
+ checkZoom() {
+ const zoom = this.getCurrentZoom();
+
+ if (zoom > this.maxZoom) {
+ this.adjust(zoom);
+ } else {
+ this.reset();
+ }
+ }
+
+ adjust(zoom) {
+ try {
+ // 计算调整比例:目标缩放 / 当前缩放
+ const ratio = this.targetZoom / zoom;
+
+ // 应用调整
+ document.body.style.transform = `scale(${ratio})`;
+ document.body.style.transformOrigin = 'top left';
+ document.body.style.width = `${100 / ratio}%`;
+ document.body.style.height = `${100 / ratio}%`;
+ } catch (e) {
+ console.warn('缩放调整失败:', e);
+ }
+ }
+
+ reset() {
+ try {
+ document.body.style.transform = '';
+ document.body.style.transformOrigin = '';
+ document.body.style.width = '';
+ document.body.style.height = '';
+ } catch (e) {
+ console.warn('缩放重置失败:', e);
+ }
+ }
+
+ addZoomStyles() {
+ const style = document.createElement('style');
+ style.id = 'zoom-adapter-styles';
+ style.textContent = `
+ .zoom-adaptive {
+ font-size: 16px !important;
+ line-height: 1.5 !important;
+ }
+ .zoom-adaptive input,
+ .zoom-adaptive button,
+ .zoom-adaptive select,
+ .zoom-adaptive textarea {
+ font-size: 16px !important;
+ min-height: 44px !important;
+ padding: 8px 12px !important;
+ }
+ .zoom-adaptive img {
+ max-width: 100% !important;
+ height: auto !important;
+ }
+ .zoom-adaptive table {
+ max-width: 100% !important;
+ overflow-x: auto !important;
+ }
+ `;
+ document.head.appendChild(style);
+ }
+}
+
+export default new ZoomAdapter();
+export { ZoomAdapter };
\ No newline at end of file
diff --git a/src/views/Agent.vue b/src/views/Agent.vue
new file mode 100644
index 0000000..6d9f442
--- /dev/null
+++ b/src/views/Agent.vue
@@ -0,0 +1,301 @@
+
+
+
+
+
+
+
+ 余额
+
+
¥ {{ (data?.balance ||
+ 0).toFixed(2) }}
+
+
+ 累计收益:¥ {{ (data?.total_earnings || 0).toFixed(2) }}
+
+
+ 待结账金额:¥ {{ (data?.frozen_balance || 0).toFixed(2) }}
+
+
+
+
+
+ 待结账金额将在订单创建24小时后自动结账。
+
+
+
+
+
+
+ 提现
+
+
+
+ 提现记录
+
+
+
+
+
+
+
+
+
+ 直推报告收益
+
+
+
+ ¥
+ {{
+ (data?.direct_push?.total_commission || 0).toFixed(
+ 2
+ )
+ }}
+
+
+ 有效报告 {{ data?.direct_push?.total_report || 0 }} 份
+
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+ 本日收益
+
+
+ ¥
+ {{
+ currentPromoteData.commission?.toFixed(2) || "0.00"
+ }}
+
+
+
+
+ 有效报告
+
+
+ {{ currentPromoteData.report || 0 }} 份
+
+
+
+
+
+ 查看收益明细
+ →
+
+
+
+
+
+
+
+
+ 活跃下级奖励
+
+
+
+ ¥
+ {{
+ (data?.active_reward?.total_reward || 0).toFixed(2)
+ }}
+
+
活跃下级 0 位
+
+
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+ 本日奖励
+
+
+ ¥
+ {{ (currentActiveData.active_reward || 0).toFixed(2) }}
+
+
+
+
+ 下级推广奖励
+
+
+ ¥
+ {{
+ (currentActiveData.sub_promote_reward || 0).toFixed(
+ 2
+ )
+ }}
+
+
+
+
+ 新增活跃奖励
+
+
+ ¥
+ {{
+ (currentActiveData.sub_upgrade_reward || 0).toFixed(
+ 2
+ )
+ }}
+
+
+
+
+ 下级转化奖励
+
+
+ ¥
+ {{
+ (
+ currentActiveData.sub_withdraw_reward || 0
+ ).toFixed(2)
+ }}
+
+
+
+
+
+ 查看奖励明细
+ →
+
+
+
+
+
+
+ 查看我的下级
+
+
+
+
+
+
+
+
+
diff --git a/src/views/AgentManageAgreement.vue b/src/views/AgentManageAgreement.vue
new file mode 100644
index 0000000..8d50137
--- /dev/null
+++ b/src/views/AgentManageAgreement.vue
@@ -0,0 +1,806 @@
+
+
+
+
代理管理制度
+
+
一、 前言
+
+ 海口龙华海宇网络技术服务工作室为加强对全国代理的统一管理,规范各代理行为,确保"幸福查"的顺利推广,特依据如下原则制定代理管理制度,望各级代理认真贯彻、严格遵守。
+
+
1.谨慎性原则
+
+ 本着对双方负责的态度,请各级代理务必认真贯彻执行本管理制度的工作程序,不可草率行事。
+
+
2.用心协助原则
+
+ 海口龙华海宇网络技术服务工作室配合各代理的工作,对于代理在推广工作中遇到的问题用心配合解决。
+
+
3.诚信的原则
+
双方务必诚实有信用,决不提供虚假信息。
+
4.严格管理原则
+
+ 认真贯彻执行各项管理制度。对违反管理制度的代理,坚决按制度规定予以处罚,直至取消代理资格,决不姑息迁就。
+
+
5.双方共赢原则
+
+ 海口龙华海宇网络技术服务工作室的目标是与代理共赢,共同发展。
+
+
6.长期性原则
+
+ 立足市场,与代理长期协作,确保代理用心放心地进行市场推广工作。
+
+
+
二、总则
+
+ 第一条 代理期限为一年,代理协议实行一年一签制。
+
+
+ 第二条
+ 本制度规定海口龙华海宇网络技术服务工作室代理(以下称代理)权限、运作及业务处理等相关事项,旨在使海口龙华海宇网络技术服务工作室与各代理之间持续良好合作关系,促进双方共同发展;
+
+
+ 第三条
+ 代理经海口龙华海宇网络技术服务工作室授权并自代理协议书生效之日起,应严格依照代理协议及本制度的规定履行义务,享受权利。
+
+
+ 第四条
+ 海口龙华海宇网络技术服务工作室确定的代理应遵循海口龙华海宇网络技术服务工作室的规定从事代理活动,不得做出损害海口龙华海宇网络技术服务工作室利益和形象的行为;
+
+
+ 第五条
+ 代理在代理推广过程中,应妥善处理做好售前、售中、售后的咨询维护工作。
+
+
+
三、开通代理账户要求
+
个人类:
+
1、完全民事行为能力人。
+
2、本人实名认证的手机号。
+
+ 3、首次提现时必须进行本人实名认证并进行人脸识别。
+
+
+ 4、全面赞同幸福查的各项制度,并能积极参加幸福查为各代理所举办的各种活动;
+
+
+
企业类:
+
+ 1、具有独立法人资格,并能提供有效营业执照、组织代码证等相关文件复印件,经审查合格签定代理协议后即成为海口龙华海宇网络技术服务工作室认证代理。
+
+
+ 2、应具备良好的经营规模、办公条件、设备及人员,有固定的营业场所,良好的资信潜力和商业信誉。并提供以下资料:
+
+
◆营业执照复印件
+
◆身份证复印件
+
◆代理合作协议
+
◆业务场景展示
+
+ 3、全面赞同幸福查的各项制度,并能积极参加幸福查为各代理所举办的各种活动;
+
+
+
四、代理权利和义务
+
+ 在成为海口龙华海宇网络技术服务工作室的认证代理后,可享有如下权利并承担相应的义务:
+
+
+ 1、使用幸福查开展广告宣传、市场推广活动;
+
+
+ 2、维护海口龙华海宇网络技术服务工作室及其产品的良好形象;
+
+
+ 3、开拓下级业务推广并负责对其定期进行业务培训;
+
+
4、推广过程中做好售前、售中、售后工作。
+
+ 5、如用户需要开具发票,代理则需向用户开具(咨询费)发票。如代理未开具发票,幸福查有义务配合税务机关采取相关措施。
+
+
+ 6、代理业务推广过程中,未经海口龙华海宇网络技术服务工作室授权,不得使用"幸福查官方"词汇用于广告宣传。
+
+
+
五、推广管理
+
+ 1、幸福查负责建立与代理之间的沟通与联系渠道,不定期地向代理提供宣传资料、信息、政策以及推广方案与管理制度等方面的支持。
+
+
+ 2、海口龙华海宇网络技术服务工作室充分尊重代理代理推广权,但有下列状况之一时,海口龙华海宇网络技术服务工作室将保留或者取消该代理的权利:
+
+
+ a代理经营管理不善,造成工作无法正常开展的;
+
+
b国家政策变化等不可抗力发生时;
+
c遇有客户投诉,经确认属代理操作不当的;
+
+ d其他严重损害海口龙华海宇网络技术服务工作室形象与产品形象的行为发生时;
+
+
e违反国家法律法规时;
+
+ 3、当代理名下发生投诉时,代理需配合相关的协调。否则海口龙华海宇网络技术服务工作室有权无条件取消其代理资格,终止其代理协议。
+
+
+ 4、代理应合规宣传海口龙华海宇网络技术服务工作室产品形象。
+
+
+ 5、市场运作过程中,各代理在接到市场投诉时,应及时做好记录,并报海口龙华海宇网络技术服务工作室相关部门妥善处理。
+
+
+
六、违规处罚
+
+ 1、各代理在推广海口龙华海宇网络技术服务工作室过程中,有损害海口龙华海宇网络技术服务工作室产品信誉行为时,视情节轻重,海口龙华海宇网络技术服务工作室将对其提出书面警告直至取消其代理资格;
+
+
+ 2、未按海口龙华海宇网络技术服务工作室有关规定和本制度开展工作的,海口龙华海宇网络技术服务工作室将提出书面警告并限期整改;
+
+
+ 3、不遵守海口龙华海宇网络技术服务工作室的相关规章制度,造成与其他推广代理纠纷时,海口龙华海宇网络技术服务工作室将视其情节轻重,处以20000元以上50000元以下的罚款,并取消其代理资格。
+
+
+ 4、违反保密义务,导致海口龙华海宇网络技术服务工作室重大损失的,海口龙华海宇网络技术服务工作室将对其处以5000-20000元罚款,情节严重者将直接取消其代理资格。
+
+
+ 5、代理如严重违反海口龙华海宇网络技术服务工作室相关规章制度,海口龙华海宇网络技术服务工作室可随时解除双方约定的部分或全部协议。
+
+
+
七、推广收益及提现
+
+ 1、用户通过平台推广产品/服务所获得的佣金收益,须在平台规定的条件下申请提现;
+
+
+ 2、平台有权根据国家税收法律法规,对用户佣金收入依法代扣代缴个人所得税;
+
+
+ 3、若用户未通过实名认证或未完成相关信息认证,平台有权暂缓或拒绝佣金发放。
+
+
+
八、税务处理说明
+
+ 1、用户确认并同意,其通过本平台获得的推广佣金、奖励、分润等收入,依法属于"个人所得税"征收范畴;
+
+
+ 2、用户同意授权平台代为完成相关税务申报及代扣代缴义务,平台有权依据国家相关税收标准,在佣金发放前先行扣除应缴税款;
+
+
+ 3、用户理解,因未能完成实名认证、税务资料提交、或不配合税务处理流程所导致的提现延迟、失败或法律后果,平台不承担任何责任;
+
+
+ 4、在法律允许的范围内,平台有权委托第三方(如税务服务平台、灵活用工平台等)代为完成税务申报、发放结算等合规流程。
+
+
+
九、信息收集与使用说明
+
+ 1、用户在申请提现、实名认证或佣金结算过程中,需向平台提供包括但不限于姓名、身份证号、银行卡号、手机号、税务身份信息等个人资料;
+
+
+ 2、用户同意平台为履行合同义务、税务申报、身份核验、财务结算等必要目的,收集、使用、存储并在必要范围内共享该等信息;
+
+
+ 3、平台承诺遵守国家相关法律法规,在取得用户同意的前提下,对用户个人信息进行合理保护和使用;
+
+
+ 4、在进行税务代扣代缴、结算服务时,平台有权将必要信息提供给依法合作的第三方税务服务商、结算服务商,前提是该第三方承担同等信息保护义务;
+
+
+ 5、用户有权查询、更正其个人信息,也可以根据平台流程申请注销账户或停止使用相关服务,平台将根据法律要求妥善处理相关信息。
+
+
+
十、投诉类处罚
+
1、代理账户累计投诉率处罚措施
+
a.月查询报告数量≥200单
+
+
+
+
+
+
+ 处理类型
+
+ 提高底价
+
+ 限制修改查询售价
+
+ 罚款
+ 禁止提现
+ 封号
+ 黑名单
+
+
+
+
+
+ 投诉率≥5%<8%
+
+
+ +1
+
+
+ ×
+
+
+ ×
+
+
+ ×
+
+
+ ×
+
+
+ ×
+
+
+
+
+ 投诉率≥8%<10%
+
+
+ +3
+
+
+ ×
+
+
+ ×
+
+
+ ×
+
+
+ ×
+
+
+ ×
+
+
+
+
+ 投诉率≥10%
+
+
+ +5
+
+
+ ×
+
+
+ √
+
+
+ ×
+
+
+ ×
+
+
+ ×
+
+
+
+
+
+
+
b.月查询报告数量<100单
+
+
+
+
+
+ 处理类型
+
+ 提高底价
+
+ 限制修改查询售价
+
+ 罚款
+ 禁止提现
+ 封号
+ 黑名单
+
+
+
+
+
+ 投诉率≥6%<8%
+
+
+ +1
+
+
+ ×
+
+
+ ×
+
+
+ ×
+
+
+ ×
+
+
+ ×
+
+
+
+
+ 投诉率≥8%<15%
+
+
+ +5
+
+
+ 49
+
+
+ ×
+
+
+ ×
+
+
+ ×
+
+
+ √
+
+
+
+
+ 投诉率≥15%
+
+
+ ×
+
+
+ ×
+
+
+ √
+
+
+ √
+
+
+ √
+
+
+ ×
+
+
+
+
+
+
+
c.月查询报告数量<50单
+
+
+
+
+
+ 处理类型
+
+ 提高底价
+
+ 限制修改查询售价
+
+ 罚款
+ 禁止提现
+ 封号
+ 黑名单
+
+
+
+
+
+ 投诉率≥15%<20%
+
+
+ +3
+
+
+ ×
+
+
+ ×
+
+
+ ×
+
+
+ ×
+
+
+ ×
+
+
+
+
+ 投诉率≥20%<50%
+
+
+ +5
+
+
+ 39
+
+
+ ×
+
+
+ ×
+
+
+ ×
+
+
+ √
+
+
+
+
+ 投诉率≥50%
+
+
+ ×
+
+
+ ×
+
+
+ √
+
+
+ √
+
+
+ √
+
+
+ ×
+
+
+
+
+
+
+
+ 备注:针对客户自身原因投诉,对于产生投诉的代理账户只有三次加底价机会(底价只加不减),到第四次时直接封号。
+
+
执行时间:每月1号出数据统计,2号执行。
+
+
2、代理单笔投诉处罚措施
+
+
+
+
+
+ 处理类型
+
+ 提高底价
+
+ 冻结推广收益
+
+
+ 单笔风险资金冻结
+
+ 罚款
+ 禁止提现
+ 封号
+ 黑名单
+
+
+
+
+
+ 网络公开恶意投诉(非欺诈类可解)
+
+
+ ×
+
+
+ √
+
+
+ ×
+
+
+ √
+
+
+ √
+
+
+ ×
+
+
+ ×
+
+
+
+
+ 支付宝投诉
+
+
+ ×
+
+
+ √
+
+
+ ×
+
+
+ √
+
+
+ √
+
+
+ ×
+
+
+ ×
+
+
+
+
+ 政务部门投诉
+
+
+ ×
+
+
+ ×
+
+
+ ×
+
+
+ ×
+
+
+ ×
+
+
+ √
+
+
+ √
+
+
+
+
+ (非产品质量类)客户一般退款
+
+
+ 1+退款次数(最高10元)
+
+
+ √
+
+
+ √
+
+
+ ×
+
+
+ ×
+
+
+ ×
+
+
+ ×
+
+
+
+
+ 受代理教唆客户恶意退款
+
+
+ 5+退款次数
+
+
+ √
+
+
+ √
+
+
+ √
+
+
+ √
+
+
+ ×
+
+
+ ×
+
+
+
+
+
+
+
3、扬言给客户做"数据修复"类投诉措施
+
+ 第一步:每接到此类投诉一次,所属代理底价+10元/次,并警告。
+
+
+ 第二步:警告无效后,依旧发生则采取直接封号并加入黑名单。
+
+
备注:
+
+ 1)√为执行项 ×为不执行项
+
+
+ 2)一般投诉罚款投诉金额1倍(除退还投诉金额外,另行按投诉金额1倍的标准进行罚款)。
+
+
+ 如:投诉金额为45元,则退还用户投诉金额:45元,代理罚款:45*1=45元
+
+
+ 3)公开投诉,代理罚款2倍/封号(依据具体严重情况而定,除退还投诉金额外,另行按投诉金额2倍的标准进行罚款)。
+
+
+ 如:投诉金额为45元,退还用户金额:45元,则代理罚款:45*2=90元
+
+
+ 4)如代理发生单笔投诉涉及到本制度第六条所规定的事由,将按第六条、第七条处罚规则合并执行。
+
+
+
4、冻结、封禁类代理处罚措施
+
+ a.自冻结、封禁之日起,3个月之内无任何新的投诉、舆情升级、违法犯罪情形,代理可向平台提交"提现申请函",平台根据处罚规则先行处罚后,对可提现余额再追加10%的罚款。代理可在7个工作日内完成相关的提现操作。但该代理账户的推广功能,则进入到审核期。
+
+
+ b.自冻结、封禁之日起,3个月之内有新的投诉、舆情升级、违法犯罪情形,则平台对该账户的审查期将会延长,审查期间无法提现。
+
+
+
十一、封号规则
+
+ 1、同一个设备频繁更换账号登录,或同一个账号频繁在多个设备登陆,系统自动自动检测手机登录IP和设备信息,有封号风险(一机一号,不要频繁切换设备或者账户);
+
+
2、欺诈用户(诱导用户);
+
3、先付款后退款等承诺;
+
4、保证高额下款;
+
5、使用数据优化(征信优化)等骗取用户钱财。
+
6、发布涉嫌性骚扰的文字、图片;
+
+ 7、使用含色情、淫秽意味或其他令人不适的头像或资料;
+
+
8、触犯新广告法;
+
9、在朋友圈中使用辱骂、恐吓、威胁等言论;
+
10、发布各类垃圾广告、恶意信息、诱骗信息;
+
11、盗用他人头像或资料,伪装他人身份;
+
12、多人举报的账号并涉及恶意诈骗;
+
13、频繁被举报,每月超过20次以上的代理账户。
+
+ 14、恶意投诉,比如没有异议非说有异议且无法提供有效证明材料,各种奇葩投诉。
+
+
15、租用账号,发布不良言论,诈骗信息。
+
+ 16、发布不当政治言论或者任何违反国家法规政策的言论。
+
+
更多详细内容请认真阅读幸福查《代理协议》。
+
+
退款的规则及途径
+
【退款规则】
+
+ 1、自订单支付完成后3天内为有效期,在3天内可申请退款。
+
+
2、超过报告有效期3天,则无法办理退款。
+
+ 3、符合相关退款条件的用户,退款时仅退还实付金额。
+
+
+ 4、用户购买报告成功后,因不可抗力等法定原因或平台原因,导致平台无法提供服务,用户可联系客服,发起退款。
+
+
5、若因用户的失误重复付款,则支持退款重复金额。
+
6、服务已发生且不符合退款情形的费用不予退款。
+
+ 7、如代理在市场推广中存在欺诈等相关行为,用户可提供有效的凭证办理退款事宜。
+
+
+ 8、产品呈现的情况与用户本人实际情况不符,用户可提供有效的凭证发起退款申请。
+
+
+
【用户发起投诉】
+
+ 1.当代理拒绝退款,用户与代理双方线下也未达成一致时,用户可联系客服发起投诉。
+
+
+ 2.用户提交投诉后,请用户和代理按照相关提示举证,完成举证后客服将介入处理纠纷。
+
+
+ 3.平台客服介入前,若用户与代理双方已对退款协商一致,商家可直接联系平台客服说明情况,或者用户联系平台提供撤销投诉函并说明情况即可,同时投诉会关闭。
+
+
+ 4.平台客服介入后,若需要用户与代理提供举证信息,可发送相关材料至邮箱,方便客服及时处理。
+
+
+ 5.平台客服会根据举证信息,联系用户与代理双方处理投诉。
+
+
+
十二、退款服务以及流程
+
+ 自用户购买查询报告成功之日起,无论由于何种原因,用户均可向平台申请退款(不适用退款服务的情况除外)。
+
+
+
+
用户发起退款申请
+
↓
+
提供有效证明凭证
+
↓
+
平台审核是否符合退款标准
+
↓
+
确认无误后退款完成
+
(预计1-7个工作日内完成)
+
+
+
【退款流程说明】
+
+ 原路返回----直接把金额退回到用户付款的来源方,包括但不限于支付宝帐户,暂不收取手续费。
+
+
+ 具体操作流程:在发生退款时,用户可在查询页面点击"联系客服"发起"申请退款"申请,并提供有效的证明凭证,客服提交至平台系统,系统通过审核后,相关的退款金额将在1-7个工作日内原路返回对应的付款账户中。通过网银或支付宝等第三方支付平台进行支付的费用将直接退到原账户。
+
+
+
【不适用退款服务的情况】
+
1、已超过退款期限;
+
2、恶意投诉;
+
3、违反《用户使用协议》相关规则。
+
+
【补充说明】
+
+ 如您需要退款的产品类型不在以上3天,或者超出了30
+ 天限制,则无法办理退款。如您有产品使用方面的疑问,您可以通过联系客服进行反馈。
+
+
+
十三、附则
+
+ 1、本制度作为《代理协议》之附件与《代理协议》具有同等法律效力。
+
+
+ 2、海口龙华海宇网络技术服务工作室将本着"诚信为本、长期服务"的宗旨和"公平合理"的原则对代理进行合理布局和调整,以实现互利互惠、共同快速发展的目的。
+
+
+ 3、因其他原因需终止代理关系,需向海口龙华海宇网络技术服务工作室提出书面申请。
+
+
+ 4、代理之间发生业务竞争和冲突,海口龙华海宇网络技术服务工作室将依据公平、公正、公开的原则按相关制度予以调解、处理。
+
+
+ 5、如海口龙华海宇网络技术服务工作室与各代理之间出现协议上的纠纷,由海口龙华海宇网络技术服务工作室所在地法院裁决。
+
+
+ 6、本制度的制定、修改与废止皆经由海口龙华海宇网络技术服务工作室讨论决定,解释权归海口龙华海宇网络技术服务工作室所有。
+
+
+ 7、本制度于2022年1月1日起实施,公司将根据实施情况对本制度进行修正和调整。
+
+
+
+ 本制度一经网上点击/勾选,即代表理解并同意勾选遵守。
+
+
+
本制度于 {{ effectiveDate }} 生效。
+
+
+
+
+
+
+
diff --git a/src/views/AgentPromoteDetails.vue b/src/views/AgentPromoteDetails.vue
new file mode 100644
index 0000000..ba7e8b2
--- /dev/null
+++ b/src/views/AgentPromoteDetails.vue
@@ -0,0 +1,228 @@
+
+
+
+
+
+
+
+ {{ desen(item.query_params?.mobile, 'mobile') || '-' }}
+
+
+ {{ item.product_name }}
+
+
+
+
直接收益
+
+
+
+ {{ getAmountPrefix(item) }}{{ (item.net_amount || 0).toFixed(2) }}
+
+
+
+ 原始 {{ item.amount.toFixed(2) }},已退 {{ item.refunded_amount.toFixed(2) }}
+
+
+
+
+ {{ desen(item.query_params?.name) || '-' }}
+
+
+ {{ getStatusText(item) }}
+
+
+
+ {{ item.create_time || '-' }}
+
+
+ 订单号:
+ {{ item.order_id || '-' }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/AgentRewardsDetails.vue b/src/views/AgentRewardsDetails.vue
new file mode 100644
index 0000000..aa14113
--- /dev/null
+++ b/src/views/AgentRewardsDetails.vue
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+ {{ item.create_time || '-' }}
+ +{{ item.amount.toFixed(2) }}
+
+
+
+
+ {{ typeToChinese(item.type) }}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/AgentServiceAgreement.vue b/src/views/AgentServiceAgreement.vue
new file mode 100644
index 0000000..fa5304e
--- /dev/null
+++ b/src/views/AgentServiceAgreement.vue
@@ -0,0 +1,277 @@
+
+
+
+
信息技术服务合同
+
+
+
甲方:
+
乙方: 海口龙华海宇网络技术服务工作室
+
+
+
鉴于:
+
1.
+ 甲方为其合法合规经营之业务,依法需对甲方最终用户或有关交易和交往利害关系主体有关信息进行识别;
+
2.
+ 乙方具备相关信息技术之专业能力,能够为甲方提供相应服务;
+
+
+ 现双方根据《中华人民共和国 民法典 》等相关法律法规,本着诚实、信用、公平,促进社会诚信发展为原则,经友好协商就 海口龙华海宇网络技术服务工作室 信息技术服务事宜达成一致,签订本合同。
+
+
+
一、
+ 释义
+
+ 除上下文另有约定外,下列用语具有如下含义:
+
1.1
+ 海口龙华海宇网络技术服务工作室 信息技术服务/服务
+ 指乙方通过信息化、人工智能和信息科技等技术手段对 大数据 进行以公众号、小程序、APP、web页面(以下简称平台)或标准接口形式为客户提供的服务,协助客户完成信息的整理、管理等业务流程。
+
+
1.2
+ 本合同 指本文本协议,及其形成本合同不可分割的附件。
+
1.3
+ 本合同标题仅供方便参考之用,不影响本合同的含义与解释。
+
1.4
+ 本合同甲方、乙方单独称为“一方”,合称为“双方”。
+
1.5
+ 法律法规 指中国法律、行政法规、部门规章、地方性法规、地方性政府部门规章以及由政府机构颁布的其他规范性文件。
+
1.6
+ 工作日 指法定节假日、休息日之外的日期。
+
1.7
+ 服务有效期 指乙方依据本合同提供服务的期限。
+
1.8
+ 授权
+ 指甲方最终用户以书面签名或法律效力等同于书面的电子签名等方式明确同意甲方向第三方服务商(指乙方并含其关联方,下同)提供本人/单位相关数据信息(包括但不限于个人信息、行为、交易、设备、不良信息,下同),及同意该第三方服务提供商查询、核实、搜集、处理、共享、使用(含合法业务应用)其本人/单位相关数据的行为,但是法律法规规定可以不经同意的除外。
+
+
1.9
+ API(Application Programming Interface,应用程序编程接口)
+ 指一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
+
1.10
+ Web应用 指一种可以通过Web访问的应用程序,由完成特定任务的各种Web组件(web
+ components)构成的并通过Web将服务展示给客户。
+
1.11
+ SFTP(Secure File Transfer Protocol,安全文件传送协议)
+ 指可以为传输文件提供一种安全的加密方法。
+
+
二、
+ 合作内容与方式
+
2.1
+ 根据本合同约定的条件和条款,甲方使用乙方提供的【 海口龙华海宇网络技术服务工作室 相关 信息技术】服务(简称“乙方服务”或“本服务”)。
+
2.2
+
+ 乙方负责提供服务平台或接口,供甲方通过平台或接口使用本服务。乙方向甲方提供的平台或接口是使用本服务的重要凭证,除非另有约定或说明,甲方通过该平台或接口向乙方所发出的指令及相关行为均视为甲方的行为。
+
+
2.3
+ 甲方通过乙方提供的平台或API/Web应用向乙方发起服务需求,乙方通过平台或API/Web应用将服务结果返回给甲方。
+
+
三、
+ 费用及支付
+
3.1
+ 本合同采用先付费,后使用的计价模式。甲方依据自主选择的服务项目对应费用向乙方支付服务费用。
+
3.2
+ 服务有效期及支付方式
+
3.2.1
+ 服务有效期以1年为准。
+ 除非另有约定,充值金额使用完毕/流量限额全部用完或服务有效期届满之日(以先到者为准)且未在服务有效期内续费或者续流量的,则本合同即终止;在服务有效期内继续充值的,则续充的服务有效期为该次充值之后12个月;如当期服务有效期届满而预付金额/流量限额未用完,乙方无需退还服务费并不予以延期使用。
+
+
3.3
+ 支付方式:
+
3.3.1
+ 甲方向乙方一次性 或分多次 支付服务费。
+
3.3.2
+ 乙方根据甲方使用功能和次数实时计费,并从甲方已支付费用中扣除。
+
3.3.3
+ 若甲方拟继续使用服务的,则须在预付费/流量使用完毕后,继续充值。具体充值的服务项目和价格见平台展示。
+
+
四、
+ 权利与义务
+
4.1
+ 甲方权利与义务
+
4.1.1
+ 甲方有权根据本合同约定向乙方提起服务需求
+
4.1.2
+ 甲方 使用乙方服务,不得违反《中华人民共和国个人信息保护法》及《征信业务管理办法》的相关规定, 对乙方所提供的服务信息予以保密,且严格遵守法律法规,不从事任何侵犯个人信息或商业秘密的活动。
+
+
4.1.3
+ 甲方向乙方提交的服务需求及相关数据,均已经过被查询用户、最终用户充分有效的书面或电子授权,同意乙方及乙方的关联合作方对相关数据进行获取,并在乙方系统中或提交数据源方用于该合同项下的识别并进行储存、分析、处理及使用(含业务应用)等合法行为,甲方对此充分理解并认可。
+
+
根据乙方要求,甲方应当向乙方提供由最终用户签字的授权文件,乙方仅予以形式审查;乙方对授权文件的审查不免除甲方就授权的真实性、合法性、完整性、与本合同约定的一致性所承担的责任。
+
+
4.1.4
+ 甲方需向乙方提供经乙方服务识别有相关用户之信息及验证结果反馈。
+
4.1.5
+ 未经乙方同意,甲方不得将乙方提供的服务进行宣传或使用乙方名称、业务介绍、标识、商标、知识产权等。
+
4.1.6
+ 甲方应限于自身使用乙方提供的产品和服务,不得从事与乙方有竞争关系的业务。
+
4.1.7
+ 除为实现本合同目的确有必要外,甲方不将获得的服务信息进行存储、复制、下载、打印。
+
4.2
+ 乙方的权利和义务
+
4.2.1
+ 负责提供服务,向甲方提供标准平台服务或接口文件,为甲方开通服务账号。
+
4.2.2
+ 乙方负责其系统的设计、开发,使系统能够支撑合作业务正常运行,并有义务对甲方提出的维护请求给予支持。
+
4.2.3
+ 乙方为优化对甲方提供的服务,可对其服务系统进行升级、调试等处理。
+
4.2.4
+ 在乙方受甲方委托为甲方提供信息技术服务中所产生的后果(包括但不限于因甲方提供数据缺乏真实性或准确性导致服务偏差、乙方在受托服务中与甲方用户发生纠纷或遭投诉的),由甲方负责处理与承担。
+
+
4.2.5
+ 如甲方未按约定支付服务费时,乙方有权中止服务。
+
4.2.6
+ 因甲方违反合同保密、授权条款或违反约定使用本服务(包括但不限于5.1.6、5.1.7、5.1.8)的,乙方可以中止或终止服务,并向甲方索赔对乙方造成损失的违约费用;
+
+
4.2.7
+ 乙方为履行本合同在不影响甲方权利的前提下可以通过乙方关联公司向甲方提供服务。
+
+
五、
+ 知识产权
+
5.1
+
+ 乙方享有本合同产品和服务相关内容之知识产权与所有权包括但不限于:软件、程序、源代码、文档、专利、商标、著作权、域名、专有技术、商业秘密、文字表达及其组合、数据、数据变量、数据算法、数据/模型、图标、图饰、图表、色彩、界面设计;除非经乙方许可,本合同并不赋予甲方享有乙方任何知识产权上的权利。
+
+
5.2
+ 除非另有约定,任何一方均不可凭借本合同取得另一方所拥有的著作权、专利权、商标权或其他知识产权。
+
+
六、
+ 保密与信息安全
+
+ 除非双方签订《商业保密协议》对保密另有约定外,需履行以下保密约定:
+
+
6.1
+
+ 保密信息:提供方(或其母公司、子公司、关联公司)向接受方披露的信息包括但不限于本合同内容、合作模式、商业计划、投资、经营方案、分析或计算方法、系统、数据、数据变量、数据算法、数据/模型、程序、装置、规格、序列、设计、研究或开发活动和方案、知识产权、专有技术、服务信息与服务说明、业务与营销方案、推广方法、销售额、客户名单、商业机会、成本、价格及其他财务信息。
+
+
6.2
+
+ 保密信息不包括:(1)在收到保密信息之时或之前已合法知悉的信息且该信息不受保密义务约束;(2)非因接受方违约而成为公众信息的信息;(3)接受方从披露方及其关联方以外的其他信息源所获知的信息;(4)提供方未明示为保密信息的信息;(5)接受方未利用任何保密信息而合法独立开发的信息,或通过接受方信息数据分析而获知的信息。
+
+
6.3
+
+ 上述保密信息可以以数据、文字及记载上述内容的书面资料、图书、录音资料、录像资料、光盘、软件、网页、客户端等有形媒介体现,也可通过口头等形式体现。
+
+
6.4
+ 任何一方在提供保密信息时,如以书面形式提供,应注明‘保密’等相关字样;如以口头或可视形式透露,应在披露前明示接受方为保密信息。
+
6.5
+
+ 除另有约定外,未经披露方书面同意,须将保密信息严格保密,并不得直接或间接导致、准许或容许向任何第三方披露、公布、转移、挪用或泄露保密信息;接受方均不向第三方及其不必要知悉的员工披露保密信息。
+
+
6.6
+
+ 除另有约定外,承担保密义务的范围不包括:(1)由乙方提供给数据源方的;(2)提供给乙方关联公司的;(3)将经适当汇总、编辑、修改、整理的保密信息在必要与合理范围内提供给律师和会计师及其他专业服务提供者;(4)按照法律、法规、监管、有管辖权的法院要求须提供的信息,但在不禁止的情况下应立即向保密信息提供方予以通报。
+
+
6.7
+ 双方确认除非保密信息依法公开,保密义务自本合同签订时开始持续有效;甲方是否继续使用乙方的服务,不影响保密义务的承担。
+
+
6.8
+
+ 双方均应当遵守法律法规关于信息安全的管理规定,并采取有效措施保障信息安全包括但不限于保障计算机系统及其相关配套设备、设施(含网络)、运行环境、信息系统功能的安全运行等。
+
+
+
七、
+ 反商业贿赂
+
7.1
+ 双方都清楚并愿意严格遵守反商业贿赂的法律规定,任何形式的贿赂和贪渎行为都将触犯法律,并将受到不利后果。
+
7.2
+
+ 双方均不得向对方或对方经办人或其他相关人员索要、收受、提供给予本合同约定外的任何利益,包括但不限于明扣、暗扣、现金、购物卡、实物、有价证券旅游或其他非物质利益等,但如该等利益属于行业惯例或通常礼仪做法的除外。
+
+
本款“相关人员”是指双方经办人以外的与本合同有直接或间接利益关系的人员,如经办人的亲友等。
+
+
+
八、
+ 违约责任
+
8.1
+
+ 除非另有约定,任何一方未履行本合同或违反约定且未及时改正或采取补救措施的,违约方应向守约方按照已发生合同金额的 30 %向守约方承担违约责任,并赔偿守约方因此受到的直接经济损失(包括调查、仲裁、诉讼、律师等合理费用)。
+
8.2
+
+ 如因甲方原因导致本合同终止的,其无权要求乙方退回已收取而未使用的服务费;若一方因对方或其它非己方原因未能履行本合同下的义务,一方无需赔偿对方承受的损失。
+
+
8.3
+ 一方未行使、迟延行使或部分行使其权利,并不意味该权利被放弃;某一权利不行使并不意味着其它权利被放弃。
+
+
九、
+ 免责事由
+
除特别指明外,一方无须就下列情形承担责任:
+
9.1
+
+ 不可抗力。不可抗力是指合同双方当事人不能预见、不能避免并不能克服的客观情况,包括但不限于:战争、骚乱、恐怖主义、洪水、地震、台风、国家公布的疫情等事件。
+
+
9.2
+
+ 因法律、法规、规章、规定、指引、通知、政策、命令及其他规范性文件或政府行为原因导致本合同不能履行的,适用关于不可抗力的规定。
+
9.3
+ 乙方为改善服务质量或数据源方对系统进行调整、升级、扩容等措施而导致服务中断、延时等情况。
+
9.4
+ 因网络、设备、黑客攻击、计算机病毒侵入或发作、通信或电力故障等不可预测因素造成不能提供服务的情形。
+
+
十、
+ 争议解决与法律适用
+
10.1
+ 因履行本合同而发生的一切争议,甲乙双方应协商解决。协商不成的,任何一方均有权向乙方所在地有管辖权法院提起诉讼。
+
十一、
+ 通知与送达
+
11.1
+
+ 本合同项下的通知应以电子邮件、快递、传真、专人递送按合同签署页所列示联系方式发出,除非任何一方已书面通知对方变更联系方式并经对方确认。
+
11.2
+
+ 书面通知的形式包括在网站公告、电子邮件、站内信、微信、手机短信和传真等电子方式及纸质文件。通知在下列日期视为送达被通知方:如以电子邮件发送,显示成功发送确认时,或发送后第一个工作日内未被退回;如是以快递发送,以交邮后第五个工作日;如以传真发送,于发件人传真机记录传输确认时;如以专人递送,被通知方签收日。
+
+
+
十二、
+ 其他
+
12.1
+
+ 本合同附件作为本合同的组成部分,与本合同具有同等的法律效力;未尽事宜经双方协商后签订补充合同,补充合同与本合同条款如有冲突,以补充合同为准。
+
+
12.2
+ 本合同终止日与服务有效期终止日相同,在合同期限届满前由双方友好协商是否续约。
+
12.3
+
+ 本合同终止不影响合同中有关授权、付款、保密、知识产权、反商业贿赂、违约责任、争议解决与法律适用等可以独立存在的条款的效力,一方未履行完毕的义务仍需继续履行。
+
+
12.4
+ 本合同自甲方支付/充值费用之日 计算服务期限 ,合同期限为12个月。
+
本协议通过点击同意/勾选的方式签署,自签署之日生效。
+
+
本协议于 {{ effectiveDate }}生效。
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/AgentVip.vue b/src/views/AgentVip.vue
new file mode 100644
index 0000000..357ad38
--- /dev/null
+++ b/src/views/AgentVip.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
+ 申请VIP代理
+
+
+ 联系客服
+
+
+
+
+
+
+
+
diff --git a/src/views/AgentVipApply.vue b/src/views/AgentVipApply.vue
new file mode 100644
index 0000000..e9b3cf5
--- /dev/null
+++ b/src/views/AgentVipApply.vue
@@ -0,0 +1,907 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 六大超值权益
+
+
+
+
+
+
+
+ 1
+ 下级贡献收益
+
+
+ 下级完全收益您来定,涨多少赚多少,一单最高收益10元
+
+
+
+
+
+
+ 2
+ 下级提现收益
+
+
+ 下级定价标准由您定,超过标准部分收益更丰厚,一单最高多赚10元
+
+
+
+
+
+
+ 3
+ 转换高额奖励
+
+
+ 下级成为VIP、SVIP,高额奖励立马发放,399元
+
+
+
+
+
+
+ 4
+ 下级提现奖励
+
+
下级成为SVIP,每次提现都奖励1%,坐享被动收入
+
+
+
+
+
+ 5
+ 月度现金奖励
+
+
+ 下级每月活跃达100名额外奖励50元 ,新增15名活跃下级再得50元
+
+
+
+
+
+
+ 6
+ 平台专项扶持
+
+
一对一专属客服服务,为合作伙伴提供全方位成长赋能
+
+
+
+
+
+
+
+
+
+ {{ selectedType === 'vip' ? 'VIP' : 'SVIP' }}代理权益对比
+
+
+
+
+
+
+
+ 权益项目
+ 普通代理
+
+ VIP代理
+
+
+ SVIP代理
+
+
+
+
+
+ 会员权益
+ 普通代理 免费
+
+ {{ vipConfig.price }}{{ vipConfig.priceUnit }}
+
+
+ {{ vipConfig.svipPrice }}{{ vipConfig.priceUnit }}
+
+
+
+ 下级贡献收益
+ 1元/单
+
+ {{ vipConfig.vipCommission }}元/单
+
+
+ {{ vipConfig.svipCommission }}元/单
+
+
+
+ 自定义设置下级成本
+ ❌
+
+ ✓
+
+
+ ✓
+
+
+
+ 下级价格浮动收益
+ ❌
+
+ 最高{{ vipConfig.vipFloatingRate }}%
+
+
+ 最高{{ vipConfig.svipFloatingRate }}%
+
+
+
+ 下级提现奖励
+ ❌
+
+ ❌
+
+
+ {{ vipConfig.withdrawRatio }}%
+
+
+
+ 下级活跃奖励
+ ❌
+
+ {{ vipConfig.monthlyRewardForTeam }}元/月
+
+
+ {{ vipConfig.monthlyRewardForTeam }}元/月
+
+
+
+ 新增活跃奖励
+ ❌
+
+ {{ vipConfig.monthlyRewardForNewTeam }}元/月
+
+
+ {{ vipConfig.monthlyRewardForNewTeam }}元/月
+
+
+
+ 下级转化奖励
+ ❌
+
+ {{ vipConfig.vipConversionBonus }}元*10个
+
+
+ {{ vipConfig.svipConversionBonus }}元*10个
+
+
+
+ 提现次数额度
+ 800元/次
+
+ {{ vipConfig.vipWithdrawalLimit }}元/次
+
+
+ {{ vipConfig.svipWithdrawalLimit }}元/次
+
+
+
+ 提现次数
+ 1次/日
+
+ 1次/日
+
+
+ 2次/日
+
+
+
+
+
+
+
+
+
+
+
+
+ 收益预估对比
+
+
+
+
+
+
+
+ VIP与SVIP代理收益对比
+
+
+
+
VIP月预计收益
+
{{ revenueData.vipMonthly }}元
+
年收益:{{ revenueData.vipYearly }}元
+
+
+
SVIP月预计收益
+
{{ revenueData.svipMonthly }}元
+
年收益:{{ revenueData.svipYearly }}元
+
+
+
+ 选择SVIP,相比VIP月增收益:{{ revenueData.monthlyDifference }}元
+
+
+
+
+
+
+
+
+ 收益来源
+
+ VIP代理
+
+
+ SVIP代理
+
+
+
+
+
+ 推广收益(月)
+
+ 300单×50元=15,000元
+
+
+ 300单×50元=15,000元
+
+
+
+ 下级贡献收益(月)
+
+ 300单×{{ vipConfig.vipCommission }}元=360元
+
+
+ 300单×{{ vipConfig.svipCommission }}元=450元
+
+
+
+ 下级价格浮动收益(月)
+
+ 100单×100元×{{ vipConfig.vipFloatingRate }}%=500元
+
+
+ 200单×100元×{{ vipConfig.svipFloatingRate }}%=2,000元
+
+
+
+ 下级提现奖励(月)
+
+ -
+
+
+ {{ revenueData.withdrawReward }}元
+
+
+
+ 下级活跃奖励(月)
+
+ {{ vipConfig.monthlyRewardForTeam }}元
+
+
+ {{ vipConfig.monthlyRewardForTeam }}元
+
+
+
+ 新增活跃奖励(月)
+
+ {{ vipConfig.monthlyRewardForNewTeam }}元
+
+
+ {{ vipConfig.monthlyRewardForNewTeam }}元
+
+
+
+ 下级转化奖励(月)
+
+ {{ vipConfig.vipConversionBonus }}元×2个=598元
+
+
+ {{ vipConfig.svipConversionBonus }}元×2个=798元
+
+
+
+ 额外业务收益(月)
+
+ 约3,000元
+
+
+ 约6,000元
+
+
+
+ 月计收益
+
+ {{ revenueData.vipMonthly }}元
+
+
+ {{ revenueData.svipMonthly }}元
+
+
+
+ 年计收益
+
+ {{ revenueData.vipYearly }}元
+
+
+ {{ revenueData.svipYearly }}元
+
+
+
+
+
+
+
+
+
投资收益分析
+
+
+
+
+
VIP方案
+
+
投资{{ vipConfig.price }}元
+
月收益{{ revenueData.vipMonthly }}元
+
+
+
+
SVIP方案
+
+
投资{{ vipConfig.svipPrice }}元
+
月收益{{ revenueData.svipMonthly }}元
+
+
+
+
+
+
+
+
SVIP升级优势分析
+
+
+
额外投资
+
{{ revenueData.priceDifference }}元
+
+
+
+
每月额外收益
+
{{ revenueData.monthlyDifference }}元
+
+
+ →
+
+
+
投资回收时间
+
{{ revenueData.recoverDays }}天
+
+
+
+ 额外投资{{ revenueData.priceDifference }}元,年多赚{{
+ revenueData.yearlyDifference }}元
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ buttonText }}
+
+
+
+
+
+
+ 联系客服咨询
+
+
+
+
最终解释权归海南省学宇思网络科技有限公司所有
+
+
+
+
+
+
+
+
+
diff --git a/src/views/AgentVipConfig.vue b/src/views/AgentVipConfig.vue
new file mode 100644
index 0000000..0c93cc7
--- /dev/null
+++ b/src/views/AgentVipConfig.vue
@@ -0,0 +1,538 @@
+
+
+
+
+
+
+ 请选择报告类型并设置定价策略,助您实现精准定价
+
+
+
+
+
+
+ 📝 选择报告
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ selectedReportText }}配置
+
+
+
+
+
+
+ 报告基础配置信息
+
+
+
+ 基础成本价:{{
+ productConfigData.cost_price
+ }}
+ 元
+
+
+
+ 最高设定金额上限:{{
+ productConfigData.price_range_max
+ }}
+ 元
+
+
+ 最高设定比例上限:{{
+ priceRatioMax
+ }}
+ %
+
+
+
+
+
+
+
+ 成本策略配置
+
+
+
+
+
+ 🚀 加价金额
+
+
+ 元
+
+
+
+ 提示:最大加价金额为{{ priceIncreaseAmountMax }}元
+ 说明:加价金额是在基础成本价上增加的额外费用,决定下级报告的最低定价,您将获得所有输入的金额利润。
+
+
+
+
+
+ 定价策略配置
+
+
+
+
{
+ validateDecimal('price_range_from');
+ validateRange();
+ }
+ " class="custom-field" :class="{ 'van-field--error': rangeError }">
+
+ 💰 最低金额
+
+
+ 元
+
+
+
+ 提示:最低金额不能低于(基础最低
+ {{ productConfigData?.price_range_min || 0 }}元 +
+ 加价金额)
+ 说明:设定的最低金额为定价区间的起始值,若下级设定的报告金额在区间内,则区间内部分将按比例获得收益。
+
+
+
+
{
+ validateDecimal('price_range_to');
+ validateRange();
+ }
+ " class="custom-field" :class="{ 'van-field--error': rangeError }">
+
+ 💰 最高金额
+
+
+ 元
+
+
+
+ 提示:最高金额不能超过上限({{
+ productConfigData?.price_range_max || 0
+ }}元)和大于最低金额({{ priceIncreaseMax }}元)
+ 说明:设定的最高金额为定价区间的结束值,若下级设定的报告金额在区间内,则区间内部分将按比例获得收益。
+
+
+
+
{
+ validateRatio();
+ }
+ " class="custom-field" :class="{ 'van-field--error': ratioError }">
+
+ 📈 收取比例
+
+
+ %
+
+
+
+ 提示:最大收取比例为{{ priceRatioMax }}%
+ 说明:收取比例表示对定价区间内(即报告金额超过最低金额,小于最高金额的部分)的金额,按此比例进行利润分成。
+
+
+
+
+
+
+ 保存当前报告配置
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Authorization.vue b/src/views/Authorization.vue
new file mode 100644
index 0000000..8c90e6f
--- /dev/null
+++ b/src/views/Authorization.vue
@@ -0,0 +1,198 @@
+
+
+
+
海口龙华海宇网络技术服务工作室:
+
+
+ 本人________拟向贵司申请大数据分析报告查询业务,贵司需要了解本人相关状况,用于查询大数据分析报告,因此本人同意向贵司提供本人的姓名和手机号等个人信息,并同意贵司向第三方传送上述信息。第三方将使用上述信息核实信息真实情况,查询信用记录,并生成报告。
+
+
授权内容如下:
+
+
+ 贵司向依法成立的第三方服务商根据本人提交的信息进行核实,并有权通过前述第三方服务机构查询、使用本人的身份信息、设备信息、运营商信息等,查询本人信息(包括但不限于学历、婚姻、资产状况及对信息主体产生负面影响的不良信息),出具相关报告。
+
+
+ 依法成立的第三方服务商查询或核实、搜集、保存、处理、共享、使用(含合法业务应用)本人相关数据,且不再另行告知本人,但法律、法规、监管政策禁止的除外。
+
+
+
+ 本人授权有效期为自授权之日起
+ 1个月。本授权为不可撤销授权,但法律法规另有规定的除外。
+
+
+
用户声明与承诺:
+
+
+ 本人在授权签署前,已通过实名认证及动态验证码验证(或其他身份验证手段),确认本授权行为为本人真实意思表示,平台已履行身份验证义务。
+
+
+ 本人在此声明已充分理解上述授权条款含义,知晓并自愿承担因授权数据使用可能带来的后果,包括但不限于影响个人信用评分、生活行为等。本人确认授权范围内的相关信息由本人提供并真实有效。
+
+
+ 若用户冒名签署或提供虚假信息,由用户自行承担全部法律责任,平台不承担任何后果。
+
+
+
特别提示:
+
+
+ 本产品所有数据均来自第三方。可能部分数据未公开、数据更新延迟或信息受到限制,贵司不对数据的准确性、真实性、完整性做任何承诺。用户需根据实际情况,结合报告内容自行判断与决策。
+
+
+ 本产品仅供用户本人查询或被授权查询。除非用户取得合法授权,用户不得利用本产品查询他人信息。用户因未获得合法授权而擅自查询他人信息所产生的任何后果,由用户自行承担责任。
+
+
+ 本授权书涉及对本人敏感信息(包括但不限于婚姻状态、资产状况等)的查询与使用。本人已充分知晓相关信息的敏感性,并明确同意贵司及其合作方依据授权范围使用相关信息。
+
+
+ 平台声明:本授权书涉及的信息核实及查询结果由第三方服务商提供,平台不对数据的准确性、完整性、实时性承担责任;用户根据报告所作决策的风险由用户自行承担,平台对此不承担法律责任。
+
+
+ 本授权书中涉及的数据查询和报告生成由依法成立的第三方服务商提供。若因第三方行为导致数据错误或损失,用户应向第三方主张权利,平台不承担相关责任。
+
+
+
附加说明:
+
+
+ 本人在授权的相关数据将依据法律法规及贵司内部数据管理规范妥善存储,存储期限为法律要求的最短必要时间。超过存储期限或在数据使用目的达成后,贵司将对相关数据进行销毁或匿名化处理。
+
+
+ 本人有权随时撤回本授权书中的授权,但撤回前的授权行为及其法律后果仍具有法律效力。若需撤回授权,本人可通过贵司官方渠道提交书面申请,贵司将在收到申请后依法停止对本人数据的使用。
+
+
+ 你通过“幸福查”,自愿支付相应费用,用于购买海口龙华海宇网络技术服务工作室的大数据报告产品。如若对产品内容存在异议,可通过邮箱admin@iieeii.com或APP“联系客服”按钮进行反馈,贵司将在收到异议之日起20日内进行核查和处理,并将结果答复。
+
+
+ 你向海口龙华海宇网络技术服务工作室的支付方式为:海口龙华海宇网络技术服务工作室及其经官方授权的相关企业的支付宝账户。
+
+
+
争议解决机制:
+
+
+ 若因本授权书引发争议,双方应友好协商解决;协商不成的,双方同意将争议提交至授权书签署地(海南省)有管辖权的人民法院解决。
+
+
+
签署方式的法律效力声明:
+
+
+ 本授权书通过用户在线勾选、电子签名或其他网络签署方式完成,与手写签名具有同等法律效力。平台已通过技术手段保存签署过程的完整记录,作为用户真实意思表示的证据。
+
+
+
本授权书于 {{ signTime }}生效。
+
+
+
+
+
diff --git a/src/views/Complaint.vue b/src/views/Complaint.vue
new file mode 100644
index 0000000..6c51d0c
--- /dev/null
+++ b/src/views/Complaint.vue
@@ -0,0 +1,47 @@
+
+
+
投诉中心
+
如果您有任何问题,请联系我们。
+
请点击右下角按钮联系相关人员
+
+
+
+
+
+
diff --git a/src/views/Example.vue b/src/views/Example.vue
new file mode 100644
index 0000000..cb862e4
--- /dev/null
+++ b/src/views/Example.vue
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
diff --git a/src/views/Help.vue b/src/views/Help.vue
new file mode 100644
index 0000000..3867249
--- /dev/null
+++ b/src/views/Help.vue
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+ 引导指南
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/HelpDetail.vue b/src/views/HelpDetail.vue
new file mode 100644
index 0000000..420aed2
--- /dev/null
+++ b/src/views/HelpDetail.vue
@@ -0,0 +1,80 @@
+
+
+
{{ currentHelp.title }}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/HelpGuide.vue b/src/views/HelpGuide.vue
new file mode 100644
index 0000000..d95b8cb
--- /dev/null
+++ b/src/views/HelpGuide.vue
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/HistoryQuery.vue b/src/views/HistoryQuery.vue
new file mode 100644
index 0000000..87ff478
--- /dev/null
+++ b/src/views/HistoryQuery.vue
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+
+
{{ item.product_name }}
+
{{ item.create_time }}
+
+
+ {{ stateText(item.query_state) }}
+
+
+
+
+
+
+
+
diff --git a/src/views/Inquire.vue b/src/views/Inquire.vue
new file mode 100644
index 0000000..8f427dd
--- /dev/null
+++ b/src/views/Inquire.vue
@@ -0,0 +1,49 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/Invitation.vue b/src/views/Invitation.vue
new file mode 100644
index 0000000..58dd280
--- /dev/null
+++ b/src/views/Invitation.vue
@@ -0,0 +1,44 @@
+
+
+
+
+ 立即邀请好友
+
+
+
+
+
+
+
diff --git a/src/views/InvitationAgentApply.vue b/src/views/InvitationAgentApply.vue
new file mode 100644
index 0000000..b8e09fe
--- /dev/null
+++ b/src/views/InvitationAgentApply.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{
+ isSelf ? "立即申请成为代理人" : "邀您注册代理人"
+ }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Login.vue b/src/views/Login.vue
new file mode 100644
index 0000000..661bd8c
--- /dev/null
+++ b/src/views/Login.vue
@@ -0,0 +1,354 @@
+
+
+
+
+
+
+
+
+
+
幸福查
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Maintenance.vue b/src/views/Maintenance.vue
new file mode 100644
index 0000000..e05a71e
--- /dev/null
+++ b/src/views/Maintenance.vue
@@ -0,0 +1,82 @@
+
+
+
+
服务暂停通知
+
+
因政策要求,接上级主管部门通知,我司现暂停婚姻报告服务,恢复时间估计在元旦以后,由此给您带来的不便,我们深表歉意。
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Me.vue b/src/views/Me.vue
new file mode 100644
index 0000000..2f90c11
--- /dev/null
+++ b/src/views/Me.vue
@@ -0,0 +1,331 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ levelNames[level] }}
+
+
+
+
+
+ {{
+ !isLoggedIn
+ ? "点击登录"
+ : mobile
+ ? maskName(mobile)
+ : isWeChat
+ ? "微信用户"
+ : "未绑定手机号"
+}}
+
+
+
+
+ 点击绑定手机号码
+
+
+
+ 🎖️ {{ levelText[level] }}
+
+
+
+
+
+
+
+
+
+
+
+
代理报告配置
+
+
+
+
+
+
+
+ 续费代理会员
+ 有效期至 {{ formatExpiryTime(ExpiryTime) }}
+
+
+
+
+
+
+
+
+
我的报告
+
+
+
+
+
+
+
API商店
+
+
+
+
+
+
+
企业风控预警
+
+
+
+
+
+
+
商务合作
+
+
+
+
+
+
+
用户协议
+
+
+
+
+
+
+
隐私政策
+
+
+
+
+
+
+
联系客服
+
+
+
+
+
+
+
退出登录
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/NotFound.vue b/src/views/NotFound.vue
new file mode 100644
index 0000000..2bc6ca6
--- /dev/null
+++ b/src/views/NotFound.vue
@@ -0,0 +1,186 @@
+
+
+
+
404
+
页面未找到
+
抱歉,您访问的页面不存在或已被移除。
+
+
+ 返回首页
+ 帮助中心
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/PaymentResult.vue b/src/views/PaymentResult.vue
new file mode 100644
index 0000000..359cbc6
--- /dev/null
+++ b/src/views/PaymentResult.vue
@@ -0,0 +1,529 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 支付成功
+
+
+
+
+ 订单编号
+ {{ orderNo }}
+
+
+ 支付类型
+ {{
+ paymentType === "agent_vip"
+ ? "代理会员"
+ : "查询服务"
+ }}
+
+
+
恭喜你成为高级代理会员,享受更多权益
+
+
+
+ {{
+ paymentType === "agent_vip"
+ ? "查看会员权益"
+ : "查看查询结果"
+ }}
+
+
+
+
+
+
+
+
+
+
+ {{ paymentType === "query" ? "已处理" : "订单已退款" }}
+
+
+
+
+ 订单编号
+ {{ orderNo }}
+
+
+ 支付类型
+ {{
+ paymentType === "agent_vip"
+ ? "代理会员"
+ : "查询服务"
+ }}
+
+
+ 订单状态
+ 已退款
+
+
+
+
+
+ 查看查询结果
+
+
+
+
+
+ 您的代理会员费用已退款,如有疑问请联系客服。
+
+
+
+
+
+ 联系客服
+
+
+
+
+
+
+
+
+
+ {{ statusText }}
+
+
+
+
+
正在等待支付结果,请稍候...
+
+ 已等待
+ {{
+ Math.floor(
+ (pollingCount * getPollingInterval) / 1000
+ )
+ }}
+ 秒
+
+
+
+
+
+ 订单编号
+ {{ orderNo }}
+
+
+ 支付类型
+ {{
+ paymentType === "agent_vip"
+ ? "代理会员"
+ : "查询服务"
+ }}
+
+
+ 订单状态
+ {{
+ statusText
+ }}
+
+
+
+
+
+ {{ statusMessage }}
+
+
+
+
+
+ 返回首页
+
+
+ 联系客服
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/PrivacyPolicy.vue b/src/views/PrivacyPolicy.vue
new file mode 100644
index 0000000..334445f
--- /dev/null
+++ b/src/views/PrivacyPolicy.vue
@@ -0,0 +1,458 @@
+
+
+
+
+
+
隐私政策
+
+
+
+
+
+
+ 您的信任对我们非常重要
+
+
+ 我们深知个人信息对您的重要性,我们将按法律法规要求,采取相应安全保护措施,尽力保护您的个人信息安全可控。
+ 有鉴于此,海口龙华海宇网络技术服务工作室(以下简称“我们”或“幸福查”)作为幸福查产品及服务的提供者制定本《隐私政策》(下称“本政策”)并提醒您:
+
+
+ 本政策适用于全部幸福查产品及服务,如我们关联公司的产品或服务中使用了幸福查提供的产品或服务但未设独立的隐私政策的,
+ 该部分幸福查提供的产品或服务同样适用于本政策。
+
+
+ 需要特别说明的是,本政策不适用于其他第三方通过网页或幸福查客户端直接向您提供的服务(统称“第三方服务”),
+ 您向该第三方服务提供者提供的信息不适用于本政策,您在选择使用第三方服务前应充分了解第三方服务的产品功能及隐私保护政策,再选择是否开通功能。
+
+
+ 在使用幸福查产品或服务前,请您务必仔细阅读并透彻理解本政策,在确认充分理解使用相关产品或服务。
+ 一旦您开始使用幸福查产品或服务,即表示您已充分理解并同意本政策。
+
+
+
+
第一部分 定义
+
+
+
+
+ 1、幸福查服务提供者:是指研发并提供幸福查产品和服务法律主体,海口龙华海宇网络技术服务工作室(下称“我们”或“幸福查”)
+
+
+ 2、幸福查用户:是指注册幸福查账户的用户,以下称“您”。
+
+
+ 3、个人信息:指以电子或者其他方式记录的能够单独或者与其他信息结合识别特定自然人身份或者反映特定自然人活动情况的各种信息。
+
+
+ 4、个人信息删除:指在实现日常业务功能所涉及的系统中去除个人信息的行为,使其保持不可被检索、访问的状态,具体指产品内的账号注销功能。
+
+
+ 5、个人信息匿名化:通过对个人信息的加密技术处理,使得个人信息主体无法被识别,且处理后的信息不能被复原的过程。
+
+
+
+
第二部分 隐私政策
+
+
+
+ 一、我们如何收集您的个人信息
+
+
+ 为了向您及幸福查企业用户提供幸福查服务,维护幸福查服务的正常运行,改进及优化我们的服务体验并保障您的账号安全,
+ 我们会出于本政策下述目的及方式收集您在注册、使用幸福查服务时主动提供、授权提供或基于您使用幸福查服务时产生的信息:
+
+
+
+
+
+ (一)注册幸福查用户信息
+
+
+ 为注册成为幸福查用户,以便我们为您提供幸福查服务,诸如数据查询、视频查看等功能,
+ 您需要提供您的手机号码及短信验证码以注册并创建幸福查账号,否则您将不能使用幸福查服务。
+
+
+ 如果您仅需使用浏览、搜索幸福查网页展示的产品、功能及服务介绍,您不需要注册成为幸福查用户并提供上述信息。
+
+
+ 如您的账号是注册在企业下的关联账号,当您所在企业用户注销幸福查账户时,我们将会匿名化处理或删除您在该组织的相关个人信息,
+ 但您作为幸福查个人用户的个人信息仍将保留,除非您主动注销幸福查账户。
+
+
+ 在经过用户授权同意的情况下,我司需要获取用户的手机号码以便开展相应业务。
+
+
+
+
+
+
+ (二)使用幸福查服务过程中收集信息
+
+
+ 当您在使用幸福查服务过程中,为向您提供您需求的幸福查软件服务、交互展示、搜索结果、识别账号异常状态,维护幸福查服务的正常运行,改进及优化您对幸福查服务的体验并保障您的账号安全,包括您使用幸福查服务以及使用方式的信息,并将这些信息进行关联:
+
+
+
1、日志信息:
+
+ 当您使用我们的网站或客户端提供的产品或服务时,我们会自动收集您对我们服务的详细使用情况,作为有关网络日志保存。例如您的搜索查询内容、IP地址、使用的语言、访问日期和时间、您访问的网页记录、日志信息。
+
+
+ 请注意,单独的设备信息、日志信息是无法识别特定自然人身份的信息。如果我们将这类非个人信息与其他信息结合用于识别特定自然人身份,或者将其与个人信息结合使用,则在结合使用期间,这类非个人信息将有可能被视为个人信息,除取得您授权或法律法规另有规定外,我们会将该类个人信息做匿名化、去标识化处理。
+
+
+
+
2、您向我们提供的信息:
+
+ 在服务使用过程中,特别是在申请提现、实名认证或佣金结算时,您需要提供包括但不限于姓名、身份证号、银行卡号、手机号、税务身份信息等个人资料。
+ 您同意我们为履行合同义务、税务申报、身份核验、财务结算等必要目的,收集、使用、存储并在必要范围内共享该等信息。
+ 在进行税务代扣代缴、结算服务时,我们有权将必要信息提供给依法合作的第三方税务服务商、结算服务商,前提是该第三方承担同等信息保护义务。
+
+
+ 您可以对全能查产品及服务的体验问题反馈,帮助我们更好地了解您使用我们产品或服务的体验和需求,改善我们产品或服务,为此我们会记录您的联系信息、反馈的问题或建议,以便我们进一步联系您反馈您我们的处理意见。
+ 为向您提供更好的服务,例如在不同的服务端或设备上提供体验一致的服务和您需求的客服接待,了解产品适配性,识别账号异常状态。
+
+
+
+
3、为您提供安全保障收集信息:
+
+ 为预防、发现、调查欺诈、侵权、危害安全、非法或违反与我们或与我们关联公司的协议、政策或规则的行为,我们可能收集或整合您的用户个人信息、服务使用信息、设备信息、日志信息以及我们关联公司、合作伙伴取得您授权或依据法律共享的信息。
+ 您理解并同意,我们向您提供的功能和服务场景是不断迭代升级的,如我们未在上述场景中明示您需要收集的个人信息,我们将会通过页面提示、交互设计等方式另行向您明示信息收集的内容、范围和目的并征得您同意。
+
+
+ 如我们停止运营幸福查产品或服务,我们将及时停止继续收集您个人信息的活动,将停止运营的通知以公告或短信的形式通知您,并依照所适用的法律对所持有的您的个人信息进行删除或匿名化处理。
+
+
+
+
4、手机号码收集及其用途:
+
+ 在您使用幸福查服务的过程中,我们可能会要求您提供手机号码。我们收集您的手机号码,主要是为了向您发送重要的通知、服务更新、账户安全信息、促销活动、服务相关的短信等。为了确保您能及时获得关于您账号安全、产品更新和优化、系统维护等信息,我们可能会向您发送有关服务变更、功能更新、版本升级等通知,确保您能够持续享受我们的产品和服务。
+
+
+ 此外,您的手机号码还可能用于为您提供个性化的短信推广内容,帮助您了解我们新推出的服务、产品或活动优惠。我们承诺,不会在未经您明确同意的情况下,将您的手机号码用于任何与服务相关以外的用途,且不会将您的信息出售或租赁给第三方。为了保障您的权益,您可以随时通过设置页面或联系客户服务停止接收短信通知或推广信息。如果您选择取消订阅短信通知或推广,您仍将继续收到与账户安全、系统通知等相关的重要信息。
+
+
+ 我们会采取严格的措施保护您的手机号码不被滥用,包括采用加密存储、定期审查访问权限等技术和管理手段,以确保您的个人信息安全。同时,我们也会根据适用的法律法规,在您停止使用我们的服务或终止您的账户时,删除或匿名化处理您的手机号码及其他相关信息。
+
+
+
+
+
+
+ 二、我们如何使用信息
+
+
+ 收集您的信息是为了向您提供服务及提升服务质量,为了实现这一目的,我们会把您的信息用于下列用途:
+
+
+
+ (1)向您提供您使用的幸福查产品或服务,并维护、改进、优化这些服务及服务体验;
+
+
+ (2)为预防、发现、调查欺诈、侵权、危害安全、非法或违反与我们或与我们关联公司的协议、政策或规则的行为,保护您、其他用户或公众以及我们或我们关联公司的合法权益,我们会使用或整合您的个人信息、服务使用信息、设备信息、日志信息以及我们关联公司、合作伙伴取得您授权或依据法律共享的信息,来综合判断您的操作风险、检测及防范安全事件,并依法采取必要的记录、审计、分析、处置措施;
+
+
(3)经您许可的其他用途。
+
+
+
+
+
+
+ 三、我们如何使用Cookie 和同类技术
+
+
+ 为使您获得更轻松的访问体验,您使用幸福查产品或服务时,我们可能会通过采用各种技术收集和存储您访问幸福查服务的相关数据,
+ 在您访问或再次访问幸福查服务时,我们能识别您的身份,并通过分析数据为您提供更好更多的服务。
+
+
+ 包括使用小型数据文件识别您的身份,这么做是为了解您的使用习惯,帮您省去重复输入账户信息的步骤,或者帮助判断您的账户安全。
+ 这些数据文件可能是Cookie、Flash
+ Cookie,或您的浏览器或关联应用程序提供的其他本地存储(统称“Cookie”)。
+
+
+ 请您理解,我们的某些服务只能通过使用Cookie才可得到实现。如果您的浏览器或浏览器附加服务允许,
+ 您可以修改对Cookie的接受程度或者拒绝幸福查的Cookie,但拒绝幸福查的Cookie在某些情况下您可能无法使用依赖于cookies的幸福查服务的部分功能。
+
+
+
+
+
+
+ 四、我们如何共享、转让、公开披露您的信息
+
+
+
+
(一) 共享
+
+ 我们不会和其他公司、组织和个人共享您的个人信息,但以下情况除外:
+
+
+
+ (1)在获取您同意的情况下共享:获得您的明确同意后,我们会与其他方共享您的个人信息。
+
+
+ (2)在法定情形下的共享:我们可能会根据法律法规规定、诉讼争议解决需要,或按行政、司法机关依法提出的要求,对外共享您的个人信息。
+
+
+ (3)只有透露您的资料,才能提供您所要求的第三方产品和服务,在您通过幸福查客户端购买查询服务的,您同意幸福查向实际产品提供者提供您的身份信息,包括真实姓名和身份证号等。为了提升实人认证的准确性,您同意第三方公司仅限于个人信息进行验证相关服务,将您提供的个人信息与法律法规允许的机构或政府机关授权的机构的数据进行校验。
+
+
+ (4)在您被他人投诉侵犯知识产权或其他合法权利时,需要向投诉人披露您的必要资料,以便进行投诉处理的;
+
+
+ (5)幸福查服务可能含有其他网站的链接。除法律另有规定外,幸福查对其他网站的隐私保护措施不负相应法律责任。我们可能在需要的时候增加商业伙伴,但是提供给他们的将仅是综合信息,我们将不会公开您的个人信息。
+
+
+
+
+
(二) 转让
+
+ 我们不会将您的个人信息转让给任何公司、组织和个人,但以下情况除外:
+
+
+
+ (1)在获取明确同意的情况下转让:获得您的明确同意后,我们会向其他方转让您的个人信息。
+
+
+ (2)在幸福查发生合并、收购或破产清算情形,或其他涉及合并、收购或破产清算情形时,如涉及到个人信息转让,我们会要求新的持有您个人信息的公司、组织继续受本政策的约束,否则我们将要求该公司、组织和个人重新向您征求授权同意。
+
+
+
+
+
(三) 公开披露
+
+ 我们仅会在以下情况下,公开披露您的个人信息:
+
+
+
+ (1)获得您明确同意或基于您的主动选择,我们可能会公开披露您的个人信息;
+
+
+ (2)如果我们确定您出现违反法律法规或严重违反幸福查相关协议规则的情况,或为保护幸福查及其关联公司用户或公众的人身财产安全免遭侵害,我们可能依据法律法规或幸福查相关协议规则征得您同意的情况下披露关于您的个人信息,包括相关违规行为以及幸福查已对您采取的措施。
+
+
+
+
+
+ (四)
+ 共享、转让、公开披露个人信息时事先征得授权同意的例外
+
+
+ 以下情形中,共享、转让、公开披露您的个人信息无需事先征得您的授权同意:
+
+
+
(1)与国家安全、国防安全有关的;
+
+ (2)与公共安全、公共卫生、重大公共利益有关的;
+
+
+ (3)与犯罪侦查、起诉、审判和判决执行等有关的;
+
+
+ (4)出于维护您或其他个人的生命、财产等重大合法权益但又很难得到本人同意的;
+
+
(5)您自行向社会公众公开的个人信息;
+
+ (6)从合法公开披露的信息中收集个人信息的,如合法的新闻报道、政府信息公开等渠道。
+ 请您注意,根据法律规定,共享、转让经匿名化处理的个人信息,且确保数据接收方无法复原并重新识别个人信息主体的,不属于个人信息的对外共享、转让及公开披露行为,对此类数据的保存及处理将无需另行向您通知并征得您的同意。
+
+
+
+
+
+
+ 五、我们如何保护您的信息
+
+
+ 我们会采取各种预防措施来保护您的个人信息,以保障您的个人信息免遭丢失、盗用和误用,以及被擅自取阅、披露、更改或销毁。
+ 为确保您个人信息的安全,我们有严格的信息安全规定和流程并严格执行上述措施。
+
+
+ 幸福查建立了全方位、多维度的数据安全管理体系,保证整个幸福查各个平台的安全性。
+ 我们会采取合理可行的措施,尽力避免收集无关的个人信息,
+ 并在限于达成本政策所述目的所需的期限以及所适用法律法规所要求的期限内对您的个人信息进行脱敏处理。
+ 在您使用查询过程中所涉及的用户姓名、身份证号、手机号/账号密码信息均采用的是AES加密方式,
+ 所有二次输出信息均经过脱敏处理,数据库文件不存储用户明文数据。
+
+
+ 在不幸发生个人信息安全事件后,我们将按照法律法规的要求(最迟不迟于30个自然日内)向您告知:
+ 安全事件的基本情况和可能的影响、我们已采取或将要采取的处置措施、您可自主防范和降低风险的建议、对您的补救措施等。
+ 事件相关情况我们将以邮件、信函、电话通知等方式告知您,
+ 难以逐一告知个人信息主体时,我们会采取合理、有效的方式发布公告。
+ 同时,我们还将按照监管部门要求,上报个人信息安全事件的处置情况。
+
+
+ 互联网环境并非百分之百安全,尽管我们有这些安全措施,但仍然无法完全避免互联网中存在的各种风险,我们将尽力确保您的信息的安全性。
+
+
+
+
+
+
+ 六、未成年人保护
+
+
+ 我们重视未成年人的信息保护,如您为未成年人的,建议您请您的父母或监护人仔细阅读本隐私权政策,
+ 并在征得您的父母或监护人同意的前提下使用我们的服务或向我们提供信息。
+
+
+ 对于经父母或监护人同意使用我们的产品或服务而收集未成年人个人信息的情况,
+ 我们只会在法律法规允许,父母或监护人明确同意或者保护未成年人所必要的情况下使用、共享、转让或披露此信息。
+
+
+ 我们将根据国家相关法律法规及本政策的规定保护未成年人的个人信息。
+
+
+
+
+
+ 七、您的个人信息存储
+
+
+
(一) 存储地区
+
+ 我们将在中华人民共和国境内运营幸福查服务中收集和产生的个人信息存储在中华人民共和国境内。
+ 目前,我们不会将上述信息传输至境外,如果我们向境外传输,我们将会遵循相关国家规定或者征求您的同意。
+
+
+
(二) 存储期限
+
+ 您在使用本平台期间,我们将保存您的个人脱敏加密信息,保存期限将以不超过为您提供服务所必须的期间为原则。
+ 在您终止使用本平台后,除法律法规对于特定信息保留期限另有规定外,我们会对您的信息进行删除或做匿名化处理。
+ 如我们停止运营本平台服务,我们将在合理期限内依照所适用的法律对所持有的您的个人信息进行删除或匿名化处理。
+
+
+
+
+
+
+ 八、您享有的权利及权利行使路径
+
+
+
(一) 访问查询权
+
+ 您对您的幸福查账号内的信息(含个人信息)依法享有访问查询权,包括:
+
+
+
+ 账户信息:
+ 您可以登录手机客户端,通过【我的-点击名字或头像】可以访问您的头像信息、姓名、绑定手机号。
+
+
+ 使用信息:
+ 您可以在幸福查手机客户端相关页面访问、查询您的使用信息,包括订单信息,
+ 可以通过【报告列表-查看详情】进行访问、查看。
+
+
+ 其他信息:
+ 如您在此前述过程中遇到操作问题的或如需获取其他前述无法获知的个人信息内容,
+ 您可通过在线客服或邮箱联系我们,我们将在核实您的身份后在合理期限内向您提供,
+ 但法律法规另有规定的或本政策另有约定的除外。
+
+
+
+
(二) 同意的撤回与变更
+
+ 若您需要更改相关权限的授权(例如:相机、相册、麦克风),您可以通过您的硬件设备进行修改。
+ 您也可以通过注销幸福查账户的方式永久撤回我们继续收集您个人信息的全部授权。
+ 如您在此过程中遇到操作问题的,可以通过本政策“帮助中心”方式联系我们。
+
+
+
(三) 帮助反馈权
+
+ 我们为您提供了多种反馈渠道,具体请见设置—帮助中心。
+
+
+
+ (四) 提前获知产品与/或服务停止运营权
+
+
+ 我们将持续为您提供优质服务,若因特殊原因导致我们的部分或全部产品与/或服务被迫停止运营,
+ 我们将提前在显著位置或通知您,并将停止对您个人信息的收集,
+ 同时在超出法律法规规定的必需且最短期限后,我们将会对所持有的您的个人信息进行删除或匿名化处理。
+
+
+
+
+
+ 九、本政策如何更新
+
+
+ 我们的隐私政策可能变更。
+ 未经您明确同意我们不会限制您按照本隐私政策所应享有的权利。
+ 我们会在幸福查各个平台,包括客户端、相关网页上以首页弹窗形式发布对本隐私政策所做的任何变更,并以交互设计提醒您阅读并完整理解。
+ 对于重大变更,我们还会提供更为显著的通知(可能包括公告通知甚至向您提供弹窗提示)。
+
+
+ 本政策所指的重大变更包括但不限于:
+
+ (1)我们的服务模式发生重大变化。如处理用户信息的目的、用户信息的使用方式等;
+
+
+ (2)我们在控制权、组织架构等方面发生重大变化。如业务调整、破产并购等引起的所有者变更等;
+
+
+ (3)用户信息共享、转让或公开披露的主要对象发生变化;
+
+
+ (4)我们负责处理用户信息安全的责任部门、联络方式及投诉渠道发生变化时;
+
+
+ (5)用户信息安全影响评估报告表明存在高风险时。
+
+
+
+
+
+
+
+ 十、如何联系我们
+
+
+ 如果您对本政策或数据处理有任何疑问、意见或建议,可以通过幸福查产品内的“联系客服”或邮箱
+ admin@iieeii.com
+ 与我们联系。我们将在收到您发送的响应请求或相关信息之日起十五(15)天内回复您。
+
+
+ 您理解并同意,当涉及以下任一情形时,我们无法响应您的请求:
+
(1)与国家安全、国防安全有关的;
+
+ (2)与公共安全、公共卫生、重大公共利益有关的;
+
+
(3)与犯罪侦查、起诉和审判等有关的;
+
+ (4)有充分证据表明您存在主观恶意或滥用权利的;
+
+
+ (5)响应您的请求将导致您或其他个人、组织的合法权益受到严重损害的;
+
+
(6)涉及幸福查或任何第三方主体商业秘密的;
+
(7)法律法规规定的其他情形。
+
+
+ 如果您对我们的回复不满意,特别是您认为我们的个人信息处理行为损害了您的合法权益,
+ 您还可以通过向有管辖权的法院提起诉讼来寻求解决方案。
+
+
+
+
+
+
十一、其他
+
+ (一)本《隐私政策》的解释及争议解决均应适用中华人民共和国大陆地区法律。
+ 与本《隐私政策》相关的任何纠纷,双方应协商友好解决;若不能协商解决,
+ 应将争议提交至海口龙华海宇网络技术服务工作室注册地有管辖权的人民法院解决。
+
+
+ (二)本《隐私政策》的标题仅为方便及阅读而设,并不影响正文其中任何规定的含义或解释。
+
+
+
+
+ 2024年11月19日
+
+
+
+
+
+
+
diff --git a/src/views/Promote.vue b/src/views/Promote.vue
new file mode 100644
index 0000000..12b9b67
--- /dev/null
+++ b/src/views/Promote.vue
@@ -0,0 +1,271 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/PromotionInquire.vue b/src/views/PromotionInquire.vue
new file mode 100644
index 0000000..5843e8f
--- /dev/null
+++ b/src/views/PromotionInquire.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/Report.vue b/src/views/Report.vue
new file mode 100644
index 0000000..1c5bb2a
--- /dev/null
+++ b/src/views/Report.vue
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/ReportShare.vue b/src/views/ReportShare.vue
new file mode 100644
index 0000000..00546bc
--- /dev/null
+++ b/src/views/ReportShare.vue
@@ -0,0 +1,218 @@
+
+
+
+
+
+ 首页
+
+
+
+
+
+
+
+
+
+
+ 分享链接已过期
+
+
+ 该分享链接已超过7天有效期,请重新获取分享链接
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Service.vue b/src/views/Service.vue
new file mode 100644
index 0000000..e69d13a
--- /dev/null
+++ b/src/views/Service.vue
@@ -0,0 +1,58 @@
+
+
+
在线客服
+
如果您有任何问题,请通过在线客服联系我们。
+
请点击右下角按钮联系客服
+
+
+
+
+
+
diff --git a/src/views/SubordinateDetail.vue b/src/views/SubordinateDetail.vue
new file mode 100644
index 0000000..3272c97
--- /dev/null
+++ b/src/views/SubordinateDetail.vue
@@ -0,0 +1,351 @@
+
+
+
+
+
+
+
+
+
+
{{ userInfo.mobile }}
+
+ {{ userInfo.level }}代理
+
+
+
+
成为下级代理时间:{{ formatTime(userInfo.createTime) }}
+
+
+
总推广单量
+
{{ summary.totalOrders }}
+
+
+
总收益
+
¥{{ formatNumber(summary.totalReward) }}
+
+
+
总贡献
+
¥{{ formatNumber(summary.totalContribution) }}
+
+
+
+
+
+
+
贡献统计
+
+
+
+
+
+ {{ item.description }}
+
+
+
{{ item.count }} 次
+
+ ¥{{ formatNumber(item.amount) }}
+
+
+
+
+
+
+
+
+
贡献记录
+
+
+
+
暂无贡献记录
+
+
+
+
+
+
+
{{ getRewardTypeDescription(item.type) }}
+
{{ formatTime(item.create_time) }}
+
+
+
+
+ ¥{{ formatNumber(item.amount) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/SubordinateList.vue b/src/views/SubordinateList.vue
new file mode 100644
index 0000000..e10d353
--- /dev/null
+++ b/src/views/SubordinateList.vue
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
+
+
+
下级总数
+
{{ statistics.totalSubordinates }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ index + 1 }}
+
+
{{ item.mobile }}
+
+ {{ item.level ? item.level : '普通' }}代理
+
+
+
+
+
+
成为下级代理时间:{{ item.create_time }}
+
+
+
+
+
总推广单量
+
{{ item.total_orders }}
+
+
+
总收益
+
¥{{ formatNumber(item.total_earnings) }}
+
+
+
总贡献
+
¥{{ formatNumber(item.total_contribution) }}
+
+
+
+
+
+
+
+ 查看详情
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/UserAgreement.vue b/src/views/UserAgreement.vue
new file mode 100644
index 0000000..8dc4b78
--- /dev/null
+++ b/src/views/UserAgreement.vue
@@ -0,0 +1,274 @@
+
+
+
+
+
+
用户协议
+
+
+
+
+ 本协议是您(以下又称“用户”)在使用本服务时,约定您和海口龙华海宇网络技术服务工作室之间权利义务关系的有效协议。
+
+
+
+ 在您使用本服务前,请您务必仔细阅读本协议,特别是隐私权保护及授权条款、免除或者限制海口龙华海宇网络技术服务工作室责任的条款、争议解决和法律适用条款。一旦您有对本服务的任何部分或全部的注册、查看、定制、使用等任何使用行为,即视为您已充分阅读、理解并接受本协议的全部内容,并与海口龙华海宇网络技术服务工作室达成本协议。如您对本协议有任何疑问,应向海口龙华海宇网络技术服务工作室客服咨询。如果您不同意本协议的部分或全部约定,您应立即停止使用本服务。
+
+
+ 您与海口龙华海宇网络技术服务工作室达成本协议后,您承诺接受并遵守本协议的约定,并不得以未阅读本协议的内容或者未获得海口龙华海宇网络技术服务工作室对您问询的解答等理由,主张本协议无效,或要求撤销本协议。在本协议履行过程中,海口龙华海宇网络技术服务工作室可以依其单独判断暂时停止提供、限制或改变本服务,并有权根据自身业务需要修订本协议。一旦本协议的内容发生变动,海口龙华海宇网络技术服务工作室将通过平台公布最新的服务协议,不再向您作个别通知。如果您不同意海口龙华海宇网络技术服务工作室对本服务协议所做的修改,您应立即停止使用本服务或通过海口龙华海宇网络技术服务工作室客服与海口龙华海宇网络技术服务工作室联系。如果您继续使用本服务,则视为您接受海口龙华海宇网络技术服务工作室对本协议所做的修改,并应遵照修改后的协议执行。
+
+
+
一、服务内容
+
+ 本服务向您提供多项个人信息整理服务。您知悉并认可,如您需使用该类服务,必须满足如下所述条件;且您承诺,您向海口龙华海宇网络技术服务工作室提请服务申请时,已经满足如下所述条件。
+
+
+
A.您已注册成为本服务的会员;
+
+ B.您已在服务页面对应框中填写被查询主体的姓名、身份证号、手机号、银行卡号和被查询主体的手机号收到的动态验证码(以下称“被查询主体信息”);
+
+
+ C.您确保被查询主体信息是您本人的信息或者被查询主体已授权您本人使用被查询主体信息进行查询(授权内容应包括本条D项所述内容),并且被查询主体已知悉该授权的风险。
+
+
+ D.被查询主体不可撤销地授权海口龙华海宇网络技术服务工作室为查询、评估被查询主体的信息状况:a.可以委托合法存续的第三方机构收集、查询、验证、使用并提供您或被查询主体的个人信息;b.可以向数据源机构采集您或被查询主体的个人信息;c.可以整理、保存、加工、使用您或被查询主体的个人信息,并向您提供数据报告;d.可以向为您提供服务的第三方商户提供脱敏后的个人信息或数据报告。本条所述的个人信息包括但不限于身份信息、联系方式、职业和居住地址等个人基本信息,个人社保、公积金、收入及在商业活动中形成的各类交易记录,个人公共费用缴纳、违法违规信息、财产状况等;
+
+
+ E.被查询主体已被明确告知提供被查询主体信息并作出D项授权可能给被查询主体带来的各类损失以及其他可能的不利后果,包括采集上述个人信息对被查询主体信用方面可能产生不良影响以及上述信息被信息使用者依法提供给第三方后被他人不当利用的风险。
+
+
F.您已全额支付相应的查询服务费用;
+
+ G.验证码请不要轻易提供给他人,一旦填入手机号对应验证码,视为手机号机主本人操作。
+
+
+
+
+
+ 二、服务中断或故障
+
+
+ 您同意,因下列原因导致海口龙华海宇网络技术服务工作室无法正常提供本服务的,海口龙华海宇网络技术服务工作室不承担责任:
+
+
+
(1)承载本服务的系统停机维护期间;
+
+ (2)您的电脑、手机软硬件和通信线路、供电线路出现故障的;
+
+
+ (3)您操作不当或通过非海口龙华海宇网络技术服务工作室授权或认可的方式使用本服务的;
+
+
+ (4)因病毒、木马、恶意程序攻击、网络拥堵、系统不稳定、系统或设备故障、通讯故障、电力故障或政府行为等原因;
+
+
+ (5)由于黑客攻击、网络供应商技术调整或故障、网站升级、手机运营商系统方面的问题等原因而造成的本服务中断或延迟;
+
+
+ (6)因台风、地震、海啸、洪水、停电、战争、恐怖袭击等不可抗力之因素,造成本服务系统障碍不能执行业务的。
+
+
+
+ 海口龙华海宇网络技术服务工作室不对因使用本服务而对用户造成的间接的、附带的、特殊的、后果性的损失承担任何法律责任;尽管有前款约定海口龙华海宇网络技术服务工作室将采取合理行动积极促使本服务恢复正常。
+
+
+
+
+ 三、信息的使用和保护
+
+
+ 海口龙华海宇网络技术服务工作室深知您注重个人信息安全和保护,并理解保护被查询主体个人信息的重要性。
+ 海口龙华海宇网络技术服务工作室会严格遵守中国关于收集、使用、保存用户个人信息的相关法律法规,
+ 尽最大努力采用相应安全技术和管理手段保护您或被查询主体的个人信息,
+ 防止您或被查询主体个人信息遭受未经授权的访问、适用或泄露、毁损、篡改或者丢失。
+ 未经您或被查询主体的授权不会向任何第三方提供。
+
+
+ 您使用本服务,即表示您已授权海口龙华海宇网络技术服务工作室将您相关信息披露给海口龙华海宇网络技术服务工作室关联公司
+ (关联公司是指直接或间接控制于本协议一方的任何法律实体,或者与本协议一方共同于另一法律实体的任何法律实体)使用,
+ 且海口龙华海宇网络技术服务工作室关联公司仅为了向您提供服务而使用您的相关信息。
+ 如海口龙华海宇网络技术服务工作室关联公司使用您的相关信息,则受本协议约束且会按照与海口龙华海宇网络技术服务工作室同等谨慎程度保护您的相关信息。
+
+
+ 在您使用本服务过程中,特别是在申请提现、实名认证或佣金结算时,您需要提供包括但不限于姓名、身份证号、银行卡号、手机号、税务身份信息等个人资料。
+ 您同意我们为履行合同义务、税务申报、身份核验、财务结算等必要目的,收集、使用、存储并在必要范围内共享该等信息。
+ 在进行税务代扣代缴、结算服务时,我们有权将必要信息提供给依法合作的第三方税务服务商、结算服务商,前提是该第三方承担同等信息保护义务。
+
+
+ 您有权查询、更正您的个人信息,也可以根据平台流程申请注销账户或停止使用相关服务,我们将根据法律要求妥善处理相关信息。
+
+
+ 海口龙华海宇网络技术服务工作室就下列原因导致的您或被查询主体个人信息的泄露,不承担任何法律责任:
+
+
+
+ (1)由于您个人原因将本服务的会员账号和密码告知他人或与他人共享海口龙华海宇网络技术服务工作室服务账户,由此导致的与您相关的信息的泄露。
+
+
+ (2)您使用第三方提供的服务(包括您向第三方提供的任何个人信息),须受第三方自己的服务条款及个人信息保护协议(而非本协议)约束,您需要仔细阅读其条款。本协议仅适用于海口龙华海宇网络技术服务工作室所提供的服务,并不适用于任何第三方提供的服务或第三方的信息使用规则,海口龙华海宇网络技术服务工作室对任何第三方使用由您提供的信息不承担任何责任。
+
+
+ (3)根据相关的法律法规、相关政府主管部门或相关证券交易所的要求提供、公布与您相关的信息。
+
+
+ (4)或其他非因海口龙华海宇网络技术服务工作室原因导致的与您相关的信息的泄露。
+
+
+
+
+
+
+ 四、用户声明与保证
+
+
+
+ (1)您使用本服务的前提是您依照适用的法律,是具有完全民事权利和民事行为能力,能够独立承担民事责任的自然人。
+
+
+ (2)您如违反本协议第一条款中的承诺,您可能会对他人造成侵权。如由此给海口龙华海宇网络技术服务工作室或他人造成损失的,您需依照法律法规规定承担相应的法律责任。
+
+
+
+
+
+
+
+ 五、知识产权保护
+
+
+ 本服务涉及的文档资料、软件、商标、图案、排版设计等(以下简称“海口龙华海宇网络技术服务工作室产品”)的著作权、商标以及其他知识产权或权益均为海口龙华海宇网络技术服务工作室享有或海口龙华海宇网络技术服务工作室获得授权使用。
+ 用户不得出租、出借、拷贝、仿冒、复制或修改海口龙华海宇网络技术服务工作室产品任何部分或用于其他任何商业目的,
+ 也不得将海口龙华海宇网络技术服务工作室产品做反向工程、反编译或反汇编,或以其他方式或工具取得海口龙华海宇网络技术服务工作室产品之目标程序或源代码。
+ 如果用户违反此约定,造成海口龙华海宇网络技术服务工作室及其他任何第三方任何损失的,甲方应予以全额赔偿。
+
+
+
+
+
+
六、隐私保护
+
+ 幸福查保证不对外公开或向第三方提供单个用户的注册资料及存储在幸福查的非公开内容,但下列情况下除外:
+
+
+
1. 事先获得用户的明确授权;
+
2. 根据有关的法律法规要求;
+
3. 按照有关政府部门的要求;
+
4. 为维护社会公众的利益;
+
5. 为维护幸福查的合法利益。
+
+
+ 在不透露单个用户隐私资料的前提下,幸福查有权利对整个用户数据库进行分析并对用户数据库进行商业上的利用。
+
+
+
+
+
七、免责条款
+
+
+ (一)不管基于任何直接的、间接的、特殊的、惩罚性的、惩戒性的、附带的、或结果性的损害、损失或费用,我们均不对其承担责任。即使有人告知我们或我们的员工存在出现这些损害、损失或费用的可能性。这些损害、损失或费用由以下这些情况引起或与这些情况有关:
+
+
1. 使用我们网站上或其他链接网站上的信息;
+
2. 无法使用这些信息;
+
+ 3.
+ 任何在操作或传输中出现的操作失败、错误、遗漏、中断、缺陷、延迟,计算机病毒,断线或系统运行失败。
+
+
+
+
+ (二)我们可以在不事先通知的情况下更改信息,并且不承担更新这些信息的义务。不经任何种类的授权,不做任何专门或暗指或法定的不侵犯第三方权利、名称、可出售性、出于某种特殊目的适当措施或不携带计算机病毒的保证。
+
+
+
+
+ (三)我们不对您查询信息内容的正确性、适当性、完整性、准确性、可靠性或适时性做出任何证明、声明和保证。我们不对任何因个人平台产生的错误、遗漏及失准承担任何责任。
+
+
+
+
+ (四)对于由于您违反本协议导致任何第三方针对我们及或我们的员工提出的任何申诉、起诉、要求或者诉讼或者其他法律程序,您同意自费作出赔偿并令其免受上述损害。
+
+
+
+
+
+
+
八、违约
+
+ 用户不得利用本服务进行任何损害海口龙华海宇网络技术服务工作室及其他第三方权益的行为,否则海口龙华海宇网络技术服务工作室有权立即终止为该用户提供本服务,并要求用户赔偿损失。由此产生的任何后果由用户自行承担,与海口龙华海宇网络技术服务工作室无关。
+
+
+
+
+
+
+ 九、数据来源及准确性说明
+
+
+ 本产品数据来源于第三方,可能因数据未公开、更新延迟或信息受到限制,因此不一定能完全返回。不同数据格式及记录详细程度会有所差异,这是行业正常现象。本报告仅供参考,请结合实际情况做出决策。
+
+
+
+
+
+
十、退款协议
+
+ 除非由于本程序的技术性问题导致用户无法正常使用本产品,否则我们不提供任何退款服务。
+ 用户在购买前应仔细阅读本用户协议及相关使用条款,确保对本产品有充分了解。
+
+
+
+
+
+
+ 十一、协议的变更和终止
+
+
+ 鉴于网络服务的特殊性,我们变更本协议及其附件的若干条款时,将提前通过我们平台公告有关变更事项。
+ 修订后的条款或将来可能发布或更新的各类规则-经在我们平台公布后,立即自动生效。
+ 如您不同意相关修订,应当立即停止使用该项服务。
+ 如您在发布上述协议变更的有关公告后继续使用互联网查询的,视为您已接受协议的有关变更,并受其约束。
+ 本协议中的相关条款根据该变更而自动做相应修改,双方无须另行签订书面协议。
+
+
+
+
+
+
十二、适用法律
+
+ 本协议条款的解释、效力及纠纷的解决,适用中华人民共和国大陆地区法律法规。
+ 如用户和海口龙华海宇网络技术服务工作室之间发生任何争议,首先应友好协商解决,协商不成的,应将争议提交至海口龙华海宇网络技术服务工作室注册地有管辖权的人民法院解决。
+
+
+
+
+
+
十三、问题咨询
+
+ 如您对本协议及本服务有任何问题,请通过邮箱
+ admin@iieeii.com 或
+ 通过“联系客服”联系海口龙华海宇网络技术服务工作室进行咨询。
+ 海口龙华海宇网络技术服务工作室会尽最大努力解决您的问题。
+
+
+
+
+
+
十四、附则
+
+
+ (一)本协议的某一条款被确认无效,均不影响本协议其他条款的效力。
+
+
+ (二)本协议未尽事宜,根据我国相关法律、法规及我们相关业务规定办理。如需制定补充协议,其法律效力同本协议。
+
+
+
+ 本协议通过点击同意/勾选的方式签署,自签署之日生效。
+
+
+ 本协议于 2024 年 11 月 17 日生效。
+
+
+
+
+
diff --git a/src/views/VantThemeTest.vue b/src/views/VantThemeTest.vue
new file mode 100644
index 0000000..c5ef736
--- /dev/null
+++ b/src/views/VantThemeTest.vue
@@ -0,0 +1,272 @@
+
+
+
+
+
+
+
+
+
按钮组件
+
+ 主要按钮
+ 成功按钮
+ 警告按钮
+ 危险按钮
+
+
+
+
+
+
开关组件
+
+
+ 开关状态: {{ switchValue ? '开启' : '关闭' }}
+
+
+
+
+
+
复选框组件
+
+ 选项1
+ 选项2
+
+
+
+
+
+
单选框组件
+
+ 选项1
+ 选项2
+
+
+
+
+
+
滑动条组件
+
+
当前值: {{ sliderValue }}
+
+
+
+
+
进度条组件
+
+
进度: {{ progressValue }}%
+
+
+
+
+
评分组件
+
+
评分: {{ rateValue }} 星
+
+
+
+
+
步进器组件
+
+
当前值: {{ stepperValue }}
+
+
+
+
+
标签组件
+
+ 主要标签
+ 成功标签
+ 警告标签
+ 危险标签
+
+
+
+
+
+
+
+
+
通知栏组件
+
+
+
+
+
+
轮播图组件
+
+
+
+ 轮播图 1
+
+
+
+
+ 轮播图 2
+
+
+
+
+ 轮播图 3
+
+
+
+
+
+
+
+
加载组件
+
+
+
+ 加载中...
+
+
+
+
+
+
步骤条组件
+
+ 步骤一
+ 步骤二
+ 步骤三
+
+
+
+
+
+
弹窗组件
+ 显示弹窗
+
+
+
+
+
+
动作面板组件
+ 显示动作面板
+
+
+
+
+
+
Toast 提示组件
+
+ 成功提示
+ 失败提示
+ 文字提示
+ 加载提示
+
+
+
+
+
+
主题色说明
+
+
+
+
主色调: var(--van-theme-primary)
+
+
+ 以上所有组件的主色调都已配置为 #5d7eeb ,通过 var(--van-theme-primary)
+ CSS变量统一管理。包括按钮、开关、复选框、单选框等组件的激活状态。通过修改CSS变量可以轻松更改整个主题。
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Withdraw.vue b/src/views/Withdraw.vue
new file mode 100644
index 0000000..a14818e
--- /dev/null
+++ b/src/views/Withdraw.vue
@@ -0,0 +1,832 @@
+
+
+
+
+
+
+
+
+ 未完成实名认证
+
+
+
+ 根据相关规定,提现功能需要完成实名认证后才能使用,提现金额将转入您实名认证的账户中。
+
+
+ 立即实名认证
+
+
+
+
+
+
+
+
+
+
+
支付宝提现
+
+
+
+
+ 支付宝账号
+
+
+
+
+
+ 可填写支付宝账户绑定的手机号
+
+
+
+ 实名姓名
+
+
+
+
+
+ 请填写支付宝账户认证的真实姓名
+
+
+
+
+
+
+
+
银行卡提现
+
+
+
+
+
您的实名信息
+
+
姓名:{{ bankCardInfo.payee_name }}
+
+
身份证号:{{ formatIdCard(bankCardInfo.id_card) }}
+
+
+
+ 提示:银行卡信息需与实名认证信息一致
+
+
+
+
+
+ 银行卡号
+
+
+
+
+
+ 请输入16-19位银行卡号
+
+
+
+ 开户支行
+
+
+
+
+
+ 例如:中国工商银行XX支行
+
+
+
+
+
+
+
+
+
+
+
+
支付宝提现
+
+
+
+
+ 支付宝账号
+
+
+
+
+
+ 可填写支付宝账户绑定的手机号
+
+
+
+ 实名姓名
+
+
+
+
+
+ 请填写支付宝账户认证的真实姓名
+
+
+
+
+
+
+
+
银行卡提现
+
+
+
+
+
您的实名信息
+
+
姓名:{{ bankCardInfo.payee_name }}
+
+
身份证号:{{ formatIdCard(bankCardInfo.id_card) }}
+
+
+
+ 提示:银行卡信息需与实名认证信息一致
+
+
+
+
+
+ 银行卡号
+
+
+
+
+
+ 请输入16-19位银行卡号
+
+
+
+ 开户支行
+
+
+
+
+
+ 例如:中国工商银行XX支行
+
+
+
+
+
+
+ 提现金额
+
+
+
+
+ 元
+
+
+ 全部提现
+
+
+
+
+
+
+
+ 可提现金额:¥{{ availableAmount }}
+
+
+
+
+
+ 提现须知
+
+
+ · 每日限提现1次,最低50元
+ · 提现收取6%税收
+ · 到账时间:24小时内
+ · 到账时间:管理员审核后手动转账
+
+
+
+
+
+
+ 税收说明
+
+
+
根据相关规定,提现时将统一收取6%的税收,该税收用于相关税费支出。
+
• 税率标准:统一按6%收取
+
• 适用范围:所有提现金额
+
+
+
+
+
+ 立即提现
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 提现金额:
+ ¥{{ amount }}
+
+
+ 税收:
+
+ -¥{{ taxAmount.toFixed(2) }}
+
+
+
+
+ 实际到账:
+ ¥{{ actualAmount.toFixed(2) }}
+
+
+
+
+
+
+
+ 税收说明
+
+
+
• 提现金额:¥{{ amount }}
+
• 税率:6%
+
• 税收计算:¥{{ amount }} × 6% = ¥{{ taxAmount.toFixed(2) }}
+
+
+
+
+
+
+ 取消
+
+
+ 确认提现
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ statusMessages[status] }}
+
+
+
+
+ 已向
+ {{ alipayAccount }}
+ 转账
+
+
+ 提现申请已通过,管理员将手动转账
+
+
+
+ ¥{{ amount }}
+
+
+
+
+ {{ failMsg }}
+
+
+
+
+
+
+
+
+
+
+ 预计24小时内到账
+ 请等待管理员审核并转账
+
+
+ 您的申请已进入处理队列
+ 您的申请已提交,等待管理员审核
+ 可在提现记录中查看结果
+
+
+
+
+
+ {{
+ status === 1
+ ? "知道了"
+ : status === 2
+ ? "完成"
+ : "重新提现"
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/WithdrawDetails.vue b/src/views/WithdrawDetails.vue
new file mode 100644
index 0000000..15a8308
--- /dev/null
+++ b/src/views/WithdrawDetails.vue
@@ -0,0 +1,197 @@
+
+
+
+
+
+
+ {{
+ item.create_time || "-"
+ }}
+ {{ item.amount.toFixed(2) }}元
+
+
+
+
+ {{ statusToChinese(item.status) }}
+
+
+
+
+ 收款账户:{{ maskName(item.payee_account) }}
+
+
+
银行卡号:{{ maskBankCard(item.bank_card_no) }}
+
开户支行:{{ item.bank_name }}
+
收款人:{{ item.payee_name }}
+
+
备注:{{ item.remark }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/index.vue b/src/views/index.vue
new file mode 100644
index 0000000..7b0c961
--- /dev/null
+++ b/src/views/index.vue
@@ -0,0 +1,236 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
推广报告
+
+
+
+
+
+
+
邀请下级
+
+
+
+
+
+
帮助中心
+
+
+
+
+
+
我的报告
+
+
+
+
+
+
+
+
+
+
+ {{ service.title }}
+
+
+
+ GO
+
+
+
+
+
+
+
+
+
+
+
+ {{ service.title }}
+
+
+
+ GO
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
我的历史查询记录
+
查询记录有效期为30天
+
+
+
+
+
+
+
+
+
+{
+ "layout": "home"
+}
diff --git a/tailwind.config.js b/tailwind.config.js
new file mode 100644
index 0000000..04af5e1
--- /dev/null
+++ b/tailwind.config.js
@@ -0,0 +1,113 @@
+/** @type {import('tailwindcss').Config} */
+export default {
+ content: [
+ "./index.html", // 如果是 Vite 项目
+ "./src/**/*.{vue,js,ts,jsx,tsx}",
+ ],
+ theme: {
+ extend: {
+ colors: {
+ // 主题色系
+ primary: {
+ DEFAULT: "#5D7EEB",
+ 50: "#F0F3FF",
+ 100: "#E1E8FF",
+ 200: "#C3D1FF",
+ 300: "#A5BAFF",
+ 400: "#87A3FF",
+ 500: "#5D7EEB",
+ 600: "#4A63BC",
+ 700: "#38488D",
+ 800: "#252D5E",
+ 900: "#13122F",
+ },
+ // 语义化颜色
+ success: {
+ DEFAULT: "#07c160",
+ 50: "#f0f9f0",
+ 100: "#e1f5e1",
+ 200: "#c3ebc3",
+ 300: "#a5e1a5",
+ 400: "#87d787",
+ 500: "#07c160",
+ 600: "#059a4c",
+ 700: "#047338",
+ 800: "#024c24",
+ 900: "#012510",
+ },
+ warning: {
+ DEFAULT: "#ff976a",
+ 50: "#fff5f0",
+ 100: "#ffebe1",
+ 200: "#ffd7c3",
+ 300: "#ffc3a5",
+ 400: "#ffaf87",
+ 500: "#ff976a",
+ 600: "#cc7955",
+ 700: "#995b40",
+ 800: "#663d2a",
+ 900: "#331f15",
+ },
+ danger: {
+ DEFAULT: "#ee0a24",
+ 50: "#fdf2f2",
+ 100: "#fce5e5",
+ 200: "#f9caca",
+ 300: "#f6b0b0",
+ 400: "#f39595",
+ 500: "#ee0a24",
+ 600: "#be081d",
+ 700: "#8f0616",
+ 800: "#5f040e",
+ 900: "#300207",
+ },
+ // 中性色
+ gray: {
+ 50: "#fafafa",
+ 100: "#f5f5f5",
+ 200: "#e5e5e5",
+ 300: "#d4d4d4",
+ 400: "#a3a3a3",
+ 500: "#737373",
+ 600: "#525252",
+ 700: "#404040",
+ 800: "#262626",
+ 900: "#171717",
+ },
+ // 文本颜色
+ text: {
+ primary: "#323233",
+ secondary: "#646566",
+ tertiary: "#969799",
+ },
+ // 背景颜色
+ background: {
+ DEFAULT: "#ffffff",
+ light: "#fafafa",
+ dark: "#f8f8f8",
+ },
+ // 边框颜色
+ border: "#ebedf0",
+ // 活跃状态颜色
+ active: "#f2f3f5",
+ },
+ fontFamily: {
+ sans: [
+ "Inter",
+ "-apple-system",
+ "BlinkMacSystemFont",
+ "Segoe UI",
+ "Roboto",
+ "Oxygen",
+ "Ubuntu",
+ "Cantarell",
+ "Fira Sans",
+ "Droid Sans",
+ "Helvetica Neue",
+ "sans-serif",
+ ],
+ },
+ },
+ },
+ plugins: [],
+};
diff --git a/vite.config.js b/vite.config.js
new file mode 100644
index 0000000..70dfc02
--- /dev/null
+++ b/vite.config.js
@@ -0,0 +1,85 @@
+import { fileURLToPath, URL } from "node:url";
+import AutoImport from "unplugin-auto-import/vite";
+import Components from "unplugin-vue-components/vite";
+import { VantResolver } from "@vant/auto-import-resolver";
+import { defineConfig } from "vite";
+import vue from "@vitejs/plugin-vue";
+import vueJsx from "@vitejs/plugin-vue-jsx";
+import vueDevTools from "vite-plugin-vue-devtools";
+
+// https://vite.dev/config/
+export default defineConfig({
+ server: {
+ host: "0.0.0.0", // 设置为 0.0.0.0 允许局域网访问
+ port: 5678, // 自定义端口号,可选
+ strictPort: true, // 如果端口被占用则抛出错误而不是使用下一个可用端口
+ proxy: {
+ "/api/v1": {
+ target: "http://127.0.0.1:8888", // 本地接口地址
+ // target: "https://www.www.xingfucha.cn", // 本地接口地址
+ changeOrigin: true,
+ },
+ },
+ },
+ build: {
+ // 构建优化
+ target: 'es2015', // 支持更多浏览器
+ minify: 'terser', // 使用terser进行压缩
+ terserOptions: {
+ compress: {
+ drop_console: true, // 移除console.log
+ drop_debugger: true, // 移除debugger
+ },
+ },
+ rollupOptions: {
+ output: {
+ // 代码分割策略
+ manualChunks: {
+ vendor: ['vue', 'vue-router', 'pinia'],
+ vant: ['vant'],
+ utils: ['axios', 'lodash', 'crypto-js'],
+ charts: ['echarts', 'vue-echarts'],
+ },
+ // 文件名策略
+ chunkFileNames: 'assets/js/[name]-[hash].js',
+ entryFileNames: 'assets/js/[name]-[hash].js',
+ assetFileNames: 'assets/[ext]/[name]-[hash].[ext]',
+ },
+ },
+ // 启用CSS代码分割
+ cssCodeSplit: true,
+ // 设置资源内联阈值
+ assetsInlineLimit: 4096,
+ },
+ plugins: [
+ vue(),
+ AutoImport({
+ imports: [
+ "vue", // 自动引入 Vue Composition API,如 ref、computed、onMounted 等
+ "vue-router", // 自动引入 vue-router 中的方法,如 useRoute、useRouter 等(可选)
+ "@vueuse/core", // 自动引入 VueUse 中的工具函数(可选)
+ ],
+ dts: "src/auto-imports.d.ts", // 生成类型定义文件(可选)
+ dirs: [
+ "src/composables",
+ "src/stores",
+ "src/components",
+ ],
+ resolvers: [VantResolver()],
+ }),
+ Components({
+ resolvers: [VantResolver()],
+ }),
+ vueJsx(),
+ // vueDevTools(),
+ ],
+ resolve: {
+ alias: {
+ "@": fileURLToPath(new URL("./src", import.meta.url)),
+ },
+ },
+ // 优化依赖预构建
+ optimizeDeps: {
+ include: ['vue', 'vue-router', 'pinia', 'vant', 'axios'],
+ },
+});
diff --git a/vite.config.js.timestamp-1759227965356-d89054337d1ff.mjs b/vite.config.js.timestamp-1759227965356-d89054337d1ff.mjs
new file mode 100644
index 0000000..788dd4b
--- /dev/null
+++ b/vite.config.js.timestamp-1759227965356-d89054337d1ff.mjs
@@ -0,0 +1,101 @@
+// vite.config.js
+import { fileURLToPath, URL } from "node:url";
+import AutoImport from "file:///D:/Code/xingfucha-project/xingfucha-webview-v2/node_modules/.pnpm/unplugin-auto-import@0.18.5_50625f5cebf4df05ecf78275692ab72e/node_modules/unplugin-auto-import/dist/vite.js";
+import Components from "file:///D:/Code/xingfucha-project/xingfucha-webview-v2/node_modules/.pnpm/unplugin-vue-components@0.2_7a998863e003c647fcddc8da197d7058/node_modules/unplugin-vue-components/dist/vite.js";
+import { VantResolver } from "file:///D:/Code/xingfucha-project/xingfucha-webview-v2/node_modules/.pnpm/@vant+auto-import-resolver@1.2.1/node_modules/@vant/auto-import-resolver/dist/index.esm.mjs";
+import { defineConfig } from "file:///D:/Code/xingfucha-project/xingfucha-webview-v2/node_modules/.pnpm/vite@5.4.11_sass-embedded@1.81.0_terser@5.43.1/node_modules/vite/dist/node/index.js";
+import vue from "file:///D:/Code/xingfucha-project/xingfucha-webview-v2/node_modules/.pnpm/@vitejs+plugin-vue@5.2.0_vi_7884609547a4714267a4084011d6753f/node_modules/@vitejs/plugin-vue/dist/index.mjs";
+import vueJsx from "file:///D:/Code/xingfucha-project/xingfucha-webview-v2/node_modules/.pnpm/@vitejs+plugin-vue-jsx@4.1._62a5d188701d5e2b6505e81520915a90/node_modules/@vitejs/plugin-vue-jsx/dist/index.mjs";
+import vueDevTools from "file:///D:/Code/xingfucha-project/xingfucha-webview-v2/node_modules/.pnpm/vite-plugin-vue-devtools@7._daef52fa252018fa499b954bbd20e769/node_modules/vite-plugin-vue-devtools/dist/vite.mjs";
+var __vite_injected_original_import_meta_url = "file:///D:/Code/xingfucha-project/xingfucha-webview-v2/vite.config.js";
+var vite_config_default = defineConfig({
+ server: {
+ host: "0.0.0.0",
+ // 设置为 0.0.0.0 允许局域网访问
+ port: 5678,
+ // 自定义端口号,可选
+ strictPort: true,
+ // 如果端口被占用则抛出错误而不是使用下一个可用端口
+ proxy: {
+ "/api/v1": {
+ // target: "http://127.0.0.1:8888", // 本地接口地址
+ target: "https://www.www.xingfucha.cn",
+ // 本地接口地址
+ changeOrigin: true
+ }
+ }
+ },
+ build: {
+ // 构建优化
+ target: "es2015",
+ // 支持更多浏览器
+ minify: "terser",
+ // 使用terser进行压缩
+ terserOptions: {
+ compress: {
+ drop_console: true,
+ // 移除console.log
+ drop_debugger: true
+ // 移除debugger
+ }
+ },
+ rollupOptions: {
+ output: {
+ // 代码分割策略
+ manualChunks: {
+ vendor: ["vue", "vue-router", "pinia"],
+ vant: ["vant"],
+ utils: ["axios", "lodash", "crypto-js"],
+ charts: ["echarts", "vue-echarts"]
+ },
+ // 文件名策略
+ chunkFileNames: "assets/js/[name]-[hash].js",
+ entryFileNames: "assets/js/[name]-[hash].js",
+ assetFileNames: "assets/[ext]/[name]-[hash].[ext]"
+ }
+ },
+ // 启用CSS代码分割
+ cssCodeSplit: true,
+ // 设置资源内联阈值
+ assetsInlineLimit: 4096
+ },
+ plugins: [
+ vue(),
+ AutoImport({
+ imports: [
+ "vue",
+ // 自动引入 Vue Composition API,如 ref、computed、onMounted 等
+ "vue-router",
+ // 自动引入 vue-router 中的方法,如 useRoute、useRouter 等(可选)
+ "@vueuse/core"
+ // 自动引入 VueUse 中的工具函数(可选)
+ ],
+ dts: "src/auto-imports.d.ts",
+ // 生成类型定义文件(可选)
+ dirs: [
+ "src/composables",
+ "src/stores",
+ "src/components"
+ ],
+ resolvers: [VantResolver()]
+ }),
+ Components({
+ resolvers: [VantResolver()]
+ }),
+ vueJsx()
+ // vueDevTools(),
+ ],
+ resolve: {
+ alias: {
+ "@": fileURLToPath(new URL("./src", __vite_injected_original_import_meta_url))
+ }
+ },
+ // 优化依赖预构建
+ optimizeDeps: {
+ include: ["vue", "vue-router", "pinia", "vant", "axios"]
+ }
+});
+export {
+ vite_config_default as default
+};
+//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsidml0ZS5jb25maWcuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IF9fdml0ZV9pbmplY3RlZF9vcmlnaW5hbF9kaXJuYW1lID0gXCJEOlxcXFxDb2RlXFxcXHR5ZGF0YS1wcm9qZWN0XFxcXHR5ZGF0YS13ZWJ2aWV3LXYyXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ZpbGVuYW1lID0gXCJEOlxcXFxDb2RlXFxcXHR5ZGF0YS1wcm9qZWN0XFxcXHR5ZGF0YS13ZWJ2aWV3LXYyXFxcXHZpdGUuY29uZmlnLmpzXCI7Y29uc3QgX192aXRlX2luamVjdGVkX29yaWdpbmFsX2ltcG9ydF9tZXRhX3VybCA9IFwiZmlsZTovLy9EOi9Db2RlL3R5ZGF0YS1wcm9qZWN0L3R5ZGF0YS13ZWJ2aWV3LXYyL3ZpdGUuY29uZmlnLmpzXCI7aW1wb3J0IHsgZmlsZVVSTFRvUGF0aCwgVVJMIH0gZnJvbSBcIm5vZGU6dXJsXCI7XG5pbXBvcnQgQXV0b0ltcG9ydCBmcm9tIFwidW5wbHVnaW4tYXV0by1pbXBvcnQvdml0ZVwiO1xuaW1wb3J0IENvbXBvbmVudHMgZnJvbSBcInVucGx1Z2luLXZ1ZS1jb21wb25lbnRzL3ZpdGVcIjtcbmltcG9ydCB7IFZhbnRSZXNvbHZlciB9IGZyb20gXCJAdmFudC9hdXRvLWltcG9ydC1yZXNvbHZlclwiO1xuaW1wb3J0IHsgZGVmaW5lQ29uZmlnIH0gZnJvbSBcInZpdGVcIjtcbmltcG9ydCB2dWUgZnJvbSBcIkB2aXRlanMvcGx1Z2luLXZ1ZVwiO1xuaW1wb3J0IHZ1ZUpzeCBmcm9tIFwiQHZpdGVqcy9wbHVnaW4tdnVlLWpzeFwiO1xuaW1wb3J0IHZ1ZURldlRvb2xzIGZyb20gXCJ2aXRlLXBsdWdpbi12dWUtZGV2dG9vbHNcIjtcblxuLy8gaHR0cHM6Ly92aXRlLmRldi9jb25maWcvXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb25maWcoe1xuICAgIHNlcnZlcjoge1xuICAgICAgICBob3N0OiBcIjAuMC4wLjBcIiwgLy8gXHU4QkJFXHU3RjZFXHU0RTNBIDAuMC4wLjAgXHU1MTQxXHU4QkI4XHU1QzQwXHU1N0RGXHU3RjUxXHU4QkJGXHU5NUVFXG4gICAgICAgIHBvcnQ6IDU2NzgsIC8vIFx1ODFFQVx1NUI5QVx1NEU0OVx1N0FFRlx1NTNFM1x1NTNGN1x1RkYwQ1x1NTNFRlx1OTAwOVxuICAgICAgICBzdHJpY3RQb3J0OiB0cnVlLCAvLyBcdTU5ODJcdTY3OUNcdTdBRUZcdTUzRTNcdTg4QUJcdTUzNjBcdTc1MjhcdTUyMTlcdTYyOUJcdTUxRkFcdTk1MTlcdThCRUZcdTgwMENcdTRFMERcdTY2MkZcdTRGN0ZcdTc1MjhcdTRFMEJcdTRFMDBcdTRFMkFcdTUzRUZcdTc1MjhcdTdBRUZcdTUzRTNcbiAgICAgICAgcHJveHk6IHtcbiAgICAgICAgICAgIFwiL2FwaS92MVwiOiB7XG4gICAgICAgICAgICAgICAgLy8gdGFyZ2V0OiBcImh0dHA6Ly8xMjcuMC4wLjE6ODg4OFwiLCAvLyBcdTY3MkNcdTU3MzBcdTYzQTVcdTUzRTNcdTU3MzBcdTU3NDBcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IFwiaHR0cHM6Ly93d3cudGlhbnl1YW5kYi5jb21cIiwgLy8gXHU2NzJDXHU1NzMwXHU2M0E1XHU1M0UzXHU1NzMwXHU1NzQwXG4gICAgICAgICAgICAgICAgY2hhbmdlT3JpZ2luOiB0cnVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9LFxuICAgIGJ1aWxkOiB7XG4gICAgICAgIC8vIFx1Njc4NFx1NUVGQVx1NEYxOFx1NTMxNlxuICAgICAgICB0YXJnZXQ6ICdlczIwMTUnLCAvLyBcdTY1MkZcdTYzMDFcdTY2RjRcdTU5MUFcdTZENEZcdTg5QzhcdTU2NjhcbiAgICAgICAgbWluaWZ5OiAndGVyc2VyJywgLy8gXHU0RjdGXHU3NTI4dGVyc2VyXHU4RkRCXHU4ODRDXHU1MzhCXHU3RjI5XG4gICAgICAgIHRlcnNlck9wdGlvbnM6IHtcbiAgICAgICAgICAgIGNvbXByZXNzOiB7XG4gICAgICAgICAgICAgICAgZHJvcF9jb25zb2xlOiB0cnVlLCAvLyBcdTc5RkJcdTk2NjRjb25zb2xlLmxvZ1xuICAgICAgICAgICAgICAgIGRyb3BfZGVidWdnZXI6IHRydWUsIC8vIFx1NzlGQlx1OTY2NGRlYnVnZ2VyXG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICByb2xsdXBPcHRpb25zOiB7XG4gICAgICAgICAgICBvdXRwdXQ6IHtcbiAgICAgICAgICAgICAgICAvLyBcdTRFRTNcdTc4MDFcdTUyMDZcdTUyNzJcdTdCNTZcdTc1NjVcbiAgICAgICAgICAgICAgICBtYW51YWxDaHVua3M6IHtcbiAgICAgICAgICAgICAgICAgICAgdmVuZG9yOiBbJ3Z1ZScsICd2dWUtcm91dGVyJywgJ3BpbmlhJ10sXG4gICAgICAgICAgICAgICAgICAgIHZhbnQ6IFsndmFudCddLFxuICAgICAgICAgICAgICAgICAgICB1dGlsczogWydheGlvcycsICdsb2Rhc2gnLCAnY3J5cHRvLWpzJ10sXG4gICAgICAgICAgICAgICAgICAgIGNoYXJ0czogWydlY2hhcnRzJywgJ3Z1ZS1lY2hhcnRzJ10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAvLyBcdTY1ODdcdTRFRjZcdTU0MERcdTdCNTZcdTc1NjVcbiAgICAgICAgICAgICAgICBjaHVua0ZpbGVOYW1lczogJ2Fzc2V0cy9qcy9bbmFtZV0tW2hhc2hdLmpzJyxcbiAgICAgICAgICAgICAgICBlbnRyeUZpbGVOYW1lczogJ2Fzc2V0cy9qcy9bbmFtZV0tW2hhc2hdLmpzJyxcbiAgICAgICAgICAgICAgICBhc3NldEZpbGVOYW1lczogJ2Fzc2V0cy9bZXh0XS9bbmFtZV0tW2hhc2hdLltleHRdJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIC8vIFx1NTQyRlx1NzUyOENTU1x1NEVFM1x1NzgwMVx1NTIwNlx1NTI3MlxuICAgICAgICBjc3NDb2RlU3BsaXQ6IHRydWUsXG4gICAgICAgIC8vIFx1OEJCRVx1N0Y2RVx1OEQ0NFx1NkU5MFx1NTE4NVx1ODA1NFx1OTYwOFx1NTAzQ1xuICAgICAgICBhc3NldHNJbmxpbmVMaW1pdDogNDA5NixcbiAgICB9LFxuICAgIHBsdWdpbnM6IFtcbiAgICAgICAgdnVlKCksXG4gICAgICAgIEF1dG9JbXBvcnQoe1xuICAgICAgICAgICAgaW1wb3J0czogW1xuICAgICAgICAgICAgICAgIFwidnVlXCIsIC8vIFx1ODFFQVx1NTJBOFx1NUYxNVx1NTE2NSBWdWUgQ29tcG9zaXRpb24gQVBJXHVGRjBDXHU1OTgyIHJlZlx1MzAwMWNvbXB1dGVkXHUzMDAxb25Nb3VudGVkIFx1N0I0OVxuICAgICAgICAgICAgICAgIFwidnVlLXJvdXRlclwiLCAvLyBcdTgxRUFcdTUyQThcdTVGMTVcdTUxNjUgdnVlLXJvdXRlciBcdTRFMkRcdTc2ODRcdTY1QjlcdTZDRDVcdUZGMENcdTU5ODIgdXNlUm91dGVcdTMwMDF1c2VSb3V0ZXIgXHU3QjQ5XHVGRjA4XHU1M0VGXHU5MDA5XHVGRjA5XG4gICAgICAgICAgICAgICAgXCJAdnVldXNlL2NvcmVcIiwgLy8gXHU4MUVBXHU1MkE4XHU1RjE1XHU1MTY1IFZ1ZVVzZSBcdTRFMkRcdTc2ODRcdTVERTVcdTUxNzdcdTUxRkRcdTY1NzBcdUZGMDhcdTUzRUZcdTkwMDlcdUZGMDlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBkdHM6IFwic3JjL2F1dG8taW1wb3J0cy5kLnRzXCIsIC8vIFx1NzUxRlx1NjIxMFx1N0M3Qlx1NTc4Qlx1NUI5QVx1NEU0OVx1NjU4N1x1NEVGNlx1RkYwOFx1NTNFRlx1OTAwOVx1RkYwOVxuICAgICAgICAgICAgZGlyczogW1xuICAgICAgICAgICAgICAgIFwic3JjL2NvbXBvc2FibGVzXCIsXG4gICAgICAgICAgICAgICAgXCJzcmMvc3RvcmVzXCIsXG4gICAgICAgICAgICAgICAgXCJzcmMvY29tcG9uZW50c1wiLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJlc29sdmVyczogW1ZhbnRSZXNvbHZlcigpXSxcbiAgICAgICAgfSksXG4gICAgICAgIENvbXBvbmVudHMoe1xuICAgICAgICAgICAgcmVzb2x2ZXJzOiBbVmFudFJlc29sdmVyKCldLFxuICAgICAgICB9KSxcbiAgICAgICAgdnVlSnN4KCksXG4gICAgICAgIC8vIHZ1ZURldlRvb2xzKCksXG4gICAgXSxcbiAgICByZXNvbHZlOiB7XG4gICAgICAgIGFsaWFzOiB7XG4gICAgICAgICAgICBcIkBcIjogZmlsZVVSTFRvUGF0aChuZXcgVVJMKFwiLi9zcmNcIiwgaW1wb3J0Lm1ldGEudXJsKSksXG4gICAgICAgIH0sXG4gICAgfSxcbiAgICAvLyBcdTRGMThcdTUzMTZcdTRGOURcdThENTZcdTk4ODRcdTY3ODRcdTVFRkFcbiAgICBvcHRpbWl6ZURlcHM6IHtcbiAgICAgICAgaW5jbHVkZTogWyd2dWUnLCAndnVlLXJvdXRlcicsICdwaW5pYScsICd2YW50JywgJ2F4aW9zJ10sXG4gICAgfSxcbn0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFrVCxTQUFTLGVBQWUsV0FBVztBQUNyVixPQUFPLGdCQUFnQjtBQUN2QixPQUFPLGdCQUFnQjtBQUN2QixTQUFTLG9CQUFvQjtBQUM3QixTQUFTLG9CQUFvQjtBQUM3QixPQUFPLFNBQVM7QUFDaEIsT0FBTyxZQUFZO0FBQ25CLE9BQU8saUJBQWlCO0FBUHVLLElBQU0sMkNBQTJDO0FBVWhQLElBQU8sc0JBQVEsYUFBYTtBQUFBLEVBQ3hCLFFBQVE7QUFBQSxJQUNKLE1BQU07QUFBQTtBQUFBLElBQ04sTUFBTTtBQUFBO0FBQUEsSUFDTixZQUFZO0FBQUE7QUFBQSxJQUNaLE9BQU87QUFBQSxNQUNILFdBQVc7QUFBQTtBQUFBLFFBRVAsUUFBUTtBQUFBO0FBQUEsUUFDUixjQUFjO0FBQUEsTUFDbEI7QUFBQSxJQUNKO0FBQUEsRUFDSjtBQUFBLEVBQ0EsT0FBTztBQUFBO0FBQUEsSUFFSCxRQUFRO0FBQUE7QUFBQSxJQUNSLFFBQVE7QUFBQTtBQUFBLElBQ1IsZUFBZTtBQUFBLE1BQ1gsVUFBVTtBQUFBLFFBQ04sY0FBYztBQUFBO0FBQUEsUUFDZCxlQUFlO0FBQUE7QUFBQSxNQUNuQjtBQUFBLElBQ0o7QUFBQSxJQUNBLGVBQWU7QUFBQSxNQUNYLFFBQVE7QUFBQTtBQUFBLFFBRUosY0FBYztBQUFBLFVBQ1YsUUFBUSxDQUFDLE9BQU8sY0FBYyxPQUFPO0FBQUEsVUFDckMsTUFBTSxDQUFDLE1BQU07QUFBQSxVQUNiLE9BQU8sQ0FBQyxTQUFTLFVBQVUsV0FBVztBQUFBLFVBQ3RDLFFBQVEsQ0FBQyxXQUFXLGFBQWE7QUFBQSxRQUNyQztBQUFBO0FBQUEsUUFFQSxnQkFBZ0I7QUFBQSxRQUNoQixnQkFBZ0I7QUFBQSxRQUNoQixnQkFBZ0I7QUFBQSxNQUNwQjtBQUFBLElBQ0o7QUFBQTtBQUFBLElBRUEsY0FBYztBQUFBO0FBQUEsSUFFZCxtQkFBbUI7QUFBQSxFQUN2QjtBQUFBLEVBQ0EsU0FBUztBQUFBLElBQ0wsSUFBSTtBQUFBLElBQ0osV0FBVztBQUFBLE1BQ1AsU0FBUztBQUFBLFFBQ0w7QUFBQTtBQUFBLFFBQ0E7QUFBQTtBQUFBLFFBQ0E7QUFBQTtBQUFBLE1BQ0o7QUFBQSxNQUNBLEtBQUs7QUFBQTtBQUFBLE1BQ0wsTUFBTTtBQUFBLFFBQ0Y7QUFBQSxRQUNBO0FBQUEsUUFDQTtBQUFBLE1BQ0o7QUFBQSxNQUNBLFdBQVcsQ0FBQyxhQUFhLENBQUM7QUFBQSxJQUM5QixDQUFDO0FBQUEsSUFDRCxXQUFXO0FBQUEsTUFDUCxXQUFXLENBQUMsYUFBYSxDQUFDO0FBQUEsSUFDOUIsQ0FBQztBQUFBLElBQ0QsT0FBTztBQUFBO0FBQUEsRUFFWDtBQUFBLEVBQ0EsU0FBUztBQUFBLElBQ0wsT0FBTztBQUFBLE1BQ0gsS0FBSyxjQUFjLElBQUksSUFBSSxTQUFTLHdDQUFlLENBQUM7QUFBQSxJQUN4RDtBQUFBLEVBQ0o7QUFBQTtBQUFBLEVBRUEsY0FBYztBQUFBLElBQ1YsU0FBUyxDQUFDLE9BQU8sY0FBYyxTQUFTLFFBQVEsT0FBTztBQUFBLEVBQzNEO0FBQ0osQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K