Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
1c9f29b9
提交
1c9f29b9
authored
1月 05, 2026
作者:
李智林
浏览文件
操作
浏览文件
下载
差异文件
“update”
上级
2d6a63a9
bea204f6
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
19 个修改的文件
包含
142 行增加
和
42 行删除
+142
-42
index.js
src/api/companyPages/index.js
+9
-0
index.js
src/router/index.js
+1
-1
company.js
src/router/modules/company.js
+3
-3
index.vue
src/views/bill/billHome/index.vue
+4
-8
SanctionsSituation.vue
src/views/companyPages/component/SanctionsSituation.vue
+22
-1
Timeline.vue
src/views/companyPages/component/Timeline.vue
+3
-3
index.vue
src/views/comprehensiveSearch/chat/index.vue
+8
-8
index.vue
src/views/comprehensiveSearch/searchResults/index.vue
+57
-6
index.vue
src/views/decree/decreeLayout/overview/background/index.vue
+6
-2
influencePanel2.vue
...ews/exportControl/analysis/components/influencePanel2.vue
+2
-2
panel1.vue
src/views/exportControl/analysis/components/panel1.vue
+2
-2
panel2.vue
src/views/exportControl/analysis/components/panel2.vue
+2
-2
overview.vue
src/views/exportControl/analysis/content/overview.vue
+2
-2
index.vue
src/views/exportControl/index.vue
+0
-0
index.vue
...omponents/sanctionsOverview/components/listPage/index.vue
+0
-0
index.vue
...v2.0SingleSanction/components/sanctionsOverview/index.vue
+0
-0
index.vue
src/views/thinkTank/ReportDetail/policyTracking/index.vue
+12
-2
index.vue
src/views/thinkTank/index.vue
+0
-0
vite.config.js
vite.config.js
+9
-0
没有找到文件。
src/api/companyPages/index.js
浏览文件 @
1c9f29b9
...
...
@@ -83,3 +83,12 @@ export function getEnterprisPatentField(params) {
}
//被制裁情况:事件
export
function
getSanctionList
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/enterprisePage/getSanctionList/
${
params
}
`
,
})
}
src/router/index.js
浏览文件 @
1c9f29b9
...
...
@@ -22,7 +22,7 @@ const router = createRouter({
// 路由守卫 - 设置页面标题
router
.
beforeEach
((
to
,
from
,
next
)
=>
{
if
(
to
.
meta
.
title
)
{
// document.title = `${to.meta.title} - Think Tank`
document
.
title
=
to
.
meta
.
title
}
next
();
});
...
...
src/router/modules/company.js
浏览文件 @
1c9f29b9
...
...
@@ -4,7 +4,7 @@ import companyPages from "@/views/companyPages/index.vue";
const
companyPagesRoutes
=
[
// 智库系统的主要路由
{
path
:
"/companyPages:id"
,
path
:
"/companyPages
/
:id"
,
name
:
"companyPages"
,
component
:
companyPages
,
meta
:
{
...
...
@@ -14,4 +14,4 @@ const companyPagesRoutes = [
]
export
default
companyPagesRoutes
\ No newline at end of file
export
default
companyPagesRoutes
\ No newline at end of file
src/views/bill/billHome/index.vue
浏览文件 @
1c9f29b9
...
...
@@ -192,17 +192,17 @@
</div>
</div>
<div
class=
"box1-main-right"
>
<img
src=
"./assets/images/box1-main-right-img.png
"
alt=
""
/>
<img
:src=
"bill.news?.newsImage
"
alt=
""
/>
<div
class=
"inner-box"
>
<div
class=
"inner-box-header"
>
<div
class=
"inner-box-title"
>
{{
"大而美法案涉险通过参议院表决,众议院将继续..."
}}
{{
bill
.
news
?.
newsTitle
}}
</div>
<div
class=
"inner-box-time"
>
{{
"1小时前"
}}
</div>
<div
class=
"inner-box-time"
>
{{
bill
.
news
?.
newsTime
.
replace
(
'T'
,
' '
)
}}
</div>
</div>
<div
class=
"inner-box-content"
>
{{
"三名美国共和党众议员(2025年7月21日)致函几家美国科技巨头公司的负责人,询问他们是否已经采取了充分的安全保障措施以有效解..."
bill
.
news
?.
newsContent
}}
</div>
</div>
...
...
@@ -841,11 +841,7 @@ const formatMessageTime = timeStr => {
// 跳转人物主页
const
handleClcikToCharacter
=
async
(
id
)
=>
{
window
.
sessionStorage
.
setItem
(
"memberId"
,
id
);
const
personTypeList
=
JSON
.
parse
(
window
.
sessionStorage
.
getItem
(
"personTypeList"
));
console
.
log
(
"personTypeList"
,
personTypeList
);
let
type
=
0
;
let
personTypeName
=
""
;
...
...
src/views/companyPages/component/SanctionsSituation.vue
浏览文件 @
1c9f29b9
...
...
@@ -30,9 +30,12 @@
</
template
>
<
script
setup
>
import
{
ref
,
compu
ted
}
from
'vue'
;
import
{
ref
,
onMoun
ted
}
from
'vue'
;
import
Timeline
from
'./Timeline.vue'
;
import
process
from
'./process.vue'
;
import
{
useRouter
}
from
"vue-router"
;
import
{
getSanctionList
}
from
"@/api/companyPages/index.js"
;
const
router
=
useRouter
();
const
sanctionTimeData
=
ref
([
{
"title"
:
"初步限制与“实体清单”"
,
...
...
@@ -60,6 +63,24 @@ const sanctionTimeData = ref([
"time"
:
"2025年10月"
}
])
// 获取制裁事件
const
handleGetSanctionList
=
async
()
=>
{
try
{
const
res
=
await
getSanctionList
(
router
.
currentRoute
.
_value
.
params
.
id
);
console
.
log
(
"获取制裁事件"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
sanctionTimeData
.
value
=
res
.
data
}
}
catch
(
error
)
{
console
.
error
(
"获取制裁事件error"
,
error
);
}
};
onMounted
(
async
()
=>
{
handleGetSanctionList
()
});
</
script
>
<
style
scoped
>
...
...
src/views/companyPages/component/Timeline.vue
浏览文件 @
1c9f29b9
...
...
@@ -15,13 +15,13 @@
<div
class=
"node"
:style=
"leftOffset(i)"
>
<!-- 圆环 -->
<div
class=
"dot"
:class=
"linePos(i, flip)"
:style=
"
{
marginTop: linePos(i, flip) === 'down' ? '-5px' : '
3
5px'
marginTop: linePos(i, flip) === 'down' ? '-5px' : '
-
5px'
}">
</div>
<div
class=
"time"
:style=
"
{
marginTop: linePos(i, flip) === 'down' ? '-50px' : '10px'
}" v-if="type === 'normal'">
{{
item
.
tim
e
}}
{{
item
.
sanctionDat
e
}}
</div>
<!-- 卡片:放到线右侧 -->
<div
class=
"card"
:class=
"[cardPos(i, flip), 'right-side']"
@
click=
"$emit('click-card', item)"
:style=
"
{
...
...
@@ -31,7 +31,7 @@
<div
class=
"time"
:style=
"
{
marginLeft: 0
}" v-if="type !== 'normal'">
{{
item
.
tim
e
}}
{{
item
.
sanctionDat
e
}}
</div>
<div
class=
"title"
>
{{
item
.
title
}}
...
...
src/views/comprehensiveSearch/chat/index.vue
浏览文件 @
1c9f29b9
...
...
@@ -67,14 +67,14 @@
class=
"content ai-content"
v-html=
"renderMarkdown(message.content)"
></div>
<div
v-if=
"message.raw_data"
class=
"answer-title"
>
完整实体列表
</div>
<div
v-if=
"message.raw_data"
class=
"content row-content"
>
<div
v-if=
"message.raw_data
?.length
"
class=
"answer-title"
>
完整实体列表
</div>
<div
v-if=
"message.raw_data
?.length
"
class=
"content row-content"
>
<div
class=
"row-header"
>
<div
class=
"row-header-item1"
>
{{
message
.
raw_data
.
columns
.
name_zhs
}}
</div>
<div
class=
"row-header-item"
>
{{
message
.
raw_data
.
columns
.
date
}}
</div>
<div
class=
"row-header-item"
>
{{
message
.
raw_data
.
columns
.
industry
}}
</div>
<div
class=
"row-header-item"
>
{{
message
.
raw_data
.
columns
.
category
}}
</div>
<div
class=
"row-header-item2"
>
{{
message
.
raw_data
.
columns
.
sanction_reason
}}
</div>
<div
class=
"row-header-item1"
>
{{
message
.
raw_data
.
columns
?
.
name_zhs
}}
</div>
<div
class=
"row-header-item"
>
{{
message
.
raw_data
.
columns
?
.
date
}}
</div>
<div
class=
"row-header-item"
>
{{
message
.
raw_data
.
columns
?
.
industry
}}
</div>
<div
class=
"row-header-item"
>
{{
message
.
raw_data
.
columns
?
.
category
}}
</div>
<div
class=
"row-header-item2"
>
{{
message
.
raw_data
.
columns
?
.
sanction_reason
}}
</div>
</div>
<div
class=
"row-main"
>
<div
...
...
@@ -644,7 +644,7 @@ const handleBillChat = async question => {
}
}
if
(
data
.
detail
.
error
)
{
if
(
data
.
detail
&&
data
.
detail
.
error
)
{
console
.
log
(
data
.
detail
.
error
.
message
);
// ElMessage.error(data.detail.error.message);
isCurAnswerMessage
.
value
=
true
;
...
...
src/views/comprehensiveSearch/searchResults/index.vue
浏览文件 @
1c9f29b9
...
...
@@ -121,7 +121,7 @@ import { ref, onMounted } from "vue";
import
router
from
"@/router"
;
import
{
useRoute
}
from
"vue-router"
;
import
{
search
}
from
"@/api/comprehensiveSearch/index"
;
import
{
getPersonSummaryInfo
}
from
"@/api/common/index"
;
import
Img1
from
"./assets/images/img1.png"
;
import
Img2
from
"./assets/images/img2.png"
;
import
Img3
from
"./assets/images/img3.png"
;
...
...
@@ -167,10 +167,10 @@ const tabList = ref([
name
:
"新闻"
,
id
:
8
},
{
name
:
"社媒"
,
id
:
9
}
//
{
//
name: "社媒",
//
id: 9
//
}
]);
const
activeTabId
=
ref
(
0
);
...
...
@@ -304,7 +304,58 @@ const handleSearch = async () => {
}
catch
(
error
)
{}
};
const
handleToPage
=
item
=>
{
const
handleToPage
=
async
(
item
)
=>
{
if
(
item
.
typeStr
===
'人物'
)
{
const
personTypeList
=
JSON
.
parse
(
window
.
sessionStorage
.
getItem
(
"personTypeList"
));
let
type
=
0
;
let
personTypeName
=
""
;
const
params
=
{
personId
:
item
.
id
};
try
{
const
res
=
await
getPersonSummaryInfo
(
params
);
console
.
log
(
"人物全局信息"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
const
arr
=
personTypeList
.
filter
(
item
=>
{
return
item
.
typeId
===
res
.
data
.
personType
;
});
console
.
log
(
"arr"
,
arr
);
if
(
arr
&&
arr
.
length
>
0
)
{
personTypeName
=
arr
[
0
].
typeName
;
console
.
log
(
"personTypeName"
,
personTypeName
);
if
(
personTypeName
===
"科技企业领袖"
)
{
type
=
1
;
}
else
if
(
personTypeName
===
"国会议员"
)
{
type
=
2
;
}
else
if
(
personTypeName
===
"智库研究人员"
)
{
type
=
3
;
}
else
{
personTypeName
=
""
;
ElMessage
.
warning
(
"找不到当前人员的类型值!"
);
return
;
}
const
route
=
router
.
resolve
({
path
:
"/characterPage"
,
query
:
{
type
:
type
,
// type=1为科技企业领袖,2为国会议员,3为智库研究人员
personId
:
id
}
});
window
.
open
(
route
.
href
,
"_blank"
);
}
else
{
personTypeName
=
""
;
ElMessage
.
warning
(
"找不到当前人员的类型值!"
);
return
;
}
}
else
{
ElMessage
.
warning
(
"获取人物全局信息错误"
);
return
;
}
}
catch
(
error
)
{}
}
let
curRoute
;
switch
(
item
.
typeStr
)
{
case
"法案"
:
...
...
src/views/decree/decreeLayout/overview/background/index.vue
浏览文件 @
1c9f29b9
...
...
@@ -246,8 +246,12 @@ const handleMouseMove = event => {
}
;
const
handleToBillDetail
=
item
=>
{
window
.
sessionStorage
.
setItem
(
"billId"
,
item
.
billId
);
const
route
=
router
.
resolve
(
"/billLayout"
);
const
route
=
router
.
resolve
({
path
:
"/billLayout"
,
query
:
{
billId
:
item
.
billId
}
}
);
window
.
open
(
route
.
href
,
"_blank"
);
}
;
...
...
src/views/exportControl/analysis/components/influencePanel2.vue
浏览文件 @
1c9f29b9
...
...
@@ -156,8 +156,8 @@ const horizontalBarOptions = shallowRef({});
const
handleEttClick
=
item
=>
{
const
route
=
router
.
resolve
({
path
:
"/
companyPages"
,
query
:
{
name
:
"
companyPages"
,
params
:
{
id
:
item
.
id
}
}
);
...
...
src/views/exportControl/analysis/components/panel1.vue
浏览文件 @
1c9f29b9
...
...
@@ -342,8 +342,8 @@ const handleDomainChange = async domain => {
const
handleOrgClick
=
item
=>
{
console
.
log
(
item
);
const
route
=
router
.
resolve
({
path
:
"/
companyPages"
,
query
:
{
name
:
"
companyPages"
,
params
:
{
id
:
item
.
id
}
});
...
...
src/views/exportControl/analysis/components/panel2.vue
浏览文件 @
1c9f29b9
...
...
@@ -305,8 +305,8 @@ watch(
const
handleOrgClick
=
item
=>
{
console
.
log
(
item
);
const
route
=
router
.
resolve
({
path
:
"/
companyPages"
,
query
:
{
name
:
"
companyPages"
,
params
:
{
id
:
item
.
id
}
});
...
...
src/views/exportControl/analysis/content/overview.vue
浏览文件 @
1c9f29b9
...
...
@@ -411,8 +411,8 @@ const handleOrgClick = item => {
console
.
log
(
item
);
if
(
item
.
entityType
!=
2
)
return
;
const
route
=
router
.
resolve
({
path
:
"/
companyPages"
,
query
:
{
name
:
"
companyPages"
,
params
:
{
id
:
item
.
id
}
});
...
...
src/views/exportControl/index.vue
浏览文件 @
1c9f29b9
差异被折叠。
点击展开。
src/views/exportControl/v2.0EntityList/components/sanctionsOverview/components/listPage/index.vue
浏览文件 @
1c9f29b9
差异被折叠。
点击展开。
src/views/exportControl/v2.0SingleSanction/components/sanctionsOverview/index.vue
浏览文件 @
1c9f29b9
差异被折叠。
点击展开。
src/views/thinkTank/ReportDetail/policyTracking/index.vue
浏览文件 @
1c9f29b9
...
...
@@ -71,7 +71,7 @@
</div>
</div>
<div
class=
"box2-main"
>
<div
class=
"box2-item"
v-for=
"(item, index) in box2Data"
:key=
"index"
>
<div
class=
"box2-item"
v-for=
"(item, index) in box2Data"
:key=
"index"
@
click=
"handleToNewsAnalysis(item)"
>
<div
class=
"box2-item-left"
>
<div
class=
"point"
>
<img
src=
"@/assets/images/dot.png"
alt=
""
/>
...
...
@@ -314,7 +314,17 @@ const box2Data = ref([
// img: 1
// }
]);
// 点击新闻条目,跳转到新闻分析页
const
handleToNewsAnalysis
=
news
=>
{
console
.
log
(
news
)
const
route
=
router
.
resolve
({
path
:
"/newsAnalysis"
,
query
:
{
newsId
:
news
.
newsId
}
});
window
.
open
(
route
.
href
,
"_blank"
);
};
const
handleGetThinkTankReportPolicyAction
=
async
()
=>
{
try
{
const
res
=
await
getThinkTankReportPolicyAction
(
router
.
currentRoute
.
_value
.
params
.
id
);
...
...
src/views/thinkTank/index.vue
浏览文件 @
1c9f29b9
差异被折叠。
点击展开。
vite.config.js
浏览文件 @
1c9f29b9
...
...
@@ -15,6 +15,15 @@ export default defineConfig({
resolvers
:
[
ElementPlusResolver
()],
}),
],
build
:
{
// minify: 'terser',
terserOptions
:
{
compress
:
{
drop_console
:
true
,
// 移除所有 console.*
drop_debugger
:
true
,
// 移除 debugger
},
},
},
resolve
:
{
alias
:
{
'@'
:
resolve
(
__dirname
,
'src'
),
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论