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
afd9ed00
Commit
afd9ed00
authored
Mar 07, 2025
by
wangjiancheng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:项目管理
parent
8473aed1
Changes
6
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
955 additions
and
482 deletions
+955
-482
project.js
src/api/project/project.js
+1
-1
add.vue
src/views/project/add.vue
+171
-44
draft.vue
src/views/project/draft.vue
+206
-112
edit.vue
src/views/project/edit.vue
+194
-63
index.vue
src/views/project/index.vue
+165
-131
view.vue
src/views/project/view.vue
+218
-131
No files found.
src/api/project/project.js
View file @
afd9ed00
...
...
@@ -53,7 +53,7 @@ export function listDraft(query) {
}
// 新增草稿箱
export
function
addDraft
(
data
)
{
data
.
darft
=
'0'
//
data.darft = '0'
return
request
({
url
:
'/system/project/draft'
,
method
:
'post'
,
...
...
src/views/project/add.vue
View file @
afd9ed00
This diff is collapsed.
Click to expand it.
src/views/project/draft.vue
View file @
afd9ed00
This diff is collapsed.
Click to expand it.
src/views/project/edit.vue
View file @
afd9ed00
This diff is collapsed.
Click to expand it.
src/views/project/index.vue
View file @
afd9ed00
This diff is collapsed.
Click to expand it.
src/views/project/view.vue
View file @
afd9ed00
<
template
>
<div
class=
"app-container"
>
<el-form
:model=
"form"
label-width=
"auto"
>
<el-form-item
label=
"项目编号"
prop=
"projectNumber"
>
<el-input
v-model=
"form.projectNumber"
placeholder=
"请输入项目编号"
disabled
></el-input>
<div
class=
"contentA"
>
<div
style=
"padding-left: 10px"
>
<span
class=
"bold-text"
style=
"border-bottom: 2px solid blue;"
>
项目详情
</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=
"项目编号"
>
<el-input
v-model=
"form.projectNumber"
disabled
size=
"large"
style=
"width: 100%"
readonly
/>
</el-form-item>
<el-form-item
label=
"项目名称"
prop=
"projectName"
>
<el-input
v-model=
"form.projectName"
placeholder=
"请输入项目名称"
readonly
></el-input>
<el-form-item
label=
"项目名称"
>
<el-input
v-model=
"form.projectName"
size=
"large"
style=
"width: 100%"
readonly
/>
</el-form-item>
<el-form-item
label=
"项目类型"
prop=
"projectType"
>
<el-form-item
label=
"项目类型"
>
<el-select
v-model=
"form.projectType"
placeholder=
"请选择项目类型"
readonly
>
style=
"width: 100%"
size=
"large"
disabled
>
<el-option
v-for=
"dict in project_type"
:key=
"dict.value"
...
...
@@ -20,34 +40,41 @@
/>
</el-select>
</el-form-item>
<el-form-item
label=
"开始
时间"
>
<el-form-item
label=
"预计结束
时间"
>
<el-date-picker
v-model=
"form.startDate"
format=
"YYYY/MM/DD"
type=
"date"
placeholder=
"选择日期"
style=
"width: 100%"
size=
"large"
readonly
></el-date-picker
>
/
>
</el-form-item>
<el-form-item
label=
"结束
时间"
>
<el-form-item
label=
"预计开始
时间"
>
<el-date-picker
v-model=
"form.endDate"
format=
"YYYY/MM/DD"
type=
"date"
placeholder=
"选择日期"
style=
"width: 100%"
size=
"large"
readonly
></el-date-picker
>
/
>
</el-form-item>
<el-form-item
label=
"
部门负责人"
>
<el-form-item
label=
"事业
部门负责人"
>
<el-input
v-model=
"form.departmentLeaderName"
placeholder=
"请输入部门负责人名称"
disabled
></el-input>
style=
"width: 100%"
size=
"large"
/>
</el-form-item>
<el-form-item
label=
"项目经理"
>
<el-select
v-model=
"form.projectManagerId"
placeholder=
"请选择项目经理"
readonly
>
disabled
style=
"width: 100%"
size=
"large"
>
<el-option
v-for=
"dict in managerOptions"
:key=
"dict.value"
...
...
@@ -59,9 +86,12 @@
<el-form-item
label=
"项目成员"
>
<el-select
v-model=
"form.projectMemberIds"
size=
"large"
multiple
placeholder=
"请选择项目成员"
readonly
>
filterable
disabled
style=
"width: 100%;"
>
<el-option
v-for=
"dict in membersOptions"
:key=
"dict.value"
...
...
@@ -73,22 +103,25 @@
<el-form-item
label=
"项目成本(元)"
>
<el-input
v-model=
"form.projectCost"
placeholder=
"请输入项目成本"
size=
"large"
style=
"width: 100%"
readonly
></el-input
>
/
>
</el-form-item>
<el-form-item
label=
"项目描述"
>
<el-input
v-model=
"form.projectDescribe"
type=
"textarea"
placeholder=
"请输入项目描述"
:autosize=
"
{ minRows: 5, maxRows: 7 }"
size="large"
style="width: 100%"
readonly
></el-input
>
/
>
</el-form-item>
<el-form-item
label=
"项目状态"
>
<el-select
v-model=
"form.projectStatus"
placeholder=
"请选择项目状态"
disabled
>
<el-option
v-for=
"dict in project_status"
...
...
@@ -99,37 +132,73 @@
</el-select>
</el-form-item>
<el-form-item
label=
"项目附件"
>
<!-- 展示已上传的附件 -->
<ul>
<li
v-for=
"(file, index) in fileList"
:key=
"index"
>
<a
:href=
"file.url"
target=
"_blank"
>
{{
file
.
name
}}
</a>
</li>
</ul>
<el-upload
list-type=
"text"
v-model:file-list=
"form.fileList"
class=
"upload-demo"
action=
"https://jsonplaceholder.typicode.com/posts/"
:on-preview=
"handlePreview"
:on-exceed=
"handleExceed"
>
</el-upload>
</el-form-item>
</el-col>
<el-col
:span=
"10"
>
<el-form-item
label=
"项目回款笔数"
>
<el-input
v-model=
"form.repaymentCount"
readonly
></el-input>
<el-select
v-model=
"form.repaymentCount"
@
change=
"updateRepaymentInputs"
size=
"large"
disabled
>
<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=
"12
0px"
>
<el-form
:model=
"form"
label-width=
"8
0px"
>
<div
v-for=
"(item, index) in form.repaymentDetails"
:key=
"index"
>
<el-row>
<el-col
:span=
"5
"
>
<el-col
:span=
"12
"
>
<!-- 回款比例 -->
<el-form-item
:label=
"'第 ' + (index + 1) + ' 笔'"
>
<el-input
v-model=
"item.repaymentPercentage"
suffix=
"%"
readonly
></el-input>
<el-input
v-model=
"item.repaymentPercentage"
width=
"100%"
readonly
>
<template
#
suffix
>
%
</
template
>
</el-input>
</el-form-item>
</el-col>
<el-col
:span=
"5
"
>
<el-col
:span=
"12
"
>
<!-- 回款条件 -->
<el-form-item>
<el-input
v-model=
"item.repaymentCondition"
readonly
></el-input>
<el-form-item
label=
"回款前置条件"
>
<el-input
v-model=
"item.repaymentCondition"
width=
"100%"
readonly
></el-input>
</el-form-item>
</el-col>
</el-row>
</div>
</el-form>
</el-col>
</el-row>
<el-form-item>
<div
style=
" margin-left: auto;margin-right: 25px"
>
<el-button
size=
"large"
class=
"btn-B"
@
click=
"reset"
>
返回
</el-button>
</div>
</el-form-item>
</el-form>
<div>
<el-button
@
click=
"reset"
>
取消
</el-button>
</div>
</div>
</div>
</template>
...
...
@@ -158,7 +227,7 @@ const form = ref({
repaymentCount
:
''
,
repaymentDetails
:
[],
})
const
repaymentDetails
=
ref
([])
const
headOptions
=
ref
([])
const
managerOptions
=
ref
([])
const
membersOptions
=
ref
([])
...
...
@@ -205,5 +274,23 @@ onMounted(() => {
</
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
;
}
.bold-text
{
width
:
72px
;
height
:
15px
;
font-family
:
PingFangSC-Medium
;
font-weight
:
900
;
font-size
:
18px
;
color
:
#0D162A
;
letter-spacing
:
0
;
line-height
:
15px
;
}
</
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