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
3de6f9f4
Commit
3de6f9f4
authored
Mar 07, 2024
by
chenyuefang
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/V20231129-中建一局二公司' into V20231129-中建一局二公司
parents
10cbbca3
8a431344
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
335 additions
and
108 deletions
+335
-108
CbQuantitySummaryServiceImpl.java
.../dsk/cscec/service/impl/CbQuantitySummaryServiceImpl.java
+6
-0
CbQuantitySummaryMapper.xml
...c/main/resources/mapper/cscec/CbQuantitySummaryMapper.xml
+20
-22
index.vue
dsk-operate-ui/src/views/detail/biddetail/index.vue
+9
-8
Sidebar.vue
...operate-ui/src/views/detail/party-a/component/Sidebar.vue
+2
-1
cooperativeConstructionUnit.vue
...y-a/consultingTransaction/cooperativeConstructionUnit.vue
+33
-7
cooperativeGroup.vue
...detail/party-a/consultingTransaction/cooperativeGroup.vue
+29
-9
cooperativeOwnerUnits.vue
...l/party-a/consultingTransaction/cooperativeOwnerUnits.vue
+34
-8
index.vue
dsk-operate-ui/src/views/detail/party-a/index.vue
+16
-8
consultingAgencyCooperation.vue
...rty-a/internalCooperation/consultingAgencyCooperation.vue
+8
-5
index.vue
.../projectCostLedger/detail/components/DirectCost/index.vue
+1
-1
AddActualCost.vue
...etail/components/FeedSummary/components/AddActualCost.vue
+143
-5
index.vue
...projectCostLedger/detail/components/FeedSummary/index.vue
+32
-32
index.vue
dsk-operate-ui/src/views/projectCostLedger/detail/index.vue
+2
-2
No files found.
dsk-module/dsk-biz-api/src/main/java/com/dsk/cscec/service/impl/CbQuantitySummaryServiceImpl.java
View file @
3de6f9f4
...
...
@@ -108,6 +108,12 @@ public class CbQuantitySummaryServiceImpl extends ServiceImpl<CbQuantitySummaryM
@Override
public
List
<
CbQuantitySummaryListVo
>
subjectList
(
CbQuantitySummaryListBo
bo
)
{
if
(
ObjectUtils
.
isEmpty
(
bo
.
getRecordDate
())){
//默认当前月
bo
.
setRecordDate
(
DatePattern
.
SIMPLE_MONTH_FORMAT
.
format
(
new
Date
()));
}
if
(
ObjectUtils
.
isEmpty
(
bo
.
getProjectId
()))
throw
new
BeanException
(
"项目id不能为空!"
);
if
(
ObjectUtils
.
isEmpty
(
bo
.
getCbStage
()))
throw
new
BeanException
(
"成本阶段不能为空!"
);
return
baseMapper
.
selectListBySubject
(
bo
);
}
...
...
dsk-module/dsk-biz-api/src/main/resources/mapper/cscec/CbQuantitySummaryMapper.xml
View file @
3de6f9f4
...
...
@@ -52,28 +52,26 @@
</select>
<select
id=
"selectListBySubject"
resultType=
"com.dsk.cscec.domain.vo.CbQuantitySummaryListVo"
>
select a.*, ifnull(sum(a.quantities),0) totalQuantities from (
select
cqs.id, cqs.cb_subject_name, cqs.company_no, cqs.org_no, cqs.cb_name, cqs.job_content, cqs.calculation_rule,
cqs.unit, cqs.material_description, cqs.guide_price, cqs.bid_unit_price, cqs.unit_price_difference, cqs.quantity,
cqs.combined_price, cqs.combined_price_tax, cqs.brand_name, cqs.bid_source, cqs.remark, cqs.`number`, cqsa.quantities,
cqsa.quantities_unit, cqsa.conversion_quantities, cqsa.conversion_unit, cqsa.purchase_unit_price, cqsa.create_time,
cqsa.id actualId, cqsa.ipm_project_code, cqsa.ipm_contract_code, cqsa.ipm_biz_code, cqsa.push_quantities
cqsa.id actualId, cqsa.ipm_project_code, cqsa.ipm_contract_code, cqsa.ipm_biz_code, cqsa.push_quantities,
ifnull(sum(cqsa1.quantities),0) totalQuantities
from cb_quantity_summary cqs
left join cb_quantity_summary_actual cqsa on cqs.id = cqsa.cb_quantity_summary_id
left join cb_quantity_summary_actual cqsa on (cqs.id = cqsa.cb_quantity_summary_id and cqsa.record_date = #{recordDate} )
left join cb_quantity_summary_actual cqsa1 on (cqs.id = cqsa1.cb_quantity_summary_id and cqsa1.record_date
<
= #{recordDate} )
left join cb_subject cs1 on cqs.cb_subject_name = cs1.cb_subject_name
where cqs.del_falg = 0 and cqs.project_id = #{projectId} and cqs.cb_stage = #{cbStage}
<if
test=
"recordDate != null and recordDate != ''"
>
and cqsa.record_date
<
= #{recordDate}
</if>
<if
test=
"cbSubjectName != null and cbSubjectName !=''"
>
<choose>
<when
test=
"cbSubjectName == '未归类项目'"
>
and cs1.id is null
</when>
<otherwise>
and cqs.cb_subject_name = #{cbSubjectName}
</otherwise>
<otherwise>
and cs1.id is not null
and cqs.cb_subject_name = #{cbSubjectName}
</otherwise>
</choose>
</if>
order by cqsa.record_date desc
) a
group by a.id
order by a.`number` asc
group by cqs.id
order by cs1.sort asc, cs1.cb_subject_no asc, cqs.`number` asc
</select>
<select
id=
"unconvertedList"
resultType=
"com.dsk.cscec.domain.vo.CbQuantitySummaryListVo"
>
...
...
dsk-operate-ui/src/views/detail/biddetail/index.vue
View file @
3de6f9f4
...
...
@@ -184,6 +184,7 @@ export default {
font-size
:
14px
;
border-bottom
:
1px
solid
#EFEFEF
;
padding-bottom
:
14px
;
position
:
relative
;
.list-titel
{
font-size
:
16px
;
...
...
@@ -324,7 +325,7 @@ export default {
}
.app-container
{
padding
:
0
;
/*padding: 0;*/
}
.qyzx-details
{
...
...
dsk-operate-ui/src/views/detail/party-a/component/Sidebar.vue
View file @
3de6f9f4
...
...
@@ -296,6 +296,7 @@ export default {
},
pathName
:
{
handler
(
newValue
)
{
console
.
log
(
newValue
,
"|||||||"
)
this
.
searchIndex
=
this
.
findNodeIndex
(
this
.
sideRoute
,
newValue
).
index
;
}
}
...
...
dsk-operate-ui/src/views/detail/party-a/consultingTransaction/cooperativeConstructionUnit.vue
View file @
3de6f9f4
...
...
@@ -11,6 +11,11 @@
v-html=
"scope.row.counterpartCompanyName"
>
{{
scope
.
row
.
counterpartCompanyName
}}
</span>
<span
v-else
>
-
</span>
</
template
>
<!-- 合作总金额-->
<
template
slot=
"amount"
slot-scope=
"scope"
>
<span
v-if=
"scope.row.amount"
>
{{
scope
.
row
.
amount
.
toFixed
(
2
)
}}
</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>
...
...
@@ -18,7 +23,7 @@
</
template
>
</tables>
<el-dialog
title=
"合作项目/工程明细"
:visible
.
sync=
"cooperationRecordDialog"
width=
"1100px"
@
close=
"dialogClose"
@
open=
"dialogOPen"
<el-dialog
title=
"合作项目/工程明细"
:visible
.
sync=
"cooperationRecordDialog"
width=
"1100px"
@
close=
"dialogClose"
@
open=
"dialogOPen"
:modal-append-to-body=
"false"
class=
"cooperation-record-dialog-container"
custom-class=
"cooperation-record-dialog"
:destroy-on-close=
"true"
:close-on-click-modal=
"false"
>
<div
class=
"cooperation-record-dialog-innner"
>
<dialog-head-form-new
title=
""
:form-data=
"dialogFormData"
:query-params=
"dialogQueryParams"
:total=
"dialogtableDataTotal"
:isExcel=
"false"
...
...
@@ -32,7 +37,18 @@
@
sort-change=
"dialogSortChange"
:maxHeight=
"true"
>
<!-- 合作项目/工程名称-->
<
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>
<template
v-if=
"scope.row.dataSource ==='中标业绩'"
>
<router-link
:to=
"`/biddetail/$
{scope.row.sourceId}`" tag="a" class="a-link" v-if="scope.row.sourceId" v-html="scope.row.projectName">
</router-link>
<div
v-else
v-html=
"scope.row.projectName || '--'"
></div>
</
template
>
<
template
>
<span
@
click=
"linkTo1(scope.row.sourceId)"
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>
<!-- 合作总金额-->
<
template
slot=
"amount"
slot-scope=
"scope"
>
<span
v-if=
"scope.row.amount"
>
{{
scope
.
row
.
amount
.
toFixed
(
2
)
}}
</span>
<span
v-else
>
-
</span>
</
template
>
<!-- 省市区 -->
...
...
@@ -53,6 +69,7 @@ import DialogHeadFormNew from "../component/HeadFormNew";
import
DialogTables
from
"../component/Tables"
;
import
{
replaceDomTags
}
from
"@/utils"
;
import
{
encodeStr
}
from
"@/assets/js/common"
;
import
{
skyProjectDetail
}
from
'@/api/detail/party-a/dealings'
export
default
{
name
:
"cooperativeConstructionUnit"
,
mixins
:
[
mixin
],
...
...
@@ -76,7 +93,7 @@ export default {
{
label
:
'施工单位名称'
,
prop
:
'counterpartCompanyName'
,
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"
}
,
{
label
:
'合作总金额(万元)'
,
prop
:
'amount'
,
slot
:
true
,
minWidth
:
'226'
,
align
:
"right"
,
sortable
:
"custom"
}
,
],
formData
:
[
{
type
:
4
,
fieldName
:
'businessTypes'
,
value
:
''
,
placeholder
:
'咨询机构业务'
,
options
:
[],
uid
:
this
.
getUid
()
}
,
...
...
@@ -105,9 +122,9 @@ export default {
{
label
:
'合作项目/工程名称'
,
prop
:
'projectName'
,
width
:
'260'
,
slot
:
true
,
showOverflowTooltip
:
true
}
,
{
label
:
'合作时间'
,
prop
:
'time'
,
width
:
'140'
,
sortable
:
"custom"
}
,
{
label
:
'咨询机构承担角色'
,
prop
:
'agencyBusinessType'
,
width
:
'140'
}
,
{
label
:
'项目类型'
,
prop
:
'counterpartRole'
,
minWidth
:
'
90
'
}
,
{
label
:
'工程类型'
,
prop
:
'projectType'
,
minWidth
:
'
9
0'
}
,
{
label
:
'项目/工程金额(万元)'
,
prop
:
'amount'
,
width
:
'190'
,
sortable
:
"custom"
,
align
:
"right"
,
}
,
{
label
:
'项目类型'
,
prop
:
'counterpartRole'
,
minWidth
:
'
105
'
}
,
{
label
:
'工程类型'
,
prop
:
'projectType'
,
minWidth
:
'
10
0'
}
,
{
label
:
'项目/工程金额(万元)'
,
prop
:
'amount'
,
slot
:
true
,
width
:
'190'
,
sortable
:
"custom"
,
align
:
"right"
,
}
,
{
label
:
'项目地区'
,
prop
:
'area'
,
width
:
'245'
,
slot
:
true
}
,
{
label
:
'数据来源'
,
prop
:
'dataSource'
,
width
:
'90'
}
,
],
...
...
@@ -347,6 +364,15 @@ export default {
this
.
dialogFormData
=
data
.
dialogFormData
;
this
.
dialogtableDataTotal
=
data
.
dialogtableDataTotal
;
this
.
dialogTableData
=
data
.
dialogTableData
;
}
,
linkTo1
(
id
){
let
url
=
""
skyProjectDetail
({
sourceId
:
id
}
).
then
(
res
=>
{
if
(
res
.
data
&&
res
.
data
.
sourceUrl
){
url
=
res
.
data
.
sourceUrl
window
.
open
(
url
,
"_blank"
)
}
}
)
}
}
,
}
...
...
dsk-operate-ui/src/views/detail/party-a/consultingTransaction/cooperativeGroup.vue
View file @
3de6f9f4
...
...
@@ -7,7 +7,7 @@
:queryParams=
"queryParams"
@
handle-current-change=
"handleCurrentChange"
@
sort-change=
"sortChange"
>
<!-- 业主名称 -->
<template
slot=
"combineName"
slot-scope=
"scope"
>
<span
v-if=
"scope.row.combineName"
style=
"color: #0081FF;cursor: pointer;"
@
click=
"viewEnterprise(scope.row)"
<span
v-if=
"scope.row.combineName"
@
click=
"viewEnterprise(scope.row)"
v-html=
"scope.row.combineName"
>
{{
scope
.
row
.
combineName
}}
</span>
<span
v-else
>
-
</span>
</
template
>
...
...
@@ -18,7 +18,7 @@
</
template
>
</tables>
<el-dialog
title=
"合作项目/工程明细"
:visible
.
sync=
"cooperationRecordDialog"
width=
"1100px"
@
close=
"dialogClose"
@
open=
"dialogOPen"
<el-dialog
title=
"合作项目/工程明细"
:visible
.
sync=
"cooperationRecordDialog"
width=
"1100px"
@
close=
"dialogClose"
@
open=
"dialogOPen"
:modal-append-to-body=
"false"
class=
"cooperation-record-dialog-container"
custom-class=
"cooperation-record-dialog"
:destroy-on-close=
"true"
:close-on-click-modal=
"false"
>
<!-- tab切换栏 -->
...
...
@@ -64,8 +64,18 @@
@
sort-change=
"dialogSortChange"
:maxHeight=
"true"
>
<!-- 合作项目/工程名称-->
<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>
<template
v-if=
"scope.row.dataSource ==='中标业绩'"
>
<router-link
:to=
"`/biddetail/$
{scope.row.sourceId}`" tag="a" class="a-link" v-if="scope.row.sourceId" v-html="scope.row.projectName">
</router-link>
<div
v-else
v-html=
"scope.row.projectName || '--'"
></div>
</
template
>
<
template
>
<span
@
click=
"linkTo1(scope.row.sourceId)"
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>
<!-- 合作总金额-->
<
template
slot=
"amount"
slot-scope=
"scope"
>
<span
v-if=
"scope.row.amount"
>
{{
scope
.
row
.
amount
.
toFixed
(
2
)
}}
</span>
<span
v-else
>
-
</span>
</
template
>
<!-- 合作成员 -->
...
...
@@ -95,6 +105,7 @@ import DialogTables from "../component/Tables";
import
DskTabToggle
from
"@/components/DskTabToggle"
;
import
{
replaceDomTags
}
from
"@/utils"
;
import
{
encodeStr
}
from
"@/assets/js/common"
;
import
{
skyProjectDetail
}
from
'@/api/detail/party-a/dealings'
export
default
{
name
:
"cooperativeGroup"
,
mixins
:
[
mixin
],
...
...
@@ -140,7 +151,7 @@ export default {
//
{
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
()
}
,
{
type
:
3
,
fieldName
:
'keyword'
,
value
:
''
,
placeholder
:
'请输入
集团名称
'
,
uid
:
this
.
getUid
()
}
,
],
//列表
tableLoading
:
false
,
...
...
@@ -170,9 +181,9 @@ export default {
{
label
:
'合作时间'
,
prop
:
'time'
,
width
:
'140'
,
sortable
:
"custom"
}
,
{
label
:
'集团成员身份'
,
prop
:
'role'
,
width
:
'140'
}
,
{
label
:
'咨询机构承担角色'
,
prop
:
'agencyBusinessType'
,
width
:
'140'
}
,
{
label
:
'项目类型'
,
prop
:
'counterpartRole'
,
minWidth
:
'
90
'
}
,
{
label
:
'工程类型'
,
prop
:
'projectType'
,
minWidth
:
'
9
0'
}
,
{
label
:
'项目/工程金额(万元)'
,
prop
:
'amount'
,
width
:
'190'
,
sortable
:
"custom"
,
align
:
"right"
,
}
,
{
label
:
'项目类型'
,
prop
:
'counterpartRole'
,
minWidth
:
'
105
'
}
,
{
label
:
'工程类型'
,
prop
:
'projectType'
,
minWidth
:
'
10
0'
}
,
{
label
:
'项目/工程金额(万元)'
,
slot
:
true
,
prop
:
'amount'
,
width
:
'190'
,
sortable
:
"custom"
,
align
:
"right"
,
}
,
{
label
:
'项目地区'
,
prop
:
'area'
,
width
:
'245'
,
slot
:
true
}
,
],
dialogFormData
:
[
...
...
@@ -440,6 +451,15 @@ export default {
async tabToggle() {
await this.resetDialogQuery();
await this.dialogHandleQurey();
}
,
linkTo1(id){
let url = ""
skyProjectDetail({sourceId:id
}
).then(res=>{
if(res.data&&res.data.sourceUrl){
url = res.data.sourceUrl
window.open(url, "_blank")
}
}
)
}
}
,
}
...
...
dsk-operate-ui/src/views/detail/party-a/consultingTransaction/cooperativeOwnerUnits.vue
View file @
3de6f9f4
...
...
@@ -11,6 +11,11 @@
v-html=
"scope.row.companyName"
>
{{
scope
.
row
.
companyName
}}
</span>
<span
v-else
>
-
</span>
</
template
>
<!-- 合作总金额-->
<
template
slot=
"amount"
slot-scope=
"scope"
>
<span
v-if=
"scope.row.amount"
>
{{
scope
.
row
.
amount
.
toFixed
(
2
)
}}
</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>
...
...
@@ -18,7 +23,7 @@
</
template
>
</tables>
<el-dialog
title=
"合作项目/工程明细"
:visible
.
sync=
"cooperationRecordDialog"
width=
"1100px"
@
close=
"dialogClose"
@
open=
"dialogOPen"
<el-dialog
title=
"合作项目/工程明细"
:visible
.
sync=
"cooperationRecordDialog"
width=
"1100px"
@
close=
"dialogClose"
@
open=
"dialogOPen"
:modal-append-to-body=
"false"
class=
"cooperation-record-dialog-container"
custom-class=
"cooperation-record-dialog"
:destroy-on-close=
"true"
:close-on-click-modal=
"false"
>
<div
class=
"cooperation-record-dialog-innner"
>
<dialog-head-form-new
title=
""
:form-data=
"dialogFormData"
:query-params=
"dialogQueryParams"
:total=
"dialogtableDataTotal"
:isExcel=
"false"
...
...
@@ -32,7 +37,18 @@
@
sort-change=
"dialogSortChange"
:maxHeight=
"true"
>
<!-- 合作项目/工程名称-->
<
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>
<template
v-if=
"scope.row.dataSource ==='中标业绩'"
>
<router-link
:to=
"`/biddetail/$
{scope.row.sourceId}`" tag="a" class="a-link" v-if="scope.row.sourceId" v-html="scope.row.projectName">
</router-link>
<div
v-else
v-html=
"scope.row.projectName || '--'"
></div>
</
template
>
<
template
>
<span
@
click=
"linkTo1(scope.row.sourceId)"
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>
<!-- 合作总金额-->
<
template
slot=
"amount"
slot-scope=
"scope"
>
<span
v-if=
"scope.row.amount"
>
{{
parseFloat
(
Number
(
scope
.
row
.
amount
).
toFixed
(
2
))
}}
</span>
<span
v-else
>
-
</span>
</
template
>
<!-- 省市区 -->
...
...
@@ -53,6 +69,7 @@ import DialogHeadFormNew from "../component/HeadFormNew";
import
DialogTables
from
"../component/Tables"
;
import
{
replaceDomTags
}
from
"@/utils"
;
import
{
encodeStr
}
from
"@/assets/js/common"
;
import
{
skyProjectDetail
}
from
'@/api/detail/party-a/dealings'
export
default
{
name
:
"cooperativeOwnerUnits"
,
mixins
:
[
mixin
],
...
...
@@ -67,7 +84,7 @@ export default {
queryParams
:
{
companyId
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
1
0
,
pageSize
:
5
0
,
companyType
:
1
,
sort
:
""
}
,
...
...
@@ -76,7 +93,7 @@ export default {
{
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"
}
,
{
label
:
'合作总金额(万元)'
,
prop
:
'amount'
,
slot
:
true
,
minWidth
:
'226'
,
align
:
"right"
,
sortable
:
"custom"
}
,
],
formData
:
[
{
type
:
4
,
fieldName
:
'businessTypes'
,
value
:
''
,
placeholder
:
'咨询机构业务'
,
options
:
[],
uid
:
this
.
getUid
()
}
,
...
...
@@ -105,9 +122,9 @@ export default {
{
label
:
'合作项目/工程名称'
,
prop
:
'projectName'
,
width
:
'260'
,
slot
:
true
,
showOverflowTooltip
:
true
}
,
{
label
:
'合作时间'
,
prop
:
'time'
,
width
:
'140'
,
sortable
:
"custom"
}
,
{
label
:
'咨询机构承担角色'
,
prop
:
'agencyBusinessType'
,
width
:
'140'
}
,
{
label
:
'项目类型'
,
prop
:
'counterpartRole'
,
minWidth
:
'
90
'
}
,
{
label
:
'工程类型'
,
prop
:
'projectType'
,
minWidth
:
'
9
0'
}
,
{
label
:
'项目/工程金额(万元)'
,
prop
:
'amount'
,
width
:
'190'
,
sortable
:
"custom"
,
align
:
"right"
,
}
,
{
label
:
'项目类型'
,
prop
:
'counterpartRole'
,
minWidth
:
'
105
'
}
,
{
label
:
'工程类型'
,
prop
:
'projectType'
,
minWidth
:
'
10
0'
}
,
{
label
:
'项目/工程金额(万元)'
,
prop
:
'amount'
,
slot
:
true
,
width
:
'190'
,
sortable
:
"custom"
,
align
:
"right"
,
}
,
{
label
:
'项目地区'
,
prop
:
'area'
,
width
:
'245'
,
slot
:
true
}
,
{
label
:
'数据来源'
,
prop
:
'dataSource'
,
width
:
'90'
}
,
],
...
...
@@ -348,6 +365,15 @@ export default {
this.dialogFormData = data.dialogFormData;
this.dialogtableDataTotal = data.dialogtableDataTotal;
this.dialogTableData = data.dialogTableData;
}
,
linkTo1(id){
let url = ""
skyProjectDetail({sourceId:id
}
).then(res=>{
if(res.data&&res.data.sourceUrl){
url = res.data.sourceUrl
window.open(url, "_blank")
}
}
)
}
}
,
}
...
...
dsk-operate-ui/src/views/detail/party-a/index.vue
View file @
3de6f9f4
<
template
>
<div
class=
"app-container part-container details-of-party"
>
<div
style=
"height: 100%;"
v-if=
"!isCompany"
>
<skeleton
style=
"padding-top: 16px"
></skeleton>
</div>
<Header
:company-id=
"companyId"
:companyInfo=
"companyInfo"
:cooDetail=
"cooDetail"
v-if=
"companyId"
@
close-detail=
"closeDetail"
/>
<div
class=
"part-main"
>
<div
class=
"part-left"
>
...
...
@@ -148,6 +151,7 @@ import ConstructionSituation from "@/views/detail/party-a/internalCooperation/co
import
{
urbanInvestmentPage
,
}
from
'@/api/detail/party-a/urbanLnvestment'
;
import
skeleton
from
'./component/skeleton'
export
default
{
name
:
'PartyA'
,
components
:
{
...
...
@@ -198,11 +202,13 @@ export default {
CooperativeConstructionUnit
,
CooperativeGroup
,
ConstructionPerformance
,
ConstructionSituation
ConstructionSituation
,
skeleton
},
data
()
{
return
{
isSkeleton
:
true
,
isSkeleton1
:
true
,
companyInfo
:
{},
customerInfo
:
{},
// 企业名称
...
...
@@ -309,13 +315,15 @@ export default {
this
.
companyId
=
data
;
await
this
.
$nextTick
();
this
.
listenSider
();
await
this
.
getStatistic
(
this
.
companyName
);
await
this
.
handleQuery
();
await
this
.
getStatistic
(
this
.
companyName
);
await
this
.
association
(
this
.
$route
.
query
.
customerId
);
this
.
$refs
.
sidebar
.
getFinancial
(
data
);
}
},
async
getStatistic
(
companyName
)
{
let
params
=
{
companyId
:
this
.
companyId
};
...
...
dsk-operate-ui/src/views/detail/party-a/internalCooperation/consultingAgencyCooperation.vue
View file @
3de6f9f4
...
...
@@ -17,19 +17,20 @@
<
/template
>
<!--
业主单位
-->
<
template
slot
=
"ownerName"
slot
-
scope
=
"scope"
>
<
span
v
-
if
=
"scope.row.ownerName"
style
=
"color: #0081FF;cursor: pointer;"
@
click
=
"viewEnterprise(scope.row)"
>
{{
scope
.
row
.
ownerName
}}
<
/span
>
<!--
<
span
v
-
if
=
"scope.row.ownerName"
style
=
"color: #0081FF;cursor: pointer;"
@
click
=
"viewEnterprise(scope.row)"
>
{{
scope
.
row
.
ownerName
}}
<
/span>--
>
<!--
<
span
v
-
if
=
"scope.row.ownerName"
@
click
=
"viewEnterprise(scope.row)"
>
{{
scope
.
row
.
ownerName
}}
<
/span>--
>
<
router
-
link
:
to
=
"`/enterprise/${encodeStr(scope.row.ownerCid)
}}
`"
tag
=
"a"
class
=
"a-link"
v
-
if
=
"scope.row.ownerCid"
v
-
html
=
"scope.row.ownerName"
><
/router-link
>
<
span
v
-
else
>-<
/span
>
<
/template
>
<!--
项目承接单位
-->
<
template
slot
=
"contractOrgName"
slot
-
scope
=
"scope"
>
<
span
v
-
if
=
"scope.row.contractOrgName"
style
=
"color: #0081FF;cursor: pointer;"
@
click
=
"viewEnterprise(scope.row)"
>
{{
scope
.
row
.
contractOrgName
}}
<
/span
>
<
!--
<
span
v
-
if
=
"scope.row.contractOrgName"
@
click
=
"viewEnterprise(scope.row)"
>
{{
scope
.
row
.
contractOrgName
}}
<
/span>--
>
<
router
-
link
:
to
=
"`/enterprise/${encodeStr(scope.row.contractOrgCid)
}}
`"
tag
=
"a"
class
=
"a-link"
v
-
if
=
"scope.row.contractOrgCid"
v
-
html
=
"scope.row.contractOrgName"
><
/router-link
>
<
span
v
-
else
>-<
/span
>
<
/template
>
<!--
咨询机构名称
-->
<
template
slot
=
"advisoryBodyName"
slot
-
scope
=
"scope"
>
<
span
v
-
if
=
"scope.row.advisoryBodyName"
style
=
"color: #0081FF;cursor: pointer;"
@
click
=
"viewEnterprise(scope.row)"
>
{{
scope
.
row
.
advisoryBodyName
}}
<
/span
>
<
router
-
link
:
to
=
"`/enterprise/${encodeStr(scope.row.advisoryBodyCid)
}}
`"
tag
=
"a"
class
=
"a-link"
v
-
if
=
"scope.row.advisoryBodyCid"
v
-
html
=
"scope.row.advisoryBodyName"
><
/router-link
>
<
span
v
-
else
>-<
/span
>
<
/template
>
<
/tables
>
...
...
@@ -41,6 +42,7 @@ import mixin from '@/views/detail/party-a/mixins/mixin';
import
{
getConsultingAgencyCooperationListApi
,
getConsultingAgencyCooperationTypesApi
,
exportRecordOfCooperationExcelApi
}
from
"@/api/internalCooperation"
;
import
{
getAllAreaApi
}
from
"@/api/common"
;
import
{
getTreeSelectAreaList
}
from
"@/utils"
;
import
{
encodeStr
}
from
"@/assets/js/common"
;
export
default
{
name
:
"consultingAgencyCooperation"
,
mixins
:
[
mixin
],
...
...
@@ -50,6 +52,7 @@ export default {
props
:
[
'companyId'
],
data
()
{
return
{
encodeStr
,
queryParams
:
{
advisoryBodyCid
:
this
.
companyId
,
pageNum
:
1
,
...
...
dsk-operate-ui/src/views/projectCostLedger/detail/components/DirectCost/index.vue
View file @
3de6f9f4
...
...
@@ -158,7 +158,7 @@ export default {
menuDetails
:{},
menuOptions
:
{
nodeName
:
"menuName"
,
nodeValue
:
"menu
Id
"
,
nodeValue
:
"menu
Name
"
,
children
:
"childrenList"
},
detailsId
:
''
,
...
...
dsk-operate-ui/src/views/projectCostLedger/detail/components/FeedSummary/components/AddActualCost.vue
View file @
3de6f9f4
<
template
>
<el-dialog
title=
"填写实际成本"
:visible=
"comDialogStatus"
class=
"add-actual-cost-container"
>
<el-dialog
title=
"填写实际成本"
:visible=
"comDialogStatus"
class=
"add-actual-cost-container"
@
close=
"dialogClose"
>
<div
class=
"dialog-content-inner"
>
<!-- 成本年份 -->
<div
class=
"cost-year-container"
>
<span>
成本年份
</span>
<el-date-picker
v-model=
"time"
type=
"month"
placeholder=
"请选择所需要添加的成本月份"
format=
"yyyy年MM月"
value-format=
"yyyy-MM"
class=
"project-record-date"
@
change=
"timeChange"
:picker-options=
"pickerOptions"
></el-date-picker>
</div>
</div>
<!-- 底部按钮 -->
<div
class=
"dialog-content-footer"
>
<div
class=
"cancel-or-ok"
>
<el-button
size=
"medium"
@
click=
"cancel"
class=
"cancel-select-year"
>
取消
</el-button>
<el-button
type=
"primary"
size=
"medium"
@
click=
"ok"
class=
"ok-select-year"
>
确定
</el-button>
</div>
</div>
</el-dialog>
</
template
>
<
script
>
import
dayjs
from
"dayjs"
;
export
default
{
name
:
"AddActualCost"
,
props
:
{
dialogStatus
:
{
type
:
Boolean
,
default
:
false
},
projectCreateTime
:
{
type
:
String
,
default
:
""
}
},
model
:
{
...
...
@@ -23,7 +44,11 @@ export default {
},
data
()
{
return
{
comDialogStatus
:
this
.
dialogStatus
comDialogStatus
:
this
.
dialogStatus
,
time
:
""
,
pickerOptions
:
{
disabledDate
:
this
.
disabledDateHandler
}
};
},
//可访问data属性
...
...
@@ -36,7 +61,44 @@ export default {
},
//方法集
methods
:
{
// 时间选择变化
timeChange
(
time
)
{
// console.log(time);
},
cancel
()
{
this
.
comDialogStatus
=
false
;
},
ok
()
{
if
(
!
this
.
time
)
{
return
this
.
$message
.
error
(
"请选择成本年份"
);
}
// 发布事件
this
.
$emit
(
"timeSelect"
,
dayjs
(
this
.
time
).
format
(
"YYYYMM"
));
this
.
comDialogStatus
=
false
;
},
reset
()
{
this
.
time
=
""
;
},
dialogClose
()
{
this
.
$emit
(
"dialogStatusChange"
,
false
);
this
.
reset
();
},
disabledDateHandler
(
optionTime
)
{
// 选项年月
const
_optionTime
=
dayjs
(
optionTime
).
format
(
"YYYYMM"
);
// 当前项目年月
const
_thresholdTime
=
dayjs
(
this
.
projectCreateTime
).
format
(
"YYYYMM"
);
// 当前项目年
const
_thresholdYear
=
_thresholdTime
.
slice
(
0
,
4
);
// 当前项目月份 补0
const
_thresholdMonth
=
_thresholdTime
.
slice
(
4
);
// 是否小于当前项目年月 或 大于 当前项目年月 往后推五年
const
lastYearMonth
=
parseInt
(
`
${
parseInt
(
_thresholdYear
)
+
5
}${
_thresholdMonth
}
`
);;
if
(
parseInt
(
_optionTime
)
<
parseInt
(
_thresholdTime
)
||
parseInt
(
_optionTime
)
>
lastYearMonth
)
{
return
true
;
}
return
false
;
}
},
}
</
script
>
...
...
@@ -58,6 +120,7 @@ export default {
align-items
:
center
;
justify-content
:
space-between
;
border-bottom
:
1px
solid
#eeeeee
;
box-sizing
:
border-box
;
.el-dialog__title
{
font-size
:
16px
;
...
...
@@ -78,9 +141,84 @@ export default {
.el-dialog__body
{
padding
:
0px
;
box-sizing
:
border-box
;
.dialog-content-inner
{
min-height
:
120px
;
padding
:
24px
20px
;
}
.cost-year-container
{
display
:
flex
;
align-items
:
center
;
&
>
span
{
color
:
rgba
(
35
,
35
,
35
,
0
.8
);
font-size
:
14px
;
margin-right
:
16px
;
white-space
:
nowrap
;
}
.project-record-date
{
width
:
100%
;
.el-input__inner
{
height
:
30px
;
line-height
:
30px
;
padding
:
0px
12px
;
border-radius
:
2px
;
border-color
:
#dcdfe6
;
font-size
:
14px
;
color
:
#232323
;
font-weight
:
350
;
}
.el-input__suffix
{
right
:
12px
;
.el-input__icon
{
line-height
:
30px
;
width
:
auto
;
}
}
.el-input__prefix
{
display
:
none
;
}
}
}
.dialog-content-footer
{
height
:
64px
;
padding
:
0px
20px
;
display
:
flex
;
justify-content
:
flex-end
;
align-items
:
center
;
border-top
:
1px
solid
#eeeeee
;
box-sizing
:
border-box
;
.cancel-or-ok
{
display
:
flex
;
height
:
100%
;
align-items
:
center
;
.el-button
{
padding
:
0px
16px
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
height
:
32px
;
font-size
:
14px
;
&
.cancel-select-year
{
color
:
rgba
(
35
,
35
,
35
,
0
.8
);
border
:
1px
solid
#dcdfe6
;
background
:
#fff
;
}
&
.ok-select-year
{
background
:
#0081ff
;
border-color
:
#0081ff
;
}
}
}
}
}
}
}
...
...
dsk-operate-ui/src/views/projectCostLedger/detail/components/FeedSummary/index.vue
View file @
3de6f9f4
...
...
@@ -17,8 +17,6 @@
<div
class=
"right-table-list-container"
>
<div
class=
"project-table-list-header"
>
<div
class=
"project-table-list-haeder-left"
>
<!-- <el-date-picker v-model="recordDate" type="month" placeholder="选择月" format="yyyy年MM月" value-format="yyyy-MM"
class="project-record-date" @change="timeChange"></el-date-picker> -->
<el-select
v-model=
"recordDate"
placeholder=
"请选择年月"
class=
"project-month-select-options"
clearable
@
change=
"monthChange"
>
<el-option
v-for=
"item in monthList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
...
...
@@ -28,7 +26,8 @@
<!-- 实体工程材料单位换算 -->
<el-button
type=
"primary"
size=
"medium"
class=
"unit-conversion-btn"
v-if=
"currentParentName.indexOf('实体工程材料') != -1"
>
单位换算
</el-button>
<!-- 填写实际成本 -->
<el-button
type=
"primary"
size=
"medium"
class=
"actual-cost-btn"
v-else
@
click=
"fillActualCost"
>
填写实际成本
</el-button>
<el-button
type=
"primary"
size=
"medium"
class=
"actual-cost-btn"
v-else
@
click=
"fillActualCost"
>
{{addActualCostEditStatus ? '保存成本' : '填写实际成本'}}
</el-button>
<!-- 表头设置组件 -->
<dsk-table-header-setting
:settingList=
"formColum"
@
settingChange=
"settingChange"
></dsk-table-header-setting>
</div>
...
...
@@ -50,7 +49,7 @@
</div>
<!-- 填写实际成本触发 -->
<add-actual-cost
v-model=
"showAddActualCost"
></add-actual-cost>
<add-actual-cost
v-model=
"showAddActualCost"
:project-create-time=
"projectDetailInfo.createTime"
@
timeSelect=
"timeSelect"
></add-actual-cost>
</div>
</template>
...
...
@@ -178,7 +177,11 @@ export default {
tableDataList
:
[],
statisticsParentName
:
[
"劳务分包工程"
,
"专业分包工程"
],
// 填写实际成本弹窗
showAddActualCost
:
false
showAddActualCost
:
false
,
// 填写实际成本 编辑状态
addActualCostEditStatus
:
false
,
// 当前选择的成本年份
selectActualCostTime
:
""
};
},
//可访问data属性
...
...
@@ -345,6 +348,7 @@ export default {
}
},
monthChange
(
month
)
{
this
.
resetEditStatus
();
// 当前月
const
_now
=
dayjs
(
new
Date
().
valueOf
()).
format
(
"YYYYMM"
);
// 请求列表参数
...
...
@@ -364,6 +368,7 @@ export default {
this
.
getFeedSummaryList
(
params
);
},
menuSelect
(
currentId
,
currentTemp
)
{
this
.
resetEditStatus
();
this
.
currentNodeName
=
currentId
;
const
parentName
=
currentTemp
.
parent
?
this
.
getCurrentType
(
currentTemp
.
parent
)
:
currentId
;
if
(
parentName
)
this
.
currentParentName
=
parentName
;
...
...
@@ -379,10 +384,6 @@ export default {
return
this
.
getCurrentType
(
parent
.
parent
);
}
},
// 时间选择变化
timeChange
(
time
)
{
console
.
log
(
time
);
},
// 表头设置变化
async
settingChange
(
use
)
{
try
{
...
...
@@ -394,6 +395,28 @@ export default {
// 填写或修改新的 成本月份
fillActualCost
()
{
this
.
showAddActualCost
=
true
;
},
resetEditStatus
()
{
this
.
addActualCostEditStatus
=
false
;
this
.
selectActualCostTime
=
""
;
},
async
timeSelect
(
selectTime
)
{
// 编辑状态
this
.
addActualCostEditStatus
=
true
;
this
.
selectActualCostTime
=
selectTime
;
// 判断是否包含 选择的年月 包含则修改 未包含则新增
const
findReslut
=
this
.
originMonthList
.
includes
(
selectTime
);
// 包含所选月
if
(
findReslut
)
{
this
.
recordDate
=
selectTime
;
const
params
=
this
.
createRequestConditions
();
params
[
"recordDate"
]
=
selectTime
;
// 获取选中月数据
await
this
.
getFeedSummaryList
(
params
);
}
else
{
// 不包含当前所选月 新增数据
}
}
},
}
...
...
@@ -430,29 +453,6 @@ export default {
.project-table-list-haeder-left
{
display
:
flex
;
align-items
:
center
;
.project-record-date
{
width
:
140px
;
.el-input__inner
{
height
:
32px
;
line-height
:
32px
;
padding
:
0px
12px
;
border-radius
:
2px
;
border-color
:
#dcdfe6
;
font-size
:
14px
;
color
:
#232323
;
font-weight
:
350
;
}
.el-input__suffix
{
right
:
12px
;
.el-input__icon
{
line-height
:
32px
;
width
:
auto
;
}
}
.el-input__prefix
{
display
:
none
;
}
}
.project-month-select-options
{
width
:
140px
;
.el-input__inner
{
...
...
dsk-operate-ui/src/views/projectCostLedger/detail/index.vue
View file @
3de6f9f4
...
...
@@ -193,8 +193,8 @@ export default {
const
detail
=
await
getProjectDetailApi
(
projectId
);
if
(
detail
.
code
==
200
&&
detail
.
data
)
{
if
(
detail
.
data
.
id
)
detail
.
data
[
"projectId"
]
=
detail
.
data
.
id
;
//
detail.data["projectId"] = "1754425038355890177";
//
detail.data["cbStage"] = 0;
detail
.
data
[
"projectId"
]
=
"1754425038355890177"
;
detail
.
data
[
"cbStage"
]
=
0
;
this
.
detailInfo
=
detail
.
data
;
}
}
catch
(
error
)
{
...
...
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