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
49f1a01a
Commit
49f1a01a
authored
Mar 25, 2025
by
qyx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
费用审批
parent
6a5620cc
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
387 additions
and
65 deletions
+387
-65
examineAndApprove.js
src/api/examineAndApprove/examineAndApprove.js
+17
-0
projectCostReimbursementApprove.vue
...AndApprove/components/projectCostReimbursementApprove.vue
+71
-3
projectCostRequestApprove.vue
...xamineAndApprove/components/projectCostRequestApprove.vue
+112
-20
tripApplicationApprove.vue
...e/examineAndApprove/components/tripApplicationApprove.vue
+104
-25
tripReimburseApprove.vue
...age/examineAndApprove/components/tripReimburseApprove.vue
+70
-4
index.vue
src/views/costManage/examineAndApprove/index.vue
+5
-3
index.vue
src/views/costManage/projectCostRequest/index.vue
+8
-10
No files found.
src/api/examineAndApprove/examineAndApprove.js
0 → 100644
View file @
49f1a01a
import
request
from
"../../utils/request.js"
;
// 1.项目费用申请审批
//获取所有项目名称(查询下拉框)
export
function
getProjectName
()
{
return
request
({
url
:
'/projectCostRequest/projectAllList'
,
method
:
'get'
})
}
// 2.项目费用报销审批
src/views/costManage/examineAndApprove/components/projectCostReimbursementApprove.vue
View file @
49f1a01a
...
@@ -37,11 +37,27 @@
...
@@ -37,11 +37,27 @@
</div
>
</div
>
<div
class=
"contentTable"
>
<div
class=
"contentTable"
>
<!-- 按钮-->
<!-- 标题、按钮-->
<div
style=
"margin-bottom: 30px"
>
<div
class=
"shadow_box_bottom_add"
>
<div
class=
"topDiv"
>
<span
class=
"bold-text1"
style=
""
>
项目费用报销审批
</span>
</div>
<div>
<el-button
class=
"el-button-defalut"
type=
"default"
@
click=
""
>
一键驳回
</el-button>
<el-button
class=
"el-button-defalut"
type=
"default"
@
click=
""
>
一键驳回
</el-button>
<el-button
class=
"el-button-primary"
style=
"margin-left: 20px"
type=
"primary"
@
click=
""
>
一键通过
</el-button>
<el-button
class=
"el-button-primary"
style=
"margin-left: 20px"
type=
"primary"
@
click=
""
>
一键通过
</el-button>
</div>
</div>
</div>
<!-- 步骤条-->
<div
class=
"shadow_box_bottom_step"
>
<text
class=
"text1"
>
审批流程
</text>
<div
class=
"text2"
>
<text>
项目编号
</text>
<text>
{{
changProjectNumber
}}
</text>
</div>
<div
>
<FlowChart
:dataList=
"list"
:itemWidth=
"'130px'"
:activeIndex=
"2"
/>
</div>
</div>
<!-- 列表 -->
<!-- 列表 -->
<el-table
:data=
"ReimbursementRequestList"
border
>
<el-table
:data=
"ReimbursementRequestList"
border
>
<el-table-column
type=
"selection"
align=
"center"
></el-table-column>
<el-table-column
type=
"selection"
align=
"center"
></el-table-column>
...
@@ -83,6 +99,7 @@
...
@@ -83,6 +99,7 @@
<
script
setup
>
<
script
setup
>
import
{
reactive
,
ref
}
from
"vue"
;
import
{
reactive
,
ref
}
from
"vue"
;
import
FlowChart
from
'@/components/FlowChart/index.vue'
const
ReimbursementRequestList
=
ref
([
const
ReimbursementRequestList
=
ref
([
{
{
shenqingren
:
'张三'
,
shenqingren
:
'张三'
,
...
@@ -95,7 +112,8 @@ const ReimbursementRequestList = ref([
...
@@ -95,7 +112,8 @@ const ReimbursementRequestList = ref([
approvalStatus
:
'进行中'
approvalStatus
:
'进行中'
}
}
]);
]);
const
list
=
ref
([
'个人'
,
'项目经理'
,
'事业部负责人'
,
'财务'
,
'总经理'
])
// 流程图内容,只有值
const
allList
=
ref
([])
// 流程图内容,值和角色id
const
total
=
ref
(
0
);
const
total
=
ref
(
0
);
const
queryParams
=
reactive
({
const
queryParams
=
reactive
({
pageNum
:
1
,
pageNum
:
1
,
...
@@ -110,5 +128,55 @@ const queryParams = reactive({
...
@@ -110,5 +128,55 @@ const queryParams = reactive({
<
style
scoped
lang=
"scss"
>
<
style
scoped
lang=
"scss"
>
//步骤条
.shadow_box_bottom_step
{
display
:
flex
;
margin-top
:
10px
;
margin-bottom
:
20px
;
padding
:
20px
0px
;
width
:
100%
;
justify-content
:
space-evenly
;
align-items
:
center
;
background-color
:
#F9F9FA
;
.text1
{
font-size
:
18px
;
font-weight
:
550
;
}
.text2
{
display
:
flex
;
flex-direction
:
column
;
font-size
:
18px
;
align-items
:
center
;
}
.step
{
width
:
80%
;
}
}
//导航 、 按钮
.shadow_box_bottom_add
{
display
:
flex
;
width
:
100%
;
justify-content
:
space-between
;
align-items
:
center
;
padding
:
10px
0
;
margin-bottom
:
20px
;
.topDiv
{
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
}
.bold-text1
{
border-bottom
:
4px
solid
#0062FF
;
padding-bottom
:
22px
;
height
:
15px
;
font-family
:
PingFangSC-Medium
;
font-weight
:
900
;
font-size
:
18px
;
color
:
#0D162A
;
letter-spacing
:
0
;
line-height
:
15px
;
}
}
</
style
>
</
style
>
src/views/costManage/examineAndApprove/components/projectCostRequestApprove.vue
View file @
49f1a01a
...
@@ -20,6 +20,7 @@
...
@@ -20,6 +20,7 @@
:value=
"dict.value"
/>
:value=
"dict.value"
/>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<!-- 审批页的审批状态:待审批,已通过,未通过-->
<el-form-item
label=
"审批状态"
>
<el-form-item
label=
"审批状态"
>
<el-select
style=
"width: 220px"
v-model=
"queryParams.approveStatus"
placeholder=
"请选择审批状态"
clearable
>
<el-select
style=
"width: 220px"
v-model=
"queryParams.approveStatus"
placeholder=
"请选择审批状态"
clearable
>
<el-option
<el-option
...
@@ -37,20 +38,36 @@
...
@@ -37,20 +38,36 @@
</div
>
</div
>
<div
class=
"contentTable"
>
<div
class=
"contentTable"
>
<!-- 按钮-->
<!-- 标题、按钮-->
<div
style=
"margin-bottom: 30px"
>
<div
class=
"shadow_box_bottom_add"
>
<div
class=
"topDiv"
>
<span
class=
"bold-text1"
style=
""
>
项目费用申请审批
</span>
</div>
<div>
<el-button
class=
"el-button-defalut"
type=
"default"
@
click=
""
>
一键驳回
</el-button>
<el-button
class=
"el-button-defalut"
type=
"default"
@
click=
""
>
一键驳回
</el-button>
<el-button
class=
"el-button-primary"
style=
"margin-left: 20px"
type=
"primary"
@
click=
""
>
一键通过
</el-button>
<el-button
class=
"el-button-primary"
style=
"margin-left: 20px"
type=
"primary"
@
click=
""
>
一键通过
</el-button>
</div>
</div>
</div>
<!-- 步骤条-->
<div
class=
"shadow_box_bottom_step"
>
<text
class=
"text1"
>
审批流程
</text>
<div
class=
"text2"
>
<text>
项目编号
</text>
<text>
{{
changProjectNumber
}}
</text>
</div>
<div
>
<FlowChart
:dataList=
"list"
:itemWidth=
"'130px'"
:activeIndex=
"2"
/>
</div>
</div>
<!-- 列表 -->
<!-- 列表 -->
<el-table
:data=
"projectCostRequestList"
border
>
<el-table
:data=
"projectCostRequestList"
border
>
<el-table-column
type=
"selection"
align=
"center"
></el-table-column>
<el-table-column
type=
"selection"
align=
"center"
></el-table-column>
<el-table-column
prop=
"
shenqingren
"
label=
"申请人"
align=
"center"
></el-table-column>
<el-table-column
prop=
"
createBy
"
label=
"申请人"
align=
"center"
></el-table-column>
<el-table-column
prop=
"createTime"
label=
"申请时间"
align=
"center"
min-width=
"100px"
>
</el-table-column>
<el-table-column
prop=
"createTime"
label=
"申请时间"
align=
"center"
min-width=
"100px"
>
</el-table-column>
<el-table-column
prop=
"projectName"
label=
"项目名称"
align=
"center"
></el-table-column>
<el-table-column
prop=
"projectName"
label=
"项目名称"
align=
"center"
></el-table-column>
<el-table-column
prop=
"projectType"
label=
"项目类型"
align=
"center"
></el-table-column>
<el-table-column
prop=
"projectType"
label=
"项目类型"
align=
"center"
></el-table-column>
<!--
<el-table-column
prop=
"userName"
label=
"事业部负责人"
align=
"center"
></el-table-column>
--
>
<el-table-column
prop=
"userName"
label=
"事业部负责人"
align=
"center"
></el-table-column
>
<el-table-column
prop=
"
expense
Type"
label=
"费用类型"
align=
"center"
></el-table-column>
<el-table-column
prop=
"
cost
Type"
label=
"费用类型"
align=
"center"
></el-table-column>
<el-table-column
prop=
"timeOfExpense"
label=
"费用发生时间"
align=
"center"
></el-table-column>
<el-table-column
prop=
"timeOfExpense"
label=
"费用发生时间"
align=
"center"
></el-table-column>
<el-table-column
prop=
"sumMoney"
label=
"预计金额(元)"
align=
"center"
></el-table-column>
<el-table-column
prop=
"sumMoney"
label=
"预计金额(元)"
align=
"center"
></el-table-column>
<el-table-column
prop=
"approvalStatus"
label=
"审批状态"
align=
"center"
></el-table-column>
<el-table-column
prop=
"approvalStatus"
label=
"审批状态"
align=
"center"
></el-table-column>
...
@@ -86,34 +103,109 @@
...
@@ -86,34 +103,109 @@
<
script
setup
>
<
script
setup
>
import
{
reactive
,
ref
}
from
"vue"
;
import
{
reactive
,
ref
}
from
"vue"
;
const
router
=
useRouter
()
import
{
useRouter
}
from
'vue-router'
const
{
proxy
}
=
getCurrentInstance
();
import
FlowChart
from
'@/components/FlowChart/index.vue'
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'
);
import
{
getProjectName
}
from
"../../../../api/examineAndApprove/examineAndApprove.js"
;
import
{
getCostRequestList
}
from
"../../../../api/projectCostRequest/projectCostRequest.js"
;
const
list
=
ref
([
'个人'
,
'项目经理'
,
'事业部负责人'
,
'财务'
,
'总经理'
])
// 流程图内容,只有值
const
allList
=
ref
([])
// 流程图内容,值和角色id
const
projectCostRequestList
=
ref
([
{
shenqingren
:
'张三'
,
createTime
:
'2025-03-18 10:10:34'
,
projectName
:
'餐饮项目'
,
projectType
:
'RL-人力'
,
userName
:
'ry'
,
expenseType
:
'办公费-宽带费'
,
timeOfExpense
:
'2025-02-01'
,
sumMoney
:
'200'
,
approvalStatus
:
'进行中'
}
]);
const
total
=
ref
(
0
);
const
total
=
ref
(
0
);
const
queryParams
=
reactive
({
const
queryParams
=
reactive
({
pageNum
:
1
,
pageNum
:
1
,
pageSize
:
10
,
pageSize
:
10
,
projectName
:
null
,
projectName
:
null
,
projectNumber
:
null
,
projectType
:
null
,
userName
:
null
,
approveStatus
:
null
approveStatus
:
null
})
})
// 表单 获取所有项目名称
const
projectNameList
=
ref
([]);
const
getAllProjectName
=
()
=>
{
getProjectName
(
queryParams
).
then
(
response
=>
{
console
.
log
(
"项目名称"
,
response
.
data
)
projectNameList
.
value
=
response
.
data
;
});
}
getAllProjectName
()
// 重置表单
const
reset
=
()
=>
{
queryParams
.
projectName
=
null
queryParams
.
projectType
=
null
queryParams
.
approveStatus
=
null
getList
()
}
// 列表
const
projectCostRequestList
=
ref
([]);
const
getList
=
()
=>
{
getCostRequestList
(
queryParams
).
then
(
response
=>
{
total
.
value
=
response
.
total
console
.
log
(
"列表"
,
response
)
projectCostRequestList
.
value
=
response
.
rows
;
});
}
getList
()
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
>
<
style
scoped
lang=
"scss"
>
//步骤条
.shadow_box_bottom_step
{
display
:
flex
;
margin-top
:
10px
;
margin-bottom
:
20px
;
padding
:
20px
0px
;
width
:
100%
;
justify-content
:
space-evenly
;
align-items
:
center
;
background-color
:
#F9F9FA
;
.text1
{
font-size
:
18px
;
font-weight
:
550
;
}
.text2
{
display
:
flex
;
flex-direction
:
column
;
font-size
:
18px
;
align-items
:
center
;
}
.step
{
width
:
80%
;
}
}
//导航 、 按钮
.shadow_box_bottom_add
{
display
:
flex
;
width
:
100%
;
justify-content
:
space-between
;
align-items
:
center
;
padding
:
10px
0
;
margin-bottom
:
20px
;
.topDiv
{
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
}
.bold-text1
{
border-bottom
:
4px
solid
#0062FF
;
padding-bottom
:
22px
;
height
:
15px
;
font-family
:
PingFangSC-Medium
;
font-weight
:
900
;
font-size
:
18px
;
color
:
#0D162A
;
letter-spacing
:
0
;
line-height
:
15px
;
}
}
</
style
>
</
style
>
src/views/costManage/examineAndApprove/components/tripApplicationApprove.vue
View file @
49f1a01a
...
@@ -93,10 +93,28 @@
...
@@ -93,10 +93,28 @@
</div>
</div>
<div
class=
"contentTable"
>
<div
class=
"contentTable"
>
<!-- 按钮-->
<!-- 标题、按钮-->
<div
style=
"margin-bottom: 30px"
>
<div
class=
"shadow_box_bottom_add"
>
<el-button
class=
"el-button-defalut"
type=
"default"
@
click=
""
>
一键驳回
</el-button>
<div
class=
"topDiv"
>
<el-button
class=
"el-button-primary"
style=
"margin-left: 20px"
type=
"primary"
@
click=
""
>
一键通过
</el-button>
<span
class=
"bold-text1"
style=
""
>
出差申请审批
</span>
</div>
<!-- 按钮-->
<div>
<el-button
class=
"el-button-defalut"
type=
"default"
@
click=
""
>
一键驳回
</el-button>
<el-button
class=
"el-button-primary"
style=
"margin-left: 20px"
type=
"primary"
@
click=
""
>
一键通过
</el-button>
</div>
</div>
<!-- 步骤条-->
<div
class=
"shadow_box_bottom_step"
>
<text
class=
"text1"
>
审批流程
</text>
<div
class=
"text2"
>
<text>
项目编号
</text>
<text>
{{}}
</text>
</div>
<div
>
<FlowChart
:dataList=
"list"
:itemWidth=
"'130px'"
:activeIndex=
"2"
/>
</div>
</div>
</div>
<!-- 表格数据 -->
<!-- 表格数据 -->
<el-table
:data=
"projectList"
border
style=
"width: 100%"
>
<el-table
:data=
"projectList"
border
style=
"width: 100%"
>
...
@@ -113,7 +131,7 @@
...
@@ -113,7 +131,7 @@
<el-table-column
label=
"审批状态"
align=
"center"
prop=
"projectStatus"
></el-table-column>
<el-table-column
label=
"审批状态"
align=
"center"
prop=
"projectStatus"
></el-table-column>
<el-table-column
prop=
"detail"
label=
"详情"
align=
"center"
width=
"100px"
>
<el-table-column
prop=
"detail"
label=
"详情"
align=
"center"
width=
"100px"
>
<el-tooltip
content=
"详情"
placement=
"top"
>
<el-tooltip
content=
"详情"
placement=
"top"
>
<el-button
link
type=
"text"
@
click=
"handleView(
scope.row
)"
>
<el-button
link
type=
"text"
@
click=
"handleView()"
>
<img
src=
"@/assets/icons/common/check.png"
height=
"32"
width=
"32"
/>
<img
src=
"@/assets/icons/common/check.png"
height=
"32"
width=
"32"
/>
</el-button>
</el-button>
</el-tooltip>
</el-tooltip>
...
@@ -126,29 +144,29 @@
...
@@ -126,29 +144,29 @@
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
<div
style=
"padding-right: 35%;"
>
<!-- <div style="padding-right: 35%;">--
>
<pagination
<!-- <pagination-->
v-show=
"total > 0"
<!-- v-show="total > 0"-->
:total=
"total"
<!-- :total="total"-->
v-model:page=
"queryParams.pageNum"
<!-- v-model:page="queryParams.pageNum"-->
v-model:limit=
"queryParams.pageSize"
<!-- v-model:limit="queryParams.pageSize"-->
@
pagination=
"getList"
<!-- @pagination="getList"-->
/
>
<!-- />--
>
</div
>
<!-- </div>--
>
</div>
</div>
<!-- 驳回弹出框-->
<!-- 驳回弹出框-->
<el-dialog
top=
"200px"
style=
"width: 745px;height: 300px"
v-model=
"dialogFormVisible"
title=
"驳回"
>
<el-dialog
style=
"width: 745px;height: 300px"
v-model=
"dialogFormVisible"
title=
"驳回"
>
<
template
#
header
>
<
template
#
header
>
<div
style=
"margin-bottom:30px;color: #0D162AFF;font-family: PingFangSC-Regular;font-weight: 600;font-size: 16px;
"
>
驳回
<el-divider
/></div>
<div
class=
"text_weight
"
>
驳回
<el-divider
/></div>
</
template
>
</
template
>
<div
style=
"padding:
5px"
>
<div
style=
"padding:
5px;display: flex;flex-direction:column;"
>
<div
style=
"font-family: PingFangSC-Regular;font-weight: 550;font-size: 16px;color: #0D162A
"
>
驳回原因
</div>
<div
class=
"text
"
>
驳回原因
</div>
<div
style=
"width:
680px
;margin-top:10px"
>
<el-input
:rows=
"3"
type=
"textarea"
v-model=
"form.name"
placeholder=
"请输入驳回原因"
/></div>
<div
style=
"width:
95%
;margin-top:10px"
>
<el-input
:rows=
"3"
type=
"textarea"
v-model=
"form.name"
placeholder=
"请输入驳回原因"
/></div>
</div>
</div>
<
template
#
footer
>
<
template
#
footer
>
<div
style=
"position: absolute;left:
60
%;display: flex"
>
<div
style=
"position: absolute;left:
35
%;display: flex"
>
<el-button
@
click=
"dialogFormVisible = false"
class=
"btn-B"
>
取消
</el-button>
<el-button
@
click=
"dialogFormVisible = false"
class=
"btn-B"
>
取消
</el-button>
<el-button
@
click=
"dialogFormVisible"
class=
"btn-A"
type=
"primary"
>
确定
</el-button>
<el-button
@
click=
"dialogFormVisible"
class=
"btn-A"
type=
"primary"
>
确定
</el-button>
</div>
</div>
...
@@ -161,13 +179,15 @@
...
@@ -161,13 +179,15 @@
<
script
setup
lang=
"ts"
>
<
script
setup
lang=
"ts"
>
import
{
ArrowDown
}
from
"@element-plus/icons-vue"
;
import
{
ArrowDown
}
from
"@element-plus/icons-vue"
;
import
FlowChart
from
'@/components/FlowChart/index.vue'
import
{
ElMessageBox
}
from
"element-plus"
;
import
{
ElMessageBox
}
from
"element-plus"
;
import
{
useRouter
}
from
"vue-router"
;
import
{
useRouter
}
from
"vue-router"
;
import
{
ref
,
getCurrentInstance
,
reactive
,
toRefs
}
from
"vue"
const
router
=
useRouter
();
const
router
=
useRouter
();
const
{
proxy
}
=
getCurrentInstance
();
const
{
proxy
}
=
getCurrentInstance
();
const
{
project_status
,
project_type
}
=
proxy
.
useDict
(
'project_status'
,
'project_type'
);
const
{
project_status
,
project_type
}
=
proxy
.
useDict
(
'project_status'
,
'project_type'
);
const
list
=
ref
([
'个人'
,
'项目经理'
,
'事业部负责人'
,
'财务'
,
'总经理'
])
// 流程图内容,只有值
const
allList
=
ref
([])
// 流程图内容,值和角色id
const
dialogFormVisible
=
ref
(
false
)
const
dialogFormVisible
=
ref
(
false
)
const
projectList
=
ref
([
const
projectList
=
ref
([
...
@@ -213,6 +233,7 @@ const toggleSearch = () => {
...
@@ -213,6 +233,7 @@ const toggleSearch = () => {
isExpanded
.
value
=
!
isExpanded
.
value
;
isExpanded
.
value
=
!
isExpanded
.
value
;
}
}
/** 搜索按钮操作 */
/** 搜索按钮操作 */
function
handleQuery
()
{
function
handleQuery
()
{
...
@@ -222,16 +243,74 @@ function handleQuery() {
...
@@ -222,16 +243,74 @@ function handleQuery() {
function
resetQuery
()
{
function
resetQuery
()
{
}
}
/** 查看详情按钮操作 */
function
handleView
(){
}
</
script
>
</
script
>
<
style
scoped
lang=
"scss"
>
<
style
scoped
lang=
"scss"
>
.el-dialog
:not
(
.is-fullscreen
)
{
//步骤条
margin-top
:
10vh
!
important
;
.shadow_box_bottom_step
{
display
:
flex
;
margin-top
:
10px
;
margin-bottom
:
20px
;
padding
:
20px
0px
;
width
:
100%
;
justify-content
:
space-evenly
;
align-items
:
center
;
background-color
:
#F9F9FA
;
.text1
{
font-size
:
18px
;
font-weight
:
550
;
}
.text2
{
display
:
flex
;
flex-direction
:
column
;
font-size
:
18px
;
align-items
:
center
;
}
.step
{
width
:
80%
;
}
}
//导航 、 按钮
.shadow_box_bottom_add
{
display
:
flex
;
width
:
100%
;
justify-content
:
space-between
;
align-items
:
center
;
padding
:
10px
0
;
.topDiv
{
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
}
.bold-text1
{
border-bottom
:
4px
solid
#0062FF
;
padding-bottom
:
22px
;
height
:
15px
;
font-family
:
"PingFangSC-Medium"
,
sans-serif
;
font-weight
:
900
;
font-size
:
18px
;
color
:
#0D162A
;
letter-spacing
:
0
;
line-height
:
15px
;
}
}
.text_weight
{
font-family
:
"PingFangSC-Medium"
,
sans-serif
;
font-weight
:
600
;
font-size
:
16px
;
}
.bohui
{
font-family
:
"PingFangSC-Medium"
,
sans-serif
;
font-weight
:
500
;
font-size
:
16px
;
color
:
#0D162A
;
}
}
</
style
>
</
style
>
src/views/costManage/examineAndApprove/components/tripReimburseApprove.vue
View file @
49f1a01a
...
@@ -86,11 +86,27 @@
...
@@ -86,11 +86,27 @@
</div>
</div>
<div
class=
"contentTable"
>
<div
class=
"contentTable"
>
<!-- 按钮-->
<!-- 标题、按钮-->
<div
style=
"margin-bottom: 30px;"
>
<div
class=
"shadow_box_bottom_add"
>
<div
class=
"topDiv"
>
<span
class=
"bold-text1"
style=
""
>
差旅报销审批
</span>
</div>
<div>
<el-button
class=
"el-button-defalut"
type=
"default"
@
click=
""
>
一键驳回
</el-button>
<el-button
class=
"el-button-defalut"
type=
"default"
@
click=
""
>
一键驳回
</el-button>
<el-button
class=
"el-button-primary"
style=
"margin-left: 20px"
type=
"primary"
@
click=
""
>
一键通过
</el-button>
<el-button
class=
"el-button-primary"
style=
"margin-left: 20px"
type=
"primary"
@
click=
""
>
一键通过
</el-button>
</div>
</div>
</div>
<!-- 步骤条-->
<div
class=
"shadow_box_bottom_step"
>
<text
class=
"text1"
>
审批流程
</text>
<div
class=
"text2"
>
<text>
项目编号
</text>
<text>
{{
changProjectNumber
}}
</text>
</div>
<div
>
<FlowChart
:dataList=
"list"
:itemWidth=
"'130px'"
:activeIndex=
"2"
/>
</div>
</div>
<!-- 表格数据 -->
<!-- 表格数据 -->
<el-table
v-loading=
"loading"
:data=
"projectList"
border
style=
"width: 100%"
>
<el-table
v-loading=
"loading"
:data=
"projectList"
border
style=
"width: 100%"
>
<el-table-column
type=
"selection"
width=
"40"
align=
"right"
/>
<el-table-column
type=
"selection"
width=
"40"
align=
"right"
/>
...
@@ -160,8 +176,9 @@
...
@@ -160,8 +176,9 @@
<
script
setup
>
<
script
setup
>
import
{
reactive
,
ref
}
from
"vue"
;
import
{
reactive
,
ref
}
from
"vue"
;
import
{
ArrowDown
}
from
"@element-plus/icons-vue"
;
import
{
ArrowDown
}
from
"@element-plus/icons-vue"
;
import
FlowChart
from
'@/components/FlowChart/index.vue'
const
list
=
ref
([
'个人'
,
'项目经理'
,
'事业部负责人'
,
'财务'
,
'总经理'
])
// 流程图内容,只有值
const
allList
=
ref
([])
// 流程图内容,值和角色id
const
dialogFormVisible
=
ref
(
false
)
const
dialogFormVisible
=
ref
(
false
)
const
projectList
=
ref
([
const
projectList
=
ref
([
{
{
...
@@ -218,5 +235,54 @@ function resetQuery() {
...
@@ -218,5 +235,54 @@ function resetQuery() {
<
style
scoped
lang=
"scss"
>
<
style
scoped
lang=
"scss"
>
//步骤条
.shadow_box_bottom_step
{
display
:
flex
;
margin-top
:
10px
;
margin-bottom
:
20px
;
padding
:
20px
0px
;
width
:
100%
;
justify-content
:
space-evenly
;
align-items
:
center
;
background-color
:
#F9F9FA
;
.text1
{
font-size
:
18px
;
font-weight
:
550
;
}
.text2
{
display
:
flex
;
flex-direction
:
column
;
font-size
:
18px
;
align-items
:
center
;
}
.step
{
width
:
80%
;
}
}
//导航 、 按钮
.shadow_box_bottom_add
{
display
:
flex
;
width
:
100%
;
justify-content
:
space-between
;
align-items
:
center
;
padding
:
10px
0
;
margin-bottom
:
10px
;
.topDiv
{
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
}
.bold-text1
{
border-bottom
:
4px
solid
#0062FF
;
padding-bottom
:
22px
;
height
:
15px
;
font-family
:
PingFangSC-Medium
;
font-weight
:
900
;
font-size
:
18px
;
color
:
#0D162A
;
letter-spacing
:
0
;
line-height
:
15px
;
}
}
</
style
>
</
style
>
src/views/costManage/examineAndApprove/index.vue
View file @
49f1a01a
...
@@ -53,7 +53,7 @@ import ProjectCostReimbursementApprove from "./components/projectCostReimburseme
...
@@ -53,7 +53,7 @@ import ProjectCostReimbursementApprove from "./components/projectCostReimburseme
const
activeName
=
ref
(
'first'
);
const
activeName
=
ref
(
'first'
);
const
handleClick
=
(
tab
)
=>
{
const
handleClick
=
(
tab
)
=>
{
console
.
log
(
'点击的标签:'
,
toRaw
(
tab
));
//
console.log('点击的标签:', toRaw(tab));
// 更新当前激活的标签名
// 更新当前激活的标签名
activeName
.
value
=
tab
.
name
;
activeName
.
value
=
tab
.
name
;
}
}
...
@@ -74,12 +74,14 @@ const handleClick = (tab) =>{
...
@@ -74,12 +74,14 @@ const handleClick = (tab) =>{
.tabs_span_color
{
.tabs_span_color
{
font-size
:
16px
;
font-size
:
16px
;
color
:
#5B5B5B
;
color
:
#5B5B5B
;
font-family
:
"Microsoft YaHei"
,
sans-serif
;
font-weight
:
500
;
font-family
:
"PingFangSC-Medium"
,
sans-serif
;
}
}
.tabs_span_colorChange
{
.tabs_span_colorChange
{
font-size
:
16px
;
font-size
:
16px
;
color
:
#0062FF
;
color
:
#0062FF
;
font-family
:
"Microsoft YaHei"
,
sans-serif
;
font-weight
:
500
;
font-family
:
"PingFangSC-Medium"
,
sans-serif
;
}
}
</
style
>
</
style
>
src/views/costManage/projectCostRequest/index.vue
View file @
49f1a01a
...
@@ -2,8 +2,8 @@
...
@@ -2,8 +2,8 @@
<div
class=
"app-container"
>
<div
class=
"app-container"
>
<!-- 搜索表单-->
<!-- 搜索表单-->
<div
class=
"formSearch"
>
<div
class=
"formSearch"
>
<el-form
ref=
"formRef"
:inline=
"true"
:model=
"formInline"
>
<el-form
ref=
"formRef"
:inline=
"true"
:model=
"formInline"
label-width=
"120px"
>
<el-form-item
style=
"margin-right: 60px"
label=
"项目名称"
>
<el-form-item
label=
"项目名称"
>
<el-select
style=
"width: 220px"
v-model=
"queryParams.projectName"
placeholder=
"请选择项目名称"
clearable
>
<el-select
style=
"width: 220px"
v-model=
"queryParams.projectName"
placeholder=
"请选择项目名称"
clearable
>
<el-option
<el-option
v-for=
"item in projectNameList"
v-for=
"item in projectNameList"
...
@@ -12,7 +12,7 @@
...
@@ -12,7 +12,7 @@
:value=
"item"
/>
:value=
"item"
/>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
style=
"margin-right: 60px"
label=
"项目类型"
>
<el-form-item
label=
"项目类型"
>
<el-select
style=
"width: 220px"
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"
...
@@ -31,7 +31,7 @@
...
@@ -31,7 +31,7 @@
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item>
<el-form-item>
<div
style=
"
margin-left: 250px
"
>
<div
style=
"
padding-left: 5.4%
"
>
<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
type=
"primary"
class=
"el-button-primary"
icon=
"Search"
@
click=
"onSearch"
>
搜索
</el-button>
</div>
</div>
...
@@ -102,7 +102,7 @@
...
@@ -102,7 +102,7 @@
<span>
{{
row
.
userName
}}
</span>
<span>
{{
row
.
userName
}}
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"
expense
Type"
label=
"费用类型"
align=
"center"
width=
"200px"
>
<el-table-column
prop=
"
cost
Type"
label=
"费用类型"
align=
"center"
width=
"200px"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<dict-tag
:options=
"project_cost_type"
:value=
"scope.row.costType"
/>
<dict-tag
:options=
"project_cost_type"
:value=
"scope.row.costType"
/>
</
template
>
</
template
>
...
@@ -185,8 +185,7 @@ const queryParams = reactive({
...
@@ -185,8 +185,7 @@ const queryParams = reactive({
pageNum
:
1
,
pageNum
:
1
,
pageSize
:
10
,
pageSize
:
10
,
projectName
:
null
,
projectName
:
null
,
projectNumber
:
null
,
projectType
:
null
,
userName
:
null
,
approveStatus
:
null
approveStatus
:
null
})
})
let
ids
=
ref
([])
let
ids
=
ref
([])
...
@@ -271,9 +270,8 @@ getAllProjectName()
...
@@ -271,9 +270,8 @@ getAllProjectName()
// 重置表单
// 重置表单
const
reset
=
()
=>
{
const
reset
=
()
=>
{
queryParams
.
projectName
=
null
queryParams
.
projectName
=
null
queryParams
.
projectNumber
=
null
queryParams
.
projectType
=
null
queryParams
.
userName
=
null
queryParams
.
approveStatus
=
null
queryParams
.
approvalStatus
=
null
getList
()
getList
()
}
}
// 提交搜索表单
// 提交搜索表单
...
...
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