明树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
c825408f
Commit
c825408f
authored
Jan 20, 2026
by
zhanghan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
参股企业管理完成
parent
1dd94d13
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
1080 additions
and
108 deletions
+1080
-108
routes.js
src/router/routes.js
+130
-108
share.vue
src/views/everydayPage/share.vue
+190
-0
shareAdd.vue
src/views/everydayPage/shareAdd.vue
+760
-0
No files found.
src/router/routes.js
View file @
c825408f
import
MainLayout
from
'@/layouts/MainLayout.vue'
import
MainLayout
from
"@/layouts/MainLayout.vue"
;
const
routes
=
[
{
path
:
'/login'
,
name
:
'login'
,
component
:
()
=>
import
(
'@/views/login/index.vue'
),
meta
:
{
nopermission
:
true
}
path
:
"/login"
,
name
:
"login"
,
component
:
()
=>
import
(
"@/views/login/index.vue"
),
meta
:
{
nopermission
:
true
}
,
},
{
path
:
'/gzbPage'
,
name
:
'gzbPage'
,
title
:
'数据大屏'
,
component
:
()
=>
import
(
'@/views/homePage/index.vue'
),
meta
:
{
nopermission
:
true
}
path
:
"/gzbPage"
,
name
:
"gzbPage"
,
title
:
"数据大屏"
,
component
:
()
=>
import
(
"@/views/homePage/index.vue"
),
meta
:
{
nopermission
:
true
}
,
},
{
path
:
'/'
,
name
:
'首页'
,
redirect
:
'/homePage'
,
path
:
"/"
,
name
:
"首页"
,
redirect
:
"/homePage"
,
component
:
MainLayout
,
children
:
[
{
path
:
'/homePage'
,
name
:
'dataSummary'
,
title
:
'数据大屏'
,
component
:
()
=>
import
(
'@/views/homePage/index.vue'
)
path
:
"/homePage"
,
name
:
"dataSummary"
,
title
:
"数据大屏"
,
component
:
()
=>
import
(
"@/views/homePage/index.vue"
),
},
{
path
:
'/projectManage'
,
name
:
'projectManage'
,
title
:
'投前管理'
,
path
:
"/projectManage"
,
name
:
"projectManage"
,
title
:
"投前管理"
,
redirect
:
"/projectAllPage"
,
children
:
[
{
path
:
'/projectDraft'
,
name
:
'projectDraft'
,
title
:
'项目遴选'
,
component
:
()
=>
import
(
'@/views/projectManage/projectDraft.vue'
)
path
:
"/projectDraft"
,
name
:
"projectDraft"
,
title
:
"项目遴选"
,
component
:
()
=>
import
(
"@/views/projectManage/projectDraft.vue"
),
},
{
path
:
'/projectSetUp'
,
name
:
'projectSetUp'
,
title
:
'项目立项'
,
component
:
()
=>
import
(
'@/views/projectManage/projectSetUp.vue'
)
path
:
"/projectSetUp"
,
name
:
"projectSetUp"
,
title
:
"项目立项"
,
component
:
()
=>
import
(
"@/views/projectManage/projectSetUp.vue"
),
},
{
path
:
'/projectArgument'
,
name
:
'projectArgument'
,
title
:
'项目论证'
,
component
:
()
=>
import
(
'@/views/projectManage/projectArgument.vue'
)
path
:
"/projectArgument"
,
name
:
"projectArgument"
,
title
:
"项目论证"
,
component
:
()
=>
import
(
"@/views/projectManage/projectArgument.vue"
),
},
{
path
:
'/projectDecision'
,
name
:
'projectDecision'
,
title
:
'项目决策'
,
component
:
()
=>
import
(
'@/views/projectManage/projectDecision.vue'
)
path
:
"/projectDecision"
,
name
:
"projectDecision"
,
title
:
"项目决策"
,
component
:
()
=>
import
(
"@/views/projectManage/projectDecision.vue"
),
},
{
path
:
'/projectAllPage'
,
name
:
'projectAllPage'
,
title
:
'项目档案库'
,
component
:
()
=>
import
(
'@/views/projectManage/projectAllPage.vue'
)
path
:
"/projectAllPage"
,
name
:
"projectAllPage"
,
title
:
"项目档案库"
,
component
:
()
=>
import
(
"@/views/projectManage/projectAllPage.vue"
),
},
{
path
:
'/addProject/:type'
,
name
:
'addProject'
,
title
:
'新增项目'
,
component
:
()
=>
import
(
'@/views/projectManage/addProject.vue'
)
}
]
path
:
"/addProject/:type"
,
name
:
"addProject"
,
title
:
"新增项目"
,
component
:
()
=>
import
(
"@/views/projectManage/addProject.vue"
),
}
,
]
,
},
{
path
:
"/investingManage"
,
...
...
@@ -79,81 +81,101 @@ const routes = [
path
:
"/targetLiabilityStatement"
,
name
:
"targetLiabilityStatement"
,
title
:
"投资目标责任书"
,
component
:
()
=>
import
(
'@/views/investingManage/targetLiabilityStatement.vue'
)
component
:
()
=>
import
(
"@/views/investingManage/targetLiabilityStatement.vue"
),
},
{
path
:
'/addStatement'
,
name
:
'addStatement'
,
title
:
'新增责任书'
,
component
:
()
=>
import
(
'@/views/investingManage/addStatement.vue'
)
path
:
"/addStatement"
,
name
:
"addStatement"
,
title
:
"新增责任书"
,
component
:
()
=>
import
(
"@/views/investingManage/addStatement.vue"
),
},
{
path
:
"/targetControl"
,
name
:
"targetControl"
,
title
:
"投资控制"
,
component
:
()
=>
import
(
'@/views/investingManage/targetControl.vue'
)
component
:
()
=>
import
(
"@/views/investingManage/targetControl.vue"
),
},
{
path
:
"/addControl"
,
name
:
"addControl"
,
title
:
"新增投资控制"
,
component
:
()
=>
import
(
"@/views/investingManage/addControl.vue"
),
},
],
},
{
path
:
'/addControl'
,
name
:
'addControl'
,
title
:
'新增投资控制'
,
component
:
()
=>
import
(
'@/views/investingManage/addControl.vue'
)
}
]
path
:
"/templateManage"
,
name
:
"templateManage"
,
title
:
"模板管理"
,
component
:
()
=>
import
(
"@/views/projectManage/templateManage.vue"
),
},
{
path
:
"/everydayPage"
,
name
:
"everydayPage"
,
title
:
"日常管理"
,
redirect
:
"/share"
,
children
:
[
{
path
:
"/share"
,
name
:
"share"
,
title
:
"投资目标责任书"
,
component
:
()
=>
import
(
"@/views/everydayPage/share.vue"
),
},
{
path
:
'/templateManage'
,
name
:
'templateManage'
,
title
:
'模板管理'
,
component
:
()
=>
import
(
'@/views/projectManage/templateManage.vue'
)
path
:
"/shareAdd"
,
name
:
"shareAdd"
,
title
:
"投资目标责任书"
,
component
:
()
=>
import
(
"@/views/everydayPage/shareAdd.vue"
),
},
],
},
{
path
:
'/systemManage'
,
name
:
'systemManage'
,
title
:
'系统管理'
,
meta
:
{
menuName
:
'系统管理'
},
path
:
"/systemManage"
,
name
:
"systemManage"
,
title
:
"系统管理"
,
meta
:
{
menuName
:
"系统管理"
},
children
:
[
{
path
:
'departManage'
,
name
:
'departManage'
,
title
:
'部门管理'
,
component
:
()
=>
import
(
'@/views/systemManage/departManage.vue'
)
path
:
"departManage"
,
name
:
"departManage"
,
title
:
"部门管理"
,
component
:
()
=>
import
(
"@/views/systemManage/departManage.vue"
),
},
{
path
:
'userManage'
,
name
:
'userManage'
,
title
:
'用户管理'
,
component
:
()
=>
import
(
'@/views/systemManage/userManage.vue'
)
path
:
"userManage"
,
name
:
"userManage"
,
title
:
"用户管理"
,
component
:
()
=>
import
(
"@/views/systemManage/userManage.vue"
),
},
{
path
:
'roleManage'
,
name
:
'roleManage'
,
title
:
'角色管理'
,
component
:
()
=>
import
(
'@/views/systemManage/roleManage.vue'
)
path
:
"roleManage"
,
name
:
"roleManage"
,
title
:
"角色管理"
,
component
:
()
=>
import
(
"@/views/systemManage/roleManage.vue"
),
},
{
path
:
'menuManage'
,
name
:
'menuManage'
,
title
:
'菜单管理'
,
component
:
()
=>
import
(
'@/views/systemManage/menuManage.vue'
)
path
:
"menuManage"
,
name
:
"menuManage"
,
title
:
"菜单管理"
,
component
:
()
=>
import
(
"@/views/systemManage/menuManage.vue"
),
},
{
path
:
'resourceManage'
,
name
:
'resourceManage'
,
title
:
'资源库管理'
,
component
:
()
=>
import
(
'@/views/systemManage/resourceManage.vue'
)
}
]
path
:
"resourceManage"
,
name
:
"resourceManage"
,
title
:
"资源库管理"
,
component
:
()
=>
import
(
"@/views/systemManage/resourceManage.vue"
),
}
,
]
,
},
{
path
:
"/building"
,
name
:
"building"
,
title
:
"建设中"
,
component
:
()
=>
import
(
"@/views/homePage/building.vue"
)
}
]
}
component
:
()
=>
import
(
"@/views/homePage/building.vue"
)
,
}
,
]
,
}
,
];
export
{
routes
};
\ No newline at end of file
export
{
routes
};
src/views/everydayPage/share.vue
0 → 100644
View file @
c825408f
<
template
>
<div
class=
"manage-container"
>
<div
class=
"manage-wrap"
>
<div
class=
"manage-header"
>
<div
class=
"header-left"
></div>
<div
class=
"header-right"
>
<el-button
type=
"primary"
@
click=
"shareAdd"
>
新增
</el-button>
</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=
"previewStatement(row)"
>
查看
</el-button
>
<el-button
link
type=
"primary"
size=
"small"
@
click=
"editStatement(row)"
>
编辑
</el-button
>
<el-button
link
type=
"danger"
size=
"small"
@
click=
"deleteStatement(row)"
>
删除
</el-button
>
</
template
>
</common-table>
</div>
</div>
</div>
</template>
<
script
setup
>
import
{
ref
,
onMounted
,
getCurrentInstance
}
from
"vue"
;
import
{
useRouter
}
from
"vue-router"
;
import
{
ElMessage
,
ElMessageBox
}
from
"element-plus"
;
import
CommonTable
from
"@/components/common/commonTable.vue"
;
const
router
=
useRouter
();
const
{
proxy
}
=
getCurrentInstance
();
let
tableData
=
ref
([]);
let
tableColumns
=
ref
([
{
prop
:
"qc"
,
label
:
"项目全称"
,
showOverflowTooltip
:
true
,
},
{
prop
:
"jc"
,
label
:
"项目简称"
,
showOverflowTooltip
:
true
,
},
{
prop
:
"nbtzglzt"
,
label
:
"内部投资管理主体"
,
showOverflowTooltip
:
true
,
width
:
170
,
},
{
prop
:
"xmscjd"
,
label
:
"项目所处阶段"
,
showOverflowTooltip
:
true
,
width
:
120
,
},
{
prop
:
"gqjg"
,
label
:
"股权结构"
,
showOverflowTooltip
:
true
,
width
:
120
,
},
{
prop
:
"xmzbjze"
,
label
:
"项目资本金总额(亿元)"
,
showOverflowTooltip
:
true
,
width
:
180
,
},
{
prop
:
"operations"
,
label
:
"操作"
,
width
:
170
,
slot
:
"operations"
,
fixed
:
"right"
,
align
:
"center"
,
},
]);
let
loading
=
ref
(
false
);
let
total
=
ref
(
0
);
let
currentPage
=
ref
(
1
);
let
pageSize
=
ref
(
10
);
// 获取列表数据
const
getStatementData
=
()
=>
{
loading
.
value
=
true
;
proxy
.
$post
({
url
:
"/api/project/getCgqyglList"
,
data
:
{
page
:
currentPage
.
value
,
pagesize
:
pageSize
.
value
,
},
callback
:
(
data
)
=>
{
console
.
log
(
data
,
"data"
);
tableData
.
value
=
data
.
rows
;
total
.
value
=
data
.
count
;
loading
.
value
=
false
;
},
});
};
// 分页
const
handleSizeChange
=
(
size
)
=>
{
pageSize
.
value
=
size
;
currentPage
.
value
=
1
;
getStatementData
();
};
const
handleCurrentPageChange
=
(
page
)
=>
{
currentPage
.
value
=
page
;
getStatementData
();
};
const
shareAdd
=
()
=>
{
router
.
push
(
"/shareAdd"
);
};
const
editStatement
=
(
item
)
=>
{
router
.
push
({
name
:
"shareAdd"
,
query
:
{
id
:
item
.
id
,
},
});
};
const
previewStatement
=
(
item
)
=>
{
router
.
push
({
name
:
"shareAdd"
,
query
:
{
isPreview
:
true
,
id
:
item
.
id
,
},
});
};
const
deleteStatement
=
(
item
)
=>
{
ElMessageBox
.
confirm
(
"确认删除该项?"
,
"提示"
,
{
confirmButtonText
:
"确认"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
,
})
.
then
(()
=>
{
proxy
.
$post
({
url
:
"/api/project/deleteCgqygl"
,
data
:
{
id
:
item
.
id
,
},
callback
:
(
data
)
=>
{
ElMessage
.
success
(
"删除成功"
);
getStatementData
();
},
});
})
.
catch
(()
=>
{});
};
onMounted
(()
=>
{
getStatementData
();
});
</
script
>
<
style
scoped
lang=
"less"
>
@import "@/styles/manage.less";
</
style
>
src/views/everydayPage/shareAdd.vue
0 → 100644
View file @
c825408f
<
template
>
<div
class=
"add-project-container"
>
<div
class=
"add-project-content"
v-loading=
"loading"
>
<div
class=
"add-project-header"
>
<div
class=
"header-left"
></div>
<div
class=
"header-right"
>
<el-button
type=
"default"
@
click=
"backClick"
>
返回
</el-button>
<template
v-if=
"!loading && !isPreview"
>
<el-button
type=
"primary"
@
click=
"saveClick"
>
保存
</el-button>
</
template
>
</div>
</div>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content"
>
<div
class=
"tab-content"
>
<el-form
:model=
"formData"
:label-width=
"120"
:disabled=
"isPreview"
>
<el-collapse
v-model=
"activeCollapse"
>
<el-collapse-item
title=
"基本信息"
name=
"基本信息"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"项目信息"
required
>
<el-select
v-model=
"formData.projectId"
placeholder=
"请选择项目信息"
no-data-text=
"暂无数据"
@
change=
"changeProject"
>
<el-option
v-for=
"item in projectList"
:key=
"item.id"
:label=
"item.projectName"
:value=
"item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"全称"
>
<el-input
v-model=
"formData.qc"
placeholder=
"请输入全称"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"简称"
>
<el-input
v-model=
"formData.jc"
placeholder=
"请输入简称"
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"内部投资管理主体"
>
<el-input
v-model=
"formData.nbtzglzt"
placeholder=
"请输入内部投资管理主体"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"股权结构"
>
<el-input
v-model=
"formData.gqjg"
placeholder=
"请输入股权结构"
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"项目所处阶段"
>
<el-select
v-model=
"formData.xmscjd"
placeholder=
"请选择项目所处阶段"
>
<el-option
v-for=
"item in options?.xmjd"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item
title=
"资本金出资情况"
name=
"资本金出资情况"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"项目资本金总额(亿元)"
>
<el-input
v-model
.
number=
"formData.xmzbjze"
placeholder=
"请输入项目资本金总额(亿元)"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"公司资本金应出资总额(亿元)"
>
<el-input
v-model
.
number=
"formData.gszbjyczze"
placeholder=
"请输入公司资本金应出资总额(亿元)"
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"公司当前应出资额(亿元)"
>
<el-input
v-model
.
number=
"formData.gsdqycze"
placeholder=
"请输入公司当前应出资额(亿元)"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"公司当前已出资额(亿元)"
>
<el-input
v-model
.
number=
"formData.gsdqyjcze"
placeholder=
"请输入公司当前已出资额(亿元)"
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"公司当前应出未出金额(亿元)"
>
<el-input
v-model
.
number=
"formData.gsdqycwcje"
placeholder=
"请输入公司当前应出未出金额(亿元)"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"公司当前剩余出资额(亿元)"
>
<el-input
v-model
.
number=
"formData.gsdqsycze"
placeholder=
"请输入公司当前剩余出资额(亿元)"
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"超股比出资情况"
>
<el-input
v-model=
"formData.cgbczqk"
placeholder=
"请输入超股比出资情况"
/>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item
title=
"权益与分红情况"
name=
"权益与分红情况"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"我方权益合同条款约定"
>
<el-input
type=
"textarea"
v-model=
"formData.wfqyhttkyd"
placeholder=
"请输入我方权益合同条款约定(市场、设计、施工、运营权、养护份额等权益)"
:rows=
"3"
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"权益获取进展"
>
<el-input
type=
"textarea"
v-model=
"formData.qyhqjz"
placeholder=
"请输入权益获取进展"
:rows=
"3"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"权益获取与约定不一致的情况"
>
<el-input
type=
"textarea"
v-model=
"formData.qyhqyyd"
placeholder=
"请输入权益获取与约定不一致的情况"
:rows=
"3"
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"督办情况"
>
<el-input
type=
"textarea"
v-model=
"formData.dbqk"
placeholder=
"请输入督办情况"
:rows=
"2"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"利润分配/分红约定"
>
<el-input
type=
"textarea"
v-model=
"formData.lrfp"
placeholder=
"请输入利润分配/分红约定"
:rows=
"2"
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"是否达到利润分配条件"
>
<el-radio-group
placeholder=
"请选择是否达到利润分配条件"
v-model=
"formData.sfddlrfptj"
>
<el-radio
v-for=
"item in options?.sf"
:key=
"item.id"
:id=
"item.name"
:value=
"item.id"
>
{{ item.name }}
</el-radio
>
</el-radio-group>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"累计获取分红(万元)"
>
<el-input
v-model
.
number=
"formData.ljhqfh"
placeholder=
"请输入累计获取分红(万元)"
/>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item
title=
"资金流入"
name=
"资金流入"
>
<div
class=
"tab-handle"
>
<el-button
type=
"primary"
@
click=
"addPfyjlsqk"
>
新增
</el-button
>
</div>
<el-table
:data=
"wtyys"
style=
"width: 100%"
empty-text=
"暂无数据"
show-summary
:summary-method=
"sumWtyysColumns"
border
>
<el-table-column
type=
"index"
width=
"60"
label=
"序号"
/>
<el-table-column
prop=
"lx"
label=
"类型"
>
<
template
#
default=
"scope"
>
<el-select
v-model=
"scope.row.lx"
placeholder=
"请选择"
no-data-text=
"暂无数据"
>
<el-option
v-for=
"item in options?.zjlr"
:key=
"item.key"
:label=
"item.name"
:value=
"item.key"
></el-option>
</el-select>
</
template
>
</el-table-column>
<el-table-column
prop=
"fwsj"
label=
"服务时间"
>
<
template
#
default=
"scope"
>
<el-date-picker
v-model=
"scope.row.fwsj"
type=
"datetime"
format=
"YYYY-MM-DD HH:mm:ss"
value-format=
"YYYY-MM-DD HH:mm:ss"
placeholder=
"请选择"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"htje"
label=
"合同金额"
>
<
template
#
default=
"scope"
>
<el-input
v-model
.
number=
"scope.row.htje"
placeholder=
"请输入合同金额"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"ywlr"
label=
"业务利润"
>
<
template
#
default=
"scope"
>
<el-input
v-model
.
number=
"scope.row.ywlr"
placeholder=
"请输入业务利润"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
width=
"60"
>
<
template
#
default=
"scope"
>
<el-button
link
type=
"danger"
size=
"small"
@
click=
"deletePfyjlsqk(scope.$index)"
>
删除
</el-button
>
</
template
>
</el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item
title=
"资金流出"
name=
"资金流出"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"应投入资金(万元)"
>
<el-input
v-model
.
number=
"formData.ytrzj"
placeholder=
"请输入应投入资金(万元)"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"累计投入资金(万元)"
>
<el-input
v-model
.
number=
"formData.ljtrzj"
placeholder=
"请输入累计投入资金(万元)"
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"尚需投入资金(万元)"
>
<el-input
v-model
.
number=
"formData.sxtrzj"
placeholder=
"请输入尚需投入资金(万元)"
/>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="业务利润+分红小计(万元)">
<el-input
v-model.number="formData.lrxj"
placeholder="请输入业务利润+分红小计(万元)"
/>
</el-form-item>
</el-col> -->
</el-row>
</el-collapse-item>
<el-collapse-item
title=
"分红情况"
name=
"分红情况"
>
<div
class=
"tab-handle"
>
<el-button
type=
"primary"
@
click=
"addTzfhs"
>
新增
</el-button>
</div>
<el-table
:data=
"tzfhs"
style=
"width: 100%"
empty-text=
"暂无数据"
show-summary
:summary-method=
"sumTzfhsColumns"
border
>
<el-table-column
type=
"index"
width=
"60"
label=
"序号"
/>
<el-table-column
prop=
"fhsj"
label=
"分红时间"
>
<
template
#
default=
"scope"
>
<el-date-picker
v-model=
"scope.row.fhsj"
type=
"datetime"
format=
"YYYY-MM-DD HH:mm:ss"
value-format=
"YYYY-MM-DD HH:mm:ss"
placeholder=
"请选择"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"fhje"
label=
"分红金额(万元)"
>
<
template
#
default=
"scope"
>
<el-input
v-model
.
number=
"scope.row.fhje"
placeholder=
"请输入分红金额"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
width=
"60"
>
<
template
#
default=
"scope"
>
<el-button
link
type=
"danger"
size=
"small"
@
click=
"deleteTzfhs(scope.$index)"
>
删除
</el-button
>
</
template
>
</el-table-column>
</el-table>
</el-collapse-item>
<el-collapse-item
title=
"其他信息"
name=
"其他信息"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"静态"
>
<el-input
v-model
.
number=
"formData.jt"
placeholder=
"请输入静态"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"折现(3.5%)"
>
<el-input
v-model
.
number=
"formData.zx"
placeholder=
"请输入折现(3.5%)"
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"联系人"
>
<el-input
v-model=
"formData.lxr"
placeholder=
"请输入联系人"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label=
"联系方式"
>
<el-input
v-model=
"formData.lxfs"
placeholder=
"请输入联系方式"
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-form-item
label=
"备注"
>
<el-input
type=
"textarea"
v-model=
"formData.bz"
placeholder=
"请输入备注"
:rows=
"4"
/>
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
</el-collapse>
</el-form>
</div>
</div>
</div>
</div>
</div>
</template>
<
script
setup
>
import
{
reactive
,
ref
,
onMounted
,
getCurrentInstance
,
h
}
from
"vue"
;
import
{
useRouter
,
useRoute
}
from
"vue-router"
;
import
{
ElMessage
,
ElMessageBox
}
from
"element-plus"
;
import
{
useUserStore
}
from
"@/stores/user.js"
;
// 初始化全局变量
const
userStore
=
useUserStore
();
const
router
=
useRouter
();
const
route
=
useRoute
();
const
{
proxy
}
=
getCurrentInstance
();
const
token
=
ref
(
userStore
.
authToken
||
sessionStorage
.
getItem
(
"authToken"
)
||
""
);
// 折叠面板默认展开项
const
activeCollapse
=
ref
([
"基本信息"
,
"资本金出资情况"
,
"权益与分红情况"
,
"资金流入"
,
"其他信息"
,
"资金流出"
,
"分红情况"
,
]);
// 表单数据
const
formData
=
reactive
({
projectName
:
""
,
qc
:
""
,
jc
:
""
,
nbtzglzt
:
""
,
xmscjd
:
""
,
gqjg
:
""
,
xmzbjze
:
""
,
gszbjyczze
:
""
,
gsdqycze
:
""
,
gsdqyjcze
:
""
,
gsdqycwcje
:
""
,
gsdqsycze
:
""
,
cgbczqk
:
""
,
wfqyhttkyd
:
""
,
qyhqjz
:
""
,
qyhqyyd
:
""
,
dbqk
:
""
,
lrfp
:
""
,
sfddlrfptj
:
""
,
ljhqfh
:
""
,
ytrzj
:
""
,
ljtrzj
:
""
,
sxtrzj
:
""
,
jt
:
""
,
zx
:
""
,
lxr
:
""
,
lxfs
:
""
,
bz
:
""
,
lrxj
:
""
,
projectId
:
""
,
del
:
0
,
// del字段保留0默认值(删除标记,0为正常)
createdAt
:
""
,
updatedAt
:
""
,
});
let
options
=
ref
();
function
sumWtyysColumns
(
param
)
{
const
{
columns
,
data
}
=
param
;
const
sums
=
[];
columns
.
forEach
((
column
,
index
)
=>
{
if
(
index
===
0
)
{
sums
[
index
]
=
h
(
"div"
,
"合计"
);
return
;
}
const
prop
=
column
.
property
;
if
(
prop
===
"lx"
||
prop
===
"fwsj"
||
!
prop
)
{
sums
[
index
]
=
""
;
return
;
}
if
(
prop
===
"htje"
)
{
const
values
=
data
.
map
((
item
)
=>
Number
(
item
.
htje
)
||
0
);
const
total
=
values
.
reduce
((
prev
,
curr
)
=>
prev
+
curr
,
0
);
sums
[
index
]
=
total
.
toFixed
(
8
);
return
;
}
if
(
prop
===
"ywlr"
)
{
const
values
=
data
.
map
((
item
)
=>
Number
(
item
.
ywlr
)
||
0
);
const
total
=
values
.
reduce
((
prev
,
curr
)
=>
prev
+
curr
,
0
);
sums
[
index
]
=
total
.
toFixed
(
8
);
return
;
}
sums
[
index
]
=
""
;
});
return
sums
;
}
function
sumTzfhsColumns
(
param
)
{
const
{
columns
,
data
}
=
param
;
const
sums
=
[];
columns
.
forEach
((
column
,
index
)
=>
{
if
(
index
===
0
)
{
sums
[
index
]
=
h
(
"div"
,
"合计"
);
return
;
}
const
prop
=
column
.
property
;
if
(
prop
===
"fhsj"
||
!
prop
)
{
sums
[
index
]
=
""
;
return
;
}
// 分红金额合计
if
(
prop
===
"fhje"
)
{
const
values
=
data
.
map
((
item
)
=>
Number
(
item
.
fhje
)
||
0
);
const
total
=
values
.
reduce
((
prev
,
curr
)
=>
prev
+
curr
,
0
);
sums
[
index
]
=
total
.
toFixed
(
8
);
return
;
}
sums
[
index
]
=
""
;
});
return
sums
;
}
// 加载状态
const
loading
=
ref
(
false
);
// 是否预览模式
const
isPreview
=
ref
(
!!
route
.
query
.
isPreview
);
// 项目列表数据
const
projectList
=
ref
([]);
// 当前编辑的记录ID
const
rcCgqyglId
=
ref
(
route
.
query
.
id
||
""
);
let
wtyys
=
ref
([]);
const
addPfyjlsqk
=
()
=>
{
wtyys
.
value
.
push
({});
};
const
deletePfyjlsqk
=
(
index
)
=>
{
ElMessageBox
.
confirm
(
"确认删除该项?"
,
"提示"
,
{
confirmButtonText
:
"确认"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
,
}).
then
(()
=>
{
wtyys
.
value
.
splice
(
index
,
1
);
});
};
let
tzfhs
=
ref
([]);
// 新增
const
addTzfhs
=
()
=>
{
tzfhs
.
value
.
push
({});
};
// 删除
const
deleteTzfhs
=
(
index
)
=>
{
ElMessageBox
.
confirm
(
"确认删除该项?"
,
"提示"
,
{
confirmButtonText
:
"确认"
,
cancelButtonText
:
"取消"
,
type
:
"warning"
,
}).
then
(()
=>
{
tzfhs
.
value
.
splice
(
index
,
1
);
});
};
// 获取项目列表
const
getProjectData
=
()
=>
{
proxy
.
$post
({
url
:
"/api/project/listProject"
,
data
:
{
page
:
1
,
pagesize
:
1000
,
attributes
:
[],
menuType
:
"xmjc"
,
},
callback
:
(
data
)
=>
{
projectList
.
value
=
data
.
rows
||
[];
},
errorCallback
:
()
=>
{
ElMessage
.
error
(
"获取项目列表失败"
);
},
});
};
// 选择项目后同步项目名称
const
changeProject
=
(
val
)
=>
{
const
selectItem
=
projectList
.
value
.
find
((
item
)
=>
item
.
id
===
val
);
if
(
selectItem
)
{
formData
.
projectName
=
selectItem
.
projectName
;
}
};
// 获取单条记录详情(编辑/预览)
const
getRcCgqyglDetail
=
()
=>
{
if
(
!
rcCgqyglId
.
value
)
return
;
loading
.
value
=
true
;
proxy
.
$post
({
url
:
"/api/project/getCgqygl"
,
data
:
{
id
:
rcCgqyglId
.
value
},
callback
:
(
data
)
=>
{
loading
.
value
=
false
;
Object
.
assign
(
formData
,
{
...
data
,
sfddlrfptj
:
Number
(
data
.
sfddlrfptj
),
xmscjd
:
Number
(
data
.
xmscjd
),
});
if
(
data
.
wtyys
)
{
Object
.
assign
(
wtyys
.
value
,
data
.
wtyys
);
}
// 新增:加载
if
(
data
.
tzfhs
)
{
Object
.
assign
(
tzfhs
.
value
,
data
.
tzfhs
);
}
},
errorCallback
:
()
=>
{
loading
.
value
=
false
;
ElMessage
.
error
(
"网络异常,获取数据失败"
);
},
});
};
const
backClick
=
()
=>
{
router
.
back
(
-
1
);
};
// 保存/提交表单
const
saveClick
=
()
=>
{
// 基础校验
if
(
!
formData
.
projectId
)
{
ElMessage
.
warning
(
"请选择项目信息"
);
return
;
}
loading
.
value
=
true
;
// 区分新增/编辑
const
url
=
rcCgqyglId
.
value
?
"/api/project/updateCgqygl"
:
"/api/project/createCgqygl"
;
// 处理空数字字段:空值转为null,避免提交空字符串
const
submitData
=
{
...
formData
,
projectId
:
formData
.
projectId
+
""
,
wtyys
:
wtyys
.
value
,
tzfhs
:
tzfhs
.
value
,
};
proxy
.
$post
({
url
:
url
,
data
:
submitData
,
callback
:
(
res
)
=>
{
loading
.
value
=
false
;
ElMessage
.
success
(
rcCgqyglId
.
value
?
"编辑成功"
:
"新增成功"
);
router
.
back
(
-
1
);
},
});
};
// 页面初始化
onMounted
(()
=>
{
// 获取项目列表
getProjectData
();
options
.
value
=
JSON
.
parse
(
sessionStorage
.
getItem
(
"resourceData"
));
// 如果有ID则加载详情
if
(
rcCgqyglId
.
value
)
{
getRcCgqyglDetail
();
}
});
</
script
>
<
style
lang=
"less"
>
@import "@/styles/manage.less";
.add-project-header {
margin-bottom: 10px;
}
.el-form-item__label {
line-height: 1.5;
}
.tab-handle {
margin-bottom: 10px;
text-align: right;
}
.always-click {
cursor: pointer;
color: #409eff;
margin-right: 10px;
}
.el-table .el-table__footer-wrapper {
.el-table-cell {
font-weight: bold;
background-color: #f5f7fa;
}
}
</
style
>
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