Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
psa-web
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
高滢
psa-web
Commits
457179cd
Commit
457179cd
authored
Mar 11, 2025
by
qyx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
改样式
parent
e1d65834
Changes
6
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
891 additions
and
409 deletions
+891
-409
apply.vue
src/views/costManage/projectCostReimbursement/apply.vue
+221
-0
detail.vue
src/views/costManage/projectCostReimbursement/detail.vue
+133
-3
index.vue
src/views/costManage/projectCostReimbursement/index.vue
+71
-50
add.vue
src/views/costManage/projectCostRequest/add.vue
+129
-163
detail.vue
src/views/costManage/projectCostRequest/detail.vue
+166
-57
index.vue
src/views/costManage/projectCostRequest/index.vue
+171
-136
No files found.
src/views/costManage/projectCostReimbursement/apply.vue
0 → 100644
View file @
457179cd
<
script
setup
>
</
script
>
<
template
class=
"app-container"
>
<!-- 标题-->
<div
class=
"top"
>
<div
class=
"top_text"
>
申请报销
</div>
<div
class=
"top_line"
></div>
</div>
<div
style=
"display: flex;"
>
<div
class=
"card_box"
>
<div
class=
"card-header"
>
<span>
费用类型:
</span>
<span
style=
"color: #616161;font-weight: normal"
>
办公费-宽带费
</span>
</div>
<div
class=
"detail"
>
<el-row>
<el-col
:span=
"6"
>
<span>
项目名称:
</span></el-col>
<el-col
:span=
"18"
><div>
餐饮项目
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
项目类型:
</span></el-col>
<el-col
:span=
"18"
><div>
RL-人力
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
事业部负责人:
</span></el-col>
<el-col
:span=
"18"
><div>
ry
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
项目状态:
</span></el-col>
<el-col
:span=
"18"
><div>
进行中
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
物品描述:
</span></el-col>
<el-col
:span=
"18"
><div>
描述描述描述
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
单价:
</span></el-col>
<el-col
:span=
"18"
><div>
5
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
数量:
</span></el-col>
<el-col
:span=
"18"
><div>
1
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
申请金额(元):
</span></el-col>
<el-col
:span=
"18"
><div>
5
</div></el-col>
</el-row>
</div>
<div
class=
"card-bottom"
>
<div>
费用发生时间:2025-3-6
</div>
<div
style=
"margin-left: 80px"
><el-button
type=
"primary"
>
申请报销
</el-button></div>
</div>
</div>
<div
class=
"card_box"
>
<div
class=
"card-header"
>
<span>
费用类型:
</span>
<span
style=
"color: #616161;font-weight: normal"
>
办公费-宽带费
</span>
</div>
<div
class=
"detail"
>
<el-row>
<el-col
:span=
"6"
>
<span>
项目名称:
</span></el-col>
<el-col
:span=
"18"
><div>
餐饮项目
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
项目类型:
</span></el-col>
<el-col
:span=
"18"
><div>
RL-人力
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
事业部负责人:
</span></el-col>
<el-col
:span=
"18"
><div>
ry
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
项目状态:
</span></el-col>
<el-col
:span=
"18"
><div>
进行中
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
物品描述:
</span></el-col>
<el-col
:span=
"18"
><div>
描述描述描述
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
单价:
</span></el-col>
<el-col
:span=
"18"
><div>
5
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
数量:
</span></el-col>
<el-col
:span=
"18"
><div>
1
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
申请金额(元):
</span></el-col>
<el-col
:span=
"18"
><div>
5
</div></el-col>
</el-row>
</div>
<div
class=
"card-bottom"
>
<div>
费用发生时间:2025-3-6
</div>
<div
style=
"margin-left: 80px"
><el-button
type=
"primary"
>
申请报销
</el-button></div>
</div>
</div>
<div
class=
"card_box"
>
<div
class=
"card-header"
>
<span>
费用类型:
</span>
<span
style=
"color: #616161;font-weight: normal"
>
办公费-宽带费
</span>
</div>
<div
class=
"detail"
>
<el-row>
<el-col
:span=
"6"
>
<span>
项目名称:
</span></el-col>
<el-col
:span=
"18"
><div>
餐饮项目
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
项目类型:
</span></el-col>
<el-col
:span=
"18"
><div>
RL-人力
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
事业部负责人:
</span></el-col>
<el-col
:span=
"18"
><div>
ry
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
项目状态:
</span></el-col>
<el-col
:span=
"18"
><div>
进行中
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
物品描述:
</span></el-col>
<el-col
:span=
"18"
><div>
描述描述描述
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
单价:
</span></el-col>
<el-col
:span=
"18"
><div>
5
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
数量:
</span></el-col>
<el-col
:span=
"18"
><div>
1
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"6"
>
<span>
申请金额(元):
</span></el-col>
<el-col
:span=
"18"
><div>
5
</div></el-col>
</el-row>
</div>
<div
class=
"card-bottom"
>
<div>
费用发生时间:2025-3-6
</div>
<div
style=
"margin-left: 80px"
><el-button
type=
"primary"
>
申请报销
</el-button></div>
</div>
</div>
</div>
</
template
>
<
style
scoped
lang=
"scss"
>
.detail
{
margin-left
:
30px
;
span
{
color
:
#969696
;
}
div
{
margin-top
:
5px
;
color
:
#65676C
;
}
.detail_beizhu
{
width
:
480px
;
height
:
130px
;
border
:
1px
solid
#dddddd
;
background-color
:
#FAFAFA
;
}
}
.card_box
{
width
:
400px
;
border
:
1px
solid
#eaeaea
;
margin-top
:
20px
;
margin-left
:
50px
;
box-shadow
:
0
2px
2px
0
#b3b3b3
80
;
.card-header
{
color
:
#3B66FF
;
background-color
:
#F9F9FA
;
border-bottom
:
1px
solid
#eaeaea
;
padding
:
10px
;
font-size
:
16px
;
font-weight
:
bold
;
}
.detail
{
border-bottom
:
1px
solid
#eaeaea
;
padding
:
5px
;
}
.card-bottom
{
width
:
100%
;
padding
:
10px
;
display
:
flex
;
}
}
.top
{
display
:
flex
;
flex-direction
:
column
;
width
:
75px
;
margin-left
:
40px
;
.top_text
{
cursor
:
default
;
font-weight
:
550
;
font-size
:
18px
;
color
:
#0d162a
;
font-family
:
'Microsoft YaHei'
,
sans-serif
;
}
.top_line
{
border
:
solid
1px
#0062ff
;
margin-top
:
5px
;
height
:
4px
;
background-color
:
#0062ff
;
}
}
</
style
>
src/views/costManage/projectCostReimbursement/detail.vue
View file @
457179cd
<
template
>
<div
class=
"app-container"
>
<div
class=
"content"
>
<div
class=
"top"
>
<div
class=
"top_text"
>
申请报销
</div>
<div
class=
"top_line"
></div>
</div>
<div
class=
"detail"
>
<el-row>
<el-col
:span=
"2"
>
<span>
流水号:
</span></el-col>
<el-col
:span=
"22"
><div>
XS656433
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"2"
>
<span>
项目名称:
</span></el-col>
<el-col
:span=
"22"
><div>
餐饮项目
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"2"
>
<span>
项目编号:
</span></el-col>
<el-col
:span=
"22"
><div>
20250228RL001
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"2"
>
<span>
项目类型:
</span></el-col>
<el-col
:span=
"22"
><div>
RL-人力
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"2"
>
<span>
事业部负责人:
</span></el-col>
<el-col
:span=
"22"
><div>
ry
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"2"
>
<span>
项目状态:
</span></el-col>
<el-col
:span=
"22"
><div>
进行中
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"2"
>
<span>
费用类型:
</span></el-col>
<el-col
:span=
"22"
><div>
办公费-宽带费
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"2"
>
<span>
物品描述:
</span></el-col>
<el-col
:span=
"22"
><div>
描述描述描述
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"2"
>
<span>
费用发生时间:
</span></el-col>
<el-col
:span=
"22"
><div>
2025-03-06 15:00:00
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"2"
>
<span>
单价:
</span></el-col>
<el-col
:span=
"22"
><div>
5
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"2"
>
<span>
数量:
</span></el-col>
<el-col
:span=
"22"
><div>
1
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"2"
>
<span>
申请金额(元):
</span></el-col>
<el-col
:span=
"22"
><div>
5
</div></el-col>
</el-row>
<el-row>
<el-col
:span=
"2"
>
<span>
备注:
</span></el-col>
<el-col
:span=
"22"
>
<div
class=
"detail_beizhu"
>
备注备注备注备注备注备注备注备注
</div>
</el-col>
</el-row>
</div>
<!-- 取消、提交按钮-->
<div
class=
"button"
>
<div><el-button
@
click=
"goBackReimburseIndex"
class=
"button_size"
>
返回
</el-button></div>
<div><el-button
class=
"button_size"
type=
"primary"
>
确认申请报销
</el-button></div>
</div>
</div>
</div>
</
template
>
<
script
setup
>
<
script
setup
>
import
{
useRouter
}
from
"vue-router"
;
const
router
=
useRouter
()
const
goBackReimburseIndex
=
()
=>
{
router
.
push
({
path
:
'/costManage/projectCostReimbursement'
})
}
</
script
>
</
script
>
<
template
>
新增报销
</
template
>
<
style
scoped
lang=
"scss"
>
<
style
scoped
lang=
"scss"
>
.detail
{
margin-top
:
20px
;
margin-left
:
30px
;
span
{
color
:
#969696
;
}
div
{
margin-top
:
5px
;
color
:
#65676C
;
}
.detail_beizhu
{
width
:
480px
;
height
:
130px
;
border
:
1px
solid
#dddddd
;
background-color
:
#FAFAFA
;
}
}
.top
{
display
:
flex
;
flex-direction
:
column
;
width
:
75px
;
margin-left
:
40px
;
.top_text
{
cursor
:
default
;
font-weight
:
550
;
font-size
:
18px
;
color
:
#0d162a
;
font-family
:
'Microsoft YaHei'
,
sans-serif
;
}
.top_line
{
border
:
solid
1px
#0062ff
;
margin-top
:
5px
;
height
:
4px
;
background-color
:
#0062ff
;
}
}
.button
{
display
:
flex
;
margin-left
:
70%
;
margin-top
:
10px
;
.button_size
{
width
:
116px
;
height
:
40px
;
margin
:
20px
;
}
}
</
style
>
</
style
>
src/views/costManage/projectCostReimbursement/index.vue
View file @
457179cd
<
template
>
<
template
>
<div
class=
"app-container"
>
<div
class=
"app-container"
>
<div>
<!-- 搜索表单-->
<el-form
class=
"formSearch"
ref=
"formRef"
:inline=
"true"
:model=
"formInline"
>
<div
class=
"formSearch"
>
<el-form-item
label=
"项目名称"
>
<el-form
ref=
"formRef"
:inline=
"true"
:model=
"formInline"
>
<el-input
<el-form-item
style=
"margin-right: 60px"
label=
"项目名称"
>
<el-input
style=
"width: 220px"
v-model=
"queryParams.projectName"
v-model=
"queryParams.projectName"
placeholder=
"请输入项目名称"
placeholder=
"请输入项目名称"
clearable
/>
clearable
/>
</el-form-item>
</el-form-item>
<!--
<el-form-item
label=
"项目编号"
>
-->
<el-form-item
style=
"margin-right: 60px"
label=
"项目负责人"
>
<!--
<el-input-->
<el-input
style=
"width: 220px"
<!-- v-model="queryParams.projectNumber"-->
<!-- placeholder="请输入项目编号"-->
<!-- clearable/>-->
<!--
</el-form-item>
-->
<el-form-item
label=
"项目负责人"
>
<el-input
v-model=
"queryParams.userName"
v-model=
"queryParams.userName"
placeholder=
"请输入项目负责人"
placeholder=
"请输入项目负责人"
clearable
/>
clearable
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"项目类型"
>
<el-form-item
style=
"margin-right: 60px"
label=
"项目类型"
>
<el-select
v-model=
"queryParams.projectType"
placeholder=
"请选择项目类型"
clearable
>
<el-select
style=
"width: 220px"
v-model=
"queryParams.projectType"
placeholder=
"请选择项目类型"
clearable
>
<el-option
<el-option
v-for=
"dict in project_type"
v-for=
"dict in project_type"
:key=
"dict.value"
:key=
"dict.value"
...
@@ -30,27 +25,51 @@
...
@@ -30,27 +25,51 @@
:value=
"dict.value"
/>
:value=
"dict.value"
/>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item>
<el-form-item>
<el-button
type=
"primary"
class=
"el-button-primary"
icon=
"Search"
@
click=
"onSearch"
>
搜索
</el-button>
<div
style=
"margin-left: 50px"
>
<el-button
type=
"default"
class=
"el-button-defalut"
icon=
"Refresh"
@
click=
"reset"
>
重置
</el-button>
<el-button
type=
"default"
class=
"el-button-defalut"
icon=
"Refresh"
@
click=
"reset"
>
重置
</el-button>
<el-button
type=
"primary"
class=
"el-button-primary"
icon=
"Search"
@
click=
"onSearch"
>
搜索
</el-button>
<el-button
size=
"large"
type=
"text"
@
click=
"toggleSearch"
>
{{
isExpanded
?
' 收起'
:
' 展开'
}}
<el-icon
class=
"el-icon--right"
>
<arrow-down
/>
</el-icon>
</el-button>
</div>
</el-form-item>
</el-form-item>
<!-- 可折叠的查询条件 -->
<transition>
<div
v-if=
"isExpanded"
>
<el-form-item
label=
"审批状态"
>
<el-select
style=
"width: 220px"
v-model=
"queryParams.projectType"
placeholder=
"请选择审批状态"
clearable
>
<el-option
v-for=
"dict in project_cost_request_status"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
</div>
</transition>
</el-form>
</el-form>
</div>
</div>
<!-- 导航、按钮-->
<!-- 导航、按钮-->
<div
class=
"shadow_box_bottom_add"
>
<div
class=
"shadow_box_bottom_add"
>
<div
class=
"left"
>
<div
class=
"left"
>
<div
class=
"left_text"
>
项目费用
报销列表
</div>
<div
class=
"left_text"
>
报销列表
</div>
<div
class=
"left_line"
></div>
<div
class=
"left_line"
></div>
</div>
</div>
<div
class=
"right"
>
<div>
<el-button
<el-button
class=
"el-button-primary-pain"
plain
icon=
"Plus"
@
click=
"goToApplyPage"
>
报销申请
</el-button>
type=
"primary"
<el-button
type=
"text"
plain
><img
src=
"@/assets/icons/common/rightone.png"
height=
"38"
width=
"38"
/></el-button>
plain
<el-button
type=
"text"
plain
><img
src=
"@/assets/icons/common/print.png"
height=
"38"
width=
"38"
/></el-button>
icon=
"Plus"
</div>
@
click=
"goToAddPage"
>
报销申请
</el-button>
</div>
</div>
</div>
<!-- 步骤条-->
<!-- 步骤条-->
...
@@ -60,17 +79,7 @@
...
@@ -60,17 +79,7 @@
<text>
项目编号
</text>
<text>
项目编号
</text>
<text>
{{}}
</text>
<text>
{{}}
</text>
</div>
</div>
<div
class=
"step"
>
<FlowChart
:dataList=
"list"
:widthDontai=
"'70%'"
:activeIndex=
"1"
/>
<el-steps
:active=
"2"
align-center
>
<el-step
title=
"个人"
/>
<el-step
title=
"PM"
/>
<el-step
title=
"核心领导"
/>
<el-step
title=
"HR"
/>
<el-step
title=
"总经理"
/>
<el-step
title=
"财务"
/>
<el-step
title=
"完成"
/>
</el-steps>
</div>
</div>
</div>
<!-- 列表-->
<!-- 列表-->
...
@@ -165,6 +174,7 @@
...
@@ -165,6 +174,7 @@
<
script
setup
>
<
script
setup
>
import
FlowChart
from
'@/components/FlowChart/index.vue'
import
{
reactive
,
ref
}
from
'vue'
import
{
reactive
,
ref
}
from
'vue'
const
{
proxy
}
=
getCurrentInstance
();
const
{
proxy
}
=
getCurrentInstance
();
const
{
project_status
,
project_cost_type
,
project_cost_request_status
,
project_type
}
=
proxy
.
useDict
(
'project_status'
,
'project_cost_type'
,
'project_cost_request_status'
,
'project_type'
);
const
{
project_status
,
project_cost_type
,
project_cost_request_status
,
project_type
}
=
proxy
.
useDict
(
'project_status'
,
'project_cost_type'
,
'project_cost_request_status'
,
'project_type'
);
...
@@ -177,17 +187,26 @@ const queryParams = reactive({
...
@@ -177,17 +187,26 @@ const queryParams = reactive({
userName
:
null
,
userName
:
null
,
projectType
:
null
projectType
:
null
})
})
// 定义是否展开的状态
// 列表
const
isExpanded
=
ref
(
false
);
const
projectCostRequestList
=
ref
([]);
// 切换展开/折叠状态
const
getList
=
()
=>
{
const
toggleSearch
=
()
=>
{
getCostRequestList
(
queryParams
).
then
(
response
=>
{
isExpanded
.
value
=
!
isExpanded
.
value
;
console
.
log
(
"列表"
,
response
.
rows
)
total
.
value
=
response
.
total
projectCostRequestList
.
value
=
response
.
rows
});
}
}
getList
()
// 流程图内容
const
list
=
[
'个人'
,
'PM'
,
'事业部负责人'
,
'财务'
,
'领导'
,
'完成'
]
// // 列表
// const projectCostRequestList = ref([]);
// const getList=()=> {
// getCostRequestList(queryParams).then(response => {
// console.log("列表",response.rows)
// total.value = response.total
// projectCostRequestList.value = response.rows
// });
// }
// getList()
// 重置表单
// 重置表单
const
reset
=
()
=>
{
const
reset
=
()
=>
{
...
@@ -207,12 +226,14 @@ const onSearch = () => {
...
@@ -207,12 +226,14 @@ const onSearch = () => {
//新增按钮
//新增按钮
import
{
useRouter
}
from
'vue-router'
import
{
useRouter
}
from
'vue-router'
import
{
getCostRequestDetail
,
getCostRequestList
}
from
"../../../api/projectCostRequest/projectCostRequest.js"
;
import
{
getCostRequestDetail
,
getCostRequestList
}
from
"../../../api/projectCostRequest/projectCostRequest.js"
;
import
{
ArrowDown
}
from
"@element-plus/icons-vue"
;
const
router
=
useRouter
()
const
router
=
useRouter
()
const
goToA
dd
Page
=
()
=>
{
const
goToA
pply
Page
=
()
=>
{
router
.
push
({
path
:
'/costManage/projectCostRe
quest/add
'
,
query
:{
type
:
"新增"
}})
router
.
push
({
path
:
'/costManage/projectCostRe
imbursement/apply
'
,
query
:{
type
:
"新增"
}})
}
}
//查看详情
//查看详情
const
handleView
=
({
id
})
=>
{
const
handleView
=
({
id
})
=>
{
console
.
log
(
"详情"
+
id
)
console
.
log
(
"详情"
+
id
)
...
@@ -246,7 +267,7 @@ const handleUpdate=({id})=>{
...
@@ -246,7 +267,7 @@ const handleUpdate=({id})=>{
.left
{
.left
{
display
:
flex
;
display
:
flex
;
flex-direction
:
column
;
flex-direction
:
column
;
width
:
150
px
;
width
:
73
px
;
margin-left
:
40px
;
margin-left
:
40px
;
.left_text
{
.left_text
{
cursor
:
default
;
cursor
:
default
;
...
@@ -275,7 +296,7 @@ const handleUpdate=({id})=>{
...
@@ -275,7 +296,7 @@ const handleUpdate=({id})=>{
width
:
98%
;
width
:
98%
;
justify-content
:
space-evenly
;
justify-content
:
space-evenly
;
align-items
:
center
;
align-items
:
center
;
background-color
:
#
f3f3f3
;
background-color
:
#
F9F9FA
;
.text1
{
.text1
{
font-size
:
18px
;
font-size
:
18px
;
font-weight
:
550
;
font-weight
:
550
;
...
...
src/views/costManage/projectCostRequest/add.vue
View file @
457179cd
This diff is collapsed.
Click to expand it.
src/views/costManage/projectCostRequest/detail.vue
View file @
457179cd
This diff is collapsed.
Click to expand it.
src/views/costManage/projectCostRequest/index.vue
View file @
457179cd
This diff is collapsed.
Click to expand it.
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