明树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
b5228558
Commit
b5228558
authored
Jan 13, 2026
by
yangyajing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
责任书类型显示已选项全路径名称
parent
4dac1ac3
Pipeline
#106058
passed with stage
in 16 seconds
Changes
6
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
243 additions
and
70 deletions
+243
-70
routes.js
src/router/routes.js
+12
-0
manage.less
src/styles/manage.less
+63
-63
addControl.vue
src/views/investingManage/addControl.vue
+120
-1
addStatement.vue
src/views/investingManage/addStatement.vue
+45
-4
targetControl.vue
src/views/investingManage/targetControl.vue
+2
-1
targetLiabilityStatement.vue
src/views/investingManage/targetLiabilityStatement.vue
+1
-1
No files found.
src/router/routes.js
View file @
b5228558
...
...
@@ -86,6 +86,18 @@ const routes = [
name
:
'addStatement'
,
title
:
'新增责任书'
,
component
:
()
=>
import
(
'@/views/investingManage/addStatement.vue'
)
},
{
path
:
"/targetControl"
,
name
:
"targetControl"
,
title
:
"投资控制"
,
component
:
()
=>
import
(
'@/views/investingManage/targetControl.vue'
)
},
{
path
:
'/addControl'
,
name
:
'addControl'
,
title
:
'新增投资控制'
,
component
:
()
=>
import
(
'@/views/investingManage/addControl.vue'
)
}
]
},
...
...
src/styles/manage.less
View file @
b5228558
...
...
@@ -127,6 +127,7 @@
}
.el-tab-pane{
height: 100%;
}
.tab-content{
height: 100%;
overflow: auto;
...
...
@@ -200,7 +201,6 @@
display: inline-flex;
align-items: center;
}
}
.project-tab-content{
padding: 0 20px;
height: 100%;
...
...
src/views/investingManage/addControl.vue
View file @
b5228558
...
...
@@ -10,7 +10,118 @@
</
template
>
</div>
</div>
<div
class=
"tabs-content"
></div>
<div
class=
"tabs-content"
>
<div
class=
"project-tab-content"
>
<div
class=
"tab-content"
>
<el-form
:model=
"formData"
:label-width=
"130"
: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-col
:span=
"24"
>
<el-form-item
label=
"费用分项控制、阶段对比表"
:label-width=
"200"
></el-form-item>
<el-table
:data=
"tzekzData"
style=
"width: 100%"
empty-text=
"暂无数据"
border
>
<el-table-column
type=
"index"
label=
"序号"
width=
"60"
/>
<el-table-column
prop=
"xm"
label=
"项目"
>
<
template
#
default=
"scope"
>
<el-input
v-model=
"scope.row.xm"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"zbgs"
label=
"招标估算"
width=
"180"
>
<
template
#
default=
"scope"
>
<el-input-number
v-model=
"scope.row.zbgs"
:min=
"0"
:max=
"99999999999.99999999"
controls-position=
"right"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"jcgs"
label=
"决策估算"
width=
"180"
>
<
template
#
default=
"scope"
>
<el-input-number
v-model=
"scope.row.jcgs"
:min=
"0"
:max=
"99999999999.99999999"
controls-position=
"right"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"pfgusuan"
label=
"批复估算"
width=
"180"
>
<
template
#
default=
"scope"
>
<el-input-number
v-model=
"scope.row.pfgusuan"
:min=
"0"
:max=
"99999999999.99999999"
controls-position=
"right"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"pfgs"
label=
"批复概算"
width=
"180"
>
<
template
#
default=
"scope"
>
<el-input-number
v-model=
"scope.row.pfgs"
:min=
"0"
:max=
"99999999999.99999999"
controls-position=
"right"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"tkjgs"
label=
"同口径概算"
width=
"180"
>
<
template
#
default=
"scope"
>
<el-input-number
v-model=
"scope.row.tkjgs"
:min=
"0"
:max=
"99999999999.99999999"
controls-position=
"right"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"pfys"
label=
"批复预算"
width=
"180"
>
<
template
#
default=
"scope"
>
<el-input-number
v-model=
"scope.row.pfys"
:min=
"0"
:max=
"99999999999.99999999"
controls-position=
"right"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"zbqy"
label=
"招标签约"
width=
"180"
>
<
template
#
default=
"scope"
>
<el-input-number
v-model=
"scope.row.zbqy"
:min=
"0"
:max=
"99999999999.99999999"
controls-position=
"right"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"sqyc"
label=
"上期预测"
width=
"180"
>
<
template
#
default=
"scope"
>
<el-input-number
v-model=
"scope.row.sqyc"
:min=
"0"
:max=
"99999999999.99999999"
controls-position=
"right"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"bqyc"
label=
"本期预测"
width=
"180"
>
<
template
#
default=
"scope"
>
<el-input-number
v-model=
"scope.row.bqyc"
:min=
"0"
:max=
"99999999999.99999999"
controls-position=
"right"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"bqjsq"
label=
"本期-上期"
width=
"180"
>
<
template
#
default=
"scope"
>
<el-input-number
v-model=
"scope.row.bqjsq"
:min=
"0"
:max=
"99999999999.99999999"
controls-position=
"right"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"cysm"
label=
"本期较上期差异原因说明"
>
<
template
#
default=
"scope"
>
<el-input
v-model=
"scope.row.cysm"
type=
"textarea"
/>
</
template
>
</el-table-column>
</el-table>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item
title=
"费用分项控制、阶段对比表"
name=
"费用分项控制、阶段对比表"
></el-collapse-item>
</el-collapse>
</el-form>
</div>
</div>
</div>
</div>
</div>
</template>
...
...
@@ -23,6 +134,14 @@
const
router
=
useRouter
();
const
route
=
useRoute
();
const
{
proxy
}
=
getCurrentInstance
();
let
token
=
ref
(
""
);
token
.
value
=
userStore
.
authToken
||
sessionStorage
.
getItem
(
"authToken"
)
||
""
;
const
activeCollapse
=
reactive
([
"投资额控制"
,
"费用分项控制、阶段对比表"
]);
let
formData
=
reactive
({});
let
loading
=
ref
(
false
);
</
script
>
...
...
src/views/investingManage/addStatement.vue
View file @
b5228558
...
...
@@ -29,7 +29,11 @@
placeholder=
"请选择"
render-after-expand
@
node-click=
"changeZrslx"
/>
>
<
template
#
label
>
<span>
{{
selectedFullPath
}}
</span>
</
template
>
</el-tree-select>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
...
...
@@ -107,6 +111,7 @@
<el-input-number
v-model=
"formData.xmssqx"
:min=
"0"
:max=
"99999999999.99999999"
controls-position=
"right"
></el-input-number>
年
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
...
...
@@ -127,7 +132,6 @@
</el-collapse-item>
<el-collapse-item
title=
"责任书具体指标"
name=
"责任书具体指标"
>
<el-table
:data=
"zrsjtzbData"
style=
"width: 100%"
empty-text=
"暂无数据"
border
default-expand-all
row-key=
"xh"
show-summary
:summary-method=
"getSummaries"
>
<el-table-column
type=
"index"
label=
"序号"
width=
"60"
/>
...
...
@@ -329,11 +333,11 @@
</template>
<
script
setup
>
import
{
reactive
,
ref
,
onMounted
,
getCurrentInstance
,
h
}
from
"vue"
;
import
{
reactive
,
ref
,
onMounted
,
getCurrentInstance
,
h
,
watch
}
from
"vue"
;
import
{
useRouter
,
useRoute
}
from
"vue-router"
;
import
{
ElMessage
,
ElMessageBox
}
from
"element-plus"
;
import
{
useUserStore
}
from
"@/stores/user.js"
;
import
moment
from
"moment"
;
import
moment
from
"moment"
;
const
userStore
=
useUserStore
();
const
router
=
useRouter
();
const
route
=
useRoute
();
...
...
@@ -352,6 +356,31 @@ import moment from "moment";
let
zrslxProps
=
{
label
:
"name"
}
let
selectedFullPath
=
ref
(
""
);
//已选项的全路径名称
watch
(()
=>
formData
.
zrslx
,
(
newVal
)
=>
{
if
(
newVal
)
{
selectedFullPath
.
value
=
getFullPathById
(
newVal
);
}
else
{
selectedFullPath
.
value
=
""
;
}
})
// 构建节点映射表
const
nodeMap
=
new
Map
()
let
buildNodeMap
;
const
getFullPathById
=
(
id
)
=>
{
const
node
=
nodeMap
.
get
(
id
)
if
(
!
node
)
return
''
const
path
=
[]
let
current
=
node
while
(
current
)
{
path
.
unshift
(
current
.
name
)
current
=
current
.
parent
}
return
path
.
join
(
' / '
)
}
// 项目列表
let
projectList
=
ref
([]);
const
getProjectData
=
()
=>
{
...
...
@@ -419,6 +448,18 @@ import moment from "moment";
lsqkList
=
resourceData
.
lszxqk
;
statementId
&&
getStatementInfo
();
buildNodeMap
=
(
nodes
,
parent
=
null
)
=>
{
nodes
.
forEach
(
node
=>
{
node
.
parent
=
parent
nodeMap
.
set
(
node
.
key
,
node
)
if
(
node
.
children
&&
node
.
children
.
length
>
0
)
{
buildNodeMap
(
node
.
children
,
node
)
}
})
}
// 初始化构建映射
buildNodeMap
(
zrslxList
);
});
// 选择关联项目,同步相关字段信息
const
changeProject
=
(
val
)
=>
{
...
...
src/views/investingManage/targetControl.vue
View file @
b5228558
...
...
@@ -26,6 +26,7 @@
<template
#
operations=
"
{ row, index }">
<el-button
link
type=
"primary"
size=
"small"
@
click=
"previewControl(row)"
>
查看
</el-button>
<el-button
link
type=
"primary"
size=
"small"
@
click=
"editControl(row)"
>
编辑
</el-button>
<el-button
link
type=
"danger"
size=
"small"
@
click=
"deleteControl(row)"
>
删除
</el-button>
</
template
>
</common-table>
</div>
...
...
@@ -69,7 +70,7 @@
const
getControlData
=
()
=>
{
loading
.
value
=
true
;
proxy
.
$post
({
url
:
"/api/project/getTz
mbzrs
List"
,
url
:
"/api/project/getTz
kz
List"
,
data
:
{
page
:
currentPage
.
value
,
pagesize
:
pageSize
.
value
...
...
src/views/investingManage/targetLiabilityStatement.vue
View file @
b5228558
...
...
@@ -68,7 +68,7 @@
},
{
prop
:
"xmssqx"
,
label
:
"项目实施期限"
,
label
:
"项目实施期限
(年)
"
,
showOverflowTooltip
:
true
,
width
:
120
},
...
...
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