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
80aa88de
Commit
80aa88de
authored
Mar 07, 2025
by
qyx
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
45858b41
fc4b946b
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
630 additions
and
393 deletions
+630
-393
index.scss
src/assets/styles/index.scss
+1
-0
index.vue
src/views/myTodoList/index.vue
+27
-56
add.vue
src/views/project/add.vue
+388
-321
daily.vue
src/views/tab/daily.vue
+52
-4
projectCost.vue
src/views/tab/projectCost.vue
+54
-4
travel.vue
src/views/tab/travel.vue
+54
-4
workHours.vue
src/views/tab/workHours.vue
+54
-4
No files found.
src/assets/styles/index.scss
View file @
80aa88de
...
...
@@ -123,6 +123,7 @@ aside {
//main-container全局样式
.app-container
{
display
:
flex
;
flex-direction
:
column
;
/* 垂直排列 */
padding
:
20px
;
...
...
src/views/myTodoList/index.vue
View file @
80aa88de
<
template
>
<div
class=
"app-container"
>
<div
class=
"formSearch"
>
<el-tabs
v-model=
"activeName"
class=
"demo-tabs"
@
tab-click=
"handleClick"
>
<el-tab-pane
label=
"日常报销"
name=
"daily"
></el-tab-pane>
<el-tab-pane
label=
"项目费用"
name=
"projectCost"
></el-tab-pane>
<el-tab-pane
label=
"差旅报销"
name=
"travel"
></el-tab-pane>
<el-tab-pane
label=
"工时审批"
name=
"workHours"
></el-tab-pane>
</el-tabs>
<el-form
:inline=
"true"
:model=
"formQuery"
class=
"demo-form-inline"
>
<el-form-item
label=
"项目名称"
>
<el-input
v-model=
"formQuery.user"
placeholder=
"Approved by"
clearable
style=
"width: 220px"
/>
</el-form-item>
<el-form-item
label=
"申请人"
>
<el-select
v-model=
"formQuery.region"
placeholder=
"Activity zone"
clearable
style=
"width: 220px"
>
<el-option
label=
"Zone one"
value=
"shanghai"
/>
<el-option
label=
"Zone two"
value=
"beijing"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"申请时间"
>
<el-date-picker
v-model=
"formQuery.date"
type=
"date"
placeholder=
"Pick a date"
clearable
style=
"width: 220px"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
class=
"el-button-primary"
icon=
"search"
>
搜索
</el-button
>
<el-button
type=
"defalut"
class=
"el-button-defalut"
icon=
"Refresh"
>
重置
</el-button
>
</el-form-item>
</el-form>
</div>
<div
class=
"contentTable"
>
<component
:is=
"dialogComponents[activeName]"
:key=
"activeName"
></component>
<div
class=
"app-container"
>
<div
class=
"contentTab"
>
<el-tabs
v-model=
"activeName"
class=
"demo-tabs"
@
tab-click=
"handleClick"
>
<el-tab-pane
label=
"日常报销"
name=
"daily"
></el-tab-pane>
<el-tab-pane
label=
"项目费用"
name=
"projectCost"
></el-tab-pane>
<el-tab-pane
label=
"差旅报销"
name=
"travel"
></el-tab-pane>
<el-tab-pane
label=
"工时审批"
name=
"workHours"
></el-tab-pane>
</el-tabs>
</div>
<keep-alive>
<component
:is=
"dialogComponents[activeName]"
:key=
"activeName"
></component>
</keep-alive>
</div>
</div>
</
template
>
<
script
setup
>
import
{
daily
,
projectCost
,
travel
,
workHours
}
from
'../tab/tabComponent.js'
...
...
@@ -63,10 +28,16 @@ const dialogComponents = ref({
travel
:
travel
,
workHours
:
workHours
})
const
activeName
=
ref
(
'daily'
)
const
formQuery
=
reactive
({})
const
handleClick
=
value
=>
{
console
.
log
(
activeName
.
value
)
}
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
<
style
scoped
lang=
"scss"
>
.contentTab
{
padding
:
20px
;
background
:
#ffffff
;
}
</
style
>
src/views/project/add.vue
View file @
80aa88de
<
template
>
<div
class=
"app-container"
>
<div
class=
"formSearch"
>
<div
style=
"padding-left: 10px"
>
<span
class=
"bold-text"
style=
"border-bottom: 2px solid #0062FF;"
>
项目立项
</span>
</div>
<div
style=
"padding-top: 20px"
>
<el-form
ref=
"formRef"
:model=
"form"
:rules=
"rules"
label-width=
"auto"
>
<el-row
:gutter=
"150"
>
<el-col
:span=
"10"
>
<el-form-item
label=
"项目名称"
prop=
"projectName"
>
<el-input
v-model=
"form.projectName"
placeholder=
"请输入项目名称"
size=
"large"
style=
"width: 100%"
/>
</el-form-item>
<el-form-item
label=
"项目类型"
prop=
"projectType"
>
<el-select
v-model=
"form.projectType"
placeholder=
"请选择项目类型"
>
<el-option
v-for=
"dict in project_type"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
style=
"width: 100%"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"预计开始时间"
prop=
"startDate"
>
<el-date-picker
v-model=
"form.startDate"
format=
"YYYY/MM/DD"
type=
"date"
placeholder=
"选择日期"
style=
"width: 100%"
size=
"large"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"预计结束时间"
prop=
"endDate"
>
<el-date-picker
size=
"large"
format=
"YYYY/MM/DD"
v-model=
"form.endDate"
type=
"date"
placeholder=
"选择日期"
style=
"width: 100%"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"项目经理"
prop=
"projectManagerId"
>
<el-select
v-model=
"form.projectManagerId"
placeholder=
"请选择项目经理"
size=
"large"
>
<el-option
v-for=
"dict in managerOptions"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
style=
"width: 100%"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"项目成员"
prop=
"projectMemberIds"
>
<el-select
v-model=
"form.projectMemberIds"
placeholder=
"请选择项目成员"
size=
"large"
multiple
filterable
style=
"width: 400px;"
>
<el-option
v-for=
"dict in membersOptions"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"项目成本(元)"
prop=
"projectCost"
>
<el-input
size=
"large"
v-model=
"form.projectCost"
placeholder=
"请输入项目成本"
style=
"width: 100%"
></el-input>
</el-form-item>
<el-form-item
label=
"项目描述"
prop=
"projectDescribe"
>
<el-input
size=
"large"
type=
"textarea"
v-model=
"form.projectDescribe"
placeholder=
"请输入项目描述"
:autosize=
"
{ minRows: 5, maxRows: 10 }"
style="width: 100%"
>
</el-input>
</el-form-item>
<el-form-item
label=
"项目状态"
prop=
"projectStatus"
>
<el-select
v-model=
"form.projectStatus"
placeholder=
"请选择项目状态"
size=
"large"
>
<el-option
v-for=
"dict in project_status"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"项目附件"
>
<el-upload
list-type=
"text"
v-model:file-list=
"form.fileList"
action=
"https://jsonplaceholder.typicode.com/posts/"
:on-preview=
"handlePreview"
:on-remove=
"handleRemove"
:before-remove=
"beforeRemove"
:file-list=
"form.fileList"
:on-exceed=
"handleExceed"
:auto-upload=
"false"
:on-success=
"handleSuccess"
>
<el-button
size=
"large"
type=
"text"
>
点击上传
</el-button>
</el-upload>
</el-form-item>
</el-col>
<el-col
:span=
"10"
>
<el-form-item
label=
"项目回款笔数"
>
<el-select
v-model=
"form.repaymentCount"
placeholder=
"请选择项目回款笔数"
@
change=
"updateRepaymentInputs"
size=
"large"
>
<el-option
v-for=
"num in 10"
:key=
"num"
:label=
"num"
:value=
"num"
></el-option>
</el-select>
</el-form-item>
<el-form
:model=
"form"
label-width=
"80px"
>
<div
v-for=
"(item, index) in form.repaymentDetails"
:key=
"index"
>
<el-row>
<el-col
:span=
"12"
>
<!-- 回款比例 -->
<el-form-item
:label=
"'第 ' + (index + 1) + ' 笔'"
>
<el-input
v-model=
"item.repaymentPercentage"
placeholder=
"请输入回款比例"
width=
"100%"
>
<template
#
suffix
>
%
</
template
>
</el-input>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<!-- 回款条件 -->
<el-form-item
label=
"回款前置条件"
>
<el-input
v-model=
"item.repaymentCondition"
placeholder=
"请输入前置条件"
width=
"100%"
></el-input>
</el-form-item>
</el-col>
</el-row>
<div
class=
"app-container"
>
<div
class=
"content"
>
<div
style=
"padding-left: 10px"
>
<span
class=
"bold-text"
style=
"border-bottom: 2px solid #0062ff"
>
项目立项
</span
>
</div>
<div
style=
"padding-top: 20px"
>
<el-form
ref=
"formRef"
:model=
"form"
:rules=
"rules"
label-width=
"auto"
>
<el-row
:gutter=
"150"
>
<el-col
:span=
"10"
>
<el-form-item
label=
"项目名称"
prop=
"projectName"
>
<el-input
v-model=
"form.projectName"
placeholder=
"请输入项目名称"
size=
"large"
style=
"width: 100%"
/>
</el-form-item>
<el-form-item
label=
"项目类型"
prop=
"projectType"
>
<el-select
v-model=
"form.projectType"
placeholder=
"请选择项目类型"
>
<el-option
v-for=
"dict in project_type"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
style=
"width: 100%"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"预计开始时间"
prop=
"startDate"
>
<el-date-picker
v-model=
"form.startDate"
format=
"YYYY/MM/DD"
type=
"date"
placeholder=
"选择日期"
style=
"width: 100%"
size=
"large"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"预计结束时间"
prop=
"endDate"
>
<el-date-picker
v-model=
"form.endDate"
size=
"large"
format=
"YYYY/MM/DD"
type=
"date"
placeholder=
"选择日期"
style=
"width: 100%"
>
</el-date-picker>
</el-form-item>
<el-form-item
label=
"项目经理"
prop=
"projectManagerId"
>
<el-select
v-model=
"form.projectManagerId"
placeholder=
"请选择项目经理"
size=
"large"
>
<el-option
v-for=
"dict in managerOptions"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
style=
"width: 100%"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"项目成员"
prop=
"projectMemberIds"
>
<el-select
v-model=
"form.projectMemberIds"
placeholder=
"请选择项目成员"
size=
"large"
multiple
filterable
style=
"width: 400px"
>
<el-option
v-for=
"dict in membersOptions"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"项目成本(元)"
prop=
"projectCost"
>
<el-input
v-model=
"form.projectCost"
size=
"large"
placeholder=
"请输入项目成本"
style=
"width: 100%"
></el-input>
</el-form-item>
<el-form-item
label=
"项目描述"
prop=
"projectDescribe"
>
<el-input
v-model=
"form.projectDescribe"
size=
"large"
type=
"textarea"
placeholder=
"请输入项目描述"
:autosize=
"
{ minRows: 5, maxRows: 10 }"
style="width: 100%"
>
</el-input>
</el-form-item>
<el-form-item
label=
"项目状态"
prop=
"projectStatus"
>
<el-select
v-model=
"form.projectStatus"
placeholder=
"请选择项目状态"
size=
"large"
>
<el-option
v-for=
"dict in project_status"
:key=
"dict.value"
:label=
"dict.label"
:value=
"dict.value"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"项目附件"
>
<el-upload
v-model:file-list=
"form.fileList"
list-type=
"text"
action=
"https://jsonplaceholder.typicode.com/posts/"
:on-preview=
"handlePreview"
:on-remove=
"handleRemove"
:before-remove=
"beforeRemove"
:file-list=
"form.fileList"
:on-exceed=
"handleExceed"
:auto-upload=
"false"
:on-success=
"handleSuccess"
>
<el-button
size=
"large"
type=
"text"
>
点击上传
</el-button
>
</el-upload>
</el-form-item>
</el-col>
<el-col
:span=
"10"
>
<el-form-item
label=
"项目回款笔数"
>
<el-select
v-model=
"form.repaymentCount"
placeholder=
"请选择项目回款笔数"
size=
"large"
@
change=
"updateRepaymentInputs"
>
<el-option
v-for=
"num in 10"
:key=
"num"
:label=
"num"
:value=
"num"
></el-option>
</el-select>
</el-form-item>
<el-form
:model=
"form"
label-width=
"80px"
>
<div
v-for=
"(
item, index
) in form.repaymentDetails"
:key=
"index"
>
<el-row>
<el-col
:span=
"12"
>
<!-- 回款比例 -->
<el-form-item
:label=
"
'第 ' + (index + 1) + ' 笔'
"
>
<el-input
v-model=
"
item.repaymentPercentage
"
placeholder=
"请输入回款比例"
width=
"100%"
>
<template
#
suffix
>
%
</
template
>
</el-input>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<!-- 回款条件 -->
<el-form-item
label=
"回款前置条件"
>
<el-input
v-model=
"
item.repaymentCondition
"
placeholder=
"请输入前置条件"
width=
"100%"
></el-input>
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
</el-col>
</el-row>
<el-form-item
style=
"padding-left: 75%"
>
<el-button
size=
"large"
class=
"btn-B"
@
click=
"reset"
>
返 回
</el-button
>
<el-button
size=
"large"
type=
"primary"
class=
"btn-A"
@
click=
"saveDraft"
>
保存草稿
</el-button
>
<el-button
size=
"large"
type=
"primary"
class=
"btn-A"
@
click=
"handleSubmit"
>
提 交
</el-button
>
</el-form-item>
</el-form>
</div>
</div>
</el-form>
</el-col>
</el-row>
<el-form-item
style=
"padding-left: 75%"
>
<el-button
size=
"large"
@
click=
"reset"
class=
"btn-B"
>
返 回
</el-button>
<el-button
size=
"large"
type=
"primary"
@
click=
"saveDraft"
class=
"btn-A"
>
保存草稿
</el-button>
<el-button
size=
"large"
type=
"primary"
@
click=
"handleSubmit"
class=
"btn-A"
>
提 交
</el-button>
</el-form-item>
</el-form>
</div>
</div>
</div>
</template>
<
script
setup
name=
"add"
>
import
{
listUser
}
from
"../../api/system/user.js"
;
import
{
addDraft
,
addProject
}
from
"../../api/project/project.js"
;
import
{
listUser
}
from
'../../api/system/user.js'
import
{
addDraft
,
addProject
}
from
'../../api/project/project.js'
const
{
proxy
}
=
getCurrentInstance
();
const
{
project_status
,
project_type
}
=
proxy
.
useDict
(
'project_status'
,
'project_type'
);
const
{
proxy
}
=
getCurrentInstance
()
const
{
project_status
,
project_type
}
=
proxy
.
useDict
(
'project_status'
,
'project_type'
)
const
formRef
=
ref
()
const
headOptions
=
ref
([])
const
managerOptions
=
ref
([])
const
membersOptions
=
ref
([])
const
form
=
reactive
({
id
:
''
,
projectName
:
''
,
projectType
:
''
,
startDate
:
''
,
endDate
:
''
,
departmentLeadId
:
''
,
projectManagerId
:
''
,
projectMemberIds
:
[],
projectCost
:
''
,
projectDescribe
:
''
,
projectStatus
:
''
,
fileList
:
[],
repaymentCount
:
null
,
repaymentDetails
:
[],
draft
:
''
id
:
''
,
projectName
:
''
,
projectType
:
''
,
startDate
:
''
,
endDate
:
''
,
departmentLeadId
:
''
,
projectManagerId
:
''
,
projectMemberIds
:
[],
projectCost
:
''
,
projectDescribe
:
''
,
projectStatus
:
''
,
fileList
:
[],
repaymentCount
:
null
,
repaymentDetails
:
[],
draft
:
''
})
const
rules
=
ref
({
projectName
:
[
{
required
:
true
,
message
:
'项目名称不能为空'
,
trigger
:
'blur'
}
],
projectType
:
[
{
required
:
true
,
message
:
'项目类型不能为空'
,
trigger
:
'blur'
}
],
startDate
:
[
{
required
:
true
,
message
:
'预计开始时间不能为空'
,
trigger
:
'blur'
}
],
endDate
:
[
{
required
:
true
,
message
:
'预计结束时间不能为空'
,
trigger
:
'blur'
}
],
departmentLeadId
:
[
{
required
:
true
,
message
:
'部门负责人不能为空'
,
trigger
:
'blur'
}
],
projectManagerId
:
[
{
required
:
true
,
message
:
'项目经理不能为空'
,
trigger
:
'blur'
}
],
projectCost
:
[
{
required
:
true
,
message
:
'项目成本不能为空'
,
trigger
:
'blur'
}
],
projectStatus
:
[
{
required
:
true
,
message
:
'项目状态不能为空'
,
trigger
:
'blur'
}
]
projectName
:
[
{
required
:
true
,
message
:
'项目名称不能为空'
,
trigger
:
'blur'
}
],
projectType
:
[
{
required
:
true
,
message
:
'项目类型不能为空'
,
trigger
:
'blur'
}
],
startDate
:
[
{
required
:
true
,
message
:
'预计开始时间不能为空'
,
trigger
:
'blur'
}
],
endDate
:
[
{
required
:
true
,
message
:
'预计结束时间不能为空'
,
trigger
:
'blur'
}
],
departmentLeadId
:
[
{
required
:
true
,
message
:
'部门负责人不能为空'
,
trigger
:
'blur'
}
],
projectManagerId
:
[
{
required
:
true
,
message
:
'项目经理不能为空'
,
trigger
:
'blur'
}
],
projectCost
:
[
{
required
:
true
,
message
:
'项目成本不能为空'
,
trigger
:
'blur'
}
],
projectStatus
:
[
{
required
:
true
,
message
:
'项目状态不能为空'
,
trigger
:
'blur'
}
]
})
const
getUserList
=
()
=>
{
listUser
().
then
(
response
=>
{
headOptions
.
value
=
response
.
rows
.
map
(
item
=>
{
return
{
value
:
item
.
userId
,
label
:
item
.
nickName
}
})
managerOptions
.
value
=
response
.
rows
.
map
(
item
=>
{
return
{
value
:
item
.
userId
,
label
:
item
.
nickName
}
listUser
().
then
(
response
=>
{
headOptions
.
value
=
response
.
rows
.
map
(
item
=>
{
return
{
value
:
item
.
userId
,
label
:
item
.
nickName
}
})
managerOptions
.
value
=
response
.
rows
.
map
(
item
=>
{
return
{
value
:
item
.
userId
,
label
:
item
.
nickName
}
})
membersOptions
.
value
=
response
.
rows
.
map
(
item
=>
{
return
{
value
:
item
.
userId
,
label
:
item
.
nickName
}
})
})
membersOptions
.
value
=
response
.
rows
.
map
(
item
=>
{
return
{
value
:
item
.
userId
,
label
:
item
.
nickName
}
})
})
}
// 提交表单
const
handleSubmit
=
()
=>
{
proxy
.
$refs
[
"formRef"
].
validate
(
valid
=>
{
if
(
valid
)
{
form
.
draft
=
'1'
addProject
(
form
).
then
(
response
=>
{
if
(
response
.
code
===
200
){
proxy
.
$modal
.
msgSuccess
(
"新增成功"
);
resetForm
()
proxy
.
$router
.
push
({
path
:
'/project'
})
}
else
{
proxy
.
$modal
.
msgError
(
response
.
msg
)
proxy
.
$refs
[
'formRef'
].
validate
(
valid
=>
{
if
(
valid
)
{
form
.
draft
=
'1'
addProject
(
form
).
then
(
response
=>
{
if
(
response
.
code
===
200
)
{
proxy
.
$modal
.
msgSuccess
(
'新增成功'
)
resetForm
()
proxy
.
$router
.
push
({
path
:
'/project'
})
}
else
{
proxy
.
$modal
.
msgError
(
response
.
msg
)
}
})
}
});
}
});
})
}
// 新增草稿
const
saveDraft
=
()
=>
{
proxy
.
$refs
[
"formRef"
].
validate
(
valid
=>
{
if
(
valid
)
{
proxy
.
$confirm
(
'确认提交吗?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
addDraft
(
form
).
then
(
response
=>
{
if
(
response
.
code
===
200
){
proxy
.
$modal
.
msgSuccess
(
"草稿保存成功"
);
}
else
{
proxy
.
$modal
.
msgError
(
response
.
msg
)
proxy
.
$refs
[
'formRef'
].
validate
(
valid
=>
{
if
(
valid
)
{
proxy
.
$confirm
(
'确认提交吗?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
})
.
then
(()
=>
{
addDraft
(
form
).
then
(
response
=>
{
if
(
response
.
code
===
200
)
{
proxy
.
$modal
.
msgSuccess
(
'草稿保存成功'
)
}
else
{
proxy
.
$modal
.
msgError
(
response
.
msg
)
}
})
})
.
catch
(()
=>
{})
}
});
}).
catch
(()
=>
{})
}
});
})
}
// 重置表单
const
resetForm
=
()
=>
{
form
.
projectName
=
''
form
.
projectType
=
''
form
.
startDate
=
''
form
.
endDate
=
''
form
.
departmentLeadId
=
''
form
.
projectManagerId
=
''
form
.
projectMemberIds
=
[]
form
.
projectCost
=
''
form
.
projectDescribe
=
''
form
.
projectStatus
=
''
form
.
fileList
=
[]
form
.
repaymentCount
=
''
form
.
repaymentDetails
=
[]
form
.
draft
=
''
form
.
projectName
=
''
form
.
projectType
=
''
form
.
startDate
=
''
form
.
endDate
=
''
form
.
departmentLeadId
=
''
form
.
projectManagerId
=
''
form
.
projectMemberIds
=
[]
form
.
projectCost
=
''
form
.
projectDescribe
=
''
form
.
projectStatus
=
''
form
.
fileList
=
[]
form
.
repaymentCount
=
''
form
.
repaymentDetails
=
[]
form
.
draft
=
''
}
// 返回项目管理页面
const
reset
=
()
=>
{
// 返回项目
proxy
.
$router
.
push
({
path
:
'/project'
})
resetForm
()
// 返回项目
proxy
.
$router
.
push
({
path
:
'/project'
})
resetForm
()
}
const
updateRepaymentInputs
=
()
=>
{
// 根据用户输入的回款笔数更新百分比输入框的数量
if
(
form
.
repaymentCount
>
0
)
{
form
.
repaymentDetails
=
Array
.
from
({
length
:
form
.
repaymentCount
},
()
=>
({
repaymentPercentage
:
null
,
// 回款百分比
repaymentCondition
:
""
// 回款前置条件
}));
}
else
{
form
.
repaymentDetails
=
[];
}
// 根据用户输入的回款笔数更新百分比输入框的数量
if
(
form
.
repaymentCount
>
0
)
{
form
.
repaymentDetails
=
Array
.
from
(
{
length
:
form
.
repaymentCount
},
()
=>
({
repaymentPercentage
:
null
,
// 回款百分比
repaymentCondition
:
''
// 回款前置条件
})
)
}
else
{
form
.
repaymentDetails
=
[]
}
}
// 删除附件相关事件
const
handleRemove
=
(
file
,
fileList
)
=>
{
console
.
log
(
file
,
fileList
)
console
.
log
(
file
,
fileList
)
}
// 预览附件相关事件
const
handlePreview
=
(
file
)
=>
{
console
.
log
(
file
)
const
handlePreview
=
file
=>
{
console
.
log
(
file
)
}
// 上传附件数量限制
const
handleExceed
=
(
files
,
fileList
)
=>
{
this
.
$message
.
warning
(
`当前限制选择 3 个文件,本次选择了
${
files
.
length
}
个文件,共选择了
${
files
.
length
+
fileList
.
length
}
个文件`
);
this
.
$message
.
warning
(
`当前限制选择 3 个文件,本次选择了
${
files
.
length
}
个文件,共选择了
${
files
.
length
+
fileList
.
length
}
个文件`
)
}
// 上传附件删除相关事件
const
beforeRemove
=
(
file
,
fileList
)
=>
{
return
this
.
$confirm
(
`确定移除
${
file
.
name
}
?`
);
return
this
.
$confirm
(
`确定移除
${
file
.
name
}
?`
)
}
// 上传附件成功相关事件
// 在组件挂载时执行
onMounted
(()
=>
{
getUserList
()
})
;
getUserList
()
})
</
script
>
<
style
scoped
lang=
"scss"
>
.contentA
{
height
:
auto
;
padding
:
20px
;
margin-bottom
:
10px
;
background
:
#FFFFFF
;
box-shadow
:
0
2px
2px
0
#b3b3b3
80
;
border-radius
:
2px
;
overflow
:
hidden
;
.contentA
{
height
:
auto
;
padding
:
20px
;
margin-bottom
:
10px
;
background
:
#ffffff
;
box-shadow
:
0
2px
2px
0
#b3b3b3
80
;
border-radius
:
2px
;
overflow
:
hidden
;
}
.bold-text
{
width
:
72px
;
height
:
15px
;
font-family
:
PingFangSC-Medium
;
font-weight
:
900
;
font-size
:
18px
;
color
:
#0D162A
;
letter-spacing
:
0
;
line-height
:
15px
;
width
:
72px
;
height
:
15px
;
font-family
:
PingFangSC-Medium
;
font-weight
:
900
;
font-size
:
18px
;
color
:
#0d162a
;
letter-spacing
:
0
;
line-height
:
15px
;
}
</
style
>
src/views/tab/daily.vue
View file @
80aa88de
<
script
setup
></
script
>
<
template
>
<div>
1
</div>
<div
style=
"display: flex; flex-direction: column; flex: 1"
>
<div
class=
"formSearch"
>
<el-form
:inline=
"true"
:model=
"formQuery"
class=
"demo-form-inline"
>
<el-form-item
label=
"项目名称"
>
<el-input
v-model=
"formQuery.user"
placeholder=
"Approved by"
clearable
style=
"width: 220px"
/>
</el-form-item>
<el-form-item
label=
"申请人"
>
<el-select
v-model=
"formQuery.region"
placeholder=
"Activity zone"
clearable
style=
"width: 220px"
>
<el-option
label=
"Zone one"
value=
"shanghai"
/>
<el-option
label=
"Zone two"
value=
"beijing"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"申请时间"
>
<el-date-picker
v-model=
"formQuery.date"
type=
"date"
placeholder=
"Pick a date"
clearable
style=
"width: 220px"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
class=
"el-button-primary"
icon=
"search"
>
搜索
</el-button
>
<el-button
type=
"defalut"
class=
"el-button-defalut"
icon=
"Refresh"
>
重置
</el-button
>
</el-form-item>
</el-form>
</div>
<div
class=
"contentTable"
>
1
</div>
</div>
</
template
>
<
script
setup
>
const
formQuery
=
reactive
({})
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
src/views/tab/projectCost.vue
View file @
80aa88de
<
script
setup
></
script
>
<
template
><div>
2
</div></
template
>
<
template
>
<div
style=
"display: flex; flex-direction: column; flex: 1"
>
<div
class=
"formSearch"
>
<el-form
:inline=
"true"
:model=
"formQuery"
class=
"demo-form-inline"
>
<el-form-item
label=
"项目名称"
>
<el-input
v-model=
"formQuery.user"
placeholder=
"Approved by"
clearable
style=
"width: 220px"
/>
</el-form-item>
<el-form-item
label=
"申请人"
>
<el-select
v-model=
"formQuery.region"
placeholder=
"Activity zone"
clearable
style=
"width: 220px"
>
<el-option
label=
"Zone one"
value=
"shanghai"
/>
<el-option
label=
"Zone two"
value=
"beijing"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"申请时间"
>
<el-date-picker
v-model=
"formQuery.date"
type=
"date"
placeholder=
"Pick a date"
clearable
style=
"width: 220px"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
class=
"el-button-primary"
icon=
"search"
>
搜索
</el-button
>
<el-button
type=
"defalut"
class=
"el-button-defalut"
icon=
"Refresh"
>
重置
</el-button
>
</el-form-item>
</el-form>
</div>
<div
class=
"contentTable"
>
2
</div>
</div>
</
template
>
<
script
setup
>
const
formQuery
=
reactive
({})
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
src/views/tab/travel.vue
View file @
80aa88de
<
script
setup
></
script
>
<
template
><div>
3
</div></
template
>
<
template
>
<div
style=
"display: flex; flex-direction: column; flex: 1"
>
<div
class=
"formSearch"
>
<el-form
:inline=
"true"
:model=
"formQuery"
class=
"demo-form-inline"
>
<el-form-item
label=
"项目名称"
>
<el-input
v-model=
"formQuery.user"
placeholder=
"Approved by"
clearable
style=
"width: 220px"
/>
</el-form-item>
<el-form-item
label=
"申请人"
>
<el-select
v-model=
"formQuery.region"
placeholder=
"Activity zone"
clearable
style=
"width: 220px"
>
<el-option
label=
"Zone one"
value=
"shanghai"
/>
<el-option
label=
"Zone two"
value=
"beijing"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"申请时间"
>
<el-date-picker
v-model=
"formQuery.date"
type=
"date"
placeholder=
"Pick a date"
clearable
style=
"width: 220px"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
class=
"el-button-primary"
icon=
"search"
>
搜索
</el-button
>
<el-button
type=
"defalut"
class=
"el-button-defalut"
icon=
"Refresh"
>
重置
</el-button
>
</el-form-item>
</el-form>
</div>
<div
class=
"contentTable"
>
3
</div>
</div>
</
template
>
<
script
setup
>
const
formQuery
=
reactive
({})
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
src/views/tab/workHours.vue
View file @
80aa88de
<
script
setup
></
script
>
<
template
><div>
4
</div></
template
>
<
template
>
<div
style=
"display: flex; flex-direction: column; flex: 1"
>
<div
class=
"formSearch"
>
<el-form
:inline=
"true"
:model=
"formQuery"
class=
"demo-form-inline"
>
<el-form-item
label=
"项目名称"
>
<el-input
v-model=
"formQuery.user"
placeholder=
"Approved by"
clearable
style=
"width: 220px"
/>
</el-form-item>
<el-form-item
label=
"申请人"
>
<el-select
v-model=
"formQuery.region"
placeholder=
"Activity zone"
clearable
style=
"width: 220px"
>
<el-option
label=
"Zone one"
value=
"shanghai"
/>
<el-option
label=
"Zone two"
value=
"beijing"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"申请时间"
>
<el-date-picker
v-model=
"formQuery.date"
type=
"date"
placeholder=
"Pick a date"
clearable
style=
"width: 220px"
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
class=
"el-button-primary"
icon=
"search"
>
搜索
</el-button
>
<el-button
type=
"defalut"
class=
"el-button-defalut"
icon=
"Refresh"
>
重置
</el-button
>
</el-form-item>
</el-form>
</div>
<div
class=
"contentTable"
>
4
</div>
</div>
</
template
>
<
script
setup
>
const
formQuery
=
reactive
({})
</
script
>
<
style
scoped
lang=
"scss"
></
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