Commit 002433e5 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 c46ffa0b 7539833a
......@@ -186,6 +186,21 @@ tenant:
- d_customer_tax_certificate
- f_supplier_limited
- f_ads_bsi_kpi_proj_two
- cb_account_summary
- cb_account_summary_actual
- cb_cost_measure
- cb_cost_measure_actual
- cb_direct_expense
- cb_project_expense_summary
- cb_project_file
- cb_project_record
- cb_project_summary
- cb_project_summary_actual
- cb_quantity_summary
- cb_quantity_summary_actual
- cb_scene_expense_children
- cb_scene_expense_month
- cb_subject
# MyBatisPlus配置
# https://baomidou.com/config/
......
package com.dsk.cscec.controller;
import com.dsk.cscec.service.CbProjectFileService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* 项目成本文件表(CbProjectFile)表控制层
*
* @author sxk
* @since 2024-02-05 14:01:03
*/
@RestController
@RequestMapping("cbProjectFile")
public class CbProjectFileController {
/**
* 服务对象
*/
@Resource
private CbProjectFileService baseService;
}
package com.dsk.cscec.controller;
import com.dsk.cscec.service.CbProjectRecordService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* 项目台账表(CbProjectRecord)表控制层
*
* @author sxk
* @since 2024-02-05 11:37:49
*/
@RestController
@RequestMapping("cbProjectRecord")
public class CbProjectRecordController {
/**
* 服务对象
*/
@Resource
private CbProjectRecordService baseService;
}
package com.dsk.cscec.controller;
import com.dsk.common.core.controller.BaseController;
import com.dsk.cscec.service.ICbQuantitySummaryService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* 成本-工料汇总基本表(CbQuantitySummary)表控制层
*
* @author lcl
* @since 2024-02-05 11:06:56
*/
@RestController
@RequestMapping("/cb/quantity/summary")
public class CbQuantitySummaryController extends BaseController {
/**
* 服务对象
*/
@Resource
private ICbQuantitySummaryService baseService;
}
package com.dsk.cscec.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* 项目成本文件表(CbProjectFile)实体类
*
* @author sxk
* @since 2024-02-05 14:01:05
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class CbProjectFile extends BaseEntity implements Serializable {
private static final long serialVersionUID = 290150095443621411L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 项目ID
*/
private Long projectId;
/**
* 成本阶段(0:标前成本、1:标后成本、2:转固成本)
*/
private Integer cbStage;
/**
* 成本类型(0:直接费成本、1:工料汇总、2:措施项目、3:其他项目、4:现场经费、5:成本汇总)
*/
private Integer cbType;
/**
* 文件名称
*/
private String fileName;
/**
* OSS文件ID
*/
private String fileOssId;
/**
* OSS文件路径
*/
private String fileOssUrl;
/**
* 文件解析状态(0:待解析、1:解析中、2:解析成功、3:解析失败)
*/
private Integer fileParseStatus;
/**
* 失败备注
*/
private String failRemark;
/**
* 删除状态(0:否、2:是)
*/
private Integer delFlag;
}
package com.dsk.cscec.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* 项目台账表(CbProjectRecord)实体类
*
* @author sxk
* @since 2024-02-05 11:37:52
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class CbProjectRecord extends BaseEntity implements Serializable {
private static final long serialVersionUID = 380419400445207916L;
/**
* 主键ID
*/
@TableId(value = "id")
private Long id;
/**
* 成本阶段(0:标前成本、1:标后成本、2:转固成本)
*/
private Integer cbStage;
/**
* 项目名称
*/
private String projectName;
/**
* 项目文件状态(0:待解析、1:解析中、2:解析成功、3:解析失败)
*/
private Integer projectFileStatus;
/**
* IPM项目编码
*/
private String ipmProjectNo;
/**
* 文件名称
*/
private String projectFileName;
/**
* 删除状态(0:否、2:是)
*/
private Integer delFlag;
}
package com.dsk.cscec.domain;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
/**
* 成本-工料汇总基本表(CbQuantitySummary)表实体类
*
* @author lcl
* @since 2024-02-05 11:06:56
*/
@Data
@TableName("cb_quantity_summary")
public class CbQuantitySummary implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id")
private Long id;
/**
* 项目id
*/
private Long projectId;
/**
* 序号
*/
private String number;
/**
* 成本阶段(0:标前成本 1:标后成本 2:转固成本)
*/
private Integer cbStage;
/**
* 成本科目名称(合约规划)
*/
private String cbSubjectName;
/**
* 成本科目编号(合约规划编号)
*/
private String cbSubjectNo;
/**
* 公司编码
*/
private String companyNo;
/**
* 集团编码
*/
private String orgNo;
/**
* 成本名称
*/
private String cbName;
/**
* 工作内容
*/
private String jobContent;
/**
* 计算规则
*/
private String calculationRule;
/**
* 计量单位
*/
private String unit;
/**
* 材料说明
*/
private String materialDescription;
/**
* 指导价格
*/
private String guidePrice;
/**
* 投标选用单价(不含税)
*/
private Double bidUnitPrice;
/**
* 单价差额
*/
private Double unitPriceDifference;
/**
* 数量
*/
private Double quantity;
/**
* 合价(不含税)
*/
private Double combinedPrice;
/**
* 合价(含税)
*/
private Double combinedPriceTax;
/**
* 品牌名称
*/
private String brandName;
/**
* 投标选用来源
*/
private String bidSource;
/**
* 备注
*/
private String remark;
/**
* 创建时间
*/
private Date createTime;
}
package com.dsk.cscec.domain;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
/**
* 成本-工料汇总月记录(CbQuantitySummaryActual)表实体类
*
* @author lcl
* @since 2024-02-05 11:12:47
*/
@Data
@TableName("cb_quantity_summary_actual")
public class CbQuantitySummaryActual implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id")
private Long id;
/**
* 成本汇总基本数据id
*/
private Long cbQuantitySummaryId;
/**
* 工程量(本月用料)
*/
private Double quantities;
/**
* 单位
*/
private String unit;
/**
* 换算后本月用料
*/
private Double conversionQuantities;
/**
* 换算单位
*/
private String conversionUnit;
/**
* 采购单价
*/
private Double purchaseUnitPrice;
private Date createTime;
/**
* 推送时间
*/
private Date pushTime;
/**
* 记录所属年月
*/
private String recordDate;
/**
* 推送数据json
*/
private String pushDataJson;
}
package com.dsk.cscec.domain;
import java.util.Date;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* 成本科目(CostSubject)表实体类
*
* @author lcl
* @since 2024-02-05 09:29:46
*/
@Data
@TableName("cb_subject")
public class CbSubject implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id")
private Long id;
/**
* 层级
*/
private Integer level;
/**
* 成本科目名称(合约规划)
*/
private String cbSubjectName;
/**
* 成本科目编号(合约规划编号)
*/
private String cbSubjectNo;
/**
* 分判模式
*/
private String subjudgmentMode;
/**
* 税金类型
*/
private String taxType;
/**
* 状态 0:有效 1:无效
*/
private Integer status;
/**
* 类型 0: 未归类 1:房建
*/
private Integer type;
private Date createTime;
}
package com.dsk.cscec.listener;
import cn.dev33.satoken.secure.BCrypt;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.dsk.common.excel.ExcelListener;
import com.dsk.common.excel.ExcelResult;
import com.dsk.common.exception.ServiceException;
import com.dsk.common.helper.LoginHelper;
import com.dsk.common.utils.ValidatorUtils;
import com.dsk.common.utils.spring.SpringUtils;
import com.dsk.cscec.domain.vo.ProjectMeasuresImportVo;
import com.dsk.system.domain.SysUser;
import com.dsk.system.domain.vo.SysUserImportVo;
import com.dsk.system.service.ISysConfigService;
import com.dsk.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j;
import java.util.List;
/**
* 系统用户自定义导入
*
* @author Lion Li
*/
@Slf4j
public class ProjectCostMeasureImportListener extends AnalysisEventListener<ProjectMeasuresImportVo> implements ExcelListener<ProjectMeasuresImportVo> {
// private final ISysUserService userService;
// private final String password;
private final Boolean isUpdateSupport;
private final String operName;
private int successNum = 0;
private int failureNum = 0;
private final StringBuilder successMsg = new StringBuilder();
private final StringBuilder failureMsg = new StringBuilder();
public ProjectCostMeasureImportListener(Boolean isUpdateSupport) {
// String initPassword = SpringUtils.getBean(ISysConfigService.class).selectConfigByKey("sys.user.initPassword");
// this.userService = SpringUtils.getBean(ISysUserService.class);
// this.password = BCrypt.hashpw(initPassword);
this.isUpdateSupport = isUpdateSupport;
this.operName = LoginHelper.getUsername();
}
@Override
public void invoke(ProjectMeasuresImportVo userVo, AnalysisContext context) {
// SysUser user = this.userService.selectUserByUserName(userVo.getUserName());
// try {
// // 验证是否存在这个用户
// if (ObjectUtil.isNull(user)) {
// user = BeanUtil.toBean(userVo, SysUser.class);
// ValidatorUtils.validate(user);
// user.setPassword(password);
// user.setCreateBy(operName);
// userService.insertUser(user);
// successNum++;
// successMsg.append("<br/>").append(successNum).append("、账号 ").append(user.getUserName()).append(" 导入成功");
// } else if (isUpdateSupport) {
// Long userId = user.getUserId();
// user = BeanUtil.toBean(userVo, SysUser.class);
// user.setUserId(userId);
// ValidatorUtils.validate(user);
// userService.checkUserAllowed(user);
// userService.checkUserDataScope(user.getUserId());
// user.setUpdateBy(operName);
// userService.updateUser(user);
// successNum++;
// successMsg.append("<br/>").append(successNum).append("、账号 ").append(user.getUserName()).append(" 更新成功");
// } else {
// failureNum++;
// failureMsg.append("<br/>").append(failureNum).append("、账号 ").append(user.getUserName()).append(" 已存在");
// }
// } catch (Exception e) {
// failureNum++;
// String msg = "<br/>" + failureNum + "、账号 " + user.getUserName() + " 导入失败:";
// failureMsg.append(msg).append(e.getMessage());
// log.error(msg, e);
// }
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
}
@Override
public ExcelResult<ProjectMeasuresImportVo> getExcelResult() {
return new ExcelResult<ProjectMeasuresImportVo>() {
@Override
public String getAnalysis() {
if (failureNum > 0) {
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new ServiceException(failureMsg.toString());
} else {
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
}
return successMsg.toString();
}
@Override
public List<ProjectMeasuresImportVo> getList() {
return null;
}
@Override
public List<String> getErrorList() {
return null;
}
};
}
}
package com.dsk.cscec.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.cscec.domain.CbProjectFile;
/**
* 项目成本文件表(CbProjectFile)表数据库访问层
*
* @author sxk
* @since 2024-02-05 14:01:03
*/
public interface CbProjectFileMapper extends BaseMapper<CbProjectFile> {
}
package com.dsk.cscec.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.cscec.domain.CbProjectRecord;
/**
* 项目台账表(CbProjectRecord)表数据库访问层
*
* @author sxk
* @since 2024-02-05 11:37:49
*/
public interface CbProjectRecordMapper extends BaseMapper<CbProjectRecord> {
}
package com.dsk.cscec.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.cscec.domain.CbQuantitySummaryActual;
/**
* 成本-工料汇总月记录(CbQuantitySummaryActual)表数据库访问层
*
* @author lcl
* @since 2024-02-05 11:12:47
*/
public interface CbQuantitySummaryActualMapper extends BaseMapper<CbQuantitySummaryActual> {
}
package com.dsk.cscec.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.cscec.domain.CbQuantitySummary;
/**
* 成本-工料汇总基本表(CbQuantitySummary)表数据库访问层
*
* @author lcl
* @since 2024-02-05 11:06:56
*/
public interface CbQuantitySummaryMapper extends BaseMapper<CbQuantitySummary> {
}
package com.dsk.cscec.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.cscec.domain.CbSubject;
/**
* 成本科目(CostSubject)表数据库访问层
*
* @author lcl
* @since 2024-02-05 09:29:47
*/
public interface CbSubjectMapper extends BaseMapper<CbSubject> {
}
package com.dsk.cscec.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.cscec.domain.CbProjectFile;
/**
* 项目成本文件表(CbProjectFile)表服务接口
*
* @author sxk
* @since 2024-02-05 14:01:06
*/
public interface CbProjectFileService extends IService<CbProjectFile> {
}
package com.dsk.cscec.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.cscec.domain.CbProjectRecord;
/**
* 项目台账表(CbProjectRecord)表服务接口
*
* @author sxk
* @since 2024-02-05 11:37:53
*/
public interface CbProjectRecordService extends IService<CbProjectRecord> {
}
package com.dsk.cscec.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.cscec.domain.CbQuantitySummaryActual;
/**
* 成本-工料汇总月记录(CbQuantitySummaryActual)表服务接口
*
* @author lcl
* @since 2024-02-05 11:12:47
*/
public interface ICbQuantitySummaryActualService extends IService<CbQuantitySummaryActual> {
}
package com.dsk.cscec.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.cscec.domain.CbQuantitySummary;
/**
* 成本-工料汇总基本表(CbQuantitySummary)表服务接口
*
* @author lcl
* @since 2024-02-05 11:06:56
*/
public interface ICbQuantitySummaryService extends IService<CbQuantitySummary> {
}
package com.dsk.cscec.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.cscec.domain.CbProjectFile;
import com.dsk.cscec.mapper.CbProjectFileMapper;
import com.dsk.cscec.service.CbProjectFileService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 项目成本文件表(CbProjectFile)表服务实现类
*
* @author sxk
* @since 2024-02-05 14:01:06
*/
@Service("cbProjectFileService")
public class CbProjectFileServiceImpl extends ServiceImpl<CbProjectFileMapper, CbProjectFile> implements CbProjectFileService {
@Resource
private CbProjectFileMapper baseMapper;
}
package com.dsk.cscec.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.cscec.domain.CbProjectRecord;
import com.dsk.cscec.mapper.CbProjectRecordMapper;
import com.dsk.cscec.service.CbProjectRecordService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 项目台账表(CbProjectRecord)表服务实现类
*
* @author sxk
* @since 2024-02-05 11:37:53
*/
@Service("cbProjectRecordService")
public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMapper, CbProjectRecord> implements CbProjectRecordService {
@Resource
private CbProjectRecordMapper baseMapper;
}
package com.dsk.cscec.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.cscec.mapper.CbQuantitySummaryActualMapper;
import com.dsk.cscec.domain.CbQuantitySummaryActual;
import com.dsk.cscec.service.ICbQuantitySummaryActualService;
import org.springframework.stereotype.Service;
/**
* 成本-工料汇总月记录(CbQuantitySummaryActual)表服务实现类
*
* @author lcl
* @since 2024-02-05 11:12:47
*/
@Service
public class CbQuantitySummaryActualServiceImpl extends ServiceImpl<CbQuantitySummaryActualMapper, CbQuantitySummaryActual> implements ICbQuantitySummaryActualService {
}
package com.dsk.cscec.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.cscec.mapper.CbQuantitySummaryMapper;
import com.dsk.cscec.domain.CbQuantitySummary;
import com.dsk.cscec.service.ICbQuantitySummaryService;
import org.springframework.stereotype.Service;
/**
* 成本-工料汇总基本表(CbQuantitySummary)表服务实现类
*
* @author lcl
* @since 2024-02-05 11:06:56
*/
@Service
public class CbQuantitySummaryServiceImpl extends ServiceImpl<CbQuantitySummaryMapper, CbQuantitySummary> implements ICbQuantitySummaryService {
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.cscec.mapper.CbProjectFileMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.cscec.mapper.CbProjectRecordMapper">
</mapper>
\ No newline at end of file
......@@ -3,8 +3,8 @@
<!-- tab列表 -->
<div class="dsk-tab-items-container">
<div class="dsk-tab-items-container-inner">
<div class="dsk-tab-item" v-for="item of tabs" :key="item.id" :class="{'tab-current' : item.value == currentValue}" @click="tabChoose(item)">
<div class="dsk-tab-item-name">{{item.name}}</div>
<div class="dsk-tab-item" v-for="item of tabs" :key="item.id" :class="{'tab-current' : item.value == currentValue}">
<div class="dsk-tab-item-name" @click="tabChoose(item)">{{item.name}}</div>
</div>
<!-- 下滑条 -->
<div class="dsk-tab-sliding-bar" v-if="tabs.length" :style="{width : `${silidingBarWidth}px`,transform : `translateX(${silidingBarLeft}px)`}">
......
......@@ -1030,3 +1030,28 @@ export function generateRandomLowerCaseLetter() {
const randomIndex = Math.floor(Math.random() * alphabet.length);
return alphabet[randomIndex];
}
/**
* 获取直系祖先到本身组成的数组
* @param {object} data
* @param {string | number} targetId
* @param {string} idKey
* @param {Array<any>} ancestors
* @returns
*/
export function findAncestors(data, targetId, idKey = "uid", childrenKey = "children", ancestors = []) {
if (data[idKey] === targetId) {
return [...ancestors, data]; // 找到目标节点,将其添加到祖先数组中并返回
}
if (data[childrenKey]?.length) {
for (const child of data[childrenKey]) {
const result = findAncestors(child, targetId, idKey, childrenKey, [...ancestors, data]); // 递归调用,将当前节点添加到祖先数组中
if (result) {
return result; // 如果找到了目标节点,则停止继续遍历并返回结果
}
}
}
return null; // 如果遍历完所有节点都没有找到目标节点,则返回null
}
<template>
<div class="feed-summary-container">
</div>
</template>
<script>
export default {
name : "feedSummary",
data() {
return {
}
},
//可访问data属性
created(){
},
//计算集
computed:{
},
//方法集
methods:{
},
}
</script>
<style lang="scss" scoped>
.feed-summary-container {
}
</style>
<template>
<div class="project-bread-crumb-container">
<el-breadcrumb separator-class="el-icon-arrow-right" class="project-bread-crumb-inner">
<!-- 默认展示 -->
<el-breadcrumb-item class="project-bread-crumb-item">
<span @click="$router.push('/projectCostLedger')">项目成本台账</span>
</el-breadcrumb-item>
<!-- 当前模块 -->
<transition name="breadcrumb" mode="out-in">
<el-breadcrumb-item class="project-bread-crumb-item current-bread-brumb-item" v-if="breadCrumb[module] && current">
<span>{{breadCrumb[module].breadcrumbName}}</span>
</el-breadcrumb-item>
</transition>
<!-- 下级 -->
<transition-group name="breadcrumb" tag="div" v-if="currentBreadCurmbList.length">
<el-breadcrumb-item class="project-bread-crumb-item" v-for="(item,index) of currentBreadCurmbList" :key="item.path"
:class="{'current-bread-brumb-item' : item.path == current}">
<span @click.stop="item.path == current ? '' : breadClickHandle(item)">{{item.breadcrumbName}}</span>
</el-breadcrumb-item>
</transition-group>
</el-breadcrumb>
</div>
</template>
<script>
import { cloneDeep } from "lodash-es";
import { findAncestors } from "@/utils";
export default {
name: "projectBreadCrumb",
props: {
current: String,
module: String
},
watch: {
current: {
handler(newValue, oldValue) {
this.init(newValue);
}
}
},
data() {
return {
currentBreadCurmbList: [],
breadCrumb: {
// 详情
detail: {
breadcrumbName: "详情",
childrenBreadCrumb: [
{
breadcrumbName: "工程项目信息",
path: "basicEngineeringInformation"
},
{
breadcrumbName: "直接费成本",
path: "directCost"
},
{
breadcrumbName: "工料汇总",
path: "feedSummary"
},
{
breadcrumbName: "措施项目",
path: "measureItem"
},
{
breadcrumbName: "其他项目",
path: "otherItems"
},
{
breadcrumbName: "现场经费",
path: "fieldExpenses"
},
{
breadcrumbName: "成本汇总",
path: "cost"
},
{
breadcrumbName: "盈亏分析对比",
path: "profitAndLoss"
}
]
}
// 缺省配置
}
};
},
//可访问data属性
created() {
this.init(this.current);
},
//计算集
computed: {
},
//方法集
methods: {
init(current) {
if (!current) return;
// 取出当前模块
const _temp = cloneDeep(this.breadCrumb[this.module]);
if (!_temp) return;
this.currentBreadCurmbList = this.createBreadCrumb(current, _temp);
},
createBreadCrumb(current, data) {
let result = findAncestors(data, current, "path", "childrenBreadCrumb");
if (result) {
result = result.filter(item => item.path);
result = result.map(item => {
const _temp = {
breadcrumbName: item.breadcrumbName,
};
if (item.path) _temp["path"] = item.path;
return _temp;
});
return result;
}
;
},
breadClickHandle(item) {
console.log(item);
}
},
}
</script>
<style lang="scss" scoped>
.project-bread-crumb-container {
::v-deep .project-bread-crumb-inner {
.project-bread-crumb-item {
font-size: 14px;
font-weight: 350;
height: 24px;
line-height: 24px;
.el-breadcrumb__inner {
color: rgba(35, 35, 35, 0.4);
cursor: pointer;
&:hover {
color: #0081ff;
}
}
.el-breadcrumb__separator {
color: rgba(35, 35, 35, 0.4);
font-size: 12px;
margin: 0px 4px;
}
&.current-bread-brumb-item {
font-size: 12px;
line-height: 24px;
height: 24px;
.el-breadcrumb__inner {
color: #232323;
cursor: unset;
&:hover {
color: inherit;
}
}
}
}
}
}
</style>
<template>
<div class="project-cost-ledger-detail-header">
<div class="project-cost-ledger-detail-header-inner">
<project-bread-crumb :module="module" :current="current"></project-bread-crumb>
<!-- 项目名称 -->
<div class="project-detail-header-name">宝安中学(集团)初中部改扩建工程施工总承包(二次公告)</div>
<!-- 项目信息 -->
<div class="project-detail-plate">
<div class="detail-plate-item project-code" v-if="isShowProjectCode.includes(current)">
<span class="plate-item-name">项目编码:</span>
<span>AB21131212131</span>
</div>
<div class="detail-plate-item">
<span class="plate-item-name">客户名称:</span>
<span>广联达科技股份有限公司天津分公司天津分公司</span>
</div>
<div class="detail-plate-item">
<span class="plate-item-name">签订单位:</span>
<span>中建一局集团第二建筑有限公司</span>
</div>
</div>
</div>
</div>
</template>
<script>
import ProjectBreadCrumb from "@/views/projectCostLedger/detail/components/ProjectBreadCrumb";
export default {
name: "projectDetailHeader",
props: {
module: String,
current: String
},
components: {
ProjectBreadCrumb
},
data() {
return {
isShowProjectCode: ["basicEngineeringInformation", "directCost", "feedSummary", "cost"]
};
},
//可访问data属性
created() {
},
//计算集
computed: {
},
//方法集
methods: {
},
}
</script>
<style lang="scss" scoped>
.project-cost-ledger-detail-header {
width: 100%;
height: 118px;
overflow: hidden;
background: #fff;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
border-bottom: 1px solid #eeeeee;
padding: 16px;
box-sizing: border-box;
.project-cost-ledger-detail-header-inner {
width: 100%;
height: 100%;
.project-detail-header-name {
line-height: 16px;
margin-top: 16px;
width: 100%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-family: Source Han Sans, Source Han Sans;
font-size: 16px;
color: #232323;
font-weight: bold;
}
.project-detail-plate {
display: flex;
align-items: center;
margin-top: 12px;
.detail-plate-item {
display: flex;
align-items: center;
font-size: 14px;
font-weight: 350;
color: rgba(35, 35, 35, 0.8);
line-height: 18px;
margin-right: 24px;
.plate-item-name {
color: rgba(35, 35, 35, 0.4);
}
}
}
}
}
</style>
<template>
<div class="project-cost-ledger-detail">
<div class="project-cost-ledger-detail-inner">
<project-detail-header :module="module" :current="current"></project-detail-header>
<!-- tab切换栏 -->
<dsk-tab-toggle v-model="current" :tabs="toggleTabs" @tabToggle="tabToggle"></dsk-tab-toggle>
<!-- tab切换组件容器 -->
<div class="project-cost-ledger-detail-module">
<!-- 放入组件 v-if current == ‘xxxx’ 详情变量 this.detailInfo 需要深度监听-->
<!-- 供料汇总 -->
<feed-summary v-if="current == 'feedSummary'"></feed-summary>
</div>
</div>
</div>
</template>
<script>
import ProjectDetailHeader from "@/views/projectCostLedger/detail/components/ProjectDetailHeader";
import DskTabToggle from "@/components/DskTabToggle";
// 供料汇总
import FeedSummary from "@/views/projectCostLedger/detail/components/FeedSummary";
import { v4 } from "uuid";
export default {
name: "projectCostLedgerDetail",
components: {
ProjectDetailHeader,
DskTabToggle,
FeedSummary
},
data() {
return {
projectID: "",
current: "",
module: "detail",
// 详情信息变量
detailInfo: {},
toggleTabs: [
{
value: "basicEngineeringInformation",
name: "工程项目信息",
id: v4()
},
{
value: "directCost",
name: "直接费成本",
id: v4()
},
{
value: "feedSummary",
name: "工料汇总",
id: v4()
},
{
name: "措施项目",
value: "measureItem",
id: v4()
},
{
name: "其他项目",
value: "otherItems",
id: v4()
},
{
name: "现场经费",
value: "fieldExpenses",
id: v4()
},
{
name: "成本汇总",
value: "cost",
id: v4()
},
{
name: "盈亏分析对比",
value: "profitAndLoss",
id: v4()
}
],
};
},
//可访问data属性
created() {
this.init();
},
beforeDestroy() {
// 注销事件订阅
this.$off("refreshDetail");
},
//计算集
computed: {
},
//方法集
methods: {
async init() {
try {
// 监听组件emit事件订阅 需要刷新数据
this.$on("refreshDetail", this.getProjectDetail);
await this.getProjectQuery();
} catch (error) {
}
},
async getProjectQuery() {
try {
const { query } = this.$route;
// if (!query.projectID) return this.$message.error("缺少项目id");
this.projectID = query.projectID;
if (query.current) {
this.current = query.current;
} else {
// 默认命中工程项目信息
this.current = "basicEngineeringInformation";
};
await this.getProjectDetail(query.projectID);
} catch (error) {
console.log(error);
}
},
async getProjectDetail(projectID) {
try {
} catch (error) {
}
},
// 当前命中的current
tabToggle(value) {
}
},
}
</script>
<style lang="scss" scoped>
.project-cost-ledger-detail {
width: 100%;
height: 100%;
padding: 16px 24px;
box-sizing: border-box;
.project-cost-ledger-detail-inner {
width: 100%;
height: 100%;
::v-deep .dsk-tab-toggle {
height: 57px;
.dsk-tab-items-container .dsk-tab-items-container-inner .dsk-tab-item {
align-items: unset;
padding-top: 20px;
.dsk-tab-item-name {
font-size: 14px;
line-height: 22px;
}
}
.dsk-tab-sliding-bar {
border-radius: 8px;
bottom: 1px;
}
}
.project-cost-ledger-detail-module {
width: 100%;
height: calc(100% - 118px - 57px);
box-sizing: border-box;
overflow: auto;
}
}
}
</style>
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