Commit da30192b authored by tianhongyang's avatar tianhongyang

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 802605b4 2879fb3e
......@@ -88,5 +88,32 @@ public interface CbProjectConstants {
*/
int CB_TYPE_SUMMARY = 5;
String CB_TYPE_SUMMARY_NAME = "成本汇总";
/**
* 直接费清单/费用项分类标识:清
*/
String DIRECT_EXPENSE_CATEGORY_TAG_QING = "清";
/**
* 直接费清单/费用项分类标识:专
*/
String DIRECT_EXPENSE_CATEGORY_TAG_ZHUAN = "专";
/**
* 直接费清单/费用项分类标识:劳
*/
String DIRECT_EXPENSE_CATEGORY_TAG_LAO = "劳";
/**
* 直接费清单/费用项分类标识:材
*/
String DIRECT_EXPENSE_CATEGORY_TAG_CAI = "材";
/**
* 直接费编码:专
*/
String DIRECT_EXPENSE_CODE_ZHUAN = "ZY";
/**
* 直接费编码:劳
*/
String DIRECT_EXPENSE_CODE_LAO = "LW";
/**
* 直接费编码:材
*/
String DIRECT_EXPENSE_CODE_CAI = "FG";
}
package com.dsk.cscec.controller;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.R;
import com.dsk.cscec.domain.bo.AddCbDirectExpenseBo;
import com.dsk.cscec.domain.vo.CbDirectExpenseDataDetailVo;
import com.dsk.cscec.domain.vo.CbDirectExpenseMenuVo;
import com.dsk.cscec.service.CbDirectExpenseService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* 直接费成本表(CbDirectExpense)表控制层
......@@ -14,12 +21,45 @@ import javax.annotation.Resource;
*/
@RestController
@RequestMapping("cbDirectExpense")
public class CbDirectExpenseController {
public class CbDirectExpenseController extends BaseController {
/**
* 服务对象
*/
@Resource
private CbDirectExpenseService baseService;
/**
* 获取直接费菜单
*/
@GetMapping("/getMenuList/{projectId}")
public R<CbDirectExpenseMenuVo> getMenuList(@NotNull(message = "项目ID不能为空") @PathVariable Long projectId) {
return R.ok(baseService.getMenuList(projectId));
}
/**
* 直接费数据解析
*/
@GetMapping("/parseDirectExpenseData/{projectId}")
public R<Void> parseDirectExpenseData(@PathVariable Long projectId) throws Exception {
baseService.parseDirectExpenseData(projectId, 1);
return R.ok();
}
/**
* 获取直接费数据详情
*/
@GetMapping("/getDataDetail/{menuId}")
public R<List<CbDirectExpenseDataDetailVo>> getDataDetail(@NotNull(message = "菜单ID不能为空") @PathVariable Long menuId) {
return R.ok(baseService.getDataDetail(menuId));
}
/**
* 新增直接费费用项
*/
@PostMapping("/addExpense")
public R<Void> addExpense(@Validated @RequestBody AddCbDirectExpenseBo addBo) {
return toAjax(baseService.addExpense(addBo));
}
}
......@@ -8,6 +8,7 @@ import com.dsk.common.enums.BusinessType;
import com.dsk.common.exception.ServiceException;
import com.dsk.cscec.domain.CbProjectFile;
import com.dsk.cscec.domain.bo.AddProjectFileUploadBo;
import com.dsk.cscec.domain.bo.DeleteCbProjectFileBo;
import com.dsk.cscec.domain.vo.QueryProjectFileUploadDetailVo;
import com.dsk.cscec.service.CbProjectFileService;
import com.dsk.system.domain.vo.SysOssVo;
......@@ -75,11 +76,11 @@ public class CbProjectFileController extends BaseController {
}
/**
* 删除项目台账文件
* 删除项目台账文件及对应数据
*/
@DeleteMapping("/deleteCbProjectFile/{fileId}")
public R<Void> deleteCbProjectFile(@NotNull(message = "文件ID不能为空") @PathVariable Long fileId) {
return toAjax(baseService.deleteProjectFile(new Long[]{fileId}));
@DeleteMapping("/deleteCbProjectFile")
public R<Void> deleteCbProjectFile(@Validated @RequestBody DeleteCbProjectFileBo deleteBo) {
return toAjax(baseService.deleteProjectFile(deleteBo));
}
/**
......
......@@ -2,6 +2,7 @@ package com.dsk.cscec.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.dsk.common.annotation.Excel;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
......@@ -24,112 +25,127 @@ public class CbDirectExpense extends BaseEntity implements Serializable {
@TableId(value = "id")
private Long id;
/**
* 项目ID
*/
private Long projectId;
/**
* 成本阶段(0:标前成本、1:标后成本、2:转固成本)
* 排序
*/
private Integer cbStage;
private Integer sort;
/**
* 父级ID
*/
private Long parentId;
/**
* 项目文件ID
* 层级
*/
private Long projectFileId;
private Integer level;
/**
* 序号
* 项目ID
*/
private String number;
private Long projectId;
/**
* 排序
* 项目文件ID
*/
private Integer sort;
private Long projectFileId;
/**
* 编码
*/
@Excel(name = "编码")
private String code;
/**
* 名称
*/
@Excel(name = "名称")
private String expenseName;
/**
* 清单/费用项分类标识
*/
@Excel(name = "清单/费用项分类标识")
private String expenseCategoryTag;
/**
* 项目特征
*/
@Excel(name = "项目特征")
private String projectFeature;
/**
* 单位
*/
@Excel(name = "单位")
private String unit;
/**
* 工程量表达式
*/
@Excel(name = "工程量表达式")
private String engineeringVolumeExpression;
/**
* 工程量
*/
@Excel(name = "工程量")
private String engineeringVolume;
/**
* 成本科目
*/
@Excel(name = "成本科目")
private String cbSubject;
/**
* 招标控制价单价
*/
@Excel(name = "招标控制价单价")
private String tenderControlUnitPrice;
/**
* 招标控制价合价
*/
@Excel(name = "招标控制价合价")
private String tenderControlSumPrice;
/**
* 不含税成本单价
*/
@Excel(name = "不含税成本单价")
private String excludeTaxCbUnitPrice;
/**
* 不含税成本合价
*/
@Excel(name = "不含税成本合价")
private String excludeTaxCbSumPrice;
/**
* 成本税金合计
*/
@Excel(name = "成本税金合计")
private String cbTaxSum;
/**
* 含税成本单价
*/
@Excel(name = "含税成本单价")
private String includeTaxCbUnitPrice;
/**
* 含税成本合价
*/
@Excel(name = "含税成本合价")
private String includeTaxCbSumPrice;
/**
* 合价偏差
*/
@Excel(name = "合价偏差")
private String sumPriceDeviation;
/**
* 盈亏率
*/
@Excel(name = "盈亏率")
private String profitLossRatio;
/**
* 标准成本费用
*/
@Excel(name = "标准成本费用")
private String standardCbItem;
/**
* 数据源(0:导入、1:手动新增)
* 备注
*/
@Excel(name = "备注")
private String remark;
/**
* 是否为导入数据
*/
private Integer dataOrigin;
private Boolean isImport;
/**
* 删除状态(0:否、2:是)
*/
@TableLogic(value = "0", delval = "2")
private Integer delFlag;
/**
* 备注
*/
private String failRemark;
}
package com.dsk.cscec.domain.bo;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @author sxk
* @date 2024.03.01
* @time 17:59
*/
@Data
public class AddCbDirectExpenseBo {
/**
* 清ID
*/
@NotNull(message = "清ID不能为空")
private Long qingId;
/**
* 编码
*/
@NotBlank(message = "编码不能为空")
private String code;
/**
* 项目名称
*/
@NotBlank(message = "项目名称不能为空")
private String expenseName;
/**
* 单位
*/
@NotBlank(message = "单位不能为空")
private String unit;
/**
* 单价
*/
@NotBlank(message = "单价不能为空")
private String tenderControlUnitPrice;
/**
* 特征描述
*/
private String projectFeature;
}
\ No newline at end of file
package com.dsk.cscec.domain.bo;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author sxk
* @date 2024.02.28
* @time 10:45
*/
@Data
public class DeleteCbProjectFileBo {
@NotNull(message = "文件ID不能为空")
private Long fileId;
@NotNull(message = "成本类型不能为空")
private Integer cbType;
}
package com.dsk.cscec.domain.vo;
import com.dsk.cscec.domain.CbDirectExpense;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.ArrayList;
import java.util.List;
/**
* @author sxk
* @date 2024.03.01
* @time 17:03
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class CbDirectExpenseDataDetailVo extends CbDirectExpense {
/**
* 子集
*/
private List<CbDirectExpenseDataDetailVo> childrenList = new ArrayList<>();
;
}
package com.dsk.cscec.domain.vo;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @author sxk
* @date 2024.03.01
* @time 09:34
*/
@Data
public class CbDirectExpenseMenuVo {
/**
* 菜单ID
*/
private Long menuId;
/**
* 父级ID
*/
private Long parentId;
/**
* 菜单名称
*/
private String menuName;
/**
* 菜单层级
*/
private Integer menuLevel;
/**
* 子菜单
*/
private List<CbDirectExpenseMenuVo> childrenList = new ArrayList<>();
}
......@@ -13,6 +13,7 @@ import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
/**
* 成本汇总-项目汇总自定义导入
......@@ -83,6 +84,17 @@ public class CbSummaryProjectImportListener extends AnalysisEventListener<CbSumm
importVo.setLevel(1);
} else if (importVo.getNumber().matches("^[0-9]*[1-9][0-9]*$")) {//判断是否为正整数
importVo.setLevel(Integer.valueOf(importVo.getNumber()));
//判断上一条数据level是否与当前一致或为上一级
Optional<CbSummaryProjectImportVo> max = resultList.stream().max(Comparator.comparing(CbSummaryProjectImportVo::getSort));
CbSummaryProjectImportVo preImportVo = null;
if (!max.isPresent()) {
preImportVo = max.get();
} else {
throw new ServiceException("'序号'列数据错误,无法匹配层级!");
}
if (importVo.getLevel() > preImportVo.getLevel() && importVo.getLevel() != preImportVo.getLevel() + 1) {
throw new ServiceException("'序号'列数据错误,无法匹配层级!");
}
}
......
......@@ -2,6 +2,10 @@ package com.dsk.cscec.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.cscec.domain.CbDirectExpense;
import com.dsk.cscec.domain.vo.CbDirectExpenseMenuVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 直接费成本表(CbDirectExpense)表数据库访问层
......@@ -10,6 +14,14 @@ import com.dsk.cscec.domain.CbDirectExpense;
* @since 2024-02-05 14:43:31
*/
public interface CbDirectExpenseMapper extends BaseMapper<CbDirectExpense> {
/**
* 查询清单/费用项分类标识为数字的数字
*
* @param projectId 项目ID
* @param regx 正则表达式1-10
* @param deleteFlagExist 删除标识
*/
List<CbDirectExpenseMenuVo> selectMenuData(@Param("projectId") Long projectId, @Param("regx") String regx, @Param("deleteFlagExist") Integer deleteFlagExist);
}
......@@ -2,6 +2,11 @@ package com.dsk.cscec.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.cscec.domain.CbDirectExpense;
import com.dsk.cscec.domain.bo.AddCbDirectExpenseBo;
import com.dsk.cscec.domain.vo.CbDirectExpenseDataDetailVo;
import com.dsk.cscec.domain.vo.CbDirectExpenseMenuVo;
import java.util.List;
/**
* 直接费成本表(CbDirectExpense)表服务接口
......@@ -10,6 +15,35 @@ import com.dsk.cscec.domain.CbDirectExpense;
* @since 2024-02-05 14:43:34
*/
public interface CbDirectExpenseService extends IService<CbDirectExpense> {
/**
* 获取直接费菜单
*
* @param projectId 项目ID
* @return 直接费菜单
*/
CbDirectExpenseMenuVo getMenuList(Long projectId);
/**
* 直接费数据解析
*
* @param projectId 项目ID
* @param cbStage 成本阶段
*/
void parseDirectExpenseData(Long projectId, Integer cbStage) throws Exception;
/**
* 获取直接费数据详情
*
* @param menuId 菜单ID
* @return 数据详情
*/
List<CbDirectExpenseDataDetailVo> getDataDetail(Long menuId);
/**
* 新增直接费费用项
*
* @param addBo 费用项
* @return 新增结果
*/
Integer addExpense(AddCbDirectExpenseBo addBo);
}
......@@ -3,6 +3,7 @@ package com.dsk.cscec.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.cscec.domain.CbProjectFile;
import com.dsk.cscec.domain.bo.AddProjectFileUploadBo;
import com.dsk.cscec.domain.bo.DeleteCbProjectFileBo;
import com.dsk.cscec.domain.vo.QueryProjectFileUploadDetailVo;
import com.dsk.system.domain.vo.SysOssVo;
......@@ -32,12 +33,12 @@ public interface CbProjectFileService extends IService<CbProjectFile> {
CbProjectFile addProjectFile(AddProjectFileUploadBo fileUploadBo, SysOssVo oss);
/**
* 批量逻辑删除项目上传文件记录
* 删除项目台账文件及对应数据
*
* @param fileIds 文件ID
* @param deleteBo 待删除文件信息
* @return 删除结果
*/
Integer deleteProjectFile(Long[] fileIds);
Integer deleteProjectFile(DeleteCbProjectFileBo deleteBo);
/**
* 获取项目文件上传详情
......@@ -49,9 +50,10 @@ public interface CbProjectFileService extends IService<CbProjectFile> {
/**
* 查询项目文件解析列表
*
* @param projectId 项目ID
* @param cbType 成本类型(0:直接费成本、1:工料汇总、2:措施项目、3:其他项目、4:现场经费、5:成本汇总)
* @param cbStage 成本阶段(0:标前成本、1:标后成本、2:转固成本)
* @param cbType 成本类型(0:直接费成本、1:工料汇总、2:措施项目、3:其他项目、4:现场经费、5:成本汇总)
* @param cbStage 成本阶段(0:标前成本、1:标后成本、2:转固成本)
* @return
*/
List<CbProjectFile> selectAnalysisList(Long projectId, Integer cbType, Integer cbStage);
......@@ -66,5 +68,5 @@ public interface CbProjectFileService extends IService<CbProjectFile> {
* @param errmsg RMSG
* @return boolean
*/
boolean UpdateProjectFileStatus(Long fileId,String errmsg,Integer status);
boolean UpdateProjectFileStatus(Long fileId, String errmsg, Integer status);
}
......@@ -102,8 +102,8 @@ public class CbProjectExpenseSummaryServiceImpl extends ServiceImpl<CbProjectExp
.collect(Collectors.toList());
if (summaryList.size() != importList.size()) {
projectFile.setFileParseStatus(CbProjectConstants.PROJECT_FILE_STATUS_PARSE_FAIL);
log.error("FileId:" + projectFile.getId() + ",表格中存在\"名称\"列为空数据!");
projectFile.setFailRemark("表格中存在\"名称\"列为空数据");
log.error("FileId:" + projectFile.getId() + ",表格中\"名称\"列存在空数据!");
projectFile.setFailRemark("表格中\"名称\"列存在空数据");
projectFileMapper.updateById(projectFile);
continue;
}
......
......@@ -56,6 +56,8 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe
private CbProjectOtherService projectOtherService;
@Resource
private ICbCostMeasureService costMeasureService;
@Resource
private CbDirectExpenseService directExpenseService;
/**
* 新增项目
......@@ -124,10 +126,11 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe
projectFile.setFailRemark(null);
}).collect(Collectors.toList()));
//TODO:调各个成本类型的解析文件方法
//调各个成本类型的解析文件方法
Integer cbStage = projectRecord.getCbStage();
String username = Objects.requireNonNull(LoginHelper.getLoginUser()).getUsername();
//直接费成本
directExpenseService.parseDirectExpenseData(projectId, cbStage);
//工料汇总
CbProjectBaseBo projectBaseBo = new CbProjectBaseBo();
projectBaseBo.setProjectId(projectId);
......@@ -178,7 +181,7 @@ public class CbProjectRecordServiceImpl extends ServiceImpl<CbProjectRecordMappe
//判断是否有历史阶段
searchVo.setHasChildren(baseMapper.selectCount(new LambdaQueryWrapper<CbProjectRecord>()
.eq(CbProjectRecord::getRelatedId, searchVo.getRelatedId())
.ne(CbProjectRecord::getProjectFileStatus,CbProjectConstants.PROJECT_FILE_STATUS_PREPARING)) > 1
.ne(CbProjectRecord::getProjectFileStatus, CbProjectConstants.PROJECT_FILE_STATUS_PREPARING)) > 1
);
//关键字标红
......
......@@ -129,7 +129,7 @@ public class CbSceneExpenseChildrenServiceImpl extends ServiceImpl<CbSceneExpens
}
//筛选有效数据
List<CbSceneExpenseChildrenImportBo> summaryList = importList.stream().parallel()
List<CbSceneExpenseChildrenImportBo> chidrenList = importList.stream().parallel()
//筛选名称列不为空数据
.filter(item -> StringUtils.isNotBlank(item.getExpenseName()))
.peek(item -> {
......@@ -154,10 +154,10 @@ public class CbSceneExpenseChildrenServiceImpl extends ServiceImpl<CbSceneExpens
item.setCreateTime(new Date());
})
.collect(Collectors.toList());
if (summaryList.size() != importList.size()) {
if (chidrenList.size() != importList.size()) {
projectFile.setFileParseStatus(CbProjectConstants.PROJECT_FILE_STATUS_PARSE_FAIL);
log.error("FileId:" + projectFile.getId() + ",表格中存在\"名称\"列为空数据");
projectFile.setFailRemark("表格中存在\"名称\"列为空数据");
log.error("FileId:" + projectFile.getId() + ",表格中\"名称\"列存在空数据");
projectFile.setFailRemark("表格中\"名称\"列存在空数据");
projectFileMapper.updateById(projectFile);
continue;
}
......@@ -165,7 +165,7 @@ public class CbSceneExpenseChildrenServiceImpl extends ServiceImpl<CbSceneExpens
try {
//批量插入数据
CbSceneExpenseChildrenServiceImpl impl = new CbSceneExpenseChildrenServiceImpl();
Assert.isTrue(impl.saveBatch(BeanUtil.copyToList(summaryList, CbSceneExpenseChildren.class)), "数据插入失败");
Assert.isTrue(impl.saveBatch(BeanUtil.copyToList(chidrenList, CbSceneExpenseChildren.class)), "数据插入失败");
//更新文件状态
projectFile.setFileParseStatus(CbProjectConstants.PROJECT_FILE_STATUS_PARSE_SUCCESS);
Assert.isTrue(projectFileMapper.updateById(projectFile) > 0, "解析成功后文件状态更新失败");
......
......@@ -149,9 +149,12 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary
}
//获取父级id
Integer parentLevel = cbSummary.getLevel() - 1;
CbSummary parent = cbSummaryList.stream().filter(summary -> summary.getSort() < cbSummary.getSort() && summary.getLevel() == parentLevel)
.max(Comparator.comparing(CbSummary::getSort)).get();
CbSummary parent = null;
Optional<CbSummary> max = cbSummaryList.stream().filter(summary -> summary.getSort() < cbSummary.getSort() && summary.getLevel() == parentLevel)
.max(Comparator.comparing(CbSummary::getSort));
if (max.isPresent()) {
parent = max.get();
}
if(ObjectUtil.isNull(parent)){
throw new ServiceException("'序号'列数据错误,无法匹配层级!");
}
......@@ -223,10 +226,23 @@ public class CbSummaryServiceImpl extends ServiceImpl<CbSummaryMapper, CbSummary
if (cbSummary.getLevel() == 0) {
continue;
}
//获取父级id
Integer parentLevel = cbSummary.getLevel() - 1;
CbSummary parent = cbSummaryList.stream().filter(summary -> summary.getSort() < cbSummary.getSort() && summary.getLevel() == parentLevel)
.max(Comparator.comparing(CbSummary::getSort)).get();
CbSummary parent = null;
//通过序号获取parentId
if (StringUtil.count(cbSummary.getNumber(), "-") > 1) {
String parentNumber = cbSummary.getNumber().substring(0, cbSummary.getNumber().lastIndexOf("-"));
Optional<CbSummary> max = cbSummaryList.stream().limit(cbSummary.getSort()).filter(summary -> summary.getNumber().equals(parentNumber))
.max(Comparator.comparing(CbSummary::getSort));
if (max.isPresent()) {
parent = max.get();
}
} else {
Integer parentLevel = cbSummary.getLevel() - 1;
Optional<CbSummary> max = cbSummaryList.stream().filter(summary -> summary.getSort() < cbSummary.getSort() && summary.getLevel() == parentLevel)
.max(Comparator.comparing(CbSummary::getSort));
if (max.isPresent()) {
parent = max.get();
}
}
if(ObjectUtil.isNull(parent)){
throw new ServiceException("'序号'列数据错误,无法匹配层级!");
}
......
......@@ -2,5 +2,13 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.cscec.mapper.CbDirectExpenseMapper">
<select id="selectMenuData" resultType="com.dsk.cscec.domain.vo.CbDirectExpenseMenuVo">
select cde.id menuId, cde.parent_id, cde.expense_name menuName, cde.level menuLevel
from cb_direct_expense cde
where cde.project_id = #{projectId}
and cde.expense_category_tag regexp #{regx}
and cde.del_flag = #{deleteFlagExist}
order by cde.sort
</select>
</mapper>
......@@ -134,7 +134,7 @@
from cb_summary csu
left join cb_summary_actual csa on (csu.id = csa.cb_summary_id and csa.expense_date = #{expenseDate} AND csa.del_flag = 0)
left join cb_summary_actual csa1 on (csu.id = csa1.cb_summary_id and csa1.expense_date &lt;= #{expenseDate} AND csa1.del_flag = 0)
left join cb_direct_expense cde on (csu.project_id = cde.project_id and csu.cb_stage = cde.cb_stage and cde.del_flag = 0)
left join cb_direct_expense cde on (csu.project_id = cde.project_id and cde.del_flag = 0)
where csu.id = #{id} and csu.del_flag = 0
group by csu.id
order by csu.sort
......@@ -147,7 +147,7 @@
from cb_summary csu
left join cb_summary_actual csa on (csu.id = csa.cb_summary_id and csa.expense_date = #{expenseDate} AND csa.del_flag = 0)
left join cb_summary_actual csa1 on (csu.id = csa1.cb_summary_id and csa1.expense_date &lt;= #{expenseDate} AND csa1.del_flag = 0)
left join cb_direct_expense cde on (csu.project_id = cde.project_id and csu.cb_stage = cde.cb_stage and cde.del_flag = 0)
left join cb_direct_expense cde on (csu.project_id = cde.project_id and cde.del_flag = 0)
where csu.parent_id = #{parentId} and csu.del_flag = 0
group by csu.id
order by csu.sort
......
......@@ -66,10 +66,11 @@ export function importData(projectId) {
}
//获取草稿箱列表
export function getDraftDialogList(projectId) {
export function getDraftDialogList(data) {
return request({
url: '/cbProjectRecord/getDraftDialogList',
method: 'get',
params:data
});
}
......
......@@ -70,15 +70,15 @@
<div style="display:flex;align-items:center">
<el-tooltip placement="top" v-if="scope.row.projectText.length>20">
<div class="renling">
<router-link v-if="scope.row.isGetProjectDetail" :to="`/projectCostLedger/detail?projectId=${scope.row.id}`" tag="a"
<router-link v-if="scope.row.projectFileStatus==2" :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>
<span v-else v-html="scope.row.projectName||'--'"></span>
</div>
</el-tooltip>
<div class="renling" v-else>
<router-link v-if="scope.row.isGetProjectDetail" :to="`/projectCostLedger/detail?projectId=${scope.row.id}`" tag="a"
<router-link v-if="scope.row.projectFileStatus==2" :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>
<span v-else v-html="scope.row.projectName||'--'"></span>
</div>
</div>
......@@ -156,6 +156,7 @@
</el-dialog>
<!--新增、修改弹窗-->
<el-dialog
:close-on-click-modal="false"
class="pro-news"
:visible.sync="dialogVisible"
width="480px">
......@@ -231,7 +232,7 @@
</el-table-column>
</el-table>
</div>
<div class="pagination clearfix" v-show="total>cgPagesize">
<div class="pagination clearfix" v-show="cgxtotal>cgPagesize">
<el-pagination background :page-size="cgPagesize" :current-page.sync="cgPagenum"
@current-change="getCGXlist" layout="prev, pager, next"
:total="cgxtotal">
......@@ -468,7 +469,7 @@
pageSize:50,
pageNum:1,
}
// this.customerAll()
this.getlist()
},
//添加项目
insertPro(){
......@@ -507,7 +508,7 @@
},
handleCurrentChange(val){
this.formdata.pageNum = val
this.customerAll()
this.getlist()
},
setHeaderRow() {
return "owner-table-list-header";
......
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