Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
cb0736e1
提交
cb0736e1
authored
3月 27, 2026
作者:
朱政
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'pre' into zz-dev
上级
dcc1e867
bb991b9d
流水线
#113
已取消 于阶段
in 12 分 52 秒
变更
8
流水线
1
显示空白字符变更
内嵌
并排
正在显示
8 个修改的文件
包含
156 行增加
和
113 行删除
+156
-113
g2.mdc
.cursor/rules/g2.mdc
+2
-0
.gitlab-ci.yml
.gitlab-ci.yml
+67
-9
home.js
src/api/decree/home.js
+2
-11
influence.js
src/api/decree/influence.js
+4
-3
index.vue
src/views/bill/deepDig/processAnalysis/index.vue
+51
-64
index.vue
src/views/decree/allOrganization/index.vue
+5
-5
index.vue
src/views/decree/decreeHome/index.vue
+7
-7
index.vue
src/views/decree/decreeLayout/influence/index.vue
+18
-14
没有找到文件。
.cursor/rules/g2.mdc
浏览文件 @
cb0736e1
---
---
description:
alwaysApply: true
alwaysApply: true
---
---
# Overview
# Overview
Insert overview text here. The agent will only see this should they choose to apply the rule.
Insert overview text here. The agent will only see this should they choose to apply the rule.
...
...
.gitlab-ci.yml
浏览文件 @
cb0736e1
...
@@ -2,10 +2,13 @@ stages:
...
@@ -2,10 +2,13 @@ stages:
-
build
-
build
-
deploy
-
deploy
# cache:
cache
:
# key: "$CI_COMMIT_REF_SLUG"
# cache:key 这里使用字符串,兼容性更好(部分 linter 不支持 key: { files: [...] })
# paths:
# 预分支 pre 需要快速构建并实时同步,因此让 .npm 下载缓存跨分支复用
# - .npm/
key
:
"
npm-cache-global"
paths
:
-
.npm/
policy
:
pull-push
build_pre
:
build_pre
:
stage
:
build
stage
:
build
...
@@ -17,8 +20,13 @@ build_pre:
...
@@ -17,8 +20,13 @@ build_pre:
script
:
script
:
-
node -v
-
node -v
-
npm -v
-
npm -v
-
npm config set cache .npm --global
-
echo "cache dir sizes:"
-
npm ci --prefer-offline --no-audit --no-fund
-
du -sh "$CI_PROJECT_DIR/.npm" "$CI_PROJECT_DIR/.npm/_cacache" 2>/dev/null ||
true
-
echo "=== npm ci start ==="
-
date -Iseconds
-
npm ci --cache "$CI_PROJECT_DIR/.npm" --no-audit --no-fund --loglevel=verbose --timing --foreground-scripts
-
echo "=== npm ci end ==="
-
date -Iseconds
-
npm run build
-
npm run build
artifacts
:
artifacts
:
paths
:
paths
:
...
@@ -35,5 +43,55 @@ deploy_pre:
...
@@ -35,5 +43,55 @@ deploy_pre:
dependencies
:
dependencies
:
-
build_pre
-
build_pre
script
:
script
:
-
apk add --no-cache rsync
-
apk add --no-cache rsync curl jq
-
rsync -av --delete dist/ /nas/kjb_service/zm/pre-project/html/
# 只允许“最新一次 pre pipeline”部署到 nginx(加二次确认,避免短时间多次推送导致重复 rsync)
\ No newline at end of file
-
>
LATEST_PIPELINE_ID="$(
curl --silent --show-error --fail
--header "JOB-TOKEN: $CI_JOB_TOKEN"
"$CI_SERVER_URL/api/v4/projects/$CI_PROJECT_ID/pipelines?ref=pre&order_by=id&sort=desc&per_page=1"
| jq -r '.[0].id'
)"
-
>
if [ -z "$LATEST_PIPELINE_ID" ] || [ "$LATEST_PIPELINE_ID" != "$CI_PIPELINE_ID" ]; then
echo "skip deploy: not latest pipeline (latest=$LATEST_PIPELINE_ID current=$CI_PIPELINE_ID)";
exit 0;
fi
-
sleep 20
-
>
LATEST_PIPELINE_ID="$(
curl --silent --show-error --fail
--header "JOB-TOKEN: $CI_JOB_TOKEN"
"$CI_SERVER_URL/api/v4/projects/$CI_PROJECT_ID/pipelines?ref=pre&order_by=id&sort=desc&per_page=1"
| jq -r '.[0].id'
)"
-
>
if [ -z "$LATEST_PIPELINE_ID" ] || [ "$LATEST_PIPELINE_ID" != "$CI_PIPELINE_ID" ]; then
echo "skip deploy: not latest pipeline after debounce (latest=$LATEST_PIPELINE_ID current=$CI_PIPELINE_ID)";
exit 0;
fi
-
rsync -avz --delete dist/ /nas/kjb_service/zm/pre-project/html/
# 非 protected 分支:push 时先做 build 校验(避免合并 pre 时出现 build 报错)
build_check
:
stage
:
build
image
:
node:20-bullseye
tags
:
-
risk-monitor-frontend
# 只在 push 时做构建校验,且排除 protected 分支与目标分支 pre
only
:
-
pushes
except
:
-
pre
-
protected_branches
script
:
-
node -v
-
npm -v
-
echo "cache dir sizes:"
-
du -sh "$CI_PROJECT_DIR/.npm" "$CI_PROJECT_DIR/.npm/_cacache" 2>/dev/null ||
true
-
echo "=== npm ci start ==="
-
date -Iseconds
-
npm ci --cache "$CI_PROJECT_DIR/.npm" --no-audit --no-fund --loglevel=verbose --timing --foreground-scripts
-
echo "=== npm ci end ==="
-
date -Iseconds
-
npm run build
\ No newline at end of file
src/api/decree/home.js
浏览文件 @
cb0736e1
...
@@ -3,9 +3,9 @@ import request from "@/api/request.js";
...
@@ -3,9 +3,9 @@ import request from "@/api/request.js";
// 最新科技政令
// 最新科技政令
export
function
getDepartmentList
(
params
)
{
export
function
getDepartmentList
(
params
)
{
return
request
({
return
request
({
method
:
'
GE
T'
,
method
:
'
POS
T'
,
url
:
`/api/administrativeDict/department`
,
url
:
`/api/administrativeDict/department`
,
params
data
:
params
})
})
}
}
...
@@ -99,15 +99,6 @@ export function getKeyOrganization(params) {
...
@@ -99,15 +99,6 @@ export function getKeyOrganization(params) {
})
})
}
}
// 所有机构
export
function
getAllOrganization
(
params
)
{
return
request
({
method
:
'POST'
,
url
:
`/api/administrativeOrderOverview/orderCount`
,
data
:
params
})
}
// AI智能总结
// AI智能总结
export
function
getChartInterpretation
(
params
)
{
export
function
getChartInterpretation
(
params
)
{
return
request
({
return
request
({
...
...
src/api/decree/influence.js
浏览文件 @
cb0736e1
...
@@ -33,7 +33,7 @@ export function getDecreeEntities(params) {
...
@@ -33,7 +33,7 @@ export function getDecreeEntities(params) {
export
function
getDecreeRelatedChain
(
params
)
{
export
function
getDecreeRelatedChain
(
params
)
{
return
request
({
return
request
({
method
:
'GET'
,
method
:
'GET'
,
url
:
`/api/
administrativeOrderInfo
/relatedChain/
${
params
.
id
}
`
,
url
:
`/api/
chain
/relatedChain/
${
params
.
id
}
`
,
})
})
}
}
...
@@ -41,7 +41,7 @@ export function getDecreeRelatedChain(params) {
...
@@ -41,7 +41,7 @@ export function getDecreeRelatedChain(params) {
export
function
getDecreeChainNodes
(
params
)
{
export
function
getDecreeChainNodes
(
params
)
{
return
request
({
return
request
({
method
:
'GET'
,
method
:
'GET'
,
url
:
`/api/
administrativeOrderInfo
/relatedChainNodes/
${
params
.
id
}
`
,
url
:
`/api/
chain
/relatedChainNodes/
${
params
.
id
}
`
,
})
})
}
}
...
@@ -49,7 +49,8 @@ export function getDecreeChainNodes(params) {
...
@@ -49,7 +49,8 @@ export function getDecreeChainNodes(params) {
export
function
getDecreeRelatedEntitie
(
params
)
{
export
function
getDecreeRelatedEntitie
(
params
)
{
return
request
({
return
request
({
method
:
'GET'
,
method
:
'GET'
,
url
:
`/api/administrativeOrderInfo/listRelatedEntitie/
${
params
.
id
}
`
,
url
:
`/api/organization/shareholding`
,
params
})
})
}
}
...
...
src/views/bill/deepDig/processAnalysis/index.vue
浏览文件 @
cb0736e1
...
@@ -384,7 +384,6 @@
...
@@ -384,7 +384,6 @@
<
/div
>
<
/div
>
<
/div> --
>
<
/div> --
>
<
AnalysisBox
title
=
"投票分析"
>
<
AnalysisBox
title
=
"投票分析"
>
<
div
class
=
"analysis-ai-wrapper analysis-ai-wrapper--box3"
>
<
div
class
=
"vote-legend"
>
<
div
class
=
"vote-legend"
>
<
div
class
=
"vote-legend-item"
>
<
div
class
=
"vote-legend-item"
>
<
span
class
=
"vote-legend-dot agree"
><
/span
>
<
span
class
=
"vote-legend-dot agree"
><
/span
>
...
@@ -395,6 +394,7 @@
...
@@ -395,6 +394,7 @@
<
span
>
反对票
<
/span
>
<
span
>
反对票
<
/span
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"analysis-ai-wrapper analysis-ai-wrapper--box3"
>
<
div
class
=
"box3-main"
:
class
=
"{ 'box3-main--full': !voteFooterText
}
"
>
<
div
class
=
"box3-main"
:
class
=
"{ 'box3-main--full': !voteFooterText
}
"
>
<
div
class
=
"box3-main-center"
>
<
div
class
=
"box3-main-center"
>
<
div
class
=
"box3-main-center-header"
>
<
div
class
=
"box3-main-center-header"
>
...
@@ -405,14 +405,15 @@
...
@@ -405,14 +405,15 @@
<
div
class
=
"box3-main-center-header-box5"
>
<
div
class
=
"box3-main-center-header-box5"
>
倒戈人数
<
span
style
=
"font-weight: normal; display: inline-block"
>
(
平均区间
)
<
/span
>
倒戈人数
<
span
style
=
"font-weight: normal; display: inline-block"
>
(
平均区间
)
<
/span
>
<
/div
>
<
/div
>
<
div
class
=
"box3-main-center-header-box6"
>
关键议员
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"box3-main-center-content"
>
<
div
class
=
"box3-main-center-content"
>
<
div
class
=
"box3-main-center-content-box"
v
-
for
=
"item in voteAnalysisList"
:
key
=
"item.actionId"
>
<
div
class
=
"box3-main-center-content-box"
v
-
for
=
"item in voteAnalysisList"
:
key
=
"item.actionId"
>
<
div
class
=
"item"
>
<
div
class
=
"item"
>
<
div
class
=
"item-box1"
>
<
div
class
=
"item-box1"
>
<
div
class
=
"box1-left"
>
<
div
class
=
"box1-left"
>
<
div
style
=
"width: 100%; display: flex; flex-direction: column; align-items: flex-end"
>
<
div
style
=
"width: 100%; display: flex; flex-direction: column; align-items: flex-end"
>
<
div
class
=
"name nameBlod"
:
title
=
"item.actionTitle"
style
=
"
<
div
class
=
"name nameBlod"
:
title
=
"item.actionTitle"
style
=
"
white-space: nowrap;
white-space: nowrap;
overflow: hidden;
overflow: hidden;
...
@@ -428,33 +429,34 @@
...
@@ -428,33 +429,34 @@
<
/div
>
<
/div
>
<
div
class
=
"box1-right"
>
<
div
class
=
"box1-right"
>
<
div
class
=
"box1-right-top"
>
<
div
class
=
"box1-right-top"
>
<
el
-
progress
:
percentage
=
"Number(item.agreePercent)"
:
show
-
text
=
"false"
color
=
"rgb(33, 129, 57)"
>
<
el
-
progress
:
percentage
=
"Number(item.agreePercent)"
:
show
-
text
=
"false"
color
=
"rgb(33, 129, 57)"
>
<
/el-progress
>
<
/el-progress
>
<
/div
>
<
/div
>
<
div
class
=
"box1-right-bottom"
>
<
div
class
=
"box1-right-bottom"
>
<
el
-
progress
:
percentage
=
"Number(item.againstPercent)"
:
show
-
text
=
"false"
color
=
"rgb(206, 79, 81)"
>
<
el
-
progress
:
percentage
=
"Number(item.againstPercent)"
:
show
-
text
=
"false"
color
=
"rgb(206, 79, 81)"
>
<
/el-progress
>
<
/el-progress
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"item-box2"
>
<
div
class
=
"item-box2"
>
<
div
class
=
"box2-1"
style
=
"color: rgb(33, 129, 57)"
>
{{
item
.
agreeCount
+
"票"
}}
<
/div
>
<
div
class
=
"box2-1"
style
=
"color: rgb(33, 129, 57)"
>
{{
item
.
agreeCount
+
<
div
class
=
"box2-2"
style
=
"color: rgb(206, 79, 81)"
>
{{
item
.
againstCount
+
"票"
}}
<
/div
>
"票"
}}
<
/div
>
<
div
class
=
"box2-2"
style
=
"color: rgb(206, 79, 81)"
>
{{
item
.
againstCount
+
"票"
}}
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"item-box3"
>
<
div
class
=
"item-box3"
>
<
div
class
=
"box3-1"
><
/div
>
<
div
class
=
"box3-1"
><
/div
>
<
div
class
=
"box3-2"
><
/div
>
<
div
class
=
"box3-2"
><
/div
>
<
/div
>
<
/div
>
<
div
class
=
"item-box4"
>
<
div
class
=
"item-box4"
>
<
div
class
=
"box4-1"
style
=
"color: rgb(33, 129, 57)"
>
{{
item
.
agreePercent
+
"%"
}}
<
/div
>
<
div
class
=
"box4-1"
style
=
"color: rgb(33, 129, 57)"
>
{{
item
.
agreePercent
<
div
class
=
"box4-2"
style
=
"color: rgb(206, 79, 81)"
>
{{
item
.
againstPercent
+
"%"
}}
<
/div
>
+
"%"
}}
<
/div
>
<
div
class
=
"box4-2"
style
=
"color: rgb(206, 79, 81)"
>
{{
item
.
againstPercent
+
"%"
}}
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"item-box5"
><
/div
>
<
div
class
=
"item-box5"
><
/div
>
<
div
class
=
"item-box6"
>
<
el
-
icon
size
=
"20"
color
=
"#555"
>
<
ArrowDownBold
/>
<
/el-icon
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"item"
>
<
div
class
=
"item"
>
<
div
class
=
"item-box1"
>
<
div
class
=
"item-box1"
>
...
@@ -466,31 +468,33 @@
...
@@ -466,31 +468,33 @@
<
/div
>
<
/div
>
<
div
class
=
"box1-right"
>
<
div
class
=
"box1-right"
>
<
div
class
=
"box1-right-top"
>
<
div
class
=
"box1-right-top"
>
<
el
-
progress
:
percentage
=
"Number(item.dagreePercent)"
:
show
-
text
=
"false"
color
=
"rgb(33, 129, 57)"
>
<
el
-
progress
:
percentage
=
"Number(item.dagreePercent)"
:
show
-
text
=
"false"
color
=
"rgb(33, 129, 57)"
>
<
/el-progress
>
<
/el-progress
>
<
/div
>
<
/div
>
<
div
class
=
"box1-right-bottom"
>
<
div
class
=
"box1-right-bottom"
>
<
el
-
progress
:
percentage
=
"Number(item.dagainstPercent)"
:
show
-
text
=
"false"
color
=
"rgb(206, 79, 81)"
>
<
el
-
progress
:
percentage
=
"Number(item.dagainstPercent)"
:
show
-
text
=
"false"
color
=
"rgb(206, 79, 81)"
>
<
/el-progress
>
<
/el-progress
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"item-box2"
>
<
div
class
=
"item-box2"
>
<
div
class
=
"box2-1"
style
=
"color: rgb(33, 129, 57)"
>
{{
item
.
dagreeCount
+
"票"
}}
<
/div
>
<
div
class
=
"box2-1"
style
=
"color: rgb(33, 129, 57)"
>
{{
item
.
dagreeCount
<
div
class
=
"box2-2"
style
=
"color: rgb(206, 79, 81)"
>
{{
item
.
dagainstCount
+
"票"
}}
<
/div
>
+
"票"
}}
<
/div
>
<
div
class
=
"box2-2"
style
=
"color: rgb(206, 79, 81)"
>
{{
item
.
dagainstCount
+
"票"
}}
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"item-box3"
><
/div
>
<
div
class
=
"item-box3"
><
/div
>
<
div
class
=
"item-box4"
>
<
div
class
=
"item-box4"
>
<
div
class
=
"box4-1"
style
=
"color: rgb(33, 129, 57)"
>
{{
item
.
dagreePercent
+
"%"
}}
<
/div
>
<
div
class
=
"box4-1"
style
=
"color: rgb(33, 129, 57)"
>
{{
<
div
class
=
"box4-2"
style
=
"color: rgb(206, 79, 81)"
>
{{
item
.
dagainstPercent
+
"%"
}}
<
/div
>
item
.
dagreePercent
+
"%"
}}
<
/div
>
<
div
class
=
"box4-2"
style
=
"color: rgb(206, 79, 81)"
>
{{
item
.
dagainstPercent
+
"%"
}}
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"item-box5"
>
<
div
class
=
"item-box5"
>
<
div
class
=
"box5-1"
style
=
"color: #ce4f51"
>
{{
item
.
dreverseCount
+
"人"
}}
<
/div
>
<
div
class
=
"box5-1"
style
=
"color: #ce4f51"
>
{{
item
.
dreverseCount
+
"人"
<
/div
>
}}
<
/div
>
<
div
class
=
"item-box6"
>
<
div
class
=
"img-box"
v
-
if
=
"item.dpersonImageUrl"
>
<
img
:
src
=
"item.dpersonImageUrl"
alt
=
""
/>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"item"
>
<
div
class
=
"item"
>
...
@@ -503,31 +507,33 @@
...
@@ -503,31 +507,33 @@
<
/div
>
<
/div
>
<
div
class
=
"box1-right"
>
<
div
class
=
"box1-right"
>
<
div
class
=
"box1-right-top"
>
<
div
class
=
"box1-right-top"
>
<
el
-
progress
:
percentage
=
"Number(item.ragreePercent)"
:
show
-
text
=
"false"
color
=
"rgb(33, 129, 57)"
>
<
el
-
progress
:
percentage
=
"Number(item.ragreePercent)"
:
show
-
text
=
"false"
color
=
"rgb(33, 129, 57)"
>
<
/el-progress
>
<
/el-progress
>
<
/div
>
<
/div
>
<
div
class
=
"box1-right-bottom"
>
<
div
class
=
"box1-right-bottom"
>
<
el
-
progress
:
percentage
=
"Number(item.ragainstPercent)"
:
show
-
text
=
"false"
color
=
"rgb(206, 79, 81)"
>
<
el
-
progress
:
percentage
=
"Number(item.ragainstPercent)"
:
show
-
text
=
"false"
color
=
"rgb(206, 79, 81)"
>
<
/el-progress
>
<
/el-progress
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"item-box2"
>
<
div
class
=
"item-box2"
>
<
div
class
=
"box2-1"
style
=
"color: rgb(33, 129, 57)"
>
{{
item
.
ragreeCount
+
"票"
}}
<
/div
>
<
div
class
=
"box2-1"
style
=
"color: rgb(33, 129, 57)"
>
{{
item
.
ragreeCount
<
div
class
=
"box2-2"
style
=
"color: rgb(206, 79, 81)"
>
{{
item
.
ragainstCount
+
"票"
}}
<
/div
>
+
"票"
}}
<
/div
>
<
div
class
=
"box2-2"
style
=
"color: rgb(206, 79, 81)"
>
{{
item
.
ragainstCount
+
"票"
}}
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"item-box3"
><
/div
>
<
div
class
=
"item-box3"
><
/div
>
<
div
class
=
"item-box4"
>
<
div
class
=
"item-box4"
>
<
div
class
=
"box4-1"
style
=
"color: rgb(33, 129, 57)"
>
{{
item
.
ragreePercent
+
"%"
}}
<
/div
>
<
div
class
=
"box4-1"
style
=
"color: rgb(33, 129, 57)"
>
{{
<
div
class
=
"box4-2"
style
=
"color: rgb(206, 79, 81)"
>
{{
item
.
ragainstPercent
+
"%"
}}
<
/div
>
item
.
ragreePercent
+
"%"
}}
<
/div
>
<
div
class
=
"box4-2"
style
=
"color: rgb(206, 79, 81)"
>
{{
item
.
ragainstPercent
+
"%"
}}
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"item-box5"
>
<
div
class
=
"item-box5"
>
<
div
class
=
"box5-1"
style
=
"color: #ce4f51"
>
{{
item
.
rreverseCount
+
"人"
}}
<
/div
>
<
div
class
=
"box5-1"
style
=
"color: #ce4f51"
>
{{
item
.
rreverseCount
+
"人"
<
/div
>
}}
<
/div
>
<
div
class
=
"item-box6"
>
<
div
class
=
"img-box"
v
-
if
=
"item.rpersonImageUrl"
>
<
img
:
src
=
"item.rpersonImageUrl"
alt
=
""
/>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
@@ -701,7 +707,8 @@
...
@@ -701,7 +707,8 @@
<
TipTab
class
=
"analysis-ai-tip"
/>
<
TipTab
class
=
"analysis-ai-tip"
/>
<
AiButton
class
=
"analysis-ai-tip-action"
@
mouseenter
=
"handleShowAiPane('box3')"
/>
<
AiButton
class
=
"analysis-ai-tip-action"
@
mouseenter
=
"handleShowAiPane('box3')"
/>
<
/div
>
<
/div
>
<
div
v
-
if
=
"aiPaneVisible.box3"
class
=
"analysis-ai-pane"
@
mouseleave
=
"handleHideAiPane('box3')"
>
<
div
v
-
if
=
"aiPaneVisible.box3"
class
=
"analysis-ai-pane"
@
mouseleave
=
"handleHideAiPane('box3')"
>
<
AiPane
:
aiContent
=
"overviewAiContent.box3"
/>
<
AiPane
:
aiContent
=
"overviewAiContent.box3"
/>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
@@ -1248,6 +1255,7 @@ onMounted(async () => {
...
@@ -1248,6 +1255,7 @@ onMounted(async () => {
.
box1
{
.
box1
{
width
:
792
px
;
width
:
792
px
;
height
:
415
px
;
height
:
415
px
;
.
box1
-
main
{
.
box1
-
main
{
height
:
368
px
;
height
:
368
px
;
...
@@ -1393,6 +1401,7 @@ onMounted(async () => {
...
@@ -1393,6 +1401,7 @@ onMounted(async () => {
margin
-
top
:
17
px
;
margin
-
top
:
17
px
;
width
:
792
px
;
width
:
792
px
;
height
:
415
px
;
height
:
415
px
;
.
box2
-
main
{
.
box2
-
main
{
height
:
359
px
;
height
:
359
px
;
...
@@ -1640,6 +1649,7 @@ onMounted(async () => {
...
@@ -1640,6 +1649,7 @@ onMounted(async () => {
margin
-
top
:
16
px
;
margin
-
top
:
16
px
;
width
:
792
px
;
width
:
792
px
;
height
:
847
px
;
height
:
847
px
;
.
box3
{
.
box3
{
width
:
100
%
;
width
:
100
%
;
height
:
100
%
;
height
:
100
%
;
...
@@ -1647,7 +1657,7 @@ onMounted(async () => {
...
@@ -1647,7 +1657,7 @@ onMounted(async () => {
.
vote
-
legend
{
.
vote
-
legend
{
position
:
absolute
;
position
:
absolute
;
top
:
1
5
px
;
top
:
1
0
px
;
left
:
50
%
;
left
:
50
%
;
transform
:
translateX
(
-
50
%
);
transform
:
translateX
(
-
50
%
);
display
:
inline
-
flex
;
display
:
inline
-
flex
;
...
@@ -1735,12 +1745,6 @@ onMounted(async () => {
...
@@ -1735,12 +1745,6 @@ onMounted(async () => {
min
-
width
:
0
;
min
-
width
:
0
;
text
-
align
:
center
;
text
-
align
:
center
;
}
}
.
box3
-
main
-
center
-
header
-
box6
{
flex
:
90
1
0
;
min
-
width
:
0
;
text
-
align
:
center
;
}
}
}
.
box3
-
main
-
center
-
content
{
.
box3
-
main
-
center
-
content
{
...
@@ -1976,23 +1980,6 @@ onMounted(async () => {
...
@@ -1976,23 +1980,6 @@ onMounted(async () => {
line
-
height
:
14
px
;
line
-
height
:
14
px
;
}
}
}
}
.
item
-
box6
{
flex
:
90
1
0
;
min
-
width
:
0
;
text
-
align
:
center
;
.
img
-
box
{
width
:
30
px
;
height
:
30
px
;
margin
-
left
:
30
px
;
img
{
width
:
100
%
;
height
:
100
%
;
}
}
}
}
}
}
}
}
}
...
...
src/views/decree/allOrganization/index.vue
浏览文件 @
cb0736e1
...
@@ -30,12 +30,12 @@
...
@@ -30,12 +30,12 @@
<div
class=
"organization-list"
ref=
"refOrganization"
v-loading=
"organizationInfo.loading"
>
<div
class=
"organization-list"
ref=
"refOrganization"
v-loading=
"organizationInfo.loading"
>
<div
class=
"organization-item"
v-for=
"(item, index) in organizationInfo.list"
:key=
"index"
@
click=
"handleToInstitution(item)"
>
<div
class=
"organization-item"
v-for=
"(item, index) in organizationInfo.list"
:key=
"index"
@
click=
"handleToInstitution(item)"
>
<div
class=
"item-left"
>
<div
class=
"item-left"
>
<img
:src=
"item.
imgUrl
|| DefaultIcon2"
alt=
""
/>
<img
:src=
"item.
orgImage
|| DefaultIcon2"
alt=
""
/>
</div>
</div>
<div
class=
"item-right one-line-ellipsis"
>
{{ item.orgName }}
</div>
<div
class=
"item-right one-line-ellipsis"
>
{{ item.orgName }}
</div>
<div
class=
"item-total"
>
{{ item.total
OrderNum
}}项
</div>
<div
class=
"item-total"
>
{{ item.total }}项
</div>
<el-icon
color=
"var(--color-primary-100)"
><ArrowRightBold
/></el-icon>
<el-icon
color=
"var(--color-primary-100)"
><ArrowRightBold
/></el-icon>
<div
class=
"item-dot"
v-if=
"item.
recentOrderNum"
>
+{{item.recentOrderNum
}}
</div>
<div
class=
"item-dot"
v-if=
"item.
totalRecent"
>
+{{item.totalRecent
}}
</div>
</div>
</div>
</div>
</div>
<div
class=
"pagination-box"
>
<div
class=
"pagination-box"
>
...
@@ -56,7 +56,7 @@ import { Search } from '@element-plus/icons-vue'
...
@@ -56,7 +56,7 @@ import { Search } from '@element-plus/icons-vue'
import
router
from
"@/router"
;
import
router
from
"@/router"
;
import
TimeTabPane
from
'@/components/base/TimeTabPane/index.vue'
;
import
TimeTabPane
from
'@/components/base/TimeTabPane/index.vue'
;
import
{
get
AllOrganization
}
from
"@/api/decree/home"
;
import
{
get
DepartmentList
}
from
"@/api/decree/home"
;
import
tipsTcon
from
"./assets/icons/tips-icon.png"
;
import
tipsTcon
from
"./assets/icons/tips-icon.png"
;
import
DefaultIcon2
from
"@/assets/icons/default-icon2.png"
;
import
DefaultIcon2
from
"@/assets/icons/default-icon2.png"
;
...
@@ -77,7 +77,7 @@ const onAllOrganization = async (num) => {
...
@@ -77,7 +77,7 @@ const onAllOrganization = async (num) => {
organizationInfo
.
loading
=
true
organizationInfo
.
loading
=
true
try
{
try
{
let
{
keyWord
,
pageNum
,
pageSize
,
day
}
=
organizationInfo
let
{
keyWord
,
pageNum
,
pageSize
,
day
}
=
organizationInfo
const
res
=
await
get
AllOrganization
({
day
,
pageNum
:
pageNum
-
1
,
pageSize
,
keyWord
:
keyWord
||
undefined
});
const
res
=
await
get
DepartmentList
({
day
,
pageNum
:
pageNum
-
1
,
pageSize
,
keyWord
:
keyWord
||
undefined
});
console
.
log
(
"机构列表"
,
res
);
console
.
log
(
"机构列表"
,
res
);
if
(
res
.
code
===
200
)
{
if
(
res
.
code
===
200
)
{
organizationInfo
.
list
=
res
.
data
.
orgList
||
[];
organizationInfo
.
list
=
res
.
data
.
orgList
||
[];
...
...
src/views/decree/decreeHome/index.vue
浏览文件 @
cb0736e1
...
@@ -47,7 +47,7 @@
...
@@ -47,7 +47,7 @@
<div
class=
"item-dot"
v-if=
"item.recentOrderNum"
>
+
{{
item
.
recentOrderNum
}}
</div>
<div
class=
"item-dot"
v-if=
"item.recentOrderNum"
>
+
{{
item
.
recentOrderNum
}}
</div>
</div>
</div>
<div
class=
"organization-item"
@
click=
"onNavigateTo()"
>
<div
class=
"organization-item"
@
click=
"onNavigateTo()"
>
<div
class=
"item-more"
>
查看全部机构 (
{{
govInsList
.
length
+
1
}}
家)
</div>
<div
class=
"item-more"
>
查看全部机构 (
{{
govInsList
.
length
}}
家)
</div>
<el-icon
color=
"var(--color-primary-100)"
><ArrowRightBold
/></el-icon>
<el-icon
color=
"var(--color-primary-100)"
><ArrowRightBold
/></el-icon>
</div>
</div>
</div>
</div>
...
@@ -233,7 +233,7 @@
...
@@ -233,7 +233,7 @@
<div
class=
"data-origin-icon"
>
<div
class=
"data-origin-icon"
>
<img
:src=
"tipsTcon"
alt=
""
>
<img
:src=
"tipsTcon"
alt=
""
>
</div>
</div>
<div
class=
"data-origin-text"
>
科技政
领
领域分布情况,数据来源:美国各行政机构官网
</div>
<div
class=
"data-origin-text"
>
科技政
令
领域分布情况,数据来源:美国各行政机构官网
</div>
</div>
</div>
<div
class=
"ai-pane"
>
<div
class=
"ai-pane"
>
<AiButton
/>
<AiButton
/>
...
@@ -287,7 +287,7 @@
...
@@ -287,7 +287,7 @@
<div
class=
"data-origin-icon"
>
<div
class=
"data-origin-icon"
>
<img
:src=
"tipsTcon"
alt=
""
>
<img
:src=
"tipsTcon"
alt=
""
>
</div>
</div>
<div
class=
"data-origin-text"
>
关键科技政
领
列表,数据来源:美国各行政机构官网
</div>
<div
class=
"data-origin-text"
>
关键科技政
令
列表,数据来源:美国各行政机构官网
</div>
</div>
</div>
</div>
</div>
<div
class=
"box8"
>
<div
class=
"box8"
>
...
@@ -321,7 +321,7 @@
...
@@ -321,7 +321,7 @@
<div
class=
"data-origin-icon"
>
<div
class=
"data-origin-icon"
>
<img
:src=
"tipsTcon"
alt=
""
>
<img
:src=
"tipsTcon"
alt=
""
>
</div>
</div>
<div
class=
"data-origin-text"
>
科技政
领
重点条款词云,数据来源:美国各行政机构官网
</div>
<div
class=
"data-origin-text"
>
科技政
令
重点条款词云,数据来源:美国各行政机构官网
</div>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -502,10 +502,10 @@ const govInsList = ref([]);
...
@@ -502,10 +502,10 @@ const govInsList = ref([]);
const
checkedGovIns
=
ref
([]);
const
checkedGovIns
=
ref
([]);
const
handleGetDepartmentList
=
async
()
=>
{
const
handleGetDepartmentList
=
async
()
=>
{
try
{
try
{
const
res
=
await
getDepartmentList
({
day
:
7
});
const
res
=
await
getDepartmentList
({});
console
.
log
(
"机构列表"
,
res
);
console
.
log
(
"机构列表"
,
res
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
if
(
res
.
code
===
200
)
{
govInsList
.
value
=
res
.
data
;
govInsList
.
value
=
res
.
data
.
orgList
;
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
error
(
"获取机构列表error"
,
error
);
console
.
error
(
"获取机构列表error"
,
error
);
...
...
src/views/decree/decreeLayout/influence/index.vue
浏览文件 @
cb0736e1
...
@@ -100,7 +100,7 @@ import {
...
@@ -100,7 +100,7 @@ import {
getDecreeRelatedEntitie
getDecreeRelatedEntitie
}
from
"@/api/decree/influence"
;
}
from
"@/api/decree/influence"
;
import
ChartChain
from
"./com/ChartChain.vue"
;
import
ChartChain
from
"./com/ChartChain.vue"
;
import
AiTips
from
"./com/AiTips.vue"
;
//
import AiTips from "./com/AiTips.vue";
import
GraphChart
from
"@/components/base/GraphChart/index.vue"
;
import
GraphChart
from
"@/components/base/GraphChart/index.vue"
;
import
defaultIcon2
from
"@/assets/icons/default-icon2.png"
;
import
defaultIcon2
from
"@/assets/icons/default-icon2.png"
;
import
noticeIcon
from
"./assets/images/notice-icon.png"
;
import
noticeIcon
from
"./assets/images/notice-icon.png"
;
...
@@ -186,7 +186,7 @@ const headerChartData = (row) => {
...
@@ -186,7 +186,7 @@ const headerChartData = (row) => {
onDecreeRelatedChain
(
row
.
id
)
onDecreeRelatedChain
(
row
.
id
)
break
;
break
;
case
2
:
case
2
:
onDecreeRelatedEntitie
(
row
.
i
d
)
onDecreeRelatedEntitie
(
row
.
orgI
d
)
break
;
break
;
}
}
}
}
...
@@ -247,14 +247,17 @@ const graphInfo = reactive({
...
@@ -247,14 +247,17 @@ const graphInfo = reactive({
nodes
:
[],
nodes
:
[],
links
:
[],
links
:
[],
}
);
}
);
const
onDecreeRelatedEntitie
=
async
(
i
d
)
=>
{
const
onDecreeRelatedEntitie
=
async
(
orgI
d
)
=>
{
try
{
try
{
const
res
=
await
getDecreeRelatedEntitie
({
id
}
);
const
res
=
await
getDecreeRelatedEntitie
({
orgId
,
rule
:
false
,
withSanInfo
:
false
}
);
console
.
log
(
"实体关系:"
,
res
);
console
.
log
(
"实体关系:"
,
res
);
if
(
res
.
code
===
200
)
{
if
(
res
.
code
===
200
)
{
graphInfo
.
links
=
res
.
data
.
map
(
onFormatLink
)
let
arr1
=
res
.
data
.
parentOrgList
.
map
(
item
=>
({
...
item
,
level
:
1
}
))
graphInfo
.
nodes
=
res
.
data
.
map
(
onFormatNode
)
let
arr3
=
res
.
data
.
childrenOrgList
.
map
(
item
=>
({
...
item
,
level
:
3
}
))
graphInfo
.
nodes
.
unshift
(
onFormatNode
(
entityInfo
.
node
))
graphInfo
.
links
=
[...
arr1
,...
arr3
].
map
(
onFormatLink
)
graphInfo
.
nodes
=
[...
arr1
,...
arr3
].
map
(
onFormatNode
)
graphInfo
.
nodes
.
unshift
(
onFormatNode
({
name
:
res
.
data
.
orgName
,
id
:
res
.
data
.
orgId
}
,
-
1
))
}
}
}
catch
(
error
)
{
}
catch
(
error
)
{
console
.
log
(
"获取实体关系失败"
,
error
);
console
.
log
(
"获取实体关系失败"
,
error
);
...
@@ -262,17 +265,18 @@ const onDecreeRelatedEntitie = async (id) => {
...
@@ -262,17 +265,18 @@ const onDecreeRelatedEntitie = async (id) => {
}
}
const
onFormatLink
=
(
item
,
index
)
=>
{
const
onFormatLink
=
(
item
,
index
)
=>
{
return
{
return
{
id
:
`link-${index+1
}
`
,
id
:
`link-${index
}
-${item.id
}
`
,
source
:
item
.
id
+
''
,
target
:
entityInfo
.
id
+
''
,
target
:
item
.
level
==
3
?
`${index
}
-${item.id
}
`
:
`-1-${entityInfo.node.orgId
}
`
,
label
:
{
show
:
true
,
color
:
"#055fc2"
,
backgroundColor
:
"#eef7ff"
,
borderWidth
:
0
,
offset
:
[
0
,
15
],
formatter
:
item
.
relation
}
,
source
:
item
.
level
==
3
?
`-1-${entityInfo.node.orgId
}
`
:
`${index
}
-${item.id
}
`
,
label
:
{
show
:
true
,
color
:
"#055fc2"
,
backgroundColor
:
"#eef7ff"
,
borderWidth
:
0
,
offset
:
[
0
,
15
],
formatter
:
item
.
description
}
,
lineStyle
:
{
color
:
'#B9DCFF'
,
type
:
"solid"
,
opacity
:
1
}
lineStyle
:
{
color
:
'#B9DCFF'
,
type
:
"solid"
,
opacity
:
1
}
}
}
}
}
const
onFormatNode
=
(
item
)
=>
{
const
onFormatNode
=
(
item
,
index
)
=>
{
let
leader
=
item
.
id
==
entityInfo
.
i
d
;
let
leader
=
item
.
id
==
entityInfo
.
node
.
orgI
d
;
return
{
return
{
id
:
item
.
id
+
''
,
id
:
`${index
}
-${item.id
}
`
,
name
:
onWordWrap
(
item
.
companyN
ame
,
7
),
name
:
onWordWrap
(
item
.
n
ame
,
7
),
label
:
{
label
:
{
show
:
true
,
show
:
true
,
color
:
"#3b414b"
,
color
:
"#3b414b"
,
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论