Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
7aff6a62
提交
7aff6a62
authored
3月 27, 2026
作者:
coderBryanFu
浏览文件
操作
浏览文件
下载
差异文件
更新系统头部标题部分
上级
b9069a22
32486bbe
流水线
#160
已失败 于阶段
in 32 秒
变更
10
流水线
1
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
58 行增加
和
49 行删除
+58
-49
index.vue
src/components/base/messageBubble/index.vue
+9
-11
index.vue
src/styles/components/GraphChart/index.vue
+1
-1
setChart.js
src/utils/setChart.js
+1
-1
index.vue
src/views/bill/background/index.vue
+6
-8
index.vue
src/views/bill/billHome/index.vue
+19
-12
index.vue
src/views/bill/influence/industry/index.vue
+15
-3
index.vue
src/views/dataLibrary/bill/countryBill/index.vue
+0
-0
index.vue
src/views/dataLibrary/components/ChartContainer/index.vue
+3
-9
index.vue
src/views/home/index.vue
+1
-1
pdf.vue
src/views/thinkTank/reportOriginal/pdf.vue
+3
-3
没有找到文件。
src/components/base/messageBubble/index.vue
浏览文件 @
7aff6a62
...
...
@@ -10,7 +10,7 @@
</div>
<!--
<div
class=
"more"
@
click=
"handleToMoreNews"
>
{{
"更多 +"
}}
</div>
-->
</div>
<div
class=
"msg-bubble-main"
ref=
"scrollContainer"
@
mouseenter=
"stopScroll"
@
mouseleave=
"startScroll"
>
<div
class=
"msg-bubble-main"
ref=
"scrollContainer"
>
<div
class=
"message-bubble"
v-for=
"(item, index) in displayList"
:key=
"index"
@
click=
"handleClickPerson(item)"
>
<div
class=
"avatar-container"
>
<img
:src=
"item[props.imageUrl] || avatarUser"
:alt=
"item[props.name]"
class=
"avatar"
/>
...
...
@@ -110,9 +110,9 @@ const currentIndex = ref(0)
// 计算当前显示的消息列表(只显示固定数量的消息)
const
displayList
=
computed
(()
=>
{
//
if(props.messageList.length
<
4
)
{
//
return props.messageList
//
}
if
(
props
.
messageList
.
length
<
4
)
{
return
props
.
messageList
}
// 确保 messageList 存在且有数据
if
(
!
props
.
messageList
||
!
Array
.
isArray
(
props
.
messageList
)
||
props
.
messageList
.
length
===
0
)
{
return
[]
...
...
@@ -140,7 +140,7 @@ const startScroll = () => {
if
(
timer
)
clearInterval
(
timer
)
timer
=
setInterval
(()
=>
{
currentIndex
.
value
=
(
currentIndex
.
value
+
1
)
%
props
.
messageList
.
length
},
2
400
)
// 每2.4
秒滚动一条
},
2
000
)
// 每
秒滚动一条
}
// 停止滚动
...
...
@@ -152,10 +152,9 @@ const stopScroll = () => {
}
onMounted
(()
=>
{
startScroll
()
// if (props.messageList.length > 3) {
// startScroll()
// }
if
(
props
.
messageList
.
length
>
3
)
{
startScroll
()
}
})
...
...
@@ -224,13 +223,12 @@ onBeforeUnmount(() => {
}
.msg-bubble-main
{
height
:
395
px
;
height
:
402
px
;
overflow
:
hidden
;
box-sizing
:
border-box
;
padding-bottom
:
8px
;
padding-left
:
21px
;
padding-top
:
23px
;
// background: orange;
.message-bubble
{
display
:
flex
;
...
...
src/styles/components/GraphChart/index.vue
浏览文件 @
7aff6a62
...
...
@@ -11,7 +11,7 @@
`
}}
</pre>
<div
class=
"chart-box"
>
<GraphChart
:nodes=
"nodes"
:links=
"links"
layoutType=
"
non
e"
>
<GraphChart
:nodes=
"nodes"
:links=
"links"
layoutType=
"
forc
e"
>
</GraphChart>
</div>
</el-col>
...
...
src/utils/setChart.js
浏览文件 @
7aff6a62
...
...
@@ -66,7 +66,7 @@ const setChart = (option, chartId, allowClick, selectParam) => {
if
(
params
.
seriesName
===
'通过法案'
)
{
selectParam
.
selectedStatus
=
1
}
else
{
selectParam
.
selectedStatus
=
0
selectParam
.
selectedStatus
=
null
}
const
route
=
router
.
resolve
({
...
...
src/views/bill/background/index.vue
浏览文件 @
7aff6a62
...
...
@@ -125,9 +125,11 @@ import defaultNew from "../assets/images/default-icon-news.png";
import
defaultA
from
"../assets/images/default-icon1.png"
;
import
{
getBillBackground
,
getBillPersonAnalyze
,
getBillInfoEvent
,
getBillPersonAnalyzeDy
}
from
"@/api/bill"
;
import
{
useGotoNewsDetail
}
from
"@/router/modules/news"
;
const
route
=
useRoute
();
const
router
=
useRouter
();
const
gotoNewsDetail
=
useGotoNewsDetail
();
const
handleNewsImgError
=
e
=>
{
e
.
target
.
src
=
defaultNew
;
...
...
@@ -135,13 +137,9 @@ const handleNewsImgError = e => {
// 跳转到相关新闻
const
handleClickEvent
=
item
=>
{
const
routeData
=
router
.
resolve
({
path
:
"/newsAnalysis"
,
query
:
{
newsId
:
item
.
id
}
});
window
.
open
(
routeData
.
href
,
"_blank"
);
const
newsId
=
item
?.
id
||
item
?.
newsId
;
if
(
!
newsId
)
return
;
gotoNewsDetail
(
newsId
);
};
...
...
@@ -281,7 +279,7 @@ const handleGetBillPersonAnalyze = async isOppose => {
const
{
members
,
industryCounts
}
=
res
.
data
;
// 更新人员列表
personList
.
value
=
members
||
[];
personList
.
value
.
forEach
(
(
item
,
index
)
=>
{
personList
.
value
.
forEach
(
item
=>
{
// 优先使用接口返回的图片,没有则使用默认头像 defaultA
item
.
image
=
item
.
imageUrl
||
defaultA
;
item
.
icon
=
userIcon
;
...
...
src/views/bill/billHome/index.vue
浏览文件 @
7aff6a62
...
...
@@ -123,8 +123,9 @@
<DivideHeader
id=
"position2"
class=
"divide2"
:titleText=
"'资讯要闻'"
></DivideHeader>
<div
class=
"center-center"
>
<NewsList
:newsList=
"newsList"
img=
"newsImage"
title=
"newsTitle"
from=
"from"
content=
"newsContent"
/>
<MessageBubble
:messageList=
"messageList"
imageUrl=
"personImage"
@
more-click=
"handleToSocialDetail"
<NewsList
:newsList=
"newsList"
img=
"newsImage"
title=
"newsTitle"
from=
"from"
content=
"newsContent"
@
item-click=
"handleClickNewsDetail"
/>
<MessageBubble
:messageList=
"messageList"
imageUrl=
"personImage"
@
more-click=
"handleToSocialDetail"
@
person-click=
"handleClickToCharacter"
name=
"personName"
content=
"remarks"
source=
"orgName"
/>
</div>
...
...
@@ -273,7 +274,7 @@ import {
import
{
getPersonSummaryInfo
}
from
"@/api/common/index"
;
import
{
getChartAnalysis
}
from
"@/api/aiAnalysis/index"
;
import
DivideHeader
from
"@/components/DivideHeader.vue"
;
import
OverviewMainBox
from
"@/components/base/BoxBackground/O
verviewMainBox.vue"
;
import
overviewMainBox
from
"@/components/base/boxBackground/o
verviewMainBox.vue"
;
import
OverviewCard
from
"./OverviewCard.vue"
;
import
ResourceLibrarySection
from
"./ResourceLibrarySection.vue"
;
import
{
useContainerScroll
}
from
"@/hooks/useScrollShow"
;
...
...
@@ -293,6 +294,7 @@ import iconCommit from "./assets/icons/icon-commit.png";
import
{
ElMessage
}
from
"element-plus"
;
import
{
Calendar
}
from
"@element-plus/icons-vue"
;
import
{
useGotoNewsDetail
}
from
"@/router/modules/news"
;
// 跳转人物主页
const
handleClickToCharacter
=
async
(
id
,
name
)
=>
{
...
...
@@ -500,6 +502,13 @@ const aiPaneLoading = ref({
box9
:
false
});
const
gotoNewsDetail
=
useGotoNewsDetail
();
const
handleClickNewsDetail
=
news
=>
{
const
newsId
=
news
?.
newsId
||
news
?.
id
;
if
(
!
newsId
)
return
;
gotoNewsDetail
(
newsId
);
};
const
buildAiChartPayload
=
key
=>
{
if
(
key
===
"box5"
)
{
const
title
=
Array
.
isArray
(
box5Data
.
value
.
title
)
?
box5Data
.
value
.
title
:
[];
...
...
@@ -860,8 +869,7 @@ const handleBox5 = async () => {
})[
0
]?.
name
const
selectParam
=
{
moduleType
:
'国会法案'
,
domains
:
domain
,
isInvolveCn
:
true
domains
:
domain
}
setChart
(
box5Chart
,
"box5Chart"
,
true
,
selectParam
);
}
...
...
@@ -913,7 +921,6 @@ const handleBox7Data = async () => {
moduleType
:
'国会法案'
,
key
:
'议院委员会'
,
selectedDate
:
box7selectetedTime
.
value
,
isInvolveCn
:
true
}
const
box7Chart
=
getDoublePieChart
(
data1
,
data2
);
...
...
@@ -958,10 +965,10 @@ const handleGetKeyTK = async () => {
.
sort
((
a
,
b
)
=>
(
b
.
count
??
0
)
-
(
a
.
count
??
0
))
.
slice
(
0
,
20
)
.
map
(
item
=>
{
return
{
name
:
item
.
clause
,
value
:
item
.
count
};
return
{
name
:
item
.
clause
,
value
:
item
.
count
};
});
}
}
catch
(
error
)
{
...
...
@@ -1043,7 +1050,7 @@ const handleBox9Data = async () => {
key
:
'领域'
,
selectedDate
:
box9selectetedTime
.
value
,
selectedStatus
:
box9LegislativeStatus
.
value
===
'提出法案'
?
0
:
1
,
isInvolveCn
:
true
isInvolveCn
:
1
}
box9ChartInstance
=
setChart
(
box9Chart
,
"box9Chart"
,
true
,
selectParam
);
}
...
...
@@ -1225,7 +1232,7 @@ const handleBox8Data = async () => {
moduleType
:
'国会法案'
,
key
:
'所处阶段'
,
selectedDate
:
box8selectetedTime
.
value
,
isInvolveCn
:
true
isInvolveCn
:
1
}
await
nextTick
();
...
...
src/views/bill/influence/industry/index.vue
浏览文件 @
7aff6a62
...
...
@@ -285,10 +285,22 @@ const onFormatNode = (item) => {
const
onDecreeRelatedEntitie
=
async
(
id
)
=>
{
try
{
const
res
=
await
getDecreeRelatedEntitie
({
id
}
);
const
res
=
await
getDecreeRelatedEntitie
({
orgId
:
id
,
rule
:
false
,
withSanInfo
:
false
,
}
);
if
(
res
.
code
===
200
)
{
graphInfo
.
links
=
(
res
.
data
||
[]).
map
(
onFormatLink
);
graphInfo
.
nodes
=
(
res
.
data
||
[]).
map
(
onFormatNode
);
const
data
=
res
.
data
||
{
}
;
const
parentList
=
Array
.
isArray
(
data
.
parentOrgList
)
?
data
.
parentOrgList
:
[];
const
childrenList
=
Array
.
isArray
(
data
.
childrenOrgList
)
?
data
.
childrenOrgList
:
[];
const
relationList
=
[...
parentList
,
...
childrenList
].
map
((
item
)
=>
({
...
item
,
relation
:
item
.
description
||
""
,
companyName
:
item
.
companyName
||
item
.
name
||
""
,
}
));
graphInfo
.
links
=
relationList
.
map
(
onFormatLink
);
graphInfo
.
nodes
=
relationList
.
map
(
onFormatNode
);
if
(
entityInfo
.
node
?.
id
)
graphInfo
.
nodes
.
unshift
(
onFormatNode
(
entityInfo
.
node
));
}
}
catch
(
error
)
{
...
...
src/views/dataLibrary/bill/countryBill/index.vue
浏览文件 @
7aff6a62
差异被折叠。
点击展开。
src/views/dataLibrary/components/ChartContainer/index.vue
浏览文件 @
7aff6a62
...
...
@@ -8,7 +8,7 @@
</div>
</div>
<div
class=
"header-center text-title-3-bold"
>
{{
chartTitle
}}
</div>
<div
class=
"header-right"
@
click=
"handleDownload"
>
<div
class=
"header-right"
>
<img
src=
"./assets/icons/download.svg"
alt=
""
>
</div>
</div>
...
...
@@ -17,7 +17,7 @@
<slot
name=
"chart-box"
></slot>
</div>
<div
class=
"tip-box"
>
<TipTab
text=
"数据来源:美国各政府机构官网"
data-time=
""
/>
<TipTab
/>
</div>
</div>
</div>
...
...
@@ -63,7 +63,7 @@ const defaultChartTypeList = [
]
const
emit
=
defineEmits
(
'clickChartItem'
,
'download'
)
const
emit
=
defineEmits
(
'clickChartItem'
)
const
handleClickChartItem
=
(
item
)
=>
{
chartItemList
.
value
.
forEach
(
chart
=>
{
...
...
@@ -104,10 +104,6 @@ const chartItemList = computed(() => {
return
arr
})
const
handleDownload
=
()
=>
{
emit
(
'download'
)
}
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
@@ -180,8 +176,6 @@ const handleDownload = () => {
.tip-box
{
height
:
54px
;
box-sizing
:
border-box
;
padding
:
0
500px
;
padding-top
:
10px
;
// background: orange;
}
...
...
src/views/home/index.vue
浏览文件 @
7aff6a62
...
...
@@ -77,7 +77,7 @@ import { useRoute } from "vue-router";
import
AiBox
from
"@/components/AiBox.vue"
;
import
{
getPersonType
}
from
"@/api/common/index"
;
// import { useDraggable } from "@vueuse/core";
import
ModuleHeader
from
'@/components/base/
M
oduleHeader/index.vue'
import
ModuleHeader
from
'@/components/base/
m
oduleHeader/index.vue'
import
Menu1
from
"@/assets/icons/overview/menu1.png"
;
import
Menu2
from
"@/assets/icons/overview/menu2.png"
;
...
...
src/views/thinkTank/reportOriginal/pdf.vue
浏览文件 @
7aff6a62
...
...
@@ -13,10 +13,10 @@
<
script
>
import
{
ref
,
shallowRef
,
nextTick
,
watch
}
from
'vue'
;
import
*
as
pdfjsLib
from
'pdfjs-dist/legacy/build/pdf'
;
import
pdfWorkerUrl
from
'pdfjs-dist/legacy/build/pdf.worker.min?url
'
;
import
PdfWorker
from
'pdfjs-dist/legacy/build/pdf.worker.min?worker
'
;
//
通过 Vite 的 ?url 产出静态资源地址,确保线上/线下都能正确加载 worker
pdfjsLib
.
GlobalWorkerOptions
.
worker
Src
=
pdfWorkerUrl
;
//
使用 Vite 的 ?worker 直接注入 Worker,避免线上 mjs MIME 类型问题
pdfjsLib
.
GlobalWorkerOptions
.
worker
Port
=
new
PdfWorker
()
;
export
default
{
name
:
'PdfViewer'
,
props
:
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论