commit ff5cb639607d4049f566fe3758e9a7a112b75c04
Author: liangzai <2440983361@qq.com>
Date: Sat Sep 27 17:41:14 2025 +0800
base
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/README.md b/README.md
new file mode 100644
index 0000000..74ec941
--- /dev/null
+++ b/README.md
@@ -0,0 +1,29 @@
+# hm-website
+
+This template should help get you started developing with Vue 3 in Vite.
+
+## Recommended IDE Setup
+
+[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur).
+
+## Customize configuration
+
+See [Vite Configuration Reference](https://vite.dev/config/).
+
+## Project Setup
+
+```sh
+pnpm install
+```
+
+### Compile and Hot-Reload for Development
+
+```sh
+pnpm dev
+```
+
+### Compile and Minify for Production
+
+```sh
+pnpm build
+```
diff --git a/VANT_THEME_CONFIG.md b/VANT_THEME_CONFIG.md
new file mode 100644
index 0000000..a7af97c
--- /dev/null
+++ b/VANT_THEME_CONFIG.md
@@ -0,0 +1,96 @@
+# Vant 主题色配置说明
+
+## 概述
+本项目已配置 Vant UI 组件库的主题色为 `#a22525`,所有相关组件都会使用这个颜色作为主色调。
+
+## 配置文件位置
+- 主题配置文件:`src/assets/vant-theme.css`
+- 主样式文件:`src/assets/main.css`(已导入主题配置)
+
+## 配置方法
+
+### 方法一:CSS 变量覆盖(推荐)
+```css
+:root {
+ --van-primary-color: #a22525;
+}
+```
+
+### 方法二:直接覆盖组件样式
+```css
+.van-button--primary {
+ background-color: #a22525 !important;
+ border-color: #a22525 !important;
+}
+```
+
+## 已配置的组件
+
+以下组件已经配置为主题色 `#a22525`:
+
+### 基础组件
+- ✅ 按钮 (Button) - 主要按钮
+- ✅ 开关 (Switch) - 开启状态
+- ✅ 复选框 (Checkbox) - 选中状态
+- ✅ 单选框 (Radio) - 选中状态
+- ✅ 滑动条 (Slider) - 进度条和按钮
+- ✅ 进度条 (Progress) - 进度填充
+- ✅ 评分 (Rate) - 已评分星星
+- ✅ 步进器 (Stepper) - 加减按钮
+- ✅ 标签 (Tag) - 主要类型标签
+- ✅ 徽章 (Badge) - 主要类型徽章
+
+### 导航组件
+- ✅ 导航栏 (NavBar) - 背景色
+- ✅ 标签栏 (Tabbar) - 激活状态
+- ✅ 步骤条 (Steps) - 激活步骤
+- ✅ 侧边栏 (Sidebar) - 选中项
+
+### 反馈组件
+- ✅ 通知栏 (NoticeBar) - 主要类型
+- ✅ 轮播图 (Swipe) - 指示器
+- ✅ 加载 (Loading) - 加载动画
+- ✅ 弹窗 (Dialog) - 标题栏
+
+### 表单组件
+- ✅ 选择器 (Picker) - 确认按钮
+- ✅ 日期选择器 (DatetimePicker) - 确认按钮
+- ✅ 地区选择器 (Area) - 确认按钮
+- ✅ 搜索 (Search) - 操作按钮
+- ✅ 日历 (Calendar) - 选中日期
+- ✅ 时间选择器 (TimePicker) - 确认按钮
+- ✅ 密码输入框 (PasswordInput) - 聚焦边框
+
+### 业务组件
+- ✅ 商品卡片 (Card) - 价格颜色
+- ✅ 优惠券 (Coupon) - 折扣颜色
+- ✅ 地址编辑 (AddressEdit) - 默认地址
+- ✅ 商品规格选择器 (Sku) - 选中项
+- ✅ 购物车 (SubmitBar) - 价格颜色
+- ✅ 提交订单栏 (SubmitBar) - 主要按钮
+- ✅ 联系人列表 (ContactList) - 选中项
+- ✅ 树形选择器 (TreeSelect) - 选中项
+
+## 测试页面
+
+可以通过访问 `/example` 路由来查看主题色配置效果,该页面展示了各种 Vant 组件的主题色应用情况。
+
+## 自定义主题色
+
+如果需要修改主题色,只需要:
+
+1. 修改 `src/assets/vant-theme.css` 文件中的颜色值
+2. 将所有的 `#a22525` 替换为新的颜色值
+3. 同时更新 `theme` 文件中的颜色值
+
+## 注意事项
+
+1. 使用了 `!important` 来确保样式优先级
+2. 配置了激活状态的半透明效果 `rgba(162, 85, 37, 0.8)`
+3. 部分组件配置了悬停和聚焦状态的颜色
+4. 所有配置都基于 Vant 4.x 版本
+
+## 参考文档
+
+- [Vant 主题定制官方文档](https://vant-ui.github.io/vant-weapp/#/theme)
+- [Vant 样式变量参考](https://github.com/youzan/vant-weapp/blob/dev/packages/common/style/var.less)
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..486b819
--- /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/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.jpg b/public/logo.jpg
new file mode 100644
index 0000000..517584e
Binary files /dev/null and b/public/logo.jpg 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..2938d05
--- /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/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..c360fd0
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
+
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/images/banner.png b/src/assets/images/banner.png
new file mode 100644
index 0000000..9c1f1dd
Binary files /dev/null and b/src/assets/images/banner.png 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/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/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_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..977de0e
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..af1fe9c
Binary files /dev/null and b/src/assets/images/logo.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/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..aa49276
--- /dev/null
+++ b/src/assets/main.css
@@ -0,0 +1,30 @@
+@import "./base.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..5c49dc2
--- /dev/null
+++ b/src/assets/nprogress.css
@@ -0,0 +1,10 @@
+/* 进度条颜色 */
+#nprogress .bar {
+ background: #a22525; /* 主题色 */
+ height: 4px; /* 修改高度 */
+}
+
+/* 圆圈颜色 */
+#nprogress .peg {
+ box-shadow: 0 0 10px #a22525, 0 0 5px #a22525;
+}
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..8763d89
--- /dev/null
+++ b/src/assets/vant-theme.css
@@ -0,0 +1,434 @@
+/* Vant 主题色配置 - 使用 CSS 变量统一管理主题色 */
+
+/* 定义主题色变量 */
+:root {
+ /* 主色调 - 可以根据需要修改这个变量来改变整个主题 */
+ --van-theme-primary: #a22525;
+ --van-theme-primary-light: rgba(162, 37, 37, 0.1);
+ --van-theme-primary-dark: rgba(162, 37, 37, 0.8);
+ --van-theme-primary-alpha: rgba(162, 37, 37, 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;
+}
\ No newline at end of file
diff --git a/src/auto-imports.d.ts b/src/auto-imports.d.ts
new file mode 100644
index 0000000..ff20f3a
--- /dev/null
+++ b/src/auto-imports.d.ts
@@ -0,0 +1,315 @@
+/* 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 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 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 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 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 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..ded74b0
--- /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..d9cc012
--- /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..a48ce44
--- /dev/null
+++ b/src/components/BaseReport.vue
@@ -0,0 +1,947 @@
+
+
+
+
+
+
+
+
+
+
+ 分析指数
+
+
+
+ 基本信息
+
+
+
+
+
+ 报告时间:
+ {{
+ reportDateTime ||
+ "2025-01-01 12:00:00"
+ }}
+
+
+ 报告项目:
+
+ {{ reportName }}
+
+
+
+
+
+
+ 姓名
+ {{
+ maskValue(
+ "name",
+ reportParams?.name
+ )
+ }}
+
+
+ 身份证号
+
+ {{
+ maskValue(
+ "id_card",
+ reportParams?.id_card
+ )
+ }}
+
+
+ 手机号
+ {{
+ maskValue(
+ "mobile",
+ reportParams?.mobile
+ )
+ }}
+
+
+
+
+ ✔
+
+
+
+ 身份证检查结果
+
+
+ 身份证信息核验通过
+
+
+
+
+
+ ✔
+
+
+
+ 手机号检测结果
+
+
+ 被查询人姓名与运营商提供的一致
+
+
+ 被查询人身份证与运营商提供的一致
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ featureMap[item.data.apiID]?.name }}
+
+
+
+
+
+
+
+
+
+
+ 报告说明
+
+
+
+ 本报告的数据由用户本人明确授权后,我们才向相关合法存有用户个人数据的机构调取本报告相关内容,本平台只做大数据的获取与分析,仅向用户个人展示参考。
+
+
+ 报告有效期30天 ,过期自动删除。
+
+
+
+ 若您的数据不全面,可能是数据具有延迟性或者合作信息机构未获取到您的数据。若数据有错误请联系客服
+
+
+
+ 本产品所有数据均来自第三方。可能部分数据未公开、数据更新延迟或信息受到限制,贵司不对数据的准确性、真实性、完整性做任何承诺。用户需根据实际情况,结合报告内容自行判断与决策。
+
+
+
+
+
+
+
+
+
+
+
+
+
琼公网安备46010002000584号
+
+
+
+
海南天远大数据科技有限公司版权所有
+
+
+
+
+
diff --git a/src/components/BindPhoneDialog.vue b/src/components/BindPhoneDialog.vue
new file mode 100644
index 0000000..9dcb808
--- /dev/null
+++ b/src/components/BindPhoneDialog.vue
@@ -0,0 +1,256 @@
+
+
+
+
+
+
+
+
绑定手机号码
+
+ 为使用完整功能请绑定手机号码
+
+
+ 如该微信号之前已绑定过手机号,请输入已绑定的手机号
+
+
+
+
+
+
+
+
+ 天远数据
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ 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..89d64e4
--- /dev/null
+++ b/src/components/ClickCaptcha.vue
@@ -0,0 +1,391 @@
+
+
+
+
+
+
+
+
+ 请依次点击 【{{ targetChars.join(',') }}】
+
+
+
+
{{ errorMessage }}
+
{{ successMessage }}
+
点击图片中的目标文字
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/GaugeChart.vue b/src/components/GaugeChart.vue
new file mode 100644
index 0000000..8a5a3ed
--- /dev/null
+++ b/src/components/GaugeChart.vue
@@ -0,0 +1,255 @@
+
+
+
+
+ {{ riskDescription }}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/components/InquireForm.vue b/src/components/InquireForm.vue
new file mode 100644
index 0000000..a04557e
--- /dev/null
+++ b/src/components/InquireForm.vue
@@ -0,0 +1,511 @@
+
+
+
+
+
+
基本信息
+
+ 姓名
+
+
+
+ 身份证号
+
+
+
+
+ 男方姓名
+
+
+
+ 男方身份证号
+
+
+
+ 女方姓名
+
+
+
+ 女方身份证号
+
+
+
+
+
+ 企业名称
+
+
+
+ 统一社会信用代码
+
+
+
+ 汽车类型
+
+
+
+
+
+
+
+
+
+
+
+
+ 银行卡号
+
+
+
+ 手机号
+
+
+
+ 业务日期
+
+
+
+
+
+
+
验证码
+
+
+
+ {{
+ isCountingDown
+ ? `${countdown}s重新获取`
+ : "获取验证码"
+ }}
+
+
+
+
+
+
+
+ 我已阅读并同意
+ 用户协议、
+ 隐私政策
+
+ 、授权书
+
+
+
+
+
+ 示例报告
+
+
+ 立即查询
+
+
+
+
+
+
+
+
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..9401581
--- /dev/null
+++ b/src/components/LRemark.vue
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
\ 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..303f84b
--- /dev/null
+++ b/src/components/LTitle.vue
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/Payment.vue b/src/components/Payment.vue
new file mode 100644
index 0000000..ebeadf3
--- /dev/null
+++ b/src/components/Payment.vue
@@ -0,0 +1,173 @@
+
+
+
+
支付
+
+
+
{{ 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..15595ba
--- /dev/null
+++ b/src/components/QRcode.vue
@@ -0,0 +1,338 @@
+
+
+
+
+
+
+
+
+
+
+
+ ← 左右滑动切换海报
+ →
+
+
分享到好友
+
+
+
+
+
+ 保存图片
+
+
+
+
+
+ 复制链接
+
+
+
+
+
+
+
+
+
+
diff --git a/src/components/QrcodePop.vue b/src/components/QrcodePop.vue
new file mode 100644
index 0000000..885f978
--- /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..8f8cd43
--- /dev/null
+++ b/src/components/RealNameAuthDialog.vue
@@ -0,0 +1,362 @@
+
+
+
+
+
+
+
+
+
+
+
+ 实名认证说明:
+
+
1. 实名认证是提现的必要条件
+
2. 提现金额将转入您实名认证的银行卡账户
+
+ 3.
+ 请确保填写的信息真实有效,否则将影响提现功能的使用
+
+
4. 认证信息提交后将无法修改,请仔细核对
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ isCountingDown
+ ? `${countdown}s重新获取`
+ : "获取验证码"
+ }}
+
+
+
+
+
+
+
+ 我已阅读并同意
+ 《用户协议》
+ 和
+ 《隐私政策》
+ ,并确认以上信息真实有效,将用于提现等资金操作
+
+
+
+
+
+ 确认认证
+
+
+
+
+
+
+
+
diff --git a/src/components/ShareReportButton.vue b/src/components/ShareReportButton.vue
new file mode 100644
index 0000000..9ae9eab
--- /dev/null
+++ b/src/components/ShareReportButton.vue
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+ {{ isLoading ? "生成中..." : (isExample ? "分享示例" : "分享报告") }}
+
+
{{ isExample ? "分享当前示例链接" : "分享链接将在7天后过期" }}
+
+
+
+
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..5a6c6c5
--- /dev/null
+++ b/src/components/WechatOverlay.vue
@@ -0,0 +1,72 @@
+
+
+
+
+ 点击右上角的 然后点击在浏览器中打开
+
+
+
+
+
+
+
+
+
\ 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/useSEO.js b/src/composables/useSEO.js
new file mode 100644
index 0000000..9c2ebae
--- /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/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/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..25f53d5
--- /dev/null
+++ b/src/layouts/HomeLayout.vue
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.title }}
+
+
+
+
+
+
+ 投诉
+
+
+
+
+
+
琼公网安备46010002000584号
+
+
+
+
海南天远大数据科技有限公司版权所有
+
+
+
+
+
+
+
diff --git a/src/layouts/PageLayout.vue b/src/layouts/PageLayout.vue
new file mode 100644
index 0000000..920f7f2
--- /dev/null
+++ b/src/layouts/PageLayout.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
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..ab94bfa
--- /dev/null
+++ b/src/router/index.js
@@ -0,0 +1,421 @@
+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),
+ 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/: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 { isWeChat } = useEnv()
+ const { isAgent, isLoaded } = storeToRefs(agentStore)
+ const { mobile, isLoggedIn } = storeToRefs(userStore)
+
+ // 处理需要登录的页面
+ if (to.meta.requiresAuth && !isAuthenticated) {
+ if (isWeChat.value) {
+ 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/dialogStore.js b/src/stores/dialogStore.js
new file mode 100644
index 0000000..3f90016
--- /dev/null
+++ b/src/stores/dialogStore.js
@@ -0,0 +1,32 @@
+import { defineStore } from 'pinia'
+import { ref } from 'vue'
+
+export const useDialogStore = defineStore('dialog', () => {
+ const showBindPhone = ref(false)
+ const showRealNameAuth = ref(false)
+
+ function openBindPhone() {
+ showBindPhone.value = true
+ }
+
+ function closeBindPhone() {
+ showBindPhone.value = false
+ }
+
+ function openRealNameAuth() {
+ showRealNameAuth.value = true
+ }
+
+ function closeRealNameAuth() {
+ showRealNameAuth.value = false
+ }
+
+ return {
+ showBindPhone,
+ openBindPhone,
+ closeBindPhone,
+ showRealNameAuth,
+ openRealNameAuth,
+ closeRealNameAuth,
+ }
+})
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..94f6ba7
--- /dev/null
+++ b/src/ui/CBehaviorRiskScan.vue
@@ -0,0 +1,709 @@
+
+
+
+
+
+ 暂无风险行为扫描数据
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ 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..270adeb
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/ElementVerification.vue
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+
+
+
身份证二要素验证
+
+
+ {{ getRiskFlagText(sfzeysFlag) }}
+
+
+
+
+
+
+
+
校验项
+
{{ personCheckDetails.ele || '-' }}
+
+
+
校验结果
+
+ {{ getResultText(personCheckDetails.result) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
手机三要素验证
+
+
+ {{ getRiskFlagText(sjsysFlag) }}
+
+
+
+
+
+
+
+
校验项
+
{{ phoneCheckDetails.ele || '-' }}
+
+
+
运营商
+
{{ phoneCheckDetails.phoneCompany || '-' }}
+
+
+
校验结果
+
+ {{ getResultText(phoneCheckDetails.result) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CDWBG8B4D/components/Identity.vue b/src/ui/CDWBG8B4D/components/Identity.vue
new file mode 100644
index 0000000..5228d52
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/Identity.vue
@@ -0,0 +1,255 @@
+
+
+
+
+
+
+
+
+
+
在网时长
+
+
+ {{ getOnlineTimeText(inTime) }}
+
+
+
+
+
+
+
+
在网时长
+
+ {{ getOnlineTimeText(inTime) }}
+
+
+
+
风险等级
+
+ {{ getOnlineTimeRiskText(inTime) }}
+
+
+
+
状态说明
+
{{ getOnlineTimeStatusText(inTime) }}
+
+
+
+
+
+
+
+
+
+
+
+
手机信息验证
+
+
+ {{ getPhoneVailRiskText(phoneVailRiskFlag) }}
+
+
+
+
+
+
+
+
手机状态
+
{{ phoneVailRisks.phoneStatus || '-' }}
+
+
+
运营商
+
{{ phoneVailRisks.phoneCompany || '-' }}
+
+
+
在网时长
+
{{ phoneVailRisks.phoneTimes || '-' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
归属地风险
+
+
+ {{ 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..81d74aa
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/LeasingRiskSection.vue
@@ -0,0 +1,492 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ getRiskFlagText(leasingRiskAssessment.riskFlag) }}
+
+
风险等级
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 近3天申请统计
+
+ 3天
+
+
+
+
+
+ 总申请次数:
+ {{ formatApplicationInterval(leasingRiskAssessment.threeCInstitutionApplicationCountLast3Days) }}
+
+
+ 周末申请次数:
+ {{ formatApplicationInterval(leasingRiskAssessment.threeCInstitutionApplicationCountLast3DaysWeekend) }}
+
+
+ 夜间申请次数:
+ {{ formatApplicationInterval(leasingRiskAssessment.threeCInstitutionApplicationCountLast3DaysNight) }}
+
+
+
+
+
+
+
+
+
+ 近7天申请统计
+
+ 7天
+
+
+
+
+
+ 总申请次数:
+ {{ leasingRiskAssessment.threeCInstitutionApplicationCountLast7Days }}
+
+
+ 周末申请次数:
+ {{ leasingRiskAssessment.threeCInstitutionApplicationCountLast7DaysWeekend }}
+
+
+ 夜间申请次数:
+ {{ leasingRiskAssessment.threeCInstitutionApplicationCountLast7DaysNight }}
+
+
+
+
+
+
+
+
+
+ 近14天申请统计
+
+ 14天
+
+
+
+
+
+ 总申请次数:
+ {{ leasingRiskAssessment.threeCInstitutionApplicationCountLast14Days }}
+
+
+ 周末申请次数:
+ {{ leasingRiskAssessment.threeCInstitutionApplicationCountLast14DaysWeekend }}
+
+
+ 夜间申请次数:
+ {{ leasingRiskAssessment.threeCInstitutionApplicationCountLast14DaysNight }}
+
+
+
+
+
+
+
+
+
+ 近1个月申请统计
+
+ 1个月
+
+
+
+
+
+ 总申请次数:
+ {{ leasingRiskAssessment.threeCInstitutionApplicationCountLastMonth }}
+
+
+ 周末申请次数:
+ {{ leasingRiskAssessment.threeCInstitutionApplicationCountLastMonthWeekend }}
+
+
+ 夜间申请次数:
+ {{ leasingRiskAssessment.threeCInstitutionApplicationCountLastMonthNight }}
+
+
+
+
+
+
+
+
+
+ 近3个月申请统计
+
+ 3个月
+
+
+
+
+
+ 总申请次数:
+ {{ leasingRiskAssessment.threeCInstitutionApplicationCountLast3Months }}
+
+
+ 周末申请次数:
+ {{ leasingRiskAssessment.threeCInstitutionApplicationCountLast3MonthsWeekend }}
+
+
+ 夜间申请次数:
+ {{ leasingRiskAssessment.threeCInstitutionApplicationCountLast3MonthsNight }}
+
+
+
+
+
+
+
+
+
+ 近6个月申请统计
+
+ 6个月
+
+
+
+
+
+ 总申请次数:
+ {{ leasingRiskAssessment.threeCInstitutionApplicationCountLast6Months }}
+
+
+ 周末申请次数:
+ {{ leasingRiskAssessment.threeCInstitutionApplicationCountLast6MonthsWeekend }}
+
+
+ 夜间申请次数:
+ {{ leasingRiskAssessment.threeCInstitutionApplicationCountLast6MonthsNight }}
+
+
+
+
+
+
+
+
+
+ 近12个月申请统计
+
+ 12个月
+
+
+
+
+
+ 总申请次数:
+ {{ leasingRiskAssessment.threeCInstitutionApplicationCountLast12Months }}
+
+
+ 周末申请次数:
+ {{ leasingRiskAssessment.threeCInstitutionApplicationCountLast12MonthsWeekend }}
+
+
+ 夜间申请次数:
+ {{ leasingRiskAssessment.threeCInstitutionApplicationCountLast12MonthsNight }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CDWBG8B4D/components/LoanEvaluationSection.vue b/src/ui/CDWBG8B4D/components/LoanEvaluationSection.vue
new file mode 100644
index 0000000..502835e
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/LoanEvaluationSection.vue
@@ -0,0 +1,414 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ 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..dcae160
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/MultCourtInfoSection.vue
@@ -0,0 +1,543 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ 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..05191d4
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/OverdueRiskSection.vue
@@ -0,0 +1,370 @@
+
+
+
+
+
+
+
+
+
+
+
+ {{ getOverdueStatusText(overdueRiskProduct.hasUnsettledOverdue) }}
+
+
当前逾期状态
+
+
+
+
+
+
+
{{
+ formatInstitutionInterval(overdueRiskProduct.currentOverdueInstitutionCount) }}
+
当前逾期机构数
+
+
+
{{
+ formatAmountInterval(overdueRiskProduct.currentOverdueAmount) }}
+
当前逾期金额
+
+
+
{{
+ formatInstitutionInterval(overdueRiskProduct.settledInstitutionCount) }}
+
已结清机构数
+
+
+
{{
+ formatInstitutionInterval(overdueRiskProduct.totalLoanInstitutions) }}
+
贷款总机构
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ 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) }}
+
+
+
+
+
最近6个月
+
+ 成功次数:
+ {{
+ formatCountInterval(overdueRiskProduct.repaymentSuccessCountLast6Months) }}
+
+
+ 成功金额:
+ {{
+ formatAmountInterval(overdueRiskProduct.repaymentSuccessAmountLast6Months) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ 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..4ec4c1f
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/ReportOverview.vue
@@ -0,0 +1,293 @@
+
+
+
+
+
+
+
+
+
+
+ {{ checkSuggest }}
+
+
+
+
+
+
+
+
+
+
+
+
+ 姓名:
+ {{ maskName(baseInfo.name) }}
+
+
+ 年龄:
+ {{ baseInfo.age }}岁
+
+
+ 性别:
+ {{ baseInfo.sex }}
+
+
+ 手机号:
+ {{ maskPhone(baseInfo.phone) }}
+
+
+ 身份证号:
+ {{ maskIdCard(baseInfo.idCard) }}
+
+
+ 户籍所在地:
+ {{ baseInfo.location }}
+
+
+ 号码归属地:
+ {{ baseInfo.phoneArea }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
反欺诈评分
+
{{ fraudScore === -1 ? '未命中' : fraudScore }}
+
{{ getFraudRiskLevel(fraudScore) }}
+
+
+
+
+
+
信用评分
+
{{ creditScore === -1 ? '未命中' : creditScore }}
+
{{ getCreditLevel(creditScore) }}
+
+
+
+
+
+
验证规则
+
{{ verifyRule || '未评估' }}
+
+
+
+
+
+
反欺诈规则
+
{{ fraudRule || '未评估' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CDWBG8B4D/components/RiskSupervisionSection.vue b/src/ui/CDWBG8B4D/components/RiskSupervisionSection.vue
new file mode 100644
index 0000000..6180e67
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/RiskSupervisionSection.vue
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 最后申请时间
+ {{ riskSupervision.leastApplicationTime || '未知' }}
+
+
+
+
+
+
+
+
同一身份证关联手机号数
+
{{ riskSupervision.rentalRiskListIdCardRelationsPhones || 0 }}
+
+
+
同一手机号关联身份证数
+
{{ riskSupervision.rentalRiskListPhoneRelationsIdCards || 0 }}
+
+
+
+
+
+
+
+
详情信息
+
{{ riskSupervision.details }}
+
+
+
+
+
+
+
✅
+
无关联风险
+
当前未发现关联风险监督问题
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CDWBG8B4D/components/RiskWarning.vue b/src/ui/CDWBG8B4D/components/RiskWarning.vue
new file mode 100644
index 0000000..9c3cc6f
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/RiskWarning.vue
@@ -0,0 +1,388 @@
+
+
+
+
+
+
+
+
+
+
公安重点人员核验产品
+
+
+ {{ getRiskFlagText(highRiskFlag) }}
+
+
+
+
+
+
+
+
+
风险等级
+
+ {{ getRiskFlagText(highRiskFlag) }}
+
+
+
+
检验状态
+
{{ highRiskFlag === 1 ? '命中风险' : highRiskFlag === 2 ? '未命中风险' : '未检验' }}
+
+
+
+
+
+
风险类型详情:
+
+
+
+
+
+ {{ getRiskTypeText(keyPersonCheckList.fontFlag) }}
+
+
+
+
+
+
+
+ {{ getRiskTypeText(keyPersonCheckList.jingJiFontFlag) }}
+
+
+
+
+
+
+
+ {{ getRiskTypeText(keyPersonCheckList.fangAiFlag) }}
+
+
+
+
+
+
+
+ {{ getRiskTypeText(keyPersonCheckList.zhongDianFlag) }}
+
+
+
+
+
+
+
+ {{ getRiskTypeText(keyPersonCheckList.sheJiaoTongFlag) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
涉赌涉诈核验产品
+
+
+ {{ getAntiFraudRiskFlagText(antiFraudInfo) }}
+
+
+
+
+
+
+
+
风险等级
+
+ {{ getAntiFraudRiskFlagText(antiFraudInfo) }}
+
+
+
+
检验状态
+
{{ getAntiFraudStatusText(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..fea97b5
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/RiskWarningSection.vue
@@ -0,0 +1,691 @@
+
+
+
+
+
+
+
+
+
+
+
{{ riskWarning.totalRiskCounts || 0 }}
+
总风险点数量
+
+
+
+
+
+
+
高风险
+
{{ getHighRiskCount() }}
+
+
+
中风险
+
{{ getMiddleRiskCount() }}
+
+
+
风险等级
+
{{ riskWarning.level || '-' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
要素核查
+
+
+ {{ getElementVerificationRisks().length }}条风险
+
+
+
+
+
+
+
+
{{ 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..8ea805a
--- /dev/null
+++ b/src/ui/CDWBG8B4D/components/RiskWarningTab.vue
@@ -0,0 +1,1013 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ riskWarning.totalRiskCounts || 0 }}条
+
总风险点
+
+
+
+
+
+
+
{{ getHighRiskCount() }}条
+
高风险
+
+
+
+
+
+
+
{{ getMiddleRiskCount() }}条
+
中风险
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getRiskLevelText(level) }}
+
+
+
+
+
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ risk.description }}
+
{{ risk.detail }}
+
+
+ {{ risk.level }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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..fbb9acf
--- /dev/null
+++ b/src/ui/CDWBG8B4D/index.vue
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CDWBG8B4D/utils/intervalFormatter.js b/src/ui/CDWBG8B4D/utils/intervalFormatter.js
new file mode 100644
index 0000000..9b88350
--- /dev/null
+++ b/src/ui/CDWBG8B4D/utils/intervalFormatter.js
@@ -0,0 +1,262 @@
+/**
+ * 区间表达式格式化工具
+ * 将数学区间表达式转换为用户友好的文本描述
+ */
+
+/**
+ * 格式化区间表达式
+ * @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, passCount] = interval.split('/')
+ if (applyCount === passCount) {
+ return `${applyCount}次(全部通过)`
+ } else {
+ return `${applyCount}次(通过${passCount}次)`
+ }
+ }
+
+ 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..f20cb09
--- /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..73e1ca9
--- /dev/null
+++ b/src/ui/CFLXG0V4B/components/CaseDetail.vue
@@ -0,0 +1,641 @@
+
+
+
+
+
+
+
+
+ {{ caseData.c_ah || caseData.ah || "暂无案号" }}
+
+ {{ caseData.n_ajjzjd || "状态未知" }}
+
+
+
+
+
+
+
+ 立案: {{ formatDate(caseData.d_larq || caseData.larq) }}
+
+
+
+
+
+ {{ caseData.d_jarq ? '结案' : '发布' }}: {{ formatDate(caseData.d_jarq || caseData.fbrq) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ 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..9d48834
--- /dev/null
+++ b/src/ui/CFLXG0V4B/components/StatisticsOverview.vue
@@ -0,0 +1,410 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ totalCases }}
+ 起涉诉案件中,
+
+ {{ stats.highRiskItems }}
+
+ 0
+ 起高风险案件
+
+ ,涉及 {{ stats.caseTypes.length }} 种案件类型
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ stats.totalRiskItems }}
+
+
风险事项
+
平均{{ (stats.totalRiskItems / totalCases).toFixed(1) }}项/案件
+
+
+
+
+
+
+
+
+
+ {{ stats.highRiskItems }}
+
+
高风险案件
+
占比{{ ((stats.highRiskItems / totalCases) * 100).toFixed(1) }}%
+
+ 失信 {{ stats.sxbzxrCount }}
+ 限高 {{ stats.xgbzxrCount }}
+
+
+
+
+
+
+
+
+
+
+ {{ stats.closedCases }}
+
+
已结案件
+
占比{{ ((stats.closedCases / totalCases) * 100).toFixed(1) }}%
+
+
+
+
+
+
+
+
+
+ {{ stats.caseTypes.length }}
+
+
案件类型
+
涉及多种类型
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
高风险案件
+
{{ stats.highRiskItems }} 起
+
+
+
+
+
中风险案件
+
{{ stats.mediumRiskItems }} 起
+
+
+
+
+
低风险案件
+
{{ stats.lowRiskItems }} 起
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CFLXG0V4B/index.vue b/src/ui/CFLXG0V4B/index.vue
new file mode 100644
index 0000000..bfc2b2e
--- /dev/null
+++ b/src/ui/CFLXG0V4B/index.vue
@@ -0,0 +1,441 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 全部风险
+
+ {{ caseTypeCounts.all }}
+
+
+
+
+
+
+
+
+
+ {{ typeInfo.text }}
+
+ {{ caseTypeCounts[type] || 0 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getCaseTypeText(caseItem.type) }} - {{ caseItem.c_ah || caseItem.ah || '暂无案号' }}
+
+
+
+
+
+
+
+
+ {{ getCaseTypeRiskLevel(caseItem.type).text }}
+
+
+
+
+ {{ caseItem.n_ajjzjd }}
+
+
+
+
+
+
+
+
+
+ 立案: {{ formatDate(caseItem.d_larq || caseItem.larq) }}
+
+
+
+
+
+
+
+ {{ isCaseExpanded(caseItem.id || index, 'case', index) ? '收起详情' : '查看详情' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CFLXG0V4B/utils/lawsuitUtils.js b/src/ui/CFLXG0V4B/utils/lawsuitUtils.js
new file mode 100644
index 0000000..8b225f0
--- /dev/null
+++ b/src/ui/CFLXG0V4B/utils/lawsuitUtils.js
@@ -0,0 +1,302 @@
+// 案件类型映射表
+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 '—'
+
+ // 超过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.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..8a65730
--- /dev/null
+++ b/src/ui/CFLXG3D56.vue
@@ -0,0 +1,1048 @@
+
+
+
+
+
+
+
+
+
借贷违约失信风险查询结果
+
+ {{ 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..35663d8
--- /dev/null
+++ b/src/ui/CIVYZ5733.vue
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+ {{ currentStatus.text }}
+
+
+ {{ currentStatus.description }}
+
+
+
+
+
+
diff --git a/src/ui/CIVYZ9A2B.vue b/src/ui/CIVYZ9A2B.vue
new file mode 100644
index 0000000..c6ce51a
--- /dev/null
+++ b/src/ui/CIVYZ9A2B.vue
@@ -0,0 +1,931 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ 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..b20cf7f
--- /dev/null
+++ b/src/ui/CJRZQ0A03.vue
@@ -0,0 +1,1385 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
借贷申请分析报告
+
本报告统计借贷申请记录和机构情况,帮助评估信贷风险
+
+
+
+
+
+
+
+
+
+
+
+
+ 身份证匹配
+
+
+
+
+
+
+
+
+ 手机号匹配
+
+
+
+
+
+
+
+
+
数据类型说明:
+
+
+
+ 身份证匹配: 通过身份证号码匹配获取的借贷申请记录,能够反映与身份证关联的所有金融机构申请行为
+
+
+
+ 手机号匹配: 通过手机号码匹配获取的借贷申请记录,能够反映与手机号关联的所有金融机构申请行为
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 借贷类别
+ 近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..c6d7f51
--- /dev/null
+++ b/src/ui/CJRZQ4AA8.vue
@@ -0,0 +1,320 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 还款压力分析
+
+
+ 借贷风险评估
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ score
+ }}
+ 得分
+
+
+
+
+
+
+
+ {{ pressureLevel.level }}级还款压力
+
+
+
+
+
+
+
+
+ 0
+ 25
+ 50
+ 75
+ 100
+
+
+
+
+
+
+
{{ 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..c338e5d
--- /dev/null
+++ b/src/ui/CJRZQ5E9F/components/CreditScores.vue
@@ -0,0 +1,440 @@
+
+
+
+
+
+
+
+
+
+
+
综合信用指数
+
基于多维度风险评估的综合评分
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ creditScoreDisplay }}
+ 信用分
+
+
+
+
评分范围: 150-1000
+
+ {{ getCreditScoreLevel() }}
+
+
+
+
+
+
+
+
+ 信用风险评分
+ {{ (creditRiskScore * 100).toFixed(0) }}%
+
+
+
+
+
+
+ 履约金额综合指数
+ {{ (amountComplianceIndex * 100).toFixed(0) }}%
+
+
+
+
+
+
+ 履约笔数综合指数
+ {{ (countComplianceIndex * 100).toFixed(0) }}%
+
+
+
+
+
+
+
+
+
+
+
+
+
专业模型评分
+
星耀Pro系列AI评分模型
+
+
+
+
+
+
+
+
+
+
小额网贷分 V1
+
针对小额网贷风险评估
+
+
+
+
+ {{ formatModelScore(highRiskScore) }}
+
+
350-950
+
+
+
+
+
+
+
+
+
+
小额分期分 V1
+
针对小额分期产品评估
+
+
+
+
+ {{ formatModelScore(midRiskScore) }}
+
+
350-950
+
+
+
+
+
+
+
+
+
+
中大额分期分 V1
+
针对中大额分期产品评估
+
+
+
+
+ {{ formatModelScore(lowRiskScore) }}
+
+
350-950
+
+
+
+
+
+
+
+
+
+
+
+
+
+
近5次
+
+
+ {{ (recent5PaymentRatio * 100).toFixed(0) }}%
+
+
+
+
金额: {{ (recent5AmountRatio * 100).toFixed(0) }}%
+
+
+
+
+
+
+
近20次
+
+
+ {{ (recent20PaymentRatio * 100).toFixed(0) }}%
+
+
+
+
小贷: {{ (recent20SmallLoanRatio * 100).toFixed(0) }}%
+
+
+
+
+
+
+
近90天
+
+
+ {{ (recent90DayRatio * 100).toFixed(0) }}%
+
+
+
+
金额: {{ (recent90AmountRatio * 100).toFixed(0) }}%
+
+
+
+
+
+
+
近50次
+
+
+ {{ (recent50PaymentRatio * 100).toFixed(0) }}%
+
+
+
+
成功率: {{ (recent50PaymentRatio * 100).toFixed(0) }}%
+
+
+
+
+
+
+
近100次
+
+
+ {{ (recent100PaymentRatio * 100).toFixed(0) }}%
+
+
+
+
成功率: {{ (recent100PaymentRatio * 100).toFixed(0) }}%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CJRZQ5E9F/components/InstitutionAnalysis.vue b/src/ui/CJRZQ5E9F/components/InstitutionAnalysis.vue
new file mode 100644
index 0000000..ad928f1
--- /dev/null
+++ b/src/ui/CJRZQ5E9F/components/InstitutionAnalysis.vue
@@ -0,0 +1,313 @@
+
+
+
+
+
+
+
+
+
+
+
+
消费金融类
+
{{ formatMetricValue(consumerFinanceInstitutions) }}
+
家机构
+
+
+
+
小贷担保类
+
{{ formatMetricValue(smallLoanSuccessInstitutions) }}
+
家机构
+
+
+
+
网络贷款类
+
{{ formatMetricValue(networkLoanInstitutions) }}
+
家机构
+
+
+
+
+
+
+
+
+
+
+
+
+ 时间段
+ 最大
+ 最小
+ 平均
+ 总计
+
+
+
+
+
+ {{ period === 'recent5' ? '近5次' : period === 'recent20' ? '近20次' : period === 'recent50' ? '近50次' : '近100次' }}
+
+ {{ formatAmount(stats.max) }}
+ {{ formatAmount(stats.min) }}
+ {{ formatAmount(stats.avg) }}
+ {{ formatAmount(stats.sum) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ highRiskInstitutions }}
+
家
+
+
+
+
+
+
+
+
+
{{ mediumRiskInstitutions }}
+
家
+
+
+
+
+
+
+
+
+
{{ lowRiskInstitutions }}
+
家
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CJRZQ5E9F/components/LoanBehaviorAnalysis.vue b/src/ui/CJRZQ5E9F/components/LoanBehaviorAnalysis.vue
new file mode 100644
index 0000000..955e1e6
--- /dev/null
+++ b/src/ui/CJRZQ5E9F/components/LoanBehaviorAnalysis.vue
@@ -0,0 +1,681 @@
+
+
+
+
+
+
+
+
+
+
+
机构类型分布
+
不同类型贷款机构数量统计
+
+
+
+
+
+
+
+
+
{{ formatMetricValue(consumerFinanceInstitutions) }}
+
家机构
+
+
+
+
+
+
+
+
+
{{ formatMetricValue(smallLoanInstitutions) }}
+
家机构
+
+
+
+
+
+
+
+
+
{{ formatMetricValue(networkLoanInstitutions) }}
+
家机构
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ formatMetricValue(historicalSuccessPayments) }}
+
笔
+
+
+
+
+
+
+
+
+
{{ formatMetricValue(historicalFailurePayments) }}
+
笔
+
+
+
+
+
+
+
+
+
{{ overallSuccessRate }}
+
%
+
+
+
+
+
+
+
+
+
+
+
+
时间维度还款分析
+
不同时间段的还款成功和失败统计
+
+
+
+
+
+
还款成功率趋势图
+
+
+
+ 100%
+ 75%
+ 50%
+ 25%
+ 0%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 成功率: {{ period.successRate.toFixed(1) }}%
+ {{ period.success }}/{{ period.total }}笔
+
+
+
+
+ {{ period.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ period.name }}
+
+
总{{ period.total }}笔
+
+
+
+
+
+ 还款成功率
+
+ {{ period.successRate.toFixed(1) }}%
+
+
+
+
+
+
+
+
+
+
+
{{ period.success }}
+
成功笔数
+
+
+
+
+
{{ period.failure }}
+
失败笔数
+
+
+
+
+
{{
+ formatAmount(period.amounts.success) }}
+
-
+
成功金额
+
+
+
+
+
{{
+ formatAmount(period.amounts.failure) }}
+
-
+
失败金额
+
+
+
+
+
+
+
+
+
+
+
数据统计: {{ timePeriods.length }} 个时间维度
+
+ 平均成功率: {{ averageSuccessRate.toFixed(1) }}%
+ 最高成功率: {{ maxSuccessRate.toFixed(1) }}%
+ 最低成功率: {{ minSuccessRate.toFixed(1) }}%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ item.period }}
+
{{ item.description }}
+
+
+
+
+ {{ item.hasOverdue ? '有逾期' : '无逾期' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 逾期机构数量
+ {{ 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..e52e6aa
--- /dev/null
+++ b/src/ui/CJRZQ5E9F/components/RiskAdvice.vue
@@ -0,0 +1,982 @@
+
+
+
+
+
+
+
+
+
+
+
+
{{ overallRiskLevel.title }}
+
{{ overallRiskLevel.subtitle }}
+
+
+
{{ overallRiskScore }}
+
风险分
+
+
+
+ {{ overallRiskLevel.description }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ recommendation.title }}
+
+ {{ recommendation.priorityText }}
+
+
+
{{ 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..ae3faa7
--- /dev/null
+++ b/src/ui/CJRZQ5E9F/components/RiskIndicators.vue
@@ -0,0 +1,717 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 当前逾期
+ {{ formatMetricValue(currentOverdueInstitutions) }}家机构
+
+
+ 近期逾期
+ 多个时段
+
+
+ 信用风险评分
+ {{ (creditRiskScore * 100).toFixed(0) }}%
+
+
+
+
+
+
+
+
+ 最近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.ratio * 100).toFixed(0) }}%
+
+
+
+
{{ item.period }}
+
+
+
+
+
+
+
+
+
+ 近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..f21adca
--- /dev/null
+++ b/src/ui/CJRZQ5E9F/components/RiskOverview.vue
@@ -0,0 +1,358 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
综合风险等级
+
基于多维度数据分析的风险评估
+
+
+
+
{{ riskLevel }}
+
{{ riskDescription }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ currentOverdueInstitutions }}家
+
+
+
+
+
+
+
+
+
+
+
+
+ 贷款总机构数
+ {{ formatMetricValue(totalInstitutions) }}
+
+
+ 已结清机构数
+ {{ formatMetricValue(settledInstitutions) }}
+
+
+ 信用贷款时长
+ {{ formatDays(creditLoanDuration) }}
+
+
+ 最近一次交易距今
+ {{ formatDays(lastTransactionDays) }}
+
+
+ 最近一次还款距今
+ {{ formatDays(lastRepaymentDays) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
最近1天有{{ formatMetricValue(recent1DayInstitutions) }}家机构贷款申请
+
+
高频
+
+
+
+
+
+
+
+
最近7天有{{ formatMetricValue(recent7DayInstitutions) }}家机构贷款申请
+
+
注意
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CJRZQ5E9F/components/TimeTrendAnalysis.vue b/src/ui/CJRZQ5E9F/components/TimeTrendAnalysis.vue
new file mode 100644
index 0000000..0cb008f
--- /dev/null
+++ b/src/ui/CJRZQ5E9F/components/TimeTrendAnalysis.vue
@@ -0,0 +1,1354 @@
+
+
+
+
+
+
+
+
+
+
+
+
交易金额趋势图
+
+
+
+ {{ formatAmount(maxAmountTrend) }}
+ {{ formatAmount(Math.round(maxAmountTrend * 0.75)) }}
+ {{ formatAmount(Math.round(maxAmountTrend * 0.5)) }}
+ {{ formatAmount(Math.round(maxAmountTrend * 0.25)) }}
+ 0元
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 金额: {{ formatAmount(point.value) }}
+
+
+
+
+ {{ point.label.replace('最近', '近').replace('天', '日') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ formatAmount(maxAmountTrend) }}
+
峰值
+
+
+
{{ formatAmount(minAmountTrend) }}
+
低值
+
+
+
{{ formatAmount(avgAmountTrend) }}
+
均值
+
+
+
+
+
+
+
+
+
+
+
+
交易笔数趋势图
+
+
+
+ {{ maxCountTrend }}笔
+ {{ Math.round(maxCountTrend * 0.75) }}笔
+ {{ Math.round(maxCountTrend * 0.5) }}笔
+ {{ Math.round(maxCountTrend * 0.25) }}笔
+ 0笔
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 笔数: {{ item.value }}笔
+
+
+
+
+ {{ item.label }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ maxCountTrend }}
+
峰值
+
+
+
{{ minCountTrend }}
+
低值
+
+
+
{{ avgCountTrend.toFixed(0) }}
+
均值
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ rate.period }}
+
+ {{ (rate.rate * 100).toFixed(1) }}%
+
+
+
+
+ 成功: {{ rate.success }}笔
+ 失败: {{ rate.failure }}笔
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ item.period }}
+
+ 总数: {{ item.total
+ }}
+ 新增:
+ {{ item.new }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ item.trendText }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ item.period }}
+ {{ formatAmount(item.totalAmount) }}
+
+
+
+
+ 最大单笔
+ {{ formatAmount(item.maxAmount) }}
+
+
+ 最小单笔
+ {{ formatAmount(item.minAmount) }}
+
+
+ 平均金额
+ {{ formatAmount(item.avgAmount) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ 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..c3b875b
--- /dev/null
+++ b/src/ui/CJRZQ5E9F/index.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CJRZQ5E9F/utils/simpleSplitter.js b/src/ui/CJRZQ5E9F/utils/simpleSplitter.js
new file mode 100644
index 0000000..e01f1cf
--- /dev/null
+++ b/src/ui/CJRZQ5E9F/utils/simpleSplitter.js
@@ -0,0 +1,301 @@
+/**
+ * 贷款风险报告(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
+ }
+ });
+ }
+
+ // 移除原始的CJRZQ5E9F数据,添加拆分后的模块
+ const otherData = reportData.filter(item => item.data?.apiID !== 'CJRZQ5E9F');
+
+ 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..7a87806
--- /dev/null
+++ b/src/ui/CJRZQ8203.vue
@@ -0,0 +1,913 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
借贷行为分析报告
+
本报告统计审批额度与应还情况,帮助评估信贷风险
+
+
+
+
+
+
+
+
+
+
+ 身份证数据
+
+
+
+
+
+
+
+
+ 手机号数据
+
+
+
+
+
+
+
+
数据类型说明:
+
+
+
+ 身份证数据: 通过身份证号码匹配获取的借贷记录,反映与身份证关联的所有借贷行为
+
+
+
+ 手机号数据: 通过手机号码匹配获取的借贷记录,反映与手机号关联的所有借贷行为
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 时间
+ 借贷机构数
+ 借贷次数
+ 审批额度
+
+
+
+ {{ 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..8801ac6
--- /dev/null
+++ b/src/ui/CQCXG7A2B.vue
@@ -0,0 +1,38 @@
+
+
+
+
+
名下车辆
+
此人名下拥有车辆:{{ data?.carNum }} 辆
+
+
+
+
+
+
+
+
+
+
\ 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..46116a5
--- /dev/null
+++ b/src/ui/CQYGL3F8E/components/Abnormal.vue
@@ -0,0 +1,368 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ ⚠️
+
+
+
{{ group.companyName }}
+
异常企业
+
+
+
+
{{ group.totalAbnormals }}
+
异常记录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getStatusText(abnormal.removeDate) }}
+
+
+ {{ abnormal.putDepartment }}
+
+
+
+ {{ abnormal.putReason || '经营异常' }}
+
+
+
+ 列入: {{ formatDate(abnormal.putDate) }}
+
+ |
+
+ 移出: {{ formatDate(abnormal.removeDate) }}
+
+
+ 未移出
+
+
+
+
+
+ {{ calculateDuration(abnormal.putDate, abnormal.removeDate) }}天
+
+
持续时长
+
+
+
+
+
+
+ 移出原因: {{ abnormal.removeReason }}
+
+
+ 移出部门: {{ abnormal.removeDepartment }}
+
+
+ 📅 {{ formatDate(abnormal.putDate) }}
+
+
+
+
+
+
+
{{
+ isAbnormalExpanded(abnormal.putReason, 'abnormal', index) ? '收起详情' : '查看详情'
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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..f519158
--- /dev/null
+++ b/src/ui/CQYGL3F8E/components/FinancingHistory.vue
@@ -0,0 +1,345 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 💰
+
+
+
{{ group.companyName }}
+
融资企业
+
+
+
+
{{ group.totalFinancings }}
+
融资轮次
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ financing.round || '融资' }}
+
+ {{ financing.companyName }}
+
+
+
+ 投资方: {{ financing.investorName }}
+
+ |
+
+ 披露: {{ formatDate(financing.pubTime) }}
+
+
+
+
+
{{ financing.money || '—' }}
+
融资金额
+
+
+
+
+
+
+ 估值: {{ financing.value }}
+
+
+ 股权: {{ financing.share }}
+
+
+ 融资时间: {{ formatDate(financing.date) }}
+
+
+ 📰 有新闻
+
+
+
+
+
+
+
{{
+ isFinancingExpanded(financing.companyName, 'financingHistory', index) ? '收起详情' : '查看详情'
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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..e597026
--- /dev/null
+++ b/src/ui/CQYGL3F8E/components/InvestHistory.vue
@@ -0,0 +1,410 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 🏢
+
+
+
{{ group.investorCompany }}
+
投资企业
+
+
+
+
{{ group.totalInvestments }}
+
投资项目
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ investment.name }}
+
+
+ {{ getPersonTypeText(investment.personType) }}法人
+
+ 成立: {{ formatDate(investment.estiblishTime) }}
+
+
+
+
{{ investment.percent || '—' }}
+
持股比例
+
+
+
+
+
+
+ 注册资本: {{ formatCapital(investment.regCapital) }}
+
+
+ 投资金额: {{ formatAmount(investment.amount) }}
+
+
+ {{ investment.regStatus }}
+
+
+ ⚠️ 已退出 ({{ formatDate(investment.withdrawalTime) }})
+
+
+
+
+
+
+
{{
+ isCompanyExpanded(investment.name, 'investHistory', index) ? '收起详情' : '查看详情'
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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..9cda2c0
--- /dev/null
+++ b/src/ui/CQYGL3F8E/components/Investment.vue
@@ -0,0 +1,504 @@
+
+
+
+
+
+
+
+
+
+
{{ company.orgName }}
+
+
+
+
+
+
+ {{ getRelationshipText(relation) }}
+
+
+
+
+
+
+
+
+ {{ company.basicInfo.regStatus }}
+
+
+ {{ formatCapital(company.basicInfo.regCapital, company.basicInfo.regCapitalCurrency) }}
+
+
+
+
+ {{ formatDate(company.basicInfo.estiblishTime) }}
+
+
+
+
+
+
+
{{
+ isCompanyExpanded(company.orgName, 'invest', index) ? '收起详情' : '查看详情'
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CQYGL3F8E/components/Lawsuit.vue b/src/ui/CQYGL3F8E/components/Lawsuit.vue
new file mode 100644
index 0000000..469078c
--- /dev/null
+++ b/src/ui/CQYGL3F8E/components/Lawsuit.vue
@@ -0,0 +1,3074 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{
+ totalCompanies
+ }}
+ 家关联企业中,
+ {{
+ allLawsuitStats?.totalCompanies || 0
+ }}
+ 0
+ 家存在涉诉风险
+
+ (高风险:
+ {{ allLawsuitStats?.highRiskCompanies }}
+ 家)
+
+
+ ,共
+ {{ allLawsuitStats?.totalRiskItems }}
+ 个风险事项
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ allLawsuitStats.totalRiskItems }}
+
+
+ 风险事项
+
+
+ 平均{{
+ (
+ allLawsuitStats.totalRiskItems /
+ allLawsuitStats.totalCompanies
+ ).toFixed(1)
+ }}项/企业
+
+
+
+
+
+
+
+
+
+
+ {{ allLawsuitStats.totalCompanies }}
+
+
+ 风险企业
+
+
+ 占比关联企业{{
+ (allLawsuitStats.totalCompanies /
+ totalCompanies) *
+ 100
+ }}%
+
+
+ 高风险
+ {{
+ allLawsuitStats.highRiskCompanies
+ }}
+ 中风险
+ {{
+ allLawsuitStats.mediumRiskCompanies
+ }}
+
+
+
+
+
+
+
+
+
+
+ {{ allLawsuitStats.normalOperatingCompanies }}
+
+
+ 正常经营企业
+
+
+ 占比{{
+ Math.round(
+ (allLawsuitStats.normalOperatingCompanies /
+ totalCompanies) *
+ 100
+ )
+ }}%
+
+
+
+
+
+
+
+
+
+
+ {{ allLawsuitStats.canceledCompanies }}
+
+
+ 吊销注销企业
+
+
+ 占比{{
+ Math.round(
+ (allLawsuitStats.canceledCompanies /
+ totalCompanies) *
+ 100
+ )
+ }}%
+
+
+
+
+
+
+
+
+
+
+
+
高风险企业
+
+ {{ allLawsuitStats.highRiskCompanies }} 家
+
+
+
+
+
+
中风险企业
+
+ {{ allLawsuitStats.mediumRiskCompanies }} 家
+
+
+
+
+
+
低风险企业
+
+ {{ allLawsuitStats.lowRiskCompanies }} 家
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 全部风险
+
+ {{ caseTypeCompanyCounts.all }}
+
+
+
+
+
+
+
+
+
+ {{ typeInfo.text }}
+
+ {{ caseTypeCompanyCounts[type] || 0 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ company.orgName }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ caseType.text }}
+
+
+ +{{
+ getCompanyCaseTypes(company).length - 3
+ }}
+
+
+
+ 无涉诉信息
+
+
+
+
+
+
+ 案件:
+ {{
+ getLawsuitStats(company).total || 0
+ }}
+
+
+
+
+ {{ company.basicInfo.regStatus }}
+
+
+
+
+
+
+
{{
+ isCompanyExpanded(company.orgName, "lawsuit", index)
+ ? "收起详情"
+ : "查看详情"
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CQYGL3F8E/components/Punishment.vue b/src/ui/CQYGL3F8E/components/Punishment.vue
new file mode 100644
index 0000000..adeb5da
--- /dev/null
+++ b/src/ui/CQYGL3F8E/components/Punishment.vue
@@ -0,0 +1,367 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ ⚖️
+
+
+
{{ group.companyName }}
+
被处罚企业
+
+
+
+
{{ group.totalPunishments }}
+
处罚记录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ punishment.type || '行政处罚' }}
+
+
+ {{ punishment.typeSecond }}
+
+
+
+ {{ punishment.punishName || punishment.punishNumber || '行政处罚决定' }}
+
+
+
+ {{ punishment.departmentName || '处罚部门' }}
+
+ |
+
+ {{ formatDate(punishment.decisionDate) }}
+
+
+ {{ punishment.punishStatus }}
+
+
+
+
+
+ {{ formatPecuniary(punishment.pecuniary) }}
+
+
处罚金额
+
+
+
+
+
+
+ {{ punishment.reason }}
+
+
+ 法人: {{ punishment.legalPersonName }}
+
+
+ 来源: {{ punishment.source }}
+
+
+
+
+
+
+
{{
+ isPunishmentExpanded(punishment.punishNumber, 'punishment', index) ? '收起详情' : '查看详情'
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ 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..b904956
--- /dev/null
+++ b/src/ui/CQYGL3F8E/components/SeniorExecutive.vue
@@ -0,0 +1,466 @@
+
+
+
+
+
+
+
+
+
+
+
{{ company.orgName }}
+
+
+
+
+
+
+ {{ getRelationshipText(relation) }}
+
+
+
+
+
+
+
+
+ {{ company.basicInfo.regStatus }}
+
+
+ {{ formatCapital(company.basicInfo.regCapital, company.basicInfo.regCapitalCurrency) }}
+
+
+
+
+ {{ formatDate(company.basicInfo.estiblishTime) }}
+
+
+
+
+
+
+
{{
+ isCompanyExpanded(company.orgName, 'manager', index) ? '收起详情' : '查看详情'
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CQYGL3F8E/components/TaxRisk/OwnTax.vue b/src/ui/CQYGL3F8E/components/TaxRisk/OwnTax.vue
new file mode 100644
index 0000000..6d343c7
--- /dev/null
+++ b/src/ui/CQYGL3F8E/components/TaxRisk/OwnTax.vue
@@ -0,0 +1,350 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 💰
+
+
+
{{ group.companyName }}
+
欠税企业
+
+
+
+
{{ group.totalOwnTax }}
+
欠税记录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ tax.type || '税务' }}
+
+ {{ tax.taxCategory || '欠税' }}
+
+
+
+ 纳税人: {{ tax.name }}
+
+ |
+
+ 发布: {{ formatDate(tax.publishDate) }}
+
+
+
+
+
{{ tax.ownTaxAmount || '—' }}
+
欠税金额
+
+
+
+
+
+
+ 识别号: {{ tax.taxIdNumber }}
+
+
+ 纳税人类型: {{ tax.taxpayerType }}
+
+
+ 余额: {{ tax.ownTaxBalance }}
+
+
+ 法人: {{ tax.legalpersonName }}
+
+
+
+
+
+
+
{{
+ isTaxExpanded(tax.taxIdNumber, 'ownTax', index) ? '收起详情' : '查看详情'
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CQYGL3F8E/components/TaxRisk/TaxContravention.vue b/src/ui/CQYGL3F8E/components/TaxRisk/TaxContravention.vue
new file mode 100644
index 0000000..031ec93
--- /dev/null
+++ b/src/ui/CQYGL3F8E/components/TaxRisk/TaxContravention.vue
@@ -0,0 +1,342 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ ⚠️
+
+
+
{{ group.companyName }}
+
违法企业
+
+
+
+
{{ group.totalContraventions }}
+
违法记录
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ contravention.case_type || '税收违法' }}
+
+ {{ contravention.taxpayer_name }}
+
+
+
+ 违法ID: {{ contravention.id }}
+
+ |
+
+ 发布: {{ formatDate(contravention.publish_time) }}
+
+
+
+
+
#{{ contravention.id }}
+
案件编号
+
+
+
+
+
+
+ 纳税人: {{ contravention.taxpayer_name }}
+
+
+ 税务机关: {{ contravention.department }}
+
+
+ 发布时间: {{ formatDate(contravention.publish_time) }}
+
+
+
+
+
+
+
{{
+ isContraventionExpanded(contravention.id, 'taxContravention', index) ? '收起详情' : '查看详情'
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/CQYGL3F8E/components/TaxRisk/index.vue b/src/ui/CQYGL3F8E/components/TaxRisk/index.vue
new file mode 100644
index 0000000..f497694
--- /dev/null
+++ b/src/ui/CQYGL3F8E/components/TaxRisk/index.vue
@@ -0,0 +1,211 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 涉及企业
+ {{ 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..8621098
--- /dev/null
+++ b/src/ui/CQYGL3F8E/index.vue
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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..7f68c75
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/AntiFraudInfoSection.vue
@@ -0,0 +1,408 @@
+
+
+
+
+
+
+
+
+
+ 涉赌涉诈风险评估
+
+
+
+
+ {{ overallRiskLevel.level }}
+
+
风险等级
+
+
+
+ {{ riskItemCount }}
+
+
风险项数量
+
+
+
+
+
+
+
+
+
+
+ {{ getRiskLevelIndicatorText(item.riskLevel) }}
+
+
+
+
+
+
+
+
+
{{ item.name }}
+
+ {{ getItemRiskDescription(key, item.riskLevel) }}
+
+
+
+
+
+
+
+ {{ getRiskLevelText(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..17fd032
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/ApplicationStatisticsSection.vue
@@ -0,0 +1,416 @@
+
+
+
+
+
+
+
+
+
+ 借贷行为概览
+
+
+
+
+ {{ applicationStatistics?.totalApplicationCount || 0 }}
+
+
总申请机构数
+
+
+
+ {{ formatDaysSinceLastApplication }}
+
+
距最近申请
+
+
+
+
+
+
+
+
+ 机构类型分布
+
+
+
+
+
+
+
+
+
+
+
+
+ 消费分期类
+
+
+ {{ applicationStatistics?.consumptionInstallmentApplicationCount || 0 }} 家
+
+
+
+
+
+ 网络贷款类
+
+
+ {{ applicationStatistics?.onlineLoanApplicationCount || 0 }} 家
+
+
+
+
+
+ 其他类型
+
+
+ {{ applicationStatistics?.otherApplicationCount || 0 }} 家
+
+
+
+
+
+
+
+
+
+ 时间分布统计
+
+
+
+
+
+
+
+
+
+
+ 近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..1c81277
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/BaseInfoSection.vue
@@ -0,0 +1,109 @@
+
+
+
+
+
+
+
+
+
+ 个人信息
+
+
+
+ 姓名
+ {{ 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..f014a0a
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/CourtRiskInfoSection.vue
@@ -0,0 +1,594 @@
+
+
+
+
+
+
+
+
+
+ 法院风险概览
+
+
+
+
+ {{ courtRiskInfos?.length || 0 }}
+
+
法院案件数
+
+
+
+ {{ courtRiskInfos?.length > 0 ? '有风险' : '无风险' }}
+
+
风险状态
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ getCaseTypeIcon(type) }}
+
+ {{ typeInfo.count }}
+
+
{{ getCaseTypeShortName(type) }}
+
+ {{ typeInfo.count > 0 ? '有风险' : '无风险' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getCaseTypeIcon(caseType) }}
+
+
{{ 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..fb67aac
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/CreditDetailSection.vue
@@ -0,0 +1,210 @@
+
+
+
+
+
+
+
+
+
+ 授信概览
+
+
+
+ {{ 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..37c418c
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/LendingStatisticsSection.vue
@@ -0,0 +1,600 @@
+
+
+
+
+
+
+
+
+
+ 放款概览
+
+
+
+
+ {{ lendingStatistics?.totalLendingInstitutionCount || 0 }}
+
+
放贷机构总数
+
+
+
+ {{ getTotalLendingStatus }}
+
+
放款状态
+
+
+
+
+
+
+
+
+ 放贷机构类型分布
+
+
+
+
+
+
+
+
+
+
+
+
+ 分期类放款机构
+
+
+ {{ lendingStatistics?.installmentLendingInstitutionCount || 0 }} 家
+
+
+
+
+
+ 网络贷款类放款机构
+
+
+ {{ lendingStatistics?.onlineLendingInstitutionCount || 0 }} 家
+
+
+
+
+
+
+
+
+
+ 放贷时间分布
+
+
+
+
+
+
+
+
+
+
+ 近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) }}
+
+
+
+
+
+
+
+
+
+ ✅
+
+
+
放款记录正常
+
+ 近24个月内未检测到放款记录,或放款行为正常。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/DWBG6A2C/components/OverdueRecordSection.vue b/src/ui/DWBG6A2C/components/OverdueRecordSection.vue
new file mode 100644
index 0000000..cee2825
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/OverdueRecordSection.vue
@@ -0,0 +1,528 @@
+
+
+
+
+
+
+
+
+
+ 逾期概览
+
+
+
+
+ {{ 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..e251b6b
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/PerformanceStatisticsSection.vue
@@ -0,0 +1,494 @@
+
+
+
+
+
+
+
+
+
+ 履约概览
+
+
+
+
+ {{ 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..8e31473
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/RentalBehaviorSection.vue
@@ -0,0 +1,787 @@
+
+
+
+
+
+
+
+
+
+ 租赁行为概览
+
+
+
+
+ {{ get12MonthsApplicationCount }}
+
+
近12个月申请次数
+
+
+
+ {{ get12MonthsInstitutionCount }}
+
+
近12个月申请机构数
+
+
+
+
+
+
+
+
+ 租赁申请时间分布
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 近期活动(高风险关注期)
+
+
+
+
+
+ 📅
+ 近3天租赁活动
+
+
+
+ 📊 申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast3Days) }} 次
+
+
+
+ 🏢 申请机构数
+
+ {{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast3Days) }} 家
+
+
+
+ 🌙 周末申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast3DaysWeekend) }} 次
+
+
+
+ 🌃 夜间申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast3DaysNight) }} 次
+
+
+
+
+
+
+
+
+ 📅
+ 近7天租赁活动
+
+
+
+ 📊 申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast7Days) }} 次
+
+
+
+ 🏢 申请机构数
+
+ {{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast7Days) }} 家
+
+
+
+ 🌙 周末申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast7DaysWeekend) }} 次
+
+
+
+ 🌃 夜间申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast7DaysNight) }} 次
+
+
+
+
+
+
+
+
+ 📅
+ 近14天租赁活动
+
+
+
+ 📊 申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast14Days) }} 次
+
+
+
+ 🏢 申请机构数
+
+ {{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast14Days) }} 家
+
+
+
+ 🌙 周末申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast14DaysWeekend) }} 次
+
+
+
+ 🌃 夜间申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast14DaysNight) }} 次
+
+
+
+
+
+
+
+
+ 📅
+ 近1个月租赁活动
+
+
+
+ 📊 申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast1Month) }} 次
+
+
+
+ 🏢 申请机构数
+
+ {{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast1Month) }} 家
+
+
+
+ 🌙 周末申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast1MonthWeekend) }} 次
+
+
+
+ 🌃 夜间申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast1MonthNight) }} 次
+
+
+
+
+
+
+
+
+
+
+ 中期租赁活动
+
+
+
+
+
+ 📅
+ 近3个月租赁活动
+
+
+
+ 📊 申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast3Months) }} 次
+
+
+
+ 🏢 申请机构数
+
+ {{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast3Months) }} 家
+
+
+
+ 🌙 周末申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast3MonthsWeekend) }} 次
+
+
+
+ 🌃 夜间申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast3MonthsNight) }} 次
+
+
+
+
+
+
+
+
+ 📅
+ 近6个月租赁活动
+
+
+
+ 📊 申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast6Months) }} 次
+
+
+
+ 🏢 申请机构数
+
+ {{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast6Months) }} 家
+
+
+
+ 🌙 周末申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast6MonthsWeekend) }} 次
+
+
+
+ 🌃 夜间申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast6MonthsNight) }} 次
+
+
+
+
+
+
+
+
+
+
+ 长期租赁活动
+
+
+
+
+
+ 📅
+ 近12个月租赁活动
+
+
+
+ 📊 申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast12Months) }} 次
+
+
+
+ 🏢 申请机构数
+
+ {{ getInstitutionCount(rentalBehavior?.rentalApplicationInstitutionsLast12Months) }} 家
+
+
+
+ 🌙 周末申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast12MonthsWeekend) }} 次
+
+
+
+ 🌃 夜间申请次数
+
+ {{ getApplicationCount(rentalBehavior?.rentalApplicationCountLast12MonthsNight) }} 次
+
+
+
+
+
+
+
+
+
+
+ 特殊时间段活动分析
+
+
+
+
+
+
+
+
+
风险提示:
+
• 周末申请:可能存在异常行为模式
+
• 夜间申请:需关注是否存在规避监管的行为
+
• 高频申请:短期内多次申请可能存在套现风险
+
+
+
+
+
+
+
+
+ 🚨
+
+
+
高频租赁风险警告
+
+ 检测到近期高频租赁申请行为,可能存在套现、欺诈或资金链紧张等风险。
+
+
+
+ 高频时段:
+ {{ 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..5840a0d
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/RiskListSection.vue
@@ -0,0 +1,369 @@
+
+
+
+
+
+
+
+
+
+ 名单核查概览
+
+
+
+
+ {{ riskCount }}
+
+
命中名单数
+
+
+
+ {{ riskCount > 0 ? '有风险' : '无风险' }}
+
+
综合评估
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ item.name }}
+
{{ item.description }}
+
+
+
+ {{ getSeverityText(item.severity) }}级
+
+
+
+
+
+
+
+
+
+
+ {{ item.hasRisk ? '✕' : '✓' }}
+
+
+
+
+ {{ item.hasRisk ? '命中' : '未命中' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ⚠️
+
+
+
高风险名单警告
+
+ 命中多个高风险名单,建议立即停止业务并进行详细核实。
+
+
+ 命中名单:
+ {{ highRiskItemNames.join('、') }}
+
+
+
+
+
+
+
+
+
+ ✅
+
+
+
风险名单核查通过
+
+ 未命中任何风险名单,各项指标正常。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/DWBG6A2C/components/RiskPointSection.vue b/src/ui/DWBG6A2C/components/RiskPointSection.vue
new file mode 100644
index 0000000..59f90e2
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/RiskPointSection.vue
@@ -0,0 +1,370 @@
+
+
+
+
+
+
+
+
+
+ 风险概览
+
+
+
+
{{ totalRiskCount }}
+
风险点总数
+
+
+
+ {{ totalRiskCount > 0 ? '有风险' : '无风险' }}
+
+
综合评估
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ riskItem.icon }}
+
+
+
+
{{ riskItem.name }}
+
{{ riskItem.description }}
+
+
+
+ {{ riskItem.value }}个月
+
+
+
+
+
+
+
+
+
+
+ {{ riskItem.hasRisk ? '✕' : '✓' }}
+
+
+
+
+ {{ getRiskLevelText(riskItem) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ⚠️
+
+
+
高风险警告
+
+ 检测到多个高风险项目,建议谨慎处理。特别关注司法涉诉、公安重点人员等关键风险指标。
+
+
+
+
+
+
+
+
+
+ ✅
+
+
+
风险评估通过
+
+ 未检测到明显风险项目,各项指标表现良好。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/DWBG6A2C/components/RiskSupervisionSection.vue b/src/ui/DWBG6A2C/components/RiskSupervisionSection.vue
new file mode 100644
index 0000000..d3bf49c
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/RiskSupervisionSection.vue
@@ -0,0 +1,301 @@
+
+
+
+
+
+
+
+
+
+ 关联风险概览
+
+
+
+
+ {{ getOverallRiskStatus }}
+
+
关联风险状态
+
+
+
+ {{ totalAssociations }}
+
+
关联项目总数
+
+
+
+
+
+
+
+
+ 身份证关联分析
+
+
+
+ 同一身份证关联手机号数
+
+ {{ riskSupervision?.rentalRiskListIdCardRelationsPhones || 0 }} 个
+
+
+
+ 同一手机号关联身份证数
+
+ {{ riskSupervision?.rentalRiskListPhoneRelationsIdCards || 0 }} 个
+
+
+
+
+
+
+
+
+
+ 时间信息
+
+
+ 最后申请时间
+
+ {{ riskSupervision?.leastApplicationTime || '-' }}
+
+
+
+
+
+
+
+
+ 详细信息
+
+
+
+ {{ riskSupervision.details }}
+
+
+
+
+
+
+
+
+ 关联风险分析
+
+
+
+
+
+
📱
+
+
手机号关联风险
+
{{ getPhoneRiskDescription }}
+
+
+
+ {{ getPhoneRiskLevel }}
+
+
+
+
+
🆔
+
+
身份证关联风险
+
{{ getIdCardRiskDescription }}
+
+
+
+ {{ getIdCardRiskLevel }}
+
+
+
+
+
+
+
+
+
+
+ 🚨
+
+
+
高关联风险警告
+
+ 检测到异常的身份证或手机号关联情况,可能存在身份伪冒、团伙欺诈等风险。
+
+
+
+ 风险项:
+ {{ 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..10ca71e
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/SecurityInfoSection.vue
@@ -0,0 +1,353 @@
+
+
+
+
+
+
+
+
+
+ 核验概览
+
+
+
+
+ {{ riskCount }}
+
+
风险项数量
+
+
+
+ {{ riskCount > 0 ? '有风险' : '安全' }}
+
+
综合评估
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
{{ item.name }}
+
{{ item.description }}
+
+
+
+ {{ getSeverityText(item.severity) }}级
+
+
+
+
+
+
+
+
+
+
+ {{ item.hasRisk ? '✕' : '✓' }}
+
+
+
+
+ {{ item.hasRisk ? '危险' : '安全' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ⚠️
+
+
+
高风险警告
+
+ 检测到公安重点人员风险,建议立即停止业务往来并进行详细核实。
+
+
+ 命中项目:
+ {{ highRiskItemNames.join('、') }}
+
+
+
+
+
+
+
+
+
+ ✅
+
+
+
公安核验通过
+
+ 未命中公安重点人员名单,各项安全指标正常。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/DWBG6A2C/components/StandLiveInfoSection.vue b/src/ui/DWBG6A2C/components/StandLiveInfoSection.vue
new file mode 100644
index 0000000..cd828f0
--- /dev/null
+++ b/src/ui/DWBG6A2C/components/StandLiveInfoSection.vue
@@ -0,0 +1,256 @@
+
+
+
+
+
+
+
+
+
+ 核验概览
+
+
+
+
+ {{ getOverallVerificationStatus }}
+
+
综合核验状态
+
+
+
+ {{ inTimeInfo.text }}
+
+
在网时长
+
+
+
+
+
+
+
+
+ 实名核验
+
+
+
实名核验结果
+
+ {{ finalAuthResultInfo.icon }}
+
+ {{ finalAuthResultInfo.text }}
+
+
+
+
+
+ 说明: {{ getFinalAuthResultDescription }}
+
+
+
+
+
+
+
+
+ 运营商核验
+
+
+
+
运营商三要素核验
+
+ {{ verificationInfo.icon }}
+
+ {{ verificationInfo.text }}
+
+
+
+
+
运营商在网时长
+
+ {{ inTimeInfo.icon }}
+
+ {{ inTimeInfo.text }}
+
+
+
+
+
+
+
三要素核验: {{ getVerificationDescription }}
+
在网时长: {{ getInTimeDescription }}
+
+
+
+
+
+
+
+
+ ⚠️
+
+
+
身份核验风险提示
+
+ 检测到身份核验存在不一致情况,可能存在身份信息风险,建议进一步核实。
+
+
+
+ 风险项:
+ {{ verificationRiskItems.join('、') }}
+
+
+
+
+
+
+
+
+
+
+ ⚠️
+
+
+
在网时长风险提示
+
+ 在网时长较短,可能存在一定风险,建议结合其他信息综合评估。
+
+
+
+
+
+
+
+
+
+ ✅
+
+
+
身份核验通过
+
+ 所有身份核验项目均通过,身份信息可信度较高。
+
+
+
+
+
+
+
+
核验说明
+
+
实名核验: 验证姓名与身份证号的一致性
+
三要素核验: 验证姓名、身份证号、手机号在运营商的一致性
+
在网时长: 手机号在运营商的使用时长,时长越长信用度越高
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/DWBG6A2C/index.vue b/src/ui/DWBG6A2C/index.vue
new file mode 100644
index 0000000..416e530
--- /dev/null
+++ b/src/ui/DWBG6A2C/index.vue
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/DWBG6A2C/utils/intervalFormatter.js b/src/ui/DWBG6A2C/utils/intervalFormatter.js
new file mode 100644
index 0000000..64a2cfc
--- /dev/null
+++ b/src/ui/DWBG6A2C/utils/intervalFormatter.js
@@ -0,0 +1,302 @@
+/**
+ * 区间表达式格式化工具
+ * 将数学区间表达式转换为用户友好的文本描述
+ */
+
+/**
+ * 格式化区间表达式
+ * @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, passCount] = interval.split('/')
+ if (applyCount === passCount) {
+ return `${applyCount}次(全部通过)`
+ } else {
+ return `${applyCount}次(通过${passCount}次)`
+ }
+ }
+
+ 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/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..21aea91
--- /dev/null
+++ b/src/ui/JRZQ09J8/index.vue
@@ -0,0 +1,537 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getIncomeRange(data.level) }}
+
+
+
+
{{ getIncomeDescription(data.level) }}
+
+
+
+
+
+
+
+
+
+
{{ getAssessmentDescription(data.level) }}
+
+
+
+
+
+
+
+
+
+
{{ getMarketComparison(data.level) }}
+
+
+
+
+
+
+
{{ getRiskAssessment(data.level) }}
+
+
+ {{ getRiskLevel(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..eff6761
--- /dev/null
+++ b/src/ui/JRZQ4B6C/components/InstitutionStatusSection.vue
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ accExc || '0' }} 个
+
+
存在异常还款记录的机构数量
+
+
+
+
+
+
+
+
+ {{ accSleep || '0' }} 个
+
+
长期无交易活动的机构数量
+
+
+
+
+
+
+
+
+
+
+
+ 机构状态分析
+
+
+
+
+
+
+
+ 异常还款机构:
+ {{ getExceptionAnalysis() }}
+
+
+
+
+
+
+
+ 睡眠机构:
+ {{ getSleepAnalysis() }}
+
+
+
+
+
+
+
+
+
+
+ {{ getRiskWarning() }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/JRZQ4B6C/components/OverdueInfoSection.vue b/src/ui/JRZQ4B6C/components/OverdueInfoSection.vue
new file mode 100644
index 0000000..791bb6f
--- /dev/null
+++ b/src/ui/JRZQ4B6C/components/OverdueInfoSection.vue
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ 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..674cc7c
--- /dev/null
+++ b/src/ui/JRZQ4B6C/components/PerformanceInfoSection.vue
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/JRZQ4B6C/components/ProbeOverview.vue b/src/ui/JRZQ4B6C/components/ProbeOverview.vue
new file mode 100644
index 0000000..339464c
--- /dev/null
+++ b/src/ui/JRZQ4B6C/components/ProbeOverview.vue
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+
+
+ {{ getResultCodeText(resultCode) }}
+
+
+
+
+
+
+
+ {{ getResultDescription(resultCode) }}
+
+
+
+
+
+
+ {{ getDetailDescription(resultCode) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/ui/JRZQ4B6C/index.vue b/src/ui/JRZQ4B6C/index.vue
new file mode 100644
index 0000000..3924601
--- /dev/null
+++ b/src/ui/JRZQ4B6C/index.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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..d980923
--- /dev/null
+++ b/src/views/Agent.vue
@@ -0,0 +1,340 @@
+
+
+
+
+
+
+
+ 余额
+
+
¥ {{ (data?.balance || 0).toFixed(2) }}
+
+
+ 累计收益:¥ {{ (data?.total_earnings || 0).toFixed(2) }}
+
+
+ 冻结余额:¥ {{ (data?.frozen_balance || 0).toFixed(2) }}
+
+
+
+
+ 提现
+
+
+
+ 提现记录
+
+
+
+
+
+
+
+
+
+ 直推报告收益
+
+
+
+ ¥
+ {{
+ (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..c71ee5f
--- /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..724b45d
--- /dev/null
+++ b/src/views/AgentPromoteDetails.vue
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+ {{ item.create_time || '-' }}
+ +{{ item.amount.toFixed(2) }}
+
+
+
+
+ {{ item.product_name }}
+
+
+
+
+
+
+
+
+
+
\ 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..a8d0e01
--- /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..d9abe52
--- /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..e3d95f7
--- /dev/null
+++ b/src/views/AgentVipApply.vue
@@ -0,0 +1,1067 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 六大超值权益
+
+
+
+
+
+
+
+ 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..1a811fa
--- /dev/null
+++ b/src/views/AgentVipConfig.vue
@@ -0,0 +1,537 @@
+
+
+
+
+
+
+ 请选择报告类型并设置定价策略,助您实现精准定价
+
+
+
+
+
+
+ 📝 选择报告
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ 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..a9a9b1d
--- /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..dc5c92a
--- /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..ff9014d
--- /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..848b30f
--- /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..a8fba80
--- /dev/null
+++ b/src/views/HistoryQuery.vue
@@ -0,0 +1,125 @@
+
+
+
+
+
+
+
+
状态:
+
+ {{ stateText(item.query_state) }}
+
+
+
+
报告类型
+
{{ item.product_name }}
+
+
+
查询时间:
+
{{ item.create_time }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Inquire.vue b/src/views/Inquire.vue
new file mode 100644
index 0000000..30bfd24
--- /dev/null
+++ b/src/views/Inquire.vue
@@ -0,0 +1,599 @@
+
+
+
+
+
+ {{ featureData.product_name }}
+
+
+
基本信息
+
+ 姓名
+
+
+
+ 身份证号
+
+
+
+ 手机号
+
+
+
+
验证码
+
+
+
+ {{
+ isCountingDown
+ ? `${countdown}s重新获取`
+ : "获取验证码"
+ }}
+
+
+
+
+
+
+
+ 我已阅读并同意
+ 《用户协议》
+ 《隐私政策》
+ 《授权书》
+
+
+
+
+ 示例报告
+
+
+ 立即查询
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ caseType.name }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ module.name }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ module.name }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ module.name }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ module.name }}
+
+
+
+
+
+
+
+
+
+
+ {{ feature.name }}
+
+
+
+
+
+
+
+
+ {{ featureData.product_name }}
+
+
+
价格:
+
+
+ ¥{{ featureData.sell_price }}
+
+
+
+
+
+
+
+ 为保证用户的隐私以及数据安全,查询的结果生成30天之后将自动清除。
+
+
+
+
+
+
+
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..acbebf1
--- /dev/null
+++ b/src/views/Login.vue
@@ -0,0 +1,288 @@
+
+
+
+
+
+
+
+
+
+
天远数据
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ isCountingDown ? `${countdown}s重新获取` : '获取验证码' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 登录
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Me.vue b/src/views/Me.vue
new file mode 100644
index 0000000..8666210
--- /dev/null
+++ b/src/views/Me.vue
@@ -0,0 +1,296 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ levelNames[level] }}
+
+
+
+
+
+ {{
+ !isLoggedIn
+ ? "点击登录"
+ : mobile
+ ? maskName(mobile)
+ : isWeChat
+ ? "微信用户"
+ : "未绑定手机号"
+ }}
+
+
+
+
+ 点击绑定手机号码
+
+
+
+ 🎖️ {{ levelText[level] }}
+
+
+
+
+
+
+
+
+ ⚙️ 代理报告配置
+
+
+ 🎖️ 续费代理会员
+ 有效期至 {{ formatExpiryTime(ExpiryTime) }}
+
+
+
+ 📃 我的报告
+
+
+ 📜 用户协议
+
+
+ 🔒 隐私政策
+
+
+ 💬 联系客服
+
+
+
+ ⏏️ 退出登录
+
+
+
+
+
+
+
+
+
diff --git a/src/views/NotFound.vue b/src/views/NotFound.vue
new file mode 100644
index 0000000..28b313b
--- /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..61c4005
--- /dev/null
+++ b/src/views/PaymentResult.vue
@@ -0,0 +1,520 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ 支付成功
+
+
+
+
+ 订单编号
+ {{ 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..da49572
--- /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..64235e1
--- /dev/null
+++ b/src/views/Promote.vue
@@ -0,0 +1,270 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/PromotionInquire.vue b/src/views/PromotionInquire.vue
new file mode 100644
index 0000000..0de33d6
--- /dev/null
+++ b/src/views/PromotionInquire.vue
@@ -0,0 +1,662 @@
+
+
+
+
+
+ {{ featureData.product_name }}
+
+
+
基本信息
+
+ 姓名
+
+
+
+ 身份证号
+
+
+
+ 手机号
+
+
+
+
验证码
+
+
+
+ {{
+ isCountingDown
+ ? `${countdown}s重新获取`
+ : "获取验证码"
+ }}
+
+
+
+
+
+
+
+ 我已阅读并同意
+ 《用户协议》
+ 《隐私政策》
+ 《授权书》
+
+
+
+
+ 示例报告
+
+
+ 立即查询
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ caseType.name }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ module.name }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ module.name }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ module.name }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ module.name }}
+
+
+
+
+
+
+
+
+
+
+ {{ feature.name }}
+
+
+
+
+
+
+
+
+ {{ featureData.product_name }}
+
+
+
价格:
+
+
+ ¥{{ featureData.sell_price }}
+
+
+
+
+
+
+
+ 为保证用户的隐私以及数据安全,查询的结果生成30天之后将自动清除。
+
+
+
+
+
+
+
+
+ 历史查询
+
+
+
+
+
diff --git a/src/views/Report.vue b/src/views/Report.vue
new file mode 100644
index 0000000..4ddfcf5
--- /dev/null
+++ b/src/views/Report.vue
@@ -0,0 +1,153 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/ReportShare.vue b/src/views/ReportShare.vue
new file mode 100644
index 0000000..19baef5
--- /dev/null
+++ b/src/views/ReportShare.vue
@@ -0,0 +1,237 @@
+
+
+
+
+
+ 首页
+
+
+
+
+
+
+
+
+
+
+ 分享链接已过期
+
+
+ 该分享链接已超过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..3dbe7fe
--- /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..fd7bf88
--- /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)
+
+
+ 以上所有组件的主色调都已配置为 #a22525 ,通过 var(--van-theme-primary)
+ CSS变量统一管理。包括按钮、开关、复选框、单选框等组件的激活状态。通过修改CSS变量可以轻松更改整个主题。
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/Withdraw.vue b/src/views/Withdraw.vue
new file mode 100644
index 0000000..5e30bef
--- /dev/null
+++ b/src/views/Withdraw.vue
@@ -0,0 +1,525 @@
+
+
+
+
+
+
+
+
+ 未完成实名认证
+
+
+
+ 根据相关规定,提现功能需要完成实名认证后才能使用,提现金额将转入您实名认证的账户中。
+
+
+ 立即实名认证
+
+
+
+
+
+
+
+
+
支付宝提现
+
+
+
+
+ 支付宝账号
+
+
+
+
+
+ 可填写支付宝账户绑定的手机号
+
+
+
+ 实名姓名
+
+
+
+
+
+ 请填写支付宝账户认证的真实姓名
+
+
+
+ 提现金额
+
+
+
+
+ 元
+
+
+ 全部提现
+
+
+
+
+
+
+
+ 可提现金额:¥{{ 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小时内到账
+ 可在支付宝账单中查看详情
+
+
+ 您的申请已进入处理队列
+ 5分钟后结果在提现记录种查看
+
+
+
+
+
+ {{
+ status === 1
+ ? "知道了"
+ : status === 2
+ ? "完成"
+ : "重新提现"
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/WithdrawDetails.vue b/src/views/WithdrawDetails.vue
new file mode 100644
index 0000000..9314162
--- /dev/null
+++ b/src/views/WithdrawDetails.vue
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+ {{
+ item.create_time || "-"
+ }}
+ {{ item.amount.toFixed(2) }}元
+
+
+
+
+ {{ statusToChinese(item.status) }}
+
+
+
+
+ 收款账户:{{ maskName(item.payee_account) }}
+
+
备注:{{ item.remark }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/index.vue b/src/views/index.vue
new file mode 100644
index 0000000..7d0ca60
--- /dev/null
+++ b/src/views/index.vue
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
邀请好友
+
+
+
+
+
+
成为会员
+
+
+
+
+
+
帮助中心
+
+
+
+
+
+
我的报告
+
+
+
+
+
+
+
+
+
+
联系客服
+
+
+
+
+
+
收入明细
+
+
+
+
+
+
我要提现
+
+
+
+
+
+
推广报告
+
+
+
+
+
+
+
+
+
+ {{ service.title }}
+
+
+
{{ service.subtitle }}
+
+
+ GO >
+
+
+
+
+
+
+
+
+
我的历史查询记录
+
查询记录有效期为30天
+
+
+
+
+
+
+
+
+{
+ "layout": "home"
+}
diff --git a/tailwind.config.js b/tailwind.config.js
new file mode 100644
index 0000000..9348b41
--- /dev/null
+++ b/tailwind.config.js
@@ -0,0 +1,11 @@
+/** @type {import('tailwindcss').Config} */
+export default {
+ content: [
+ "./index.html", // 如果是 Vite 项目
+ "./src/**/*.{vue,js,ts,jsx,tsx}",
+ ],
+ theme: {
+ extend: {},
+ },
+ plugins: [],
+};
diff --git a/vite.config.js b/vite.config.js
new file mode 100644
index 0000000..0f8f113
--- /dev/null
+++ b/vite.config.js
@@ -0,0 +1,84 @@
+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", // 本地接口地址
+ 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'],
+ },
+});