Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
1d682771
提交
1d682771
authored
12月 09, 2025
作者:
coderBryanFu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update
上级
54bdb33a
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
27 个修改的文件
包含
452 行增加
和
276 行删除
+452
-276
bill.js
src/api/bill.js
+1
-1
billHome.js
src/api/bill/billHome.js
+14
-0
chat.js
src/api/chat.js
+2
-1
request.js
src/api/request.js
+1
-1
InnovationSubject.js
src/router/modules/InnovationSubject.js
+1
-1
overview.js
src/router/modules/overview.js
+3
-3
index.vue
src/views/bill/billHome/index.vue
+91
-75
piechart.js
src/views/bill/billHome/utils/piechart.js
+1
-1
index.vue
src/views/bill/influence/industry/index.vue
+6
-5
STimeline.vue
src/views/bill/introdoction/STimeline.vue
+0
-0
index.vue
src/views/bill/introdoction/index.vue
+27
-35
index.vue
src/views/comprehensiveSearch/chat/index.vue
+203
-83
index.vue
src/views/coopRestriction/components/askPage/index.vue
+0
-1
index.vue
src/views/coopRestriction/components/dataNew/index.vue
+6
-4
WordCloudMap.vue
src/views/decree/decreeHome/WordCloudMap.vue
+5
-2
index.vue
src/views/decree/decreeHome/index.vue
+1
-2
index.vue
src/views/exportControl/index.vue
+0
-6
index.vue
src/views/finance/index.vue
+1
-7
index.vue
src/views/innovationSubject/index.vue
+7
-6
index.vue
...views/marketAccessRestrictions/marketAccessHome/index.vue
+1
-2
Thematicanalysis.vue
src/views/overView/component/Thematicanalysis.vue
+14
-5
Timeline.vue
src/views/overView/component/Timeline.vue
+1
-1
index.vue
src/views/overView/index.vue
+56
-21
index.vue
src/views/ruleRestriction/components/askPage/index.vue
+0
-1
index.vue
src/views/ruleRestriction/components/dataNew/index.vue
+5
-3
index.vue
src/views/scientificFunding/components/askPage/index.vue
+0
-1
index.vue
src/views/thinkTank/index.vue
+5
-8
没有找到文件。
src/api/bill.js
浏览文件 @
1d682771
...
@@ -33,7 +33,7 @@ export function getBillPerson(params) {
...
@@ -33,7 +33,7 @@ export function getBillPerson(params) {
export
function
getBillEvent
(
params
)
{
export
function
getBillEvent
(
params
)
{
return
request
({
return
request
({
method
:
'GET'
,
method
:
'GET'
,
url
:
`/api/billInfoBean/
ev
ent/
${
params
.
id
}
`
,
url
:
`/api/billInfoBean/
actionCont
ent/
${
params
.
id
}
`
,
params
,
params
,
})
})
}
}
...
...
src/api/bill/billHome.js
0 → 100644
浏览文件 @
1d682771
import
request
from
"@/api/request.js"
;
// 涉华法案领域分布
/**
* @param {year}
*/
export
function
getBillIndustry
(
params
)
{
return
request
({
method
:
'GET'
,
url
:
`/api/BillOverview/billIndustry/
${
params
.
year
}
`
,
params
,
})
}
\ No newline at end of file
src/api/chat.js
浏览文件 @
1d682771
...
@@ -12,7 +12,7 @@ export function getChat(params) {
...
@@ -12,7 +12,7 @@ export function getChat(params) {
export
function
getChecklistChat
(
params
)
{
export
function
getChecklistChat
(
params
)
{
return
request
({
return
request
({
method
:
'POST'
,
method
:
'POST'
,
url
:
`/checklistChat/langgraph/checklist/chat
-stream
`
,
url
:
`/checklistChat/langgraph/checklist/chat`
,
data
:
params
,
data
:
params
,
})
})
}
}
\ No newline at end of file
src/api/request.js
浏览文件 @
1d682771
...
@@ -31,7 +31,7 @@ export { getToken, setToken, removeToken }
...
@@ -31,7 +31,7 @@ export { getToken, setToken, removeToken }
// 创建axios实例
// 创建axios实例
const
service
=
axios
.
create
({
const
service
=
axios
.
create
({
// baseURL: BASE_API, //所有的后端接口请求地址前缀部分(没有后端请求不用写)
// baseURL: BASE_API, //所有的后端接口请求地址前缀部分(没有后端请求不用写)
timeout
:
60000
*
5
// 请求超时时间,这里15秒
timeout
:
300
*
1000
// 请求超时时间,这里5分钟
//withCredentials: true,// 异步请求携带cookie,true为携带,false为不携带
//withCredentials: true,// 异步请求携带cookie,true为携带,false为不携带
//请求头里面设置通用传参类型
//请求头里面设置通用传参类型
/*headers: {
/*headers: {
...
...
src/router/modules/InnovationSubject.js
浏览文件 @
1d682771
...
@@ -4,7 +4,7 @@ import InnovationSubject from "@/views/innovationSubject/index.vue";
...
@@ -4,7 +4,7 @@ import InnovationSubject from "@/views/innovationSubject/index.vue";
const
innovationSubjectRoutes
=
[
const
innovationSubjectRoutes
=
[
//创新主体
//创新主体
{
{
path
:
"/
I
nnovationSubject"
,
path
:
"/
i
nnovationSubject"
,
name
:
"InnovationSubject"
,
name
:
"InnovationSubject"
,
component
:
InnovationSubject
,
component
:
InnovationSubject
,
meta
:
{
meta
:
{
...
...
src/router/modules/overview.js
浏览文件 @
1d682771
...
@@ -7,10 +7,10 @@ const overViewRoutes = [
...
@@ -7,10 +7,10 @@ const overViewRoutes = [
// 中美博弈概览页面路由
// 中美博弈概览页面路由
{
{
path
:
"/"
,
path
:
"/"
,
redirect
:
"/over
V
iew"
redirect
:
"/over
v
iew"
},
},
{
{
path
:
"/over
V
iew"
,
path
:
"/over
v
iew"
,
name
:
"overView"
,
name
:
"overView"
,
component
:
overView
,
component
:
overView
,
meta
:
{
meta
:
{
...
@@ -19,7 +19,7 @@ const overViewRoutes = [
...
@@ -19,7 +19,7 @@ const overViewRoutes = [
},
},
// GJ概览页面路由
// GJ概览页面路由
{
{
path
:
"/gjOver
V
iew"
,
path
:
"/gjOver
v
iew"
,
name
:
"gjOverView"
,
name
:
"gjOverView"
,
component
:
gjOverView
,
component
:
gjOverView
,
meta
:
{
meta
:
{
...
...
src/views/bill/billHome/index.vue
浏览文件 @
1d682771
...
@@ -110,7 +110,7 @@
...
@@ -110,7 +110,7 @@
</div>
</div>
<div
class=
"title"
>
{{
"热门法案"
}}
</div>
<div
class=
"title"
>
{{
"热门法案"
}}
</div>
</div>
</div>
<div
class=
"box1-header-right"
>
<div
class=
"box1-header-right"
@
click=
"handleClickToDetail"
>
{{
"查看详情 >"
}}
{{
"查看详情 >"
}}
</div>
</div>
</div>
</div>
...
@@ -257,7 +257,6 @@
...
@@ -257,7 +257,6 @@
<img
src=
"./assets/images/box4-header-icon.png"
alt=
""
/>
<img
src=
"./assets/images/box4-header-icon.png"
alt=
""
/>
</div>
</div>
<div
class=
"header-title"
>
{{
"社交媒体"
}}
</div>
<div
class=
"header-title"
>
{{
"社交媒体"
}}
</div>
<div
class=
"more"
>
{{
"更多 +"
}}
</div>
</div>
</div>
<div
class=
"box4-main"
>
<div
class=
"box4-main"
>
<div
class=
"box4-main-item"
v-for=
"(item, index) in messageList"
:key=
"index"
>
<div
class=
"box4-main-item"
v-for=
"(item, index) in messageList"
:key=
"index"
>
...
@@ -520,6 +519,9 @@
...
@@ -520,6 +519,9 @@
import
{
onMounted
,
ref
,
computed
,
onUnmounted
,
nextTick
}
from
"vue"
;
import
{
onMounted
,
ref
,
computed
,
onUnmounted
,
nextTick
}
from
"vue"
;
import
*
as
echarts
from
"echarts"
;
import
*
as
echarts
from
"echarts"
;
import
router
from
"@/router/index"
;
import
router
from
"@/router/index"
;
import
setChart
from
"@/utils/setChart"
;
import
{
getBillIndustry
}
from
"@/api/bill/billHome"
;
import
{
getHotBills
,
getBillRiskSignal
,
getBillsByType
,
getHylyList
}
from
"@/api/home"
;
import
{
getHotBills
,
getBillRiskSignal
,
getBillsByType
,
getHylyList
}
from
"@/api/home"
;
import
DivideHeader
from
"@/components/DivideHeader.vue"
;
import
DivideHeader
from
"@/components/DivideHeader.vue"
;
...
@@ -624,6 +626,7 @@ const curBill = ref({
...
@@ -624,6 +626,7 @@ const curBill = ref({
// 查看详情
// 查看详情
const
handleClickToDetail
=
()
=>
{
const
handleClickToDetail
=
()
=>
{
// window.sessionStorage.setItem("billId", curBill.value.billId);
// window.sessionStorage.setItem("billId", curBill.value.billId);
window
.
sessionStorage
.
setItem
(
"billId"
,
'119_HR_1'
);
// router.push("/billLayout");
// router.push("/billLayout");
const
route
=
router
.
resolve
(
"/billLayout"
);
const
route
=
router
.
resolve
(
"/billLayout"
);
window
.
open
(
route
.
href
,
"_blank"
);
window
.
open
(
route
.
href
,
"_blank"
);
...
@@ -838,26 +841,6 @@ const box8YearList = ref([
...
@@ -838,26 +841,6 @@ const box8YearList = ref([
}
}
]);
]);
const
box9selectetedTime
=
ref
(
"2025"
);
const
box9YearList
=
ref
([
{
label
:
"2025"
,
value
:
"2025"
}
,
{
label
:
"2024"
,
value
:
"2024"
}
,
{
label
:
"2023"
,
value
:
"2023"
}
,
{
label
:
"2022"
,
value
:
"2022"
}
]);
const
releaseTime
=
ref
(
"近一年发布"
);
// 发布时间
const
releaseTime
=
ref
(
"近一年发布"
);
// 发布时间
const
releaseTimeList
=
ref
([
const
releaseTimeList
=
ref
([
...
@@ -897,27 +880,27 @@ const categoryList = ref([
...
@@ -897,27 +880,27 @@ const categoryList = ref([
// "航空航天",
// "航空航天",
]);
]);
const
curCategoryList
=
ref
([])
const
curCategoryList
=
ref
([])
;
const
curCategoryIndex
=
ref
(
0
)
const
curCategoryIndex
=
ref
(
0
)
;
const
SHOW_COUNT
=
10
const
SHOW_COUNT
=
10
;
function
updateShowList
(
startIndex
)
{
function
updateShowList
(
startIndex
)
{
// 确保索引在有效范围内
// 确保索引在有效范围内
startIndex
=
Math
.
max
(
0
,
Math
.
min
(
startIndex
,
categoryList
.
value
.
length
-
SHOW_COUNT
));
startIndex
=
Math
.
max
(
0
,
Math
.
min
(
startIndex
,
categoryList
.
value
.
length
-
SHOW_COUNT
));
// 截取要显示的元素
// 截取要显示的元素
curCategoryList
.
value
=
categoryList
.
value
.
slice
(
startIndex
,
startIndex
+
SHOW_COUNT
);
curCategoryList
.
value
=
categoryList
.
value
.
slice
(
startIndex
,
startIndex
+
SHOW_COUNT
);
// 如果接近末尾不够10个,从末尾往前取10个
// 如果接近末尾不够10个,从末尾往前取10个
if
(
curCategoryList
.
value
.
length
<
SHOW_COUNT
)
{
if
(
curCategoryList
.
value
.
length
<
SHOW_COUNT
)
{
curCategoryList
.
value
=
categoryList
.
value
.
slice
(
-
SHOW_COUNT
);
curCategoryList
.
value
=
categoryList
.
value
.
slice
(
-
SHOW_COUNT
);
curCategoryIndex
=
categoryList
.
value
.
length
-
SHOW_COUNT
;
curCategoryIndex
=
categoryList
.
value
.
length
-
SHOW_COUNT
;
}
else
{
}
else
{
curCategoryIndex
=
startIndex
;
curCategoryIndex
=
startIndex
;
}
}
renderShowList
();
renderShowList
();
updateButtons
();
updateButtons
();
}
}
const
activeCate
=
ref
(
"全部分类"
);
const
activeCate
=
ref
(
"全部分类"
);
...
@@ -947,15 +930,6 @@ const handleClickCate = cate => {
...
@@ -947,15 +930,6 @@ const handleClickCate = cate => {
handleGetBillsByType
();
handleGetBillsByType
();
}
;
}
;
// 绘制echarts图表
const
setChart
=
(
option
,
chartId
)
=>
{
let
chartDom
=
document
.
getElementById
(
chartId
);
chartDom
.
removeAttribute
(
"_echarts_instance_"
);
let
chart
=
echarts
.
init
(
chartDom
);
chart
.
setOption
(
option
);
return
chart
;
}
;
const
chart1Data
=
ref
({
const
chart1Data
=
ref
({
title
:
[
title
:
[
"2024-09"
,
"2024-09"
,
...
@@ -1103,36 +1077,81 @@ const wordCloudData = ref([
...
@@ -1103,36 +1077,81 @@ const wordCloudData = ref([
{
name
:
"加强供应链风险管理"
,
value
:
73
}
{
name
:
"加强供应链风险管理"
,
value
:
73
}
]);
]);
// 涉华领域分布
const
box9ChartColorList
=
ref
([
"#4096FF"
,
"#FFA39E"
,
"#ADC6FF"
,
"#FFC069"
,
"#B5F5EC"
,
"#B37FEB"
,
"#D6E4FF"
]);
const
box9ChartData
=
ref
([
const
box9ChartData
=
ref
([
//
{
// name: "半导体",
// value: 50
//
}
,
//
{
// name: "电子设备",
// value: 46
//
}
,
//
{
// name: "显示技术",
// value: 40
//
}
,
//
{
// name: "新能源",
// value: 32
//
}
,
//
{
// name: "通信设备",
// value: 31
//
}
,
//
{
// name: "汽车",
// value: 30
//
}
,
//
{
// name: "其他",
// value: 24
//
}
]);
const
box9selectetedTime
=
ref
(
"2025"
);
const
box9YearList
=
ref
([
{
{
name
:
"半导体"
,
label
:
"2025"
,
value
:
50
value
:
"2025"
}
,
{
name
:
"电子设备"
,
value
:
46
}
,
{
name
:
"显示技术"
,
value
:
40
}
,
{
name
:
"新能源"
,
value
:
32
}
,
}
,
{
{
name
:
"通信设备
"
,
label
:
"2024
"
,
value
:
31
value
:
"2024"
}
,
}
,
{
{
name
:
"汽车
"
,
label
:
"2023
"
,
value
:
30
value
:
"2023"
}
,
}
,
{
{
name
:
"其他
"
,
label
:
"2022
"
,
value
:
24
value
:
"2022"
}
}
]);
]);
const
getBox9Data
=
async
()
=>
{
const
params
=
{
year
:
box9selectetedTime
.
value
}
;
try
{
const
res
=
await
getBillIndustry
(
params
);
console
.
log
(
"box9-涉华法案领域分布"
,
res
.
data
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
box9ChartData
.
value
=
res
.
data
;
}
}
catch
(
error
)
{
}
}
;
const
handleBox9Data
=
async
()
=>
{
await
getBox9Data
();
const
box9Chart
=
getPieChart
(
box9ChartData
.
value
.
map
(
item
=>
{
return
{
name
:
item
.
industryName
,
value
:
item
.
countBill
}
;
}
)
);
setChart
(
box9Chart
,
"box9Chart"
);
}
;
const
box7Data
=
ref
([
const
box7Data
=
ref
([
[
[
...
@@ -1252,8 +1271,6 @@ const box8Data = ref([
...
@@ -1252,8 +1271,6 @@ const box8Data = ref([
}
}
]);
]);
const
box9ChartColorList
=
ref
([
"#4096FF"
,
"#FFA39E"
,
"#ADC6FF"
,
"#FFC069"
,
"#B5F5EC"
,
"#B37FEB"
,
"#D6E4FF"
]);
const
handleToPosi
=
id
=>
{
const
handleToPosi
=
id
=>
{
// 0 618 1240 2350
// 0 618 1240 2350
switch
(
id
)
{
switch
(
id
)
{
...
@@ -1286,11 +1303,10 @@ onMounted(async () => {
...
@@ -1286,11 +1303,10 @@ onMounted(async () => {
const
box7Chart
=
getDoublePieChart
(
box7Data
.
value
[
0
],
box7Data
.
value
[
1
]);
const
box7Chart
=
getDoublePieChart
(
box7Data
.
value
[
0
],
box7Data
.
value
[
1
]);
setChart
(
box7Chart
,
"box7Chart"
);
setChart
(
box7Chart
,
"box7Chart"
);
const
box9Chart
=
getPieChart
(
box9ChartData
.
value
,
box9ChartColorList
.
value
);
setChart
(
box9Chart
,
"box9Chart"
);
await
handleGetHotBills
();
await
handleGetHotBills
();
curBill
.
value
=
hotBillList
.
value
[
0
];
curBill
.
value
=
hotBillList
.
value
[
0
];
handleBox9Data
();
}
);
}
);
onUnmounted
(()
=>
{
}
);
onUnmounted
(()
=>
{
}
);
...
...
src/views/bill/billHome/utils/piechart.js
浏览文件 @
1d682771
const
getPieChart
=
(
data
,
colorList
)
=>
{
const
getPieChart
=
(
data
,
colorList
)
=>
{
let
option
=
{
let
option
=
{
color
:
colorList
,
//
color: colorList,
series
:
[
series
:
[
{
{
type
:
'pie'
,
type
:
'pie'
,
...
...
src/views/bill/influence/industry/index.vue
浏览文件 @
1d682771
...
@@ -26,7 +26,7 @@
...
@@ -26,7 +26,7 @@
:key="index"
:key="index"
@click="handleClickBox1Btn(item, index)"
@click="handleClickBox1Btn(item, index)"
>
>
{{
item
.
hylymc
}}
{{
item
.
name
}}
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -343,8 +343,8 @@ const handleGetHylyList = async () => {
...
@@ -343,8 +343,8 @@ const handleGetHylyList = async () => {
try
{
try
{
const
res
=
await
getHylyList
();
const
res
=
await
getHylyList
();
console
.
log
(
"行业领域字典列表"
,
res
);
console
.
log
(
"行业领域字典列表"
,
res
);
industryList
.
value
=
res
.
data
;
industryList
.
value
=
res
.
data
.
slice
(
0
,
6
)
curHylyId
.
value
=
res
.
data
[
0
].
hyly
id
;
curHylyId
.
value
=
res
.
data
[
0
].
id
;
}
catch
(
error
)
{
}
}
catch
(
error
)
{
}
}
;
}
;
...
@@ -353,7 +353,8 @@ const curHylyId = ref("");
...
@@ -353,7 +353,8 @@ const curHylyId = ref("");
// 根据行业领域id获取公司列表
// 根据行业领域id获取公司列表
const
handleGetCompanyListById
=
async
()
=>
{
const
handleGetCompanyListById
=
async
()
=>
{
const
params
=
{
const
params
=
{
id
:
curHylyId
.
value
// id: curHylyId.value
id
:
'0100'
}
;
}
;
try
{
try
{
const
res
=
await
getCompanyList
(
params
);
const
res
=
await
getCompanyList
(
params
);
...
@@ -785,7 +786,7 @@ onMounted(async () => {
...
@@ -785,7 +786,7 @@ onMounted(async () => {
.
left
-
center
-
btn
{
.
left
-
center
-
btn
{
margin
-
right
:
4
px
;
margin
-
right
:
4
px
;
height
:
28
px
;
height
:
28
px
;
width
:
6
0
px
;
width
:
7
0
px
;
text
-
align
:
center
;
text
-
align
:
center
;
padding
:
0
5
px
;
padding
:
0
5
px
;
box
-
sizing
:
border
-
box
;
box
-
sizing
:
border
-
box
;
...
...
src/views/bill/introdoction/STimeline.vue
浏览文件 @
1d682771
差异被折叠。
点击展开。
src/views/bill/introdoction/index.vue
浏览文件 @
1d682771
...
@@ -21,12 +21,12 @@
...
@@ -21,12 +21,12 @@
<div
class=
"box1-right"
>
<div
class=
"box1-right"
>
<div
class=
"box1-right-item"
>
<div
class=
"box1-right-item"
>
<div
class=
"item-left"
>
提案人:
</div>
<div
class=
"item-left"
>
提案人:
</div>
<div
class=
"item-right"
>
乔迪·C·阿灵顿(共和党-得克萨斯州第19选区)
</div>
<div
class=
"item-right"
>
{{
basicInfo
.
tarName
}}
</div>
</div>
</div>
<div
class=
"box1-right-item"
>
<div
class=
"box1-right-item"
>
<div
class=
"item-left"
>
提出时间:
</div>
<div
class=
"item-left"
>
提出时间:
</div>
<div
class=
"item-right"
>
2025年5月20日
</div>
<div
class=
"item-right"
>
{{
basicInfo
.
introductionDate
}}
</div>
</div>
</div>
<div
class=
"box1-right-item"
>
<div
class=
"box1-right-item"
>
<div
class=
"item-left"
>
相关领域:
</div>
<div
class=
"item-left"
>
相关领域:
</div>
...
@@ -38,47 +38,35 @@
...
@@ -38,47 +38,35 @@
</div>
</div>
<div
class=
"box1-right-item"
>
<div
class=
"box1-right-item"
>
<div
class=
"item-left"
>
法案类别:
</div>
<div
class=
"item-left"
>
法案类别:
</div>
<div
class=
"item-right"
>
公法(编号:Pub. L. No. 119-21)
</div>
<div
class=
"item-right"
>
{{
basicInfo
.
typeName
}}
</div>
</div>
</div>
<div
class=
"box1-right-item"
>
<div
class=
"box1-right-item"
>
<div
class=
"item-left"
>
提案人
:
</div>
<div
class=
"item-left"
>
委员会报告
:
</div>
<div
class=
"item-right2"
>
<div
class=
"item-right2"
v-if=
"basicInfo.reportList"
>
<div
class=
"right2-item"
>
H. Rept. 119-106, Book 1
</div>
<div
class=
"right2-item"
v-for=
"item,index in basicInfo.reportList"
:key=
"index"
>
{{
item
}}
</div>
<div
class=
"right2-item"
>
H. Rept. 119-106, Book 2(两份独立报告)
</div>
</div>
</div>
</div>
</div>
<div
class=
"box1-right-item"
>
<div
class=
"box1-right-item"
>
<div
class=
"item-left"
>
表决记录:
</div>
<div
class=
"item-left"
>
表决记录:
</div>
<div
class=
"item-right3"
>
全程共进行 47次唱名表决
</div>
<div
class=
"item-right3"
>
{{
`全程共进行${basicInfo.votetotal
}
次唱名表决`
}}
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"box1-right-item"
>
<
div
class
=
"box1-right-item"
>
<
div
class
=
"item-left"
>
最近状态:
<
/div
>
<
div
class
=
"item-left"
>
最近状态:
<
/div
>
<div
class=
"item-right3"
>
2025年7月4日 由总统签署生效
</div>
<
div
class
=
"item-right3"
>
{{
basicInfo
.
status
}}
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"box1-right-item"
>
<
div
class
=
"box1-right-item"
>
<
div
class
=
"item-left"
>
立案流程:
<
/div
>
<
div
class
=
"item-left"
>
立案流程:
<
/div
>
<
div
class
=
"item-right4"
>
<
div
class
=
"item-right4"
>
<!--
<el-steps
<
div
class
=
"step"
v
-
for
=
"(item, index) in basicInfo.stageList"
:
key
=
"index"
>
style=
"max-width: 500px"
:active=
"6"
finish-status=
"success"
>
<el-step
title=
"提出"
/>
<el-step
title=
"众议院通过"
/>
<el-step
title=
"参议院通过"
/>
<el-step
title=
"分歧协调"
/>
<el-step
title=
"提交总统"
/>
<el-step
title=
"法案通过"
/>
</el-steps>
-->
<div
class=
"step"
v-for=
"(item, index) in stepList"
:key=
"index"
>
<
div
class
=
"step-box"
v
-
if
=
"!item.active"
>
<
div
class
=
"step-box"
v
-
if
=
"!item.active"
>
{{
item
.
title
}}
{{
item
}}
<
div
class
=
"right-arrow"
>
<
div
class
=
"right-arrow"
>
<
img
src
=
"./assets/icons/arrow-right.png"
alt
=
""
/>
<
img
src
=
"./assets/icons/arrow-right.png"
alt
=
""
/>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"step-box-active"
v
-
else
>
<
div
class
=
"step-box-active"
v
-
else
>
{{
item
.
title
}}
{{
item
}}
<
div
class
=
"right-arrow"
>
<
div
class
=
"right-arrow"
>
<
img
src
=
"./assets/icons/arrow-right.png"
alt
=
""
/>
<
img
src
=
"./assets/icons/arrow-right.png"
alt
=
""
/>
<
/div
>
<
/div
>
...
@@ -120,8 +108,8 @@
...
@@ -120,8 +108,8 @@
<
div
class
=
"box2-center-item-box"
v
-
if
=
"box2BtnActive == 1"
>
<
div
class
=
"box2-center-item-box"
v
-
if
=
"box2BtnActive == 1"
>
<
div
class
=
"box2-center-item"
v
-
for
=
"(item, index) in progressList"
:
key
=
"index"
>
<
div
class
=
"box2-center-item"
v
-
for
=
"(item, index) in progressList"
:
key
=
"index"
>
<
div
class
=
"tip"
:
class
=
"{ tipActive: item.fxdj
}
"
><
/div
>
<
div
class
=
"tip"
:
class
=
"{ tipActive: item.fxdj
}
"
><
/div
>
<div
class=
"date"
>
{{
item
.
sjsj
}}
</div>
<
div
class
=
"date"
>
{{
item
.
actionDate
}}
<
/div
>
<div
class=
"title"
>
{{
item
.
sjnr
}}
</div>
<
div
class
=
"title"
>
{{
item
.
actionContentCn
}}
<
/div
>
<
div
class
=
"info"
>
<
div
class
=
"info"
>
<
div
class
=
"info-box danger-box4"
v
-
if
=
"item.fxdj === '特别重大风险'"
>
<
div
class
=
"info-box danger-box4"
v
-
if
=
"item.fxdj === '特别重大风险'"
>
{{
item
.
fxdj
}}
{{
item
.
fxdj
}}
...
@@ -545,6 +533,9 @@ const handleClickMore2 = () => {
...
@@ -545,6 +533,9 @@ const handleClickMore2 = () => {
}
;
}
;
// 获取基本信息
// 获取基本信息
const
basicInfo
=
ref
({
}
)
const
handleGetBasicInfo
=
async
()
=>
{
const
handleGetBasicInfo
=
async
()
=>
{
const
params
=
{
const
params
=
{
id
:
window
.
sessionStorage
.
getItem
(
"billId"
)
id
:
window
.
sessionStorage
.
getItem
(
"billId"
)
...
@@ -552,6 +543,7 @@ const handleGetBasicInfo = async () => {
...
@@ -552,6 +543,7 @@ const handleGetBasicInfo = async () => {
try
{
try
{
const
res
=
await
getBillInfo
(
params
);
const
res
=
await
getBillInfo
(
params
);
console
.
log
(
"基本信息"
,
res
);
console
.
log
(
"基本信息"
,
res
);
basicInfo
.
value
=
res
.
data
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
error
);
console
.
error
(
error
);
}
}
...
@@ -588,15 +580,15 @@ const handleGetBillDyqk = async () => {
...
@@ -588,15 +580,15 @@ const handleGetBillDyqk = async () => {
const
res
=
await
getBillDyqk
(
params
);
const
res
=
await
getBillDyqk
(
params
);
console
.
log
(
"前期进展"
,
res
);
console
.
log
(
"前期进展"
,
res
);
timelineData
.
value
=
res
.
data
;
timelineData
.
value
=
res
.
data
;
faList
.
value
=
res
.
data
.
map
(
item
=>
{
//
faList.value = res.data.map(item =>
{
return
{
//
return
{
label
:
item
.
dyms
,
// label: item.actionTitle
,
value
:
item
.
dyms
,
// value: item.actionTitle
,
id
:
item
.
id
//
id: item.id
};
//
}
;
});
//
}
);
selectValue
.
value
=
faList
.
value
[
0
];
//
selectValue.value = faList.value[0];
handleGetBillPerson
(
faList
.
value
[
0
].
id
);
//
handleGetBillPerson(faList.value[0].id);
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
error
);
console
.
error
(
error
);
}
}
...
...
src/views/comprehensiveSearch/chat/index.vue
浏览文件 @
1d682771
...
@@ -361,7 +361,7 @@ const connectSSE = async question => {
...
@@ -361,7 +361,7 @@ const connectSSE = async question => {
}
else
{
}
else
{
loadingDotIndex
.
value
=
0
;
loadingDotIndex
.
value
=
0
;
}
}
},
500
);
},
500
);
// 创建 AbortController 用于取消请求
// 创建 AbortController 用于取消请求
abortController
.
value
=
new
AbortController
();
abortController
.
value
=
new
AbortController
();
...
@@ -504,93 +504,212 @@ const chat = async question => {
...
@@ -504,93 +504,212 @@ const chat = async question => {
}
else
{
}
else
{
loadingDotIndex
.
value
=
0
;
loadingDotIndex
.
value
=
0
;
}
}
},
500
);
},
500
);
// // 创建 AbortController 用于取消请求
// abortController.value = new AbortController();
// const TIMEOUT_MS = 180 * 1000;
// fetchEventSource("/checklistChat/langgraph/checklist/chat-stream", {
// method: "POST",
// headers: {
// "Content-Type": "application/json"
// },
// body: JSON.stringify(params),
// signal: abortController.value.signal,
// // 设置 3 分钟超时
// // fetch: async (input, init) => {
// // const abortController = new AbortController();
// // const timeoutId = setTimeout(() => {
// // console.log('请求超时(3分钟)');
// // abortController.value.abort();
// // }, TIMEOUT_MS);
// // try {
// // const response = await fetch(input, {
// // ...init,
// // signal: abortController.value.signal,
// // });
// // return response;
// // } finally {
// // clearTimeout(timeoutId);
// // }
// // },
// openWhenHidden: true,
// async onopen(res) {
// isLoading.value = false;
// clearInterval(loadingInterval);
// if(res.detail.error) {
// ElMessage.error(res.detail.error.message)
// }
// console.log("流式回答开始", res);
// },
// async onmessage(res) {
// console.log("res", res);
// if (res.data === "[DONE]") {
// ElMessage.success("生成完成!");
// }
// let msgData = JSON.parse(res.data);
// if (msgData.logs) {
// console.log("docs", msgData.logs);
// const lastMessage = messages.value[messages.value.length - 1];
// if (lastMessage && lastMessage.type === "ai") {
// let newDocs = msgData.logs.map(item => {
// return item.detail + " " + formatDateTime(item.ts);
// });
// lastMessage.source = newDocs;
// scrollToBottom();
// }
// }
// if (msgData.choices && msgData.choices[0].delta.content) {
// isCurAnswerMessage.value = true;
// let content = msgData.choices[0].delta.content;
// if (content === "[DONE]") {
// ElMessage.success("生成完成!");
// } else {
// aiMessage.value += content;
// updateLastAIMessage(aiMessage.value);
// }
// }
// // if (res.event === "end_of_workflow") {
// // ElMessage.success("问答完成!");
// // abortController.value.abort();
// // abortController.value = new AbortController();
// // return;
// // }
// // if (res.event === "start_of_agent" && msgData.agent_name === "answer") {
// // isCurAnswerMessage.value = true;
// // aiMessage.value = "";
// // }
// // if (res.event === "message") {
// // let content = msgData.delta.content;
// // console.log("msgData", msgData);
// // console.log("content", content);
// // if (content !== "[DONE]") {
// // aiMessage.value += content;
// // updateLastAIMessage(aiMessage.value);
// // } else {
// // aiMessage.value = "";
// // abortController.value.abort();
// // abortController.value = new AbortController();
// // }
// // }
// },
// onerror(error) {
// ElMessage({
// message: "问答报错!",
// type: "warning"
// });
// abortController.value.abort();
// abortController.value = new AbortController();
// throw new Error(error);
// }
// }).catch(error => {
// ElMessage({
// message: "问答报错!",
// type: "warning"
// });
// abortController.value.abort();
// abortController.value = new AbortController();
// throw new Error(error);
// });
// try {
// const res = await getChecklistChat(params);
// if (res.detail.error) {
// console.log(res.detail.error.message);
// ElMessage.error(res.detail.error.message);
// }
// if (res.logs) {
// isLoading.value = false;
// const lastMessage = messages.value[messages.value.length - 1];
// if (lastMessage && lastMessage.type === "ai") {
// let newDocs = res.logs.map(item => {
// return item.detail + " " + formatDateTime(item.ts);
// });
// lastMessage.source = newDocs;
// scrollToBottom();
// }
// }
// if (res.choices && res.choices[0].delta.content) {
// isLoading.value = false;
// isCurAnswerMessage.value = true;
// let content = res.choices[0].delta.content;
// if (content === "[DONE]") {
// ElMessage.success("生成完成!");
// } else {
// aiMessage.value += content;
// updateLastAIMessage(aiMessage.value);
// }
// }
// } catch (error) {
// console.log("error", error);
// if (error.detail && error.detail.error) {
// console.log(res.detail.error.message);
// ElMessage.error(res.detail.error.message);
// }
// }
// 创建 AbortController 用于取消请求
try
{
abortController
.
value
=
new
AbortController
();
const
response
=
await
fetch
(
"/checklistChat/langgraph/checklist/chat"
,
{
method
:
"POST"
,
headers
:
{
"Content-Type"
:
"application/json"
},
body
:
JSON
.
stringify
(
params
)
});
fetchEventSource
(
"/checklistChat/langgraph/checklist/chat-stream"
,
{
// console.log("状态码:", response.status); // 200
method
:
"POST"
,
// console.log("ok:", response.ok); // true
headers
:
{
// console.log("headers:", [...response.headers.entries()]);
"Content-Type"
:
"application/json"
},
// 先以文本形式读取,看看实际内容
body
:
JSON
.
stringify
(
params
),
const
rawText
=
await
response
.
text
();
signal
:
abortController
.
value
.
signal
,
// console.log("原始响应文本:", rawText);
openWhenHidden
:
true
,
async
onopen
(
res
)
{
// 尝试解析 JSON
isLoading
.
value
=
false
;
const
data
=
JSON
.
parse
(
rawText
);
// 可能在这里抛出错误
clearInterval
(
loadingInterval
);
console
.
log
(
"解析后的数据:"
,
data
);
console
.
log
(
"流式回答开始"
,
res
);
clearInterval
(
loadingInterval
);
},
isLoading
.
value
=
false
;
async
onmessage
(
res
)
{
console
.
log
(
"data.logs:"
,
data
.
logs
);
console
.
log
(
"res"
,
res
);
console
.
log
(
"data.choices:"
,
data
.
choices
);
if
(
res
.
data
===
"[DONE]"
)
{
ElMessage
.
success
(
"生成完成!"
);
if
(
data
.
logs
)
{
const
lastMessage
=
messages
.
value
[
messages
.
value
.
length
-
1
];
if
(
lastMessage
&&
lastMessage
.
type
===
"ai"
)
{
let
newDocs
=
data
.
logs
.
map
(
item
=>
{
return
item
.
detail
+
" "
+
formatDateTime
(
item
.
ts
);
});
lastMessage
.
source
=
newDocs
;
scrollToBottom
();
}
}
let
msgData
=
JSON
.
parse
(
res
.
data
);
}
if
(
msgData
.
logs
)
{
console
.
log
(
"docs"
,
msgData
.
logs
);
if
(
data
.
choices
&&
data
.
choices
[
0
].
message
.
content
)
{
const
lastMessage
=
messages
.
value
[
messages
.
value
.
length
-
1
];
isCurAnswerMessage
.
value
=
true
;
if
(
lastMessage
&&
lastMessage
.
type
===
"ai"
)
{
let
content
=
data
.
choices
[
0
].
message
.
content
;
let
newDocs
=
msgData
.
logs
.
map
(
item
=>
{
if
(
content
===
"[DONE]"
)
{
return
item
.
detail
+
" "
+
formatDateTime
(
item
.
ts
);
ElMessage
.
success
(
"生成完成!"
);
});
}
else
{
lastMessage
.
source
=
newDocs
;
aiMessage
.
value
+=
content
;
scrollToBottom
();
updateLastAIMessage
(
aiMessage
.
value
);
}
}
if
(
msgData
.
choices
&&
msgData
.
choices
[
0
].
delta
.
content
)
{
isCurAnswerMessage
.
value
=
true
;
let
content
=
msgData
.
choices
[
0
].
delta
.
content
;
if
(
content
===
"[DONE]"
)
{
ElMessage
.
success
(
"生成完成!"
);
}
else
{
aiMessage
.
value
+=
content
;
updateLastAIMessage
(
aiMessage
.
value
);
}
}
}
// if (res.event === "end_of_workflow") {
// ElMessage.success("问答完成!");
// abortController.value.abort();
// abortController.value = new AbortController();
// return;
// }
// if (res.event === "start_of_agent" && msgData.agent_name === "answer") {
// isCurAnswerMessage.value = true;
// aiMessage.value = "";
// }
// if (res.event === "message") {
// let content = msgData.delta.content;
// console.log("msgData", msgData);
// console.log("content", content);
// if (content !== "[DONE]") {
// aiMessage.value += content;
// updateLastAIMessage(aiMessage.value);
// } else {
// aiMessage.value = "";
// abortController.value.abort();
// abortController.value = new AbortController();
// }
// }
},
onerror
(
error
)
{
ElMessage
({
message
:
"问答报错!"
,
type
:
"warning"
});
abortController
.
value
.
abort
();
abortController
.
value
=
new
AbortController
();
throw
new
Error
(
error
);
}
}
}).
catch
(
error
=>
{
ElMessage
({
if
(
data
.
detail
.
error
)
{
message
:
"问答报错!"
,
console
.
log
(
data
.
detail
.
error
.
message
);
type
:
"warning"
// ElMessage.error(data.detail.error.message);
});
isCurAnswerMessage
.
value
=
true
;
abortController
.
value
.
abort
();
let
content
=
"我们换个新话题吧!"
;
abortController
.
value
=
new
AbortController
();
aiMessage
.
value
+=
content
;
throw
new
Error
(
error
);
updateLastAIMessage
(
aiMessage
.
value
);
});
}
}
catch
(
error
)
{
console
.
error
(
"catch 中的错误:"
,
error
);
}
};
};
// 发送消息
// 发送消息
...
@@ -607,6 +726,7 @@ const sendMessage = async () => {
...
@@ -607,6 +726,7 @@ const sendMessage = async () => {
}
}
userInput
.
value
=
""
;
userInput
.
value
=
""
;
aiMessage
.
value
=
""
if
(
curArea
.
value
===
"法案"
)
{
if
(
curArea
.
value
===
"法案"
)
{
await
connectSSE
(
question
);
await
connectSSE
(
question
);
}
else
{
}
else
{
...
...
src/views/coopRestriction/components/askPage/index.vue
浏览文件 @
1d682771
...
@@ -21,7 +21,6 @@
...
@@ -21,7 +21,6 @@
<div
class=
"right-title"
>
<div
class=
"right-title"
>
<img
src=
"./assets/icon02.png"
alt=
""
>
<img
src=
"./assets/icon02.png"
alt=
""
>
<div
class=
"tit"
>
社交媒体
</div>
<div
class=
"tit"
>
社交媒体
</div>
<div
class=
"more"
>
更多 +
</div>
</div>
</div>
<div
class=
"right-main"
>
<div
class=
"right-main"
>
<div
class=
"trump"
>
<div
class=
"trump"
>
...
...
src/views/coopRestriction/components/dataNew/index.vue
浏览文件 @
1d682771
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
<div
class=
"left-top"
>
<div
class=
"left-top"
>
<img
src=
"./assets/icon01.png"
alt=
""
/>
<img
src=
"./assets/icon01.png"
alt=
""
/>
<div
class=
"left-top-title"
>
合作限制动态
</div>
<div
class=
"left-top-title"
>
合作限制动态
</div>
<
span>
查看详情 >
</span
>
<
div
class=
"more"
@
click=
"handleClickToDetail"
>
查看详情 >
</div
>
</div>
</div>
<div
class=
"left-center"
>
<div
class=
"left-center"
>
<img
src=
"./assets/usImg.png"
alt=
""
/>
<img
src=
"./assets/usImg.png"
alt=
""
/>
...
@@ -167,12 +167,14 @@ const handleToMoreRiskSignal = () => {
...
@@ -167,12 +167,14 @@ const handleToMoreRiskSignal = () => {
top
:
15px
;
top
:
15px
;
left
:
23px
;
left
:
23px
;
}
}
span
{
.more
{
position
:
absolute
;
height
:
48px
;
line-height
:
48px
;
font-size
:
16px
;
font-size
:
16px
;
font-weight
:
400
;
font-weight
:
400
;
font-family
:
"Microsoft YaHei"
;
font-family
:
"Microsoft YaHei"
;
position
:
absolute
;
top
:
0
;
top
:
19px
;
right
:
40px
;
right
:
40px
;
color
:
rgb
(
5
,
95
,
194
);
color
:
rgb
(
5
,
95
,
194
);
cursor
:
pointer
;
cursor
:
pointer
;
...
...
src/views/decree/decreeHome/WordCloudMap.vue
浏览文件 @
1d682771
...
@@ -45,14 +45,17 @@ const initChart = () => {
...
@@ -45,14 +45,17 @@ const initChart = () => {
{
{
type
:
"wordCloud"
,
type
:
"wordCloud"
,
shape
:
props
.
shape
,
shape
:
props
.
shape
,
width
:
'100%'
,
height
:
'100%'
,
// 其他形状你可以使用形状路径
// 其他形状你可以使用形状路径
// shape: 'circle', // 示例
// shape: 'circle', // 示例
// 或者自定义路径
// 或者自定义路径
gridSize
:
2
0
,
// 网格大小,影响词间距。
gridSize
:
3
0
,
// 网格大小,影响词间距。
sizeRange
:
[
15
,
25
],
// 定义词云中文字大小的范围
sizeRange
:
[
15
,
40
],
// 定义词云中文字大小的范围
rotationRange
:
[
0
,
0
],
rotationRange
:
[
0
,
0
],
rotationStep
:
0
,
rotationStep
:
0
,
drawOutOfBound
:
false
,
// 是否超出画布
drawOutOfBound
:
false
,
// 是否超出画布
shrinkToFit
:
true
,
// 是否自动缩小以适应容器
// 字体
// 字体
textStyle
:
{
textStyle
:
{
// normal: {
// normal: {
...
...
src/views/decree/decreeHome/index.vue
浏览文件 @
1d682771
...
@@ -117,7 +117,7 @@
...
@@ -117,7 +117,7 @@
</div>
</div>
<div
class=
"title"
>
{{
"最新科技政令"
}}
</div>
<div
class=
"title"
>
{{
"最新科技政令"
}}
</div>
</div>
</div>
<div
class=
"box1-header-right"
>
<div
class=
"box1-header-right"
@
click=
"handleClickToDetail"
>
{{
"查看详情 >"
}}
{{
"查看详情 >"
}}
</div>
</div>
</div>
</div>
...
@@ -239,7 +239,6 @@
...
@@ -239,7 +239,6 @@
<img
src=
"./assets/images/box4-header-icon.png"
alt=
""
/>
<img
src=
"./assets/images/box4-header-icon.png"
alt=
""
/>
</div>
</div>
<div
class=
"header-title"
>
{{
"社交媒体"
}}
</div>
<div
class=
"header-title"
>
{{
"社交媒体"
}}
</div>
<div
class=
"more"
>
{{
"更多 +"
}}
</div>
</div>
</div>
<div
class=
"box4-main"
>
<div
class=
"box4-main"
>
<div
class=
"box4-main-item"
v-for=
"(item, index) in messageList"
:key=
"index"
>
<div
class=
"box4-main-item"
v-for=
"(item, index) in messageList"
:key=
"index"
>
...
...
src/views/exportControl/index.vue
浏览文件 @
1d682771
...
@@ -220,12 +220,6 @@
...
@@ -220,12 +220,6 @@
</el-col>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<custom-container
title=
"社交媒体"
:titleIcon=
"dialogIcon"
height=
"450px"
>
<custom-container
title=
"社交媒体"
:titleIcon=
"dialogIcon"
height=
"450px"
>
<
template
#
header-right
>
<el-button
type=
"primary"
link
>
{{
"更多 +"
}}
</el-button>
</
template
>
<
template
#
default
>
<
template
#
default
>
<div
class=
"dialog-list"
>
<div
class=
"dialog-list"
>
<!--
<MessageBubble
<!--
<MessageBubble
...
...
src/views/finance/index.vue
浏览文件 @
1d682771
...
@@ -60,7 +60,7 @@
...
@@ -60,7 +60,7 @@
<el-col
:span=
"16"
>
<el-col
:span=
"16"
>
<custom-container
titleType=
"primary"
title=
"最新出口管制政策"
:titleIcon=
"houseIcon"
height=
"450px"
>
<custom-container
titleType=
"primary"
title=
"最新出口管制政策"
:titleIcon=
"houseIcon"
height=
"450px"
>
<template
#
header-right
>
<template
#
header-right
>
<el-button
type=
"primary"
link
>
<el-button
type=
"primary"
link
@
click=
"handleToDetail"
>
{{
"查看详情 >"
}}
{{
"查看详情 >"
}}
</el-button>
</el-button>
</
template
>
</
template
>
...
@@ -171,12 +171,6 @@
...
@@ -171,12 +171,6 @@
</el-col>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<custom-container
title=
"社交媒体"
:titleIcon=
"dialogIcon"
height=
"450px"
>
<custom-container
title=
"社交媒体"
:titleIcon=
"dialogIcon"
height=
"450px"
>
<
template
#
header-right
>
<el-button
type=
"primary"
link
>
{{
"更多 +"
}}
</el-button>
</
template
>
<
template
#
default
>
<
template
#
default
>
<div
class=
"dialog-list"
>
<div
class=
"dialog-list"
>
<!--
<MessageBubble
<!--
<MessageBubble
...
...
src/views/innovationSubject/index.vue
浏览文件 @
1d682771
...
@@ -70,19 +70,19 @@
...
@@ -70,19 +70,19 @@
</div>
</div>
</div>
</div>
<div
class=
"home-main-header-btn-box"
v-show=
"!isShow"
>
<div
class=
"home-main-header-btn-box"
v-show=
"!isShow"
>
<div
class=
"btn"
@
click=
"
handleToPosi
('position1')"
>
<div
class=
"btn"
@
click=
"
scrollToTop
('position1')"
>
<div
class=
"btn-text"
>
{{
"最新动态"
}}
</div>
<div
class=
"btn-text"
>
{{
"最新动态"
}}
</div>
<div
class=
"btn-icon"
>
{{
">"
}}
</div>
<div
class=
"btn-icon"
>
{{
">"
}}
</div>
</div>
</div>
<div
class=
"btn"
@
click=
"
handleToPosi
('position2')"
>
<div
class=
"btn"
@
click=
"
scrollToTop
('position2')"
>
<div
class=
"btn-text"
>
{{
"资讯要闻"
}}
</div>
<div
class=
"btn-text"
>
{{
"资讯要闻"
}}
</div>
<div
class=
"btn-icon"
>
{{
">"
}}
</div>
<div
class=
"btn-icon"
>
{{
">"
}}
</div>
</div>
</div>
<div
class=
"btn"
@
click=
"
handleToPosi
('position3')"
>
<div
class=
"btn"
@
click=
"
scrollToTop
('position3')"
>
<div
class=
"btn-text"
>
{{
"数据总览"
}}
</div>
<div
class=
"btn-text"
>
{{
"数据总览"
}}
</div>
<div
class=
"btn-icon"
>
{{
">"
}}
</div>
<div
class=
"btn-icon"
>
{{
">"
}}
</div>
</div>
</div>
<div
class=
"btn"
@
click=
"
handleToPosi
('position4')"
>
<div
class=
"btn"
@
click=
"
scrollToTop
('position4')"
>
<div
class=
"btn-text"
>
{{
"资源库"
}}
</div>
<div
class=
"btn-text"
>
{{
"资源库"
}}
</div>
<div
class=
"btn-icon"
>
{{
">"
}}
</div>
<div
class=
"btn-icon"
>
{{
">"
}}
</div>
</div>
</div>
...
@@ -204,7 +204,6 @@
...
@@ -204,7 +204,6 @@
<img
src=
"./assets/images/box4-header-icon.png"
alt=
""
/>
<img
src=
"./assets/images/box4-header-icon.png"
alt=
""
/>
</div>
</div>
<div
class=
"header-title"
>
{{
"社交媒体"
}}
</div>
<div
class=
"header-title"
>
{{
"社交媒体"
}}
</div>
<div
class=
"more"
>
{{
"更多 +"
}}
</div>
</div>
</div>
<div
class=
"box4-main"
>
<div
class=
"box4-main"
>
<div
class=
"box4-main-item"
v-for=
"(item, index) in messageList"
:key=
"index"
>
<div
class=
"box4-main-item"
v-for=
"(item, index) in messageList"
:key=
"index"
>
...
@@ -377,7 +376,8 @@
...
@@ -377,7 +376,8 @@
<div
class=
"item-text2"
>
{{ item.area }}
</div>
<div
class=
"item-text2"
>
{{ item.area }}
</div>
<div
class=
"taglist"
>
<div
class=
"taglist"
>
<div
class=
"tag1"
style=
"width: 82px;"
<div
class=
"tag1"
style=
"width: 82px;"
v-for=
"val in item.tag"
v-for=
"val,idx in item.tag"
:key=
"idx"
:class=
"{tag2: val === '新能源',
:class=
"{tag2: val === '新能源',
tag3: val === '集成电路',
tag3: val === '集成电路',
tag4: val === '生物科技',
tag4: val === '生物科技',
...
@@ -410,6 +410,7 @@ import { onMounted, ref, computed } from "vue";
...
@@ -410,6 +410,7 @@ import { onMounted, ref, computed } from "vue";
import
*
as
echarts
from
"echarts"
;
import
*
as
echarts
from
"echarts"
;
import
router
from
"@/router"
;
import
router
from
"@/router"
;
import
DivideHeader
from
"@/components/DivideHeader.vue"
;
import
DivideHeader
from
"@/components/DivideHeader.vue"
;
import
scrollToTop
from
"@/utils/scrollToTop"
;
import
{
useContainerScroll
}
from
"@/hooks/useScrollShow"
;
import
{
useContainerScroll
}
from
"@/hooks/useScrollShow"
;
import
getBarChart
from
"./utils/barChart"
;
import
getBarChart
from
"./utils/barChart"
;
import
getPieChart
from
"./utils/piechart"
;
import
getPieChart
from
"./utils/piechart"
;
...
...
src/views/marketAccessRestrictions/marketAccessHome/index.vue
浏览文件 @
1d682771
...
@@ -116,7 +116,7 @@
...
@@ -116,7 +116,7 @@
</div>
</div>
<div
class=
"title"
>
{{
"调查进展"
}}
</div>
<div
class=
"title"
>
{{
"调查进展"
}}
</div>
</div>
</div>
<div
class=
"box1-header-right"
>
<div
class=
"box1-header-right"
@
click=
"handleClickToDetail('337')"
>
{{
"查看详情 >"
}}
{{
"查看详情 >"
}}
</div>
</div>
</div>
</div>
...
@@ -253,7 +253,6 @@
...
@@ -253,7 +253,6 @@
<img
src=
"./assets/images/header-message.png"
alt=
""
/>
<img
src=
"./assets/images/header-message.png"
alt=
""
/>
</div>
</div>
<div
class=
"header-title"
>
{{
"社交媒体"
}}
</div>
<div
class=
"header-title"
>
{{
"社交媒体"
}}
</div>
<div
class=
"more"
>
{{
"更多 +"
}}
</div>
</div>
</div>
<div
class=
"box4-main"
>
<div
class=
"box4-main"
>
<div
class=
"box4-main-item"
v-for=
"(item, index) in messageList"
:key=
"index"
>
<div
class=
"box4-main-item"
v-for=
"(item, index) in messageList"
:key=
"index"
>
...
...
src/views/overView/component/Thematicanalysis.vue
浏览文件 @
1d682771
...
@@ -271,7 +271,7 @@ const totalDistribution = ref([
...
@@ -271,7 +271,7 @@ const totalDistribution = ref([
},
},
{
{
titlle
:
"投融资限制"
,
titlle
:
"投融资限制"
,
value
:
80
,
value
:
66
,
text
:
"119"
,
text
:
"119"
,
unit
:
"次"
,
unit
:
"次"
,
change
:
"较上月+1"
,
change
:
"较上月+1"
,
...
@@ -314,6 +314,15 @@ const totalDistribution = ref([
...
@@ -314,6 +314,15 @@ const totalDistribution = ref([
path
:
"/scientificFunding"
,
path
:
"/scientificFunding"
,
color
:
[
"#FDE19A"
,
"#FEECBD"
,
"#FFFBE6"
,
"#D68E16"
]
color
:
[
"#FDE19A"
,
"#FEECBD"
,
"#FFFBE6"
,
"#D68E16"
]
},
},
{
titlle
:
"创新主体"
,
value
:
89
,
text
:
"89"
,
unit
:
"次"
,
change
:
"较上月+8"
,
path
:
"/innovationSubject"
,
color
:
[
"#C9AAF0"
,
"#DFCAF6"
,
"#FAF1FF"
,
"#531DAC"
]
}
]);
]);
const
startIndex
=
ref
(
0
);
const
startIndex
=
ref
(
0
);
...
@@ -497,11 +506,11 @@ const handleClickItem = item => {
...
@@ -497,11 +506,11 @@ const handleClickItem = item => {
};
};
const
swiper
=
ref
(
null
);
const
swiper
=
ref
(
null
);
const
isOnSwiper
=
ref
(
true
)
const
isOnSwiper
=
ref
(
true
)
;
const
handleChangeSwiper
=
(
val
)
=>
{
const
handleChangeSwiper
=
val
=>
{
isOnSwiper
.
value
=
val
isOnSwiper
.
value
=
val
;
}
}
;
onMounted
(()
=>
{
onMounted
(()
=>
{
swiper
.
value
=
setInterval
(()
=>
{
swiper
.
value
=
setInterval
(()
=>
{
...
...
src/views/overView/component/Timeline.vue
浏览文件 @
1d682771
...
@@ -193,7 +193,7 @@ export default {
...
@@ -193,7 +193,7 @@ export default {
.card
{
.card
{
position
:
absolute
;
position
:
absolute
;
height
:
180px
;
height
:
180px
;
width
:
15vw
;
width
:
320px
;
padding
:
8px
12px
;
padding
:
8px
12px
;
text-align
:
left
;
text-align
:
left
;
cursor
:
pointer
;
cursor
:
pointer
;
...
...
src/views/overView/index.vue
浏览文件 @
1d682771
...
@@ -37,17 +37,27 @@
...
@@ -37,17 +37,27 @@
}}
}}
</div>
</div>
</div>
</div>
<img
class=
"item-card-content-title-image"
:src=
"organizationNews[organizationNewsShow].image"
<img
alt=
""
/>
class=
"item-card-content-title-image"
:src=
"organizationNews[organizationNewsShow].image"
alt=
""
/>
</div>
</div>
<div
class=
"item-header-divider"
></div>
<div
class=
"item-header-divider"
></div>
<div
class=
"item-card-content-text"
>
<div
class=
"item-card-content-text"
>
{{
organizationNews
[
organizationNewsShow
].
content
}}
{{
organizationNews
[
organizationNewsShow
].
content
}}
</div>
</div>
<div
style=
"display: flex;margin-top: 30px;"
>
<div
style=
"display: flex; margin-top: 30px"
>
<div
class=
"item-card-content-tag"
v-for=
"(tag, index) in organizationNews[organizationNewsShow].tag"
<div
class=
"item-card-content-tag"
v-for=
"(tag, index) in organizationNews[organizationNewsShow].tag"
:key=
"index"
:key=
"index"
:style=
"
{ color: tag.textColor, background: tag.color, border: `1px solid ${tag.textColor}` }">
:style=
"
{
color: tag.textColor,
background: tag.color,
border: `1px solid ${tag.textColor}`
}"
>
{{
tag
.
text
}}
{{
tag
.
text
}}
</div>
</div>
</div>
</div>
...
@@ -80,18 +90,22 @@
...
@@ -80,18 +90,22 @@
<div
class=
"item left"
>
<div
class=
"item left"
>
<div
class=
"item-header"
>
<div
class=
"item-header"
>
<img
class=
"item-header-icon"
src=
"@/assets/images/icon/waring-card-header-icon.png"
/>
<img
class=
"item-header-icon"
src=
"@/assets/images/icon/waring-card-header-icon.png"
/>
<div
class=
"item-header-text"
style=
"background-color: #ce4f51"
>
风险信号
<div
class=
"num"
>
{{
warningList
.
length
<div
class=
"item-header-text"
style=
"background-color: #ce4f51"
>
}}
</div>
风险信号
<div
class=
"num"
>
{{
warningList
.
length
}}
</div>
</div>
</div>
</div>
</div>
<div
class=
"item-header-divider"
></div>
<div
class=
"item-header-divider"
></div>
<div
style=
"padding: 30px 23px; height: 400px"
>
<div
style=
"padding: 30px 23px; height: 400px"
>
<div
class=
"waring-item"
v-for=
"(item, index) in warningList"
:key=
"index"
>
<div
class=
"waring-item"
v-for=
"(item, index) in warningList"
:key=
"index"
>
<div
style=
"display: flex; height: 47px"
>
<div
style=
"display: flex; height: 47px"
>
<div
class=
"waring-status"
:style=
"
{
<div
color: item.status === 0 ? '#CE4F51' : item.status === 1 ? '#FA8C16' : '#52C41A',
class=
"waring-status"
backgroundColor: item.status === 0 ? '#FFF1F0' : item.status === 1 ? '#FFF7E6' : '#F6FFED'
:style=
"
{
}">
color: item.status === 0 ? '#CE4F51' : item.status === 1 ? '#FA8C16' : '#52C41A',
backgroundColor: item.status === 0 ? '#FFF1F0' : item.status === 1 ? '#FFF7E6' : '#F6FFED'
}"
>
{{
item
.
status
===
0
?
"特别重大"
:
item
.
status
===
1
?
"重大风险"
:
"一般风险"
}}
{{
item
.
status
===
0
?
"特别重大"
:
item
.
status
===
1
?
"重大风险"
:
"一般风险"
}}
</div>
</div>
<div
class=
"waring-text"
>
<div
class=
"waring-text"
>
...
@@ -113,8 +127,15 @@
...
@@ -113,8 +127,15 @@
<div
class=
"item right"
>
<div
class=
"item right"
>
<div
class=
"item-header"
>
<div
class=
"item-header"
>
<img
class=
"item-header-icon"
src=
"@/assets/images/icon/news-card-header-icon.png"
/>
<img
class=
"item-header-icon"
src=
"@/assets/images/icon/news-card-header-icon.png"
/>
<div
class=
"item-header-text"
style=
"background: rgba(255, 255, 255, 0.65); color: #055fc2"
>
新闻资讯
</div>
<div
<div
class=
"item-header-more"
style=
"color: #055fc2; cursor: pointer;"
@
click=
"handleToMoreNews"
>
更多 +
</div>
class=
"item-header-text-1"
style=
"color: #055fc2"
>
新闻资讯
</div>
<div
class=
"item-header-more"
style=
"color: #055fc2; cursor: pointer"
@
click=
"handleToMoreNews"
>
更多 +
</div>
</div>
</div>
<div
class=
"item-header-divider"
></div>
<div
class=
"item-header-divider"
></div>
<div
class=
"news-box"
>
<div
class=
"news-box"
>
...
@@ -137,8 +158,12 @@
...
@@ -137,8 +158,12 @@
<div
class=
"item right"
>
<div
class=
"item right"
>
<div
class=
"item-header"
>
<div
class=
"item-header"
>
<img
class=
"item-header-icon"
src=
"@/assets/images/icon/people-card-header-icon.png"
/>
<img
class=
"item-header-icon"
src=
"@/assets/images/icon/people-card-header-icon.png"
/>
<div
class=
"item-header-text"
style=
"background: rgba(255, 255, 255, 0.65); color: #055fc2"
>
人物动态
</div>
<div
<div
class=
"item-header-more"
style=
"color: #055fc2"
>
更多 +
</div>
class=
"item-header-text-1"
style=
"color: #055fc2"
>
人物动态
</div>
</div>
</div>
<div
class=
"item-header-divider"
></div>
<div
class=
"item-header-divider"
></div>
<div
class=
"character-box"
>
<div
class=
"character-box"
>
...
@@ -188,7 +213,6 @@ const handleToMoreNews = () => {
...
@@ -188,7 +213,6 @@ const handleToMoreNews = () => {
window
.
open
(
route
.
href
,
"_blank"
);
window
.
open
(
route
.
href
,
"_blank"
);
};
};
const
organizationNews
=
ref
([
const
organizationNews
=
ref
([
{
{
title
:
"美国白宫发布关于进一步延长TikTok执法宽限期的行政令"
,
title
:
"美国白宫发布关于进一步延长TikTok执法宽限期的行政令"
,
...
@@ -221,13 +245,13 @@ const organizationNews = ref([
...
@@ -221,13 +245,13 @@ const organizationNews = ref([
{
{
color
:
"#F5222D"
,
color
:
"#F5222D"
,
textColor
:
"#FFF1F0"
,
textColor
:
"#FFF1F0"
,
borderColor
:
'rgba(255, 163, 158, 1)'
,
borderColor
:
"rgba(255, 163, 158, 1)"
,
text
:
"人工智能"
text
:
"人工智能"
},
},
{
{
color
:
"#E6F4FF"
,
color
:
"#E6F4FF"
,
textColor
:
"#1677FF"
,
textColor
:
"#1677FF"
,
borderColor
:
'rgba(145, 202, 255, 1)'
,
borderColor
:
"rgba(145, 202, 255, 1)"
,
text
:
"通信网络"
text
:
"通信网络"
}
}
]
]
...
@@ -388,7 +412,7 @@ function changeOrganizationNews(type) {
...
@@ -388,7 +412,7 @@ function changeOrganizationNews(type) {
:
(
organizationNewsShow
.
value
=
organizationNewsShow
.
value
+
1
);
:
(
organizationNewsShow
.
value
=
organizationNewsShow
.
value
+
1
);
}
}
}
}
onMounted
(()
=>
{
});
onMounted
(()
=>
{});
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
@@ -470,6 +494,7 @@ onMounted(() => { });
...
@@ -470,6 +494,7 @@ onMounted(() => { });
height
:
48px
;
height
:
48px
;
width
:
100%
;
width
:
100%
;
display
:
flex
;
display
:
flex
;
position
:
relative
;
.item-header-icon
{
.item-header-icon
{
width
:
20px
;
width
:
20px
;
...
@@ -508,6 +533,15 @@ onMounted(() => { });
...
@@ -508,6 +533,15 @@ onMounted(() => { });
font-size
:
14px
;
font-size
:
14px
;
}
}
}
}
.item-header-text-1
{
// width: 150px;
height
:
48px
;
line-height
:
48px
;
text-align
:
left
;
font-weight
:
700
;
font-size
:
20px
;
font-family
:
Microsoft
YaHei
;
}
.item-header-num
{
.item-header-num
{
width
:
30px
;
width
:
30px
;
...
@@ -535,9 +569,10 @@ onMounted(() => { });
...
@@ -535,9 +569,10 @@ onMounted(() => { });
font-size
:
16px
;
font-size
:
16px
;
line-height
:
48px
;
line-height
:
48px
;
text-align
:
center
;
text-align
:
center
;
margin-left
:
calc
(
100%
-
200px
);
width
:
50px
;
width
:
50px
;
margin-left
:
calc
(
100%
-
250px
);
position
:
absolute
;
top
:
0
;
right
:
27px
;
}
}
}
}
...
...
src/views/ruleRestriction/components/askPage/index.vue
浏览文件 @
1d682771
...
@@ -21,7 +21,6 @@
...
@@ -21,7 +21,6 @@
<div
class=
"right-title"
>
<div
class=
"right-title"
>
<img
src=
"./assets/icon02.png"
alt=
""
>
<img
src=
"./assets/icon02.png"
alt=
""
>
<div
class=
"tit"
>
社交媒体
</div>
<div
class=
"tit"
>
社交媒体
</div>
<div
class=
"more"
>
更多 +
</div>
</div>
</div>
<div
class=
"right-main"
>
<div
class=
"right-main"
>
<div
class=
"trump"
>
<div
class=
"trump"
>
...
...
src/views/ruleRestriction/components/dataNew/index.vue
浏览文件 @
1d682771
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
<div
class=
"left-top"
>
<div
class=
"left-top"
>
<img
src=
"./assets/icon01.png"
alt=
""
/>
<img
src=
"./assets/icon01.png"
alt=
""
/>
<div
class=
"left-top-title"
>
规则限制动态
</div>
<div
class=
"left-top-title"
>
规则限制动态
</div>
<
span>
查看详情 >
</span
>
<
div
class=
"more"
@
click=
"handleClickToDetail"
>
查看详情 >
</div
>
</div>
</div>
<div
class=
"left-center"
>
<div
class=
"left-center"
>
<img
src=
"./assets/usImg.png"
alt=
""
/>
<img
src=
"./assets/usImg.png"
alt=
""
/>
...
@@ -166,12 +166,14 @@ const handleToMoreRiskSignal = () => {
...
@@ -166,12 +166,14 @@ const handleToMoreRiskSignal = () => {
top
:
15px
;
top
:
15px
;
left
:
23px
;
left
:
23px
;
}
}
span
{
.more
{
height
:
48px
;
line-height
:
48px
;
font-size
:
16px
;
font-size
:
16px
;
font-weight
:
400
;
font-weight
:
400
;
font-family
:
"Microsoft YaHei"
;
font-family
:
"Microsoft YaHei"
;
position
:
absolute
;
position
:
absolute
;
top
:
19px
;
top
:
0
;
right
:
40px
;
right
:
40px
;
color
:
rgb
(
5
,
95
,
194
);
color
:
rgb
(
5
,
95
,
194
);
cursor
:
pointer
;
cursor
:
pointer
;
...
...
src/views/scientificFunding/components/askPage/index.vue
浏览文件 @
1d682771
...
@@ -21,7 +21,6 @@
...
@@ -21,7 +21,6 @@
<div
class=
"right-title"
>
<div
class=
"right-title"
>
<img
src=
"./assets/icon02.png"
alt=
""
>
<img
src=
"./assets/icon02.png"
alt=
""
>
<div
class=
"tit"
>
社交媒体
</div>
<div
class=
"tit"
>
社交媒体
</div>
<div
class=
"more"
>
更多 +
</div>
</div>
</div>
<div
class=
"right-main"
>
<div
class=
"right-main"
>
<div
class=
"trump"
>
<div
class=
"trump"
>
...
...
src/views/thinkTank/index.vue
浏览文件 @
1d682771
...
@@ -156,8 +156,7 @@
...
@@ -156,8 +156,7 @@
<div
class=
"header-icon"
>
<div
class=
"header-icon"
>
<img
src=
"@/views/bill/billHome/assets/images/box4-header-icon.png"
alt=
""
/>
<img
src=
"@/views/bill/billHome/assets/images/box4-header-icon.png"
alt=
""
/>
</div>
</div>
<div
class=
"header-title"
>
{{ "智库人物动态" }}
</div>
<div
class=
"header-title"
>
{{ "社交媒体" }}
</div>
<div
class=
"more"
>
{{ "更多 +" }}
</div>
</div>
</div>
<div
class=
"box4-main"
>
<div
class=
"box4-main"
>
<div
class=
"box4-main-item"
v-for=
"(item, index) in messageList"
:key=
"index"
>
<div
class=
"box4-main-item"
v-for=
"(item, index) in messageList"
:key=
"index"
>
...
@@ -605,14 +604,13 @@ onMounted(() => {
...
@@ -605,14 +604,13 @@ onMounted(() => {
}
}
}
}
.box3-header-title
{
.box3-header-title
{
margin-top
:
16px
;
margin-left
:
19px
;
margin-left
:
19px
;
height
:
22
px
;
height
:
48
px
;
color
:
rgba
(
20
,
89
,
187
,
1
);
color
:
rgba
(
20
,
89
,
187
,
1
);
font-family
:
Microsoft
YaHei
;
font-family
:
Microsoft
YaHei
;
font-size
:
20px
;
font-size
:
20px
;
font-weight
:
700
;
font-weight
:
700
;
line-height
:
22
px
;
line-height
:
48
px
;
}
}
.more
{
.more
{
width
:
49px
;
width
:
49px
;
...
@@ -721,14 +719,13 @@ onMounted(() => {
...
@@ -721,14 +719,13 @@ onMounted(() => {
}
}
}
}
.header-title
{
.header-title
{
margin-top
:
16
px
;
height
:
48
px
;
margin-left
:
18px
;
margin-left
:
18px
;
height
:
22px
;
color
:
var
(
--
color-main-active
);
color
:
var
(
--
color-main-active
);
font-family
:
Microsoft
YaHei
;
font-family
:
Microsoft
YaHei
;
font-size
:
20px
;
font-size
:
20px
;
font-weight
:
700
;
font-weight
:
700
;
line-height
:
22
px
;
line-height
:
48
px
;
}
}
.more
{
.more
{
width
:
49px
;
width
:
49px
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论