明树Git Lab
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
J
jt_front
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
jt_front
Commits
918db535
Commit
918db535
authored
Mar 06, 2026
by
zhanghan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
代码补全
parent
f71a1732
Pipeline
#108022
passed with stage
in 20 seconds
Changes
7
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
2165 additions
and
1146 deletions
+2165
-1146
FinancialTable.vue
src/components/FinancialTable.vue
+16
-19
verticalManages.css
src/styles/verticalManages.css
+27
-2
verticalManages.less
src/styles/verticalManages.less
+276
-238
decisionAdd.vue
src/views/investingManage/decisionAdd.vue
+1551
-642
quitAdd.vue
src/views/investingManage/quitAdd.vue
+21
-10
projectAllPage.vue
src/views/projectManage/projectAllPage.vue
+215
-178
departManage.vue
src/views/systemManage/departManage.vue
+59
-57
No files found.
src/components/FinancialTable.vue
View file @
918db535
...
@@ -15,21 +15,31 @@
...
@@ -15,21 +15,31 @@
prop=
"serialNumber"
prop=
"serialNumber"
label=
"序号"
label=
"序号"
width=
"80"
width=
"80"
fixed=
"left"
align=
"center"
align=
"center"
/>
/>
<!-- 指标项列(层级缩进):保留原逻辑 -->
<!-- 指标项列(层级缩进):保留原逻辑 -->
<el-table-column
<el-table-column
prop=
"indicatorName"
prop=
"indicatorName"
label=
"名称"
label=
"名称"
fixed=
"left"
align=
"left"
align=
"left"
min-width=
"260"
min-width=
"260"
>
>
<template
#
default=
"
{ row }">
<template
#
default=
"
{ row }">
<div
style=
"text-align: left"
>
{{
row
.
indicatorName
}}
</div>
<div
:style=
"
{
textIndent: row.level ? `${row.level * 20}px` : '0px',
textAlign: 'left',
}"
>
{{
row
.
indicatorName
}}
</div>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<!-- 合计列:文本行隐藏合计值,不显示0.00 → 从内部数据取值 -->
<!-- 合计列:文本行隐藏合计值,不显示0.00 → 从内部数据取值 -->
<el-table-column
label=
"合计"
width=
"140"
align=
"right"
>
<el-table-column
fixed=
"left"
label=
"合计"
width=
"140"
align=
"right"
>
<
template
#
default=
"{ row }"
>
<
template
#
default=
"{ row }"
>
<span
v-if=
"!row.noTotal"
>
<span
v-if=
"!row.noTotal"
>
{{
row
.
total
?
Number
(
row
.
total
).
toFixed
(
2
)
:
"0.00"
}}
万元
{{
row
.
total
?
Number
(
row
.
total
).
toFixed
(
2
)
:
"0.00"
}}
万元
...
@@ -56,7 +66,6 @@
...
@@ -56,7 +66,6 @@
align="center"
align="center"
>
>
<template
#
default=
"
{ row }">
<template
#
default=
"
{ row }">
<!-- 1. 文本行:多行文本输入框 -->
<el-input
<el-input
v-if=
"row.isTextRow"
v-if=
"row.isTextRow"
v-model=
"row[timeItem.prop]"
v-model=
"row[timeItem.prop]"
...
@@ -283,13 +292,15 @@ const handleTableData = (sourceIndicatorList, sourceTableData) => {
...
@@ -283,13 +292,15 @@ const handleTableData = (sourceIndicatorList, sourceTableData) => {
const
newData
=
[];
const
newData
=
[];
sourceIndicatorList
.
forEach
((
item
,
index
)
=>
{
sourceIndicatorList
.
forEach
((
item
,
index
)
=>
{
const
{
name
,
isTextRow
=
false
,
noTotal
=
false
}
=
item
;
const
{
name
,
isTextRow
=
false
,
noTotal
=
false
}
=
item
;
const
level
=
item
?.
level
||
0
;
const
serialNumber
=
item
?.
serialNumber
||
index
+
1
;
// 深拷贝源数据行
// 深拷贝源数据行
const
originRow
=
const
originRow
=
sourceTableData
.
find
((
row
)
=>
row
.
indicatorName
===
name
)
||
{};
sourceTableData
.
find
((
row
)
=>
row
.
indicatorName
===
name
)
||
{};
const
rowData
=
JSON
.
parse
(
const
rowData
=
JSON
.
parse
(
JSON
.
stringify
({
JSON
.
stringify
({
serialNumber
:
index
+
1
,
serialNumber
,
level
:
0
,
level
,
indicatorName
:
name
,
indicatorName
:
name
,
isTextRow
,
isTextRow
,
noTotal
,
noTotal
,
...
@@ -333,20 +344,6 @@ watch(
...
@@ -333,20 +344,6 @@ watch(
{
deep
:
true
,
immediate
:
true
},
{
deep
:
true
,
immediate
:
true
},
);
);
// 监听时间配置变化:更新内部数据
watch
(
()
=>
validDynamicTimeList
.
value
,
()
=>
{
if
(
!
validConfig
.
value
||
tableDataRef
.
value
.
length
===
0
)
return
;
tableDataRef
.
value
.
forEach
((
row
)
=>
{
initRowTimeField
(
row
);
row
.
total
=
calculateRowTotal
(
row
);
});
emitDataChange
(
tableDataRef
.
value
);
},
{
deep
:
true
,
immediate
:
true
},
);
// 10. 数字行输入回调(逻辑不变)
// 10. 数字行输入回调(逻辑不变)
const
handleFinancialChange
=
(
currentRow
)
=>
{
const
handleFinancialChange
=
(
currentRow
)
=>
{
if
(
props
.
isPreview
||
!
currentRow
||
currentRow
.
noTotal
)
return
;
if
(
props
.
isPreview
||
!
currentRow
||
currentRow
.
noTotal
)
return
;
...
...
src/styles/verticalManages.css
View file @
918db535
...
@@ -181,7 +181,7 @@
...
@@ -181,7 +181,7 @@
}
}
::v-deep
.add-project-content
.tab-content
.upload-file-wrap
.delete-btn
{
::v-deep
.add-project-content
.tab-content
.upload-file-wrap
.delete-btn
{
cursor
:
pointer
;
cursor
:
pointer
;
color
:
#
F56C6C
;
color
:
#
f56c6c
;
}
}
::v-deep
.add-project-content
.tab-content
.el-select__wrapper
.el-select__selection.is-near
{
::v-deep
.add-project-content
.tab-content
.el-select__wrapper
.el-select__selection.is-near
{
max-height
:
120px
;
max-height
:
120px
;
...
@@ -254,12 +254,18 @@
...
@@ -254,12 +254,18 @@
}
}
.add-project-header
{
.add-project-header
{
margin-bottom
:
10px
;
margin-bottom
:
10px
;
padding-left
:
24px
;
}
.add-project-header
.header-left
:hover
{
color
:
#409eff
;
cursor
:
pointer
;
}
}
::v-deep
.el-form-item
{
::v-deep
.el-form-item
{
display
:
block
;
display
:
block
;
}
}
::v-deep
.el-form-item
.el-form-item__label
{
::v-deep
.el-form-item
.el-form-item__label
{
width
:
auto
!important
;
width
:
auto
!important
;
color
:
#333
;
}
}
.tab-handle
{
.tab-handle
{
margin-bottom
:
10px
;
margin-bottom
:
10px
;
...
@@ -280,9 +286,25 @@
...
@@ -280,9 +286,25 @@
align-items
:
center
;
align-items
:
center
;
margin-bottom
:
24px
;
margin-bottom
:
24px
;
}
}
::v-deep
.el-collapse-item__title
{
::v-deep
.el-collapse-item
.el-collapse-item__title
{
color
:
#333
;
font-size
:
16px
;
flex
:
auto
;
flex
:
auto
;
text-align
:
left
;
text-align
:
left
;
padding-left
:
16px
;
position
:
relative
;
}
::v-deep
.el-collapse-item
.el-collapse-item__title
::after
{
position
:
absolute
;
content
:
""
;
left
:
0
;
top
:
15px
;
width
:
2px
;
height
:
19px
;
background-color
:
#409eff
;
}
::v-deep
.el-collapse-item
.el-icon
{
font-size
:
16px
;
}
}
:deep
(
.el-table
)
{
:deep
(
.el-table
)
{
--el-table-border-color
:
#ebeef5
;
--el-table-border-color
:
#ebeef5
;
...
@@ -291,3 +313,6 @@
...
@@ -291,3 +313,6 @@
:deep
(
.el-upload
)
{
:deep
(
.el-upload
)
{
width
:
100%
;
width
:
100%
;
}
}
::v-deep
.el-collapse-item__content
{
padding-bottom
:
0
;
}
src/styles/verticalManages.less
View file @
918db535
.system-manage-container{
.system-manage-container {
padding: 20px;
background: rgba(157, 188, 218, 0.1);
height: 100%;
display: flex;
flex-direction: column;
box-sizing: border-box;
}
.system-manage-header {
background: rgba(255, 255, 255, 0.9);
border-radius: 8px;
padding: 12px 20px 0;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
.header-left {
flex: 1;
width: 0;
.el-input,
.el-select {
width: 220px;
}
}
}
.system-manage-content {
background: rgba(255, 255, 255, 0.9);
border-radius: 8px;
padding: 20px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.manage-content {
flex: 1;
height: 0;
.common-table {
height: 100%;
display: flex;
flex-direction: column;
.table-container {
flex: 1;
height: 0;
display: flex;
flex-direction: column;
.el-table {
flex: 1;
height: 0;
}
}
}
}
.manage {
&-container {
width: 100%;
height: 100%;
padding: 20px;
padding: 20px;
box-sizing: border-box;
display: flex;
flex-direction: column;
background: rgba(157, 188, 218, 0.1);
background: rgba(157, 188, 218, 0.1);
}
&-wrap {
width: 100%;
height: 100%;
height: 100%;
display: flex;
display: flex;
flex-direction: column;
flex-direction: column;
box-sizing: border-box;
}
.system-manage-header{
background: rgba(255, 255, 255, 0.9);
background: rgba(255, 255, 255, 0.9);
border-radius: 8px;
border-radius: 8px;
padding: 12px
20px 0
;
padding: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
&-header {
display: flex;
display: flex;
justify-content: space-between;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
margin-bottom: 10px;
.header-left{
}
&-content {
flex: 1;
height: 0;
display: flex;
flex-direction: column;
.common-table {
height: 100%;
display: flex;
flex-direction: column;
.table-container {
flex: 1;
flex: 1;
width: 0;
height: 0;
.el-input, .el-select{
display: flex;
width: 220px;
flex-direction: column;
.el-table {
flex: 1;
height: 0;
}
}
}
}
}
}
}
}
.system-manage-content{
background: rgba(255, 255, 255, 0.9);
::v-deep.add-project {
border-radius: 8px;
&-container {
width: 100%;
height: 100%;
padding: 20px;
padding: 20px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
box-sizing: border-box;
}
display: flex;
.manage-content{
flex-direction: column;
.el-collapse-item__header {
color: var(--el-color-primary);
}
}
&-header {
display: flex;
justify-content: space-between;
}
&-content {
flex: 1;
flex: 1;
height: 0;
height: 0;
.common-table{
display: flex;
height: 100%;
flex-direction: column;
display: flex;
.tabs-content {
flex-direction: column;
flex: 1;
.table-container{
height: 0;
flex: 1;
height: 0;
display: flex;
flex-direction: column;
.el-table{
flex: 1;
height: 0;
}
}
}
}
}
.el-tabs {
.manage{
height: 100%;
&-container{
width: 100%;
height: 100%;
padding: 20px;
box-sizing: border-box;
display: flex;
flex-direction: column;
background: rgba(157, 188, 218, 0.1);
}
}
&-wrap{
.el-tab-pane {
width: 100%;
height: 100%;
height: 100%;
display: flex;
flex-direction: column;
background: rgba(255, 255, 255, 0.9);
border-radius: 8px;
padding: 12px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
}
.tab-content {
&-header{
height: 100%;
overflow: auto;
padding: 0 10px;
.col-title {
height: 24px;
line-height: 24px;
font-weight: bold;
text-align: center;
}
.tab-handle {
margin-bottom: 16px;
display: flex;
display: flex;
justify-content: space-between;
justify-content: flex-end;
align-items: center;
}
.el-table {
margin-bottom: 10px;
margin-bottom: 10px;
}
thead {
&-content{
color: #000;
flex: 1;
th {
height: 0;
background: #f5f7fa;
display: flex;
.cell {
flex-direction: column;
text-align: center;
.common-table{
height: 100%;
display: flex;
flex-direction: column;
.table-container{
flex: 1;
height: 0;
display: flex;
flex-direction: column;
.el-table{
flex: 1;
height: 0;
}
}
}
}
}
}
}
.sums-column {
}
display: flex;
flex-direction: column;
::v-deep.add-project{
justify-content: flex-start;
&-container{
& > div {
width: 100%;
height: 26px;
height: 100%;
line-height: 26px;
padding: 20px;
text-align: center;
box-sizing: border-box;
}
display: flex;
flex-direction: column;
.el-collapse-item__header{
color: var(--el-color-primary);
}
}
}
}
&-header
{
.upload-file-wrap
{
display: flex;
display: flex;
justify-content: space-between;
justify-content: space-between;
}
flex-wrap: wrap;
&-content{
.file-name {
flex: 1;
flex: 1;
height: 0;
width: 0;
display: flex;
color: #409eff;
flex-direction: column;
cursor: pointer;
.tabs-content{
-webkit-background-clip: text;
flex: 1;
white-space: nowrap;
height: 0;
overflow: hidden;
}
text-overflow: ellipsis;
.el-tabs{
height: 100%;
}
}
.el-tab-pane{
.delete-btn {
height: 100%;
cursor: pointer;
color: #f56c6c;
}
}
.tab-content{
}
height: 100%;
.el-select__wrapper {
overflow: auto;
.el-select__selection.is-near {
padding: 0 10px;
max-height: 120px;
.col-title{
overflow: auto;
height: 24px;
line-height: 24px;
font-weight: bold;
text-align: center;
}
.tab-handle{
margin-bottom: 16px;;
display: flex;
justify-content: flex-end;
align-items: center;
}
.el-table{
margin-bottom: 10px;
thead {
color: #000;
th{
background: #f5f7fa;
.cell{
text-align: center;
}
}
}
.sums-column{
display: flex;
flex-direction: column;
justify-content: flex-start;
&>div{
height: 26px;
line-height: 26px;
text-align: center;
}
}
}
.upload-file-wrap{
display: flex;
justify-content: space-between;
flex-wrap: wrap;
.file-name{
flex: 1;
width: 0;
color: #409eff;
cursor: pointer;
-webkit-background-clip: text;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.delete-btn{
cursor: pointer;
color: #F56C6C;
}
}
.el-select__wrapper{
.el-select__selection.is-near{
max-height: 120px;
overflow: auto;
}
}
}
.always-click{
padding: 2px;
font-size: 12px;
cursor: pointer !important;
color: var(--el-color-primary);
font-weight: 500;
font-family: Arial, sans-serif;
display: inline-flex;
align-items: center;
}
.project-tab-content{
padding: 0 20px;
height: 100%;
}
}
}
}
}
.always-click {
padding: 2px;
font-size: 12px;
cursor: pointer !important;
color: var(--el-color-primary);
font-weight: 500;
font-family: Arial, sans-serif;
display: inline-flex;
align-items: center;
}
.project-tab-content {
padding: 0 20px;
height: 100%;
}
}
}
}
::v-deep .el-input{
::v-deep .el-input
{
width: 100% !important;
width: 100% !important;
}
}
.add-dialog{
.add-dialog
{
.el-tree
{
.el-tree
{
width: 100%;
width: 100%;
}
}
}
}
.tree-content {
.tree-content {
overflow: auto;
overflow: auto;
position: relative;
position: relative;
.el-tree {
.el-tree {
// max-height: 700px;
// max-height: 700px;
// overflow-y: auto;
// overflow-y: auto;
// 只有当内容超过700px时才显示滚动条
// 只有当内容超过700px时才显示滚动条
&:not(:hover) {
&:not(:hover) {
scrollbar-width: none;
scrollbar-width: none;
-ms-overflow-style: none;
-ms-overflow-style: none;
&::-webkit-scrollbar {
&::-webkit-scrollbar {
display: none;
display: none;
}
}
}
&:hover {
}
scrollbar-width: thin;
&:hover {
&::-webkit-scrollbar {
scrollbar-width: thin;
display: block;
&::-webkit-scrollbar {
width: 6px
;
display: block
;
}
width: 6px;
&::-webkit-scrollbar-thumb {
}
background-color: rgba(144, 147, 153, 0.3);
&::-webkit-scrollbar-thumb {
border-radius: 3px
;
background-color: rgba(144, 147, 153, 0.3)
;
}
border-radius: 3px;
&::-webkit-scrollbar-track {
}
background-color: transparent;
&::-webkit-scrollbar-track {
}
background-color: transparent;
}
}
}
}
.custom-tree-node {
}
flex: 1;
.custom-tree-node {
display: flex
;
flex: 1
;
align-items: center
;
display: flex
;
justify-content: space-between
;
align-items: center
;
font-size: 14px
;
justify-content: space-between
;
padding-right: 8
px;
font-size: 14
px;
.node-name{
padding-right: 8px;
flex: 1;
.node-name {
width: 0
;
flex: 1
;
-webkit-background-clip: text
;
width: 0
;
white-space: nowrap
;
-webkit-background-clip: text
;
overflow: hidden
;
white-space: nowrap
;
text-overflow: ellipsis
;
overflow: hidden
;
}
text-overflow: ellipsis;
.node-key{
}
font-size: 12px;
.node-key {
color: #969696
;
font-size: 12px
;
}
color: #969696;
}
}
}
}
.add-project-header {
}
.add-project-header {
margin-bottom: 10px;
margin-bottom: 10px;
padding-left: 24px;
.header-left {
&:hover {
color: #409eff;
cursor: pointer;
}
// position: relative;
// &::before {
// position: absolute;
// content: "<";
// left: -26px;
// top: -3px;
// width: 2px;
// height: 19px;
// font-size: 19px;
// }
}
}
}
::v-deep.el-form-item {
::v-deep.el-form-item {
display: block;
display: block;
.el-form-item__label {
.el-form-item__label {
width: auto !important;
width: auto !important;
}
color: #333;
// font-weight: 600;
}
}
}
.tab-handle {
.tab-handle {
margin-bottom: 10px;
margin-bottom: 10px;
text-align: right;
text-align: right;
...
@@ -293,8 +314,6 @@
...
@@ -293,8 +314,6 @@
}
}
}
}
.add-project-header {
.add-project-header {
display: flex;
display: flex;
justify-content: space-between;
justify-content: space-between;
...
@@ -302,14 +321,30 @@
...
@@ -302,14 +321,30 @@
margin-bottom: 24px;
margin-bottom: 24px;
}
}
// 动态表格样式适配
::v-deep .el-collapse-item {
:deep(.el-collapse-item__content) {
.el-collapse-item__title {
// padding: 16px;
color: #333;
}
font-size: 16px;
::v-deep .el-collapse-item__title{
flex: auto;
flex: auto;
text-align: left;
text-align: left;
padding-left: 16px;
position: relative;
&::after {
position: absolute;
content: "";
left: 0;
top: 15px;
width: 2px;
height: 19px;
background-color: #409eff;
}
}
.el-icon {
font-size: 16px;
}
}
}
:deep(.el-table) {
:deep(.el-table) {
--el-table-border-color: #ebeef5;
--el-table-border-color: #ebeef5;
width: 100%;
width: 100%;
...
@@ -317,4 +352,7 @@
...
@@ -317,4 +352,7 @@
:deep(.el-upload) {
:deep(.el-upload) {
width: 100%;
width: 100%;
}
}
\ No newline at end of file
::v-deep .el-collapse-item__content {
padding-bottom: 0;
}
src/views/investingManage/decisionAdd.vue
View file @
918db535
...
@@ -11,660 +11,857 @@
...
@@ -11,660 +11,857 @@
</div>
</div>
</div>
</div>
<div
class=
"tabs-content"
>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content"
>
<el-collapse
v-model=
"activeCollapse"
>
<div
class=
"tab-content"
>
<el-tabs
v-model=
"pageActiveName"
type=
"border-card"
>
<el-form
:model=
"formData"
:label-width=
"200"
:disabled=
"isPreview"
>
<el-tab-pane
label=
"基础信息"
name=
"基础信息"
>
<el-collapse
v-model=
"activeCollapse"
>
<div
class=
"project-tab-content"
>
<!-- 1. 项目基本信息 -->
<el-form
<el-collapse-item
title=
"项目基本信息"
name=
"项目基本信息"
>
:model=
"formData"
<el-row
:gutter=
"20"
>
:label-width=
"200"
<el-col
:span=
"8"
>
:disabled=
"isPreview"
<el-form-item
label=
"项目名称"
required
>
>
<el-select
<!-- 1. 项目基本信息 -->
v-model=
"formData.projectId"
<el-collapse-item
title=
"项目基本信息"
name=
"项目基本信息"
>
placeholder=
"请选择项目名称"
<el-row
:gutter=
"20"
>
no-data-text=
"暂无数据"
<el-col
:span=
"8"
>
@
change=
"changeProject"
<el-form-item
label=
"项目名称"
required
>
>
<el-select
<el-option
v-model=
"formData.projectId"
v-for=
"item in projectList"
placeholder=
"请选择项目名称"
:key=
"item.id"
no-data-text=
"暂无数据"
:label=
"item.projectName"
@
change=
"changeProject"
:value=
"item.id"
>
></el-option>
<el-option
</el-select>
v-for=
"item in projectList"
</el-form-item>
:key=
"item.id"
</el-col>
:label=
"item.projectName"
<el-col
:span=
"8"
>
:value=
"item.id"
<el-form-item
label=
"项目编号"
>
></el-option>
<el-input
</el-select>
v-model=
"formData.projectCode"
</el-form-item>
placeholder=
"请输入项目编号"
</el-col>
/>
<el-col
:span=
"8"
>
</el-form-item>
<el-form-item
label=
"项目编号"
>
</el-col>
<el-input
<el-col
:span=
"8"
>
v-model=
"formData.projectCode"
<el-form-item
label=
"是否再决策"
>
placeholder=
"请输入项目编号"
<CommonSelector
/>
:radio=
"true"
</el-form-item>
v-model=
"formData.isReDecision"
</el-col>
dictName=
"sf"
<el-col
:span=
"8"
>
/>
<el-form-item
label=
"是否再决策"
>
</el-form-item>
<CommonSelector
</el-col>
:radio=
"true"
<el-col
:span=
"8"
>
v-model=
"formData.isReDecision"
<el-form-item
label=
"项目外文名称"
>
dictName=
"sf"
<el-input
/>
v-model=
"formData.projectForeignName"
</el-form-item>
placeholder=
"请输入项目外文名称"
</el-col>
/>
<el-col
:span=
"8"
>
</el-form-item>
<el-form-item
label=
"项目外文名称"
>
</el-col>
<el-input
<el-col
:span=
"8"
>
v-model=
"formData.projectForeignName"
<el-form-item
label=
"是否能建联合体项目"
>
placeholder=
"请输入项目外文名称"
<CommonSelector
/>
:radio=
"true"
</el-form-item>
v-model=
"formData.isUnionProject"
</el-col>
dictName=
"sf"
<el-col
:span=
"8"
>
/>
<el-form-item
label=
"是否能建联合体项目"
>
</el-form-item>
<CommonSelector
</el-col>
:radio=
"true"
<el-col
:span=
"8"
>
v-model=
"formData.isUnionProject"
<el-form-item
label=
"投资主体"
>
dictName=
"sf"
<el-input
/>
v-model=
"formData.investmentSubject"
</el-form-item>
placeholder=
"请输入投资主体"
</el-col>
/>
<el-col
:span=
"8"
>
</el-form-item>
<el-form-item
label=
"投资主体"
>
</el-col>
<el-input
<el-col
:span=
"8"
>
v-model=
"formData.investmentSubject"
<el-form-item
label=
"是否一体化子项目"
>
placeholder=
"请输入投资主体"
<CommonSelector
/>
:radio=
"true"
</el-form-item>
v-model=
"formData.isIntegratedSubProject"
</el-col>
dictName=
"sf"
<el-col
:span=
"8"
>
/>
<el-form-item
label=
"是否一体化子项目"
>
</el-form-item>
<CommonSelector
</el-col>
:radio=
"true"
<el-col
:span=
"8"
>
v-model=
"formData.isIntegratedSubProject"
<el-form-item
label=
"直属企业"
>
dictName=
"sf"
<el-input
/>
v-model=
"formData.directEnterprise"
</el-form-item>
placeholder=
"请输入直属企业"
</el-col>
/>
<el-col
:span=
"8"
>
</el-form-item>
<el-form-item
label=
"直属企业"
>
</el-col>
<el-input
<el-col
:span=
"8"
>
v-model=
"formData.directEnterprise"
<el-form-item
label=
"是否能建重大或重要投资项目"
>
placeholder=
"请输入直属企业"
<CommonSelector
/>
:radio=
"true"
</el-form-item>
v-model=
"formData.isImportantInvestProject"
</el-col>
dictName=
"sf"
<el-col
:span=
"8"
>
/>
<el-form-item
label=
"是否能建重大或重要投资项目"
>
</el-form-item>
<CommonSelector
</el-col>
:radio=
"true"
<el-col
:span=
"8"
>
v-model=
"formData.isImportantInvestProject"
<el-form-item
label=
"决策审批单位"
>
dictName=
"sf"
<el-input
/>
v-model=
"formData.approvalUnit"
</el-form-item>
placeholder=
"请输入决策审批单位"
</el-col>
/>
<el-col
:span=
"8"
>
</el-form-item>
<el-form-item
label=
"决策审批单位"
>
</el-col>
<el-input
<el-col
:span=
"8"
>
v-model=
"formData.approvalUnit"
<el-form-item
label=
"财务报表类型"
>
placeholder=
"请输入决策审批单位"
<el-input
/>
v-model=
"formData.financialReportType"
</el-form-item>
placeholder=
"请输入财务报表类型"
</el-col>
/>
<el-col
:span=
"8"
>
</el-form-item>
<el-form-item
label=
"财务报表类型"
>
</el-col>
<el-input
<el-col
:span=
"8"
>
v-model=
"formData.financialReportType"
<el-form-item
label=
"政府(核准、备案)审批级别"
>
placeholder=
"请输入财务报表类型"
<el-input
/>
v-model=
"formData.governmentApprovalLevel"
</el-form-item>
placeholder=
"请输入审批级别"
</el-col>
/>
<el-col
:span=
"8"
>
</el-form-item>
<el-form-item
label=
"政府(核准、备案)审批级别"
>
</el-col>
<el-input
<el-col
:span=
"8"
>
v-model=
"formData.governmentApprovalLevel"
<el-form-item
label=
"是否自主决策"
>
placeholder=
"请输入审批级别"
<CommonSelector
/>
:radio=
"true"
</el-form-item>
v-model=
"formData.isIndependentDecision"
</el-col>
dictName=
"sf"
<el-col
:span=
"8"
>
/>
<el-form-item
label=
"是否自主决策"
>
</el-form-item>
<CommonSelector
</el-col>
:radio=
"true"
<el-col
:span=
"8"
>
v-model=
"formData.isIndependentDecision"
<el-form-item
label=
"主业/非主业"
>
dictName=
"sf"
<el-select
/>
v-model=
"formData.businessType"
</el-form-item>
placeholder=
"请选择"
</el-col>
>
<el-col
:span=
"8"
>
<el-option
label=
"主业"
value=
"主业"
></el-option>
<el-form-item
label=
"主业/非主业"
>
<el-option
label=
"非主业"
value=
"非主业"
></el-option>
<el-select
</el-select>
v-model=
"formData.businessType"
</el-form-item>
placeholder=
"请选择"
</el-col>
>
<el-col
:span=
"8"
>
<el-option
label=
"主业"
value=
"主业"
></el-option>
<el-form-item
label=
"联系人"
>
<el-option
<el-input
label=
"非主业"
v-model=
"formData.contactPerson"
value=
"非主业"
placeholder=
"请输入联系人"
></el-option>
/>
</el-select>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"联系电话"
>
<el-form-item
label=
"联系人"
>
<el-input
<el-input
v-model=
"formData.contactPhone"
v-model=
"formData.contactPerson"
placeholder=
"请输入联系电话"
placeholder=
"请输入联系人"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
<el-col
:span=
"8"
>
</el-collapse-item>
<el-form-item
label=
"联系电话"
>
<el-input
v-model=
"formData.contactPhone"
placeholder=
"请输入联系电话"
/>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<!-- 2. 项目所在地 -->
<!-- 2. 项目所在地 -->
<el-collapse-item
title=
"项目所在地"
name=
"项目所在地"
>
<el-collapse-item
title=
"项目所在地"
name=
"项目所在地"
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"境内/外"
>
<el-form-item
label=
"境内/外"
>
<el-select
<el-select
v-model=
"formData.domesticOverseas"
v-model=
"formData.domesticOverseas"
placeholder=
"请选择"
placeholder=
"请选择"
>
>
<el-option
label=
"境内"
value=
"境内"
></el-option>
<el-option
label=
"境内"
value=
"境内"
></el-option>
<el-option
label=
"境外"
value=
"境外"
></el-option>
<el-option
label=
"境外"
value=
"境外"
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"省(境内)/洲际(境外)"
>
<el-form-item
label=
"省(境内)/洲际(境外)"
>
<el-input
<el-input
v-model=
"formData.provinceContinent"
v-model=
"formData.provinceContinent"
placeholder=
"请输入"
placeholder=
"请输入"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"地市(境内)/国家(境外)"
>
<el-form-item
label=
"地市(境内)/国家(境外)"
>
<el-input
<el-input
v-model=
"formData.cityCountry"
v-model=
"formData.cityCountry"
placeholder=
"请输入"
placeholder=
"请输入"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"区县(境内)/国家(境外)"
>
<el-form-item
label=
"区县(境内)/国家(境外)"
>
<el-input
<el-input
v-model=
"formData.districtCountry"
v-model=
"formData.districtCountry"
placeholder=
"请输入"
placeholder=
"请输入"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"项目区域"
>
<el-form-item
label=
"项目区域"
>
<el-input
<el-input
v-model=
"formData.projectArea"
v-model=
"formData.projectArea"
placeholder=
"请输入项目区域"
placeholder=
"请输入项目区域"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"是否一带一路沿线国家"
>
<el-form-item
label=
"是否一带一路沿线国家"
>
<CommonSelector
<CommonSelector
:radio=
"true"
:radio=
"true"
v-model=
"formData.isBeltRoadCountry"
v-model=
"formData.isBeltRoadCountry"
dictName=
"sf"
dictName=
"sf"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
</el-collapse-item>
</el-collapse-item>
<!-- 3. 计量币种 -->
<!-- 3. 计量币种 -->
<el-collapse-item
title=
"计量币种"
name=
"计量币种"
>
<el-collapse-item
title=
"计量币种"
name=
"计量币种"
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"币种"
>
<el-form-item
label=
"币种"
>
<el-select
<el-select
v-model=
"formData.currencyType"
v-model=
"formData.currencyType"
placeholder=
"请选择币种"
placeholder=
"请选择币种"
>
>
<el-option
label=
"人民币"
value=
"CNY"
></el-option>
<el-option
label=
"人民币"
value=
"CNY"
></el-option>
<el-option
label=
"美元"
value=
"USD"
></el-option>
<el-option
label=
"美元"
value=
"USD"
></el-option>
<el-option
label=
"欧元"
value=
"EUR"
></el-option>
<el-option
label=
"欧元"
value=
"EUR"
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"汇率"
>
<el-form-item
label=
"汇率"
>
<el-input
<el-input
v-model=
"formData.exchangeRate"
v-model=
"formData.exchangeRate"
placeholder=
"请输入汇率"
placeholder=
"请输入汇率"
:precision=
"6"
:precision=
"6"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
</el-collapse-item>
</el-collapse-item>
<!-- 4. 实施时间 -->
<!-- 4. 实施时间 -->
<el-collapse-item
title=
"实施时间"
name=
"实施时间"
>
<el-collapse-item
title=
"实施时间"
name=
"实施时间"
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"项目建设期 (月)"
>
<el-form-item
label=
"项目建设期 (月)"
>
<el-input
<el-input
v-model=
"formData.constructionPeriod"
v-model=
"formData.constructionPeriod"
placeholder=
"请输入"
placeholder=
"请输入"
type=
"number"
type=
"number"
min=
"0"
min=
"0"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"运营年限 (年)"
>
<el-form-item
label=
"运营年限 (年)"
>
<el-input
<el-input
v-model=
"formData.operationYears"
v-model=
"formData.operationYears"
placeholder=
"请输入"
placeholder=
"请输入"
type=
"number"
type=
"number"
min=
"0"
min=
"0"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"项目合作期 (年)"
>
<el-form-item
label=
"项目合作期 (年)"
>
<el-input
<el-input
v-model=
"formData.cooperationPeriod"
v-model=
"formData.cooperationPeriod"
placeholder=
"请输入"
placeholder=
"请输入"
type=
"number"
type=
"number"
min=
"0"
min=
"0"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"项目开工时间(预计)"
>
<el-form-item
label=
"项目开工时间(预计)"
>
<el-date-picker
<el-date-picker
v-model=
"formData.plannedStartDate"
v-model=
"formData.plannedStartDate"
type=
"date"
type=
"date"
placeholder=
"请选择"
placeholder=
"请选择"
value-format=
"YYYY-MM-DD"
value-format=
"YYYY-MM-DD"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"项目交工时间(预计)"
>
<el-form-item
label=
"项目交工时间(预计)"
>
<el-date-picker
<el-date-picker
v-model=
"formData.plannedCompletionDate"
v-model=
"formData.plannedCompletionDate"
type=
"date"
type=
"date"
placeholder=
"请选择"
placeholder=
"请选择"
value-format=
"YYYY-MM-DD"
value-format=
"YYYY-MM-DD"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
</el-collapse-item>
</el-collapse-item>
<!-- 5. 投资分类 -->
<!-- 5. 投资分类 -->
<el-collapse-item
title=
"投资分类"
name=
"投资分类"
>
<el-collapse-item
title=
"投资分类"
name=
"投资分类"
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-tabs
v-model=
"activeInvestTab"
>
<el-tabs
v-model=
"activeInvestTab"
>
<el-tab-pane
label=
"投资属性分类"
name=
"attribute"
>
<el-tab-pane
label=
"投资属性分类"
name=
"attribute"
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"一级分类"
>
<el-form-item
label=
"一级分类"
>
<el-input
<el-input
v-model=
"formData.investAttributeFirst"
v-model=
"formData.investAttributeFirst"
placeholder=
"请输入"
placeholder=
"请输入"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"二级分类"
>
<el-form-item
label=
"二级分类"
>
<el-input
<el-input
v-model=
"formData.investAttributeSecond"
v-model=
"formData.investAttributeSecond"
placeholder=
"请输入"
placeholder=
"请输入"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"投资板块"
>
<el-form-item
label=
"投资板块"
>
<el-input
<el-input
v-model=
"formData.investPlate1"
v-model=
"formData.investPlate1"
placeholder=
"请输入"
placeholder=
"请输入"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"投资板块"
>
<el-form-item
label=
"投资板块"
>
<el-input
<el-input
v-model=
"formData.investPlate2"
v-model=
"formData.investPlate2"
placeholder=
"请输入"
placeholder=
"请输入"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"投资目的分类"
name=
"purpose"
>
<el-tab-pane
label=
"投资目的分类"
name=
"purpose"
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"一级分类"
>
<el-form-item
label=
"一级分类"
>
<el-input
<el-input
v-model=
"formData.investPurposeFirst"
v-model=
"formData.investPurposeFirst"
placeholder=
"请输入"
placeholder=
"请输入"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"2+9布局分类"
>
<el-form-item
label=
"2+9布局分类"
>
<el-input
<el-input
v-model=
"formData.layout29"
v-model=
"formData.layout29"
placeholder=
"请输入"
placeholder=
"请输入"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"二级分类"
>
<el-form-item
label=
"二级分类"
>
<el-input
<el-input
v-model=
"formData.investPurposeSecond"
v-model=
"formData.investPurposeSecond"
placeholder=
"请输入"
placeholder=
"请输入"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"国民经济行业"
>
<el-form-item
label=
"国民经济行业"
>
<el-input
<el-input
v-model=
"formData.nationalEconomicIndustry"
v-model=
"formData.nationalEconomicIndustry"
placeholder=
"请输入"
placeholder=
"请输入"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"四新分类"
>
<el-form-item
label=
"四新分类"
>
<el-input
<el-input
v-model=
"formData.fourNewClassification"
v-model=
"formData.fourNewClassification"
placeholder=
"请输入"
placeholder=
"请输入"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
</el-tab-pane>
</el-tab-pane>
</el-tabs>
</el-tabs>
</el-col>
</el-col>
</el-row>
</el-row>
</el-collapse-item>
</el-collapse-item>
<!-- 6. 特别关注、特别监管类等信息 -->
<!-- 6. 特别关注、特别监管类等信息 -->
<el-collapse-item
<el-collapse-item
title=
"特别关注、特别监管类等信息"
title=
"特别关注、特别监管类等信息"
name=
"特别关注、特别监管类等信息"
name=
"特别关注、特别监管类等信息"
>
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"是否须报国家发展改革委和商务部核准"
>
<el-form-item
<CommonSelector
label=
"是否须报国家发展改革委和商务部核准"
:radio=
"true"
>
v-model=
"formData.isReportedToNDRC"
<CommonSelector
dictName=
"sf"
:radio=
"true"
/>
v-model=
"formData.isReportedToNDRC"
</el-form-item>
dictName=
"sf"
</el-col>
/>
<el-col
:span=
"8"
>
</el-form-item>
<el-form-item
label=
"是否国家领导见签"
>
</el-col>
<CommonSelector
<el-col
:span=
"8"
>
:radio=
"true"
<el-form-item
label=
"是否国家领导见签"
>
v-model=
"formData.isLeaderSigned"
<CommonSelector
dictName=
"sf"
:radio=
"true"
/>
v-model=
"formData.isLeaderSigned"
</el-form-item>
dictName=
"sf"
</el-col>
/>
<el-col
:span=
"8"
>
</el-form-item>
<el-form-item
label=
"是否境内特别监管类"
>
</el-col>
<CommonSelector
<el-col
:span=
"8"
>
:radio=
"true"
<el-form-item
label=
"是否境内特别监管类"
>
v-model=
"formData.isDomesticSpecialSupervision"
<CommonSelector
dictName=
"sf"
:radio=
"true"
/>
v-model=
"formData.isDomesticSpecialSupervision"
</el-form-item>
dictName=
"sf"
</el-col>
/>
<el-col
:span=
"8"
>
</el-form-item>
<el-form-item
label=
"是否列入国资委负面清单"
>
</el-col>
<CommonSelector
<el-col
:span=
"8"
>
:radio=
"true"
<el-form-item
label=
"是否列入国资委负面清单"
>
v-model=
"formData.isInSASACNegaticveList"
<CommonSelector
dictName=
"sf"
:radio=
"true"
/>
v-model=
"formData.isInSASACNegaticveList"
</el-form-item>
dictName=
"sf"
</el-col>
/>
</el-row>
</el-form-item>
</el-collapse-item>
</el-col>
</el-row>
</el-collapse-item>
<!-- 7. 建设规模(实物量指标) -->
<!-- 7. 建设规模(实物量指标) -->
<el-collapse-item
<el-collapse-item
title=
"建设规模(实物量指标)"
title=
"建设规模(实物量指标)"
name=
"建设规模(实物量指标)"
name=
"建设规模(实物量指标)"
>
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
" "
>
<el-form-item
label=
" "
>
<DynamicTable
<DynamicTable
:showAddButton=
"!isPreview"
:showAddButton=
"!isPreview"
:columns=
"constructionScaleColumns"
:columns=
"constructionScaleColumns"
:disabled=
"isPreview"
:disabled=
"isPreview"
v-model=
"formData.constructionScaleList"
v-model=
"formData.constructionScaleList"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
</el-collapse-item>
</el-collapse-item>
<!-- 8. 股东信息 -->
<!-- 8. 股东信息 -->
<el-collapse-item
title=
"股东信息"
name=
"股东信息"
>
<el-collapse-item
title=
"股东信息"
name=
"股东信息"
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
" "
>
<el-form-item
label=
" "
>
<DynamicTable
<DynamicTable
:showAddButton=
"!isPreview"
:showAddButton=
"!isPreview"
:columns=
"shareholderColumns"
:columns=
"shareholderColumns"
:disabled=
"isPreview"
:disabled=
"isPreview"
v-model=
"formData.shareholderList"
v-model=
"formData.shareholderList"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
</el-collapse-item>
</el-collapse-item>
<!-- 9. 我方担保及股权融资情况 -->
<!-- 9. 我方担保及股权融资情况 -->
<el-collapse-item
<el-collapse-item
title=
"我方担保及股权融资情况"
title=
"我方担保及股权融资情况"
name=
"我方担保及股权融资情况"
name=
"我方担保及股权融资情况"
>
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"我方负责的股权融资金额(万元)"
>
<el-form-item
label=
"我方负责的股权融资金额(万元)"
>
<el-input
<el-input
v-model=
"formData.equityFinancingAmount"
v-model=
"formData.equityFinancingAmount"
placeholder=
"请输入"
placeholder=
"请输入"
type=
"number"
type=
"number"
:precision=
"2"
:precision=
"2"
min=
"0"
min=
"0"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"融资成本(%)"
>
<el-form-item
label=
"融资成本(%)"
>
<el-input
<el-input
v-model=
"formData.equityFinancingCost"
v-model=
"formData.equityFinancingCost"
placeholder=
"请输入"
placeholder=
"请输入"
type=
"number"
type=
"number"
:precision=
"2"
:precision=
"2"
min=
"0"
min=
"0"
max=
"100"
max=
"100"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"期限(年)"
>
<el-form-item
label=
"期限(年)"
>
<el-input
<el-input
v-model=
"formData.equityFinancingTerm"
v-model=
"formData.equityFinancingTerm"
placeholder=
"请输入"
placeholder=
"请输入"
type=
"number"
type=
"number"
min=
"0"
min=
"0"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"担保金额(万元)"
>
<el-form-item
label=
"担保金额(万元)"
>
<el-input
<el-input
v-model=
"formData.guaranteeAmount"
v-model=
"formData.guaranteeAmount"
placeholder=
"请输入"
placeholder=
"请输入"
type=
"number"
type=
"number"
:precision=
"2"
:precision=
"2"
min=
"0"
min=
"0"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
</el-collapse-item>
</el-collapse-item>
<!-- 10. 我方担保及债权融资情况 -->
<!-- 10. 我方担保及债权融资情况 -->
<el-collapse-item
<el-collapse-item
title=
"我方担保及债权融资情况"
title=
"我方担保及债权融资情况"
name=
"我方担保及债权融资情况"
name=
"我方担保及债权融资情况"
>
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
" "
>
<el-form-item
label=
" "
>
<DynamicTable
<DynamicTable
:showAddButton=
"!isPreview"
:showAddButton=
"!isPreview"
:columns=
"debtFinancingColumns"
:columns=
"debtFinancingColumns"
:disabled=
"isPreview"
:disabled=
"isPreview"
v-model=
"formData.debtFinancingList"
v-model=
"formData.debtFinancingList"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
</el-collapse-item>
</el-collapse-item>
<!-- 11. 项目内容及必要性 -->
<!-- 11. 项目内容及必要性 -->
<el-collapse-item
<el-collapse-item
title=
"项目内容及必要性"
title=
"项目内容及必要性"
name=
"项目内容及必要性"
name=
"项目内容及必要性"
>
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"建设内容及规模"
>
<el-form-item
label=
"建设内容及规模"
>
<el-input
<el-input
v-model=
"formData.constructionContent"
v-model=
"formData.constructionContent"
type=
"textarea"
type=
"textarea"
rows=
"4"
rows=
"4"
placeholder=
"请输入"
placeholder=
"请输入"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"项目必要性"
>
<el-form-item
label=
"项目必要性"
>
<el-input
<el-input
v-model=
"formData.projectNecessity"
v-model=
"formData.projectNecessity"
type=
"textarea"
type=
"textarea"
rows=
"4"
rows=
"4"
placeholder=
"请输入"
placeholder=
"请输入"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"其他说明"
>
<el-form-item
label=
"其他说明"
>
<el-input
<el-input
v-model=
"formData.otherDescription"
v-model=
"formData.otherDescription"
type=
"textarea"
type=
"textarea"
rows=
"4"
rows=
"4"
placeholder=
"请输入"
placeholder=
"请输入"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
</el-collapse-item>
</el-collapse-item>
<!-- 12. 风险管理 -->
<!-- 12. 风险管理 -->
<el-collapse-item
title=
"风险管理"
name=
"风险管理"
>
<el-collapse-item
title=
"风险管理"
name=
"风险管理"
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
" "
>
<el-form-item
label=
" "
>
<DynamicTable
<DynamicTable
:showAddButton=
"!isPreview"
:showAddButton=
"!isPreview"
:columns=
"riskManagementColumns"
:columns=
"riskManagementColumns"
:disabled=
"isPreview"
:disabled=
"isPreview"
v-model=
"formData.riskManagementList"
v-model=
"formData.riskManagementList"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
</el-collapse-item>
</el-collapse-item>
<!-- 13. 里程碑节点 -->
<!-- 13. 里程碑节点 -->
<el-collapse-item
title=
"里程碑节点"
name=
"里程碑节点"
>
<el-collapse-item
title=
"里程碑节点"
name=
"里程碑节点"
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
" "
>
<el-form-item
label=
" "
>
<DynamicTable
<DynamicTable
:showAddButton=
"!isPreview"
:showAddButton=
"!isPreview"
:columns=
"milestoneColumns"
:columns=
"milestoneColumns"
:disabled=
"isPreview"
:disabled=
"isPreview"
v-model=
"formData.milestoneList"
v-model=
"formData.milestoneList"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"24"
style=
"margin-top: 20px"
>
<el-col
:span=
"24"
style=
"margin-top: 20px"
>
<el-form-item
label=
"里程碑计划审批表"
>
<el-form-item
label=
"里程碑计划审批表"
>
<FileUploader
<FileUploader
v-model=
"formData.milestoneApprovalFile"
v-model=
"formData.milestoneApprovalFile"
/>
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
</el-collapse-item>
</el-collapse-item>
<!-- 14. 投决申报材料 -->
<el-collapse-item
title=
"投决申报材料"
name=
"投决申报材料"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"可研材料"
>
<FileUploader
v-model=
"formData.feasibilityStudyFile"
/>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
label=
"经济指标初步测算资料"
>
<FileUploader
v-model=
"formData.economicIndicatorFile"
/>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
label=
"补充相关支撑材料"
>
<FileUploader
v-model=
"formData.supplementarySupportFile"
/>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
label=
"其他相关支撑材料"
>
<FileUploader
v-model=
"formData.otherSupportFile"
/>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
label=
"上会议案"
>
<FileUploader
v-model=
"formData.meetingProposalFile"
/>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
</el-form>
</div>
</el-tab-pane>
<el-tab-pane
label=
"财务评价"
name=
"财务评价"
>
<div
class=
"project-tab-content"
>
<FinancialTable
v-model=
"formData.cwpj"
:is-preview=
"isPreview"
/>
<!-- 14. 投决申报材料 -->
<el-collapse-item
title=
"项目可行性"
name=
"项目可行性"
>
<el-collapse-item
title=
"投决申报材料"
name=
"投决申报材料"
>
<el-tabs
v-model=
"kxxName"
>
<el-row
:gutter=
"20"
>
<el-tab-pane
<el-col
:span=
"24"
>
label=
"项目投资现金流量表"
<el-form-item
label=
"可研材料"
>
name=
"项目投资现金流量表"
<FileUploader
v-model=
"formData.feasibilityStudyFile"
/>
>
</el-form-item>
<!-- 测试数据 -->
</el-col>
<!-- {{
<el-col
:span=
"24"
>
formData.jzymljsh?.tableData?.length > 0 &&
<el-form-item
label=
"经济指标初步测算资料"
>
formData.jzymljsh.tableData[0]
<FileUploader
}} -->
v-model=
"formData.economicIndicatorFile"
<FinancialTable
/>
v-model=
"formData.jzymljsh"
</el-form-item>
:is-preview=
"isPreview"
</el-col>
/>
<el-col
:span=
"24"
>
</el-tab-pane>
<el-form-item
label=
"补充相关支撑材料"
>
<el-tab-pane
<FileUploader
label=
"项目资本金现金流量表"
v-model=
"formData.supplementarySupportFile"
name=
"项目资本金现金流量表"
/>
>
项目资本金现金流量表
</el-tab-pane
</el-form-item>
>
</el-col>
<el-tab-pane
<el-col
:span=
"24"
>
label=
"投资各方现金流量表"
<el-form-item
label=
"其他相关支撑材料"
>
name=
"投资各方现金流量表"
<FileUploader
v-model=
"formData.otherSupportFile"
/>
>
投资各方现金流量表
</el-tab-pane
</el-form-item>
>
</el-col>
<el-tab-pane
label=
"利润表"
name=
"利润表"
<el-col
:span=
"24"
>
>
利润表
</el-tab-pane
<el-form-item
label=
"上会议案"
>
>
<FileUploader
v-model=
"formData.meetingProposalFile"
/>
</el-tabs>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
</el-collapse-item>
</el-collapse>
</el-form>
<el-col
:span=
"24"
style=
"margin-top: 20px"
>
</div>
投屏报告以及测试表
</div>
<FileUploader
v-model=
"formData.milestoneApprovalFile"
/>
</el-col>
</div>
</el-tab-pane>
<el-tab-pane
label=
"决策批复"
name=
"决策批复"
>
<el-collapse-item
title=
"项目投资总额(全口径)"
name=
"项目投资总额(全口径)"
>
<FinancialTable
v-model=
"formData.tzze"
:is-preview=
"isPreview"
/>
</el-collapse-item>
<el-collapse-item
title=
"财务评价指标(已评审指标请必填)"
name=
"财务评价指标(已评审指标请必填)"
>
<FinancialTable
v-model=
"formData.cwpjzb"
:is-preview=
"isPreview"
/>
</el-collapse-item>
<el-collapse-item
title=
"核心边界条件 "
name=
"核心边界条件 "
>
<el-form-item
label=
" "
>
<DynamicTable
:showAddButton=
"!isPreview"
:columns=
"transferColumns"
:disabled=
"isPreview"
v-model=
"formData.projectGdxxs"
/>
</el-form-item>
</el-collapse-item>
<el-collapse-item
title=
"投资主体审核情况 "
name=
"投资主体审核情况 "
>
<DynamicTable
:showAddButton=
"!isPreview"
:columns=
"shqkColumns"
:disabled=
"isPreview"
v-model=
"formData.projectTzztshqk"
/>
</el-collapse-item>
<el-collapse-item
title=
"项目批复信息 "
name=
"项目批复信息 "
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"最终审批意见"
>
<el-input
v-model=
"formData.projectCode"
placeholder=
"请输入最终审批意见"
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"项目批复时间"
>
<el-input
v-model=
"formData.projectCode"
placeholder=
"请输入项目批复时间"
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"项目批复编号"
>
<el-input
v-model=
"formData.projectCode"
placeholder=
"请输入项目批复编号"
/>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
label=
"未通过主要原因和要求"
>
<el-input
v-model=
"formData.projectCode"
placeholder=
"请输入未通过主要原因和要求"
type=
"textarea"
rows=
"3"
/>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
label=
"批复文件"
>
<FileUploader
v-model=
"formData.pfwj"
/>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item
title=
"审批意见 "
name=
"审批意见 "
>
<DynamicTable
:showAddButton=
"!isPreview"
:columns=
"spyjColumns"
:disabled=
"isPreview"
v-model=
"formData.projectSpyj"
/>
</el-collapse-item>
<el-collapse-item
title=
"其他 "
name=
"其他 "
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"投资主体首次申报时间"
>
<el-input
v-model=
"formData.projectCode"
placeholder=
"请输入投资主体首次申报时间"
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"会签完成时间"
>
<el-input
v-model=
"formData.projectCode"
placeholder=
"请输入会签完成时间"
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"首次发函时间"
>
<el-input
v-model=
"formData.projectCode"
placeholder=
"请输入首次发函时间"
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"补充材料时间"
>
<el-input
v-model=
"formData.projectCode"
placeholder=
"请输入补充材料时间"
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
label=
"审核人"
>
<el-input
v-model=
"formData.projectCode"
placeholder=
"请输入审核人"
/>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
</el-tab-pane>
<el-tab-pane
label=
"申请报告"
name=
"申请报告"
>
申请报告
</el-tab-pane>
</el-tabs>
</el-collapse>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -675,10 +872,14 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue";
...
@@ -675,10 +872,14 @@ import { reactive, ref, onMounted, getCurrentInstance } from "vue";
import
{
useRouter
,
useRoute
}
from
"vue-router"
;
import
{
useRouter
,
useRoute
}
from
"vue-router"
;
import
{
ElMessage
}
from
"element-plus"
;
import
{
ElMessage
}
from
"element-plus"
;
import
DynamicTable
from
"@/components/FormDynamicTable/index.vue"
;
import
DynamicTable
from
"@/components/FormDynamicTable/index.vue"
;
import
FileUploader
from
"@/components/FileUploader/index.vue"
;
import
FileUploader
from
"@/components/FileUploader/index.vue"
;
import
FinancialTable
from
"@/components/FinancialTable.vue"
;
const
pageActiveName
=
ref
(
"基础信息"
);
const
kxxName
=
ref
(
"项目投资现金流量表"
);
// ========== 动态表格列配置 ==========
// 7. 建设规模列配置
const
constructionScaleColumns
=
ref
([
const
constructionScaleColumns
=
ref
([
{
{
prop
:
"indicatorName"
,
prop
:
"indicatorName"
,
...
@@ -753,6 +954,138 @@ const shareholderColumns = ref([
...
@@ -753,6 +954,138 @@ const shareholderColumns = ref([
{
prop
:
"remark"
,
label
:
"备注"
,
type
:
"input"
,
placeholder
:
"请输入备注"
},
{
prop
:
"remark"
,
label
:
"备注"
,
type
:
"input"
,
placeholder
:
"请输入备注"
},
]);
]);
const
transferColumns
=
ref
([
{
prop
:
"njfcgbl"
,
label
:
"业务类型"
,
type
:
"input"
,
headerGroup
:
" "
,
placeholder
:
"请填写能建方持股比例"
,
},
{
prop
:
"szdt"
,
label
:
"数值"
,
type
:
"input"
,
headerGroup
:
"单位工程造价(动态)"
,
placeholder
:
"请填写能建方持股比例情况"
,
},
{
prop
:
"dwdt"
,
label
:
"单位"
,
type
:
"input"
,
headerGroup
:
"单位工程造价(动态)"
,
placeholder
:
"请填写能建方持股比例情况"
,
},
{
prop
:
"zjsz"
,
label
:
"数值"
,
type
:
"input"
,
headerGroup
:
"单位工程造价(静态)"
,
placeholder
:
"请填写能建方持股比例情况"
,
},
{
prop
:
"zjdw"
,
label
:
"单位"
,
type
:
"input"
,
headerGroup
:
"单位工程造价(静态)"
,
placeholder
:
"请填写能建方持股比例情况"
,
},
{
prop
:
"xsfwsz"
,
label
:
"数值"
,
type
:
"input"
,
headerGroup
:
"销售/服务能力"
,
placeholder
:
"请填写能建方持股比例情况"
,
},
{
prop
:
"xsfwdw"
,
label
:
"造价"
,
type
:
"input"
,
headerGroup
:
"销售/服务能力"
,
placeholder
:
"请填写能建方持股比例情况"
,
},
{
prop
:
"fhsz"
,
label
:
"数值"
,
type
:
"input"
,
headerGroup
:
"年均负荷率"
,
placeholder
:
"请填写能建方持股比例情况"
,
},
{
prop
:
"fhdw"
,
label
:
"造价"
,
type
:
"input"
,
headerGroup
:
"年均负荷率"
,
placeholder
:
"请填写能建方持股比例情况"
,
},
{
prop
:
"scfwsz"
,
label
:
"数值"
,
type
:
"input"
,
headerGroup
:
"单位生产/服务总成本"
,
placeholder
:
"请填写能建方持股比例情况"
,
},
{
prop
:
"scfwzj"
,
label
:
"造价"
,
type
:
"input"
,
headerGroup
:
"单位生产/服务总成本"
,
placeholder
:
"请填写能建方持股比例情况"
,
},
]);
const
shqkColumns
=
ref
([
{
prop
:
"shareholderType"
,
label
:
"会议类型"
,
type
:
"input"
,
placeholder
:
"请输入会议类型"
,
},
{
prop
:
"shareholderName"
,
label
:
"会议届次"
,
type
:
"input"
,
placeholder
:
"请输入会议届次"
,
},
{
prop
:
"shareholderName"
,
label
:
"审核时间"
,
type
:
"input"
,
placeholder
:
"请输入审核时间"
,
},
{
prop
:
"shareholderName"
,
label
:
"结论"
,
type
:
"input"
,
placeholder
:
"请输入结论"
,
},
{
prop
:
"shareholderName"
,
label
:
"附件"
,
type
:
"input"
,
placeholder
:
"请输入附件"
,
},
]);
const
spyjColumns
=
ref
([
{
prop
:
"shareholderType"
,
label
:
"类型"
,
type
:
"input"
,
placeholder
:
"请输入类型"
,
},
{
prop
:
"shareholderName"
,
label
:
"审批意见"
,
type
:
"input"
,
placeholder
:
"请输入审批意见"
,
},
{
prop
:
"shareholderName"
,
label
:
"批复意见时间"
,
type
:
"input"
,
placeholder
:
"请输入批复意见时间"
,
},
]);
// 10. 债权融资列配置
// 10. 债权融资列配置
const
debtFinancingColumns
=
ref
([
const
debtFinancingColumns
=
ref
([
{
{
...
@@ -842,6 +1175,7 @@ const activeCollapse = ref([
...
@@ -842,6 +1175,7 @@ const activeCollapse = ref([
"计量币种"
,
"计量币种"
,
"实施时间"
,
"实施时间"
,
"投资分类"
,
"投资分类"
,
"项目可行性"
,
"特别关注、特别监管类等信息"
,
"特别关注、特别监管类等信息"
,
"建设规模(实物量指标)"
,
"建设规模(实物量指标)"
,
"股东信息"
,
"股东信息"
,
...
@@ -938,6 +1272,7 @@ const formData = reactive({
...
@@ -938,6 +1272,7 @@ const formData = reactive({
equityFinancingCost
:
""
,
equityFinancingCost
:
""
,
equityFinancingTerm
:
""
,
equityFinancingTerm
:
""
,
guaranteeAmount
:
""
,
guaranteeAmount
:
""
,
projectGdxxs
:
[],
// 10. 我方担保及债权融资情况 - 动态表格
// 10. 我方担保及债权融资情况 - 动态表格
debtFinancingList
:
[
debtFinancingList
:
[
...
@@ -973,6 +1308,8 @@ const formData = reactive({
...
@@ -973,6 +1308,8 @@ const formData = reactive({
// 其他关联字段
// 其他关联字段
projectName
:
""
,
projectName
:
""
,
// ------------------ 财务评价
jzymljsh
:
{},
});
});
// ========== 业务方法:获取项目列表 ==========
// ========== 业务方法:获取项目列表 ==========
...
@@ -1087,12 +1424,584 @@ const saveClick = () => {
...
@@ -1087,12 +1424,584 @@ const saveClick = () => {
// ========== 辅助方法 ==========
// ========== 辅助方法 ==========
const
backClick
=
()
=>
router
.
back
(
-
1
);
const
backClick
=
()
=>
router
.
back
(
-
1
);
let
initTableData
=
()
=>
{
Object
.
assign
(
formData
,
{
jzymljsh
:
{
// 指标列表
indicatorList
:
[
{
name
:
"现金流入"
,
isTextRow
:
false
,
noTotal
:
false
,
level
:
1
,
},
{
name
:
"现金流出"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"所得税前净现金流量"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"调整所得税"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"所得税后净现金流量"
,
isTextRow
:
false
,
noTotal
:
false
,
},
],
// 时间列表(月度)
dynamicTimeList
:
[
"2021"
,
"2022"
,
"2023"
,
"2024"
,
"2025"
,
"2026"
,
"2027"
,
"2028"
,
"2029"
,
"2030"
,
"2031"
,
"2032"
,
"2033"
,
"2034"
,
"2035"
,
"2036"
,
"2037"
,
"2038"
,
"2039"
,
"2040"
,
"2041"
,
"2042"
,
"2043"
,
"2044"
,
"2045"
,
],
// 表格数据(子组件会自动初始化,父组件可传初始值)
tableData
:
[],
},
tzze
:
{
// 指标列表
indicatorList
:
[
{
name
:
"项目造价构成"
,
isTextRow
:
true
,
noTotal
:
true
,
serialNumber
:
""
,
},
{
name
:
"建安设备费"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
"1"
,
},
{
name
:
"其他费用"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
"2"
,
},
{
name
:
"其中:土地相关费用"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
"2.1"
,
},
{
name
:
"基本预备费"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
"3"
,
},
{
name
:
"建设期利息"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
"4"
,
},
{
name
:
"项目资金构成"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
""
,
},
{
name
:
"项目资本金"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
"1"
,
},
{
name
:
"能建方出资"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
"1.1"
,
},
{
name
:
"外部股东"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
"1.2"
,
},
{
name
:
"贷款"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
"2"
,
},
{
name
:
"其中:非并表项目我方贷款/担保额"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
"2.1"
,
},
{
name
:
"其他出资"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
"3"
,
},
{
name
:
"其中:能建方出资"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
"3.1"
,
},
{
name
:
"单位工程造价"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
"4"
,
},
{
name
:
"批复总投资"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
""
,
},
],
// 时间列表(月度)
dynamicTimeList
:
[
"人民币计价"
],
// 表格数据(子组件会自动初始化,父组件可传初始值)
tableData
:
[],
},
cwpjzb
:
{
// 指标列表
indicatorList
:
[
{
name
:
"项目投资内容部收益率(税前)"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
""
,
},
{
name
:
"项目投资内容部收益率(税后)"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
"1"
,
},
{
name
:
"项目投资动态回收期(税前)"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
"2"
,
},
{
name
:
"能建方内部收益率"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
"2.1"
,
},
{
name
:
"净现金流首次回证年份"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
"3"
,
},
{
name
:
"净利润流首次回证年份"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
"4"
,
},
{
name
:
"可分配利润首次回证年份"
,
isTextRow
:
false
,
noTotal
:
false
,
serialNumber
:
""
,
},
],
// 时间列表(月度)
dynamicTimeList
:
[
"投资评估阶段批复值"
],
// 表格数据(子组件会自动初始化,父组件可传初始值)
tableData
:
[],
},
cwpj
:
{
// 指标列表
indicatorList
:
[
{
name
:
"项目筹资(建设期投资)"
,
level
:
1
,
serialNumber
:
"1"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"项目资本金(股权融资)"
,
level
:
2
,
serialNumber
:
"1.1"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"能建方"
,
level
:
3
,
serialNumber
:
"1.1.1"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"其他社会资本方"
,
level
:
3
,
serialNumber
:
"1.1.2"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"借款(债权融资)"
,
level
:
2
,
serialNumber
:
"1.2"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"银行贷款"
,
level
:
3
,
serialNumber
:
"1.2.1"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"其中:非并表项目我方贷款/担保额"
,
level
:
4
,
serialNumber
:
"1.2.1.1"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"其他出资"
,
level
:
2
,
serialNumber
:
"1.3"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"其中:能建方出资"
,
level
:
3
,
serialNumber
:
"1.3.1"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"筹资总额"
,
level
:
1
,
serialNumber
:
" "
,
isTextRow
:
false
,
noTotal
:
false
,
},
// 2. 经营情况 相关
{
name
:
"经营情况"
,
level
:
1
,
serialNumber
:
"2"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"营业总收入"
,
level
:
2
,
serialNumber
:
"2.1"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"营业总成本"
,
level
:
2
,
serialNumber
:
"2.2"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"其中:营业成本"
,
level
:
3
,
serialNumber
:
"2.2.1"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"其中:折旧及摊销"
,
level
:
3
,
serialNumber
:
"2.2.2"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"利润总额"
,
level
:
2
,
serialNumber
:
"2.3"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"所得税"
,
level
:
2
,
serialNumber
:
"2.4"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"净利润"
,
level
:
2
,
serialNumber
:
"2.5"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"能建方分红(税前)"
,
level
:
2
,
serialNumber
:
"2.6"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"能建方分红(税后)"
,
level
:
2
,
serialNumber
:
"2.7"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"未分配利润"
,
level
:
2
,
serialNumber
:
"2.8"
,
isTextRow
:
false
,
noTotal
:
false
,
},
// 3. 资金偿还 相关
{
name
:
"资金偿还"
,
level
:
1
,
serialNumber
:
"3"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"银行贷款"
,
level
:
2
,
serialNumber
:
"3.1"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"项目贷"
,
level
:
3
,
serialNumber
:
"3.1.1"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"项目贷利息"
,
level
:
3
,
serialNumber
:
"3.1.2"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"其他资金"
,
level
:
2
,
serialNumber
:
"3.2"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"其他资金本金"
,
level
:
3
,
serialNumber
:
"3.2.1"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"其他资金利息(融资费用)"
,
level
:
3
,
serialNumber
:
"3.2.2"
,
isTextRow
:
false
,
noTotal
:
false
,
},
// 4. 项目公司其他财务指标 相关
{
name
:
"项目公司其他财务指标"
,
level
:
1
,
serialNumber
:
"4"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"资产总额(期末值)"
,
level
:
2
,
serialNumber
:
"4.1"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"负债总额(期末值)"
,
level
:
2
,
serialNumber
:
"4.2"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"经营活动产生的现金流净额"
,
level
:
2
,
serialNumber
:
"4.3"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"经营活动产生的现金流入"
,
level
:
3
,
serialNumber
:
"4.3.1"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"经营活动产生的现金流出"
,
level
:
3
,
serialNumber
:
"4.3.2"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"投资活动产生的现金流净额"
,
level
:
2
,
serialNumber
:
"4.4"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"投资活动产生的现金流入"
,
level
:
3
,
serialNumber
:
"4.4.1"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"投资活动产生的现金流出"
,
level
:
3
,
serialNumber
:
"4.4.2"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"筹资活动产生的现金流净额"
,
level
:
2
,
serialNumber
:
"4.5"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"筹资活动产生的现金流入"
,
level
:
3
,
serialNumber
:
"4.5.1"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"筹资活动产生的现金流出"
,
level
:
3
,
serialNumber
:
"4.5.2"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"利息备付率"
,
level
:
2
,
serialNumber
:
"4.6"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"偿债备付率"
,
level
:
2
,
serialNumber
:
"4.7"
,
isTextRow
:
false
,
noTotal
:
false
,
},
{
name
:
"投资回收额"
,
level
:
2
,
serialNumber
:
"4.8"
,
isTextRow
:
false
,
noTotal
:
false
,
},
],
// 时间列表(月度)
dynamicTimeList
:
[
"2021"
,
"2022"
,
"2023"
,
"2024"
,
"2025"
,
"2026"
,
"2027"
,
"2028"
,
"2029"
,
"2030"
,
"2031"
,
"2032"
,
"2033"
,
"2034"
,
"2035"
,
"2036"
,
"2037"
,
"2038"
,
"2039"
,
"2040"
,
"2041"
,
"2042"
,
"2043"
,
"2044"
,
"2045"
,
],
// 表格数据(子组件会自动初始化,父组件可传初始值)
tableData
:
[],
},
});
};
onMounted
(()
=>
{
onMounted
(()
=>
{
getProjectData
();
getProjectData
();
if
(
rcCgqyglId
.
value
)
{
if
(
rcCgqyglId
.
value
)
{
// 编辑/预览:拉取接口数据
// 编辑/预览:拉取接口数据
getJsqtzjcDetail
();
getJsqtzjcDetail
();
}
else
{
initTableData
();
}
}
});
});
</
script
>
</
script
>
...
...
src/views/investingManage/quitAdd.vue
View file @
918db535
...
@@ -19,12 +19,7 @@
...
@@ -19,12 +19,7 @@
<el-collapse-item
title=
"选择类型"
name=
"选择类型"
>
<el-collapse-item
title=
"选择类型"
name=
"选择类型"
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"8"
>
<el-col
:span=
"8"
>
<el-form-item
label=
"请选择登记类型"
>
<el-form-item
label=
"请选择登记类型"
required
>
<!-- <CommonSelector
:radio="true"
v-model="formData.djlx"
dictName="xmtc_djlx"
/> -->
<el-radio-group
v-model=
"formData.djlx"
>
<el-radio-group
v-model=
"formData.djlx"
>
<el-radio
value=
"1"
>
中止
</el-radio>
<el-radio
value=
"1"
>
中止
</el-radio>
<el-radio
value=
"2"
>
重启
</el-radio>
<el-radio
value=
"2"
>
重启
</el-radio>
...
@@ -276,7 +271,11 @@
...
@@ -276,7 +271,11 @@
</el-col>
</el-col>
</el-row>
</el-row>
</el-collapse-item>
</el-collapse-item>
<el-collapse-item
title=
"项目中止内容"
name=
"项目中止内容"
>
<el-collapse-item
v-if=
"formData.djlx == 1"
title=
"项目中止内容"
name=
"项目中止内容"
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"中止原因"
>
<el-form-item
label=
"中止原因"
>
...
@@ -327,7 +326,11 @@
...
@@ -327,7 +326,11 @@
</el-col>
</el-col>
</el-row>
</el-row>
</el-collapse-item>
</el-collapse-item>
<el-collapse-item
title=
"项目重启内容"
name=
"项目重启内容"
>
<el-collapse-item
v-if=
"formData.djlx == 2"
title=
"项目重启内容"
name=
"项目重启内容"
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"中止原因"
>
<el-form-item
label=
"中止原因"
>
...
@@ -378,7 +381,11 @@
...
@@ -378,7 +381,11 @@
</el-col>
</el-col>
</el-row>
</el-row>
</el-collapse-item>
</el-collapse-item>
<el-collapse-item
title=
"项目终止内容"
name=
"项目终止内容"
>
<el-collapse-item
v-if=
"formData.djlx == 3"
title=
"项目终止内容"
name=
"项目终止内容"
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"中止原因"
>
<el-form-item
label=
"中止原因"
>
...
@@ -429,7 +436,11 @@
...
@@ -429,7 +436,11 @@
</el-col>
</el-col>
</el-row>
</el-row>
</el-collapse-item>
</el-collapse-item>
<el-collapse-item
title=
"项目退出内容"
name=
"项目退出内容"
>
<el-collapse-item
v-if=
"formData.djlx == 4"
title=
"项目退出内容"
name=
"项目退出内容"
>
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"中止原因"
>
<el-form-item
label=
"中止原因"
>
...
...
src/views/projectManage/projectAllPage.vue
View file @
918db535
<
template
>
<
template
>
<div
class=
"manage-container"
>
<div
class=
"manage-container"
>
<div
class=
"manage-wrap"
>
<div
class=
"manage-wrap"
>
<div
class=
"manage-header"
>
<div
class=
"manage-header"
>
<div
class=
"header-left"
></div>
<div
class=
"header-left"
></div>
<div
class=
"header-right"
>
<div
class=
"header-right"
>
<el-button
type=
"primary"
@
click=
"showFieldsModal"
>
表头筛选
</el-button>
<el-button
type=
"primary"
@
click=
"showFieldsModal"
</div>
>
表头筛选
</el-button
</div>
>
<div
class=
"manage-content"
v-loading=
"loading"
>
<common-table
:autoHeight=
"true"
:maxRows=
"10"
:data=
"tableData"
:columns=
"tableColumns"
:total=
"total"
:current-page=
"currentPage"
:page-size=
"pageSize"
:index=
"true"
:indexLabel=
"'序号'"
title=
""
:border=
"true"
@
size-change=
"handleSizeChange"
@
current-page-change=
"handleCurrentPageChange"
>
<template
#
operations=
"
{ row, index }">
<el-button
link
type=
"primary"
size=
"small"
@
click=
"previewProject(row)"
>
查看
</el-button>
</
template
>
</common-table>
</div>
<el-dialog
v-model=
"filedsModalShow"
modal-class=
"fields-modal"
title=
"筛选查询"
width=
"50%"
top=
"10vh"
:close-on-click-modal=
"false"
:close-on-press-escape=
"false"
>
<el-table
:data=
"tableFields"
style=
"width: 100%; height: 500px;"
empty-text=
"暂无数据"
border
@
selection-change=
"handleFieldsSelectChange"
>
<el-table-column
type=
"selection"
width=
"55"
/>
<el-table-column
prop=
"comment"
label=
"名称"
/>
</el-table>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
@
click=
"cancelFieldsModal"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"confirmFieldsModal"
>
确定
</el-button>
</div>
</
template
>
</el-dialog>
</div>
</div>
</div>
<div
class=
"manage-content"
v-loading=
"loading"
>
<common-table
:autoHeight=
"true"
:maxRows=
"10"
:data=
"tableData"
:columns=
"tableColumns"
:total=
"total"
:current-page=
"currentPage"
:page-size=
"pageSize"
:index=
"true"
:indexLabel=
"'序号'"
title=
""
:border=
"true"
@
size-change=
"handleSizeChange"
@
current-page-change=
"handleCurrentPageChange"
>
<template
#
operations=
"
{ row, index }">
<el-button
link
type=
"primary"
size=
"small"
@
click=
"previewProject(row)"
>
查看
</el-button
>
</
template
>
</common-table>
</div>
<el-dialog
v-model=
"filedsModalShow"
modal-class=
"fields-modal"
title=
"筛选查询"
width=
"50%"
top=
"10vh"
:close-on-click-modal=
"false"
:close-on-press-escape=
"false"
>
<el-table
:data=
"tableFields"
style=
"width: 100%; height: 500px"
empty-text=
"暂无数据"
border
@
selection-change=
"handleFieldsSelectChange"
>
<el-table-column
type=
"selection"
width=
"55"
/>
<el-table-column
prop=
"comment"
label=
"名称"
/>
</el-table>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
@
click=
"cancelFieldsModal"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"confirmFieldsModal"
>
确定
</el-button
>
</div>
</
template
>
</el-dialog>
</div>
</div>
</div>
</template>
</template>
<
script
setup
>
<
script
setup
>
import
{
reactive
,
ref
,
onMounted
,
computed
,
getCurrentInstance
}
from
"vue"
;
import
{
reactive
,
ref
,
onMounted
,
computed
,
getCurrentInstance
}
from
"vue"
;
import
{
useRouter
}
from
"vue-router"
;
import
{
useRouter
}
from
"vue-router"
;
import
{
ElMessage
,
ElMessageBox
}
from
"element-plus"
;
import
CommonTable
from
"@/components/common/commonTable.vue"
;
import
CommonTable
from
"@/components/common/commonTable.vue"
;
const
router
=
useRouter
();
const
{
proxy
}
=
getCurrentInstance
();
const
router
=
useRouter
();
// 计算表格高度
const
{
proxy
}
=
getCurrentInstance
();
let
tableData
=
ref
([]);
let
tableColumns
=
ref
([
// 计算表格高度
{
let
tableData
=
ref
([]);
prop
:
"projectName"
,
let
tableColumns
=
ref
([
label
:
"项目名称"
,
{
showOverflowTooltip
:
true
prop
:
"projectName"
,
},
label
:
"项目名称"
,
{
showOverflowTooltip
:
true
,
prop
:
"projectCode"
,
},
label
:
"项目编号"
,
{
showOverflowTooltip
:
true
prop
:
"projectCode"
,
},
label
:
"项目编号"
,
{
showOverflowTooltip
:
true
,
prop
:
"projectLzType"
,
},
label
:
"状态"
,
{
width
:
120
,
prop
:
"projectLzType"
,
align
:
"center"
,
label
:
"状态"
,
formatter
:
(
data
)
=>
{
width
:
120
,
return
data
.
projectLzType
===
"1"
?
"待立项"
:
data
.
projectLzType
===
"3"
?
"立项审批中"
:
align
:
"center"
,
data
.
projectLzType
===
"5"
?
"已立项"
:
data
.
projectLzType
===
"7"
?
"决策填报中"
:
formatter
:
(
data
)
=>
{
data
.
projectLzType
===
"8"
?
"决策审批中"
:
data
.
projectLzType
===
"9"
?
"已决策"
:
"待立项"
return
data
.
projectLzType
===
"1"
}
?
"待立项"
:
data
.
projectLzType
===
"3"
?
"立项审批中"
:
data
.
projectLzType
===
"5"
?
"已立项"
:
data
.
projectLzType
===
"7"
?
"决策填报中"
:
data
.
projectLzType
===
"8"
?
"决策审批中"
:
data
.
projectLzType
===
"9"
?
"已决策"
:
"待立项"
;
},
},
{
prop
:
"operations"
,
label
:
"操作"
,
width
:
90
,
slot
:
"operations"
,
fixed
:
"right"
,
align
:
"center"
,
},
]);
// 获取可显示表头项
let
filedsModalShow
=
ref
(
false
);
let
tableFields
=
reactive
([]);
const
getTableFields
=
()
=>
{
proxy
.
$post
({
url
:
"/api/project/getProjectFields"
,
data
:
{},
callback
:
(
data
)
=>
{
tableFields
=
(
data
[
0
]
&&
data
[
0
].
attributes
)
||
[];
},
});
};
const
showFieldsModal
=
()
=>
{
filedsModalShow
.
value
=
true
;
};
let
selectFields
=
ref
([]);
const
handleFieldsSelectChange
=
(
datas
)
=>
{
selectFields
.
value
=
datas
;
};
const
cancelFieldsModal
=
()
=>
{
selectFields
.
value
=
[];
filedsModalShow
.
value
=
false
;
};
const
confirmFieldsModal
=
()
=>
{
tableColumns
.
value
=
selectFields
.
value
.
map
((
item
)
=>
{
return
{
prop
:
item
.
fieldName
,
label
:
item
.
comment
,
showOverflowTooltip
:
true
,
};
})
.
concat
([
{
prop
:
"projectLzType"
,
label
:
"状态"
,
width
:
120
,
align
:
"center"
,
formatter
:
(
data
)
=>
{
return
data
.
projectLzType
===
"1"
?
"待立项"
:
data
.
projectLzType
===
"3"
?
"立项审批中"
:
data
.
projectLzType
===
"5"
?
"已立项"
:
data
.
projectLzType
===
"7"
?
"决策填报中"
:
data
.
projectLzType
===
"8"
?
"决策审批中"
:
data
.
projectLzType
===
"9"
?
"已决策"
:
"待立项"
;
},
},
{
},
prop
:
"operations"
,
label
:
"操作"
,
width
:
90
,
slot
:
"operations"
,
fixed
:
"right"
,
align
:
"center"
}
]);
]);
// 获取可显示表头项
filedsModalShow
.
value
=
false
;
let
filedsModalShow
=
ref
(
false
);
};
let
tableFields
=
reactive
([]);
const
getTableFields
=
()
=>
{
proxy
.
$post
({
url
:
"/api/project/getProjectFields"
,
data
:
{},
callback
:
(
data
)
=>
{
tableFields
=
(
data
[
0
]
&&
data
[
0
].
attributes
)
||
[];
}
})
};
const
showFieldsModal
=
()
=>
{
filedsModalShow
.
value
=
true
;
}
let
selectFields
=
ref
([]);
const
handleFieldsSelectChange
=
(
datas
)
=>
{
selectFields
.
value
=
datas
;
};
const
cancelFieldsModal
=
()
=>
{
selectFields
.
value
=
[];
filedsModalShow
.
value
=
false
;
}
const
confirmFieldsModal
=
()
=>
{
tableColumns
.
value
=
selectFields
.
value
.
map
(
item
=>
{
return
{
prop
:
item
.
fieldName
,
label
:
item
.
comment
,
showOverflowTooltip
:
true
};
}).
concat
([
{
prop
:
"projectLzType"
,
label
:
"状态"
,
width
:
120
,
align
:
"center"
,
formatter
:
(
data
)
=>
{
return
data
.
projectLzType
===
"1"
?
"待立项"
:
data
.
projectLzType
===
"3"
?
"立项审批中"
:
data
.
projectLzType
===
"5"
?
"已立项"
:
data
.
projectLzType
===
"7"
?
"决策填报中"
:
data
.
projectLzType
===
"8"
?
"决策审批中"
:
data
.
projectLzType
===
"9"
?
"已决策"
:
"待立项"
}
}
]);
filedsModalShow
.
value
=
false
;
};
let
loading
=
ref
(
false
);
let
total
=
ref
(
0
);
let
currentPage
=
ref
(
1
);
let
pageSize
=
ref
(
10
);
// 获取列表数据
const
getProjectData
=
()
=>
{
loading
.
value
=
true
;
proxy
.
$post
({
url
:
"/api/project/listProject"
,
data
:
{
page
:
currentPage
.
value
,
pagesize
:
pageSize
.
value
,
attributes
:
[],
menuType
:
"xmdak"
,
},
callback
:
(
data
)
=>
{
tableData
.
value
=
data
.
rows
;
total
.
value
=
data
.
count
;
loading
.
value
=
false
;
},
});
};
let
loading
=
ref
(
false
);
onMounted
(()
=>
{
let
total
=
ref
(
0
);
getTableFields
();
let
currentPage
=
ref
(
1
);
getProjectData
();
let
pageSize
=
ref
(
10
);
});
// 获取列表数据
// 分页
const
getProjectData
=
()
=>
{
const
handleSizeChange
=
(
size
)
=>
{
loading
.
value
=
true
;
pageSize
.
value
=
size
;
proxy
.
$post
({
currentPage
.
value
=
1
;
url
:
"/api/project/listProject"
,
getProjectData
();
data
:
{
};
page
:
currentPage
.
value
,
const
handleCurrentPageChange
=
(
page
)
=>
{
pagesize
:
pageSize
.
value
,
currentPage
.
value
=
page
;
attributes
:
[],
getProjectData
();
menuType
:
"xmdak"
};
},
callback
:
(
data
)
=>
{
tableData
.
value
=
data
.
rows
;
total
.
value
=
data
.
count
;
loading
.
value
=
false
;
}
})
};
onMounted
(()
=>
{
getTableFields
();
getProjectData
();
})
// 分页
const
handleSizeChange
=
(
size
)
=>
{
pageSize
.
value
=
size
;
currentPage
.
value
=
1
;
getProjectData
();
}
const
handleCurrentPageChange
=
(
page
)
=>
{
currentPage
.
value
=
page
;
getProjectData
();
}
const
previewProject
=
(
item
)
=>
{
const
previewProject
=
(
item
)
=>
{
router
.
push
({
router
.
push
({
name
:
"addProject"
,
name
:
"addProject"
,
query
:
{
query
:
{
isPreview
:
true
,
isPreview
:
true
,
projectId
:
item
.
id
projectId
:
item
.
id
,
}
},
})
});
}
};
</
script
>
</
script
>
<
style
scoped
lang=
"less"
>
<
style
scoped
lang=
"less"
>
@import "@/styles/manage.less";
@import "@/styles/manage.less";
</
style
>
</
style
>
src/views/systemManage/departManage.vue
View file @
918db535
...
@@ -2,14 +2,16 @@
...
@@ -2,14 +2,16 @@
<div
class=
"depart-manage"
v-loading=
"loading"
>
<div
class=
"depart-manage"
v-loading=
"loading"
>
<div
class=
"manage-left"
>
<div
class=
"manage-left"
>
<div
class=
"handle-btn"
>
<div
class=
"handle-btn"
>
<el-button
type=
"primary"
size=
"small"
@
click=
"handleAdd"
>
新增
</el-button>
<el-button
type=
"primary"
size=
"small"
@
click=
"handleAdd"
>
新增
</el-button
>
</div>
</div>
<div
class=
"tree-content"
>
<div
class=
"tree-content"
>
<el-tree
<el-tree
:data=
"treeData"
:data=
"treeData"
node-key=
"id"
node-key=
"id"
default-expand-all
default-expand-all
:props=
"
{
label: 'name'
}"
:props=
"
{
label: 'name'
}"
@node-click="handleNodeClick"
@node-click="handleNodeClick"
>
>
<template
#
default=
"
{ node, data }">
<template
#
default=
"
{ node, data }">
...
@@ -45,8 +47,12 @@
...
@@ -45,8 +47,12 @@
<div
class=
"search-container"
>
<div
class=
"search-container"
>
<el-form
:inline=
"true"
:model=
"searchForm"
>
<el-form
:inline=
"true"
:model=
"searchForm"
>
<el-form-item
label=
"关键字查询"
>
<el-form-item
label=
"关键字查询"
>
<el-input
v-model=
"searchForm.name"
:style=
"{width: '220px'}"
clearable
<el-input
placeholder=
"请输入用户姓名"
@
keydown
.
enter=
"handleSearch"
v-model=
"searchForm.name"
:style=
"{ width: '220px' }"
clearable
placeholder=
"请输入用户姓名"
@
keydown
.
enter=
"handleSearch"
/>
/>
</el-form-item>
</el-form-item>
<el-form-item>
<el-form-item>
...
@@ -78,18 +84,24 @@
...
@@ -78,18 +84,24 @@
:title=
"dialogTitle"
:title=
"dialogTitle"
width=
"400px"
width=
"400px"
@
close=
"cancelDepartForm"
@
close=
"cancelDepartForm"
:close-on-click-modal=
"false"
:close-on-press-escape=
"false"
:close-on-click-modal=
"false"
:close-on-press-escape=
"false"
>
>
<el-form
:model=
"departFormData"
ref=
"departForm"
:rules=
"departRules"
label-width=
"100"
>
<el-form
:model=
"departFormData"
ref=
"departForm"
:rules=
"departRules"
label-width=
"100"
>
<el-form-item
label=
"项目名称"
prop=
"name"
>
<el-form-item
label=
"项目名称"
prop=
"name"
>
<el-input
v-model=
"departFormData.name"
/>
<el-input
v-model=
"departFormData.name"
/>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<
template
#
footer
>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<div
class=
"dialog-footer"
>
<el-button
@
click=
"cancelDepartForm"
>
取消
</el-button>
<el-button
@
click=
"cancelDepartForm"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"saveDepartForm"
>
保存
</el-button>
<el-button
type=
"primary"
@
click=
"saveDepartForm"
>
保存
</el-button>
</div>
</div>
</
template
>
</
template
>
</el-dialog>
</el-dialog>
</div>
</div>
...
@@ -113,9 +125,7 @@ let departFormData = ref({});
...
@@ -113,9 +125,7 @@ let departFormData = ref({});
const
departForm
=
ref
();
const
departForm
=
ref
();
// 表单验证规则
// 表单验证规则
const
departRules
=
{
const
departRules
=
{
name
:
[
name
:
[{
required
:
true
,
message
:
"请输入部门名称"
,
trigger
:
"blur"
}],
{
required
:
true
,
message
:
"请输入部门名称"
,
trigger
:
"blur"
}
]
};
};
// 新增部门
// 新增部门
const
handleAdd
=
()
=>
{
const
handleAdd
=
()
=>
{
...
@@ -127,37 +137,36 @@ const handleAddChild = (data) => {
...
@@ -127,37 +137,36 @@ const handleAddChild = (data) => {
dialogTitle
.
value
=
"新增子部门"
;
dialogTitle
.
value
=
"新增子部门"
;
departFormData
.
value
.
parentId
=
data
.
id
;
departFormData
.
value
.
parentId
=
data
.
id
;
dialogVisible
.
value
=
true
;
dialogVisible
.
value
=
true
;
}
}
;
const
handleEdit
=
(
data
)
=>
{
const
handleEdit
=
(
data
)
=>
{
departFormData
.
value
=
{
...
data
};
departFormData
.
value
=
{
...
data
};
dialogTitle
.
value
=
"编辑部门"
;
dialogTitle
.
value
=
"编辑部门"
;
dialogVisible
.
value
=
true
;
dialogVisible
.
value
=
true
;
}
}
;
const
handleDelete
=
(
data
)
=>
{
const
handleDelete
=
(
data
)
=>
{
ElMessageBox
.
confirm
(
`确定删除
${
data
.
name
}
?`
,
"提示"
,
{
ElMessageBox
.
confirm
(
`确定删除
${
data
.
name
}
?`
,
"提示"
,
{
confirmButtonText
:
"确定"
,
confirmButtonText
:
"确定"
,
cancelButtonText
:
"取消"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
,
type
:
"warning"
,
}).
then
(()
=>
{
}).
then
(()
=>
{
proxy
.
$post
({
proxy
.
$post
({
url
:
"/api/user/depart/deleteDepart"
,
url
:
"/api/user/depart/deleteDepart"
,
data
:
{
id
:
data
.
id
},
data
:
{
id
:
data
.
id
},
callback
:
(
data
)
=>
{
callback
:
(
data
)
=>
{
ElMessage
.
success
(
"删除成功"
);
ElMessage
.
success
(
"删除成功"
);
loadTreeData
();
loadTreeData
();
},
},
error
:
(
err
)
=>
{
error
:
(
err
)
=>
{
ElMessage
.
error
(
"删除失败:"
,
err
);
ElMessage
.
error
(
"删除失败:"
,
err
);
},
},
});
});
});
}
});
};
const
saveDepartForm
=
()
=>
{
const
saveDepartForm
=
()
=>
{
departForm
.
value
.
validate
(
valid
=>
{
departForm
.
value
.
validate
(
(
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
let
url
=
departFormData
.
value
.
id
?
"updateDepart"
:
"createDepart"
let
url
=
departFormData
.
value
.
id
?
"updateDepart"
:
"createDepart"
;
proxy
.
$post
({
proxy
.
$post
({
url
:
"/api/user/depart/"
+
url
,
url
:
"/api/user/depart/"
+
url
,
data
:
departFormData
.
value
,
data
:
departFormData
.
value
,
...
@@ -171,7 +180,7 @@ const saveDepartForm = () => {
...
@@ -171,7 +180,7 @@ const saveDepartForm = () => {
},
},
});
});
}
}
})
})
;
};
};
const
cancelDepartForm
=
()
=>
{
const
cancelDepartForm
=
()
=>
{
departForm
.
value
.
resetFields
();
departForm
.
value
.
resetFields
();
...
@@ -179,10 +188,6 @@ const cancelDepartForm = () => {
...
@@ -179,10 +188,6 @@ const cancelDepartForm = () => {
dialogVisible
.
value
=
false
;
dialogVisible
.
value
=
false
;
};
};
// 处理树节点点击事件
// 处理树节点点击事件
const
handleNodeClick
=
(
data
,
node
,
element
)
=>
{
const
handleNodeClick
=
(
data
,
node
,
element
)
=>
{
selectedNode
.
value
=
data
;
selectedNode
.
value
=
data
;
...
@@ -210,7 +215,6 @@ const loadTreeData = () => {
...
@@ -210,7 +215,6 @@ const loadTreeData = () => {
});
});
};
};
// 人员信息
// 人员信息
const
handleUserData
=
()
=>
{
const
handleUserData
=
()
=>
{
userLoading
.
value
=
true
;
userLoading
.
value
=
true
;
...
@@ -299,15 +303,13 @@ const handleCurrentPageChange = (page) => {
...
@@ -299,15 +303,13 @@ const handleCurrentPageChange = (page) => {
handleUserData
();
handleUserData
();
};
};
onMounted
(()
=>
{
onMounted
(()
=>
{
loadTreeData
();
loadTreeData
();
});
});
</
script
>
</
script
>
<
style
scoped
lang=
"less"
>
<
style
scoped
lang=
"less"
>
@import "@/styles/manage.less";
@import "@/styles/manage.less";
.depart-manage {
.depart-manage {
padding: 20px;
padding: 20px;
background: rgba(157, 188, 218, 0.1);
background: rgba(157, 188, 218, 0.1);
...
@@ -325,7 +327,7 @@ onMounted(() => {
...
@@ -325,7 +327,7 @@ onMounted(() => {
display: flex;
display: flex;
flex-direction: column;
flex-direction: column;
}
}
.handle-btn{
.handle-btn
{
display: flex;
display: flex;
justify-content: flex-end;
justify-content: flex-end;
}
}
...
@@ -343,24 +345,24 @@ onMounted(() => {
...
@@ -343,24 +345,24 @@ onMounted(() => {
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
display: flex;
display: flex;
flex-direction: column;
flex-direction: column;
.search-container{
.search-container
{
padding: 0 20px;
padding: 0 20px;
}
}
.common-table{
.common-table {
flex: 1;
height: 0;
display: flex;
flex-direction: column;
.table-container {
flex: 1;
flex: 1;
height: 0;
height: 0;
display: flex;
display: flex;
flex-direction: column;
flex-direction: column;
.table-container{
.el-table {
flex: 1;
flex: 1;
height: 0;
height: 0;
display: flex;
flex-direction: column;
.el-table{
flex: 1;
height: 0;
}
}
}
}
}
}
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment