Commit ad0b69c5 authored by yht15023815643's avatar yht15023815643

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 55eae0b7 ac9d2d50
......@@ -43,7 +43,11 @@ public class CbProjectRecordController extends BaseController {
*/
@GetMapping("/checkProjectCodeExist")
public R<Boolean> checkProjectCodeExist(@Validated CbCheckProjectCodeExistBo checkBo) {
return R.ok(dProjectService.checkProjectCodeExist(checkBo));
if (dProjectService.checkProjectCodeExist(checkBo)) {
return R.ok(true);
} else {
return R.fail("IPM项目编码无效", false);
}
}
/**
......
......@@ -297,7 +297,9 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
@Override
public CbProjectInfoVo getCbProjectInfo(Long projectId) {
CbProjectRecord projectRecord = projectRecordMapper.selectById(projectId);
Assert.isTrue(projectRecord.getIsGetProjectDetail(), "请先通过IPM项目编码获取数据,或IPM项目编码无效");
if (projectRecord.getIsGetProjectDetail()) {
return null;
}
return BeanUtil.toBean(baseMapper.selectOne(new LambdaQueryWrapper<DProject>()
.eq(DProject::getProjectCode, projectRecord.getIpmProjectNo())), CbProjectInfoVo.class);
}
......
......@@ -2,11 +2,11 @@
<div class="cost-summary-container">
<!-- 按项目汇总 成本汇总切换 -->
<div class="category-type-container">
<div class="category-list-item" v-for="(type, index) of categoryList" :key="type.value"
:class="{ 'is-current-category': currentCategory == type.value }" @click.stop="currentCategoryChange(type.value)">{{ type.label }}</div>
<el-button class="category-list-item" v-for="(type, index) of categoryList" :key="type.value" :disabled="type.disabled"
:class="{ 'is-current-category': currentCategory == type.value }" @click.stop="currentCategoryChange(type.value)">{{ type.label }}</el-button>
</div>
<!-- 成本菜单以及列表 -->
<div class="cost-summary-content-container">
<div class="cost-summary-content-container" v-if="!show">
<!-- 左侧菜单 -->
<div class="left-side-menu">
<project-side-menu ref="projectSideMenu" :menuTree="menuTreeList" :menuOptions="menuOptions" :unique-opened="false"
......@@ -94,6 +94,13 @@
</div>
</div>
<div class="no-data">
<div class="no-data-box" v-if="show">
<img :src="noData" alt="暂未获取无聊数据(每月20号获取)" />
<span>暂未获取无聊数据(每月20号获取)</span>
</div>
</div>
<!-- 锁定前提示 -->
<lock-cost-tip v-model="lockCostTipDialog" :tip-content="lockCostTipDialogContent" @ok="okLock"
@update:lockCostTipDialog="lockCostTipDialogClose"></lock-cost-tip>
......@@ -173,15 +180,18 @@ export default {
callback();
};
return {
noData: require("@/assets/images/detail/noData.png"),
// 当前分类 1 按项目汇总 2 成本汇总
currentCategory: 1,
categoryList: [
{
label: "按项目汇总",
disabled:false,
value: 1
},
{
label: "成本科目汇总",
disabled:false,
value: 2
},
],
......@@ -250,7 +260,8 @@ export default {
]
},
// 竖向滚动条最后的位置
lastScrollTop: 0
lastScrollTop: 0,
show:false,
};
},
//可访问data属性
......@@ -385,10 +396,17 @@ export default {
try {
const result = await getCostSummaryMenuTreeApi(params);
if (result.code == 200 && result.data instanceof Array) {
if(result.data.length === 0){
this.show=true;
}
const _tempArray = result.data;
if(_tempArray.length === 0){
this.currentCategory=2
return this.init(this.comProjectDetailInfo);
if(this.projectDetailInfo.cbStage === 3){
if(_tempArray.length === 0){
this.currentCategory=2;
this.categoryList[0].disabled=true;
this.$forceUpdate();
return this.init(this.comProjectDetailInfo);
}
}
const _tempMenu = {
id: 0,
......@@ -863,7 +881,7 @@ export default {
.category-list-item {
height: 32px;
padding: 0px 20px;
color: #303133;
/*color: #303133;*/
font-size: 12px;
font-weight: 400;
border-radius: 4px;
......@@ -874,6 +892,7 @@ export default {
align-items: center;
cursor: pointer;
transition: all 0.3s;
margin: 0;
&:nth-of-type(2n - 1) {
border-right: unset !important;
......@@ -1089,5 +1108,32 @@ export default {
}
}
}
.no-data {
font-size: 14px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #999999;
text-shadow: 0px 0px 10px rgba(0, 37, 106, 0.10000000149011612);
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
background: #ffffff;
border-radius: 0px 0px 0px 0px;
opacity: 1;
border: 1px solid #eeeeee;
.no-data-box {
display: flex;
flex-direction: column;
align-items: center;
img {
width: 64px;
height: 79px;
margin-bottom: 16px;
}
}
}
}
</style>
<template>
<div class="feed-summary-container">
<div class="feed-summary-inner">
<div v-if="!show" class="feed-summary-inner">
<div class="left-side-menu">
<project-side-menu ref="projectSideMenu" :menuTree="menuTreeList" :menuOptions="menuOptions" :unique-opened="false"
:default-active="currentNodeName" @select="menuSelect">
......@@ -135,6 +135,13 @@
</div>
</div>
<div class="no-data">
<div class="no-data-box" v-if="show">
<img :src="noData" alt="暂未获取无聊数据(每月20号获取)" />
<span>暂未获取无聊数据(每月20号获取)</span>
</div>
</div>
<!-- 填写实际成本触发 -->
<add-actual-cost v-model="showAddActualCost" :project-create-time="projectDetailInfo.createTime" @timeSelect="timeSelect"></add-actual-cost>
......@@ -236,6 +243,8 @@ export default {
callback();
};
return {
noData: require("@/assets/images/detail/noData.png"),
show:false,
menuOptions: {
nodeName: "name",
nodeValue: "name",
......@@ -503,6 +512,9 @@ export default {
async getFeedSummaryMenuTree(params) {
try {
const result = await getFeedSummaryMenuTreeApi(params);
if(result.data.length === 0){
this.show=true;
}
if (result.code == 200 && result.data instanceof Array) {
const _tempArray = result.data;
this.menuTreeList = _tempArray;
......@@ -1028,5 +1040,32 @@ export default {
}
}
}
.no-data {
font-size: 14px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #999999;
text-shadow: 0px 0px 10px rgba(0, 37, 106, 0.10000000149011612);
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
background: #ffffff;
border-radius: 0px 0px 0px 0px;
opacity: 1;
border: 1px solid #eeeeee;
.no-data-box {
display: flex;
flex-direction: column;
align-items: center;
img {
width: 64px;
height: 79px;
margin-bottom: 16px;
}
}
}
}
</style>
<template>
<div class="field-expenses-container">
<div class="field-expenses-inner">
<div v-if="!show" class="field-expenses-inner">
<div class="left-side-menu">
<project-side-menu ref="projectSideMenu" :menuTree="menuTreeList" :menuOptions="menuOptions" :unique-opened="false" v-model="currentNodeValue"
@select="menuSelect">
......@@ -55,6 +55,12 @@
</div>
</div>
</div>
<div class="no-data">
<div class="no-data-box" v-if="show">
<img :src="noData" alt="暂未获取无聊数据(每月20号获取)" />
<span>暂未获取无聊数据(每月20号获取)</span>
</div>
</div>
</div>
</template>
<script>
......@@ -107,6 +113,7 @@ export default {
},
data() {
return {
noData: require("@/assets/images/detail/noData.png"),
menuOptions: {
nodeName: "menuName",
nodeValue: "fileId",
......@@ -189,7 +196,8 @@ export default {
dataForm: {
// 数据列表源数据
tableDataList: [],
}
},
show:false,
};
},
//可访问data属性
......@@ -308,6 +316,9 @@ export default {
async getFieldExpensesMenuTree(projectId) {
try {
const result = await getFieldExpensesMenuTreeApi(projectId);
if(result.data.length === 0){
this.show=true;
}
if (result.code == 200 && result.data instanceof Array) {
let _tempArray = result.data;
_tempArray = _tempArray.sort((before, after) => {
......@@ -519,5 +530,31 @@ export default {
}
}
}
.no-data {
font-size: 14px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #999999;
text-shadow: 0px 0px 10px rgba(0, 37, 106, 0.10000000149011612);
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
background: #ffffff;
border-radius: 0px 0px 0px 0px;
opacity: 1;
border: 1px solid #eeeeee;
.no-data-box {
display: flex;
flex-direction: column;
align-items: center;
img {
width: 64px;
height: 79px;
margin-bottom: 16px;
}
}
}
}
</style>
<template>
<div class="feed-summary-container">
<div class="feed-summary-inner">
<div v-if="!show" class="feed-summary-inner">
<div class="left-side-menu">
<project-side-menu ref="profitloss" :menuTree="menuTreeList" :menuOptions="menuOptions" :unique-opened="false" v-model="defaultActive"
@select="select">
......@@ -194,6 +194,12 @@
</el-dialog>
</div>
<div class="no-data">
<div class="no-data-box" v-if="show">
<img :src="noData" alt="暂未获取无聊数据(每月20号获取)" />
<span>暂未获取无聊数据(每月20号获取)</span>
</div>
</div>
</div>
</template>
<script>
......@@ -243,6 +249,7 @@
},
data() {
return {
noData: require("@/assets/images/detail/noData.png"),
pickerOptions: {
disabledDate(time) {
let istrue = true;
......@@ -274,6 +281,7 @@
tableHeight: window.innerHeight - 355,
nowheight:null,
resizeTimer:null,
show:false,
};
},
//可访问data属性
......@@ -429,6 +437,9 @@
try {
const result = await getMeasureslist(params);
if (result.code == 200) {
if(result.data.length === 0){
this.show=true;
}
let arr = {};
arr.itemContent = '措施费';
arr.id = 0;
......@@ -569,6 +580,34 @@
padding: 16px;
}
}
.no-data {
font-size: 14px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #999999;
text-shadow: 0px 0px 10px rgba(0, 37, 106, 0.10000000149011612);
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
background: #ffffff;
border-radius: 0px 0px 0px 0px;
opacity: 1;
border: 1px solid #eeeeee;
.no-data-box {
display: flex;
flex-direction: column;
align-items: center;
img {
width: 64px;
height: 79px;
margin-bottom: 16px;
}
}
}
.search {
display: flex;
justify-content: space-between;
......
<template>
<div class="feed-summary-container">
<div class="feed-summary-inner">
<div class="feed-summary-inner" v-if="!show">
<div class="left-side-menu">
<project-side-menu ref="profitloss" :menuTree="menuTreeList" :menuOptions="menuOptions" :unique-opened="false" v-model="defaultActive" @select="select">
<template slot="盈亏分析对比-1">
......@@ -79,6 +79,12 @@
</div>
</div>
<div class="no-data">
<div class="no-data-box" v-if="show">
<img :src="noData" alt="暂未获取无聊数据(每月20号获取)" />
<span>暂未获取无聊数据(每月20号获取)</span>
</div>
</div>
</div>
</template>
<script>
......@@ -121,6 +127,7 @@
},
data() {
return {
noData: require("@/assets/images/detail/noData.png"),
pickerOptions: {
// disabledDate(time) {
// let istrue = true
......@@ -142,7 +149,8 @@
id: 0,
expenseDate:'',
tableData:[],
tableHeight: window.innerHeight - 355
tableHeight: window.innerHeight - 355,
show:false,
};
},
//可访问data属性
......@@ -169,7 +177,6 @@
id:this.id,
expenseDate:this.expenseDate
}
console.log(param)
getAnalysislist(param).then(res=>{
this.tableData = res.data
})
......@@ -191,6 +198,9 @@
try {
const result = await getProfitLossMenuTreeApi(params);
if (result.code == 200) {
if(result.data.length === 0){
this.show=true;
}
let arr = {}
arr.cbName = '盈亏分析对比'
arr.id = 0
......@@ -241,5 +251,31 @@
}
}
}
.no-data {
font-size: 14px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #999999;
text-shadow: 0px 0px 10px rgba(0, 37, 106, 0.10000000149011612);
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
background: #ffffff;
border-radius: 0px 0px 0px 0px;
opacity: 1;
border: 1px solid #eeeeee;
.no-data-box {
display: flex;
flex-direction: column;
align-items: center;
img {
width: 64px;
height: 79px;
margin-bottom: 16px;
}
}
}
}
</style>
......@@ -213,6 +213,10 @@ export default {
if (detail.code == 200 && detail.data) {
if (detail.data.id) detail.data["projectId"] = detail.data.id;
this.detailInfo = detail.data;
if(this.detailInfo.cbStage === 3){
this.toggleTabs[1].disabled=true;
this.toggleTabs[4].disabled=true;
}
}
} catch (error) {
console.log(error);
......
......@@ -73,13 +73,13 @@
<el-tooltip placement="top" v-if="scope.row.projectText.length>26">
<div slot="content">{{scope.row.projectText}}</div>
<div class="renling">
<router-link v-if="scope.row.projectFileStatus==2" :to="`/projectCostLedger/detail?projectId=${scope.row.id}`" tag="a"
<router-link v-if="scope.row.projectFileStatus==2 || scope.row.cbStage ===3" :to="`/projectCostLedger/detail?projectId=${scope.row.id}`" tag="a"
class="wordprimary" v-html="scope.row.projectName"></router-link>
<span v-else v-html="scope.row.projectName||'--'"></span>
</div>
</el-tooltip>
<div class="renling" v-else>
<router-link v-if="scope.row.projectFileStatus==2" :to="`/projectCostLedger/detail?projectId=${scope.row.id}`" tag="a"
<router-link v-if="scope.row.projectFileStatus==2 || scope.row.cbStage ===3" :to="`/projectCostLedger/detail?projectId=${scope.row.id}`" tag="a"
class="wordprimary" v-html="scope.row.projectName"></router-link>
<span v-else v-html="scope.row.projectName||'--'"></span>
</div>
......@@ -120,6 +120,9 @@
</template>
</el-table-column>
<el-table-column label="上传人" prop="updateBy" width="140" :resizable="false">
<template slot-scope="scope">
{{scope.row.updateBy||"--"}}
</template>
</el-table-column>
<el-table-column label="上传时间" min-width="180" :resizable="false">
......@@ -171,47 +174,25 @@
<span>{{protitle}}</span>
</div>
<el-form class="popform" label-width="97px" :model="queryParam" :rules="rules" ref="ruleForm">
<el-form-item label="成本计划" class="row">
<el-select placeholder="请选择成本计划" v-model="cbjh">
<el-option v-for="(item,index) in cbjhlist" :label="item.label" :value="item.value" :key="index"></el-option>
<el-form-item label="项目名称" class="row" prop="projectName">
<el-input type="text" v-model="queryParam.projectName" placeholder="请输入完整的项目名称"></el-input>
</el-form-item>
<el-form-item label="IPM项目编码" class="row">
<el-input type="text" placeholder="请输入IPM项目编码" v-model="queryParam.ipmProjectNo">
<template slot="append"><div class="pro-getbtn" @click="getipmProjectNo">获取数据</div></template>
</el-input>
</el-form-item>
<el-form-item label="文件名称" class="row">
<el-input type="text" placeholder="请输入文件名称" v-model="queryParam.projectFileName"></el-input>
</el-form-item>
<el-form-item label="成本阶段" class="row" prop="cbStage">
<el-checkbox v-model="ischeck" v-if="isedit" class="checkcb"></el-checkbox>
<el-select placeholder="请选择成本阶段" v-model="queryParam.cbStage" :disabled="!ischeck">
<el-option v-for="(item,index) in cbStagelist" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
<template v-if="cbjh === '已有成本计划'">
<el-form-item label="项目名称" class="row">
<el-input type="text" v-model="queryParam.projectName" placeholder="请输入完整的项目名称"></el-input>
</el-form-item>
<el-form-item label="IPM项目编码" class="row">
<el-input type="text" placeholder="请输入IPM项目编码" v-model="queryParam.ipmProjectNo">
<template slot="append"><div class="pro-getbtn" @click="getipmProjectNo">获取数据</div></template>
</el-input>
</el-form-item>
<el-form-item label="文件名称" class="row">
<el-input type="text" placeholder="请输入文件名称" v-model="queryParam.projectFileName"></el-input>
</el-form-item>
<el-form-item label="成本阶段" class="row" prop="cbStage">
<el-checkbox v-model="ischeck" v-if="isedit" class="checkcb"></el-checkbox>
<el-select placeholder="请选择成本阶段" v-model="queryParam.cbStage" :disabled="!ischeck">
<el-option v-for="(item,index) in cbStagelist" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
</template>
<template v-if="cbjh === '暂无成本计划'">
<el-form-item label="项目名称" class="row">
<el-input type="text" v-model="queryParam.projectName" placeholder="请输入完整的项目名称"></el-input>
</el-form-item>
<el-form-item label="IPM项目编码" class="row">
<el-input type="text" placeholder="请输入IPM项目编码" v-model="queryParam.ipmProjectNo">
<template slot="append"><div class="pro-getbtn" @click="getipmProjectNo">获取数据</div></template>
</el-input>
</el-form-item>
</template>
</el-form >
<div class="popbot" v-if="cbjh === '暂无成本计划'">
<div class="btn btn_cancel h32" @click="dialogVisible = false">取消</div>
<div class="btn btn_primary h32" v-if="isedit && !ischeck" @click="savepro">创建项目</div>
</div>
<div class="popbot" v-else>
<div class="popbot" >
<div class="btn btn_cancel h32" @click="dialogVisible = false">取消</div>
<div class="btn btn_primary h32" v-if="isedit && !ischeck" @click="savepro">保存</div>
<div class="btn btn_primary h32" v-if="isedit && ischeck" @click="changepro">下一步,导入数据</div>
......@@ -301,17 +282,6 @@
dialogVisible:false,
cbStagelist:[],
ztStagelist:[],
cbjhlist:[
{
value: '已有成本计划',
label: '已有成本计划'
},
{
value: '暂无成本计划',
label: '暂无成本计划'
},
],
cbjh:'',
//新建项目参数
queryParam:{
projectName:'',//项目名称
......@@ -322,6 +292,7 @@
},
rules:{
cbStage:[{ required: true, message: '请选择成本阶段!', trigger: 'blur' },],
projectName:[{ required: true, message: '请输入项目名称', trigger: 'blur' },],
},
isupload:false,
tableData:[{}],
......
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