明树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
1b3f498c
Commit
1b3f498c
authored
Jan 20, 2026
by
zhanghan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
字段设置
parent
1190bfc1
Pipeline
#106382
passed with stage
in 18 seconds
Changes
4
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
986 additions
and
7 deletions
+986
-7
routes.js
src/router/routes.js
+7
-0
shareAdd.vue
src/views/everydayPage/shareAdd.vue
+1
-4
construction.vue
src/views/investingManage/construction.vue
+188
-3
constructionAdd.vue
src/views/investingManage/constructionAdd.vue
+790
-0
No files found.
src/router/routes.js
View file @
1b3f498c
...
...
@@ -121,6 +121,13 @@ const routes = [
title
:
"建设期投资检查"
,
component
:
()
=>
import
(
"@/views/investingManage/construction.vue"
),
},
{
path
:
"/constructionAdd"
,
name
:
"constructionAdd"
,
title
:
"建设期投资检查"
,
component
:
()
=>
import
(
"@/views/investingManage/constructionAdd.vue"
),
},
],
},
{
...
...
src/views/everydayPage/shareAdd.vue
View file @
1b3f498c
...
...
@@ -245,7 +245,7 @@
v-for=
"item in options?.sf"
:key=
"item.id"
:id=
"item.name"
:value=
"item.
id
"
:value=
"item.
key
"
>
{{ item.name }}
</el-radio
>
</el-radio-group>
...
...
@@ -701,9 +701,6 @@ const getRcCgqyglDetail = () => {
loading
.
value
=
false
;
Object
.
assign
(
formData
,
{
...
data
,
sfddlrfptj
:
Number
(
data
.
sfddlrfptj
),
xmscjd
:
Number
(
data
.
xmscjd
),
// gszbjyczze: number(gszbjyczze).toFixed(2),
});
if
(
data
.
wtyys
)
{
Object
.
assign
(
wtyys
.
value
,
data
.
wtyys
);
...
...
src/views/investingManage/construction.vue
View file @
1b3f498c
<
template
>
<div>
33333333333333
</div>
<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=
"constructionAdd"
>
新增
</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
></
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
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
constructionAdd
=
()
=>
{
router
.
push
(
"/constructionAdd"
);
};
const
editStatement
=
(
item
)
=>
{
router
.
push
({
name
:
"constructionAdd"
,
query
:
{
id
:
item
.
id
,
},
});
};
const
previewStatement
=
(
item
)
=>
{
router
.
push
({
name
:
"constructionAdd"
,
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/investingManage/constructionAdd.vue
0 → 100644
View file @
1b3f498c
<
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=
"200"
:disabled=
"isPreview"
>
<el-collapse
v-model=
"activeCollapse"
>
<el-collapse-item
title=
"基本信息"
name=
"基本信息"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<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.key"
:label=
"item.projectName"
:value=
"item.id"
></el-option>
</el-select>
</el-form-item>
</el-col>
<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.key"
:label=
"item.name"
:value=
"item.key"
></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-collapse-item>
<el-collapse-item
title=
"出资情况"
name=
"出资情况"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
label-width=
"210"
label=
"项目资本金总额(亿元)"
>
<el-input
v-model
.
number=
"formData.xmzbjze"
placeholder=
"请输入项目资本金总额(亿元)"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label-width=
"210"
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-width=
"210"
label=
"公司当前应出资额(亿元)"
>
<el-input
v-model
.
number=
"formData.gsdqycze"
placeholder=
"请输入公司当前应出资额(亿元)"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label-width=
"210"
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-width=
"210"
label=
"公司当前应出未出金额(亿元)"
>
<el-input
v-model
.
number=
"formData.gsdqycwcje"
placeholder=
"请输入公司当前应出未出金额(亿元)"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
label-width=
"210"
label=
"公司当前剩余出资额(亿元)"
>
<el-input
v-model
.
number=
"formData.gsdqsycze"
placeholder=
"请输入公司当前剩余出资额(亿元)"
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
label-width=
"210"
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=
"24"
>
<el-form-item
label=
"权益获取进展"
>
<el-input
type=
"textarea"
v-model=
"formData.qyhqjz"
placeholder=
"请输入权益获取进展"
:rows=
"3"
/>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<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=
"24"
>
<el-form-item
label=
"督办情况"
>
<el-input
type=
"textarea"
v-model=
"formData.dbqk"
placeholder=
"请输入督办情况"
:rows=
"3"
/>
</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=
"formData.lrfp"
placeholder=
"请输入利润分配/分红约定"
:rows=
"2"
/>
</el-form-item>
</el-col>
<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.key"
>
{{ item.name }}
</el-radio
>
</el-radio-group>
</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.ljhqfh"
placeholder=
"请输入累计获取分红(万元)"
/>
</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.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-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?.participation_capital"
: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>
<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>
<div
class=
"subtotal"
>
<div
class=
"label"
>
流入小计
</div>
<div
class=
"value"
>
{{ subtotalNum }}(万元)
</div>
</div>
</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
,
computed
}
from
"vue"
;
import
{
useRouter
,
useRoute
}
from
"vue-router"
;
import
{
ElMessage
,
ElMessageBox
}
from
"element-plus"
;
import
{
useUserStore
}
from
"@/stores/user.js"
;
import
{
number
}
from
"echarts"
;
// 初始化全局变量
const
userStore
=
useUserStore
();
const
router
=
useRouter
();
const
route
=
useRoute
();
const
{
proxy
}
=
getCurrentInstance
();
const
token
=
ref
(
userStore
.
authToken
||
sessionStorage
.
getItem
(
"authToken"
)
||
""
);
// 小记金额
const
subtotalNum
=
computed
(()
=>
{
let
totalHtje
=
tzfhs
.
value
.
reduce
((
sum
,
item
)
=>
{
const
num
=
Number
(
item
.
fhje
)
||
0
;
// 兼容空值/非数字
return
sum
+
num
;
},
0
);
let
totalYwlr
=
wtyys
.
value
.
reduce
((
sum
,
item
)
=>
{
const
num
=
Number
(
item
.
ywlr
)
||
0
;
// 兼容空值/非数字
return
sum
+
num
;
},
0
);
console
.
log
(
totalYwlr
,
"totalYwlr"
);
console
.
log
(
totalHtje
,
"totalHtje"
);
return
(
totalHtje
+
totalYwlr
).
toFixed
(
2
);
});
// 折叠面板默认展开项
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
:
""
,
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
(
2
)
+
"(万元)"
;
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
(
2
)
+
"(万元)"
;
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
(
2
)
+
"(万元)"
;
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
,
});
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
scoped
lang=
"less"
>
@import "@/styles/verticalManages.less";
// @import "@/styles/manage.less";
.subtotal {
background-color: #f5f7fa;
height: 40px;
display: flex;
.label {
width: 100px;
height: 40px;
text-align: center;
line-height: 40px;
border-right: 1px solid #ebeef5;
}
.value {
padding-left: 16px;
width: 100%;
line-height: 40px;
}
}
</
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