Commit dc6fcd0b authored by danfuman's avatar danfuman

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 e64b04db 6bfc23c2
......@@ -33,10 +33,20 @@ public class AddCbDirectExpenseBo {
@NotBlank(message = "单位不能为空")
private String unit;
/**
* 单价
* 招标控制价单价
*/
@NotBlank(message = "单价不能为空")
@NotBlank(message = "招标控制价单价不能为空")
private String tenderControlUnitPrice;
/**
* 不含税成本单价
*/
@NotBlank(message = "不含税成本单价不能为空")
private String excludeTaxCbUnitPrice;
/**
* 含税成本单价
*/
@NotBlank(message = "含税成本单价不能为空")
private String includeTaxCbUnitPrice;
/**
* 特征描述
*/
......
......@@ -277,8 +277,6 @@ public class CbDirectExpenseServiceImpl extends ServiceImpl<CbDirectExpenseMappe
directExpense.setProjectFileId(-1L);
directExpense.setIsImport(false);
//TODO:单价对应哪个字段需要等产品确认
//取编码前两位字母,ZY代表专,LW代表劳,FG代表材
String code = directExpense.getCode().substring(0, 2);
switch (code) {
......@@ -298,6 +296,7 @@ public class CbDirectExpenseServiceImpl extends ServiceImpl<CbDirectExpenseMappe
return baseMapper.insert(directExpense);
}
/**
* 删除直接费费用项
*
......
......@@ -40,14 +40,15 @@ public class CbProjectFileServiceImpl extends ServiceImpl<CbProjectFileMapper, C
private ICbQuantitySummaryService quantitySummaryService;
@Resource
private ICbQuantitySummaryActualService quantitySummaryActualService;
//@Resource
//private ICbCostMeasureService costMeasureService;
@Resource
private ICbCostMeasureService costMeasureService;
@Resource
private ICbCostMeasureActualService costMeasureActualActualService;
//@Resource
//private CbProjectOtherService projectOtherService;
@Resource
private CbProjectOtherService projectOtherService;
@Resource
private CbSceneExpenseChildrenService sceneExpenseChildrenService;
@Resource
private CbProjectExpenseSummaryService projectExpenseSummaryService;
@Resource
private CbSummaryService summaryService;
......@@ -137,16 +138,24 @@ public class CbProjectFileServiceImpl extends ServiceImpl<CbProjectFileMapper, C
break;
case CbProjectConstants.CB_TYPE_MEASURE_PROJECT:
//措施项目
//List<CbCostMeasure> costMeasureList = costMeasureService.list(new LambdaQueryWrapper<CbCostMeasure>()
// .eq(CbCostMeasure::getProjectFileId, fileId));
////删除每月成本数据(关联导入数据主键)
//costMeasureActualActualService.removeBatchByIds(costMeasureActualActualService.list(new LambdaQueryWrapper<CbCostMeasureActual>()
// .in(CbCostMeasureActual::getPlanMeasureId, costMeasureList.stream().map(CbCostMeasure::getId).collect(Collectors.toList()))));
////删除导入数据(关联文件ID)
//costMeasureService.removeBatchByIds(costMeasureList);
List<CbCostMeasure> costMeasureList = costMeasureService.list(new LambdaQueryWrapper<CbCostMeasure>()
.eq(CbCostMeasure::getProjectFileId, fileId));
//删除每月成本数据(关联导入数据主键)
costMeasureActualActualService.removeBatchByIds(costMeasureActualActualService.list(new LambdaQueryWrapper<CbCostMeasureActual>()
.in(CbCostMeasureActual::getPlanMeasureId, costMeasureList.stream().map(CbCostMeasure::getId).collect(Collectors.toList()))));
//删除导入数据(关联文件ID)
costMeasureService.removeBatchByIds(costMeasureList);
//删除汇总数据
projectExpenseSummaryService.removeBatchByIds(projectExpenseSummaryService.list(new LambdaQueryWrapper<CbProjectExpenseSummary>()
.eq(CbProjectExpenseSummary::getProjectFileId, deleteBo.getFileId())));
break;
case CbProjectConstants.CB_TYPE_OTHER_PROJECT:
//其他项目
projectOtherService.removeBatchByIds(projectOtherService.list(new LambdaQueryWrapper<CbProjectOther>()
.eq(CbProjectOther::getCbProjectFileId, deleteBo.getFileId())));
//删除汇总数据
projectExpenseSummaryService.removeBatchByIds(projectExpenseSummaryService.list(new LambdaQueryWrapper<CbProjectExpenseSummary>()
.eq(CbProjectExpenseSummary::getProjectFileId, deleteBo.getFileId())));
break;
case CbProjectConstants.CB_TYPE_SCENE_EXPENSE:
//现场经费
......
......@@ -261,6 +261,8 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
*/
@Override
public Boolean checkProjectCodeExist(String projectCode) {
Assert.isFalse(projectRecordMapper.exists(new LambdaQueryWrapper<CbProjectRecord>()
.eq(CbProjectRecord::getIpmProjectNo, projectCode)), "项目台账列表中已存在相同IPM编码的项目");
return baseMapper.exists(new LambdaQueryWrapper<DProject>()
.eq(DProject::getProjectCode, projectCode));
}
......
......@@ -3,39 +3,6 @@
<mapper namespace="com.dsk.cscec.mapper.CbProjectRecordMapper">
<!--获取项目台账列表-->
<select id="selectPageProjectRecordList" resultType="com.dsk.cscec.domain.vo.CbProjectRecordSearchVo">
<!-- select-->
<!-- cpr.id,-->
<!-- cpr.related_id,-->
<!-- cpr.project_name,-->
<!-- cpr.cb_stage,-->
<!-- cpr.project_file_status,-->
<!-- cpr.ipm_project_no,-->
<!-- cpr.is_get_project_detail,-->
<!-- cpr.project_file_name,-->
<!-- cpr.create_time-->
<!-- from cb_project_record cpr-->
<!-- left join cb_project_record cprr-->
<!-- on cpr.related_id = cprr.related_id-->
<!-- and cpr.cb_stage &lt; cprr.cb_stage-->
<!-- where-->
<!-- cprr.cb_stage is null-->
<!-- and-->
<!-- cpr.del_flag=#{deleteFlagExist}-->
<!-- <if test="searchBo.projectName != null and searchBo.projectName != ''">-->
<!-- and cpr.project_name like concat('%',#{searchBo.projectName},'%')-->
<!-- </if>-->
<!-- <if test="searchBo.ipmProjectNo != null and searchBo.ipmProjectNo != ''">-->
<!-- and cpr.ipm_project_no = #{searchBo.ipmProjectNo}-->
<!-- </if>-->
<!-- <if test="searchBo.cbStage != null">-->
<!-- and cpr.cb_stage = #{searchBo.cbStage}-->
<!-- </if>-->
<!-- <if test="searchBo.projectFileStatus != null">-->
<!-- and project_file_status = #{searchBo.projectFileStatus}-->
<!-- </if>-->
<!-- and-->
<!-- cpr.project_file_status != #{projectFileStatusPreparing}-->
<!-- order by cpr.create_time desc-->
select a.*
from (
select DISTINCT cpr.id,
......
This diff is collapsed.
<template>
<!-- 多级表头情况 -->
<el-table-column v-if="item.children instanceof Array && item.children.length" :label="item.label" :prop="item.prop" :width="item.width"
:min-width="item.minWidth" :align="item.align?item.align:'left'" :fixed="item.fixed"
:sortable="item.sortable ?item.sortable=='custom'? 'custom':true : false" :resizable="false" :show-overflow-tooltip="item.showOverflowTooltip">
<template v-for="(child,index) of item.children">
<table-list-column :key="child.uid ? child.uid : index" :item="child"></table-list-column>
</template>
</el-table-column>
<!-- 复选框列 -->
<el-table-column v-else-if="item.type === 'selection'" type="selection" :width="item.width ? item.width : '38px'" :fixed="item.fixed"
:align="item.align?item.align:'left'" :show-overflow-tooltip="item.showOverflowTooltip">
</el-table-column>
<!-- 序号列 -->
<el-table-column v-else-if="item.type === 'index'" type="index" :label="item.label ? item.label : '序号'"
:width="flexWidth(tableData.length,item.width,hasQueryParams)" :min-width="item.minWidth" :align="item.align?item.align:'left'"
:fixed="item.fixed" :resizable="false">
<template slot-scope="scope">{{pagingHandler(hasQueryParams,queryParams,scope)}}</template>
</el-table-column>
<!-- 正常列 -->
<el-table-column v-else :label="item.label" :prop="item.prop" :width="item.width" :min-width="item.minWidth" :align="item.align?item.align:'left'"
:fixed="item.fixed" :sortable="item.sortable ?item.sortable=='custom'? 'custom':true : false" :resizable="false"
:show-overflow-tooltip="item.showOverflowTooltip">
<!-- 自定义表头 -->
<template v-if="item.slotHeader" slot="header">
<slot :name="item.slotName"></slot>
</template>
<!-- 非自定义表头 -->
<template slot-scope="scope">
<!-- 有自定义插槽 -->
<slot v-if="item.slot" :name="item.prop" :row="scope.row" :index="scope.$index" :data="item"></slot>
<!-- 操作栏 -->
<slot v-else-if="item.prop == 'action-field-bar'" name="action-field-bar" :row="scope.row" :index="scope.$index" :data="item"></slot>
<!-- 没有插槽 -->
<div v-else>
{{ scope.row[item.prop] || '-' }}
</div>
</template>
</el-table-column>
</template>
<script>
export default {
name: "TableListColumn",
props: {
item: {
type: Object,
default: () => ({})
},
queryParams: {
type: Object,
default: () => ({})
},
tableData: {
type: Array,
default: () => []
}
},
watch: {
queryParams: {
handler(newValue) {
const _temp = newValue ? newValue : {};
const keys = Object.keys(_temp);
if (keys.length) {
this.hasQueryParams = true;
} else {
this.hasQueryParams = false;
}
},
immediate: true,
deep: true
}
},
data() {
return {
hasQueryParams: this.hasQueryParams
};
},
//可访问data属性
created() {
},
//计算集
computed: {
},
//方法集
methods: {
flexWidth(len = 0, width = 50, hasQueryParams) {
if (hasQueryParams) {
let currentMax = this.queryParams.pageNum * this.queryParams.pageSize - this.queryParams.pageSize + len;
if (currentMax.toString().length > 3) {
width = width + (currentMax.toString().length - 3) * 10;
}
}
return width + 'px';
},
pagingHandler(hasQueryParams, queryParams, scope) {
// 有分页参数
if (hasQueryParams) {
return queryParams.pageNum * queryParams.pageSize - queryParams.pageSize + scope.$index + 1;
}
// 不分页
return scope.$index + 1;
},
},
}
</script>
<style lang="scss" scoped>
</style>
......@@ -11,43 +11,40 @@
<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) in formColum">
<!-- 自定义表头组件 不恒等false才展示当前列 -->
<!-- 列二次封装 -->
<template v-for="(item,index) of formColum">
<table-list-column v-if="item.use !== false" :key="item.uid ? item.uid : index" :tableData="tableData" :item="item"
:queryParams="queryParams" :hasQueryParams="hasQueryParams"></table-list-column>
</template>
<!-- <template v-for="(item,index) in formColum">
<template v-if="item.use !== false">
<!-- 复选框列 -->
<el-table-column v-if="item.type == 'selection'" type="selection" :key="item.uid ? item.uid : index"
:width="item.width ? item.width : '38px'" :fixed="item.fixed" :align="item.align?item.align:'left'"
:show-overflow-tooltip="item.showOverflowTooltip">
</el-table-column>
<!-- 序号列 -->
<el-table-column v-else-if="item.type == 'index'" type="index" :key="item.uid ? item.uid : index" :label="item.label ? item.label : '序号'"
:width="flexWidth(tableData,item.width)" :min-width="item.minWidth" :align="item.align?item.align:'left'" :fixed="item.fixed"
:resizable="false">
<template slot-scope="scope">{{pagingHandler(hasQueryParams,queryParams,scope)}}</template>
</el-table-column>
<!-- 正常列 -->
<el-table-column v-else :key="item.uid ? item.uid : index" :label="item.label" :prop="item.prop" :width="item.width"
:min-width="item.minWidth" :align="item.align?item.align:'left'" :fixed="item.fixed"
:sortable="item.sortable ?item.sortable=='custom'? 'custom':true : false" :resizable="false"
:show-overflow-tooltip="item.showOverflowTooltip">
<!-- 自定义表头 -->
<template v-if="item.slotHeader" slot="header">
<slot :name="item.slotName"></slot>
</template>
<!-- 非自定义表头 -->
<template slot-scope="scope">
<!-- 有自定义插槽 -->
<slot v-if="item.slot" :name="item.prop" :row="scope.row" :index="scope.$index" :data="item"></slot>
<!-- 操作栏 -->
<slot v-else-if="item.prop == 'action-field-bar'" name="action-field-bar" :row="scope.row" :index="scope.$index" :data="item"></slot>
<!-- 没有插槽 -->
<div v-else>
{{ scope.row[item.prop] || '-' }}
</div>
</template>
</el-table-column>
</template>
</template>
</template> -->
<template slot="empty">
</template>
</el-table>
......@@ -67,6 +64,7 @@
<script>
import NoData from '@/components/NoData';
import TableListColumn from "@/components/TableListCom/components/TableListColumn";
export default {
name: "tableListCom",
props: {
......@@ -157,7 +155,8 @@ export default {
},
},
components: {
NoData
NoData,
TableListColumn
},
data() {
return {
......
......@@ -100,7 +100,7 @@ export default {
}).then(() => {
this.$store.dispatch('LogOut').then(() => {
sessionStorage.removeItem('views') //清空导航栏上的数据
location.href = '/index';
location.href = '/index/gys';
})
}).catch(() => {});
},
......
......@@ -66,6 +66,7 @@ export const constantRoutes = [
path: '',
component: Layout,
redirect: 'index',
hidden: true,
children: [
{
path: 'index',
......
<template>
<div class="cooperation-desk-account default-layout-container">
<div class="default-layout-container-inner">
<!-- 顶部tab切换栏 -->
<dsk-tab-toggle v-model="currentList" :tabs="toggleTabs"></dsk-tab-toggle>
<!-- 项目列表 -->
<project-list v-if="currentList == 'project'"></project-list>
<!-- 企业列表 -->
<enterprise-list v-if="currentList == 'enterprise'"></enterprise-list>
</div>
</div>
</template>
<script>
import DskTabToggle from "@/components/DskTabToggle";
import ProjectList from "@/views/consultingOrgManagement/components/ProjectList";
import EnterpriseList from "@/views/consultingOrgManagement/components/EnterpriseList";
import { v4 } from 'uuid';
export default {
name: "cooperationDeskAccount",
components: {
DskTabToggle,
ProjectList,
EnterpriseList
},
data() {
return {
currentList: "project",
toggleTabs: [
{
value: "project",
name: "项目列表",
id: v4()
},
{
value: "enterprise",
name: "企业列表",
id: v4()
}
]
};
},
//可访问data属性
created() {
const target = this.$route.query.target;
if (target && ["project", "enterprise"].includes(target)) {
this.currentList = target;
}
},
//计算集
computed: {
},
//方法集
methods: {
},
}
</script>
<style lang="scss" scoped>
.cooperation-desk-account {
.default-layout-container-inner {
.cooperation-desk-account-project,
.cooperation-desk-account-enterprise {
overflow: hidden;
height: calc(100% - 48px);
}
}
}
</style>
<template>
<div style="text-align: center;padding-top: 150px">欢迎进入大数据经营管理支撑服务平台</div>
<!--<div style="text-align: center;padding-top: 150px">欢迎进入大数据经营管理支撑服务平台</div>-->
</template>
<script>
export default {
name: "Index",
created() {
this.$tab.closeOpenPage({path:'/index/gys'})
}
}
</script>
<!--<template>-->
......
<template>
<div style="padding: 24px;border-radius: 4px">
<img src="@/assets/images/projectCostLedger/BI.png" class="widimgs">
</div>
</template>
<script>
export default {
name: 'BI'
}
</script>
<style scoped>
.widimgs{
width: 100%;
height: 100%;
border-radius: 4px;
}
</style>
<template>
<div style="padding: 24px;border-radius: 4px">
<img src="@/assets/images/projectCostLedger/1920.png" class="widimgs">
</div>
</template>
<script>
export default {
name: 'gys'
}
</script>
<style scoped>
.widimgs{
width: 100%;
height: 100%;
border-radius: 4px;
}
</style>
......@@ -337,7 +337,7 @@
}else{//无租户列表和一个租户直接登录
this.$store.dispatch("Login", froms).then(() => {
this.loading = false;
this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
this.$router.push({ path: this.redirect || "/index/gys" }).catch(()=>{});
}).catch(() => {
this.loading = false;
if (this.captchaEnabled) {
......@@ -426,7 +426,7 @@
.bgimg{
width: 100%;
height: 100%;
background: url("../assets/images/login/img.png") no-repeat center;
background: url("../assets/images/login/img1.png") no-repeat center;
background-size: cover;
padding-top: 10%;
padding-left: 14%;
......
......@@ -113,7 +113,7 @@ export default {
{ label: '单位', prop: "unit", width: "57", uid: v4() },
{ label: '甲供材料说明', prop: "materialDescription", width: "137", uid: v4() },
{
label: '计划成本', prop: "jhcb", width: "809", align: "center", slot: true, uid: v4(), children: [
label: '计划成本', prop: "jhcb", width: "809", align: "center", uid: v4(), children: [
{ label: '指导价格', prop: "guidePrice", width: "81", uid: v4() }
]
},
......
......@@ -51,7 +51,7 @@ export default {
breadCrumbTrigger(item) {
console.log(item);
if (item.path == "root") {
this.$router.push("/projectCostLedger");
this.$router.push("/projectCostLedger/list");
}
}
},
......
......@@ -336,6 +336,9 @@
param.projectId = tree.id
setTimeout(() => {
getProjectHistoryInfo(param).then(res => {
res.data.forEach(item=>{
item.projectText = item.projectName.replace(/<\/?[^>]+(style=('|")[^'"]*)?>/gi, '')
})
resolve(res.data)
})
}, 1000)
......
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