Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
dsk-operate-sys-cscec
Project
Project
Details
Activity
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
fulixin
dsk-operate-sys-cscec
Commits
5df1e280
Commit
5df1e280
authored
Jun 09, 2023
by
MyName
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
项目管理
parent
3286a077
Changes
16
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
101 additions
and
57 deletions
+101
-57
icol1.png
dsk-operate-ui/src/assets/images/project/icol1.png
+0
-0
icol2.png
dsk-operate-ui/src/assets/images/project/icol2.png
+0
-0
icol3.png
dsk-operate-ui/src/assets/images/project/icol3.png
+0
-0
icor1.png
dsk-operate-ui/src/assets/images/project/icor1.png
+0
-0
icor2.png
dsk-operate-ui/src/assets/images/project/icor2.png
+0
-0
icor3.png
dsk-operate-ui/src/assets/images/project/icor3.png
+0
-0
project.scss
dsk-operate-ui/src/assets/styles/project.scss
+7
-0
download.js
dsk-operate-ui/src/plugins/download.js
+2
-1
index.vue
dsk-operate-ui/src/views/custom/customList/index.vue
+11
-12
batchImport.vue
...i/src/views/project/projectList/component/batchImport.vue
+6
-4
gjjl.vue
...erate-ui/src/views/project/projectList/component/gjjl.vue
+4
-1
gzdb.vue
...erate-ui/src/views/project/projectList/component/gzdb.vue
+8
-2
xmsl.vue
...erate-ui/src/views/project/projectList/component/xmsl.vue
+5
-5
zlwd.vue
...erate-ui/src/views/project/projectList/component/zlwd.vue
+0
-2
detail.vue
dsk-operate-ui/src/views/project/projectList/detail.vue
+50
-22
index.vue
dsk-operate-ui/src/views/project/projectList/index.vue
+8
-8
No files found.
dsk-operate-ui/src/assets/images/project/icol1.png
0 → 100644
View file @
5df1e280
247 Bytes
dsk-operate-ui/src/assets/images/project/icol2.png
0 → 100644
View file @
5df1e280
246 Bytes
dsk-operate-ui/src/assets/images/project/icol3.png
0 → 100644
View file @
5df1e280
241 Bytes
dsk-operate-ui/src/assets/images/project/icor1.png
0 → 100644
View file @
5df1e280
238 Bytes
dsk-operate-ui/src/assets/images/project/icor2.png
0 → 100644
View file @
5df1e280
238 Bytes
dsk-operate-ui/src/assets/images/project/icor3.png
0 → 100644
View file @
5df1e280
238 Bytes
dsk-operate-ui/src/assets/styles/project.scss
View file @
5df1e280
...
...
@@ -10,6 +10,11 @@
>
span
{
opacity
:
0
.4
;
&
:last-child
{
opacity
:
0
.8
}
&
.on
:hover
{
color
:
#0081FF
;
opacity
:
1
;
cursor
:
pointer
;
}
}
}
.overflows
{
...
...
@@ -71,6 +76,8 @@
.con
{
>
span
{
opacity
:
0
.8
;
float
:
left
;
margin-top
:
3px
;
}
.inputxt
{
display
:
inline-block
;
...
...
dsk-operate-ui/src/plugins/download.js
View file @
5df1e280
...
...
@@ -72,7 +72,8 @@ export default {
data
:
params
,
headers
:
{
'Authorization'
:
'Bearer '
+
getToken
()
}
}).
then
(
res
=>
{
const
blob
=
new
Blob
([
res
.
data
],
{
type
:
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
})
console
.
log
(
res
)
const
blob
=
new
Blob
([
res
.
data
],
{
type
:
'application/octet-stream/pdf/doc/xlsx/xls/docx'
})
this
.
saveAs
(
blob
,
decodeURI
(
res
.
headers
[
'download-filename'
]))
})
},
...
...
dsk-operate-ui/src/views/custom/customList/index.vue
View file @
5df1e280
...
...
@@ -20,7 +20,7 @@
<div
class=
"btn"
@
click=
"handleCurrentChange(1)"
>
搜索
</div>
</div>
<div
class=
"dc"
>
<div
class=
"total"
>
共
126
条
</div>
<div
class=
"total"
>
共
{{
tableData
.
total
}}
条
</div>
<div
class=
"btn-export"
@
click=
"pldrs"
><img
src=
"@/assets/images/project/import.png"
>
批量导入
</div>
<div
class=
"btn btn_primary h32 p10"
@
click=
"opennew"
><div
class=
"img img1"
></div>
添加客户
</div>
</div>
...
...
@@ -47,8 +47,8 @@
<div
class=
"ps1"
>
<div
class=
"wordprimary ps2"
@
click=
"toDetail(scope.row.companyId,'')"
>
{{
scope
.
row
.
companyName
}}
</div>
<div
class=
"ps3"
>
<div
@
click=
"toDetail(scope.row
.companyId,1
)"
>
写跟进
<img
src=
"@/assets/images/project/edit_1.png"
></div>
<div
@
click=
"toDetail(scope.row
.companyId,2
)"
>
编辑信息
<img
src=
"@/assets/images/project/edit_2.png"
></div>
<div
@
click=
"toDetail(scope.row
,'gjjl'
)"
>
写跟进
<img
src=
"@/assets/images/project/edit_1.png"
></div>
<div
@
click=
"toDetail(scope.row
,'preference'
)"
>
编辑信息
<img
src=
"@/assets/images/project/edit_2.png"
></div>
</div>
</div>
</
template
>
...
...
@@ -99,7 +99,7 @@
label=
"注册资本金(万元)"
width=
"140"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
registerCapital
Str
||
'--'
}}
{{
scope
.
row
.
registerCapital
||
'--'
}}
</
template
>
</el-table-column>
<el-table-column
...
...
@@ -227,7 +227,7 @@
</el-dialog>
</el-card>
</div>
<batchimport
v-if=
"pldr"
:importtype=
"types"
@
cancels=
"
importCancel
"
@
getdatas=
"handleCurrentChange(1)"
></batchimport>
<batchimport
v-if=
"pldr"
:importtype=
"types"
@
cancels=
"
cancelimport
"
@
getdatas=
"handleCurrentChange(1)"
></batchimport>
</div>
</template>
...
...
@@ -304,7 +304,7 @@ export default {
pldrs
(){
this
.
pldr
=
true
},
importCancel
(){
cancelimport
(){
this
.
pldr
=
false
},
//获取客户列表
...
...
@@ -314,12 +314,11 @@ export default {
})
},
//跳转到客户详情
toDetail
(
id
,
type
){
if
(
type
==
1
){
//跟进
}
else
if
(
type
==
2
){
//编辑信息
}
toDetail
(
row
,
type
){
let
customerId
=
row
.
customerId
let
companyId
=
row
.
companyId
let
path
=
type
this
.
$router
.
push
({
path
:
'/party/party-a'
,
query
:{
customerId
:
customerId
,
companyId
:
companyId
,
path
:
path
}})
},
//翻页
handleCurrentChange
(
val
)
{
...
...
dsk-operate-ui/src/views/project/projectList/component/batchImport.vue
View file @
5df1e280
...
...
@@ -42,7 +42,7 @@
<div
class=
"p3"
>
<img
src=
"@/assets/images/project/success.png"
>
查询成功
</div>
<div
class=
"p2"
>
成功导入
客户
信息
</div>
<div
class=
"p2"
>
成功导入
{{
titletext
}}
信息
</div>
<div
class=
"btns"
>
<div
class=
"btn btn_primary h32"
@
click=
"getmsg"
>
查看
</div>
</div>
...
...
@@ -79,7 +79,7 @@
console
.
log
(
this
.
importtype
)
if
(
this
.
importtype
==
'project'
){
//项目管理
this
.
downloadhref
=
'/file/projectTemplate.xlsx'
this
.
titletext
=
'
项目
'
this
.
titletext
=
'
商机
'
this
.
action
=
process
.
env
.
VUE_APP_BASE_API
+
'/business/info/upload'
}
if
(
this
.
importtype
==
'custom'
){
//客户管理
...
...
@@ -101,8 +101,10 @@
onSuccess
(
res
,
file
,
fileList
)
{
if
(
res
.
code
==
200
)
this
.
addsuccess
=
true
else
this
.
$message
.
error
({
message
:
res
.
msg
,
showClose
:
true
})
else
{
this
.
importCancel
()
this
.
$message
.
error
({
message
:
res
.
msg
,
showClose
:
true
})
}
},
downloadClick
()
{
...
...
dsk-operate-ui/src/views/project/projectList/component/gjjl.vue
View file @
5df1e280
...
...
@@ -65,7 +65,7 @@
<span
v-if=
"showtype == 'gjdt' && item.companyName != ''"
>
关联企业:{{item.companyName}}
</span>
<span
v-if=
"item.position"
>
职位:{{item.position}}
</span>
<span
v-if=
"item.createTime"
>
拜访时间:{{item.createTime.slice(0, 10)}}
</span>
<span
v-if=
"item.nextVisitTime"
>
下次拜访时间:{{item.
create
Time.slice(0, 10)}}
</span>
<span
v-if=
"item.nextVisitTime"
>
下次拜访时间:{{item.
nextVisit
Time.slice(0, 10)}}
</span>
</div>
</div>
</div>
...
...
@@ -342,8 +342,11 @@
let
day
=
times
.
getDate
()
day
=
day
<
10
?
"0"
+
day
:
day
let
hour
=
times
.
getHours
()
hour
=
hour
<
10
?
"0"
+
hour
:
hour
let
minute
=
times
.
getMinutes
()
minute
=
minute
<
10
?
"0"
+
minute
:
minute
let
second
=
times
.
getSeconds
()
second
=
second
<
10
?
"0"
+
second
:
second
return
year
+
'-'
+
month
+
'-'
+
day
+
' '
+
hour
+
":"
+
minute
+
":"
+
second
}
}
...
...
dsk-operate-ui/src/views/project/projectList/component/gzdb.vue
View file @
5df1e280
...
...
@@ -28,7 +28,7 @@
</div>
</div>
</div>
<div
class=
"tasktitle"
><strong>
我的任务
</strong><span
@
click=
"getYQ"
>
4
条已逾期
</span>
<!--
<span
class=
"on"
>
4条已逾期
</span>
-->
</div>
<div
class=
"tasktitle"
><strong>
我的任务
</strong><span
@
click=
"getYQ"
>
{{
yqnum
}}
条已逾期
</span>
<!--
<span
class=
"on"
>
4条已逾期
</span>
-->
</div>
<div
class=
"tasklist"
v-for=
"(item,index) in datalist.rows"
>
<div
class=
"task_name"
>
{{
item
.
task
}}
</div>
<div
class=
"task_con"
><span>
发起时间:
{{
item
.
createTime
}}
</span><span
v-if=
"item.target"
>
关联客户:
<font
class=
"wordprimary"
>
{{
item
.
target
}}
</font></span><span
v-if=
"item.finishTime"
>
完成时间:
{{
item
.
finishTime
}}
</span></div>
...
...
@@ -39,7 +39,6 @@
<i
class=
"el-icon-caret-bottom"
></i>
</span>
<el-select
placeholder=
"请选择"
v-model=
"item.state"
class=
"select-multiple"
@
change=
"changes(item.id,$event)"
>
<el-option
label=
"未完成"
value=
"0"
></el-option>
<el-option
label=
"未完成"
value=
"1"
></el-option>
<el-option
label=
"已完成"
value=
"2"
></el-option>
</el-select>
...
...
@@ -94,6 +93,7 @@
state
:
null
,
},
datalist
:[],
yqnum
:
0
,
//已逾期数量
}
},
created
(){
...
...
@@ -117,6 +117,12 @@
getList
(){
getGZDB
(
this
.
searchPram
).
then
(
result
=>
{
this
.
datalist
=
result
.
code
==
200
?
result
:[]
let
num
=
0
this
.
datalist
.
rows
.
forEach
(
item
=>
{
if
(
item
.
state
==
0
)
num
++
;
})
this
.
yqnum
=
num
})
},
handleCurrentChange
(
val
){
...
...
dsk-operate-ui/src/views/project/projectList/component/xmsl.vue
View file @
5df1e280
...
...
@@ -110,7 +110,7 @@
<div
class=
"flex"
v-if=
"nowedit == 6"
>
<el-input
placeholder=
"待添加"
v-model=
"xmsldata.supervisorPhone"
></el-input>
<div
class=
"flex"
>
<div
class=
"btnsmall btn_primary h28"
@
click=
"isphone(1,
$event
)"
style=
"width: 56px"
>
确定
</div>
<div
class=
"btnsmall btn_primary h28"
@
click=
"isphone(1,
xmsldata.supervisorPhone
)"
style=
"width: 56px"
>
确定
</div>
<div
class=
"cancels h28"
@
click=
"nowedit = -1"
style=
""
>
取消
</div>
</div>
</div>
...
...
@@ -123,7 +123,7 @@
<div
class=
"flex"
v-if=
"nowedit == 7"
>
<el-input
placeholder=
"待添加"
v-model=
"xmsldata.constructionPhone"
></el-input>
<div
class=
"flex"
>
<div
class=
"btnsmall btn_primary h28"
@
click=
"isphone(2,
$event
)"
style=
"width: 56px"
>
确定
</div>
<div
class=
"btnsmall btn_primary h28"
@
click=
"isphone(2,
xmsldata.constructionPhone
)"
style=
"width: 56px"
>
确定
</div>
<div
class=
"cancels h28"
@
click=
"nowedit = -1"
style=
""
>
取消
</div>
</div>
</div>
...
...
@@ -214,16 +214,16 @@
},
//验证电话号码
isphone
(
type
,
value
){
var
regPartton
=
/1
[
3-
8
]
+
\d{9}
/
;
var
regPartton
=
/1
[
3-
9
]
+
\d{9}
/
;
var
regPartton1
=
/^
(
0
[
0-9
]{2,3}[\-]?[
2-9
][
0-9
]{6,7}[\-]?[
0-9
]?)
$/
;
if
(
!
regPartton
.
test
(
value
)
&&
!
regPartton1
.
test
(
value
))
{
this
.
$message
.
error
(
"请输入正确的电话"
);
}
else
{
if
(
type
==
1
)
{
this
.
editXMSL
({
supervisorPhone
:
this
.
xmsldata
.
supervisorPhon
e
})
this
.
editXMSL
({
supervisorPhone
:
valu
e
})
}
if
(
type
==
2
)
{
this
.
editXMSL
({
constructionPhone
:
this
.
xmsldata
.
constructionPhon
e
})
this
.
editXMSL
({
constructionPhone
:
valu
e
})
}
}
},
...
...
dsk-operate-ui/src/views/project/projectList/component/zlwd.vue
View file @
5df1e280
...
...
@@ -198,9 +198,7 @@
},
downnlod
(
row
){
let
param
=
{
filePath
:
row
.
filePath
}
// this.$download.saveAs(row.filePath,row.name);
this
.
$download
.
exportByPost
(
'/business/file/download'
,
param
);
// // this.$download()
// let a = document.createElement("a");
// a.setAttribute("href", row.filePath);
// a.setAttribute("download", row.name);
...
...
dsk-operate-ui/src/views/project/projectList/detail.vue
View file @
5df1e280
...
...
@@ -3,9 +3,9 @@
<div
class=
"miantitle"
>
<template
v-if=
"!detailId"
>
<span>
项目管理
</span>
<span>
/ 商机列表
</span>
<span
class=
"on"
@
click=
"tolist"
>
/ 商机列表
</span>
</
template
>
<span
v-else
@
click=
"cooperateList"
>
合作情况
</span>
<span
class=
"on"
v-else
@
click=
"cooperateList"
>
合作情况
</span>
<span>
/ 项目详情
</span>
</div>
<div
class=
"app-container"
v-if=
"ProjectData"
>
...
...
@@ -89,11 +89,10 @@
</div>
</div>
<div
class=
"schedule"
>
<div
class=
"child"
v-for=
"(item,index) in projectStage"
@
mouseover=
"hover(item.dictValue)"
@
mouseleave=
"hover(-1)"
@
click=
"choose(item.dictValue)"
>
<img
v-if=
"item.dictValue == lastindex"
src=
"@/assets/images/project/pro_2.png"
>
<img
v-else-if=
"item.dictValue == thisindex"
src=
"@/assets/images/project/pro_3.png"
>
<img
v-else
src=
"@/assets/images/project/pro_1.png"
>
<span
:class=
"{'now':item.dictValue == thisindex}"
>
{{item.dictLabel}}
</span>
<div
class=
"child"
v-for=
"(item,index) in projectStage"
@
click=
"choose(item.dictValue)"
:class=
"{'on':item.dictValue == thisindex}"
>
<div
class=
"left"
></div>
<span>
{{item.dictLabel}}
</span>
<div
class=
"right"
></div>
</div>
</div>
...
...
@@ -179,6 +178,7 @@
}
},
created
(){
this
.
thistag
=
this
.
$route
.
query
.
tag
this
.
prvinceTree
()
this
.
id
=
this
.
detailId
?
this
.
detailId
:
this
.
$route
.
query
.
id
//项目阶段
...
...
@@ -232,7 +232,8 @@
locks
(
isPrivate
){
isPrivate
=
isPrivate
==
0
?
1
:
0
this
.
editXMSL
({
isPrivate
:
isPrivate
})
this
.
lock
=
false
this
.
islock
=
false
this
.
ProjectData
.
isPrivate
=
isPrivate
},
editXMSL
(
param
){
let
params
=
param
...
...
@@ -337,7 +338,10 @@
// 跳转到企业详情合作情况
cooperateList
(){
this
.
$emit
(
'close-detail'
)
}
},
tolist
(){
this
.
$router
.
push
({
path
:
'/project/projectList'
})
},
}
}
</
script
>
...
...
@@ -395,30 +399,54 @@
}
}
.schedule
{
display
:
flex
;
padding-bottom
:
8px
;
width
:
100%
;
.child
{
cursor
:
pointer
;
margin-right
:
4px
;
color
:
#4f4f4f
;
/*color: rgb(79,79,79);*/
color
:
rgba
(
35
,
35
,
35
,
0
.80
);
position
:
relative
;
width
:
137px
;
min-width
:
137px
;
padding
:
0
20px
;
height
:
32px
;
line-height
:
32px
;
text-align
:
center
;
>
img
{
background
:
#F3F4F5
;
margin-bottom
:
8px
;
display
:
inline-block
;
.left
{
width
:
10px
;
height
:
32px
;
background
:
url("../../../assets/images/project/icol1.png")
no-repeat
top
center
#fff
;
position
:
absolute
;
left
:
0
;
top
:
0
;
}
.right
{
position
:
absolute
;
width
:
100%
;
z-index
:
0
;
top
:
0
;
right
:
0
;
width
:
10px
;
height
:
32px
;
background
:
url("../../../assets/images/project/icor1.png")
no-repeat
top
center
#fff
;
}
>
span
{
position
:
relative
;
z-index
:
1
;
&
.now
{
&
:hover
{
background
:
#E3E6EA
;
.left
{
background
:
url("../../../assets/images/project/icol2.png")
no-repeat
top
center
#fff
;
}
.right
{
background
:
url("../../../assets/images/project/icor2.png")
no-repeat
top
center
#fff
;
}
}
&
.on
{
background
:
#0081FF
;
color
:
#fff
;
.left
{
background
:
url("../../../assets/images/project/icol3.png")
no-repeat
top
center
#fff
;
}
.right
{
background
:
url("../../../assets/images/project/icor3.png")
no-repeat
top
center
#fff
;
}
}
}
...
...
dsk-operate-ui/src/views/project/projectList/index.vue
View file @
5df1e280
...
...
@@ -113,16 +113,16 @@
</div>
<div
class=
"datalist"
>
<div
class=
"datali"
v-for=
"(item,index) in datalist"
>
<div
class=
"det-title"
@
click=
"toDetail(item.id)"
>
{{
item
.
projectName
}}
<span
v-if=
"activeName!='first' && item.followTime"
class=
"people"
><i>
{{
item
.
nickName1
}}
</i>
{{
item
.
nickName
}}
<font
color=
"#FA8A00"
>
正在跟进
</font></span></div>
<div
class=
"det-title"
@
click=
"toDetail(item.id
,'xmsl'
)"
>
{{
item
.
projectName
}}
<span
v-if=
"activeName!='first' && item.followTime"
class=
"people"
><i>
{{
item
.
nickName1
}}
</i>
{{
item
.
nickName
}}
<font
color=
"#FA8A00"
>
正在跟进
</font></span></div>
<div
class=
"det-tips"
><span
class=
"tips tip1"
v-if=
"item.label"
>
{{
item
.
label
}}
</span><span
v-if=
"item.address"
class=
"tips tip2"
>
{{
item
.
address
}}
</span></div>
<div
class=
"det-contets"
>
<div
class=
"det-con"
>
<span>
项目类型:
</span>
<span>
{{
item
.
projectType
}}
</span>
<span>
{{
item
.
projectType
||
'--'
}}
</span>
</div>
<div
class=
"det-con"
>
<span>
投资估算(万元):
</span>
<span>
{{
item
.
investmentAmount
}}
</span>
<span>
{{
item
.
investmentAmount
||
'--'
}}
</span>
</div>
<div
class=
"det-con"
>
<span>
最后跟进时间:
</span>
...
...
@@ -130,13 +130,13 @@
</div>
<div
class=
"det-con"
>
<span>
业主单位:
</span>
<span
class=
"wordprimary"
>
{{
item
.
ownerCompany
}}
</span>
<span
class=
"wordprimary"
>
{{
item
.
ownerCompany
||
'--'
}}
</span>
</div>
</div>
<el-divider
v-if=
"index != datalist.length-1"
></el-divider>
<div
class=
"operates"
v-if=
"activeName=='first'"
>
<div
class=
"i1"
><img
src=
"@/assets/images/follow.png"
>
跟进
</div>
<div
class=
"i2"
><img
src=
"@/assets/images/edit.png"
>
编辑
</div>
<div
class=
"i1"
><img
src=
"@/assets/images/follow.png"
@
click=
"toDetail(item.id,'gjjl')"
>
跟进
</div>
<div
class=
"i2"
><img
src=
"@/assets/images/edit.png"
@
click=
"toDetail(item.id,'xmsl')"
>
编辑
</div>
<div
class=
"i3"
@
click=
"deldetail(index)"
><img
src=
"@/assets/images/delete.png"
>
删除
</div>
</div>
<div
class=
"delform"
v-if=
"activeName=='first' && ondel == index"
>
...
...
@@ -355,8 +355,8 @@ export default {
this
.
isshow
=
false
this
.
getList
(
1
)
},
toDetail
(
id
){
this
.
$router
.
push
({
path
:
'/project/projectList/detail'
,
query
:
{
id
:
id
}
});
toDetail
(
id
,
tag
){
this
.
$router
.
push
({
path
:
'/project/projectList/detail'
,
query
:
{
id
:
id
,
tag
:
tag
}
});
},
handleClick
(){
...
...
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