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
690227c4
Commit
690227c4
authored
Dec 22, 2023
by
Administrator
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/V20231129-中建一局二公司' into V20231129-中建一局二公司
parents
8375890e
dfb0e203
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
716 additions
and
50 deletions
+716
-50
index.js
dsk-operate-ui/src/api/consultingOrgManagement/index.js
+11
-0
index.js
dsk-operate-ui/src/api/consultingTransaction/index.js
+22
-0
index.scss
dsk-operate-ui/src/assets/styles/index.scss
+2
-5
index.vue
dsk-operate-ui/src/components/TableListCom/index.vue
+35
-9
basicEngineeringInformation.vue
...nts/EnterpriseList/detail/basicEngineeringInformation.vue
+150
-0
detailsOfCooperation.vue
...components/EnterpriseList/detail/detailsOfCooperation.vue
+2
-2
projectDetail.vue
...gement/components/EnterpriseList/detail/projectDetail.vue
+164
-0
index.vue
...nsultingOrgManagement/components/EnterpriseList/index.vue
+1
-1
index.vue
.../consultingOrgManagement/components/ProjectList/index.vue
+6
-2
HeadFormNew.vue
...ate-ui/src/views/detail/party-a/component/HeadFormNew.vue
+18
-9
Tables.vue
dsk-operate-ui/src/views/detail/party-a/component/Tables.vue
+13
-4
skeleton.vue
...perate-ui/src/views/detail/party-a/component/skeleton.vue
+6
-6
cooperativeOwnerUnits.vue
...l/party-a/consultingTransaction/cooperativeOwnerUnits.vue
+283
-9
index.vue
dsk-operate-ui/src/views/detail/party-a/index.vue
+2
-2
cooperationRecord.vue
.../detail/party-a/internalCooperation/cooperationRecord.vue
+1
-1
No files found.
dsk-operate-ui/src/api/consultingOrgManagement/index.js
View file @
690227c4
...
...
@@ -31,4 +31,15 @@ export const getConsultingOrgEenterpriseDetailWithSearchApi = (params) => reques
url
:
"/advisory/body/getCooperateProjectDetailList"
,
method
:
"get"
,
params
});
/**
* 咨询机构项目列表 项目跳转详情获取
* @param {*} params
* @returns
*/
export
const
getgetConsultingOrgProjectDetailApi
=
(
params
)
=>
request
({
url
:
"/advisory/body/getProjectDetail"
,
method
:
"get"
,
params
});
\ No newline at end of file
dsk-operate-ui/src/api/consultingTransaction/index.js
View file @
690227c4
...
...
@@ -6,7 +6,29 @@ import request from '@/utils/request';
* @returns
*/
export
const
getCooperativeOwnerUnitsListApi
=
(
data
)
=>
request
({
url
:
"/consultancy/page"
,
method
:
"post"
,
data
});
/**
* 获取(常合作业主单位、常合作施工单位、常合作集团)详情
* @param {*} data
* @returns
*/
export
const
getCooperativeOwnerUnitsDetailApi
=
(
data
)
=>
request
({
url
:
"/consultancy/detailPage"
,
method
:
"post"
,
data
});
/**
* 获取下拉列表选项
* @param {*} data
* @returns
*/
export
const
getCooperativeOwnerUnitsOptionsApi
=
(
data
)
=>
request
({
url
:
"/consultancy/pageSelect"
,
method
:
"post"
,
data
});
\ No newline at end of file
dsk-operate-ui/src/assets/styles/index.scss
View file @
690227c4
...
...
@@ -454,13 +454,10 @@ li {
.table-list-com-ins
{
.table-item
{
width
:
100%
;
height
:
100%
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
max-height
:
100%
;
.el-table
{
width
:
100%
;
height
:
100%
;
height
:
auto
;
font-size
:
14px
;
color
:
#232323
;
...
...
dsk-operate-ui/src/components/TableListCom/index.vue
View file @
690227c4
...
...
@@ -4,7 +4,7 @@
<el-table
v-if=
"tableDataTotal>0"
class=
"fixed-table"
:class=
"headerFixed ? 'headerFixed':''"
v-loading=
"tableLoading"
:data=
"tableData"
element-loading-text=
"Loading"
ref=
"tableRef"
border
fit
highlight-current-row
:default-sort=
"defaultSort?defaultSort:
{}"
@sort-change="sortChange" @selection-change="selectionChange" :cell-class-name="cellClassName" :cell-style="cellStyle"
:row-class-name="rowClassName" :row-style="rowStyle" :height="height" :maxHeight="
m
axHeight" v-sticky-header="stickyHeader">
:row-class-name="rowClassName" :row-style="rowStyle" :height="height" :maxHeight="
comM
axHeight" v-sticky-header="stickyHeader">
<el-table-column
type=
"selection"
:width=
"needSelection.width ? needSelection.width : '38px'"
v-if=
"needSelection.flag"
:fixed=
"needSelection.fixed"
:align=
"needSelection.align"
:show-overflow-tooltip=
"needSelection.showOverflowTooltip"
>
</el-table-column>
...
...
@@ -58,7 +58,7 @@
</
template
>
</el-table>
<div
style=
"padding: 30px 0;box-sizing:border-box;
"
v-else
>
<div
class=
"table-empty-container
"
v-else
>
<no-data
/>
</div>
</div>
...
...
@@ -80,7 +80,7 @@ export default {
type
:
[
String
,
Number
]
},
maxHeight
:
{
type
:
[
String
,
Number
]
type
:
Boolean
},
isIndex
:
{
type
:
Boolean
,
...
...
@@ -168,7 +168,8 @@ export default {
data
()
{
return
{
current_page
:
this
.
queryParams
.
pageNum
,
show_page
:
this
.
paging
show_page
:
this
.
paging
,
comMaxHeight
:
null
};
},
watch
:
{
...
...
@@ -177,9 +178,24 @@ export default {
}
},
created
()
{
this
.
maxHeight
?
this
.
maxHeightInit
()
:
null
;
},
methods
:
{
// 自适应当前容器
async
maxHeightInit
()
{
try
{
await
this
.
$nextTick
();
/**
* @type {HTMLDivElement}
*/
const
container
=
document
.
querySelector
(
".table-list-com-ins .table-item"
);
if
(
container
)
{
this
.
comMaxHeight
=
`
${
container
.
offsetHeight
}
px`
;
}
}
catch
(
error
)
{
}
},
handleCurrentChange
(
e
)
{
if
(
this
.
MaxPage
<
e
)
{
this
.
show_page
=
false
;
...
...
@@ -250,11 +266,21 @@ export default {
height
:
16px
;
}
// 空状态容器
.table-empty-container
{
width
:
100%
;
height
:
100%
;
padding
:
30px
0
;
box-sizing
:
border-box
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
}
.el-table
{
/* .cell {
display: flex;
align-items: center;
} */
.el-table__header-wrapper
{
min-height
:
40px
;
}
}
}
...
...
dsk-operate-ui/src/views/consultingOrgManagement/components/EnterpriseList/detail/basicEngineeringInformation.vue
0 → 100644
View file @
690227c4
<
template
>
<div
class=
"basic-engineering-information"
>
<div
class=
"basic-engineering-information-inner"
>
<!-- 项目主体 -->
<div
class=
"project-subject"
>
<div
class=
"info-module-title"
><span>
项目主体
</span></div>
<table>
<colgroup>
<col>
<col
:style=
"
{width : tableKeyWidth}">
<col>
<col
:style=
"
{width : tableKeyWidth}">
</colgroup>
<tr>
<td
class=
"table-key"
>
业主单位
</td>
<td>
{{
comProjectDetailInfo
.
ownerName
?
comProjectDetailInfo
.
ownerName
:
"-"
}}
</td>
<td
class=
"table-key"
>
工程承包单位
</td>
<td>
{{
comProjectDetailInfo
.
contractOrgName
?
comProjectDetailInfo
.
contractOrgName
:
"-"
}}
</td>
</tr>
<tr>
<td
class=
"table-key"
>
履约责任单位
</td>
<td>
{{
comProjectDetailInfo
.
ownerName
?
comProjectDetailInfo
.
ownerName
:
"-"
}}
</td>
<td
class=
"table-key"
>
咨询单位
</td>
<td>
{{
comProjectDetailInfo
.
advisoryBodyName
?
comProjectDetailInfo
.
advisoryBodyName
:
"-"
}}
</td>
</tr>
</table>
</div>
</div>
</div>
</
template
>
<
script
>
export
default
{
name
:
"basicEngineeringInformation"
,
props
:
{
projectDetailInfo
:
Object
},
watch
:
{
projectDetailInfo
:
{
handler
(
newValue
)
{
this
.
comProjectDetailInfo
=
newValue
;
},
deep
:
true
}
},
data
()
{
return
{
comProjectDetailInfo
:
this
.
projectDetailInfo
,
tableKeyWidth
:
0
};
},
//可访问data属性
created
()
{
this
.
setTableKeyWidth
();
},
//计算集
computed
:
{
},
//方法集
methods
:
{
async
setTableKeyWidth
()
{
try
{
await
this
.
$nextTick
();
/**
* @type {HTMLDivElement}
*/
const
inner
=
document
.
querySelector
(
".basic-engineering-information-inner"
);
if
(
inner
)
{
const
td
=
parseInt
((
inner
.
offsetWidth
-
140
*
2
)
/
2
);
this
.
tableKeyWidth
=
`
${
parseInt
(
parseFloat
(
td
/
inner
.
offsetWidth
)
*
100
)}
%`
;
}
}
catch
(
error
)
{
}
}
},
}
</
script
>
<
style
lang=
"scss"
scoped
>
.basic-engineering-information
{
width
:
100%
;
height
:
100%
;
background
:
#fff
;
border-bottom-left-radius
:
4px
;
border-bottom-right-radius
:
4px
;
padding
:
16px
;
box-sizing
:
border-box
;
overflow
:
auto
;
.basic-engineering-information-inner
{
width
:
100%
;
height
:
100%
;
.info-module-title
{
line-height
:
24px
;
color
:
#232323
;
font-weight
:
bold
;
font-size
:
16px
;
margin-bottom
:
16px
;
display
:
flex
;
align-items
:
center
;
&
>
span
{
display
:
inline-block
;
position
:
relative
;
padding-left
:
8px
;
box-sizing
:
border-box
;
&
:
:
before
{
content
:
""
;
position
:
absolute
;
left
:
0px
;
top
:
50%
;
transform
:
translateY
(
-50%
);
background
:
rgba
(
35
,
35
,
35
,
0
.8
);
width
:
2px
;
height
:
14px
;
}
}
}
table
{
width
:
100%
;
border-spacing
:
0
;
border-collapse
:
collapse
;
&
,
th
,
td
{
border
:
1px
solid
#e6eaf1
;
box-sizing
:
border-box
;
}
td
{
padding
:
9px
12px
;
line-height
:
22px
;
color
:
#232323
;
font-size
:
12px
;
}
.table-key
{
background
:
#f0f3fa
;
color
:
rgba
(
35
,
35
,
35
,
0
.8
);
width
:
140px
;
&
.lot
{
height
:
62px
;
}
}
.data-td
{
width
:
calc
(
100%
-
140px
);
}
}
}
}
</
style
>
dsk-operate-ui/src/views/consultingOrgManagement/components/EnterpriseList/detail/detailsOfCooperation.vue
View file @
690227c4
...
...
@@ -53,7 +53,7 @@
<skeleton
v-if=
"tableLoading"
></skeleton>
<!-- table 列表 -->
<table-list-com
ref=
"tableContainer"
:tableData=
"tableDataList"
:formColum=
"formColum"
:tableDataTotal=
"total"
:queryParams=
"queryParams"
v-else-if=
"!tableLoading"
:
height=
"'100%'
"
@
handle-current-change=
"handleCurrentChange"
>
v-else-if=
"!tableLoading"
:
maxHeight=
"true
"
@
handle-current-change=
"handleCurrentChange"
>
<!-- 项目列表 -->
<template
slot=
"projectName"
slot-scope=
"
{data,row}">
<div
v-if=
"row.projectName"
class=
"no-line-feed "
>
{{
row
.
projectName
}}
</div>
...
...
@@ -99,7 +99,7 @@ export default {
{
label
:
'项目列表'
,
prop
:
'projectName'
,
width
:
"222px"
,
lock
:
true
,
fixed
:
false
,
slot
:
true
,
uid
:
v4
(),
showOverflowTooltip
:
true
},
{
label
:
'合同编码'
,
prop
:
'projectCode'
,
width
:
"123px"
,
uid
:
v4
()
},
{
label
:
'省市'
,
prop
:
'provinceName'
,
width
:
"102px"
,
uid
:
v4
()
},
{
label
:
'项目承接类型'
,
prop
:
'isinvestproject'
,
w
idth
:
"102px"
,
uid
:
v4
()
},
{
label
:
'项目承接类型'
,
prop
:
'isinvestproject'
,
minW
idth
:
"102px"
,
uid
:
v4
()
},
{
label
:
'工程基础大类'
,
prop
:
'projectType1'
,
width
:
"98px"
,
uid
:
v4
()
},
{
label
:
'工程类别明细'
,
prop
:
'projectType'
,
width
:
"98px"
,
uid
:
v4
()
},
{
label
:
'项目负责人姓名'
,
prop
:
'projectLeader'
,
width
:
"110px"
,
uid
:
v4
()
},
...
...
dsk-operate-ui/src/views/consultingOrgManagement/components/EnterpriseList/detail/projectDetail.vue
0 → 100644
View file @
690227c4
<
template
>
<div
class=
"project-detail-container"
>
<div
class=
"project-detail-inner"
>
<div
class=
"project-header-container"
>
<!-- 项目名称 logo -->
<div
class=
"prject-icon-and-title"
>
<img
src=
"@/assets/images/financing/head_icon.png"
alt=
""
>
<div
class=
"prject-title"
>
{{
projectDetailInfo
.
finProjectName
?
projectDetailInfo
.
finProjectName
:
"-"
}}
</div>
</div>
<!-- 项目承接单位 -->
<div
class=
"project-undertaking-unit-container"
>
<span
class=
"project-undertaking-unit-title"
>
项目承接单位:
</span>
<span
class=
"project-undertaking-unit"
>
{{
projectDetailInfo
.
contractOrgName
?
projectDetailInfo
.
contractOrgName
:
"-"
}}
</span>
</div>
</div>
<!-- tab切换部分 -->
<div
class=
"project-consulting-agency"
>
<!-- tab切换栏 -->
<dsk-tab-toggle
v-model=
"currentList"
:tabs=
"toggleTabs"
></dsk-tab-toggle>
<!-- tab切换容器 -->
<div
class=
"project-consulting-agency-inner"
>
<!-- 工程基本信息 -->
<basic-engineering-information
v-if=
"currentList === 'project'"
:projectDetailInfo=
"projectDetailInfo"
></basic-engineering-information>
<!-- 咨询机构结算信息 -->
</div>
</div>
</div>
</div>
</
template
>
<
script
>
import
DskTabToggle
from
"@/components/DskTabToggle"
;
import
{
getgetConsultingOrgProjectDetailApi
}
from
"@/api/consultingOrgManagement/index"
;
import
{
v4
}
from
'uuid'
;
import
BasicEngineeringInformation
from
"@/views/consultingOrgManagement/components/EnterpriseList/detail/basicEngineeringInformation"
;
export
default
{
name
:
"projectDetail"
,
components
:
{
DskTabToggle
,
BasicEngineeringInformation
},
data
()
{
return
{
currentList
:
"project"
,
toggleTabs
:
[
{
value
:
"project"
,
name
:
"工程基本信息"
,
id
:
v4
()
},
{
value
:
"consultingAgency"
,
name
:
"咨询机构结算信息"
,
id
:
v4
()
}
],
projectDetailInfo
:
{},
projectKey
:
""
,
advisoryBodyCid
:
""
};
},
//可访问data属性
created
()
{
this
.
init
();
},
//计算集
computed
:
{
},
//方法集
methods
:
{
async
init
()
{
try
{
const
advisoryBodyCid
=
this
.
$route
.
params
?.
advisoryBodyCid
;
const
projectKey
=
this
.
$route
.
query
?.
projectKey
;
if
(
!
advisoryBodyCid
)
return
this
.
$message
.
error
(
"缺少咨询机构ID"
);
if
(
!
projectKey
)
return
this
.
$message
.
error
(
"缺少项目主键"
);
const
detail
=
await
getgetConsultingOrgProjectDetailApi
({
advisoryBodyCid
,
projectKey
});
if
(
detail
.
code
==
200
&&
detail
.
data
)
{
this
.
projectDetailInfo
=
{
...
this
.
pprojectDetailInfo
,
...
detail
.
data
};
}
}
catch
(
error
)
{
}
}
},
}
</
script
>
<
style
lang=
"scss"
scoped
>
.project-detail-container
{
width
:
100%
;
height
:
100%
;
padding
:
16px
24px
24px
24px
;
box-sizing
:
border-box
;
overflow
:
hidden
;
.project-detail-inner
{
width
:
100%
;
height
:
100%
;
.project-header-container
{
width
:
100%
;
height
:
94px
;
background
:
#fff
;
border-radius
:
4px
;
padding
:
16px
;
box-sizing
:
border-box
;
.prject-icon-and-title
{
display
:
flex
;
align-items
:
center
;
&
>
img
{
width
:
28px
;
height
:
28px
;
}
.prject-title
{
font-size
:
16px
;
font-weight
:
bold
;
color
:
#232323
;
margin-left
:
12px
;
}
}
.project-undertaking-unit-container
{
display
:
flex
;
align-items
:
center
;
margin-top
:
16px
;
.project-undertaking-unit-title
{
font-size
:
14px
;
font-weight
:
400
;
color
:
rgba
(
35
,
35
,
35
,
0
.4
);
}
.project-undertaking-unit
{
color
:
rgba
(
35
,
35
,
35
,
0
.8
);
font-size
:
14px
;
font-weight
:
400
;
margin-left
:
8px
;
}
}
}
.project-consulting-agency
{
width
:
100%
;
height
:
calc
(
100%
-
110px
);
margin-top
:
16px
;
.project-consulting-agency-inner
{
width
:
100%
;
height
:
calc
(
100%
-
47px
);
}
}
}
}
</
style
>
dsk-operate-ui/src/views/consultingOrgManagement/components/EnterpriseList/index.vue
View file @
690227c4
...
...
@@ -36,7 +36,7 @@
<skeleton
v-if=
"tableLoading"
></skeleton>
<!-- table 列表 -->
<table-list-com
ref=
"tableContainer"
:tableData=
"tableDataList"
:formColum=
"formColum"
:tableDataTotal=
"total"
:queryParams=
"queryParams"
v-else-if=
"!tableLoading"
:
height=
"'100%'
"
@
handle-current-change=
"handleCurrentChange"
>
v-else-if=
"!tableLoading"
:
maxHeight=
"true
"
@
handle-current-change=
"handleCurrentChange"
>
<!-- 咨询机构名称 -->
<template
slot=
"advisoryBodyName"
slot-scope=
"
{data,row}">
<div
v-if=
"row.advisoryBodyName"
class=
"no-line-feed "
>
{{
row
.
advisoryBodyName
}}
</div>
...
...
dsk-operate-ui/src/views/consultingOrgManagement/components/ProjectList/index.vue
View file @
690227c4
...
...
@@ -71,10 +71,10 @@
<skeleton
v-if=
"tableLoading"
></skeleton>
<!-- table 列表 -->
<table-list-com
ref=
"tableContainer"
:tableData=
"tableDataList"
:formColum=
"formColum"
:tableDataTotal=
"total"
:queryParams=
"queryParams"
v-else-if=
"!tableLoading"
:
height=
"'100%'
"
@
handle-current-change=
"handleCurrentChange"
>
v-else-if=
"!tableLoading"
:
maxHeight=
"true
"
@
handle-current-change=
"handleCurrentChange"
>
<!-- 项目列表 -->
<template
slot=
"projectName"
slot-scope=
"
{data,row}">
<div
v-if=
"row.projectName"
class=
"no-line-feed"
v-html=
"row.projectName"
>
{{
row
.
projectName
}}
</div>
<div
v-if=
"row.projectName"
class=
"no-line-feed"
v-html=
"row.projectName"
@
click=
"viewProjectDetail(row)"
>
{{
row
.
projectName
}}
</div>
<span
v-else
>
-
</span>
</
template
>
<!-- 业主单位 -->
...
...
@@ -316,6 +316,10 @@ export default {
this
.
formColum
.
forEach
(
item
=>
this
.
fixedPropsKey
.
includes
(
item
.
prop
)
?
item
.
fixed
=
flag
:
null
);
}
},
// 查看项目详情
viewProjectDetail
(
row
)
{
// this.$tab.openPage(row.projectName,`/consultingOrgManagement/projectDetail/${row.advisoryBodyCid}?projectKey=${row.projectKey}`)
}
},
}
</
script
>
...
...
dsk-operate-ui/src/views/detail/party-a/component/HeadFormNew.vue
View file @
690227c4
...
...
@@ -4,7 +4,7 @@
<div
class=
"flex-box query-box"
>
<div
class=
"flex-box query-params"
>
<div
class=
"headForm-from"
>
<div
class=
"from-item"
:key=
"i"
v-for=
"(form, i) in
f
ormData"
>
<div
class=
"from-item"
:key=
"i"
v-for=
"(form, i) in
comF
ormData"
>
<!-- 单选 -->
<template
v-if=
"form.type==1"
>
<el-select
v-model=
"form.value"
clearable
class=
"form-content-width same-select-com"
:class=
"[`select-adaptive-$
{form.uid}`]"
...
...
@@ -27,12 +27,12 @@
<transition
name=
"fade-position"
appear
mode=
"out-in"
>
<span
v-if=
"!form.hover && !form.value"
>
搜索
</span>
<el-input
v-model=
"form.value"
:placeholder=
"form.placeholder ? form.placeholder : '输入关键词查询'"
:style=
"form.width?'width:'+form.width+'px':'width:238px'"
@
focus
.
stop=
"searchFocus($event,form)"
@
blur
.
stop=
"searchBlur($event,form)"
@
input=
"value => searchInput(value,form)"
v-else
@
keydown
.
native
.
enter=
"changeSelect"
>
:style=
"form.width?'width:'+form.width+'px':'width:238px'"
@
focus
.
stop=
"searchFocus($event,form)"
@
blur=
"searchBlur($event,form)"
@
input=
"value => searchInput(value,form)"
v-else
@
keydown
.
native
.
enter=
"changeSelect"
>
<template
slot=
"suffix"
>
<transition
mode=
"out-in"
appear
name=
"fade"
>
<img
src=
"@/assets/images/enterprise/search-input-clear-icon.svg"
@
click
.
stop=
"form.value = '';changeSelect()"
v-show=
"form.showClearIcon"
>
@
mousedown
.
prevent=
"''"
v-show=
"form.showClearIcon"
>
</transition>
</
template
>
</el-input>
...
...
@@ -127,9 +127,18 @@ export default {
default
:
false
}
},
watch
:
{
formData
:
{
handler
(
newValue
)
{
this
.
comFormData
=
newValue
;
},
deep
:
true
}
},
data
()
{
return
{
showSearchBox
:
false
showSearchBox
:
false
,
comFormData
:
this
.
formData
};
},
created
()
{
...
...
@@ -244,7 +253,7 @@ export default {
textContainer
.
remove
();
});
dom
.
style
.
setProperty
(
"width"
,
`
${
width
+
60
}
px`
);
this
.
$emit
(
'handle-search'
);
this
.
$emit
(
'handle-search'
,
this
.
comFormData
);
return
;
}
textContainer
.
style
.
setProperty
(
"visibility"
,
"hidden"
);
...
...
@@ -257,7 +266,7 @@ export default {
let
containerWidth
=
textContainer
.
offsetWidth
+
12
+
8
;
textContainer
.
remove
();
dom
.
style
.
setProperty
(
"width"
,
`
${
containerWidth
}
px`
);
this
.
$emit
(
'handle-search'
);
this
.
$emit
(
'handle-search'
,
this
.
comFormData
);
}
}
catch
(
error
)
{
...
...
@@ -288,13 +297,13 @@ export default {
textContainer
.
remove
();
dom
.
style
.
setProperty
(
"width"
,
`
${
containerWidth
}
px`
);
}
this
.
$emit
(
'handle-search'
);
this
.
$emit
(
'handle-search'
,
this
.
comFormData
);
}
catch
(
error
)
{
}
},
changeSelect
(
e
)
{
this
.
$emit
(
'handle-search'
);
this
.
$emit
(
'handle-search'
,
this
.
comFormData
);
},
clickEXCEL
()
{
this
.
$emit
(
'handle-excel'
);
...
...
dsk-operate-ui/src/views/detail/party-a/component/Tables.vue
View file @
690227c4
...
...
@@ -40,7 +40,7 @@
</
template
>
</el-table>
<div
style=
"padding: 30px 0
"
v-else
>
<div
class=
"table-empty-container
"
v-else
>
<no-data
/>
</div>
</div>
...
...
@@ -154,9 +154,6 @@ export default {
::v-deep
.el-table__body
tr
.current-row
>
td
.el-table__cell
{
background-color
:
#ffffff
;
}
/*::v-deep .el-table__fixed{
height: calc(100% - 16px) !important;
}*/
::v-deep
.el-table__row
{
&
:nth-child
(
even
)
{
...
...
@@ -177,6 +174,18 @@ export default {
}
}
::v-deep
.table-item
{
position
:
relative
;
/* 留高度给骨架屏 */
min-height
:
360px
;
.table-empty-container
{
position
:
absolute
;
display
:
flex
;
height
:
100%
;
width
:
100%
;
align-items
:
center
;
justify-content
:
center
;
box-sizing
:
border-box
;
}
.el-table
td
.el-table__cell
{
border-bottom
:
0
;
}
...
...
dsk-operate-ui/src/views/detail/party-a/component/skeleton.vue
View file @
690227c4
<
template
>
<el-skeleton
animated
>
<el-skeleton
animated
class=
"el-skeleton-container"
>
<template
slot=
"template"
>
<el-skeleton-item
variant=
"text"
style=
"width: 60%;"
/>
<el-skeleton-item
variant=
"text"
style=
"width: 60%;"
/>
<el-skeleton-item
variant=
"text"
style=
"width: 100%;"
/>
<el-skeleton-item
variant=
"text"
style=
"width: 100%;"
/>
<el-skeleton-item
variant=
"text"
style=
"width: 100%;"
/>
...
...
@@ -14,13 +14,13 @@
</template>
<
script
>
export
default
{
name
:
'skeleton'
}
export
default
{
name
:
'skeleton'
}
</
script
>
<
style
lang=
"scss"
scoped
>
.el-skeleton__item
{
.el-skeleton__item
{
height
:
20px
;
border-radius
:
0
;
margin
:
9px
0
;
...
...
dsk-operate-ui/src/views/detail/party-a/consultingTransaction/cooperativeOwnerUnits.vue
View file @
690227c4
...
...
@@ -4,41 +4,120 @@
@
handle-search=
"handleSearch"
/>
<skeleton
v-if=
"isSkeleton"
style=
"padding: 16px"
></skeleton>
<tables
v-if=
"!isSkeleton"
:indexFixed=
"true"
:tableData=
"tableData"
:forData=
"forData"
:tableDataTotal=
"tableDataTotal"
:queryParams=
"queryParams"
@
handle-current-change=
"handleCurrentChange"
>
:queryParams=
"queryParams"
@
handle-current-change=
"handleCurrentChange"
@
sort-change=
"sortChange"
>
<!-- 业主名称 -->
<template
slot=
"companyName"
slot-scope=
"scope"
>
<span
v-if=
"scope.row.companyName"
style=
"color: #0081FF;cursor: pointer;"
@
click=
"viewEnterprise(scope.row)"
v-html=
"scope.row.companyName"
>
{{
scope
.
row
.
companyName
}}
</span>
<span
v-else
>
-
</span>
</
template
>
<!-- 合作项目数量 -->
<
template
slot=
"count"
slot-scope=
"scope"
>
<span
v-if=
"scope.row.count"
style=
"color: #0081FF;cursor: pointer;"
@
click=
"viewProject(scope.row)"
>
{{
scope
.
row
.
count
}}
</span>
<span
v-else
>
-
</span>
</
template
>
</tables>
<el-dialog
title=
"合作项目/工程明细"
:visible
.
sync=
"cooperationRecordDialog"
width=
"1100px"
@
close=
"dialogClose"
@
open=
"dialogOPen"
class=
"cooperation-record-dialog-container"
custom-class=
"cooperation-record-dialog"
:destroy-on-close=
"true"
>
<div
class=
"cooperation-record-dialog-innner"
>
<dialog-head-form-new
title=
""
:form-data=
"dialogFormData"
:query-params=
"dialogQueryParams"
:total=
"dialogtableDataTotal"
:isExcel=
"false"
@
handle-search=
"dialogHandleSearch"
ref=
"dialogSearchFormNew"
/>
<skeleton
v-if=
"dialogIsSkeleton"
style=
"padding: 16px"
></skeleton>
<!-- 列表 -->
<dialog-tables
v-if=
"!dialogIsSkeleton"
:indexFixed=
"true"
:tableData=
"dialogTableData"
:forData=
"dialogForData"
:tableDataTotal=
"dialogtableDataTotal"
:queryParams=
"dialogQueryParams"
@
handle-current-change=
"dialogCurrentChange"
@
sort-change=
"dialogSortChange"
>
<!-- 合作项目/工程名称-->
<
template
slot=
"projectName"
slot-scope=
"scope"
>
<span
v-if=
"scope.row.projectName"
style=
"color: #0081FF;cursor: pointer;"
v-html=
"scope.row.projectName"
>
{{
scope
.
row
.
projectName
}}
</span>
<span
v-else
>
-
</span>
</
template
>
<!-- 省市区 -->
<
template
slot=
"area"
slot-scope=
"scope"
>
<span>
{{
`${scope.row.province ? scope.row.province : ""
}
${scope.row.province && scope.row.city ? " - " : ""
}
${scope.row.city ? scope.row.city : ""
}
${scope.row.city && scope.row.area ? " - " : ""
}
${scope.row.area ? scope.row.area : ""
}
`
}}
<
/span
>
<
/template
>
<
/dialog-tables
>
<
/div
>
<
/el-dialog
>
<
/div
>
<
/template
>
<
script
>
import
skeleton
from
'../component/skeleton'
;
import
mixin
from
'@/views/detail/party-a/mixins/mixin'
;
import
{
getCooperativeOwnerUnitsListApi
}
from
"@/api/consultingTransaction"
;
import
{
getCooperativeOwnerUnitsListApi
,
getCooperativeOwnerUnitsDetailApi
,
getCooperativeOwnerUnitsOptionsApi
}
from
"@/api/consultingTransaction"
;
import
DialogHeadFormNew
from
"../component/HeadFormNew"
;
import
DialogTables
from
"../component/Tables"
;
export
default
{
name
:
"cooperativeOwnerUnits"
,
mixins
:
[
mixin
],
components
:
{
skeleton
skeleton
,
DialogHeadFormNew
,
DialogTables
}
,
props
:
[
'companyId'
],
data
()
{
return
{
queryParams
:
{
c
id
:
586583
,
c
ompanyId
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
10
,
companyType
:
1
companyType
:
1
,
sort
:
""
}
,
selectOptions
:
{
}
,
forData
:
[
{
label
:
'限消令对象'
,
prop
:
'name'
,
width
:
'215'
},
{
label
:
'业主名称'
,
prop
:
'companyName'
,
width
:
'295'
,
slot
:
true
,
showOverflowTooltip
:
true
}
,
{
label
:
'合作项目数量'
,
prop
:
'count'
,
minWidth
:
'190'
,
align
:
"right"
,
slot
:
true
,
sortable
:
"custom"
}
,
{
label
:
'最近一次合作时间'
,
prop
:
'time'
,
minWidth
:
'214'
,
sortable
:
"custom"
}
,
{
label
:
'合作总金额(万元)'
,
prop
:
'amount'
,
minWidth
:
'226'
,
align
:
"right"
,
sortable
:
"custom"
}
,
],
formData
:
[
{
type
:
4
,
fieldName
:
'businessTypes'
,
value
:
''
,
placeholder
:
'咨询机构业务'
,
uid
:
this
.
getUid
()
},
{
type
:
5
,
fieldName
:
'time'
,
value
:
''
,
placeholder
:
'合作频率'
,
startTime
:
'dateFrom'
,
endTime
:
'dateTo'
,
uid
:
this
.
getUid
()
},
{
type
:
4
,
fieldName
:
'businessTypes'
,
value
:
''
,
placeholder
:
'咨询机构业务'
,
options
:
[],
uid
:
this
.
getUid
()
}
,
{
type
:
4
,
fieldName
:
'counterpartCompanyRoles'
,
value
:
''
,
placeholder
:
'合作项目类型'
,
options
:
[],
uid
:
this
.
getUid
()
}
,
{
type
:
4
,
fieldName
:
'projectTypes'
,
value
:
''
,
placeholder
:
'合作工程类型'
,
options
:
[],
uid
:
this
.
getUid
()
}
,
{
type
:
5
,
fieldName
:
'time'
,
value
:
''
,
placeholder
:
'合作频率'
,
startTime
:
'beginTime'
,
endTime
:
'endTime'
,
uid
:
this
.
getUid
()
}
,
{
type
:
6
,
fieldName
:
'money'
,
value
:
''
,
placeholder
:
'合作金额'
,
uid
:
this
.
getUid
()
}
,
{
type
:
3
,
fieldName
:
'keyword'
,
value
:
''
,
placeholder
:
'请输入'
,
uid
:
this
.
getUid
()
}
,
],
//列表
tableLoading
:
false
,
tableData
:
[],
tableDataTotal
:
0
,
isSkeleton
:
true
isSkeleton
:
true
,
// 合作项目详情弹窗
cooperationRecordDialog
:
false
,
dialogQueryParams
:
{
companyId
:
""
,
pageNum
:
1
,
pageSize
:
10
,
companyType
:
1
,
sort
:
""
}
,
dialogForData
:
[
{
label
:
'合作项目/工程名称'
,
prop
:
'projectName'
,
width
:
'182'
,
slot
:
true
,
showOverflowTooltip
:
true
}
,
{
label
:
'合作时间'
,
prop
:
'time'
,
width
:
'93'
,
sortable
:
"custom"
}
,
{
label
:
'咨询机构承担角色'
,
prop
:
'agencyBusinessType'
,
width
:
'122'
}
,
{
label
:
'项目类型'
,
prop
:
'counterpartRole'
,
minWidth
:
'74'
}
,
{
label
:
'工程类型'
,
prop
:
'projectType'
,
minWidth
:
'74'
}
,
{
label
:
'项目/工程金额(万元)'
,
prop
:
'amount'
,
width
:
'164'
,
sortable
:
"custom"
,
align
:
"right"
,
}
,
{
label
:
'项目地区'
,
prop
:
'area'
,
width
:
'245'
,
slot
:
true
}
,
{
label
:
'数据来源'
,
prop
:
'dataSource'
,
width
:
'74'
}
,
],
dialogFormData
:
[
{
type
:
4
,
fieldName
:
'businessTypes'
,
value
:
''
,
placeholder
:
'咨询机构业务'
,
options
:
[],
uid
:
this
.
getUid
()
}
,
{
type
:
4
,
fieldName
:
'counterpartCompanyRoles'
,
value
:
''
,
placeholder
:
'合作项目类型'
,
options
:
[],
uid
:
this
.
getUid
()
}
,
{
type
:
4
,
fieldName
:
'projectTypes'
,
value
:
''
,
placeholder
:
'合作工程类型'
,
options
:
[],
uid
:
this
.
getUid
()
}
,
{
type
:
5
,
fieldName
:
'time'
,
value
:
''
,
placeholder
:
'合作频率'
,
startTime
:
'beginTime'
,
endTime
:
'endTime'
,
uid
:
this
.
getUid
()
}
,
{
type
:
3
,
fieldName
:
'keyword'
,
value
:
''
,
placeholder
:
'请输入'
,
uid
:
this
.
getUid
()
}
,
],
dialogIsSkeleton
:
true
,
dialogtableDataTotal
:
0
,
dialogTableData
:
[],
}
;
}
,
//可访问data属性
...
...
@@ -53,11 +132,74 @@ export default {
methods
:
{
async
initDetail
()
{
try
{
await
this
.
setOptions
(
true
);
await
this
.
handleQuery
();
}
catch
(
error
)
{
}
}
,
async
setOptions
(
flag
)
{
try
{
const
options
=
await
getCooperativeOwnerUnitsOptionsApi
({
companyId
:
this
.
queryParams
.
companyId
}
);
if
(
options
.
code
==
200
&&
options
.
data
)
{
for
(
const
key
in
options
.
data
)
{
options
.
data
[
key
]
=
options
.
data
[
key
].
map
(
item
=>
({
name
:
item
,
value
:
item
}
));
}
this
.
selectOptions
=
options
.
data
;
const
optionsKey
=
[[
"businessType"
,
"businessTypes"
],
[
"counterpartCompanyRole"
,
"counterpartCompanyRoles"
],
[
"projectType"
,
"projectTypes"
]];
optionsKey
.
forEach
(([
key
,
value
])
=>
{
flag
?
this
.
$set
(
this
.
formData
.
find
(
formItem
=>
value
==
formItem
.
fieldName
),
"options"
,
this
.
selectOptions
[
key
])
:
null
;
this
.
$set
(
this
.
dialogFormData
.
find
(
formItem
=>
value
==
formItem
.
fieldName
),
"options"
,
this
.
selectOptions
[
key
]);
}
);
}
}
catch
(
error
)
{
console
.
log
(
error
);
}
}
,
// 创建列表查询条件
createQueryCondition
(
form
)
{
/**
* @type {Array<{
* fieldName : string;
* value : any
*
}
>
}
*/
const
paramsArray
=
JSON
.
parse
(
JSON
.
stringify
(
form
));
const
params
=
{
}
;
// 处理查询参数
paramsArray
.
forEach
(
item
=>
{
// 有效参数
if
((
item
.
value
&&
item
.
value
!=
"0"
&&
!
Array
.
isArray
(
item
.
value
))
||
item
?.
value
?.
length
)
{
// 多选
if
([
"businessTypes"
,
"counterpartCompanyRoles"
,
"projectTypes"
].
includes
(
item
.
fieldName
))
{
params
[
item
.
fieldName
]
=
item
.
value
;
}
// 时间处理
if
(
item
.
fieldName
==
"time"
)
{
params
[
"beginTime"
]
=
item
.
value
[
0
];
params
[
"endTime"
]
=
item
.
value
[
1
];
}
// 金额处理
if
(
item
.
fieldName
==
"money"
)
{
params
[
"minAmount"
]
=
item
.
value
[
0
]
?
item
.
value
[
0
]
:
""
;
params
[
"maxAmount"
]
=
item
.
value
[
1
]
?
item
.
value
[
1
]
:
""
;
}
// 搜索关键词处理
if
(
item
.
fieldName
==
"keyword"
&&
item
?.
value
.
trim
())
{
params
[
"keyword"
]
=
item
.
value
;
}
}
}
);
return
params
;
}
,
// 查询
async
handleSearch
()
{
const
params
=
this
.
createQueryCondition
(
this
.
formData
);
this
.
queryParams
.
pageNum
=
1
;
const
searchParams
=
JSON
.
parse
(
JSON
.
stringify
({
...
params
,
...
this
.
queryParams
}
));
this
.
handleQuery
(
searchParams
);
}
,
async
handleQuery
(
params
)
{
try
{
let
data
=
params
?
params
:
this
.
queryParams
;
...
...
@@ -71,6 +213,95 @@ export default {
this
.
isSkeleton
=
false
;
}
}
,
viewEnterprise
(
row
)
{
}
,
async
sortChange
({
column
,
order
,
prop
}
)
{
let
sort
=
null
;
switch
(
prop
)
{
case
"time"
:
order
==
"ascending"
?
sort
=
4
:
sort
=
3
;
break
;
case
"amount"
:
order
==
"ascending"
?
sort
=
2
:
sort
=
1
;
break
;
default
:
break
;
}
if
(
!
order
)
sort
=
""
;
this
.
queryParams
.
sort
=
sort
;
try
{
let
data
=
this
.
queryParams
;
const
res
=
await
getCooperativeOwnerUnitsListApi
(
data
);
this
.
tableData
=
res
.
rows
?
res
.
rows
:
[];
this
.
tableDataTotal
=
res
.
total
?
res
.
total
:
0
;
}
catch
(
error
)
{
console
.
log
(
error
);
}
}
,
viewProject
(
row
)
{
this
.
dialogQueryParams
.
companyId
=
row
.
companyId
;
this
.
cooperationRecordDialog
=
true
;
}
,
async
dialogHandleQurey
(
params
)
{
try
{
let
data
=
params
?
params
:
this
.
dialogQueryParams
;
this
.
dialogIsSkeleton
=
true
;
const
res
=
await
getCooperativeOwnerUnitsDetailApi
(
data
);
this
.
dialogTableData
=
res
.
rows
?
res
.
rows
:
[];
this
.
dialogtableDataTotal
=
res
.
total
?
res
.
total
:
0
;
}
catch
(
error
)
{
console
.
log
(
error
);
}
finally
{
this
.
dialogIsSkeleton
=
false
;
}
}
,
dialogHandleSearch
(
v
)
{
const
params
=
this
.
createQueryCondition
(
this
.
dialogFormData
);
this
.
dialogQueryParams
.
pageNum
=
1
;
const
searchParams
=
JSON
.
parse
(
JSON
.
stringify
({
...
params
,
...
this
.
dialogQueryParams
}
));
this
.
dialogHandleQurey
(
searchParams
);
}
,
async
dialogSortChange
({
column
,
order
,
prop
}
)
{
let
sort
=
null
;
switch
(
prop
)
{
case
"count"
:
order
==
"ascending"
?
sort
=
6
:
sort
=
5
;
break
;
case
"time"
:
order
==
"ascending"
?
sort
=
4
:
sort
=
3
;
break
;
case
"amount"
:
order
==
"ascending"
?
sort
=
2
:
sort
=
1
;
break
;
default
:
break
;
}
if
(
!
order
)
sort
=
""
;
this
.
dialogQueryParams
.
sort
=
sort
;
try
{
let
data
=
this
.
dialogQueryParams
;
const
res
=
await
getCooperativeOwnerUnitsDetailApi
(
data
);
this
.
dialogTableData
=
res
.
rows
?
res
.
rows
:
[];
this
.
dialogtableDataTotal
=
res
.
total
?
res
.
total
:
0
;
}
catch
(
error
)
{
console
.
log
(
error
);
}
}
,
dialogCurrentChange
(
page
)
{
}
,
async
dialogOPen
()
{
await
this
.
setOptions
();
await
this
.
dialogHandleQurey
();
}
,
dialogClose
()
{
const
data
=
this
.
$options
.
data
.
call
(
this
);
this
.
dialogQueryParams
=
data
.
dialogQueryParams
;
this
.
dialogFormData
=
data
.
dialogFormData
;
this
.
dialogtableDataTotal
=
data
.
dialogtableDataTotal
;
this
.
dialogTableData
=
data
.
dialogTableData
;
}
}
,
}
<
/script
>
...
...
@@ -110,5 +341,48 @@ export default {
}
}
@
import
"@/assets/styles/search-common.scss"
;
::
v
-
deep
.
cooperation
-
record
-
dialog
-
container
{
.
cooperation
-
record
-
dialog
{
position
:
absolute
;
left
:
50
%
;
top
:
50
%
;
transform
:
translate
(
-
50
%
,
-
50
%
);
border
-
radius
:
4
px
;
margin
:
0
px
!
important
;
.
el
-
dialog__header
{
padding
:
20
px
;
height
:
56
px
;
display
:
flex
;
align
-
items
:
center
;
justify
-
content
:
space
-
between
;
box
-
sizing
:
border
-
box
;
border
-
bottom
:
1
px
solid
#
eeeeee
;
.
el
-
dialog__title
{
color
:
#
232323
;
font
-
weight
:
bold
;
line
-
height
:
16
px
;
}
.
el
-
dialog__headerbtn
{
position
:
static
;
width
:
16
px
;
height
:
16
px
;
}
}
.
el
-
dialog__body
{
padding
:
24
px
20
px
;
box
-
sizing
:
border
-
box
;
.
cooperation
-
record
-
dialog
-
innner
{
width
:
100
%
;
height
:
100
%
;
}
}
}
}
}
<
/style
>
dsk-operate-ui/src/views/detail/party-a/index.vue
View file @
690227c4
...
...
@@ -281,7 +281,7 @@ export default {
this
.
companyId
=
data
;
await
this
.
$nextTick
();
this
.
listenSider
();
await
this
.
getStatistic
();
//
await this.getStatistic();
await
this
.
handleQuery
();
await
this
.
association
(
this
.
$route
.
query
.
customerId
);
this
.
$refs
.
sidebar
.
getFinancial
(
data
);
...
...
@@ -309,7 +309,7 @@ export default {
if
(
result
.
code
==
200
)
{
if
(
result
.
data
.
totalCount
<
1
)
{
let
arr
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
$refs
.
sidebar
.
sideRoute
));
arr
[
1
].
children
[
5
].
children
[
2
].
disabled
=
true
;
arr
[
0
].
children
[
5
].
children
[
2
].
disabled
=
true
;
this
.
$refs
.
sidebar
.
sideRoute
=
arr
;
}
}
...
...
dsk-operate-ui/src/views/detail/party-a/internalCooperation/cooperationRecord.vue
View file @
690227c4
...
...
@@ -14,7 +14,7 @@
</tables>
<el-dialog
:title=
"dialogTitle"
:visible
.
sync=
"cooperationRecordDialog"
width=
"1100px"
@
close=
"dialogClose"
class=
"cooperation-record-dialog-container"
custom-class=
"cooperation-record-dialog"
>
class=
"cooperation-record-dialog-container"
custom-class=
"cooperation-record-dialog"
:destroy-on-close=
"true"
>
<div
class=
"cooperation-record-dialog-innner"
>
<dialog-head-form-new
title=
""
:form-data=
"dialogFormData"
:query-params=
"dialogQueryParams"
:total=
"dialogtableDataTotal"
:isExcel=
"false"
@
handle-search=
"dialogHandleSearch"
ref=
"dialogSearchFormNew"
/>
...
...
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