Commit f9e9329c authored by tanyang's avatar tanyang

Merge remote-tracking branch 'origin/V20231129-中建一局二公司' into V20231129-中建一局二公司

parents eed7b175 df73e992
...@@ -69,19 +69,20 @@ public class CbSummaryActualListVo extends BaseEntity { ...@@ -69,19 +69,20 @@ public class CbSummaryActualListVo extends BaseEntity {
/** /**
* 本月费用(含税) * 本月费用(含税)
*/ */
private BigDecimal taxInclusiveExpense; private Double taxInclusiveExpense;
/** /**
* 本月费用(不含税) * 本月费用(不含税)
*/ */
private BigDecimal taxExclusiveExpense; private Double taxExclusiveExpense;
/** /**
* 截至本月费用(含税) * 截至本月费用(含税)
*/ */
private BigDecimal taxInclusiveExpenseTotal; private Double taxInclusiveExpenseTotal;
/** /**
* 截至本月费用(不含税) * 截至本月费用(不含税)
*/ */
private BigDecimal taxExclusiveExpenseTotal; private Double taxExclusiveExpenseTotal;
/** /**
* 费用日期 * 费用日期
*/ */
......
...@@ -331,15 +331,15 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary ...@@ -331,15 +331,15 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary
} }
//截至本月费用汇总 //截至本月费用汇总
Map<String, BigDecimal> parentTotal = cbSummaryActualMapper.getTotal(cbSummaryActualListVo.getId(), bo.getExpenseDate()); Map<String, BigDecimal> parentTotal = cbSummaryActualMapper.getTotal(cbSummaryActualListVo.getId(), bo.getExpenseDate());
cbSummaryActualListVo.setTaxExclusiveExpenseTotal(parentTotal.get("taxExclusiveExpenseTotal")); cbSummaryActualListVo.setTaxExclusiveExpenseTotal(parentTotal.get("taxExclusiveExpenseTotal").doubleValue());
cbSummaryActualListVo.setTaxInclusiveExpenseTotal(parentTotal.get("taxInclusiveExpenseTotal")); cbSummaryActualListVo.setTaxInclusiveExpenseTotal(parentTotal.get("taxInclusiveExpenseTotal").doubleValue());
List<CbSummaryActualListVo> childrenList = baseMapper.getByParentId(bo.getId(), bo.getExpenseDate()); List<CbSummaryActualListVo> childrenList = baseMapper.getByParentId(bo.getId(), bo.getExpenseDate());
//截至本月费用汇总 //截至本月费用汇总
childrenList.parallelStream().forEach(children -> { childrenList.parallelStream().forEach(children -> {
Map<String, BigDecimal> total = cbSummaryActualMapper.getTotal(children.getId(), bo.getExpenseDate()); Map<String, BigDecimal> total = cbSummaryActualMapper.getTotal(children.getId(), bo.getExpenseDate());
children.setTaxExclusiveExpenseTotal(total.get("taxExclusiveExpenseTotal")); children.setTaxExclusiveExpenseTotal(total.get("taxExclusiveExpenseTotal").doubleValue());
children.setTaxInclusiveExpenseTotal(total.get("taxInclusiveExpenseTotal")); children.setTaxInclusiveExpenseTotal(total.get("taxInclusiveExpenseTotal").doubleValue());
}); });
if (CollectionUtil.isNotEmpty(childrenList)) { if (CollectionUtil.isNotEmpty(childrenList)) {
cbSummaryActualListVo.setHasChildren(1); cbSummaryActualListVo.setHasChildren(1);
...@@ -391,8 +391,8 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary ...@@ -391,8 +391,8 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary
children.setChildren(getProjectSumList(childBo)); children.setChildren(getProjectSumList(childBo));
//截至本月费用汇总 //截至本月费用汇总
Map<String, BigDecimal> total = cbSummaryActualMapper.getTotal(children.getId(), bo.getExpenseDate()); Map<String, BigDecimal> total = cbSummaryActualMapper.getTotal(children.getId(), bo.getExpenseDate());
children.setTaxExclusiveExpenseTotal(total.get("taxExclusiveExpenseTotal")); children.setTaxExclusiveExpenseTotal(total.get("taxExclusiveExpenseTotal").doubleValue());
children.setTaxInclusiveExpenseTotal(total.get("taxInclusiveExpenseTotal")); children.setTaxInclusiveExpenseTotal(total.get("taxInclusiveExpenseTotal").doubleValue());
}); });
return childrenList; return childrenList;
...@@ -533,8 +533,8 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary ...@@ -533,8 +533,8 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary
//截至本月费用汇总 //截至本月费用汇总
resultList.forEach(cbSummaryActualListVo -> { resultList.forEach(cbSummaryActualListVo -> {
Map<String, BigDecimal> total = cbSummaryActualMapper.getTotal(cbSummaryActualListVo.getId(), bo.getExpenseDate()); Map<String, BigDecimal> total = cbSummaryActualMapper.getTotal(cbSummaryActualListVo.getId(), bo.getExpenseDate());
cbSummaryActualListVo.setTaxExclusiveExpenseTotal(total.get("taxExclusiveExpenseTotal")); cbSummaryActualListVo.setTaxExclusiveExpenseTotal(total.get("taxExclusiveExpenseTotal").doubleValue());
cbSummaryActualListVo.setTaxInclusiveExpenseTotal(total.get("taxInclusiveExpenseTotal")); cbSummaryActualListVo.setTaxInclusiveExpenseTotal(total.get("taxInclusiveExpenseTotal").doubleValue());
}); });
return resultList; return resultList;
} }
......
...@@ -377,3 +377,40 @@ export const getFieldExpensesOtherListApi = (params = {}) => request({ ...@@ -377,3 +377,40 @@ export const getFieldExpensesOtherListApi = (params = {}) => request({
method: "get", method: "get",
params params
}); });
// 成本汇总
/**
* 成本汇总左侧一级菜单
* @param {*} params
* @returns
*/
export const getCostSummaryMenuTreeApi = (params = {}) => request({
url: "/cbSummary/cbNameList",
method: "get",
params
});
/**
* 成本汇总已添加成本月份
* @param {*} params
* @returns
*/
export const getCostSummaryMonthListApi = (params = {}) => request({
url: "/cbSummary/expenseDateList",
method: "get",
params
});
/**
* 获取成本汇总数据列表
* @param {*} params
* @returns
*/
export const getCostSummaryListApi = (params = {}) => request({
url: "/cbSummary/list",
method: "get",
params
});
...@@ -11,7 +11,7 @@ body { ...@@ -11,7 +11,7 @@ body {
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility; text-rendering: optimizeLegibility;
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB,
Microsoft YaHei, Arial, sans-serif; Microsoft YaHei, Arial, sans-serif;
} }
label { label {
...@@ -143,11 +143,11 @@ div:focus { ...@@ -143,11 +143,11 @@ div:focus {
padding-right: 20px; padding-right: 20px;
transition: 600ms ease position; transition: 600ms ease position;
background: linear-gradient( background: linear-gradient(
90deg, 90deg,
rgba(32, 182, 249, 1) 0%, rgba(32, 182, 249, 1) 0%,
rgba(32, 182, 249, 1) 0%, rgba(32, 182, 249, 1) 0%,
rgba(33, 120, 241, 1) 100%, rgba(33, 120, 241, 1) 100%,
rgba(33, 120, 241, 1) 100% rgba(33, 120, 241, 1) 100%
); );
.subtitle { .subtitle {
...@@ -360,7 +360,7 @@ li { ...@@ -360,7 +360,7 @@ li {
} }
.is-scrolling-left + .el-table__fixed, .is-scrolling-left + .el-table__fixed,
.is-scrolling-middle + .el-table__fixed, .is-scrolling-middle + .el-table__fixed,
.is-scrolling-right + .el-table__fixed,.el-table__fixed-right { .is-scrolling-right + .el-table__fixed {
box-shadow: 2px 0 8px -7px #202020; box-shadow: 2px 0 8px -7px #202020;
height: auto !important; height: auto !important;
bottom: 16px !important; bottom: 16px !important;
...@@ -374,14 +374,14 @@ li { ...@@ -374,14 +374,14 @@ li {
.el-table__body-wrapper { .el-table__body-wrapper {
&::-webkit-scrollbar { &::-webkit-scrollbar {
width: 16px; //竖轴宽度 width: 16px; //竖轴宽度
height: 6px; //横轴宽度 height: 16px; //横轴宽度
} }
&::-webkit-scrollbar-track { &::-webkit-scrollbar-track {
background-color: #f3f4f5; background-color: #f3f4f5;
border-radius: 0; border-radius: 0;
} }
&::-webkit-scrollbar-thumb { &::-webkit-scrollbar-thumb {
background: rgba(0,0,0,.2); background-color: rgba(0,0,0,.2);
border: 4px solid #f3f4f5; border: 4px solid #f3f4f5;
border-radius: 10px; border-radius: 10px;
} }
...@@ -438,7 +438,7 @@ li { ...@@ -438,7 +438,7 @@ li {
} }
} }
.el-scrollbar { .el-scrollbar {
height: 6px; height: 16px;
.el-scrollbar__bar.is-horizontal { .el-scrollbar__bar.is-horizontal {
height: 8px; height: 8px;
} }
...@@ -529,7 +529,7 @@ li { ...@@ -529,7 +529,7 @@ li {
border-radius: 0; border-radius: 0;
} }
&::-webkit-scrollbar-thumb { &::-webkit-scrollbar-thumb {
background: rgba(0,0,0,.2); background-color: rgba(0,0,0,.2);
border: 4px solid #f3f4f5; border: 4px solid #f3f4f5;
border-radius: 10px; border-radius: 10px;
} }
...@@ -553,7 +553,6 @@ li { ...@@ -553,7 +553,6 @@ li {
background: #dcebff; background: #dcebff;
} }
.el-table__fixed { .el-table__fixed {
//bottom:0 !important;
.el-table__body { .el-table__body {
padding-bottom: 16px; padding-bottom: 16px;
} }
...@@ -582,7 +581,7 @@ li { ...@@ -582,7 +581,7 @@ li {
background: rgba(0,0,0,.2); background: rgba(0,0,0,.2);
border: 4px solid #f3f4f5; border: 4px solid #f3f4f5;
&:hover { &:hover {
background: #7d7d7d; // background: #7d7d7d;
} }
} }
.el-scrollbar { .el-scrollbar {
...@@ -687,7 +686,7 @@ li { ...@@ -687,7 +686,7 @@ li {
border-radius: 0; border-radius: 0;
} }
&::-webkit-scrollbar-thumb { &::-webkit-scrollbar-thumb {
background: rgba(0,0,0,.2); background-color: rgba(0,0,0,.2);
border: 4px solid #f3f4f5; border: 4px solid #f3f4f5;
border-radius: 10px; border-radius: 10px;
} }
...@@ -978,3 +977,109 @@ li { ...@@ -978,3 +977,109 @@ li {
.el-tooltip__popper { .el-tooltip__popper {
max-width: 70%; max-width: 70%;
} }
//表格样式
.meafixed-table{
width: 100%;
padding: 16px 0;
.el-table {
width: 100%;
height: 100%;
font-size: 14px;
color: #232323;
.el-table-horizontal-scrollbar{
display: none !important;
}
.el-table__fixed-right-patch{
background: rgb(240, 243, 250);
}
th {
height: 40px;
padding: 9px 0px;
}
td {
padding: 9px 0px;
.cell {
color: #232323;
}
}
.cell {
padding-right: 12px;
padding-left: 12px;
line-height: 21px;
font-size: 14px;
font-weight: 400;
}
thead {
color: rgba(35, 35, 35, 0.7);
}
.is-scrolling-left + .el-table__fixed,
.is-scrolling-middle + .el-table__fixed,
.is-scrolling-right + .el-table__fixed {
box-shadow: 2px 0 8px -7px #202020;
height: auto !important;
bottom: 16px !important;
}
.el-table__body tr.current-row > td.el-table__cell {
background: none;
}
.el-table__body-wrapper {
&::-webkit-scrollbar {
width: 16px; //竖轴宽度
height: 16px; //横轴宽度
}
&::-webkit-scrollbar-track {
background-color: #f3f4f5;
border-radius: 0;
}
&::-webkit-scrollbar-thumb {
background-color: rgba(0,0,0,.2);
border: 4px solid #f3f4f5;
border-radius: 10px;
&:hover{
background: rgb(125,125,125);
}
}
&::-webkit-scrollbar-corner {
background: #f3f4f5;
/*border-left: 1px solid #E0EAF2;*/
}
tr {
&.current-row > td {
background-color: initial;
}
&:nth-child(2n) {
background: #f8fbff;
}
}
tr:hover > td.el-table__cell {
background: #dcebff;
}
}
.el-table__body tr.hover-row > td.el-table__cell {
background: #dcebff;
}
.el-table__fixed,.el-table__fixed-right {
bottom:16px !important;
.el-table__body {
padding-bottom: 16px;
}
tr:nth-child(2n) {
background-color: #f8fbff;
}
}
.el-scrollbar {
height: 16px;
.el-scrollbar__bar.is-horizontal {
height: 8px;
}
.el-scrollbar__thumb {
background: rgba(0,0,0,.2);
&:hover {
background: #7d7d7d;
}
}
}
}
}
<template> <template>
<div class="table-list-com-ins" <div class="custom-table-list-com-ins"
:class="{'is-empty-table' : !tableDataTotal,'no-pagination' : !hasQueryParams,'auto-max-height' : maxHeight,'has-y-Scroll' : maxHeight && hasYScroll}" :class="{'is-empty-table' : !tableDataTotal,'no-pagination' : !hasQueryParams,'auto-max-height' : maxHeight,'has-y-Scroll' : maxHeight && hasYScroll}"
:style="maxBodyFixedStyle"> :style="maxBodyFixedStyle">
<div class="table-item"> <div class="custom-table-item">
<el-table v-if="tableDataTotal>0" class="custom-table" v-loading="tableLoading" :data="tableData" element-loading-text="Loading" <el-table v-if="tableDataTotal>0" class="custom-table" v-loading="comTableLoading" :data="tableData" element-loading-text="加载中"
ref="customTableRef" border fit highlight-current-row :default-sort="defaultSort?defaultSort:{}" @sort-change="sortChange" ref="customTableRef" 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" @selection-change="selectionChange" @expand-change="expandChange" :cell-class-name="cellClassName" :cell-style="cellStyle"
:row-style="rowStyle" :height="height" :maxHeight="comMaxHeight" v-sticky-header="stickyHeader"> :row-class-name="rowClassName" :row-style="rowStyle" :row-key="rowKey" :lazy="lazy" :load="loadFn" :tree-props="treeOptions"
<el-table-column type="selection" :width="needSelection.width ? needSelection.width : '38px'" v-if="needSelection.flag" :default-expand-all="defaultExpandAll" :indent="indent" :height="height" :maxHeight="comMaxHeight" v-sticky-header="stickyHeader">
:fixed="needSelection.fixed" :align="needSelection.align" :show-overflow-tooltip="needSelection.showOverflowTooltip">
</el-table-column>
<el-table-column type="index" v-if="isIndex" label="序号" :width="flexWidth(tableData)" align="left" :fixed="indexFixed" :resizable="false">
<template slot-scope="scope">{{pagingHandler(hasQueryParams,queryParams,scope)}}</template>
</el-table-column>
<!-- 列二次封装 --> <!-- 列二次封装 -->
<template v-for="(item,index) of formColum"> <template v-for="(item,index) of formColum">
...@@ -57,20 +52,6 @@ export default { ...@@ -57,20 +52,6 @@ export default {
maxHeight: { maxHeight: {
type: [Boolean, Number] type: [Boolean, Number]
}, },
isIndex: {
type: Boolean,
default: false
},
needSelection: {
type: Object,
default: () => ({
flag: false,
width: "39px",
fixed: false,
align: "left",
showOverflowTooltip: false
})
},
cellClassName: { cellClassName: {
type: Function, type: Function,
default: () => { } default: () => { }
...@@ -87,6 +68,39 @@ export default { ...@@ -87,6 +68,39 @@ export default {
type: Function, type: Function,
default: () => { } default: () => { }
}, },
rowKey: {
type: [String, Number],
default: "id"
},
// 是否树形结构懒加载
lazy: {
type: Boolean,
default: false
},
// 懒加载函数
loadFn: {
type: Function,
default: () => { }
},
// 懒加载配置字段映射
treeOptions: {
type: Object,
default: () => ({})
},
// 树形结构默认展开行
defaultExpandAll: {
type: Boolean,
default: false
},
// 树形结构展示事件
expandChange: {
type: Function,
default: () => { }
},
indent: {
type: Number,
default: 16
},
// 吸顶偏移量 // 吸顶偏移量
stickyHeader: { stickyHeader: {
type: Object, type: Object,
...@@ -147,7 +161,8 @@ export default { ...@@ -147,7 +161,8 @@ export default {
headerLastBlockHeight: 0, headerLastBlockHeight: 0,
hasYScroll: false, hasYScroll: false,
observer: null, observer: null,
resizeTimer: null resizeTimer: null,
comTableLoading: this.tableLoading
}; };
}, },
watch: { watch: {
...@@ -166,6 +181,11 @@ export default { ...@@ -166,6 +181,11 @@ export default {
}, },
immediate: true, immediate: true,
deep: true deep: true
},
tableLoading: {
handler(newValue) {
this.comTableLoading = newValue;
}
} }
}, },
computed: { computed: {
...@@ -300,10 +320,10 @@ export default { ...@@ -300,10 +320,10 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.table-list-com-ins { .custom-table-list-com-ins {
/* 空数据样式 */ /* 空数据样式 */
&.is-empty-table { &.is-empty-table {
.table-item { .custom-table-item {
max-height: unset; max-height: unset;
height: 100%; height: 100%;
} }
...@@ -312,7 +332,7 @@ export default { ...@@ -312,7 +332,7 @@ export default {
/* maxHeight自适应样式 */ /* maxHeight自适应样式 */
&.auto-max-height { &.auto-max-height {
height: 100%; height: 100%;
::v-deep .table-item { ::v-deep .custom-table-item {
// 原滚动条为6px 现在多10px // 原滚动条为6px 现在多10px
.el-table { .el-table {
/* 右侧fixed列 */ /* 右侧fixed列 */
...@@ -350,7 +370,7 @@ export default { ...@@ -350,7 +370,7 @@ export default {
// 是否存在Y轴滚动条 // 是否存在Y轴滚动条
&.has-y-Scroll { &.has-y-Scroll {
::v-deep .table-item { ::v-deep .custom-table-item {
.el-table { .el-table {
/* 右侧fixed列 */ /* 右侧fixed列 */
.el-table__fixed-right { .el-table__fixed-right {
...@@ -366,12 +386,12 @@ export default { ...@@ -366,12 +386,12 @@ export default {
/* 不需要分页 或没有分页参数 */ /* 不需要分页 或没有分页参数 */
&.no-pagination { &.no-pagination {
::v-deep .table-item { ::v-deep .custom-table-item {
max-height: 100%; max-height: 100%;
} }
} }
::v-deep .table-item { ::v-deep .custom-table-item {
width: 100%; width: 100%;
max-height: calc(100% - 40px); max-height: calc(100% - 40px);
...@@ -428,6 +448,154 @@ export default { ...@@ -428,6 +448,154 @@ export default {
} }
.el-table { .el-table {
width: 100%;
height: auto;
font-size: 14px;
color: #232323;
.cell {
padding-right: 12px;
padding-left: 12px;
line-height: 21px;
font-size: 12px;
font-weight: 400;
}
th {
height: 40px;
padding: 9px 0px;
.cell {
color: rgba(35, 35, 35, 0.8);
}
}
td {
padding: 9px 0px;
.cell {
color: #232323;
}
}
.sort-caret.ascending {
border-bottom-color: rgba(0, 129, 255, 0.5);
}
.ascending .sort-caret.ascending {
border-bottom-color: #0081ff;
}
.sort-caret.descending {
border-top-color: rgba(0, 129, 255, 0.5);
}
.descending .sort-caret.descending {
border-top-color: #0081ff;
}
.el-table__header-wrapper {
box-sizing: border-box;
th {
background: #f0f3fa;
}
}
.el-table__fixed-header-wrapper {
th {
background: #f0f3fa;
}
}
.el-table__body tr.current-row > td.el-table__cell {
background: none;
}
.caret-wrapper {
width: 10px;
}
.el-table__body-wrapper {
&::-webkit-scrollbar {
width: 16px; //竖轴宽度
height: 16px; //横轴宽度
}
&::-webkit-scrollbar-track {
background-color: #f3f4f5;
border-radius: 0;
}
&::-webkit-scrollbar-thumb {
background: rgba(0, 0, 0, 0.2);
border: 4px solid #f3f4f5;
border-radius: 10px;
}
&::-webkit-scrollbar-corner {
background: #f3f4f5;
}
tr {
&.current-row > td {
background-color: initial;
}
&:nth-child(2n) {
background: #f8fbff;
}
}
tr:hover > td.el-table__cell {
background: #dcebff;
}
}
.el-table__body tr.hover-row > td.el-table__cell {
background: #dcebff;
}
.el-table__fixed {
.el-table__body {
padding-bottom: 16px;
}
tr:nth-child(2n) {
background-color: #f8fbff;
}
}
::-webkit-scrollbar-track-piece {
//滚动条凹槽的颜色,还可以设置边框属性
background-color: #f3f4f5;
height: 16px;
padding: 0 4px;
}
//滚动条的宽度
::-webkit-scrollbar {
width: 8px;
height: 16px;
background-color: #f3f4f5;
border-radius: 6px;
}
//滚动条的滑块
::-webkit-scrollbar-thumb {
border-radius: 8px;
height: 8px;
margin: 0 4px;
background: rgba(0, 0, 0, 0.2);
border: 4px solid #f3f4f5;
&:hover {
background: #7d7d7d;
}
}
.el-scrollbar {
height: 16px;
.el-scrollbar__bar.is-horizontal {
height: 8px;
}
.el-scrollbar__thumb {
background: rgba(0, 0, 0, 0.2);
&:hover {
background: #566380;
}
}
}
&.custom-table { &.custom-table {
.el-table__body-wrapper { .el-table__body-wrapper {
/* 滚动条在最左侧时 */ /* 滚动条在最左侧时 */
......
...@@ -72,5 +72,19 @@ export default { ...@@ -72,5 +72,19 @@ export default {
height: calc(100%); height: calc(100%);
} }
} }
.title_wrap{
padding: 20px;
background-color: #FFFFFF;
border-bottom: 1px solid #e0e0e0;
}
.enterprise_title{
border-left: 2px solid #445781;
padding-left: 8px;
font-size: 16px;
height: 16px;
line-height: 16px;
font-weight: 700;
color: #232323;
}
} }
</style> </style>
...@@ -67,5 +67,19 @@ export default { ...@@ -67,5 +67,19 @@ export default {
height: calc(100%); height: calc(100%);
} }
} }
.title_wrap{
padding: 20px;
background-color: #FFFFFF;
border-bottom: 1px solid #e0e0e0;
}
.enterprise_title{
border-left: 2px solid #445781;
padding-left: 8px;
font-size: 16px;
height: 16px;
line-height: 16px;
font-weight: 700;
color: #232323;
}
} }
</style> </style>
...@@ -850,8 +850,8 @@ export default { ...@@ -850,8 +850,8 @@ export default {
height: 100%; height: 100%;
} }
::v-deep .table-list-com-ins { ::v-deep .custom-table-list-com-ins {
.table-item { .custom-table-item {
.el-table { .el-table {
th { th {
height: 40px; height: 40px;
......
...@@ -466,8 +466,8 @@ export default { ...@@ -466,8 +466,8 @@ export default {
height: 100%; height: 100%;
} }
::v-deep .table-list-com-ins { ::v-deep .custom-table-list-com-ins {
.table-item { .custom-table-item {
.el-table { .el-table {
th { th {
height: 40px; height: 40px;
......
...@@ -20,9 +20,10 @@ ...@@ -20,9 +20,10 @@
<el-button v-if="!isall && isinput" type="primary" size="small" @click="addinputs">保存</el-button> <el-button v-if="!isall && isinput" type="primary" size="small" @click="addinputs">保存</el-button>
</div> </div>
<!--汇总--> <!--汇总-->
<div class="table-item" v-if="isall"> <div class="meafixed-table" v-if="isall">
<el-table element-loading-text="Loading" :data="tableData" row-key="id" v-horizontal-scroll="'hover'" default-expand-all :max-height="tableHeight" <el-table element-loading-text="Loading" :data="tableData" row-key="id" v-horizontal-scroll="'hover'" default-expand-all :max-height="tableHeight"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}" border highlight-current-row :cell-class-name="tored" :header-cell-class-name="tored"> :tree-props="{children: 'children', hasChildren: 'hasChildren'}" border highlight-current-row :cell-class-name="tored" :header-cell-class-name="tored"
:header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}">
<el-table-column label="序号" width="60" align="left" type="index"></el-table-column> <el-table-column label="序号" width="60" align="left" type="index"></el-table-column>
<el-table-column label="名称" width="220" prop="expenseName"> <el-table-column label="名称" width="220" prop="expenseName">
<template slot-scope="scope">{{scope.row.expenseName || '--'}}</template> <template slot-scope="scope">{{scope.row.expenseName || '--'}}</template>
...@@ -39,9 +40,12 @@ ...@@ -39,9 +40,12 @@
</el-table> </el-table>
</div> </div>
<!--单条--> <!--单条-->
<div class="table-item" v-else> <div class="meafixed-table" v-else>
<el-table element-loading-text="Loading" ref="edittable" :data="tableData" row-key="id" v-horizontal-scroll="'hover'" default-expand-all :max-height="tableHeight" <el-table element-loading-text="Loading" ref="edittable" :data="tableData" row-key="id"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}" border highlight-current-row :cell-class-name="tored1" :header-cell-class-name="tored1"> :header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}"
v-horizontal-scroll="'hover'" :max-height="tableHeight"
:tree-props="{children: 'children', hasChildren: 'hasChildren'}" border highlight-current-row
:cell-class-name="tored1" :header-cell-class-name="tored1">
<el-table-column label="序号" width="60" align="left" type="index" fixed="left"></el-table-column> <el-table-column label="序号" width="60" align="left" type="index" fixed="left"></el-table-column>
<el-table-column label="清单内容" width="130" prop="itemContent" fixed="left"> <el-table-column label="清单内容" width="130" prop="itemContent" fixed="left">
<template slot-scope="scope">{{scope.row.itemContent || '--'}}</template> <template slot-scope="scope">{{scope.row.itemContent || '--'}}</template>
...@@ -91,8 +95,10 @@ ...@@ -91,8 +95,10 @@
<el-table-column label="本月成本发生比例" width="150" prop="monthCostRate"> <el-table-column label="本月成本发生比例" width="150" prop="monthCostRate">
<template slot-scope="scope"> <template slot-scope="scope">
<template v-if="isinput"><el-input v-model="scope.row.monthCostRate "></el-input></template> <template v-if="isinput">
<template v-else>{{scope.row.monthCostRate || '--'}}</template> <el-input v-model="scope.row.monthCostRate "></el-input>
</template>
<template v-else>{{scope.row.monthCostRate?scope.row.monthCostRate+'%':'--'}}</template>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="成本合价" width="130" prop="costEffective"> <el-table-column label="成本合价" width="130" prop="costEffective">
...@@ -100,7 +106,9 @@ ...@@ -100,7 +106,9 @@
</el-table-column> </el-table-column>
<el-table-column label="本月工程量" width="130" prop="projectVolume"> <el-table-column label="本月工程量" width="130" prop="projectVolume">
<template slot-scope="scope"> <template slot-scope="scope">
<template v-if="isinput"><el-input v-model="scope.row.projectVolume "></el-input></template> <template v-if="isinput">
<el-input v-model="scope.row.projectVolume "></el-input>
</template>
<template v-else>{{scope.row.projectVolume || '--'}}</template> <template v-else>{{scope.row.projectVolume || '--'}}</template>
</template> </template>
</el-table-column> </el-table-column>
...@@ -115,7 +123,7 @@ ...@@ -115,7 +123,7 @@
<template slot-scope="scope">{{scope.row.remarks || '--'}}</template> <template slot-scope="scope">{{scope.row.remarks || '--'}}</template>
</el-table-column> </el-table-column>
<el-table-column label="是否推送" width="130"> <el-table-column label="是否推送" width="130">
<template slot-scope="scope">{{scope.row.pushTime?"是":"否"}}</template> <template slot-scope="scope">{{scope.row.pushTime?'是':'否'}}</template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="130" fixed="right"> <el-table-column label="操作" width="130" fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -185,18 +193,19 @@ ...@@ -185,18 +193,19 @@
</div> </div>
</template> </template>
<script> <script>
import ProjectSideMenu from '@/views/projectCostLedger/detail/components/ProjectSideMenu'; import ProjectSideMenu from '@/views/projectCostLedger/detail/components/ProjectSideMenu'
import { import {
getCostMeasureslist, getActualMonthsApi,
getMeasureslist, getCostMeasureslist,
getSummarydata, getMeasureslist,
projectVolume, getSummarydata,
pushProjectvolume, projectVolume,
getActualMonthsApi,saveBatch pushProjectvolume,
} from '@/api/projectCostLedger'; saveBatch
import { cloneDeep } from "lodash-es"; } from '@/api/projectCostLedger'
import { cloneDeep } from 'lodash-es'
export default { export default {
name: "MeasureItems", name: "MeasureItems",
props: { props: {
// 项目ID // 项目ID
...@@ -264,6 +273,7 @@ export default { ...@@ -264,6 +273,7 @@ export default {
//可访问data属性 //可访问data属性
created() { created() {
this.init(this.comProjectId); this.init(this.comProjectId);
// this.createResizeObserver();
}, },
//计算集 //计算集
computed: { computed: {
...@@ -271,6 +281,30 @@ export default { ...@@ -271,6 +281,30 @@ export default {
}, },
//方法集 //方法集
methods: { methods: {
getGDT(){
let gdt = document.querySelector('.el-table__body-wrapper')
let w1 = document.querySelector('.el-table__fixed-right-patch')
let w2 = document.querySelector('.el-table__fixed-right')
if(gdt){
let outheight = gdt.scrollHeight
let inheight = gdt.clientHeight
if(outheight>inheight){
if (w1) {
w1.setAttribute('style', `width: 16px;height:40px`)
}
if (w2) {
w2.setAttribute('style', `right: 16px;width:130px`)
}
}else{
if (w1) {
w1.setAttribute('style', `width: 0;height:40px`)
}
if (w2) {
w2.setAttribute('style', `right: 0;width:130px`)
}
}
}
},
tored({column}){ tored({column}){
if(column.property=='quantity'){ if(column.property=='quantity'){
return 'tored' return 'tored'
...@@ -342,6 +376,12 @@ export default { ...@@ -342,6 +376,12 @@ export default {
const res = await getCostMeasureslist(param); const res = await getCostMeasureslist(param);
this.tableData = res.data; this.tableData = res.data;
this.isinput = false this.isinput = false
// await this.$nextTick()
this.$nextTick(()=>{
setTimeout(()=>{
this.getGDT()
},500)
})
}, },
async init(detail = '') { async init(detail = '') {
try { try {
...@@ -421,8 +461,10 @@ export default { ...@@ -421,8 +461,10 @@ export default {
addinputs(){ addinputs(){
let tables = JSON.parse(JSON.stringify(this.tableData)) let tables = JSON.parse(JSON.stringify(this.tableData))
tables.forEach(item=>{ tables.forEach(item=>{
item.planMeasureId = item.id
item.id = item.actualId item.id = item.actualId
item.month = this.expenseDate item.month = this.expenseDate
item.monthCostRate = item.monthCostRate?parseInt(item.monthCostRate.replace('%','')):null
}) })
saveBatch(JSON.stringify(tables)).then(res=>{ saveBatch(JSON.stringify(tables)).then(res=>{
if(res.code == 200){ if(res.code == 200){
...@@ -481,12 +523,6 @@ export default { ...@@ -481,12 +523,6 @@ export default {
height: 100%; height: 100%;
background: #fff; background: #fff;
padding: 16px; padding: 16px;
.table-item {
margin-top: 16px;
}
::v-deep .el-scrollbar.el-table-horizontal-scrollbar {
display: none !important;
}
} }
} }
.search { .search {
......
...@@ -29,6 +29,9 @@ ...@@ -29,6 +29,9 @@
<!-- 现场经费 --> <!-- 现场经费 -->
<field-expenses v-if="current == 'fieldExpenses'" :project-id="projectId" :project-detail-info="detailInfo"></field-expenses> <field-expenses v-if="current == 'fieldExpenses'" :project-id="projectId" :project-detail-info="detailInfo"></field-expenses>
<!-- 成本汇总 -->
<cost-summary v-if="current == 'cost'" :project-id="projectId" :project-detail-info="detailInfo"></cost-summary>
</div> </div>
</div> </div>
</div> </div>
...@@ -50,6 +53,8 @@ import OtherProjects from "@/views/projectCostLedger/detail/components/OtherProj ...@@ -50,6 +53,8 @@ import OtherProjects from "@/views/projectCostLedger/detail/components/OtherProj
import ProfitLoss from "@/views/projectCostLedger/detail/components/ProfitLoss"; import ProfitLoss from "@/views/projectCostLedger/detail/components/ProfitLoss";
// 现场经费 // 现场经费
import FieldExpenses from "@/views/projectCostLedger/detail/components/FieldExpenses"; import FieldExpenses from "@/views/projectCostLedger/detail/components/FieldExpenses";
// 成本汇总
import CostSummary from "@/views/projectCostLedger/detail/components/CostSummary";
import { v4 } from "uuid"; import { v4 } from "uuid";
import { cloneDeep } from "lodash-es"; import { cloneDeep } from "lodash-es";
import { getProjectDetailApi } from "@/api/projectCostLedger"; import { getProjectDetailApi } from "@/api/projectCostLedger";
...@@ -64,7 +69,8 @@ export default { ...@@ -64,7 +69,8 @@ export default {
OtherProjects, OtherProjects,
ProfitLoss, ProfitLoss,
MeasureItems, MeasureItems,
FieldExpenses FieldExpenses,
CostSummary
}, },
data() { data() {
return { return {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment