Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
risk-monitor
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
蔡建
risk-monitor
Commits
45af5214
提交
45af5214
authored
3月 23, 2026
作者:
张伊明
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
style 修改aipane和waringpane样式
fix 根据修改意见修改法案首页 fix 修改影响分析部分界面
上级
0892a0ac
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
166 行增加
和
100 行删除
+166
-100
SearchContainer.vue
src/components/SearchContainer.vue
+6
-2
index.vue
src/components/base/Ai/AiPane/index.vue
+8
-9
index.vue
src/components/base/WarningPane/index.vue
+9
-11
ResourceLibrarySection.vue
src/views/bill/billHome/ResourceLibrarySection.vue
+42
-8
index.vue
src/views/bill/influence/industry/index.vue
+0
-0
index.vue
src/views/bill/introdoction/index.vue
+101
-70
没有找到文件。
src/components/SearchContainer.vue
浏览文件 @
45af5214
...
@@ -10,8 +10,7 @@
...
@@ -10,8 +10,7 @@
</div>
</div>
<div
<div
class=
"search-type-tab"
class=
"search-type-tab"
:class=
"
{ active: billSearchType === 'state' }"
:class=
"
{ active: billSearchType === 'state', 'is-disabled': true }"
@click="handleChangeBillSearchType('state')"
>
>
州议会
州议会
</div>
</div>
...
@@ -206,6 +205,11 @@ const handleToPosi = id => {
...
@@ -206,6 +205,11 @@ const handleToPosi = id => {
color
:
rgb
(
5
,
95
,
194
);
color
:
rgb
(
5
,
95
,
194
);
border-color
:
rgb
(
255
,
255
,
255
);
border-color
:
rgb
(
255
,
255
,
255
);
}
}
.search-type-tab.is-disabled
{
cursor
:
not
-
allowed
;
opacity
:
0
.6
;
}
}
}
.search-main-with-tabs
{
.search-main-with-tabs
{
...
...
src/components/base/Ai/AiPane/index.vue
浏览文件 @
45af5214
...
@@ -24,7 +24,8 @@ const props = defineProps({
...
@@ -24,7 +24,8 @@ const props = defineProps({
<
style
lang=
"scss"
>
<
style
lang=
"scss"
>
.ai-pane-wrapper
{
.ai-pane-wrapper
{
width
:
100%
;
width
:
100%
;
height
:
156px
;
min-height
:
156px
;
height
:
auto
;
background
:
var
(
--
color-primary-2
);
background
:
var
(
--
color-primary-2
);
box-sizing
:
border-box
;
box-sizing
:
border-box
;
padding
:
12px
16px
;
padding
:
12px
16px
;
...
@@ -57,18 +58,15 @@ const props = defineProps({
...
@@ -57,18 +58,15 @@ const props = defineProps({
.content
{
.content
{
margin-top
:
8px
;
margin-top
:
8px
;
width
:
100%
;
width
:
100%
;
height
:
90px
;
min-height
:
90px
;
height
:
auto
;
box-sizing
:
border-box
;
box-sizing
:
border-box
;
padding
:
0
12px
;
padding
:
0
12px
;
color
:
var
(
--
color-primary-100
);
color
:
var
(
--
color-primary-100
);
display
:
-
webkit-box
;
display
:
block
;
-webkit-line-clamp
:
3
;
overflow
:
visible
;
/* 控制显示的行数 */
-webkit-box-orient
:
vertical
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
word-break
:
break-word
;
word-break
:
break-word
;
/* 防止长单词溢出 */
white-space
:
pre-wrap
;
}
}
}
}
</
style
>
</
style
>
\ No newline at end of file
src/components/base/WarningPane/index.vue
浏览文件 @
45af5214
<
template
>
<
template
>
<div
class=
"warnning-pane-wrapper"
:style=
"
{ width: width ? width : '1600px', height: height ? height : '116px' }"
<div
class=
"warnning-pane-wrapper"
:style=
"
{ width: width ? width : '1600px', height: height ? height : '
auto', minHeight: height ? undefined : '
116px' }"
:class="{
:class="{
level1: warnningLevel === '特别重大风险',
level1: warnningLevel === '特别重大风险',
level2: warnningLevel === '重大风险',
level2: warnningLevel === '重大风险',
...
@@ -146,15 +146,12 @@ const handleClickPane = () => {
...
@@ -146,15 +146,12 @@ const handleClickPane = () => {
.warnning-pane-content
{
.warnning-pane-content
{
width
:
calc
(
100%
-
40px
);
width
:
calc
(
100%
-
40px
);
margin
:
0
auto
;
margin
:
0
auto
;
height
:
60px
;
margin-bottom
:
16px
;
display
:
-
webkit-box
;
min-height
:
60px
;
/* 2. 设置内部布局方向为垂直 */
height
:
auto
;
-webkit-box-orient
:
vertical
;
display
:
block
;
/* 3. 限制显示的行数为 2 行 */
overflow
:
visible
;
-webkit-line-clamp
:
2
;
white-space
:
pre-wrap
;
/* 4. 隐藏超出部分 */
word-break
:
break-word
;
overflow
:
hidden
;
/* 5. 设置文本溢出显示省略号 */
text-overflow
:
ellipsis
;
}
}
</
style
>
</
style
>
\ No newline at end of file
src/views/bill/billHome/ResourceLibrarySection.vue
浏览文件 @
45af5214
...
@@ -260,6 +260,7 @@
...
@@ -260,6 +260,7 @@
import
{
computed
,
onMounted
,
ref
}
from
"vue"
;
import
{
computed
,
onMounted
,
ref
}
from
"vue"
;
import
{
useRouter
}
from
"vue-router"
;
import
{
useRouter
}
from
"vue-router"
;
import
{
getHylyList
,
getPostOrgList
,
getPostMemberList
,
getBills
,
getBillsPerson
,
getBillsPersonRel
,
getBillsIsCnCommittee
}
from
"@/api/bill/billHome"
;
import
{
getHylyList
,
getPostOrgList
,
getPostMemberList
,
getBills
,
getBillsPerson
,
getBillsPersonRel
,
getBillsIsCnCommittee
}
from
"@/api/bill/billHome"
;
import
{
getPersonSummaryInfo
}
from
"@/api/common/index"
;
import
CommonPrompt
from
"../commonPrompt/index.vue"
;
import
CommonPrompt
from
"../commonPrompt/index.vue"
;
import
desc
from
"./assets/icons/icon-desc.png"
;
import
desc
from
"./assets/icons/icon-desc.png"
;
import
defaultAvatar
from
"@/assets/icons/default-icon1.png"
;
import
defaultAvatar
from
"@/assets/icons/default-icon1.png"
;
...
@@ -268,6 +269,7 @@ import zyyIcon from "@/assets/icons/zyy.png";
...
@@ -268,6 +269,7 @@ import zyyIcon from "@/assets/icons/zyy.png";
import
cyyIcon
from
"@/assets/icons/cyy.png"
;
import
cyyIcon
from
"@/assets/icons/cyy.png"
;
import
ghdIcon
from
"@/assets/icons/ghd.png"
;
import
ghdIcon
from
"@/assets/icons/ghd.png"
;
import
mzdIcon
from
"@/assets/icons/mzd.png"
;
import
mzdIcon
from
"@/assets/icons/mzd.png"
;
import
{
ElMessage
}
from
"element-plus"
;
const
router
=
useRouter
();
const
router
=
useRouter
();
...
@@ -405,16 +407,48 @@ const handleBillImageError = e => {
...
@@ -405,16 +407,48 @@ const handleBillImageError = e => {
img
.
src
=
defaultBill
;
img
.
src
=
defaultBill
;
}
;
}
;
const
handleClickAvatar
=
member
=>
{
const
handleClickAvatar
=
async
member
=>
{
if
(
!
member
?.
id
)
return
;
if
(
!
member
?.
id
)
return
;
window
.
sessionStorage
.
setItem
(
"curTabName"
,
member
.
name
||
""
);
const
personTypeList
=
JSON
.
parse
(
window
.
sessionStorage
.
getItem
(
"personTypeList"
)
||
"[]"
);
const
routeData
=
router
.
resolve
({
let
type
=
0
;
path
:
"/characterPage"
,
let
personTypeName
=
""
;
query
:
{
const
params
=
{
personId
:
member
.
id
personId
:
member
.
id
}
;
try
{
const
res
=
await
getPersonSummaryInfo
(
params
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
const
arr
=
personTypeList
.
filter
(
item
=>
item
.
typeId
===
res
.
data
.
personType
);
if
(
arr
&&
arr
.
length
>
0
)
{
personTypeName
=
arr
[
0
].
typeName
;
if
(
personTypeName
===
"科技企业领袖"
)
{
type
=
1
;
}
else
if
(
personTypeName
===
"国会议员"
)
{
type
=
2
;
}
else
if
(
personTypeName
===
"智库研究人员"
)
{
type
=
3
;
}
else
{
personTypeName
=
""
;
ElMessage
.
warning
(
"找不到当前人员的类型值!"
);
return
;
}
window
.
sessionStorage
.
setItem
(
"curTabName"
,
member
.
name
||
""
);
const
routeData
=
router
.
resolve
({
path
:
"/characterPage"
,
query
:
{
type
,
personId
:
member
.
id
}
}
);
window
.
open
(
routeData
.
href
,
"_blank"
);
}
else
{
personTypeName
=
""
;
ElMessage
.
warning
(
"找不到当前人员的类型值!"
);
}
}
else
{
ElMessage
.
warning
(
"找不到当前人员的类型值!"
);
}
}
}
);
}
catch
(
error
)
{
}
window
.
open
(
routeData
.
href
,
"_blank"
);
}
;
}
;
const
getReversedProgress
=
progress
=>
(
Array
.
isArray
(
progress
)
?
[...
progress
].
reverse
()
:
[]);
const
getReversedProgress
=
progress
=>
(
Array
.
isArray
(
progress
)
?
[...
progress
].
reverse
()
:
[]);
...
...
src/views/bill/influence/industry/index.vue
浏览文件 @
45af5214
差异被折叠。
点击展开。
src/views/bill/introdoction/index.vue
浏览文件 @
45af5214
<
template
>
<
template
>
<div
class=
"introduction-wrap"
>
<div
class=
"introduction-wrap"
>
<WarningPane
<WarningPane
v-if=
"riskSignal"
class=
"risk-signal-pane-top"
:warnningLevel=
"riskSignal.riskLevel"
v-if=
"riskSignal"
:warnningContent=
"riskSignal.riskContent"
/>
class=
"risk-signal-pane-top"
:warnningLevel=
"riskSignal.riskLevel"
:warnningContent=
"riskSignal.riskContent"
/>
<div
class=
"introduction-wrap-content"
>
<div
class=
"introduction-wrap-content"
>
<div
class=
"introduction-wrap-left"
>
<div
class=
"introduction-wrap-left"
>
<div
class=
"introduction-wrap-left-box1"
>
<div
class=
"introduction-wrap-left-box1"
>
<AnalysisBox
title=
"基本信息"
:showAllBtn=
"false"
>
<AnalysisBox
title=
"基本信息"
:showAllBtn=
"false"
>
<div
class=
"box1-main"
>
<div
class=
"box1-main"
>
<div
class=
"box1-left"
>
<div
class=
"box1-left"
>
<img
:src=
"basicInfo.imageUrl || defaultBill"
alt=
""
/>
<img
:src=
"basicInfo.imageUrl || defaultBill"
alt=
""
/>
</div>
</div>
<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"
>
{{
basicInfo
.
tarName
}}
</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"
>
{{
basicInfo
.
introductionDate
}}
</div>
<div
class=
"item-right"
>
{{
basicInfo
.
introductionDate
}}
</div>
</div>
<div
class=
"box1-right-item"
>
<div
class=
"item-left"
>
相关领域:
</div>
<div
class=
"item-right1"
>
<AreaTag
v-for=
"item in hylyList"
:key=
"item"
:tagName=
"item"
/>
</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-right1"
>
<div
class=
"item-right2"
v-if=
"reportList.length"
>
<AreaTag
v-for=
"item in hylyList"
:key=
"item"
:tagName=
"item"
/>
<div
class=
"right2-item"
v-for=
"(item, index) in reportList"
:key=
"getReportKey(item, index)"
>
{{
item
}}
</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-right2"
v-if=
"reportList.length"
>
<div
class=
"item-right3"
>
{{
`全程共进行${basicInfo.votetotal
}
次唱名表决`
}}
<
/div
>
<div
class=
"right2-item"
v-for=
"(item, index) in reportList"
<
/div
>
:key=
"getReportKey(item, index)"
>
<
div
class
=
"box1-right-item"
>
<
div
class
=
"item-left"
>
最近状态:
<
/div
>
<
div
class
=
"item-right3"
>
{{
basicInfo
.
status
}}
<
/div
>
<
/div
>
<
div
class
=
"box1-right-item"
>
<
div
class
=
"item-left"
>
立案流程:
<
/div
>
<
div
class
=
"item-right4"
>
<
div
v
-
for
=
"(item, index) in reversedStageList"
:
key
=
"getStageKey(item, index)"
class
=
"step"
:
style
=
"{ zIndex: getStageZIndex(index)
}
"
>
<
div
class
=
"step-box"
:
class
=
"{ 'step-box-active': index === stageActiveIndex
}
"
>
{{
item
}}
{{
item
}}
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"box1-right-item"
>
<div
class=
"item-left"
>
表决记录:
</div>
<div
class=
"item-right3"
>
{{
`全程共进行${basicInfo.votetotal
}
次唱名表决`
}}
<
/div
>
<
/div
>
<
div
class
=
"box1-right-item"
>
<
div
class
=
"item-left"
>
最近状态:
<
/div
>
<
div
class
=
"item-right3"
>
{{
basicInfo
.
status
}}
<
/div
>
<
/div
>
<
div
class
=
"box1-right-item"
>
<
div
class
=
"item-left"
>
立案流程:
<
/div
>
<
div
class
=
"item-right4"
>
<
div
v
-
for
=
"(item, index) in reversedStageList"
:
key
=
"getStageKey(item, index)"
class
=
"step"
:
style
=
"{ zIndex: getStageZIndex(index)
}
"
>
<
div
class
=
"step-box"
:
class
=
"{ 'step-box-active': index === stageActiveIndex
}
"
>
{{
item
}}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/
div
>
<
/
AnalysisBox
>
<
/
AnalysisBox
>
<
/
div
>
<
/div
>
<
div
class
=
"introduction-wrap-left-box2"
>
<
div
class
=
"introduction-wrap-left-box2
"
>
<
AnalysisBox
title
=
"法案进展"
:
showAllBtn
=
"false
"
>
<
AnalysisBox
title
=
"法案进展"
:
showAllBtn
=
"false"
>
<
template
#
header
-
btn
>
<
template
#
header
-
btn
>
<
/template
>
<
/template
>
<
div
class
=
"box2-main"
>
<
div
class
=
"box2-main
"
>
<
div
class
=
"box2-main-center
"
>
<
div
class
=
"box2-main-center"
>
<
STimeline
:
dataList
=
"timelineData"
:
mode
=
"progressMode"
:
maxCount
=
"5"
/
>
<
STimeline
:
dataList
=
"timelineData"
:
mode
=
"progressMode"
:
maxCount
=
"5"
/
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/AnalysisBox
>
<
/AnalysisBox
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"introduction-wrap-right"
>
<
div
class
=
"introduction-wrap-right"
>
<
AnalysisBox
title
=
"提出人"
:
showAllBtn
=
"false"
>
<
AnalysisBox
title
=
"提出人"
:
showAllBtn
=
"false"
>
...
@@ -86,14 +79,16 @@
...
@@ -86,14 +79,16 @@
<
div
class
=
"name-box"
>
<
div
class
=
"name-box"
>
<
div
class
=
"person-box"
>
<
div
class
=
"person-box"
>
<
div
class
=
"person-item"
:
class
=
"{ nameItemActive: box3BtnActive === item.name
}
"
<
div
class
=
"person-item"
:
class
=
"{ nameItemActive: box3BtnActive === item.name
}
"
@
click
=
"handleClcikBox3Btn(item.name, index)"
v
-
for
=
"(item, index) in personList"
:
key
=
"index"
>
@
click
=
"handleClcikBox3Btn(item.name, index)"
v
-
for
=
"(item, index) in personList"
:
key
=
"index"
>
{{
item
.
name
}}
{{
item
.
name
}}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"info-box"
>
<
div
class
=
"info-box"
>
<
div
class
=
"info-left"
>
<
div
class
=
"info-left"
>
<
img
class
=
"person-avatar"
:
src
=
"curPerson.imageUrl || defaultAvatar"
alt
=
""
@
click
=
"handleClickAvatar(curPerson)"
/>
<
img
class
=
"person-avatar"
:
src
=
"curPerson.imageUrl || defaultAvatar"
alt
=
""
@
click
=
"handleClickAvatar(curPerson)"
/>
<
div
class
=
"usr-icon1"
>
<
div
class
=
"usr-icon1"
>
<
img
src
=
"./assets/images/usr-icon1.png"
alt
=
""
/>
<
img
src
=
"./assets/images/usr-icon1.png"
alt
=
""
/>
<
/div
>
<
/div
>
...
@@ -102,7 +97,8 @@
...
@@ -102,7 +97,8 @@
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"info-right"
>
<
div
class
=
"info-right"
>
<
div
class
=
"info-right-title"
@
click
=
"handleClickAvatar(curPerson)"
>
{{
curPerson
.
name
}}
<
/div
>
<
div
class
=
"info-right-title"
@
click
=
"handleClickAvatar(curPerson)"
>
{{
curPerson
.
name
}}
<
/div
>
<
div
class
=
"info-right-item"
>
<
div
class
=
"info-right-item"
>
<
div
class
=
"item-left"
>
英文名
:
<
/div
>
<
div
class
=
"item-left"
>
英文名
:
<
/div
>
<
div
class
=
"item-right"
>
{{
curPerson
.
ename
}}
<
/div
>
<
div
class
=
"item-right"
>
{{
curPerson
.
ename
}}
<
/div
>
...
@@ -123,7 +119,7 @@
...
@@ -123,7 +119,7 @@
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
class
=
"right-main-box2"
v
-
if
=
"curPerson.tagList && curPerson.tagList.length"
>
<
div
class
=
"right-main-box2"
v
-
if
=
"curPerson.tagList && curPerson.tagList.length"
>
<
div
class
=
"tag-box status"
v
-
for
=
"(tag, index) in curPerson.tagList"
:
key
=
"index"
>
<
div
class
=
"tag-box status"
v
-
for
=
"(tag, index) in curPerson.tagList"
:
key
=
"index"
>
{{
tag
}}
{{
tag
}}
<
/div
>
<
/div
>
<
/div
>
<
/div
>
...
@@ -159,23 +155,58 @@ import WordCloudMap from "./WordCloudMap.vue";
...
@@ -159,23 +155,58 @@ import WordCloudMap from "./WordCloudMap.vue";
import
STimeline
from
"./STimeline.vue"
;
import
STimeline
from
"./STimeline.vue"
;
import
WarningPane
from
"@/components/base/WarningPane/index.vue"
;
import
WarningPane
from
"@/components/base/WarningPane/index.vue"
;
import
{
getBillInfo
,
getBillPerson
,
getBillEvent
,
getBillDyqk
}
from
"@/api/bill"
;
import
{
getBillInfo
,
getBillPerson
,
getBillEvent
,
getBillDyqk
}
from
"@/api/bill"
;
import
{
getPersonSummaryInfo
}
from
"@/api/common/index"
;
import
defaultAvatar
from
"../assets/images/default-icon1.png"
;
import
defaultAvatar
from
"../assets/images/default-icon1.png"
;
import
defaultNew
from
"../assets/images/default-icon-news.png"
;
import
defaultNew
from
"../assets/images/default-icon-news.png"
;
import
defaultBill
from
"./assets/images/image1.png"
import
defaultBill
from
"./assets/images/image1.png"
import
{
ElMessage
}
from
"element-plus"
;
const
route
=
useRoute
();
const
route
=
useRoute
();
const
router
=
useRouter
();
const
router
=
useRouter
();
// 跳转到人物页面
// 跳转到人物页面
const
handleClickAvatar
=
item
=>
{
const
handleClickAvatar
=
async
item
=>
{
window
.
sessionStorage
.
setItem
(
'curTabName'
,
item
.
name
)
if
(
!
item
?.
id
)
return
;
const
routeData
=
router
.
resolve
({
const
personTypeList
=
JSON
.
parse
(
window
.
sessionStorage
.
getItem
(
"personTypeList"
)
||
"[]"
);
path
:
"/characterPage"
,
let
type
=
0
;
query
:
{
let
personTypeName
=
""
;
personId
:
item
.
id
const
params
=
{
personId
:
item
.
id
}
;
try
{
const
res
=
await
getPersonSummaryInfo
(
params
);
if
(
res
.
code
===
200
&&
res
.
data
)
{
const
arr
=
personTypeList
.
filter
(
val
=>
val
.
typeId
===
res
.
data
.
personType
);
if
(
arr
&&
arr
.
length
>
0
)
{
personTypeName
=
arr
[
0
].
typeName
;
if
(
personTypeName
===
"科技企业领袖"
)
{
type
=
1
;
}
else
if
(
personTypeName
===
"国会议员"
)
{
type
=
2
;
}
else
if
(
personTypeName
===
"智库研究人员"
)
{
type
=
3
;
}
else
{
personTypeName
=
""
;
ElMessage
.
warning
(
"找不到当前人员的类型值!"
);
return
;
}
window
.
sessionStorage
.
setItem
(
"curTabName"
,
item
.
name
||
""
);
const
routeData
=
router
.
resolve
({
path
:
"/characterPage"
,
query
:
{
type
,
personId
:
item
.
id
}
}
);
window
.
open
(
routeData
.
href
,
"_blank"
);
}
else
{
personTypeName
=
""
;
ElMessage
.
warning
(
"找不到当前人员的类型值!"
);
}
}
else
{
ElMessage
.
warning
(
"找不到当前人员的类型值!"
);
}
}
}
);
}
catch
(
error
)
{
}
window
.
open
(
routeData
.
href
,
"_blank"
);
}
;
}
;
// 获取URL地址里面的billId
// 获取URL地址里面的billId
const
billId
=
ref
(
route
.
query
.
billId
);
const
billId
=
ref
(
route
.
query
.
billId
);
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论