Commit c8d3f6cc 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 d4eed9f8 9486abba
...@@ -177,7 +177,9 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe ...@@ -177,7 +177,9 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe
for (CbProjectRecordSearchVo searchVo : page.getRecords()) { for (CbProjectRecordSearchVo searchVo : page.getRecords()) {
//判断是否有历史阶段 //判断是否有历史阶段
searchVo.setHasChildren(baseMapper.selectCount(new LambdaQueryWrapper<CbProjectRecord>() searchVo.setHasChildren(baseMapper.selectCount(new LambdaQueryWrapper<CbProjectRecord>()
.eq(CbProjectRecord::getRelatedId, searchVo.getRelatedId())) > 1); .eq(CbProjectRecord::getRelatedId, searchVo.getRelatedId())
.ne(CbProjectRecord::getProjectFileStatus,CbProjectConstants.PROJECT_FILE_STATUS_PREPARING)) > 1
);
//关键字标红 //关键字标红
if (StringUtils.isNotBlank(searchBo.getProjectName())) { if (StringUtils.isNotBlank(searchBo.getProjectName())) {
......
...@@ -168,4 +168,16 @@ export const getFeedSummaryMenuTreeApi = (params = {}) => request({ ...@@ -168,4 +168,16 @@ export const getFeedSummaryMenuTreeApi = (params = {}) => request({
params params
}) })
// 其他项目
//其他项目左侧菜单
export const getProjectOtherMenuTreeApi = (relatedId) => request({
url: '/cb/projectOther/type/' + relatedId,
method: "get",
})
//其他费用-费用汇总
export const getProjectOtherStatistics = (relatedId) => request({
url: '/cb/projectOther/statistics/' + relatedId,
method: "get",
})
...@@ -2,42 +2,20 @@ ...@@ -2,42 +2,20 @@
<div class="directCost-container"> <div class="directCost-container">
<div class="directCost-main"> <div class="directCost-main">
<div class="search"> <div class="search">
<el-select v-model="date" placeholder="请选择" clearable> <el-select v-model="date" placeholder="请选择">
<el-option v-for="(item,index) in datelist" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option> <el-option v-for="(item,index) in datelist" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select> </el-select>
</div> </div>
<div class="directCost-cont"> <div class="directCost-cont">
<div class="left"> <div class="left">
<!--<div class="left-menu">--> <div class="left-side-menu">
<!--<el-menu class="project-menu-instance">--> <project-side-menu :menuTree="menuTreeList" :menuOptions="menuOptions" :unique-opened="false" :default-active="defaultActive">
<!--&lt;!&ndash;<el-submenu index="1" class="project-sub-menu-item">&ndash;&gt;--> <template slot="宝安中学(集团)初中部改扩建工程施工总承包-加固修缮工程-1">
<!--&lt;!&ndash;<template slot="title">&ndash;&gt;--> <img src="@/assets/images/projectCostLedger/icon_cost_detail_1.svg" alt="">
<!--&lt;!&ndash;<i class="el-icon-location icon"></i>&ndash;&gt;--> <div class="project-sub-menu-title-text">宝安中学(集团)初中部改扩建工程施工总承包-加固修缮工程</div>
<!--&lt;!&ndash;<span>宝安中学(集团)初中部改扩建工程施工总承包-加固修缮工程</span>&ndash;&gt;--> </template>
<!--&lt;!&ndash;</template>&ndash;&gt;--> </project-side-menu>
<!--&lt;!&ndash;</el-submenu>&ndash;&gt;--> </div>
<!--<template v-for="(el,index) in menuList">-->
<!--&lt;!&ndash; 一级标题无子菜单 &ndash;&gt;-->
<!--<el-menu-item v-if="!el.children" :index="el.path" :key="el.id">-->
<!--<template slot="title">-->
<!--<i class="el-icon-location icon"></i>-->
<!--<span>{{el.name}}</span>-->
<!--</template>-->
<!--</el-menu-item>-->
<!--&lt;!&ndash; 一级标题有子菜单 &ndash;&gt;-->
<!--<el-submenu v-else :index="'index' + index" :key="el.id" class="project-sub-menu-item">-->
<!--<template slot="title">-->
<!--<i class="el-icon-location icon"></i>-->
<!--<span>{{el.name}}</span>-->
<!--</template>-->
<!--&lt;!&ndash; 二级标题 &ndash;&gt;-->
<!--<el-menu-item :index="children.path" v-for="children in el.children" :key="children.id">-->
<!--{{children.name}}-->
<!--</el-menu-item>-->
<!--</el-submenu>-->
<!--</template>-->
<!--</el-menu>-->
<!--</div>-->
</div> </div>
<div class="right-table"> <div class="right-table">
<div class="table-item"> <div class="table-item">
...@@ -114,9 +92,10 @@ ...@@ -114,9 +92,10 @@
</div> </div>
</template> </template>
<script> <script>
import ProjectSideMenu from "@/views/projectCostLedger/detail/components/ProjectSideMenu";
export default { export default {
name: "directCost", name: "directCost",
components: {}, components: {ProjectSideMenu},
data() { data() {
return { return {
date:'2023年11月', date:'2023年11月',
...@@ -201,38 +180,55 @@ export default { ...@@ -201,38 +180,55 @@ export default {
dj:{ required: true, message: '单价不能为空', trigger: 'blur' }, // 限制必填 dj:{ required: true, message: '单价不能为空', trigger: 'blur' }, // 限制必填
}, },
dialogVisible:false, dialogVisible:false,
menuList:[ defaultActive: "",
menuTreeList: [
{ {
nodeName: "宝安中学(集团)初中部改扩建工程施工总承包-加固修缮工程",
id: "1",
children: [ children: [
{ {
href: "暂无", nodeName: "宝安中学(集团)初中部改扩建工程施工总承包-加固修缮工程",
id: "2", id: "1-1",
name: "测试2",
parentId: "1",
children: [ children: [
{ {
href: "暂无", nodeName: "宝安中学(集团)初中部改扩建工程施工总承包-加固修缮工程劳务",
id: "3", id: "1-1-1",
name: "测试3", },
parentId: "2", {
nodeName: "宝安中学(集团)初中部改扩建工程施工总承包-加固修缮工程劳务",
id: "1-2-1",
},
{
nodeName: "拆除、修缮、清理、改造劳...",
id: "1-3-1",
children: [ children: [
{ {
href: "暂无", nodeName: "拆除、修缮、清理、改造劳...",
id: "4", id: "1-3-1",
name: "测试4", }
parentId: "3", ]
children: [], }
}, ]
],
},
],
}, },
], {
id: "1", nodeName: "宝安中学(集团)初中部改扩建工程施工总承包-加固修缮工程",
name: "宝安中学(集团)初中部改扩建工程施工总承包-加固修缮工程", id: "2-1",
parentId: "0", },
{
nodeName: "宝安中学(集团)初中部改扩建工程施工总承包-加固修缮工程",
id: "3-1",
},
{
nodeName: "宝安中学(集团)初中部改扩建工程施工总承包-加固修缮工程",
id: "4-1",
},
]
}, },
], ],
menuOptions: {
nodeName: "nodeName",
nodeValue: "nodeName",
},
}; };
}, },
//可访问data属性 //可访问data属性
...@@ -310,50 +306,10 @@ export default { ...@@ -310,50 +306,10 @@ export default {
height: 100%; height: 100%;
} }
.left{ .left{
width: 220px; .left-side-menu {
height: 100%; width: 220px;
.left-menu{ min-width: 220px;
width: 100%;
height: 100%; height: 100%;
overflow: auto;
::v-deep .project-menu-instance {
width: 100%;
height: 100%;
padding-top: 16px;
border-right: 1px solid #eeeeee;
overflow: auto;
.project-sub-menu-item {
& > .el-submenu__title,.el-menu-item {
height: 32px;
line-height: 32px;
&:hover {
background-color: unset;
background: linear-gradient( 91deg, rgba(0, 129, 255, 0.1) 0%, rgba(0, 129, 255, 0) 100%);
}
}
}
.is-opened{
.el-submenu__title{
color:#0081FF;
}
}
.el-submenu__title{
padding: 0 14px !important;
span{
width: 160px;
display: inline-block;
white-space: nowrap; /* 不换行 */
overflow: hidden; /* 超出部分隐藏 */
text-overflow: ellipsis; /* 显示省略号 */
}
.icon{
width: 16px;
}
}
.el-submenu__icon-arrow{
right: 14px;
}
}
} }
} }
.right-table{ .right-table{
...@@ -373,7 +329,14 @@ export default { ...@@ -373,7 +329,14 @@ export default {
} }
.dialogVisible{ .dialogVisible{
::v-deep .el-dialog { ::v-deep .el-dialog {
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%);
margin-top:0 !important;
.el-dialog__body{ .el-dialog__body{
flex:1;
overflow: auto;
padding:24px 20px 0 20px; padding:24px 20px 0 20px;
border-top: 1px solid #EEEEEE; border-top: 1px solid #EEEEEE;
border-bottom: 1px solid #EEEEEE; border-bottom: 1px solid #EEEEEE;
......
...@@ -2,17 +2,22 @@ ...@@ -2,17 +2,22 @@
<div class="otherProjects-container"> <div class="otherProjects-container">
<div class="otherProjects-cont"> <div class="otherProjects-cont">
<div class="left"> <div class="left">
<div class="left-menu"> <div class="left-side-menu">
<project-side-menu :menuTree="menuTreeList" :menuOptions="menuOptions" :unique-opened="false" :default-active="defaultActive">
<template slot="其他费-1">
<img src="@/assets/images/projectCostLedger/icon_cost_detail_5.svg" alt="">
<div class="project-sub-menu-title-text">其他费</div>
</template>
</project-side-menu>
</div> </div>
</div> </div>
<div class="right-table"> <div class="right-table">
<div class="table-item"> <div class="table-item" v-if="defaultActive ==='费用汇总'">
<tables <tables
v-if="!isSkeleton" v-if="!isSkeleton"
:tableLoading="tableLoading" :tableLoading="tableLoading"
:tableData="tableData" :tableData="tableData"
:forData="forData1" :forData="forData"
:MaxPage=500 :MaxPage=500
:tableDataTotal="tableDataTotal" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" :queryParams="queryParams"
...@@ -27,34 +32,102 @@ ...@@ -27,34 +32,102 @@
</template> </template>
</tables> </tables>
</div> </div>
<div class="table-item" v-else>
<tables
v-if="!isSkeleton"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData1"
:MaxPage=500
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="number" slot-scope="scope">
<div>{{scope.row.number || '--'}}</div>
</template>
<template slot="proportion" slot-scope="scope">
<div>{{scope.row.proportion || '--'}}</div>
</template>
</tables>
</div>
</div> </div>
</div> </div>
<el-dialog :visible.sync="dialogVisible" width="720px" append-to-body class="dialogVisible" title="单位换算">
<el-tabs v-model="currentList">
<el-tab-pane
:key="index"
v-for="(item, index) in toggleTabs"
:label="item.name"
:name="item.value"
>
{{item.content}}
</el-tab-pane>
<div class="detail-cont-tab">
<div class="select">
<el-select v-model="type1" placeholder="请选择">
<el-option v-for="(item,index) in typeList" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
<i class="el-icon-sort icon"></i>
<el-select v-model="type1" placeholder="请选择">
<el-option v-for="(item,index) in typeList1" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</div>
<el-table
:data="tableData1"
default-expand-all
border
highlight-current-row
>
<el-table-column
type="selection"
width="50">
</el-table-column>
<el-table-column label="序号" width="50" align="left">
<template slot-scope="scope">
<span>{{scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column label="成本科目" width="190" prop="cbkm"></el-table-column>
<el-table-column label="物料验收系统本月用料" width="195" prop="wlyl"></el-table-column>
<el-table-column label="换算后本月用料" prop="hsyl"></el-table-column>
</el-table>
</div>
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button @click="dialogVisible=false">取消</el-button>
<el-button type="primary">保存结果</el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import Tables from "../../../../component/Tables" import Tables from "../../../../component/Tables"
import ProjectSideMenu from "@/views/projectCostLedger/detail/components/ProjectSideMenu";
import { getProjectOtherMenuTreeApi,getProjectOtherStatistics } from "@/api/projectCostLedger";
export default { export default {
name: "directCost", name: "directCost",
components: { components: {
Tables, Tables,ProjectSideMenu
},
props: {
// // 项目ID
// projectId: {
// type: String,
// required: true,
// default: ""
// },
// // 详情信息
// projectDetailInfo: {
// type: Object,
// default: () => ({})
// }
}, },
data() { data() {
return { return {
data:[ comProjectId:'',
{
label: '一级 1',
children: [{
label: '二级 1-1',
children: [{
label: '三级 1-1-1'
}]
}]
}
],
defaultProps: {
children: 'children',
label: 'label'
},
isSkeleton:false, isSkeleton:false,
tableLoading:false, tableLoading:false,
tableData:[ tableData:[
...@@ -70,8 +143,8 @@ export default { ...@@ -70,8 +143,8 @@ export default {
}, },
], ],
forData: [ forData: [
{label: '其他项目费用', prop: 'name'}, {label: '其他项目费用', prop: 'expenseName'},
{label: '数量', prop: 'number',slot: true}, {label: '数量', prop: 'expenseValue'},
{label: '占比', prop: 'proportion', slot: true}, {label: '占比', prop: 'proportion', slot: true},
], ],
forData1: [ forData1: [
...@@ -92,11 +165,90 @@ export default { ...@@ -92,11 +165,90 @@ export default {
pageSize:10, pageSize:10,
}, },
tableDataTotal:2, tableDataTotal:2,
defaultActive: "费用汇总",
menuTreeList: [
{
id: "1",
itemContent:"其他费",
children: []
}
],
menuOptions: {
nodeName: "itemContent",
nodeValue: "itemContent",
},
dialogVisible:false,
currentList: "type1",
toggleTabs:[
{
value: "type1",
name: "长度",
},
{
value: "type2",
name: "面积",
},
{
value: "type3",
name: "体积",
},
{
value: "type4",
name: "质量",
},
{
value: "type5",
name: "密度",
},
],
tableData1:[
{
cbkm:'标前成本',
wlyl:'42000KG',
hsyl:'42T'
},
{
cbkm:'标前成本',
wlyl:'42000KG',
hsyl:'42T'
},
{
cbkm:'标前成本',
wlyl:'42000KG',
hsyl:'42T'
},
{
cbkm:'标前成本',
wlyl:'42000KG',
hsyl:'42T'
},
],
type1:'',
type2:'',
typeList:[],
typeList1:[],
}; };
}, },
watch: {
// projectDetailInfo: {
// handler(newValue) {
// this.comProjectDetailInfo = newValue ? newValue : {};
// // this.init(this.comProjectDetailInfo);
// },
// deep: true,
// immediate: true
// },
// projectId: {
// handler(newValue) {
// this.comProjectId = newValue;
// },
// immediate: true
// }
},
//可访问data属性 //可访问data属性
created() { created() {
this.getProjectOtherMenuTreeApi('1762014527685136385')
this.getProjectOtherStatistics('1762014527685136385')
}, },
//计算集 //计算集
computed: { computed: {
...@@ -104,14 +256,33 @@ export default { ...@@ -104,14 +256,33 @@ export default {
}, },
//方法集 //方法集
methods: { methods: {
handleNodeClick(data) { async getProjectOtherStatistics(params) {
console.log(data); try {
const result = await getProjectOtherStatistics(params);
if (result.code == 200) {
const _dataArray = result.data;
this.tableData = _dataArray;
}
} catch (error) {
}
}, },
handleOpen(key, keyPath) { async getProjectOtherMenuTreeApi(params) {
console.log(key, keyPath); try {
const result = await getProjectOtherMenuTreeApi(params);
if (result.code == 200) {
const _tempArray = result.data;
_tempArray.unshift({id:"11",itemContent:"费用汇总"});
this.menuTreeList[0].children = _tempArray;
}
} catch (error) {
}
}, },
handleClose(key, keyPath) { open(menuPath, menuPathArray){
console.log(key, keyPath); console.log(menuPath)
console.log(menuPathArray)
}, },
//分页 //分页
handleCurrentChange(e){ handleCurrentChange(e){
...@@ -139,21 +310,54 @@ export default { ...@@ -139,21 +310,54 @@ export default {
height: 100%; height: 100%;
} }
.left{ .left{
width: 220px; .left-side-menu {
height: 100%; width: 220px;
.left-menu{ min-width: 220px;
width: 100%;
height: 100%; height: 100%;
border-right: 1px solid #eeeeee;
overflow: auto;
} }
white-space: nowrap; /* 不换行 */
overflow: hidden; /* 超出部分隐藏 */
text-overflow: ellipsis; /* 显示省略号 */
} }
.right-table{ .right-table{
width: calc(100% - 220px); width: calc(100% - 220px);
padding: 16px; padding: 16px;
} }
} }
.dialogVisible{
::v-deep .el-dialog {
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%);
margin-top:0 !important;
.el-dialog__body{
flex:1;
overflow: auto;
padding:0;
border-top: 1px solid #EEEEEE;
border-bottom: 1px solid #EEEEEE;
.select{
margin-bottom: 16px;
}
.el-input{
width: 316px !important;
}
.el-tabs__nav-wrap{
padding: 0 16px;
}
.el-tabs__header{
margin: 0;
}
.detail-cont-tab{
padding: 24px 20px;
.icon{
transform: rotate(90deg);
color:#0081FF;
margin: 0 16px;
}
}
}
.el-dialog__footer{
padding: 16px 20px;
}
}
}
</style> </style>
...@@ -123,7 +123,7 @@ export default { ...@@ -123,7 +123,7 @@ export default {
// 初始化树形结构 // 初始化树形结构
initMenuTree(array = []) { initMenuTree(array = []) {
if (array?.length) { if (array?.length) {
// 合并默认配置 // 合并默认配置
const _options = this.mergeMenuOptions(JSON.parse(JSON.stringify(this.menuOptions))); const _options = this.mergeMenuOptions(JSON.parse(JSON.stringify(this.menuOptions)));
this.tempMenuOptions = _options; this.tempMenuOptions = _options;
// 映射配置 // 映射配置
......
...@@ -35,7 +35,6 @@ module.exports = { ...@@ -35,7 +35,6 @@ module.exports = {
proxy: { proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy // detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: { [process.env.VUE_APP_BASE_API]: {
// target: `http://47.104.91.229:9099/prod-api`,//测试-旧
target: `http://111.204.34.146:9099/prod-api`,//测试 target: `http://111.204.34.146:9099/prod-api`,//测试
// target: `http://192.168.60.5:9098`,//陈跃方 // target: `http://192.168.60.5:9098`,//陈跃方
// target: `http://192.168.60.27:9098`,//邓 // target: `http://192.168.60.27:9098`,//邓
......
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