Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
7b3de8a1
提交
7b3de8a1
authored
3月 10, 2026
作者:
coderBryanFu
浏览文件
操作
浏览文件
下载
差异文件
修改工作日程表模块
上级
fc3e7871
f3fe1e14
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
705 行增加
和
523 行删除
+705
-523
exportControlV2.0.js
src/api/exportControlV2.0.js
+217
-236
index.vue
...ew/components/fourSuppress/components/addDomain/index.vue
+2
-1
index.vue
...iew/components/fourSuppress/components/allUnion/index.vue
+1
-1
index.vue
src/views/ZMOverView/components/gameProfile/index.vue
+38
-33
OverviewCard.vue
src/views/bill/billHome/OverviewCard.vue
+2
-2
ResourceLibrarySection.vue
src/views/bill/billHome/ResourceLibrarySection.vue
+61
-61
index.vue
src/views/bill/billHome/index.vue
+70
-69
worldCloudChart.js
src/views/bill/billHome/utils/worldCloudChart.js
+1
-1
index.vue
src/views/bill/deepDig/poliContribution/index.vue
+80
-40
sankey.js
src/views/bill/deepDig/poliContribution/utils/sankey.js
+68
-11
index.vue
src/views/decree/decreeHome/index.vue
+1
-0
index.vue
src/views/exportControl/index.vue
+1
-1
index.vue
...ontrol/v2.0SingleSanction/components/deepMining/index.vue
+38
-23
index.vue
src/views/finance/index.vue
+125
-44
没有找到文件。
src/api/exportControlV2.0.js
浏览文件 @
7b3de8a1
...
...
@@ -2,23 +2,23 @@ import request from "@/api/request.js";
// 实体清单-制裁概况-获取实体清单基本信息
export
function
getEntityInfo
(
sanType
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/sanctionList/baseInfo/
${
sanType
}
`
})
return
request
({
method
:
"GET"
,
url
:
`/api/sanctionList/baseInfo/
${
sanType
}
`
});
}
// 实体清单-制裁概况-获取发布机构与重点人物
/**
* @param {sanTypeId}
* @param {sanTypeId}
* @header token
*/
export
function
getPublishInfo
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/sanctionList/getPublishedOrg`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/sanctionList/getPublishedOrg`
,
params
});
}
// 实体清单-制裁概况-获取发布机构机构动态
...
...
@@ -28,11 +28,11 @@ export function getPublishInfo(params) {
* @header token
*/
export
function
getPublishOrgInfo
(
data
)
{
return
request
({
method
:
'POST'
,
url
:
`/api/organization/relate/news`
,
data
,
})
return
request
({
method
:
"POST"
,
url
:
`/api/organization/relate/news`
,
data
});
}
// 实体清单-制裁概况-获取实体清单更新历史
...
...
@@ -46,15 +46,13 @@ export function getPublishOrgInfo(data) {
* @header token
*/
export
function
getEntityUpdateInfo
(
data
)
{
return
request
({
method
:
'POST'
,
url
:
`/api/entitiesDataCount/getSanctionProcess`
,
data
,
})
return
request
({
method
:
"POST"
,
url
:
`/api/entitiesDataCount/getSanctionProcess`
,
data
});
}
/**
* 实体清单列表-制裁概况-获取实体清单列表
* @param {Object} data
...
...
@@ -70,12 +68,12 @@ export function getEntityUpdateInfo(data) {
* @param {number} [data.pageSize=10] - 每页数量
*/
export
function
getExportControlList
(
data
,
options
=
{})
{
return
request
({
method
:
"POST"
,
url
:
"/api/sanctionList/pageQuery"
,
data
,
...
options
})
return
request
({
method
:
"POST"
,
url
:
"/api/sanctionList/pageQuery"
,
data
,
...
options
});
}
// 实体清单-制裁概况-50%规则涉及实体数
...
...
@@ -92,32 +90,32 @@ export function getExportControlList(data, options = {}) {
* @header token
*/
export
function
get50PercentEntityCount
(
data
)
{
return
request
({
method
:
'POST'
,
url
:
`/api/sanctionList/getRuleCount`
,
data
,
})
return
request
({
method
:
"POST"
,
url
:
`/api/sanctionList/getRuleCount`
,
data
});
}
// 实体清单-数据统计-总量统计
export
function
getTotalCount
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/sanctionList/statistics/el/total`
})
return
request
({
method
:
"GET"
,
url
:
`/api/sanctionList/statistics/el/total`
});
}
// 实体清单-数据统计-制裁实体数量变化情况
/**
* @param {countType}
* @param {countType}
* @header token
*/
export
function
getSanctionCountChange
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/sanctionList/statistics/el/num`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/sanctionList/statistics/el/num`
,
params
});
}
// 实体清单-数据统计-制裁实体地域分布情况
...
...
@@ -128,11 +126,11 @@ export function getSanctionCountChange(params) {
* @header token
*/
export
function
getRegionCount
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/sanctionList/statistics/el/region`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/sanctionList/statistics/el/region`
,
params
});
}
// 实体清单-数据统计-制裁实体领域分布情况
...
...
@@ -143,11 +141,11 @@ export function getRegionCount(params) {
* @header token
*/
export
function
getTechDomainCount
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/sanctionList/statistics/el/domain`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/sanctionList/statistics/el/domain`
,
params
});
}
// 实体清单-数据统计-制裁实体类型分布情况
...
...
@@ -158,11 +156,11 @@ export function getTechDomainCount(params) {
* @header token
*/
export
function
getEntityTypeCount
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/sanctionList/statistics/el/entityType`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/sanctionList/statistics/el/entityType`
,
params
});
}
// 实体清单-深度挖掘-选择制裁
...
...
@@ -176,11 +174,11 @@ export function getEntityTypeCount(params) {
* @header token
*/
export
function
getDeepMiningSelect
(
data
)
{
return
request
({
method
:
'POST'
,
url
:
`/api/entitiesDataCount/getSanctionProcess`
,
data
,
})
return
request
({
method
:
"POST"
,
url
:
`/api/entitiesDataCount/getSanctionProcess`
,
data
});
}
// 实体清单-深度挖掘-产业链列表信息
...
...
@@ -189,11 +187,11 @@ export function getDeepMiningSelect(data) {
* @header token
*/
export
function
getDeepMiningIndustry
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/chain/getChainInfo`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/chain/getChainInfo`
,
params
});
}
// 实体清单-深度挖掘-产业链鱼骨图信息
...
...
@@ -204,11 +202,11 @@ export function getDeepMiningIndustry(params) {
* @header token
*/
export
function
getDeepMiningIndustryFishbone
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/chain/getChainFishbone`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/chain/getChainFishbone`
,
params
});
}
// 实体清单-深度挖掘-产业链中国企业实体信息查询
...
...
@@ -219,14 +217,13 @@ export function getDeepMiningIndustryFishbone(params) {
* @header token
*/
export
function
getDeepMiningIndustryEntity
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/chain/getChainEntityStat`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/chain/getChainEntityStat`
,
params
});
}
// 单次制裁-制裁概况-基本信息
/**
* @param {Object} params
...
...
@@ -234,11 +231,11 @@ export function getDeepMiningIndustryEntity(params) {
* @header token
*/
export
function
getSingleSanctionOverview
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/sanctionList/record/getDetail`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/sanctionList/record/getDetail`
,
params
});
}
// 单次制裁-制裁概况-制裁实体国家分布
...
...
@@ -248,11 +245,11 @@ export function getSingleSanctionOverview(params) {
* @header token
*/
export
function
getSingleSanctionEntityCountry
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/sanctionList/statistics/el/countryRegion`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/sanctionList/statistics/el/countryRegion`
,
params
});
}
// 单次制裁-制裁概况-制裁背景
...
...
@@ -264,11 +261,11 @@ export function getSingleSanctionEntityCountry(params) {
* @header token
*/
export
function
getSingleSanctionBackground
(
data
)
{
return
request
({
method
:
'POST'
,
url
:
`/api/sanctionList/record/background`
,
data
,
})
return
request
({
method
:
"POST"
,
url
:
`/api/sanctionList/record/background`
,
data
});
}
// 单次制裁-制裁概况-制裁清单
...
...
@@ -282,14 +279,13 @@ export function getSingleSanctionBackground(data) {
* @header token
*/
export
function
getSingleSanctionOverviewList
(
data
)
{
return
request
({
method
:
'POST'
,
url
:
`/api/sanctionList/record/sanList`
,
data
,
})
return
request
({
method
:
"POST"
,
url
:
`/api/sanctionList/record/sanList`
,
data
});
}
// 单次制裁-数据统计-总量统计
/**
* @param {Object} params
...
...
@@ -297,11 +293,11 @@ export function getSingleSanctionOverviewList(data) {
* @header token
*/
export
function
getSingleSanctionTotalCount
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/sanctionList/statistics/el/total`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/sanctionList/statistics/el/total`
,
params
});
}
// 单次制裁-数据统计-制裁实体领域分布情况
...
...
@@ -313,11 +309,11 @@ export function getSingleSanctionTotalCount(params) {
* @header token
*/
export
function
getSingleSanctionDomainCount
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/sanctionList/statistics/el/domain`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/sanctionList/statistics/el/domain`
,
params
});
}
// 单次制裁-数据统计-制裁实体类型分布情况
...
...
@@ -329,14 +325,13 @@ export function getSingleSanctionDomainCount(params) {
* @header token
*/
export
function
getSingleSanctionEntityTypeCount
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/sanctionList/statistics/el/entityType`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/sanctionList/statistics/el/entityType`
,
params
});
}
// 单次制裁-数据统计-制裁实体国家分布
/**
* @param {Object} params
...
...
@@ -344,14 +339,13 @@ export function getSingleSanctionEntityTypeCount(params) {
* @header token
*/
export
function
getSingleSanctionEntityCountryCount
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/sanctionList/statistics/el/countryRegion`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/sanctionList/statistics/el/countryRegion`
,
params
});
}
// 单次制裁-数据统计-制裁实体地域分布情况
/**
* @param {Object} params
...
...
@@ -361,14 +355,13 @@ export function getSingleSanctionEntityCountryCount(params) {
* @header token
*/
export
function
getSingleSanctionEntityRegionCount
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/sanctionList/statistics/el/region`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/sanctionList/statistics/el/region`
,
params
});
}
// 单次制裁-深度挖掘-本次制裁实体清单列表
/**
* @param {Object} params
...
...
@@ -379,14 +372,13 @@ export function getSingleSanctionEntityRegionCount(params) {
* @header token
*/
export
function
getSingleSanctionEntityList
(
data
)
{
return
request
({
method
:
'POST'
,
url
:
`/api/sanctionList/record/sanListByType`
,
data
,
})
return
request
({
method
:
"POST"
,
url
:
`/api/sanctionList/record/sanListByType`
,
data
});
}
// 单次制裁-深度挖掘-制裁实体供应链信息
/**
* @param {Object} params
...
...
@@ -394,11 +386,11 @@ export function getSingleSanctionEntityList(data) {
* @header token
*/
export
function
getSingleSanctionEntitySupplyChain
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/sanctionList/record
/supplyChain`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/organization
/supplyChain`
,
params
});
}
// 单次制裁-深度挖掘-制裁实体股权信息
...
...
@@ -409,14 +401,13 @@ export function getSingleSanctionEntitySupplyChain(params) {
* @header token
*/
export
function
getSingleSanctionEntityEquity
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/sanctionList/record
/shareholding`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/organization
/shareholding`
,
params
});
}
// 单次制裁-影响分析-企业规模-营收
/**
* @param {Object} params
...
...
@@ -424,14 +415,13 @@ export function getSingleSanctionEntityEquity(params) {
* @header token
*/
export
function
getSingleSanctionEntityRevenue
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/organization/scale/revenue`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/organization/scale/revenue`
,
params
});
}
// 单次制裁-影响分析-企业规模-净利润
/**
* @param {Object} params
...
...
@@ -439,14 +429,13 @@ export function getSingleSanctionEntityRevenue(params) {
* @header token
*/
export
function
getSingleSanctionEntityNetProfit
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/organization/scale/netProfit`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/organization/scale/netProfit`
,
params
});
}
// 单次制裁-影响分析-企业规模-人员
/**
* @param {Object} params
...
...
@@ -454,14 +443,13 @@ export function getSingleSanctionEntityNetProfit(params) {
* @header token
*/
export
function
getSingleSanctionEntityPersonnel
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/organization/scale/personnel`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/organization/scale/personnel`
,
params
});
}
// 单次制裁-影响分析-企业市值变化
/**
* @param {Object} params
...
...
@@ -469,14 +457,13 @@ export function getSingleSanctionEntityPersonnel(params) {
* @header token
*/
export
function
getSingleSanctionEntityMarketValue
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/organization/marketValue`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/organization/marketValue`
,
params
});
}
// 单次制裁-影响分析-企业研发投入
/**
* @param {Object} params
...
...
@@ -484,14 +471,13 @@ export function getSingleSanctionEntityMarketValue(params) {
* @header token
*/
export
function
getSingleSanctionEntityRDInvestment
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/organization/rdInvestment`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/organization/rdInvestment`
,
params
});
}
// 单次制裁-影响分析-企业市场占比
/**
* @param {Object} params
...
...
@@ -499,14 +485,13 @@ export function getSingleSanctionEntityRDInvestment(params) {
* @header token
*/
export
function
getSingleSanctionEntityMarketShare
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/organization/marketShare`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/organization/marketShare`
,
params
});
}
// 单次制裁-影响分析-科研仪器对美依赖情况
/**
* @param {Object} params
...
...
@@ -514,14 +499,13 @@ export function getSingleSanctionEntityMarketShare(params) {
* @header token
*/
export
function
getSingleSanctionEntityRDInstrumentDependency
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/organization/instrument/getDependencyUS`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/organization/instrument/getDependencyUS`
,
params
});
}
// 单次制裁-影响分析-科研仪器进口国分布
/**
* @param {Object} params
...
...
@@ -529,14 +513,13 @@ export function getSingleSanctionEntityRDInstrumentDependency(params) {
* @header token
*/
export
function
getSingleSanctionEntityRDInstrumentImportCountry
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/organization/instrument/getOriginCount`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/organization/instrument/getOriginCount`
,
params
});
}
// 单次制裁-影响分析-新增国际合作项目
/**
* @param {Object} params
...
...
@@ -545,14 +528,13 @@ export function getSingleSanctionEntityRDInstrumentImportCountry(params) {
* @header token
*/
export
function
getSingleSanctionEntityInternationalCooperation
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/organization/project/icCount`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/organization/project/icCount`
,
params
});
}
// 单次制裁-影响分析-新增国际合作论文
/**
* @param {Object} params
...
...
@@ -561,27 +543,27 @@ export function getSingleSanctionEntityInternationalCooperation(params) {
* @header token
*/
export
function
getSingleSanctionEntityInternationalPaper
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/organization/paper/icCount`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/organization/paper/icCount`
,
params
});
}
// 商业管制清单-CCL清单简介-基本信息
export
function
getCCLInfo
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/sanctionList/baseInfo/ccl`
})
return
request
({
method
:
"GET"
,
url
:
`/api/sanctionList/baseInfo/ccl`
});
}
// 商业管制清单-CCL清单简介-出口管制分类编码
export
function
getECCN
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/ccl/eccn`
})
return
request
({
method
:
"GET"
,
url
:
`/api/ccl/eccn`
});
}
// 商业管制清单-CCL清单简介-出口管制分类编码信息列表
...
...
@@ -591,35 +573,35 @@ export function getECCN() {
* @header token
*/
export
function
getECCNList
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/ccl/eccn/rank`
,
params
,
})
return
request
({
method
:
"GET"
,
url
:
`/api/ccl/eccn/rank`
,
params
});
}
// 商业管制清单-CCL清单列表-类别字典
export
function
getECCNCategory
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/commonDict/ccl/eccnCategory`
})
return
request
({
method
:
"GET"
,
url
:
`/api/commonDict/ccl/eccnCategory`
});
}
// 商业管制清单-CCL清单列表-科技领域字典
export
function
getAreaType
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/commonDict/areaType`
})
return
request
({
method
:
"GET"
,
url
:
`/api/commonDict/areaType`
});
}
// 商业管制清单-CCL清单列表-管控原因字典
export
function
getControlReason
()
{
return
request
({
method
:
'GET'
,
url
:
`/api/commonDict/ccl/controlReason`
})
return
request
({
method
:
"GET"
,
url
:
`/api/commonDict/ccl/controlReason`
});
}
// 商业管制清单-CCL清单简介-CCL清单查询
...
...
@@ -633,9 +615,9 @@ export function getControlReason() {
* @header token
*/
export
function
getCclQuery
(
data
)
{
return
request
({
method
:
'POST'
,
url
:
`/api/ccl/query`
,
data
,
})
}
\ No newline at end of file
return
request
({
method
:
"POST"
,
url
:
`/api/ccl/query`
,
data
});
}
src/views/ZMOverView/components/fourSuppress/components/addDomain/index.vue
浏览文件 @
7b3de8a1
...
...
@@ -1084,7 +1084,8 @@ const processRankingData = rawData => {
// 新增字段
domains
:
item
.
domainList
?
item
.
domainList
.
map
(
d
=>
d
.
name
)
:
[],
date
:
formattedDate
,
member
:
item
.
keyMember
||
"-"
member
:
item
.
keyMember
||
"-"
,
province
:
item
.
province
||
""
};
});
};
...
...
src/views/ZMOverView/components/fourSuppress/components/allUnion/index.vue
浏览文件 @
7b3de8a1
...
...
@@ -148,7 +148,7 @@
<
div
class
=
"warning"
>
<
div
class
=
"warning-title"
>
<
img
src
=
"./assets/warning.png"
alt
/>
<
span
>
新增排华联盟预警
1
<
/span
>
<
span
>
新增排华联盟预警
<
/span
>
<
/div
>
<
div
class
=
"warning-content"
>
<
div
class
=
"content-item"
v
-
for
=
"(item, index) in warningList"
:
key
=
"index"
>
...
...
src/views/ZMOverView/components/gameProfile/index.vue
浏览文件 @
7b3de8a1
...
...
@@ -469,43 +469,45 @@ const handleIndicatorChange = indicator => {
{
name
:
"中国"
,
type
:
"line"
,
symbolSize
:
10
,
symbolSize
:
8
,
smooth
:
true
,
itemStyle
:
{
color
:
"#CE4F51"
},
areaStyle
:
{
color
:
new
echarts
.
graphic
.
LinearGradient
(
0
,
0
,
0
,
1
,
[
{
offset
:
0
,
color
:
"rgb(206, 79, 81, .8)"
},
{
offset
:
1
,
color
:
"rgb(206, 79, 81, .3)"
}
])
},
//
areaStyle: {
//
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
//
{
//
offset: 0,
//
color: "rgb(206, 79, 81, .8)"
//
},
//
{
//
offset: 1,
//
color: "rgb(206, 79, 81, .3)"
//
}
//
])
//
},
data
:
chinaValues
},
{
name
:
"美国"
,
type
:
"line"
,
symbolSize
:
10
,
smooth
:
true
,
symbolSize
:
8
,
itemStyle
:
{
color
:
"#055FC2"
},
areaStyle
:
{
color
:
new
echarts
.
graphic
.
LinearGradient
(
0
,
0
,
0
,
1
,
[
{
offset
:
0
,
color
:
"rgb(5, 95, 194,.8)"
},
{
offset
:
1
,
color
:
"rgb(5, 95, 194, .3)"
}
])
},
//
areaStyle: {
//
color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
//
{
//
offset: 0,
//
color: "rgb(5, 95, 194,.8)"
//
},
//
{
//
offset: 1,
//
color: "rgb(5, 95, 194, .3)"
//
}
//
])
//
},
data
:
usaValues
}
];
...
...
@@ -540,22 +542,25 @@ const lineOption = ref({
xAxis
:
{
type
:
"category"
,
boundaryGap
:
false
,
minInterval
:
1
,
scale
:
true
,
axisLine
:
{
lineStyle
:
{
color
:
"#
ccc
"
,
color
:
"#
e0e0e0
"
,
width
:
1
}
},
axisTick
:
{
show
:
tru
e
,
show
:
fals
e
,
lineStyle
:
{
color
:
"#ccc"
}
},
axisLabel
:
{
color
:
"#ccc"
,
fontSize
:
16
,
fontWeight
:
400
color
:
"#666"
,
fontSize
:
13
,
fontWeight
:
500
,
margin
:
12
},
data
:
[
"2021"
,
"2022"
,
"2023"
,
"2024"
,
"2025"
]
},
...
...
@@ -571,9 +576,9 @@ const lineOption = ref({
padding
:
[
0
,
0
,
10
,
0
]
},
axisLine
:
{
show
:
fals
e
,
show
:
tru
e
,
lineStyle
:
{
color
:
"#
ccc
"
,
color
:
"#
e0e0e0
"
,
width
:
1
}
},
...
...
src/views/bill/billHome/OverviewCard.vue
浏览文件 @
7b3de8a1
...
...
@@ -34,10 +34,10 @@ defineProps({
.overview-card
{
height
:
450px
;
box-sizing
:
border-box
;
border
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
border
:
1px
solid
var
(
--
border-black-5
);
border-radius
:
10px
;
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
var
(
--
bg-white-100
);
overflow
:
hidden
;
.overview-card-header
{
...
...
src/views/bill/billHome/ResourceLibrarySection.vue
浏览文件 @
7b3de8a1
...
...
@@ -260,7 +260,7 @@ const handleClickTab = tab => {
}
}
;
const
releaseTime
=
ref
(
tru
e
);
const
releaseTime
=
ref
(
fals
e
);
const
releaseTimeList
=
ref
([{
label
:
"正序"
,
value
:
true
}
,
{
label
:
"倒序"
,
value
:
false
}
]);
const
isInvolveCn
=
ref
(
"Y"
);
...
...
@@ -712,7 +712,7 @@ onMounted(() => {
height
:
42
px
;
line
-
height
:
42
px
;
padding
:
0
20
px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
var
(
--
text
-
primary
-
80
-
color
);
font
-
family
:
Microsoft
YaHei
;
font
-
size
:
20
px
;
font
-
weight
:
400
;
...
...
@@ -726,11 +726,11 @@ onMounted(() => {
.
btnActive
{
background
:
var
(
--
color
-
main
-
active
);
color
:
#
fff
;
color
:
var
(
--
bg
-
white
-
100
)
;
font
-
weight
:
700
;
&
:
hover
{
color
:
#
fff
;
color
:
var
(
--
bg
-
white
-
100
)
;
background
:
var
(
--
color
-
main
-
active
);
}
}
...
...
@@ -760,7 +760,7 @@ onMounted(() => {
border
:
1
px
solid
rgba
(
234
,
236
,
238
,
1
);
border
-
radius
:
10
px
;
box
-
shadow
:
0
px
0
px
20
px
0
px
rgba
(
25
,
69
,
130
,
0.1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
var
(
--
bg
-
white
-
100
);
.
select
-
box
{
margin
-
top
:
20
px
;
...
...
@@ -780,7 +780,7 @@ onMounted(() => {
.
title
{
color
:
var
(
--
color
-
main
-
active
);
font
-
family
:
Microsoft
YaHei
;
font
-
size
:
16
px
;
font
-
size
:
var
(
--
font
-
size
-
base
)
;
font
-
weight
:
700
;
line
-
height
:
24
px
;
letter
-
spacing
:
1
px
;
...
...
@@ -802,8 +802,8 @@ onMounted(() => {
margin
-
bottom
:
4
px
;
:
deep
(.
el
-
checkbox__label
)
{
color
:
rgb
(
95
,
101
,
108
);
font
-
size
:
16
px
;
color
:
var
(
--
text
-
primary
-
65
-
color
);
font
-
size
:
var
(
--
font
-
size
-
base
)
;
font
-
weight
:
400
;
font
-
family
:
"Microsoft YaHei"
;
line
-
height
:
24
px
;
...
...
@@ -852,9 +852,9 @@ onMounted(() => {
}
:
deep
(.
el
-
checkbox__label
)
{
color
:
#
5
f656c
;
color
:
var
(
--
text
-
primary
-
65
-
color
)
;
font
-
family
:
"Microsoft YaHei"
;
font
-
size
:
16
px
;
font
-
size
:
var
(
--
font
-
size
-
base
)
;
font
-
weight
:
400
;
line
-
height
:
24
px
;
padding
-
left
:
10
px
;
...
...
@@ -885,7 +885,7 @@ onMounted(() => {
box
-
sizing
:
border
-
box
;
border
-
radius
:
10
px
;
box
-
shadow
:
0
px
0
px
20
px
0
px
rgba
(
25
,
69
,
130
,
0.1
);
background
:
#
fff
;
background
:
var
(
--
bg
-
white
-
100
)
;
overflow
:
hidden
;
display
:
flex
;
flex
-
direction
:
column
;
...
...
@@ -931,7 +931,7 @@ onMounted(() => {
box
-
sizing
:
border
-
box
;
object
-
fit
:
contain
;
border
-
radius
:
50
%
;
background
:
#
fff
;
background
:
var
(
--
bg
-
white
-
100
)
;
}
.
member
-
main
{
...
...
@@ -949,7 +949,7 @@ onMounted(() => {
}
.
member
-
name
{
color
:
rgb
(
59
,
65
,
75
);
color
:
var
(
--
text
-
primary
-
80
-
color
);
font
-
family
:
"Source Han Sans CN"
;
font
-
size
:
18
px
;
font
-
weight
:
700
;
...
...
@@ -962,15 +962,15 @@ onMounted(() => {
.
member
-
link
{
flex
-
shrink
:
0
;
color
:
#
1459
bb
;
font
-
size
:
16
px
;
font
-
size
:
var
(
--
font
-
size
-
base
)
;
line
-
height
:
24
px
;
}
.
member
-
meta
,
.
member
-
committee
{
margin
-
top
:
6
px
;
color
:
#
5
f656c
;
font
-
size
:
16
px
;
color
:
var
(
--
text
-
primary
-
65
-
color
)
;
font
-
size
:
var
(
--
font
-
size
-
base
)
;
line
-
height
:
24
px
;
font
-
weight
:
400
;
white
-
space
:
nowrap
;
...
...
@@ -989,8 +989,8 @@ onMounted(() => {
height
:
24
px
;
padding
:
5
px
8
px
;
border
-
radius
:
4
px
;
background
:
rgb
(
231
,
243
,
255
);
color
:
rgb
(
5
,
95
,
194
);
background
:
var
(
--
color
-
primary
-
10
);
color
:
var
(
--
color
-
main
-
active
);
font
-
size
:
14
px
;
font
-
weight
:
400
;
line
-
height
:
14
px
;
...
...
@@ -1004,8 +1004,8 @@ onMounted(() => {
align
-
items
:
center
;
justify
-
content
:
space
-
between
;
border
-
top
:
1
px
solid
#
eaeced
;
color
:
#
5
f656c
;
font
-
size
:
16
px
;
color
:
var
(
--
text
-
primary
-
65
-
color
)
;
font
-
size
:
var
(
--
font
-
size
-
base
)
;
cursor
:
pointer
;
&
:
hover
{
...
...
@@ -1022,9 +1022,9 @@ onMounted(() => {
}
.
member
-
arrow
{
font
-
size
:
16
px
;
font
-
size
:
var
(
--
font
-
size
-
base
)
;
line
-
height
:
1
;
color
:
#
5
f656c
;
color
:
var
(
--
text
-
primary
-
65
-
color
)
;
}
.
member
-
info
{
...
...
@@ -1049,7 +1049,7 @@ onMounted(() => {
box
-
sizing
:
border
-
box
;
border
-
radius
:
10
px
;
box
-
shadow
:
0
px
0
px
20
px
0
px
rgba
(
25
,
69
,
130
,
0.1
);
background
:
#
fff
;
background
:
var
(
--
bg
-
white
-
100
)
;
display
:
flex
;
flex
-
direction
:
column
;
gap
:
12
px
;
...
...
@@ -1085,9 +1085,9 @@ onMounted(() => {
.
coop
-
member
-
name
{
max
-
width
:
130
px
;
color
:
#
3
b414b
;
color
:
var
(
--
text
-
primary
-
80
-
color
)
;
font
-
family
:
"Source Han Sans CN"
;
font
-
size
:
16
px
;
font
-
size
:
var
(
--
font
-
size
-
base
)
;
font
-
weight
:
700
;
line
-
height
:
24
px
;
white
-
space
:
nowrap
;
...
...
@@ -1104,7 +1104,7 @@ onMounted(() => {
.
coop
-
summary
{
flex
:
1
;
min
-
width
:
0
;
color
:
#
5
f656c
;
color
:
var
(
--
text
-
primary
-
65
-
color
)
;
font
-
family
:
"Microsoft YaHei"
;
font
-
size
:
14
px
;
font
-
weight
:
400
;
...
...
@@ -1169,7 +1169,7 @@ onMounted(() => {
display
:
flex
;
align
-
items
:
center
;
gap
:
8
px
;
color
:
#
3
b414b
;
color
:
var
(
--
text
-
primary
-
80
-
color
)
;
font
-
family
:
"Microsoft YaHei"
;
font
-
size
:
15
px
;
font
-
weight
:
700
;
...
...
@@ -1183,7 +1183,7 @@ onMounted(() => {
.
coop
-
proposal
-
subtitle
{
margin
-
top
:
2
px
;
color
:
#
5
f656c
;
color
:
var
(
--
text
-
primary
-
65
-
color
)
;
font
-
family
:
"Microsoft YaHei"
;
font
-
size
:
14
px
;
font
-
weight
:
400
;
...
...
@@ -1199,7 +1199,7 @@ onMounted(() => {
top
:
50
%
;
transform
:
translateY
(
-
50
%
);
color
:
#
c0c4cc
;
font
-
size
:
16
px
;
font
-
size
:
var
(
--
font
-
size
-
base
)
;
line
-
height
:
1
;
}
}
...
...
@@ -1211,7 +1211,7 @@ onMounted(() => {
padding
:
20
px
24
px
;
border
-
radius
:
10
px
;
box
-
shadow
:
0
px
0
px
20
px
0
px
rgba
(
25
,
69
,
130
,
0.1
);
background
:
#
fff
;
background
:
var
(
--
bg
-
white
-
100
)
;
}
.
committee
-
info
{
...
...
@@ -1231,7 +1231,7 @@ onMounted(() => {
}
.
committee
-
name
{
color
:
#
3
b414b
;
color
:
var
(
--
text
-
primary
-
80
-
color
)
;
font
-
family
:
"Microsoft YaHei"
;
font
-
size
:
20
px
;
font
-
weight
:
700
;
...
...
@@ -1240,9 +1240,9 @@ onMounted(() => {
.
committee
-
desc
{
margin
-
top
:
8
px
;
color
:
#
5
f656c
;
color
:
var
(
--
text
-
primary
-
65
-
color
)
;
font
-
family
:
"Microsoft YaHei"
;
font
-
size
:
16
px
;
font
-
size
:
var
(
--
font
-
size
-
base
)
;
font
-
weight
:
400
;
line
-
height
:
24
px
;
}
...
...
@@ -1278,7 +1278,7 @@ onMounted(() => {
box
-
sizing
:
border
-
box
;
border
-
radius
:
10
px
;
box
-
shadow
:
0
px
0
px
20
px
0
px
rgba
(
25
,
69
,
130
,
0.1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
var
(
--
bg
-
white
-
100
);
margin
-
bottom
:
16
px
;
overflow
:
hidden
;
display
:
flex
;
...
...
@@ -1313,18 +1313,18 @@ onMounted(() => {
}
.
risk
-
tag
-
critical
{
background
:
rgba
(
206
,
79
,
81
,
0.1
);
color
:
rgb
(
206
,
79
,
81
);
background
:
var
(
--
color
-
red
-
10
);
color
:
var
(
--
color
-
red
-
100
);
}
.
risk
-
tag
-
high
{
background
:
rgba
(
255
,
149
,
77
,
0.1
);
color
:
rgb
(
255
,
149
,
77
);
background
:
var
(
--
color
-
orange
-
10
);
color
:
var
(
--
color
-
orange
-
100
);
}
.
risk
-
tag
-
medium
{
background
:
rgba
(
232
,
189
,
11
,
0.1
);
color
:
rgb
(
232
,
189
,
11
);
background
:
var
(
--
color
-
yellow
-
10
);
color
:
var
(
--
color
-
yellow
-
100
);
}
.
bill
-
cover
{
...
...
@@ -1342,7 +1342,7 @@ onMounted(() => {
right
:
0
;
bottom
:
0
;
height
:
33.333
%
;
background
:
linear
-
gradient
(
to
bottom
,
rgba
(
255
,
255
,
255
,
0
),
rgba
(
255
,
255
,
255
,
0.92
)
60
%
,
rgba
(
255
,
255
,
255
,
1
));
background
:
linear
-
gradient
(
to
bottom
,
rgba
(
255
,
255
,
255
,
0
),
rgba
(
255
,
255
,
255
,
0.92
)
60
%
,
var
(
--
bg
-
white
-
100
));
pointer
-
events
:
none
;
}
}
...
...
@@ -1365,7 +1365,7 @@ onMounted(() => {
justify
-
content
:
center
;
padding
:
0
12
px
;
box
-
sizing
:
border
-
box
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
var
(
--
text
-
primary
-
80
-
color
);
font
-
family
:
"Source Han Sans CN"
;
font
-
size
:
20
px
;
font
-
weight
:
700
;
...
...
@@ -1395,7 +1395,7 @@ onMounted(() => {
.
title
{
cursor
:
pointer
;
height
:
26
px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
var
(
--
text
-
primary
-
80
-
color
);
font
-
family
:
Microsoft
YaHei
;
font
-
size
:
20
px
;
font
-
weight
:
700
;
...
...
@@ -1410,9 +1410,9 @@ onMounted(() => {
.
en
-
title
{
margin
-
top
:
8
px
;
height
:
24
px
;
color
:
rgba
(
95
,
101
,
108
,
1
);
color
:
var
(
--
text
-
primary
-
65
-
color
);
font
-
family
:
Microsoft
YaHei
;
font
-
size
:
16
px
;
font
-
size
:
var
(
--
font
-
size
-
base
)
;
font
-
weight
:
400
;
line
-
height
:
24
px
;
letter
-
spacing
:
0
px
;
...
...
@@ -1434,9 +1434,9 @@ onMounted(() => {
.
item
-
left
{
width
:
88
px
;
color
:
rgb
(
59
,
65
,
75
);
color
:
var
(
--
text
-
primary
-
80
-
color
);
font
-
family
:
"Microsoft YaHei"
;
font
-
size
:
16
px
;
font
-
size
:
var
(
--
font
-
size
-
base
)
;
font
-
weight
:
700
;
line
-
height
:
24
px
;
letter
-
spacing
:
1
px
;
...
...
@@ -1446,9 +1446,9 @@ onMounted(() => {
.
item
-
right
{
max
-
width
:
1000
px
;
margin
-
left
:
10
px
;
color
:
rgba
(
95
,
101
,
108
,
1
);
color
:
var
(
--
text
-
primary
-
65
-
color
);
font
-
family
:
"Microsoft YaHei"
;
font
-
size
:
16
px
;
font
-
size
:
var
(
--
font
-
size
-
base
)
;
font
-
weight
:
400
;
line
-
height
:
24
px
;
letter
-
spacing
:
0
px
;
...
...
@@ -1466,7 +1466,7 @@ onMounted(() => {
line
-
height
:
24
px
;
padding
:
0
8
px
;
border
-
radius
:
4
px
;
background
:
rgba
(
231
,
243
,
255
,
1
);
background
:
var
(
--
color
-
primary
-
10
);
color
:
var
(
--
color
-
main
-
active
);
font
-
family
:
"Microsoft YaHei"
;
font
-
size
:
14
px
;
...
...
@@ -1484,8 +1484,8 @@ onMounted(() => {
height
:
24
px
;
line
-
height
:
22
px
;
padding
:
0
10
px
0
30
px
;
background
:
rgba
(
255
,
255
,
255
,
1
);
color
:
rgb
(
95
,
101
,
108
);
background
:
var
(
--
bg
-
white
-
100
);
color
:
var
(
--
text
-
primary
-
65
-
color
);
border
-
top
:
1
px
solid
rgb
(
234
,
236
,
238
);
border
-
bottom
:
1
px
solid
rgb
(
234
,
236
,
238
);
position
:
relative
;
...
...
@@ -1518,16 +1518,16 @@ onMounted(() => {
}
&
:
last
-
child
{
background
:
rgb
(
59
,
65
,
75
);
color
:
rgba
(
255
,
255
,
255
,
1
);
border
-
color
:
rgb
(
59
,
65
,
75
);
background
:
var
(
--
text
-
primary
-
80
-
color
);
color
:
var
(
--
bg
-
white
-
100
);
border
-
color
:
var
(
--
text
-
primary
-
80
-
color
);
padding
-
right
:
10
px
;
border
-
radius
:
0
;
border
-
right
:
none
;
&
::
after
{
display
:
block
;
border
-
color
:
rgb
(
59
,
65
,
75
);
border
-
color
:
var
(
--
text
-
primary
-
80
-
color
);
box
-
shadow
:
none
;
}
}
...
...
@@ -1536,9 +1536,9 @@ onMounted(() => {
margin
-
left
:
0
;
padding
:
0
10
px
;
border
-
radius
:
4
px
0
0
4
px
;
background
:
rgb
(
59
,
65
,
75
);
color
:
rgba
(
255
,
255
,
255
,
1
);
border
:
1
px
solid
rgb
(
59
,
65
,
75
);
background
:
var
(
--
text
-
primary
-
80
-
color
);
color
:
var
(
--
bg
-
white
-
100
);
border
:
1
px
solid
var
(
--
text
-
primary
-
80
-
color
);
border
-
right
:
none
;
}
}
...
...
@@ -1556,9 +1556,9 @@ onMounted(() => {
padding
-
top
:
12
px
;
.
footer
-
left
{
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
var
(
--
text
-
primary
-
80
-
color
);
font
-
family
:
"Microsoft YaHei"
;
font
-
size
:
16
px
;
font
-
size
:
var
(
--
font
-
size
-
base
)
;
font
-
weight
:
400
;
line
-
height
:
32
px
;
}
...
...
src/views/bill/billHome/index.vue
浏览文件 @
7b3de8a1
...
...
@@ -955,7 +955,7 @@ onUnmounted(() => {
.search-header
{
width
:
100%
;
// height: 144px;
background
:
#fff
;
background
:
var
(
--
bg-white-100
)
;
// overflow: hidden;
box-shadow
:
0px
0px
15px
0px
rgba
(
22
,
119
,
255
,
0
.1
);
...
...
@@ -974,7 +974,7 @@ onUnmounted(() => {
border-radius
:
10px
;
// box-shadow: 0px 0px 15px 0px rgba(22, 119, 255, 0.1);
border
:
1px
solid
var
(
--
color-primary-35
);
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
var
(
--
bg-white-100
);
box-sizing
:
border-box
;
padding
:
1px
;
position
:
relative
;
...
...
@@ -1009,9 +1009,9 @@ onUnmounted(() => {
.search-text
{
margin-left
:
8px
;
height
:
22px
;
color
:
#fff
;
color
:
var
(
--
bg-white-100
)
;
font-family
:
Microsoft
YaHei
;
font-size
:
16px
;
font-size
:
var
(
--
font-size-base
)
;
font-weight
:
400
;
line-height
:
22px
;
}
...
...
@@ -1033,7 +1033,7 @@ onUnmounted(() => {
border
:
1px
solid
#aed6ff
;
box-sizing
:
border-box
;
border-radius
:
24px
;
background
:
#e7f3ff
;
background
:
var
(
--
color-primary-10
)
;
cursor
:
pointer
;
position
:
relative
;
...
...
@@ -1106,7 +1106,7 @@ onUnmounted(() => {
height
:
48px
;
border-radius
:
10px
;
box-shadow
:
0px
0px
15px
0px
rgba
(
22
,
119
,
255
,
0
.1
);
background
:
rgba
(
255
,
255
,
255
,
0
.
65
);
background
:
var
(
--
bg-white-
65
);
box-sizing
:
border-box
;
padding
:
1px
;
position
:
relative
;
...
...
@@ -1142,9 +1142,9 @@ onUnmounted(() => {
.search-text
{
margin-left
:
8px
;
height
:
22px
;
color
:
#fff
;
color
:
var
(
--
bg-white-100
)
;
font-family
:
Microsoft
YaHei
;
font-size
:
16px
;
font-size
:
var
(
--
font-size-base
)
;
font-weight
:
400
;
line-height
:
22px
;
}
...
...
@@ -1176,9 +1176,9 @@ onUnmounted(() => {
.item-footer
{
margin-top
:
10px
;
height
:
30px
;
color
:
rgba
(
95
,
101
,
108
,
1
);
color
:
var
(
--
text-primary-65-color
);
font-family
:
Microsoft
YaHei
;
font-size
:
16px
;
font-size
:
var
(
--
font-size-base
)
;
font-weight
:
400
;
line-height
:
30px
;
}
...
...
@@ -1201,7 +1201,7 @@ onUnmounted(() => {
border
:
1px
solid
#aed6ff
;
box-sizing
:
border-box
;
border-radius
:
24px
;
background
:
#e7f3ff
;
background
:
var
(
--
color-primary-10
)
;
cursor
:
pointer
;
position
:
relative
;
...
...
@@ -1254,7 +1254,7 @@ onUnmounted(() => {
height
:
450px
;
border-radius
:
10px
;
box-shadow
:
0px
0px
15px
0px
rgba
(
22
,
119
,
255
,
0
.1
);
background
:
#fff
;
background
:
var
(
--
bg-white-100
)
;
box-sizing
:
border-box
;
position
:
relative
;
...
...
@@ -1331,7 +1331,7 @@ onUnmounted(() => {
height
:
48px
;
background
:
var
(
--
color-main-active
);
margin-left
:
21px
;
color
:
#fff
;
color
:
var
(
--
bg-white-100
)
;
font-family
:
Microsoft
YaHei
;
font-size
:
20px
;
font-weight
:
700
;
...
...
@@ -1390,16 +1390,16 @@ onUnmounted(() => {
width
:
4px
;
height
:
4px
;
border-radius
:
2px
;
background
:
rgba
(
132
,
136
,
142
,
1
);
background
:
var
(
--
text-primary-50-color
);
}
.info1-box-left
{
margin-left
:
18px
;
width
:
100px
;
height
:
30px
;
color
:
rgba
(
95
,
101
,
108
,
1
);
color
:
var
(
--
text-primary-65-color
);
font-family
:
Microsoft
YaHei
;
font-size
:
16px
;
font-size
:
var
(
--
font-size-base
)
;
font-weight
:
400
;
line-height
:
30px
;
}
...
...
@@ -1407,9 +1407,9 @@ onUnmounted(() => {
.info1-box-right
{
margin-left
:
40px
;
height
:
30px
;
color
:
rgba
(
95
,
101
,
108
,
1
);
color
:
var
(
--
text-primary-65-color
);
font-family
:
Microsoft
YaHei
;
font-size
:
16px
;
font-size
:
var
(
--
font-size-base
)
;
font-weight
:
400
;
line-height
:
30px
;
}
...
...
@@ -1428,7 +1428,7 @@ onUnmounted(() => {
top
:
15px
;
left
:
4px
;
width
:
2px
;
background
:
#e6e7e8
;
background
:
var
(
--
bg-black-10
)
;
}
.info2-item
{
...
...
@@ -1444,7 +1444,7 @@ onUnmounted(() => {
left
:
4px
;
top
:
18px
;
width
:
2px
;
background
:
#e6e7e8
;
background
:
var
(
--
bg-black-10
)
;
height
:
34px
;
}
...
...
@@ -1474,9 +1474,9 @@ onUnmounted(() => {
margin-left
:
15px
;
width
:
147px
;
height
:
30px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
var
(
--
text-primary-80-color
);
font-family
:
Microsoft
YaHei
;
font-size
:
16px
;
font-size
:
var
(
--
font-size-base
)
;
font-weight
:
700
;
line-height
:
30px
;
}
...
...
@@ -1485,9 +1485,9 @@ onUnmounted(() => {
margin-left
:
10px
;
width
:
320px
;
height
:
30px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
var
(
--
text-primary-80-color
);
font-family
:
Microsoft
YaHei
;
font-size
:
16px
;
font-size
:
var
(
--
font-size-base
)
;
font-weight
:
400
;
line-height
:
30px
;
overflow
:
hidden
;
...
...
@@ -1526,9 +1526,9 @@ onUnmounted(() => {
.inner-box-title
{
flex
:
9
;
color
:
rgba
(
255
,
255
,
255
,
1
);
color
:
var
(
--
bg-white-100
);
font-family
:
Microsoft
YaHei
;
font-size
:
16px
;
font-size
:
var
(
--
font-size-base
)
;
font-weight
:
700
;
line-height
:
30px
;
overflow
:
hidden
;
...
...
@@ -1539,7 +1539,7 @@ onUnmounted(() => {
.inner-box-time
{
flex
:
2
;
height
:
30px
;
color
:
rgba
(
255
,
255
,
255
,
0
.
65
);
color
:
var
(
--
bg-white-
65
);
font-family
:
Microsoft
YaHei
;
font-size
:
14px
;
font-weight
:
400
;
...
...
@@ -1554,7 +1554,7 @@ onUnmounted(() => {
width
:
100%
;
height
:
40px
;
overflow
:
hidden
;
color
:
rgba
(
255
,
255
,
255
,
0
.8
);
color
:
var
(
--
bg-white-80
);
font-family
:
Microsoft
YaHei
;
font-size
:
14px
;
font-weight
:
400
;
...
...
@@ -1570,7 +1570,7 @@ onUnmounted(() => {
height
:
450px
;
border-radius
:
10px
;
box-shadow
:
0px
0px
15px
0px
rgba
(
22
,
119
,
255
,
0
.1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
var
(
--
bg-white-100
);
position
:
relative
;
.box2-header
{
...
...
@@ -1596,13 +1596,13 @@ onUnmounted(() => {
margin-left
:
18px
;
width
:
148px
;
height
:
48px
;
background
:
rgba
(
206
,
79
,
81
,
1
);
background
:
var
(
--
color-red-100
);
display
:
flex
;
.text
{
margin-left
:
16px
;
height
:
22px
;
color
:
#fff
;
color
:
var
(
--
bg-white-100
)
;
font-family
:
Microsoft
YaHei
;
font-size
:
20px
;
font-weight
:
700
;
...
...
@@ -1680,9 +1680,9 @@ onUnmounted(() => {
.text
{
width
:
315px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
var
(
--
text-primary-80-color
);
font-family
:
Microsoft
YaHei
;
font-size
:
16px
;
font-size
:
var
(
--
font-size-base
)
;
font-weight
:
400
;
line-height
:
47px
;
overflow
:
hidden
;
...
...
@@ -1694,7 +1694,7 @@ onUnmounted(() => {
width
:
88px
;
margin-left
:
5px
;
line-height
:
47px
;
color
:
rgba
(
132
,
136
,
142
,
1
);
color
:
var
(
--
text-primary-50-color
);
font-family
:
Microsoft
YaHei
;
font-size
:
14px
;
font-weight
:
400
;
...
...
@@ -1752,13 +1752,14 @@ onUnmounted(() => {
margin-top
:
21px
;
height
:
450px
;
display
:
flex
;
gap
:
16px
;
.box3
{
width
:
792px
;
height
:
450px
;
border-radius
:
10px
;
box-shadow
:
0px
0px
15px
0px
rgba
(
25
,
69
,
130
,
0
.2
);
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
var
(
--
bg-white-100
);
.box3-header
{
height
:
48px
;
...
...
@@ -1857,9 +1858,9 @@ onUnmounted(() => {
.title
{
width
:
440px
;
height
:
24px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
var
(
--
text-primary-80-color
);
font-family
:
Microsoft
YaHei
;
font-size
:
16px
;
font-size
:
var
(
--
font-size-base
)
;
font-weight
:
700
;
line-height
:
24px
;
overflow
:
hidden
;
...
...
@@ -1871,7 +1872,7 @@ onUnmounted(() => {
flex
:
1
;
text-align
:
right
;
height
:
24px
;
color
:
rgba
(
95
,
101
,
108
,
1
);
color
:
var
(
--
text-primary-65-color
);
font-family
:
Microsoft
YaHei
;
font-size
:
14px
;
font-weight
:
400
;
...
...
@@ -1883,9 +1884,9 @@ onUnmounted(() => {
.right-footer
{
width
:
657px
;
height
:
24px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
var
(
--
text-primary-80-color
);
font-family
:
Microsoft
YaHei
;
font-size
:
16px
;
font-size
:
var
(
--
font-size-base
)
;
font-weight
:
400
;
line-height
:
24px
;
overflow
:
hidden
;
...
...
@@ -1903,7 +1904,7 @@ onUnmounted(() => {
height
:
450px
;
border-radius
:
10px
;
box-shadow
:
0px
0px
15px
0px
rgba
(
25
,
69
,
130
,
0
.2
);
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
var
(
--
bg-white-100
);
.box4-header
{
width
:
792px
;
...
...
@@ -2062,9 +2063,9 @@ onUnmounted(() => {
.box8-desc
{
height
:
24px
;
line-height
:
24px
;
color
:
rgb
(
206
,
79
,
81
);
color
:
var
(
--
color-red-100
);
font-family
:
Microsoft
YaHei
;
font-size
:
16px
;
font-size
:
var
(
--
font-size-base
)
;
font-weight
:
700
;
}
...
...
@@ -2115,7 +2116,7 @@ onUnmounted(() => {
height
:
42px
;
line-height
:
42px
;
padding
:
0
20px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
var
(
--
text-primary-80-color
);
font-family
:
Microsoft
YaHei
;
font-size
:
20px
;
font-weight
:
400
;
...
...
@@ -2131,11 +2132,11 @@ onUnmounted(() => {
.btnActive
{
background
:
var
(
--
color-main-active
);
color
:
#fff
;
color
:
var
(
--
bg-white-100
)
;
font-weight
:
700
;
&
:hover
{
color
:
#fff
;
color
:
var
(
--
bg-white-100
)
;
background
:
var
(
--
color-main-active
);
}
}
...
...
@@ -2173,7 +2174,7 @@ onUnmounted(() => {
border
:
1px
solid
rgba
(
234
,
236
,
238
,
1
);
border-radius
:
10px
;
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
var
(
--
bg-white-100
);
.select-box
{
margin-top
:
20px
;
...
...
@@ -2216,8 +2217,8 @@ onUnmounted(() => {
margin-bottom
:
4px
;
:deep
(
.el-checkbox__label
)
{
color
:
rgb
(
95
,
101
,
108
);
font-size
:
16px
;
color
:
var
(
--
text-primary-65-color
);
font-size
:
var
(
--
font-size-base
)
;
font-weight
:
400
;
font-family
:
"Microsoft YaHei"
;
line-height
:
24px
;
...
...
@@ -2252,7 +2253,7 @@ onUnmounted(() => {
padding-bottom
:
24px
;
border-radius
:
10px
;
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
background
:
rgba
(
255
,
255
,
255
,
1
);
background
:
var
(
--
bg-white-100
);
margin-bottom
:
16px
;
overflow
:
hidden
;
...
...
@@ -2268,7 +2269,7 @@ onUnmounted(() => {
.title
{
cursor
:
pointer
;
height
:
26px
;
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
var
(
--
text-primary-80-color
);
font-family
:
Microsoft
YaHei
;
font-size
:
20px
;
font-weight
:
700
;
...
...
@@ -2283,9 +2284,9 @@ onUnmounted(() => {
.en-title
{
margin-top
:
8px
;
height
:
24px
;
color
:
rgba
(
95
,
101
,
108
,
1
);
color
:
var
(
--
text-primary-65-color
);
font-family
:
Microsoft
YaHei
;
font-size
:
16px
;
font-size
:
var
(
--
font-size-base
)
;
font-weight
:
400
;
line-height
:
24px
;
letter-spacing
:
0px
;
...
...
@@ -2309,9 +2310,9 @@ onUnmounted(() => {
.item-left
{
width
:
100px
;
// height: 24px;
color
:
rgb
(
59
,
65
,
75
);
color
:
var
(
--
text-primary-80-color
);
font-family
:
"Microsoft YaHei"
;
font-size
:
16px
;
font-size
:
var
(
--
font-size-base
)
;
font-weight
:
700
;
line-height
:
24px
;
letter-spacing
:
1px
;
...
...
@@ -2321,9 +2322,9 @@ onUnmounted(() => {
.item-right
{
max-width
:
1000px
;
margin-left
:
10px
;
color
:
rgba
(
95
,
101
,
108
,
1
);
color
:
var
(
--
text-primary-65-color
);
font-family
:
"Microsoft YaHei"
;
font-size
:
16px
;
font-size
:
var
(
--
font-size-base
)
;
font-weight
:
400
;
line-height
:
24px
;
letter-spacing
:
0px
;
...
...
@@ -2340,7 +2341,7 @@ onUnmounted(() => {
line-height
:
24px
;
padding
:
0
8px
;
border-radius
:
4px
;
background
:
rgba
(
231
,
243
,
255
,
1
);
background
:
var
(
--
color-primary-10
);
color
:
var
(
--
color-main-active
);
font-family
:
"Microsoft YaHei"
;
font-size
:
14px
;
...
...
@@ -2357,8 +2358,8 @@ onUnmounted(() => {
height
:
24px
;
line-height
:
22px
;
padding
:
0
10px
0
30px
;
background
:
rgba
(
255
,
255
,
255
,
1
);
color
:
rgb
(
95
,
101
,
108
);
background
:
var
(
--
bg-white-100
);
color
:
var
(
--
text-primary-65-color
);
border-top
:
1px
solid
rgb
(
234
,
236
,
238
);
border-bottom
:
1px
solid
rgb
(
234
,
236
,
238
);
position
:
relative
;
...
...
@@ -2391,16 +2392,16 @@ onUnmounted(() => {
}
&
:last-child
{
background
:
rgb
(
59
,
65
,
75
);
background
:
var
(
--
text-primary-80-color
);
color
:
rgba
(
255
,
255
,
255
,
1
);
border-color
:
rgb
(
59
,
65
,
75
);
border-color
:
var
(
--
text-primary-80-color
);
padding-right
:
10px
;
border-radius
:
0
;
border-right
:
none
;
&
:
:
after
{
display
:
block
;
border-color
:
rgb
(
59
,
65
,
75
);
border-color
:
var
(
--
text-primary-80-color
);
box-shadow
:
none
;
}
}
...
...
@@ -2409,9 +2410,9 @@ onUnmounted(() => {
margin-left
:
0
;
padding
:
0
10px
;
border-radius
:
4px
0
0
4px
;
background
:
rgb
(
59
,
65
,
75
);
background
:
var
(
--
text-primary-80-color
);
color
:
rgba
(
255
,
255
,
255
,
1
);
border
:
1px
solid
rgb
(
59
,
65
,
75
);
border
:
1px
solid
var
(
--
text-primary-80-color
);
border-right
:
none
;
}
}
...
...
@@ -2429,9 +2430,9 @@ onUnmounted(() => {
padding-top
:
12px
;
.footer-left
{
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
var
(
--
text-primary-80-color
);
font-family
:
"Microsoft YaHei"
;
font-size
:
16px
;
font-size
:
var
(
--
font-size-base
)
;
font-weight
:
400
;
line-height
:
32px
;
}
...
...
@@ -2448,9 +2449,9 @@ onUnmounted(() => {
justify-content
:
space-between
;
.footer-left
{
color
:
rgba
(
59
,
65
,
75
,
1
);
color
:
var
(
--
text-primary-80-color
);
font-family
:
"Microsoft YaHei"
;
font-size
:
16px
;
font-size
:
var
(
--
font-size-base
)
;
font-weight
:
400
;
line-height
:
32px
;
}
...
...
src/views/bill/billHome/utils/worldCloudChart.js
浏览文件 @
7b3de8a1
...
...
@@ -25,7 +25,7 @@ const getWordCloudChart = (data = []) => {
// shape: 'star' // 星形
// shape: 'cardioid' // 心形
gridSize
:
15
,
// 网格大小,影响词间距。
sizeRange
:
[
1
0
,
30
],
// 定义词云中文字大小的范围
sizeRange
:
[
1
6
,
36
],
// 定义词云中文字大小的范围
rotationRange
:
[
0
,
0
],
rotationStep
:
15
,
drawOutOfBound
:
false
,
// 是否超出画布
...
...
src/views/bill/deepDig/poliContribution/index.vue
浏览文件 @
7b3de8a1
...
...
@@ -246,7 +246,7 @@
</template>
<
script
setup
>
import
{
ref
,
onMounted
,
watch
,
computed
}
from
"vue"
;
import
{
ref
,
onMounted
,
watch
,
computed
,
nextTick
}
from
"vue"
;
import
{
getBillPoliContribution
,
getBillMainPoliContribution
,
getBillPersonPoliContribution
}
from
"@/api/deepdig"
;
import
setChart
from
"@/utils/setChart"
;
...
...
@@ -488,6 +488,27 @@ const chart2Data = ref([]);
const
chart2ColorList
=
ref
([
"#4096FF"
,
"#FFA39E"
,
"#ADC6FF"
,
"#FFC069"
,
"#B5F5EC"
,
"#B37FEB"
,
"#D6E4FF"
]);
// 使用静态行业分布数据,用于“政治献金领域分布”模块展示
const
useStaticIndustryData
=
true
;
const
staticChart2Data
=
[
{
name
:
"集成电路"
,
value
:
21
},
{
name
:
"能源"
,
value
:
18
},
{
name
:
"量子科技"
,
value
:
16
},
{
name
:
"航空航天"
,
value
:
14
},
{
name
:
"通信设备"
,
value
:
12
},
{
name
:
"生物科技"
,
value
:
11
},
{
name
:
"其他"
,
value
:
8
}
];
const
staticAreaList
=
[
{
name
:
"集成电路"
,
amount
:
186000
,
insNum
:
8
},
{
name
:
"能源"
,
amount
:
180000
,
insNum
:
5
},
{
name
:
"量子科技"
,
amount
:
171000
,
insNum
:
2
},
{
name
:
"航空航天"
,
amount
:
75000
,
insNum
:
3
},
{
name
:
"通信设备"
,
amount
:
70000
,
insNum
:
2
}
];
const
sankeyColors
=
[
"#5470c6"
,
"#91cc75"
,
...
...
@@ -617,7 +638,7 @@ const getMainPoliContribution = async () => {
const
fullSourceList
=
ref
([]);
const
showAllSankeyData
=
ref
(
false
);
const
renderSankeyChart
=
()
=>
{
const
renderSankeyChart
=
async
()
=>
{
const
sourceList
=
showAllSankeyData
.
value
?
fullSourceList
.
value
:
fullSourceList
.
value
.
slice
(
0
,
5
);
if
(
sourceList
.
length
>
0
)
{
...
...
@@ -626,33 +647,39 @@ const renderSankeyChart = () => {
const
totalAmount
=
sourceList
.
reduce
((
sum
,
item
)
=>
sum
+
(
item
.
amount
||
0
),
0
);
const
orgNodes
=
sourceList
.
map
((
item
,
index
)
=>
({
name
:
item
.
orgNameZh
||
item
.
orgName
||
`机构
${
index
+
1
}
`
,
value
:
item
.
amount
,
itemStyle
:
{
color
:
sankeyColors
[
index
%
sankeyColors
.
length
]
}
}));
const
nodes
=
[
...
orgNodes
,
{
name
:
personName
,
value
:
totalAmount
,
label
:
{
position
:
"left"
},
itemStyle
:
{
color
:
"#
FF1493
"
color
:
"#
34C38F
"
}
},
...
sourceList
.
map
((
item
,
index
)
=>
({
name
:
item
.
orgNameZh
,
value
:
item
.
amount
,
itemStyle
:
{
color
:
sankeyColors
[
index
%
sankeyColors
.
length
]
}
}))
}
];
const
links
=
sourceList
.
map
(
item
=>
({
source
:
item
.
orgNameZhZh
,
target
:
personName
,
value
:
item
.
amount
}));
const
links
=
sourceList
.
map
((
item
,
index
)
=>
({
source
:
item
.
orgNameZh
||
item
.
orgName
||
`机构
${
index
+
1
}
`
,
target
:
personName
,
value
:
item
.
amount
}))
.
filter
(
item
=>
!!
item
.
source
&&
!!
item
.
target
);
// `chart1` 容器由 v-if/v-else 动态渲染,必须等 DOM 挂载后再 init
await
nextTick
();
let
chart1
=
getSankeyChart
(
nodes
,
links
);
setChart
(
chart1
,
"chart1"
);
}
else
{
await
nextTick
();
let
chart1
=
getSankeyChart
([],
[]);
setChart
(
chart1
,
"chart1"
);
}
...
...
@@ -678,33 +705,46 @@ const getPersonPoliContribution = async personId => {
if
(
res
.
code
===
200
&&
res
.
data
)
{
personPoliContribution
.
value
=
res
.
data
;
// 政治献金流向:始终使用真实接口数据渲染桑基图
fullSourceList
.
value
=
res
.
data
.
sourceList
||
[];
showAllSankeyData
.
value
=
false
;
// Reset to default (top 5)
renderSankeyChart
();
// Update Industry List (Chart 2 and List)
const
industries
=
res
.
data
.
industryList
||
[];
// 政治献金领域分布:根据配置选择静态数据或接口数据
if
(
useStaticIndustryData
)
{
// 饼图数据(左侧圆环)
chart2Data
.
value
=
staticChart2Data
;
const
chart2Static
=
getPieChart
(
chart2Data
.
value
,
chart2ColorList
.
value
);
setChart
(
chart2Static
,
"chart2"
);
// 右侧列表(Top5 领域)
areaList
.
value
=
staticAreaList
.
map
(
item
=>
({
name
:
item
.
name
,
num
:
item
.
amount
,
numtext
:
`$
${
item
.
amount
.
toLocaleString
()}
`
,
insNum
:
item
.
insNum
}));
}
else
{
// 使用接口返回的行业分布
const
industries
=
res
.
data
.
industryList
||
[];
// Update Chart 2 Data
chart2Data
.
value
=
industries
.
map
(
item
=>
({
name
:
item
.
industryName
,
value
:
item
.
amount
}));
chart2Data
.
value
=
industries
.
map
(
item
=>
({
name
:
item
.
industryName
,
value
:
item
.
amount
}));
// Re-render Chart 2
let
chart2
=
getPieChart
(
chart2Data
.
value
,
chart2ColorList
.
value
);
setChart
(
chart2
,
"chart2"
);
const
chart2Dynamic
=
getPieChart
(
chart2Data
.
value
,
chart2ColorList
.
value
);
setChart
(
chart2Dynamic
,
"chart2"
);
// Update List Data
// Sort by amount desc to ensure first item is max for progress bar
const
sortedIndustries
=
[...
industries
].
sort
((
a
,
b
)
=>
(
b
.
amount
||
0
)
-
(
a
.
amount
||
0
));
const
sortedIndustries
=
[...
industries
].
sort
((
a
,
b
)
=>
(
b
.
amount
||
0
)
-
(
a
.
amount
||
0
));
areaList
.
value
=
sortedIndustries
.
map
(
item
=>
({
name
:
item
.
industryName
,
num
:
item
.
amount
,
numtext
:
`$
${(
item
.
amount
||
0
).
toLocaleString
()}
`
,
insNum
:
item
.
orgNum
}));
areaList
.
value
=
sortedIndustries
.
map
(
item
=>
({
name
:
item
.
industryName
,
num
:
item
.
amount
,
numtext
:
`$
${(
item
.
amount
||
0
).
toLocaleString
()}
`
,
insNum
:
item
.
orgNum
}));
}
}
else
{
personPoliContribution
.
value
=
[];
fullSourceList
.
value
=
[];
...
...
@@ -712,8 +752,8 @@ const getPersonPoliContribution = async personId => {
chart2Data
.
value
=
[];
areaList
.
value
=
[];
let
chart2
=
getPieChart
([],
chart2ColorList
.
value
);
setChart
(
chart2
,
"chart2"
);
const
chart2Empty
=
getPieChart
([],
chart2ColorList
.
value
);
setChart
(
chart2
Empty
,
"chart2"
);
}
}
catch
(
error
)
{
console
.
error
(
error
);
...
...
@@ -723,8 +763,8 @@ const getPersonPoliContribution = async personId => {
chart2Data
.
value
=
[];
areaList
.
value
=
[];
let
chart2
=
getPieChart
([],
chart2ColorList
.
value
);
setChart
(
chart2
,
"chart2"
);
const
chart2Error
=
getPieChart
([],
chart2ColorList
.
value
);
setChart
(
chart2
Error
,
"chart2"
);
}
};
...
...
src/views/bill/deepDig/poliContribution/utils/sankey.js
浏览文件 @
7b3de8a1
...
...
@@ -8,30 +8,87 @@ const getSankeyChart = (data = [], links = []) => {
},
series
:
{
type
:
'sankey'
,
layout
:
'none'
,
left
:
'1%'
,
right
:
'1%'
,
top
:
'5%'
,
bottom
:
'5%'
,
// 禁止鼠标拖拽/缩放平移,避免图表被交互改变
draggable
:
false
,
roam
:
false
,
left
:
16
,
right
:
16
,
top
:
14
,
bottom
:
14
,
nodeAlign
:
'right'
,
// 目标效果:人名贴右侧
emphasis
:
{
focus
:
'adjacency'
},
nodeWidth
:
50
,
nodeGap
:
2
,
// 所有色块宽度增加三倍
nodeWidth
:
54
,
nodeGap
:
10
,
layoutIterations
:
32
,
lineStyle
:
{
color
:
'source'
,
curveness
:
0.5
color
:
'rgba(0, 0, 0, 0.08)'
,
// 浅灰“行背景带”的基色
opacity
:
1
,
curveness
:
0.2
},
label
:
{
show
:
true
,
formatter
:
function
(
params
)
{
return
`
${
params
.
name
}
$
${
params
.
value
.
toLocaleString
()}
`
;
return
`
${
params
.
name
}
`
;
},
position
:
'right'
,
fontSize
:
16
,
color
:
'#555'
color
:
'#303133'
,
overflow
:
'truncate'
,
width
:
140
},
edgeLabel
:
{
show
:
true
,
formatter
:
function
(
params
)
{
const
val
=
params
.
value
||
0
;
return
`$
${
Number
(
val
).
toLocaleString
()}
`
;
},
color
:
'#303133'
,
fontSize
:
16
,
overflow
:
'truncate'
,
width
:
140
,
align
:
'center'
},
itemStyle
:
{
borderWidth
:
0
},
nodeSort
:
'descending'
,
levels
:
[
// depth = 0(机构节点)
{
depth
:
0
,
itemStyle
:
{
borderWidth
:
0
},
label
:
{
position
:
'right'
,
color
:
'#303133'
,
fontSize
:
16
,
overflow
:
'truncate'
,
width
:
140
}
},
// depth = 1(人物节点)
{
depth
:
1
,
itemStyle
:
{
color
:
'#34C38F'
},
label
:
{
// 人物名称移至色块左侧
position
:
'left'
,
// 让文字最右侧紧贴绿色色块左侧
distance
:
5
,
color
:
'#303133'
,
fontSize
:
16
,
overflow
:
'truncate'
,
width
:
120
,
align
:
'right'
}
}
],
data
:
data
,
links
:
links
}
...
...
src/views/decree/decreeHome/index.vue
浏览文件 @
7b3de8a1
...
...
@@ -2049,6 +2049,7 @@ onMounted(async () => {
margin-top
:
21px
;
height
:
450px
;
display
:
flex
;
gap
:
16px
;
.box3
{
width
:
792px
;
...
...
src/views/exportControl/index.vue
浏览文件 @
7b3de8a1
...
...
@@ -274,7 +274,7 @@
<el-row
:gutter=
"20"
style=
"width: 1600px; margin: 0 auto; height: 528px; margin-top: 64px"
>
<CustomTitle
id=
"position3"
title=
"数据总览"
/>
<el-col
:span=
"24"
>
<custom-container
title=
"发布频度"
:titleIcon=
"box3Icon"
height=
"4
5
0px"
>
<custom-container
title=
"发布频度"
:titleIcon=
"box3Icon"
height=
"4
0
0px"
>
<
template
#
default
>
<div
class=
"box3"
>
<div
class=
"box3-content"
>
...
...
src/views/exportControl/v2.0SingleSanction/components/deepMining/index.vue
浏览文件 @
7b3de8a1
<
template
>
<div
class=
"deep-mining"
:class=
"
{ deepMiningChartmode: isInChart }">
<div
class=
"side-nav"
>
<div
v-for=
"(item, index) in activeTab"
:key=
"index"
class=
"tab-item"
:class=
"
{ active: index === activeIndex }"
@click="activeIndex = index">
<div
v-for=
"(item, index) in activeTab"
:key=
"index"
class=
"tab-item"
:class=
"
{ active: index === activeIndex }"
@click="activeIndex = index"
>
{{
item
}}
<span
v-if=
"index === activeIndex"
class=
"arrow"
></span>
</div>
...
...
@@ -47,8 +52,13 @@
<span
class=
"group-count"
>
{{ group.count }}家
</span>
</div>
<div
class=
"group-children custom-scrollbar"
v-show=
"group.expanded"
>
<div
class=
"entity-item"
v-for=
"item in group.children"
:key=
"item.id"
:class=
"{ active: activeEntityId === item.id }"
@
click=
"selectEntity(item)"
>
<div
class=
"entity-item"
v-for=
"item in group.children"
:key=
"item.id"
:class=
"{ active: activeEntityId === item.id }"
@
click=
"selectEntity(item)"
>
<div
class=
"item-icon"
>
<img
:src=
"defaultTitle"
alt=
""
class=
"item-img"
/>
</div>
...
...
@@ -63,12 +73,19 @@
<div
class=
"right"
@
mouseenter=
"handleMouseEnter"
@
mouseleave=
"handleMouseLeave"
>
<div
class=
"title-com custom-right-header"
>
<div
class=
"toggle-group"
>
<div
class=
"toggle-btn"
:class=
"{ active: rightActiveTab === 'supplyChain' }"
@
click=
"rightActiveTab = 'supplyChain'"
>
<div
class=
"toggle-btn"
:class=
"{ active: rightActiveTab === 'supplyChain' }"
@
click=
"rightActiveTab = 'supplyChain'"
>
<img
:src=
"rightActiveTab === 'supplyChain' ? icon01Active : icon01"
alt=
""
/>
<span>
供应链
</span>
</div>
<div
class=
"toggle-btn"
:class=
"{ active: rightActiveTab === 'equity' }"
@
click=
"rightActiveTab = 'equity'"
>
<div
class=
"toggle-btn"
:class=
"{ active: rightActiveTab === 'equity' }"
@
click=
"rightActiveTab = 'equity'"
>
<img
:src=
"rightActiveTab === 'equity' ? icon02Active : icon02"
alt=
""
/>
<span>
股权
</span>
</div>
...
...
@@ -115,8 +132,8 @@ import {
getSingleSanctionEntitySupplyChain
,
getSingleSanctionEntityEquity
}
from
"@/api/exportControlV2.0"
;
import
RelationGraph
from
'./components/RelationGraph.vue'
;
import
AnalysisBox
from
'@/components/base/boxBackground/analysisBox.vue'
;
import
RelationGraph
from
"./components/RelationGraph.vue"
;
import
AnalysisBox
from
"@/components/base/boxBackground/analysisBox.vue"
;
const
sanRecordId
=
ref
(
""
);
const
activeTab
=
ref
([
"实体穿透分析"
]);
...
...
@@ -170,11 +187,11 @@ const handleMouseLeave = () => {
isInChart
.
value
=
false
;
};
const
handleNodeClick
=
(
node
)
=>
{
const
handleNodeClick
=
node
=>
{
selectedNode
.
value
=
node
;
};
const
handleLayoutChange
=
(
type
)
=>
{
const
handleLayoutChange
=
type
=>
{
controlActive
.
value
=
type
;
if
(
type
!==
2
)
{
isInChart
.
value
=
true
;
...
...
@@ -184,9 +201,8 @@ const handleLayoutChange = (type) => {
};
const
updateGraphData
=
()
=>
{
const
data
=
rightActiveTab
.
value
===
'supplyChain'
?
singleSanctionEntitySupplyChainData
.
value
:
singleSanctionEntityEquityData
.
value
;
const
data
=
rightActiveTab
.
value
===
"supplyChain"
?
singleSanctionEntitySupplyChainData
.
value
:
singleSanctionEntityEquityData
.
value
;
if
(
!
data
)
return
;
...
...
@@ -214,7 +230,7 @@ const updateGraphData = () => {
links
.
push
({
source
:
`p-
${
item
.
id
||
index
}
`
,
target
:
"0"
,
name
:
rightActiveTab
.
value
===
'supplyChain'
?
"供应商"
:
(
item
.
type
||
"持股"
)
name
:
rightActiveTab
.
value
===
"supplyChain"
?
"供应商"
:
item
.
type
||
"持股"
});
});
...
...
@@ -231,14 +247,14 @@ const updateGraphData = () => {
links
.
push
({
source
:
"0"
,
target
:
`c-
${
item
.
id
||
index
}
`
,
name
:
rightActiveTab
.
value
===
'supplyChain'
?
"客户"
:
(
item
.
type
||
"投资"
)
name
:
rightActiveTab
.
value
===
"supplyChain"
?
"客户"
:
item
.
description
||
"投资"
});
});
graphData
.
value
=
{
nodes
,
links
};
};
const
updateTreeData
=
(
data
)
=>
{
const
updateTreeData
=
data
=>
{
if
(
!
data
)
return
;
treeData
.
value
=
{
...
...
@@ -318,17 +334,17 @@ const getSingleSanctionEntityListRequest = async () => {
}
};
watch
(
rightActiveTab
,
async
(
newTab
)
=>
{
if
(
newTab
===
'supplyChain'
)
{
watch
(
rightActiveTab
,
async
newTab
=>
{
if
(
newTab
===
"supplyChain"
)
{
await
getSingleSanctionEntitySupplyChainRequest
();
}
else
{
await
getSingleSanctionEntityEquityRequest
();
}
});
watch
(
activeEntityId
,
async
(
newId
)
=>
{
watch
(
activeEntityId
,
async
newId
=>
{
if
(
newId
)
{
if
(
rightActiveTab
.
value
===
'supplyChain'
)
{
if
(
rightActiveTab
.
value
===
"supplyChain"
)
{
await
getSingleSanctionEntitySupplyChainRequest
();
}
else
{
await
getSingleSanctionEntityEquityRequest
();
...
...
@@ -337,7 +353,7 @@ watch(activeEntityId, async (newId) => {
});
watch
(
is50PercentRule
,
async
()
=>
{
if
(
rightActiveTab
.
value
===
'equity'
)
{
if
(
rightActiveTab
.
value
===
"equity"
)
{
await
getSingleSanctionEntityEquityRequest
();
}
});
...
...
@@ -857,7 +873,6 @@ onMounted(async () => {
}
.title-com.custom-right-header
{
.box
,
.text
{
display
:
none
;
...
...
src/views/finance/index.vue
浏览文件 @
7b3de8a1
...
...
@@ -12,8 +12,13 @@
<div
class=
"home-top-bg"
></div>
<div
class=
"home-main-header"
>
<div
class=
"home-main-header-center"
>
<SearchContainer
style=
"margin-bottom: 0; height: fit-content"
v-if=
"containerRef"
placeholder=
"搜索投融资限制政策"
:containerRef=
"containerRef"
areaName=
""
/>
<SearchContainer
style=
"margin-bottom: 0; height: fit-content"
v-if=
"containerRef"
placeholder=
"搜索投融资限制政策"
:containerRef=
"containerRef"
areaName=
""
/>
<!--
<el-input
v-model=
"searchKey"
style=
"width: 100%; height: 48px"
...
...
@@ -110,9 +115,17 @@
</div>
<div
class=
"box1-top-content-item"
>
<span
class=
"box1-top-content-item-title"
>
· 涉及领域:
</span>
<div
class=
"box1-top-content-item-tags"
v-for=
"item in ['航空航天', '人工智能', '集成电路']"
:key=
"item"
>
<el-tag
:type=
"item === '航空航天' ? 'primary' : item === '人工智能' ? 'danger' : 'info'
"
>
{{
item
}}
</el-tag>
<div
class=
"box1-top-content-item-tags"
v-for=
"item in ['航空航天', '人工智能', '集成电路']"
:key=
"item"
>
<el-tag
:type=
"
item === '航空航天' ? 'primary' : item === '人工智能' ? 'danger' : 'info'
"
>
{{
item
}}
</el-tag
>
</div>
</div>
</div>
...
...
@@ -170,8 +183,14 @@
</template>
</custom-container> -->
<RiskSignal
:list=
"warningList"
@
item-click=
"handleToRiskSignalDetail"
@
more-click=
"handleToMoreRiskSignal"
riskLevel=
"status"
postDate=
"time"
name=
"title"
/>
<RiskSignal
:list=
"warningList"
@
item-click=
"handleToRiskSignalDetail"
@
more-click=
"handleToMoreRiskSignal"
riskLevel=
"status"
postDate=
"time"
name=
"title"
/>
</el-col>
</el-row>
<el-row
:gutter=
"20"
style=
"width: 1600px; margin: 0 auto"
>
...
...
@@ -195,11 +214,22 @@
<div
class=
"center-center"
>
<div
class=
"center-center-news"
>
<NewsList
:newsList=
"customNewsData"
@
item-click=
"handleNewsInfoClick"
@
more-click=
"handleToMoreNews"
from=
'from'
content=
"description"
title=
"title"
img=
"image"
/>
<NewsList
:newsList=
"customNewsData"
@
item-click=
"handleNewsInfoClick"
@
more-click=
"handleToMoreNews"
from=
"from"
content=
"description"
title=
"title"
img=
"image"
/>
</div>
<MessageBubble
:messageList=
"messageList"
@
person-click=
"handlePerClick"
imageUrl=
"avatar"
@
more-click=
"handleToSocialDetail"
/>
<MessageBubble
:messageList=
"messageList"
@
person-click=
"handlePerClick"
imageUrl=
"avatar"
@
more-click=
"handleToSocialDetail"
/>
<!-- <div class="boxs4">
<custom-container title="社交媒体" :titleIcon="dialogIcon" height="450px">
<template #default>
...
...
@@ -225,7 +255,6 @@
</div> -->
</div>
<el-row
:gutter=
"20"
style=
"width: 1600px; margin: 0 auto"
>
<CustomTitle
id=
"position3"
title=
"数据总览"
style=
"margin-top: 64px"
/>
<el-col
:span=
"24"
>
...
...
@@ -240,18 +269,27 @@
<template
#
default=
"scope"
>
<div
style=
"display: flex; align-items: center"
>
<span
style=
"margin-right: 10px; width: 40px"
>
{{
scope
.
row
.
num
}}
次
</span>
<el-progress
:percentage=
"scope.row.percent * 100"
:show-text=
"false"
:status=
"getStatus(scope.row.percent)"
/>
<el-progress
:percentage=
"scope.row.percent * 100"
:show-text=
"false"
:status=
"getStatus(scope.row.percent)"
/>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"重点领域"
width=
"180"
>
<
template
#
default=
"scope"
>
<div
style=
"display: flex; align-items: center; gap: 5px"
>
<el-tag
v-for=
"tag in scope.row.tags"
:key=
"tag"
:type=
"tag === '通信网络'
? 'primary'
: TAGTYPE[Math.floor(Math.random() * 5)]
"
>
{{
tag
}}
</el-tag>
<el-tag
v-for=
"tag in scope.row.tags"
:key=
"tag"
:type=
"
tag === '通信网络'
? 'primary'
: TAGTYPE[Math.floor(Math.random() * 5)]
"
>
{{
tag
}}
</el-tag
>
</div>
</
template
>
</el-table-column>
...
...
@@ -265,18 +303,27 @@
<
template
#
default=
"scope"
>
<div
style=
"display: flex; align-items: center"
>
<span
style=
"margin-right: 10px; width: 40px"
>
{{
scope
.
row
.
num
}}
次
</span>
<el-progress
:percentage=
"scope.row.percent * 100"
:show-text=
"false"
:status=
"getStatus(scope.row.percent)"
/>
<el-progress
:percentage=
"scope.row.percent * 100"
:show-text=
"false"
:status=
"getStatus(scope.row.percent)"
/>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"重点领域"
width=
"180"
>
<
template
#
default=
"scope"
>
<div
style=
"display: flex; align-items: center; gap: 5px"
>
<el-tag
v-for=
"tag in scope.row.tags"
:key=
"tag"
:type=
"tag === '通信网络'
? 'primary'
: TAGTYPE[Math.floor(Math.random() * 5)]
"
>
{{
tag
}}
</el-tag>
<el-tag
v-for=
"tag in scope.row.tags"
:key=
"tag"
:type=
"
tag === '通信网络'
? 'primary'
: TAGTYPE[Math.floor(Math.random() * 5)]
"
>
{{
tag
}}
</el-tag
>
</div>
</
template
>
</el-table-column>
...
...
@@ -290,18 +337,27 @@
<
template
#
default=
"scope"
>
<div
style=
"display: flex; align-items: center"
>
<span
style=
"margin-right: 10px; width: 40px"
>
{{
scope
.
row
.
num
}}
次
</span>
<el-progress
:percentage=
"scope.row.percent * 100"
:show-text=
"false"
:status=
"getStatus(scope.row.percent)"
/>
<el-progress
:percentage=
"scope.row.percent * 100"
:show-text=
"false"
:status=
"getStatus(scope.row.percent)"
/>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"重点领域"
width=
"180"
>
<
template
#
default=
"scope"
>
<div
style=
"display: flex; align-items: center; gap: 5px"
>
<el-tag
v-for=
"tag in scope.row.tags"
:key=
"tag"
:type=
"tag === '通信网络'
? 'primary'
: TAGTYPE[Math.floor(Math.random() * 5)]
"
>
{{
tag
}}
</el-tag>
<el-tag
v-for=
"tag in scope.row.tags"
:key=
"tag"
:type=
"
tag === '通信网络'
? 'primary'
: TAGTYPE[Math.floor(Math.random() * 5)]
"
>
{{
tag
}}
</el-tag
>
</div>
</
template
>
</el-table-column>
...
...
@@ -358,7 +414,8 @@
</div>
</div>
<div
class=
"box4-footer"
>
<el-button
type=
"primary"
link
:icon=
"DownRight"
>
查看更多
<el-button
type=
"primary"
link
:icon=
"DownRight"
>
查看更多
<el-icon>
<DArrowRight
/>
</el-icon>
...
...
@@ -375,8 +432,15 @@
</
template
>
<
template
#
default
>
<div
class=
"box5"
>
<el-table
:data=
"paginatedData"
class=
"sanction-table"
stripe
empty-text=
"暂无数据"
height=
"700px"
header-row-class-name=
"table-header"
row-class-name=
"table-row"
>
<el-table
:data=
"paginatedData"
class=
"sanction-table"
stripe
empty-text=
"暂无数据"
height=
"700px"
header-row-class-name=
"table-header"
row-class-name=
"table-row"
>
<!--
<el-table-column
prop=
"index"
label=
"序号"
width=
"80"
align=
"center"
>
<template
#
default=
"scope"
>
{{
scope
.
$index
+
1
+
(
currentPage
-
1
)
*
pageSize
}}
...
...
@@ -385,12 +449,14 @@
<el-table-column
prop=
"name"
label=
"实体名称"
min-width=
"200"
>
<
template
#
default=
"scope"
>
<div
style=
"
<div
style=
"
font-weight: 700;
font-size: 16px;
color: rgba(59, 65, 75, 1);
font-family: Microsoft YaHei;
"
>
"
>
{{
scope
.
row
.
name
}}
</div>
</
template
>
...
...
@@ -399,8 +465,12 @@
<el-table-column
prop=
"domains"
label=
"涉及领域"
min-width=
"180"
>
<
template
#
default=
"scope"
>
<div
class=
"domain-tags"
>
<el-tag
v-for=
"tag in scope.row.domains"
:key=
"tag"
:type=
"tag === '通信网络' ? 'primary' : 'danger'"
>
{{
tag
}}
</el-tag>
<el-tag
v-for=
"tag in scope.row.domains"
:key=
"tag"
:type=
"tag === '通信网络' ? 'primary' : 'danger'"
>
{{
tag
}}
</el-tag
>
</div>
</
template
>
</el-table-column>
...
...
@@ -436,7 +506,9 @@
<el-table-column
prop=
"revenue"
label=
"50%规则子企业"
width=
"140"
align=
"right"
>
<
template
#
default=
"scope"
>
<span
:class=
"['revenue-cell', scope.row.revenue === '无营收数据' ? 'no-revenue' : '']"
>
<span
:class=
"['revenue-cell', scope.row.revenue === '无营收数据' ? 'no-revenue' : '']"
>
{{
scope
.
row
.
revenue
}}
</span>
</
template
>
...
...
@@ -447,8 +519,14 @@
<!-- <div class="pagination-info">
第{{ currentPage }}页,共{{ totalPages }}页
</div> -->
<el-pagination
v-model:current-page=
"currentPage"
:page-size=
"pageSize"
:total=
"total"
:pager-count=
"5"
layout=
"prev, pager, next"
background
/>
<el-pagination
v-model:current-page=
"currentPage"
:page-size=
"pageSize"
:total=
"total"
:pager-count=
"5"
layout=
"prev, pager, next"
background
/>
</div>
</div>
</template>
...
...
@@ -531,7 +609,8 @@ const messageList = ref([
name
:
"唐纳德·特朗普"
,
time
:
"2025-05-12 16:02:37"
,
source
:
"真实社交"
,
content
:
"埃隆·马斯克在强力支持我竞选总统之前,早就知道我强烈反对‘电动汽车强制令’。这太荒谬了,这一直是我竞选活动的主要部分。电动汽车没问题,但不应该强迫每个人都拥有一辆。埃隆获得的补贴可能远远超过历史上任何一个人。如果没有补贴,埃隆可能不得不关门大吉,回到南非老家。"
content
:
"埃隆·马斯克在强力支持我竞选总统之前,早就知道我强烈反对‘电动汽车强制令’。这太荒谬了,这一直是我竞选活动的主要部分。电动汽车没问题,但不应该强迫每个人都拥有一辆。埃隆获得的补贴可能远远超过历史上任何一个人。如果没有补贴,埃隆可能不得不关门大吉,回到南非老家。"
},
{
avatar
:
elongAvatar
,
...
...
@@ -1218,7 +1297,7 @@ const handleGetHylyList = async () => {
hylymc
:
"全部分类"
};
categoryList
.
value
=
[
obj
,
...
categoryList
.
value
];
}
catch
(
error
)
{
}
}
catch
(
error
)
{}
};
const
chart1Data
=
ref
({
...
...
@@ -1264,7 +1343,7 @@ const handleGetBillsByType = async () => {
img
:
bill1
};
});
}
catch
(
error
)
{
}
}
catch
(
error
)
{}
};
// 查看社交媒体详情
const
handleToSocialDetail
=
item
=>
{
...
...
@@ -1805,7 +1884,9 @@ onMounted(async () => {
box-shadow
:
0px
0px
20px
0px
rgba
(
25
,
69
,
130
,
0
.1
);
background
:
rgba
(
255
,
255
,
255
,
0
.65
);
position
:
relative
;
transition
:
transform
0
.3s
ease
,
box-shadow
0
.3s
ease
;
transition
:
transform
0
.3s
ease
,
box-shadow
0
.3s
ease
;
cursor
:
pointer
;
&
:hover
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论