Commit b14250ed 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 58a0cdb9 6aa6b3a2
......@@ -166,6 +166,7 @@ tenant:
- sys_push_record
- d_customer
- d_project
- d_project_type
- d_subcontract
- advisory_body
- advisory_body_project
......@@ -184,7 +185,6 @@ tenant:
- d_customer_tax_certificate
- f_supplier_limited
# MyBatisPlus配置
# https://baomidou.com/config/
mybatis-plus:
......
package com.dsk.cscec.constant;
/**
* 搜索常量信息
* 咨询机构管理搜索常量信息
*
* @author sxk
* @date 2023.12.11
* @time 14:22
*/
public interface QueryConstants {
public interface AdvisoryBodyManageQueryConstants {
/**
* 筛选数据一级公司名称
*/
......
package com.dsk.cscec.constant;
/**
* 涉诉限用禁用管理搜索常量信息
*
* @author sxk
* @date 2023.12.11
* @time 14:22
*/
public interface SupplierLimitedManageQueryConstants {
/**
* 涉诉限用禁用数据区分字段
*/
String LIMITED_DATA_TYPE = "限用禁用";
/**
* 解除限用禁用数据区分字段
*/
String UNLIMITED_DATA_TYPE = "解除限禁";
}
......@@ -78,12 +78,18 @@ public class AdvisoryBodyManageController extends BaseController {
return R.ok(advisoryBodyService.checkAdvisoryBodyExist(advisoryBodyName));
}
//todo:咨询机构合作明细,项目承接类型下拉列表接口
/**
* 新增咨询机构
* 编辑咨询机构结算信息
* 包含:
* 新增咨询机构(advisory_body表)
* 新增/更新咨询机构与项目关联信息(advisory_body_project表)
*/
@PostMapping("/addAdvisoryBody")
public R<Void> addAdvisoryBody(@Validated AddAdvisoryBodyBo addAdvisoryBodyBo) {
return toAjax(advisoryBodyService.addAdvisoryBody(addAdvisoryBodyBo));
@PostMapping("/editAdvisoryBody")
public R<Void> editAdvisoryBody(@Validated EditAdvisoryBodyInfoBo editInfoBo) {
System.out.println("👉🏻editInfoBo:"+editInfoBo);
return toAjax(advisoryBodyService.editAdvisoryBody(editInfoBo));
}
/**
......@@ -94,6 +100,7 @@ public class AdvisoryBodyManageController extends BaseController {
return R.ok(advisoryBodyCustomFormService.getById(projectKey));
}
//todo:自定义表单表格只存一条json数据改造
/**
* 新增咨询机构自定义表单
*/
......
package com.dsk.cscec.controller;
import com.dsk.common.core.domain.R;
import com.dsk.cscec.domain.DProjectType;
import com.dsk.cscec.domain.TreeSelect;
import com.dsk.cscec.service.DProjectTypeService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
* 维表:工程类型,源于IPM(DProjectType)表控制层
......@@ -13,7 +18,7 @@ import javax.annotation.Resource;
* @since 2024-01-05 11:45:43
*/
@RestController
@RequestMapping("dProjectType")
@RequestMapping("/dProjectType")
public class DProjectTypeController {
/**
* 服务对象
......@@ -21,6 +26,24 @@ public class DProjectTypeController {
@Resource
private DProjectTypeService dProjectTypeService;
/**
* 获取所有工程类型
* @param
* @return
*/
@GetMapping("/getAll")
public R<List<TreeSelect>> selectList() {
return R.ok(dProjectTypeService.getList(new DProjectType()));
}
/**
* 根据工程类型id获取子级
* @param projectTypeId
* @return
*/
@GetMapping("/getChildren")
public R<List<DProjectType>> getChildren(String projectTypeId) {
return R.ok(dProjectTypeService.getChildren(projectTypeId));
}
}
package com.dsk.cscec.controller;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.bo.SupplierLimitedSearchBo;
import com.dsk.cscec.domain.bo.SupplierUnlimitedSearchBo;
import com.dsk.cscec.domain.vo.SupplierLimitedSearchVo;
import com.dsk.cscec.domain.vo.SupplierUnlimitedSearchVo;
import com.dsk.cscec.service.FSupplierLimitedService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -21,5 +28,20 @@ public class FSupplierLimitedController {
@Resource
private FSupplierLimitedService fSupplierLimitedService;
/**
* 获取涉诉限用禁用名单
*/
@GetMapping("/getSupplierLimitedList")
public TableDataInfo<SupplierLimitedSearchVo> getSupplierLimitedList(SupplierLimitedSearchBo searchBo, PageQuery pageQuery) {
return fSupplierLimitedService.querySupplierLimitedList(searchBo, pageQuery);
}
/**
* 获取解除限用禁用名单
*/
@GetMapping("/getSupplierUnlimitedList")
public TableDataInfo<SupplierUnlimitedSearchVo> getSupplierUnlimitedList(SupplierUnlimitedSearchBo searchBo, PageQuery pageQuery) {
return fSupplierLimitedService.querySupplierUnlimitedList(searchBo, pageQuery);
}
}
package com.dsk.cscec.domain;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
import java.util.ArrayList;
import java.util.Date;
import java.io.Serializable;
import java.util.List;
/**
* 维表:工程类型,源于IPM(DProjectType)实体类
......@@ -62,4 +65,7 @@ public class DProjectType implements Serializable {
* 数据加载时间
*/
private Date loadTime;
@TableField(exist = false)
private List<DProjectType> children = new ArrayList<DProjectType>();
}
......@@ -43,4 +43,10 @@ public class TreeSelect implements Serializable {
this.children = dept.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
}
public TreeSelect(DProjectType type) {
this.id = type.getProjectTypeId();
this.label = type.getProjectTypeName();
this.children = type.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList());
}
}
......@@ -54,8 +54,14 @@ public class AdvisoryBodyBo extends BaseEntity {
/**
* 项目承接类型
*/
private String isinvestproject;
/**
* 工程基础大类
*/
private String projectType1;
/**
* 工程类别明细
*/
private String projectType2;
}
......@@ -13,7 +13,7 @@ import java.util.Date;
* @time 09:54
*/
@Data
public class AddAdvisoryBodyBo {
public class EditAdvisoryBodyInfoBo {
/**
* 是否为新资讯机构
*/
......@@ -41,6 +41,7 @@ public class AddAdvisoryBodyBo {
private String businessScope;
/**
* 合作时间
* PRD上要求以合作时间作为排序字段,但PM未给出新增合作时间的位置,暂用创建时间作为排序字段
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date cooperatorDate;
......
package com.dsk.cscec.domain.bo;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @author sxk
* @date 2024.01.05
* @time 13:51
*/
@Data
public class SupplierLimitedSearchBo {
/**
* 供应商名称
*/
private String supplierName;
/**
* 是否为局名义被诉案件(是/否)
*/
private String isGroupCase;
/**
* 限用/禁用开始时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date limitedStartTime;
/**
* 限用/禁用结束时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date limitedEndTime;
}
package com.dsk.cscec.domain.bo;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @author sxk
* @date 2024.01.08
* @time 09:07
*/
@Data
public class SupplierUnlimitedSearchBo {
/**
* 解除限用开始时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date unlimitedStartTime;
/**
* 解除限用结束时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date unlimitedEndTime;
/**
* 申请单位
*/
private String applyUnit;
}
package com.dsk.cscec.domain.vo;
import lombok.Data;
import java.util.Date;
/**
* @author sxk
* @date 2024.01.05
* @time 14:14
*/
@Data
public class SupplierLimitedSearchVo {
/**
* 主键id
*/
private String fid;
/**
* 单据编号
*/
private String frecordno;
/**
* 供应商Cid
*/
private Integer supplierCid;
/**
* 供应商名称(分供方名称)
*/
private String fsuppliername;
/**
* 供应商统一社会信用代码
*/
private String funifiedsocialcreditcode;
/**
* 限用情形
*/
private String flimitsituation;
/**
* 禁用情形
*/
private String fdisablesituation;
/**
* 子企业(限用推送单位)
*/
private String fjobunitname;
/**
* 限用/禁用状态
*/
private String fstate;
/**
* 时间戳(限用/禁用开始日期)
*/
private Date fts;
}
package com.dsk.cscec.domain.vo;
import lombok.Data;
import java.util.Date;
/**
* @author sxk
* @date 2024.01.05
* @time 17:47
*/
@Data
public class SupplierUnlimitedSearchVo {
/**
* 主键id
*/
private String fid;
/**
* 单据编号
*/
private String frecordno;
/**
* 供应商Cid
*/
private Integer supplierCid;
/**
* 供应商名称(分供方名称)
*/
private String fsuppliername;
/**
* 供应商统一社会信用代码
*/
private String funifiedsocialcreditcode;
/**
* 解除限用理由
*/
private String frelievereason;
/**
* 子企业(申请单位)
*/
private String fjobunitname;
/**
* 解除前状态(原限用/禁用)
*/
private String fbeforestate;
/**
* 限用日期
*/
private Date flimitdate;
/**
* 时间戳(解除限用/禁用开始日期)
*/
private Date fts;
}
package com.dsk.cscec.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsk.cscec.domain.FSupplierLimited;
import com.dsk.cscec.domain.vo.SupplierLimitedSearchVo;
import com.dsk.cscec.domain.vo.SupplierUnlimitedSearchVo;
import org.apache.ibatis.annotations.Param;
/**
* 供应商限制信息表(FSupplierLimited)表数据库访问层
......@@ -10,7 +17,14 @@ import com.dsk.cscec.domain.FSupplierLimited;
* @since 2024-01-05 11:34:19
*/
public interface FSupplierLimitedMapper extends BaseMapper<FSupplierLimited> {
/**
* 获取涉诉限用禁用名单
*/
Page<SupplierLimitedSearchVo> selectPageSupplierLimitedList(@Param("page") Page<Object> build, @Param(Constants.WRAPPER) Wrapper<FSupplierLimited> wrapper);
/**
* 获取解除限用禁用名单
*/
Page<SupplierUnlimitedSearchVo> selectPageSupplierUnlimitedList(@Param("page") Page<Object> build, @Param(Constants.WRAPPER) QueryWrapper<FSupplierLimited> wrapper);
}
......@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.AdvisoryBody;
import com.dsk.cscec.domain.bo.AddAdvisoryBodyBo;
import com.dsk.cscec.domain.bo.EditAdvisoryBodyInfoBo;
import com.dsk.cscec.domain.bo.AdvisoryBodySearchBo;
import com.dsk.cscec.domain.vo.AdvisoryBodyExistVo;
import com.dsk.cscec.domain.vo.AdvisoryBodySearchVo;
......@@ -34,12 +34,15 @@ public interface AdvisoryBodyService extends IService<AdvisoryBody> {
AdvisoryBodyExistVo checkAdvisoryBodyExist(String advisoryBodyName);
/**
* 新增咨询机构
* 编辑咨询机构结算信息
* 包含:
* 新增咨询机构(advisory_body表)
* 新增/更新咨询机构与项目关联信息(advisory_body_project表)
*
* @param addAdvisoryBodyBo 新增信息
* @return 添加结果
* @param editInfoBo 编辑信息
* @return 编辑结果
*/
Integer addAdvisoryBody(AddAdvisoryBodyBo addAdvisoryBodyBo);
Integer editAdvisoryBody(EditAdvisoryBodyInfoBo editInfoBo);
/**
* 每小时更新一次咨询机构经营范围
......
......@@ -2,6 +2,9 @@ package com.dsk.cscec.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.cscec.domain.DProjectType;
import com.dsk.cscec.domain.TreeSelect;
import java.util.List;
/**
* 维表:工程类型,源于IPM(DProjectType)表服务接口
......@@ -11,5 +14,13 @@ import com.dsk.cscec.domain.DProjectType;
*/
public interface DProjectTypeService extends IService<DProjectType> {
List<TreeSelect> getList(DProjectType type);
/**
* 根据工程类型id获取下一级
*
* @param projectTypeId
* @return
*/
List<DProjectType> getChildren(String projectTypeId);
}
package com.dsk.cscec.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.FSupplierLimited;
import com.dsk.cscec.domain.bo.SupplierLimitedSearchBo;
import com.dsk.cscec.domain.bo.SupplierUnlimitedSearchBo;
import com.dsk.cscec.domain.vo.SupplierLimitedSearchVo;
import com.dsk.cscec.domain.vo.SupplierUnlimitedSearchVo;
/**
* 供应商限制信息表(FSupplierLimited)表服务接口
......@@ -10,5 +16,21 @@ import com.dsk.cscec.domain.FSupplierLimited;
* @since 2024-01-05 11:34:23
*/
public interface FSupplierLimitedService extends IService<FSupplierLimited> {
/**
* 获取涉诉限用禁用名单
*
* @param searchBo 查询实体
* @param pageQuery 分页对象
* @return 所有数据
*/
TableDataInfo<SupplierLimitedSearchVo> querySupplierLimitedList(SupplierLimitedSearchBo searchBo, PageQuery pageQuery);
/**
* 获取解除限用禁用名单
*
* @param searchBo 查询实体
* @param pageQuery 分页对象
* @return 所有数据
*/
TableDataInfo<SupplierUnlimitedSearchVo> querySupplierUnlimitedList(SupplierUnlimitedSearchBo searchBo, PageQuery pageQuery);
}
......@@ -15,7 +15,7 @@ import com.dsk.common.exception.ServiceException;
import com.dsk.common.utils.StringUtils;
import com.dsk.cscec.domain.AdvisoryBody;
import com.dsk.cscec.domain.AdvisoryBodyProject;
import com.dsk.cscec.domain.bo.AddAdvisoryBodyBo;
import com.dsk.cscec.domain.bo.EditAdvisoryBodyInfoBo;
import com.dsk.cscec.domain.bo.AdvisoryBodySearchBo;
import com.dsk.cscec.domain.vo.AdvisoryBodyExistVo;
import com.dsk.cscec.domain.vo.AdvisoryBodySearchVo;
......@@ -169,26 +169,59 @@ public class AdvisoryBodyServiceImpl extends ServiceImpl<AdvisoryBodyMapper, Adv
}
/**
* 新增咨询机构
* 编辑咨询机构结算信息
* 包含:
* 新增咨询机构(advisory_body表)
* 新增/更新咨询机构与项目关联信息(advisory_body_project表)
*
* @param addAdvisoryBodyBo 新增信息
* @return 添加结果
* @param editInfoBo 编辑信息
* @return 编辑结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Integer addAdvisoryBody(AddAdvisoryBodyBo addAdvisoryBodyBo) {
public Integer editAdvisoryBody(EditAdvisoryBodyInfoBo editInfoBo) {
long advisoryBodyId = IdUtil.getSnowflakeNextId();
;
//如果是新增咨询机构,则需要新增记录到咨询机构表
if (addAdvisoryBodyBo.getIsNewAdvisoryBody()) {
AdvisoryBody newAdvisoryBody = BeanUtil.toBean(addAdvisoryBodyBo, AdvisoryBody.class);
//如果是新增咨询机构,则新增记录到咨询机构表
if (editInfoBo.getIsNewAdvisoryBody()) {
AdvisoryBody newAdvisoryBody = BeanUtil.toBean(editInfoBo, AdvisoryBody.class);
newAdvisoryBody.setAdvisoryBodyId(advisoryBodyId);
//考虑到咨询机构经营范围是列表中的一个查询条件,因此需要单独存入表中
//但考虑到经营范围又来自建设库,进而衍生出数据一致性问题,因此在项目中做了定时任务同步数据
//故无需担心数据一致性问题
baseMapper.insert(newAdvisoryBody);
//校验咨询机构与项目关联表中是否有记录,无则新增,有则修改
return checkAdvisoryBodyProjectInfoAndEdit(editInfoBo, advisoryBodyId);
} else {
//如果不是新增咨询机构,则校验咨询机构与项目关联表中是否有记录,无则新增,有则修改
return checkAdvisoryBodyProjectInfoAndEdit(editInfoBo, advisoryBodyId);
}
}
AdvisoryBodyProject advisoryBodyProject = BeanUtil.toBean(addAdvisoryBodyBo, AdvisoryBodyProject.class);
advisoryBodyProject.setAdvisoryBodyId(advisoryBodyId);
return advisoryBodyProjectMapper.insert(advisoryBodyProject);
/**
* 校验咨询机构与项目关联表中是否有记录,无则新增,有则修改
*/
private Integer checkAdvisoryBodyProjectInfoAndEdit(EditAdvisoryBodyInfoBo editInfoBo, Long advisoryBodyId) {
AdvisoryBodyProject advisoryBodyProject = advisoryBodyProjectMapper.selectById(editInfoBo.getProjectKey());
if (ObjectUtil.isNotNull(advisoryBodyProject)) {
//修改咨询机构与项目关联信息
AdvisoryBodyProject updateAdvisoryBodyProject = BeanUtil.toBean(editInfoBo, AdvisoryBodyProject.class);
updateAdvisoryBodyProject.setProjectKey(editInfoBo.getProjectKey());
if (editInfoBo.getIsNewAdvisoryBody()) {
//新增的咨询机构不会咨询机构ID,需要到咨询机构表中查询
AdvisoryBody advisoryBody = baseMapper.selectOne(new LambdaQueryWrapper<AdvisoryBody>()
.eq(AdvisoryBody::getAdvisoryBodyCid, editInfoBo.getAdvisoryBodyCid()));
updateAdvisoryBodyProject.setAdvisoryBodyId(advisoryBody.getAdvisoryBodyId());
}else {
updateAdvisoryBodyProject.setAdvisoryBodyId(advisoryBodyProject.getAdvisoryBodyId());
}
return advisoryBodyProjectMapper.updateById(updateAdvisoryBodyProject);
} else {
//新增咨询机构与项目关联信息
AdvisoryBodyProject addAdvisoryBodyProject = BeanUtil.toBean(editInfoBo, AdvisoryBodyProject.class);
addAdvisoryBodyProject.setAdvisoryBodyId(advisoryBodyId);
return advisoryBodyProjectMapper.insert(addAdvisoryBodyProject);
}
}
/**
......
......@@ -12,7 +12,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.utils.StringUtils;
import com.dsk.cscec.constant.QueryConstants;
import com.dsk.cscec.constant.AdvisoryBodyManageQueryConstants;
import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.domain.bo.AdvisoryBodyBo;
import com.dsk.cscec.domain.bo.CustomerCooperationBo;
......@@ -98,7 +98,7 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto
Assert.isTrue(false,"参数不能为空");
}
LambdaQueryWrapper<DCustomer> lqw = Wrappers.lambdaQuery();
lqw.eq(DCustomer::getRecommendOrgId,QueryConstants.LEVEL1_COMPANY_ID);
lqw.eq(DCustomer::getRecommendOrgId, AdvisoryBodyManageQueryConstants.LEVEL1_COMPANY_ID);
lqw.eq(ObjectUtil.isNotNull(bo.getCustomerKey()),DCustomer::getCustomerKey,bo.getCustomerKey());
lqw.eq(StringUtil.isNotBlank(bo.getUnifySocialCode()),DCustomer::getUnifySocialCode,bo.getUnifySocialCode());
lqw.eq(StringUtil.isNotBlank(bo.getCustomerName()),DCustomer::getCustomerName,bo.getCustomerName());
......@@ -132,7 +132,7 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto
@Override
public TableDataInfo<AdvisoryBodyVo> queryAdvisoryList(AdvisoryBodyBo bo, PageQuery query) {
bo.setContractOrgId(QueryConstants.LEVEL1_COMPANY_ID);
bo.setContractOrgId(AdvisoryBodyManageQueryConstants.LEVEL1_COMPANY_ID);
Page<AdvisoryBodyVo> page = advisoryBodyMapper.queryListByBo(query.build(),bo);
return TableDataInfo.build(page);
}
......@@ -142,7 +142,7 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto
if(StringUtil.isBlank(bo.getCustomerId()) && StringUtil.isBlank(bo.getCustomerName())){
Assert.isTrue(false,"供应商不能为空");
}
bo.setSignOrgId(QueryConstants.LEVEL1_COMPANY_ID);
bo.setSignOrgId(AdvisoryBodyManageQueryConstants.LEVEL1_COMPANY_ID);
Page<CustomerCooperationVo> page = dSubcontractMapper.selectCooperationList(query.build(),bo);
return TableDataInfo.build(page);
}
......@@ -153,15 +153,15 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto
return new HashMap<>();
}
AdvisoryBodyBo advisoryBodyBo = new AdvisoryBodyBo();
advisoryBodyBo.setContractOrgId(QueryConstants.LEVEL1_COMPANY_ID);
advisoryBodyBo.setContractOrgId(AdvisoryBodyManageQueryConstants.LEVEL1_COMPANY_ID);
advisoryBodyBo.setAdvisoryBodyName(companyName);
LambdaQueryWrapper<DCustomer> lqw = Wrappers.lambdaQuery();
lqw.eq(DCustomer::getRecommendOrgId,QueryConstants.LEVEL1_COMPANY_ID);
lqw.eq(DCustomer::getRecommendOrgId, AdvisoryBodyManageQueryConstants.LEVEL1_COMPANY_ID);
lqw.eq(StringUtil.isNotBlank(companyName), DCustomer::getCustomerName, companyName);
CustomerCooperationBo customerCooperationBo = new CustomerCooperationBo();
customerCooperationBo.setSignOrgId(QueryConstants.LEVEL1_COMPANY_ID);
customerCooperationBo.setSignOrgId(AdvisoryBodyManageQueryConstants.LEVEL1_COMPANY_ID);
customerCooperationBo.setCustomerName(companyName);
Map<String, Object> result = new HashMap<>();
......
package com.dsk.cscec.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.cscec.domain.DProjectType;
import com.dsk.cscec.domain.TreeSelect;
import com.dsk.cscec.mapper.DProjectTypeMapper;
import com.dsk.cscec.service.DProjectTypeService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 维表:工程类型,源于IPM(DProjectType)表服务实现类
......@@ -19,4 +27,85 @@ public class DProjectTypeServiceImpl extends ServiceImpl<DProjectTypeMapper, DPr
@Resource
private DProjectTypeMapper baseMapper;
@Override
public List<TreeSelect> getList(DProjectType bo) {
return buildTree(baseMapper.selectList(buildQueryWrapper(bo))).stream().map(TreeSelect::new).collect(Collectors.toList());
}
@Override
public List<DProjectType> getChildren(String projectTypeId) {
DProjectType bo = new DProjectType();
if (StringUtils.isNotBlank(projectTypeId)) {
bo.setParentId(projectTypeId);
} else {
bo.setLevelNo(1l);
}
return baseMapper.selectList(buildQueryWrapper(bo));
}
private LambdaQueryWrapper<DProjectType> buildQueryWrapper(DProjectType bo) {
LambdaQueryWrapper<DProjectType> lqw = Wrappers.lambdaQuery();
lqw.eq(ObjectUtil.isNotNull(bo.getProjectTypeKey()), DProjectType::getProjectTypeKey, bo.getProjectTypeKey());
// lqw.like(StringUtils.isNotBlank(bo.getProjectTypeName()), DProjectType::getProjectTypeName, bo.getProjectTypeName());
lqw.eq(ObjectUtil.isNotNull(bo.getLevelNo()), DProjectType::getLevelNo, bo.getLevelNo());
lqw.eq(StringUtils.isNotBlank(bo.getProjectTypeId()), DProjectType::getProjectTypeId, bo.getProjectTypeId());
lqw.eq(StringUtils.isNotBlank(bo.getParentId()), DProjectType::getParentId, bo.getParentId());
return lqw;
}
public List<DProjectType> buildTree(List<DProjectType> types) {
List<DProjectType> returnList = new ArrayList<DProjectType>();
List<String> tempList = new ArrayList<String>();
for (DProjectType type : types) {
tempList.add(type.getProjectTypeId());
}
for (DProjectType type : types) {
// 如果是顶级节点, 遍历该父节点的所有子节点
if (!tempList.contains(type.getParentId())) {
recursionFn(types, type);
returnList.add(type);
}
}
if (returnList.isEmpty()) {
returnList = types;
}
return returnList;
}
/**
* 递归列表
*/
private void recursionFn(List<DProjectType> list, DProjectType t) {
// 得到子节点列表
List<DProjectType> childList = getChildList(list, t);
t.setChildren(childList);
for (DProjectType tChild : childList) {
if (hasChild(list, tChild)) {
recursionFn(list, tChild);
}
}
}
/**
* 得到子节点列表
*/
private List<DProjectType> getChildList(List<DProjectType> list, DProjectType t) {
List<DProjectType> tlist = new ArrayList<DProjectType>();
for (DProjectType n : list) {
if (ObjectUtil.isNotNull(n.getParentId()) && n.getParentId().equals(t.getProjectTypeId())) {
tlist.add(n);
}
}
return tlist;
}
/**
* 判断是否有子节点
*/
private boolean hasChild(List<DProjectType> list, DProjectType t) {
return getChildList(list, t).size() > 0;
}
}
package com.dsk.cscec.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.utils.StringUtils;
import com.dsk.cscec.constant.SupplierLimitedManageQueryConstants;
import com.dsk.cscec.domain.FSupplierLimited;
import com.dsk.cscec.domain.bo.SupplierLimitedSearchBo;
import com.dsk.cscec.domain.bo.SupplierUnlimitedSearchBo;
import com.dsk.cscec.domain.vo.SupplierLimitedSearchVo;
import com.dsk.cscec.domain.vo.SupplierUnlimitedSearchVo;
import com.dsk.cscec.mapper.FSupplierLimitedMapper;
import com.dsk.cscec.service.FSupplierLimitedService;
import com.dsk.system.utils.DskOpenApiUtil;
import org.apache.commons.collections4.MapUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 供应商限制信息表(FSupplierLimited)表服务实现类
......@@ -18,5 +35,102 @@ import javax.annotation.Resource;
public class FSupplierLimitedServiceImpl extends ServiceImpl<FSupplierLimitedMapper, FSupplierLimited> implements FSupplierLimitedService {
@Resource
private FSupplierLimitedMapper baseMapper;
@Resource
private DskOpenApiUtil dskOpenApiUtil;
/**
* 获取涉诉限用禁用名单
*
* @param searchBo 查询实体
* @param pageQuery 分页对象
* @return 所有数据
*/
@Override
public TableDataInfo<SupplierLimitedSearchVo> querySupplierLimitedList(SupplierLimitedSearchBo searchBo, PageQuery pageQuery) {
QueryWrapper<FSupplierLimited> wrapper = Wrappers.query();
wrapper
//供应商名称
.like(StringUtils.isNotBlank(searchBo.getSupplierName()), "fsl.fsuppliername", searchBo.getSupplierName())
//是否为局名义被诉案件
.eq(StringUtils.isNotBlank(searchBo.getIsGroupCase()), "fsl.fisgroupcase", searchBo.getIsGroupCase())
//限用/禁用时间
.between(ObjectUtils.isNotNull(searchBo.getLimitedStartTime()) && ObjectUtils.isNotNull(searchBo.getLimitedEndTime()),
"fsl.fts",
searchBo.getLimitedStartTime(),
searchBo.getLimitedEndTime())
//筛选涉诉限用禁用名单数据
.eq("fsl.fdatatype", SupplierLimitedManageQueryConstants.LIMITED_DATA_TYPE)
//根据限用/禁用时间倒序排序
.orderByDesc("fsl.fts");
Page<SupplierLimitedSearchVo> page = baseMapper.selectPageSupplierLimitedList(pageQuery.build(), wrapper);
for (SupplierLimitedSearchVo searchVo : page.getRecords()) {
Map<String, Object> params = new HashMap<>();
String supplierName = searchVo.getFsuppliername();
params.put("keyword", supplierName);
Map jskData = MapUtils.getMap(dskOpenApiUtil.requestBody("/nationzj/enterprice/index", params), "data", null);
//防止没有数据而导致强转错误,所以先判断下total
if (MapUtils.getInteger(jskData, "total", 0) > 0) {
List<Map<String, Object>> data = (List<Map<String, Object>>) jskData.get("list");
for (Map<String, Object> companyData : data) {
//企业名称完全匹配上,则直接返回给前端
String companyName = StringUtils.removeRed(MapUtils.getString(companyData, "name", "NotExist"));
if (supplierName.equals(companyName)) {
searchVo.setSupplierCid(Math.toIntExact(MapUtils.getLong(companyData, "jskEid")));
}
}
//查不到则抛异常
//throw new ServiceException("未查询到该供应商Cid");
}
}
return TableDataInfo.build(page);
}
/**
* 获取解除限用禁用名单
*
* @param searchBo 查询实体
* @param pageQuery 分页对象
* @return 所有数据
*/
@Override
public TableDataInfo<SupplierUnlimitedSearchVo> querySupplierUnlimitedList(SupplierUnlimitedSearchBo searchBo, PageQuery pageQuery) {
QueryWrapper<FSupplierLimited> wrapper = Wrappers.query();
wrapper
//申请单位
.like(StringUtils.isNotBlank(searchBo.getApplyUnit()), "fsl.fjobunitname", searchBo.getApplyUnit())
//解除限用/禁用时间
.between(ObjectUtils.isNotNull(searchBo.getUnlimitedStartTime()) && ObjectUtils.isNotNull(searchBo.getUnlimitedEndTime()),
"fsl.fts",
searchBo.getUnlimitedStartTime(),
searchBo.getUnlimitedEndTime())
//筛选解除限用禁用名单数据
.eq("fsl.fdatatype", SupplierLimitedManageQueryConstants.UNLIMITED_DATA_TYPE)
//根据解除限用/禁用时间倒序排序
.orderByDesc("fsl.fts");
Page<SupplierUnlimitedSearchVo> page = baseMapper.selectPageSupplierUnlimitedList(pageQuery.build(), wrapper);
for (SupplierUnlimitedSearchVo searchVo : page.getRecords()) {
Map<String, Object> params = new HashMap<>();
String supplierName = searchVo.getFsuppliername();
params.put("keyword", supplierName);
Map jskData = MapUtils.getMap(dskOpenApiUtil.requestBody("/nationzj/enterprice/index", params), "data", null);
//防止没有数据而导致强转错误,所以先判断下total
if (MapUtils.getInteger(jskData, "total", 0) > 0) {
List<Map<String, Object>> data = (List<Map<String, Object>>) jskData.get("list");
for (Map<String, Object> companyData : data) {
//企业名称完全匹配上,则直接返回给前端
String companyName = StringUtils.removeRed(MapUtils.getString(companyData, "name", "NotExist"));
if (supplierName.equals(companyName)) {
searchVo.setSupplierCid(Math.toIntExact(MapUtils.getLong(companyData, "jskEid")));
}
}
//查不到则抛异常
//throw new ServiceException("未查询到该供应商Cid");
}
}
return TableDataInfo.build(page);
}
}
......@@ -13,7 +13,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.utils.StringUtils;
import com.dsk.cscec.constant.QueryConstants;
import com.dsk.cscec.constant.AdvisoryBodyManageQueryConstants;
import com.dsk.cscec.domain.AdvisoryBody;
import com.dsk.cscec.domain.AdvisoryBodyProject;
import com.dsk.cscec.domain.DProject;
......@@ -101,9 +101,9 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
//咨询机构的项目数据取中建一局集团第二建筑有限公司和他的下级组织
wrapper
//承包单位ID
.eq("p.contract_org_id", QueryConstants.LEVEL1_COMPANY_ID)
.eq("p.contract_org_id", AdvisoryBodyManageQueryConstants.LEVEL1_COMPANY_ID)
//承包单位主键(字段叫主键,但并不是主键)
.eq("p.contract_org_name", QueryConstants.LEVEL1_COMPANY_NAME)
.eq("p.contract_org_name", AdvisoryBodyManageQueryConstants.LEVEL1_COMPANY_NAME)
//项目名称
.like(StringUtils.isNotBlank(projectSearchBo.getProjectName()), "p.project_name", projectSearchBo.getProjectName())
//根据咨询机构名称查出来对应的项目ID
......
......@@ -80,6 +80,7 @@ public class ExportService {
//回调函数
composeQueryDto.setExportBackUrl(EXPORT_BACK_URL);
composeQueryDto.setExportExeclName(fileName);
log.info(JSONObject.toJSONString(composeQueryDto));
dskOpenApiUtil.requestBody("/operate/export/zjyj/aptitude", BeanUtil.beanToMap(composeQueryDto,false,false));
return AjaxResult.success();
}
......
......@@ -57,6 +57,15 @@
</if>
</trim>
</if>
<if test="bo.isinvestproject != null and bo.isinvestproject != ''">
and dp.isinvestproject = #{bo.isinvestproject}
</if>
<if test="bo.projectType1 != null and bo.projectType1 != ''">
and dp.project_type1 = #{bo.projectType1}
</if>
<if test="bo.projectType2 != null and bo.projectType2 != ''">
and dp.project_type2 = #{bo.projectType2}
</if>
</where>
order by dp.contract_sign_date desc
</select>
......
......@@ -2,6 +2,32 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.cscec.mapper.FSupplierLimitedMapper">
<select id="selectPageSupplierLimitedList" resultType="com.dsk.cscec.domain.vo.SupplierLimitedSearchVo">
select fsl.fid,
fsl.frecordno,
fsl.fsuppliername,
fsl.funifiedsocialcreditcode,
fsl.flimitsituation,
fsl.fdisablesituation,
fsl.fjobunitname,
fsl.fstate,
fsl.fts
from f_supplier_limited fsl
${ew.getCustomSqlSegment}
</select>
<select id="selectPageSupplierUnlimitedList" resultType="com.dsk.cscec.domain.vo.SupplierUnlimitedSearchVo">
select fsl.fid,
fsl.frecordno,
fsl.fsuppliername,
fsl.funifiedsocialcreditcode,
fsl.frelievereason,
fsl.fjobunitname,
fsl.fbeforestate,
fsl.flimitdate,
fsl.fts
from f_supplier_limited fsl
${ew.getCustomSqlSegment}
</select>
</mapper>
......@@ -26,6 +26,16 @@
opacity: 0;
}
.edit-fade-enter-active,
.edit-fade-leave-active {
transition: opacity 0.3s ease-in-out;
}
.edit-fade-leave-to,
.edit-fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
opacity: 0;
}
.list-enter-active,
.list-leave-active {
transition: all 0.5s ease;
......
......@@ -11,7 +11,7 @@
.el-form-item__label {
font-weight: 400;
color: rgba(35, 35, 35, 0.8);
text-align: left;
text-align: right;
font-size: 14px;
line-height: 32px;
padding-right: 0px;
......
......@@ -18,7 +18,7 @@
<transition-group name="fade" tag="div">
<div class="use-header-item" v-for="(item,index) of useColumn" :key="item.uid">
<el-checkbox v-model="item.use" class="use-header-item-label"
@change="flag => checkedChange(index,flag,item)">{{item.label}}</el-checkbox>
@change="flag => checkedChange(index,flag,item,false)">{{item.label}}</el-checkbox>
<img src="@/assets/images/consultingAgencyManagement/use-header-btn.png" alt="" class="use-header-item-drag-icon">
</div>
</transition-group>
......@@ -30,7 +30,7 @@
<div class="not-use-header-title">未选字段</div>
<div class="not-use-header-item" v-for="(item,index) of notUseColumn" :key="item.uid">
<el-checkbox v-model="item.use" class="not-use-header-item-label"
@change="flag => checkedChange(index,flag,item)">{{item.label}}</el-checkbox>
@change="flag => checkedChange(index,flag,item,true)">{{item.label}}</el-checkbox>
</div>
</div>
......@@ -48,6 +48,7 @@
<script>
import vuedraggable from "vuedraggable";
import { v4 } from 'uuid';
import { elementMessageSingleton } from "@/utils";
export default {
name: "dskTableHeaderSettingBar",
components: {
......@@ -128,12 +129,15 @@ export default {
// console.log(this.notUseColumn);
}
},
checkedChange(index, flag, item) {
checkedChange(index, flag, item, isUse) {
// 至少保证一个自适应列存在
const hasOnly = this.checkeOnlySelfAdaptation();
if (!hasOnly && !flag) {
this.$message.warning("列表至少保证一个自适应列存在");
item.use = true;
const { status, onlyColumn } = this.checkeOnlySelfAdaptation();
if (status && onlyColumn.uid == item.uid && !isUse) {
elementMessageSingleton("warning", "列表至少保证一个自适应列存在");
this.useColumn.splice(index, 1, {
...item,
use: true
});
return;
}
// 选中 往use push
......@@ -154,7 +158,14 @@ export default {
const len = _array.length;
// len等于1时仅剩一个自适应列
return len == 1 ? false : true;
let status = false;
// 仅剩1个自适应列是用于判断当前取消的列是否是自适应列
let onlyColumn = null;
if (len == 1) {
onlyColumn = _array[0];
status = true;
}
return { status, onlyColumn };
},
cancel() {
this.$emit("settingClose");
......
......@@ -324,7 +324,7 @@ export default {
/**
* @type {HTMLDivElement}
*/
const inner = document.querySelector(".basic-engineering-information-inner");
const inner = this.$el.querySelector(".basic-engineering-information-inner");
if (inner) {
const td = parseInt((inner.offsetWidth - 140 * 2) / 2);
this.tableKeyWidth = `${parseInt(parseFloat(td / inner.offsetWidth) * 100)}%`;
......
<template>
<div class="consulting-agency-container">
<el-form :model="comProjectDetailInfo" :rules="rules" :inline-message="false" class="basic-engineering-information-inner">
<!-- 基础信息 -->
<div class="project-basic-information">
<div class="info-module-title"><span>基础信息</span></div>
<table>
<colgroup>
<col>
<col :style="{width : tableKeyWidth}">
<col>
<col :style="{width : tableKeyWidth}">
</colgroup>
<tr>
<td class="table-key">咨询机构名称</td>
<td>
<!-- <transition mode="out-in" name="edit-fade"> -->
<div class="normal-value" v-if="!comIsModify">
{{comProjectDetailInfo.advisoryBody && comProjectDetailInfo.advisoryBody.advisoryBodyName ? comProjectDetailInfo.advisoryBody.advisoryBodyName : "-"}}
</div>
<el-form-item label="" v-if="comIsModify">
<el-input v-model="comProjectDetailInfo.advisoryBody.advisoryBodyName" clearable v-focus></el-input>
</el-form-item>
<!-- </transition> -->
</td>
<td class="table-key">法人代表</td>
<td>
{{comProjectDetailInfo.corporatePerson ? comProjectDetailInfo.corporatePerson : "-"}}
</td>
</tr>
<tr>
<!-- <td class="table-key">法人联系电话</td>
<td>
{{comProjectDetailInfo.corporatePerson ? comProjectDetailInfo.corporatePerson : "-"}}
</td> -->
<td class="table-key">注册地址</td>
<td colspan="3">
{{comProjectDetailInfo.regAddress ? comProjectDetailInfo.regAddress : "-"}}
</td>
</tr>
</table>
</div>
<!-- 项目联系人 -->
<div class="project-contact">
<div class="info-module-title"><span>项目联系人</span></div>
<table>
<colgroup>
<col>
<col :style="{width : tableKeyWidth}">
<col>
<col :style="{width : tableKeyWidth}">
</colgroup>
<tr>
<td class="table-key">项目负责人</td>
<td>
{{comProjectDetailInfo.advisoryBodyProject && comProjectDetailInfo.advisoryBodyProject.projectLeader ? comProjectDetailInfo.advisoryBodyProject.projectLeader : "-"}}
</td>
<td class="table-key">项目负责人专业</td>
<td>
{{comProjectDetailInfo.advisoryBodyProject && comProjectDetailInfo.advisoryBodyProject.projectLeaderMajor ? comProjectDetailInfo.advisoryBodyProject.projectLeaderMajor : "-"}}
</td>
</tr>
<tr>
<td class="table-key">联系电话</td>
<td colspan="3">
{{comProjectDetailInfo.advisoryBodyProject && comProjectDetailInfo.advisoryBodyProject.projectLeaderPhone ? comProjectDetailInfo.advisoryBodyProject.projectLeaderPhone : "-"}}
</td>
</tr>
</table>
</div>
<!-- 项目结算信息 -->
<div class="project-settlement-information">
<div class="info-module-title"><span>项目结算信息</span></div>
<table>
<colgroup>
<col>
<col :style="{width : tableKeyWidth}">
<col>
<col :style="{width : tableKeyWidth}">
</colgroup>
<tr>
<td class="table-key">结算开始时间</td>
<td>
{{comProjectDetailInfo.advisoryBodyProject && comProjectDetailInfo.advisoryBodyProject.settleStartTime ? comProjectDetailInfo.advisoryBodyProject.settleStartTime : "-"}}
</td>
<td class="table-key">结算完成时间</td>
<td>
{{comProjectDetailInfo.advisoryBodyProject && comProjectDetailInfo.advisoryBodyProject.settleFinishTime ? comProjectDetailInfo.advisoryBodyProject.settleFinishTime : "-"}}
</td>
</tr>
<tr>
<td class="table-key">是否为终审单位</td>
<td colspan="3">
{{comProjectDetailInfo.advisoryBodyProject && statusCheck(comProjectDetailInfo.advisoryBodyProject.isFinalJudgeUnit) ? statusCheck(comProjectDetailInfo.advisoryBodyProject.isFinalJudgeUnit) : "-"}}
</td>
</tr>
</table>
</div>
</el-form>
</div>
</template>
<script>
export default {
name: "consultingAgency",
props: {
projectDetailInfo: Object
projectDetailInfo: Object,
isModify: {
type: Boolean,
default: false
}
},
directives: {
focus: {
inserted(el) {
el.querySelector(".el-input__inner").focus();
}
}
},
watch: {
projectDetailInfo: {
handler(newValue, oldValue) {
this.comProjectDetailInfo = JSON.parse(JSON.stringify(newValue));
this.oldComProjectDetailInfo = JSON.parse(JSON.stringify(oldValue));
},
deep: true
},
isModify: {
handler(newValue) {
this.comIsModify = newValue;
}
}
},
data() {
return {
comIsModify: this.isModify,
comProjectDetailInfo: JSON.parse(JSON.stringify(this.projectDetailInfo)),
oldComProjectDetailInfo: JSON.parse(JSON.stringify(this.projectDetailInfo)),
rules: {
},
tableKeyWidth: 0
};
},
//可访问data属性
created() {
this.setTableKeyWidth();
},
//计算集
computed: {
......@@ -24,7 +151,33 @@ export default {
},
//方法集
methods: {
statusCheck(status) {
if (status == "0") {
return "是";
}
if (status == "1") {
return "否";
}
return "";
},
async setTableKeyWidth() {
try {
await this.$nextTick();
/**
* @type {HTMLDivElement}
*/
const inner = this.$el.querySelector(".basic-engineering-information-inner");
if (inner) {
const td = parseInt((inner.offsetWidth - 140 * 2) / 2);
this.tableKeyWidth = `${parseInt(parseFloat(td / inner.offsetWidth) * 100)}%`;
}
} catch (error) {
}
},
cancelModify() {
this.comProjectDetailInfo = JSON.parse(JSON.stringify(this.oldComProjectDetailInfo));
}
},
}
</script>
......@@ -38,5 +191,113 @@ export default {
padding: 16px;
box-sizing: border-box;
overflow: auto;
::v-deep .basic-engineering-information-inner {
width: 100%;
.info-module-title {
line-height: 24px;
color: #232323;
font-weight: bold;
font-size: 16px;
margin-bottom: 16px;
display: flex;
align-items: center;
& > span {
display: inline-block;
position: relative;
padding-left: 8px;
box-sizing: border-box;
&::before {
content: "";
position: absolute;
left: 0px;
top: 50%;
transform: translateY(-50%);
background: rgba(35, 35, 35, 0.8);
width: 2px;
height: 14px;
}
}
}
table {
width: 100%;
border-spacing: 0;
border-collapse: collapse;
&,
th,
td {
border: 1px solid #e6eaf1;
box-sizing: border-box;
}
td {
padding: 9px 12px;
line-height: 22px;
color: #232323;
font-size: 12px;
position: relative;
.normal-value {
vertical-align: middle;
line-height: 22px;
}
.el-form-item {
position: absolute;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
margin-bottom: 0px;
z-index: 9;
.el-form-item__content {
height: 100%;
font-size: 12px;
line-height: unset;
.el-input {
height: 100%;
font-size: 12px;
}
.el-input__inner {
height: 40px;
line-height: 40px;
border-radius: unset;
border-color: transparent;
color: #232323;
font-size: 12px;
font-weight: 400;
padding-left: 12px;
outline: unset;
box-sizing: border-box;
&:focus {
border: 1px solid #0081ff;
}
}
}
}
}
.table-key {
background: #f0f3fa;
color: rgba(35, 35, 35, 0.8);
width: 140px;
&.lot {
height: 62px;
}
}
.data-td {
width: calc(100% - 140px);
}
}
.project-contact,
.project-settlement-information {
margin-top: 24px;
}
}
}
</style>
......@@ -17,14 +17,27 @@
<!-- tab切换部分 -->
<div class="project-consulting-agency">
<!-- tab切换栏 -->
<dsk-tab-toggle v-model="currentList" :tabs="toggleTabs"></dsk-tab-toggle>
<div class="project-consulting-tab-container">
<dsk-tab-toggle v-model="currentList" :tabs="toggleTabs"></dsk-tab-toggle>
<!-- 编辑按钮 展示咨询机构结算信息显示 -->
<transition name="fade" appear mode="out-in">
<div class="edit-project-detail-container" v-if="currentList === 'consultingAgency' && !isModify" :key="'edit-project'">
<el-button type="primary" @click="editProjectDetail">编辑信息</el-button>
</div>
<div class="save-project-detail-container" v-if="currentList === 'consultingAgency' && isModify" :key="'save-project'">
<el-button type="primary" @click="editProjectDetail">保存</el-button>
<el-button @click="cancelSave">取消</el-button>
</div>
</transition>
</div>
<!-- tab切换容器 -->
<div class="project-consulting-agency-inner">
<!-- 工程基本信息 -->
<basic-engineering-information v-if="currentList === 'project'" :projectDetailInfo="projectDetailInfo"></basic-engineering-information>
<!-- 咨询机构结算信息 -->
<consulting-agency v-if="currentList === 'consultingAgency'" :projectDetailInfo="projectDetailInfo"></consulting-agency>
<consulting-agency v-if="currentList === 'consultingAgency'" :projectDetailInfo="projectDetailInfo" :isModify="isModify"
ref="consultingAgency"></consulting-agency>
</div>
</div>
......@@ -62,7 +75,9 @@ export default {
],
projectDetailInfo: {},
projectKey: "",
advisoryBodyCid: ""
advisoryBodyCid: "",
// 咨询机构结算信息 修改
isModify: false
};
},
//可访问data属性
......@@ -91,7 +106,17 @@ export default {
} catch (error) {
}
}
},
editProjectDetail() {
this.isModify = true;
},
saveProjectDetail() {
},
cancelSave() {
this.isModify = false;
this.$refs["consultingAgency"].cancelModify();
},
},
}
</script>
......@@ -157,6 +182,45 @@ export default {
height: calc(100% - 110px);
margin-top: 16px;
.project-consulting-tab-container {
position: relative;
.edit-project-detail-container {
position: absolute;
right: 16px;
top: 50%;
transform: translateY(-50%);
& > button {
height: 32px;
line-height: 32px;
padding: 0px 16px;
box-sizing: border-box;
background-color: #0081ff;
border-color: #0081ff;
}
}
.save-project-detail-container {
position: absolute;
right: 16px;
top: 50%;
transform: translateY(-50%);
& > button {
height: 32px;
line-height: 32px;
padding: 0px 16px;
box-sizing: border-box;
&.el-button--primary {
background-color: #0081ff;
border-color: #0081ff;
}
}
}
}
.project-consulting-agency-inner {
width: 100%;
height: calc(100% - 47px);
......
......@@ -480,7 +480,7 @@ export default {
height: auto;
overflow: initial;
box-sizing: border-box;
min-width: 1200px;
/* min-width: 1200px; */
}
}
}
......
<template>
<div class="app-container enterprise_contatiner">
<div class="header">
<div class="title_wrap">
<div class="enterprise_title">
评标助手
</div>
</div>
<el-tabs v-model="activeName" >
<el-tab-pane label="查资质" name="first"></el-tab-pane>
<el-tab-pane label="现行资质标准" name="second"></el-tab-pane>
......@@ -34,13 +39,12 @@ export default {
<style lang="scss" scoped>
.header{
justify-content: space-between;
height: 48px;
background: #FFFFFF;
border-radius: 4px 4px 0 0 ;
border-bottom: 1px solid #EEEEEE;
color: #232323;
position: sticky;
top: 0;
top: -16px;
z-index: 999;
::v-deep .el-tabs{
height: 48px;
......
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