Commit 5d32dabf authored by huangjie's avatar huangjie

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys...

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys into V20231129-中建一局二公司
parents 42bb725b 7759ba70
...@@ -18,10 +18,10 @@ public class CbCostMeasureActualPushBo { ...@@ -18,10 +18,10 @@ public class CbCostMeasureActualPushBo {
/** /**
* 本月实际工程量 * 本月实际工程量
*/ */
private BigDecimal costEffective; private BigDecimal projectVolume;
/** /**
* 本月实际工程量 * 截止本月实际工程量
*/ */
private BigDecimal currentProjectVolume; private BigDecimal currentProjectVolume;
......
...@@ -31,8 +31,6 @@ public class CbCostMeasureActualSaveBo { ...@@ -31,8 +31,6 @@ public class CbCostMeasureActualSaveBo {
/** /**
* 本月发生成本比例 * 本月发生成本比例
*/ */
@DecimalMin(value = "-1",message = "数据格式不正确")
@DecimalMax(value = "1",message = "数据格式不正确")
private BigDecimal monthCostRate; private BigDecimal monthCostRate;
/** /**
......
...@@ -23,7 +23,7 @@ public class CbCostMeasuresImportVo { ...@@ -23,7 +23,7 @@ public class CbCostMeasuresImportVo {
@ExcelProperty(value = "清单内容") @ExcelProperty(value = "清单内容")
private String itemContent; // 清单内容 private String itemContent; // 清单内容
@ExcelProperty(value = "工作内容") @ExcelProperty(value = "工作内容、做法/规格型号/施工现场配置说明")
private String workContent; // 工作内容、做法/规格型号/施工现场配置说明 private String workContent; // 工作内容、做法/规格型号/施工现场配置说明
@ExcelProperty(value = "单位") @ExcelProperty(value = "单位")
......
...@@ -47,6 +47,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -47,6 +47,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.io.ByteArrayInputStream; import java.io.ByteArrayInputStream;
import java.io.InputStream; import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.Collator;
import java.util.*; import java.util.*;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -165,6 +166,15 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C ...@@ -165,6 +166,15 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C
tWrapper.orderByAsc("id"); tWrapper.orderByAsc("id");
List<Map<String, Object>> mapList = this.listMaps(tWrapper); List<Map<String, Object>> mapList = this.listMaps(tWrapper);
Collator collator = Collator.getInstance(Locale.CHINA);
Collections.sort(mapList, new Comparator<Map<String, Object>>() {
@Override
public int compare(Map<String, Object> m1, Map<String, Object> m2) {
String itemContent1 = (String) m1.get("itemContent");
String itemContent2 = (String) m2.get("itemContent");
return collator.compare(itemContent1, itemContent2);
}
});
return mapList; return mapList;
} }
...@@ -245,6 +255,7 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C ...@@ -245,6 +255,7 @@ public class CbCostMeasureServiceImpl extends ServiceImpl<CbCostMeasureMapper, C
CbCostMeasureActual cbCostMeasureActual = new CbCostMeasureActual(); CbCostMeasureActual cbCostMeasureActual = new CbCostMeasureActual();
cbCostMeasureActual.setId(pushBo.getId()); cbCostMeasureActual.setId(pushBo.getId());
cbCostMeasureActual.setPushTime(new Date()); cbCostMeasureActual.setPushTime(new Date());
cbCostMeasureActual.setSubmitProjectVolume(pushBo.getSubmitProjectVolume());
cbCostMeasureActual.setPushDataJson(JsonUtils.toJsonString(pushBo)); cbCostMeasureActual.setPushDataJson(JsonUtils.toJsonString(pushBo));
cbCostMeasureActualService.updateById(cbCostMeasureActual); cbCostMeasureActualService.updateById(cbCostMeasureActual);
} }
......
...@@ -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
});
...@@ -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 {
......
<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="table-item">
...@@ -300,7 +300,7 @@ export default { ...@@ -300,7 +300,7 @@ 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 { .table-item {
...@@ -428,6 +428,154 @@ export default { ...@@ -428,6 +428,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 {
/* 滚动条在最左侧时 */ /* 滚动条在最左侧时 */
......
...@@ -850,7 +850,7 @@ export default { ...@@ -850,7 +850,7 @@ export default {
height: 100%; height: 100%;
} }
::v-deep .table-list-com-ins { ::v-deep .custom-table-list-com-ins {
.table-item { .table-item {
.el-table { .el-table {
th { th {
......
...@@ -466,7 +466,7 @@ export default { ...@@ -466,7 +466,7 @@ export default {
height: 100%; height: 100%;
} }
::v-deep .table-list-com-ins { ::v-deep .custom-table-list-com-ins {
.table-item { .table-item {
.el-table { .el-table {
th { th {
......
...@@ -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