Commit c3b6a8a5 authored by yht15023815643's avatar yht15023815643

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys...

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys into V20231129-中建一局二公司
parents a3e9e3b0 105acf10
...@@ -49,7 +49,7 @@ spring: ...@@ -49,7 +49,7 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver driverClassName: com.mysql.cj.jdbc.Driver
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562 # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题) # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
url: jdbc:mysql://111.204.34.146:63308/cscec_bms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 url: jdbc:mysql://111.204.34.146:63308/cscec_bms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
username: dev username: dev
password: DskSzh!456 password: DskSzh!456
# 从库数据源 # 从库数据源
......
...@@ -49,7 +49,7 @@ spring: ...@@ -49,7 +49,7 @@ spring:
driverClassName: com.mysql.cj.jdbc.Driver driverClassName: com.mysql.cj.jdbc.Driver
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562 # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题) # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
url: jdbc:mysql://111.204.34.146:63308/cscec_bms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 url: jdbc:mysql://111.204.34.146:63308/cscec_bms?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=Asia/Shanghai
username: dev username: dev
password: DskSzh!456 password: DskSzh!456
# 从库数据源 # 从库数据源
......
...@@ -173,6 +173,14 @@ tenant: ...@@ -173,6 +173,14 @@ tenant:
- biz_dict_data - biz_dict_data
- push_monitor_rules - push_monitor_rules
- push_monitor_info - push_monitor_info
- d_customer_business_license
- d_customer_inspection_certificate
- d_customer_org_certificate
- d_customer_other_certificate
- d_customer_performance_certificate
- d_customer_qualification_certificate
- d_customer_safety_certificate
- d_customer_tax_certificate
# MyBatisPlus配置 # MyBatisPlus配置
......
...@@ -46,7 +46,7 @@ public class DCustomerController extends BaseController { ...@@ -46,7 +46,7 @@ public class DCustomerController extends BaseController {
*/ */
@GetMapping("/info/{customerKey}") @GetMapping("/info/{customerKey}")
public R<DCustomer> info(@PathVariable String customerKey) { public R<DCustomer> info(@PathVariable String customerKey) {
return R.ok(baseService.getById(customerKey)); return R.ok(baseService.info(customerKey));
} }
/** /**
......
...@@ -2,9 +2,11 @@ package com.dsk.cscec.domain; ...@@ -2,9 +2,11 @@ package com.dsk.cscec.domain;
import java.util.Date; import java.util.Date;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.dsk.cscec.domain.vo.CertificateVo;
import lombok.Data; import lombok.Data;
/** /**
...@@ -532,19 +534,49 @@ public class DCustomer implements Serializable { ...@@ -532,19 +534,49 @@ public class DCustomer implements Serializable {
*/ */
private Date loadTime; private Date loadTime;
/** /**
* 企业合作数量 *营业执照url
*/ */
@TableField(exist = false) @TableField(exist = false)
private Integer enterpriseCooperationCount; private List<CertificateVo> businessLicenseList;
/** /**
* 项目合作数量 * 组织机构代码证url
*/ */
@TableField(exist = false) @TableField(exist = false)
private Integer projectCooperationCount; private List<CertificateVo> orgCertificateList;
/** /**
* jsk企业id * 税务登记证url
*/ */
@TableField(exist = false) @TableField(exist = false)
private Integer companyId; private List<CertificateVo> taxCertificateList;
/**
* 资质证书url
*/
@TableField(exist = false)
private List<CertificateVo> qualificationCertificateList;
/**
* 安全生产url
*/
@TableField(exist = false)
private List<CertificateVo> safetyCertificateList;
/**
* 增值税一般纳税人资格证明url
*/
@TableField(exist = false)
private List<CertificateVo> ratepayerCertificateList;
/**
* 业绩报告url
*/
@TableField(exist = false)
private List<CertificateVo> performanceCertificateList;
/**
* 考察报告url
*/
@TableField(exist = false)
private List<CertificateVo> inspectionCertificateList;
/**
* 其他url
*/
@TableField(exist = false)
private List<CertificateVo> otherCertificateList;
} }
...@@ -39,6 +39,11 @@ public class AddAdvisoryBodyBo { ...@@ -39,6 +39,11 @@ public class AddAdvisoryBodyBo {
*/ */
@NotBlank(message = "经营范围不能为空") @NotBlank(message = "经营范围不能为空")
private String businessScope; private String businessScope;
/**
* 合作时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date cooperatorDate;
/** /**
* 项目负责人 * 项目负责人
*/ */
......
package com.dsk.cscec.domain.vo;
import lombok.Data;
/**
* @Author lcl
* @Data 2023/12/28 14:13
*/
@Data
public class CertificateVo {
/**
* 文件链接
*/
private String docLink;
/**
* 文件名称
*/
private String docName;
/**
* 记录时间
*/
private String loadTime;
}
package com.dsk.cscec.domain.vo; package com.dsk.cscec.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* 供应商准入情况 * 供应商准入情况
...@@ -31,6 +33,9 @@ public class CustomerApproveVo { ...@@ -31,6 +33,9 @@ public class CustomerApproveVo {
* 注册资金 * 注册资金
*/ */
private Double registerCapital; private Double registerCapital;
/**
* 证件选择
*/
/** /**
* 统一社会信用代码 * 统一社会信用代码
*/ */
...@@ -63,6 +68,9 @@ public class CustomerApproveVo { ...@@ -63,6 +68,9 @@ public class CustomerApproveVo {
* 纳税人税率 * 纳税人税率
*/ */
private String taxRate; private String taxRate;
/**
* 享受优惠政策说明
*/
/** /**
* 法人代表 * 法人代表
*/ */
...@@ -75,6 +83,9 @@ public class CustomerApproveVo { ...@@ -75,6 +83,9 @@ public class CustomerApproveVo {
* 联系电话 * 联系电话
*/ */
private String contactPhone; private String contactPhone;
/**
* 主项资质
*/
/** /**
* 业主性质 * 业主性质
*/ */
...@@ -166,6 +177,42 @@ public class CustomerApproveVo { ...@@ -166,6 +177,42 @@ public class CustomerApproveVo {
* 授权委托书到期时间7 * 授权委托书到期时间7
*/ */
private String expireDate7; private String expireDate7;
/**
*营业执照url
*/
private List<CertificateVo> businessLicenseList;
/**
* 组织机构代码证url
*/
private List<CertificateVo> orgCertificateList;
/**
* 税务登记证url
*/
private List<CertificateVo> taxCertificateList;
/**
* 资质证书url
*/
private List<CertificateVo> qualificationCertificateList;
/**
* 安全生产url
*/
private List<CertificateVo> safetyCertificateList;
/**
* 增值税一般纳税人资格证明url
*/
private List<CertificateVo> ratepayerCertificateList;
/**
* 业绩报告url
*/
private List<CertificateVo> performanceCertificateList;
/**
* 考察报告url
*/
private List<CertificateVo> inspectionCertificateList;
/**
* 其他url
*/
private List<CertificateVo> otherCertificateList;
//审批意见 //审批意见
/** /**
* 是否同意准入/准入情况 * 是否同意准入/准入情况
......
package com.dsk.cscec.domain.vo; package com.dsk.cscec.domain.vo;
import com.dsk.cscec.domain.AdvisoryBody; import com.dsk.cscec.domain.AdvisoryBody;
import com.dsk.cscec.domain.AdvisoryBodyProject;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
...@@ -55,7 +56,12 @@ public class ProjectSearchVo { ...@@ -55,7 +56,12 @@ public class ProjectSearchVo {
/** /**
* 工程类别明细 * 工程类别明细
*/ */
private String projectType; private String projectType2;
/**
* 项目与咨询机构关系
*/
private AdvisoryBodyProject advisoryBodyProject;
/** /**
* 合同金额 * 合同金额
......
...@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsk.cscec.domain.DCustomer; import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.domain.bo.CustomerInfoBo; import com.dsk.cscec.domain.bo.CustomerInfoBo;
import com.dsk.cscec.domain.bo.DCustomerSearchBo; import com.dsk.cscec.domain.bo.DCustomerSearchBo;
import com.dsk.cscec.domain.vo.CertificateVo;
import com.dsk.cscec.domain.vo.CustomerInfoVo; import com.dsk.cscec.domain.vo.CustomerInfoVo;
import com.dsk.cscec.domain.vo.DCustomerListVo; import com.dsk.cscec.domain.vo.DCustomerListVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -31,5 +32,23 @@ public interface DCustomerMapper extends BaseMapper<DCustomer> { ...@@ -31,5 +32,23 @@ public interface DCustomerMapper extends BaseMapper<DCustomer> {
*/ */
Page<CustomerInfoVo> queryListByType(IPage<CustomerInfoBo> build, @Param("bo") CustomerInfoBo bo); Page<CustomerInfoVo> queryListByType(IPage<CustomerInfoBo> build, @Param("bo") CustomerInfoBo bo);
List<CertificateVo> selectBusinessLicense(String customerId);
List<CertificateVo> selectOrgCertificate(String customerId);
List<CertificateVo> selectTaxCertificate(String customerId);
List<CertificateVo> selectQualificationCertificate(String customerId);
List<CertificateVo> selectSafetyCertificate(String customerId);
List<CertificateVo> selectRatepayerCertificate(String customerId);
List<CertificateVo> selectPerformanceCertificate(String customerId);
List<CertificateVo> selectInspectionCertificate(String customerId);
List<CertificateVo> selectOtherCertificate(String customerId);
} }
...@@ -21,5 +21,7 @@ public interface IDCustomerService extends IService<DCustomer> { ...@@ -21,5 +21,7 @@ public interface IDCustomerService extends IService<DCustomer> {
List<DCustomerListVo> exportList(DCustomerSearchBo bo); List<DCustomerListVo> exportList(DCustomerSearchBo bo);
DCustomer info(String customerKey);
} }
package com.dsk.cscec.service.impl; package com.dsk.cscec.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
...@@ -28,9 +29,7 @@ import org.springframework.stereotype.Service; ...@@ -28,9 +29,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
/** /**
* 咨询机构(SysAdvisoryBody)表服务实现类 * 咨询机构(SysAdvisoryBody)表服务实现类
...@@ -59,15 +58,18 @@ public class AdvisoryBodyServiceImpl extends ServiceImpl<AdvisoryBodyMapper, Adv ...@@ -59,15 +58,18 @@ public class AdvisoryBodyServiceImpl extends ServiceImpl<AdvisoryBodyMapper, Adv
//先按照分页要求从咨询机构表中查出分页数据 //先按照分页要求从咨询机构表中查出分页数据
QueryWrapper<AdvisoryBody> wrapper = Wrappers.query(); QueryWrapper<AdvisoryBody> wrapper = Wrappers.query();
wrapper.like(StringUtils.isNotBlank(advisoryBodySearchBo.getAdvisoryBodyName()), "advisory_body_name", advisoryBodySearchBo.getAdvisoryBodyName()) wrapper.like(StringUtils.isNotBlank(advisoryBodySearchBo.getAdvisoryBodyName()), "advisory_body_name", advisoryBodySearchBo.getAdvisoryBodyName())
.between(ObjectUtil.isNotNull(advisoryBodySearchBo.getMinLastCooperateDate()) && ObjectUtil.isNotNull(advisoryBodySearchBo.getMaxLastCooperateDate()),
"create_time",
advisoryBodySearchBo.getMinLastCooperateDate(),
advisoryBodySearchBo.getMaxLastCooperateDate())
.like(StringUtils.isNotBlank(advisoryBodySearchBo.getBusinessScope()), "business_scope", advisoryBodySearchBo.getBusinessScope()); .like(StringUtils.isNotBlank(advisoryBodySearchBo.getBusinessScope()), "business_scope", advisoryBodySearchBo.getBusinessScope());
Page<AdvisoryBodySearchVo> page = baseMapper.selectPageAdvisoryBodyList(pageQuery.build(), wrapper); Page<AdvisoryBodySearchVo> page = baseMapper.selectPageAdvisoryBodyList(pageQuery.build(), wrapper);
Date minLastCooperateDate = advisoryBodySearchBo.getMinLastCooperateDate();
Date maxLastCooperateDate = advisoryBodySearchBo.getMaxLastCooperateDate();
//根据咨询机构cid查询对应的企业信息 //根据咨询机构cid查询对应的企业信息
for (AdvisoryBodySearchVo advisoryBodySearchVo : page.getRecords()) { List<AdvisoryBodySearchVo> advisoryBodySearchVoList = page.getRecords();
Iterator<AdvisoryBodySearchVo> iterator = advisoryBodySearchVoList.iterator();
while (iterator.hasNext()) {
AdvisoryBodySearchVo advisoryBodySearchVo = iterator.next();
EnterpriseInfoHeaderBody infoHeaderBody = new EnterpriseInfoHeaderBody(); EnterpriseInfoHeaderBody infoHeaderBody = new EnterpriseInfoHeaderBody();
//有Cid的才去建设库查数据 //有Cid的才去建设库查数据
if (ObjectUtil.isNotNull(advisoryBodySearchVo.getAdvisoryBodyCid())) { if (ObjectUtil.isNotNull(advisoryBodySearchVo.getAdvisoryBodyCid())) {
...@@ -77,14 +79,30 @@ public class AdvisoryBodyServiceImpl extends ServiceImpl<AdvisoryBodyMapper, Adv ...@@ -77,14 +79,30 @@ public class AdvisoryBodyServiceImpl extends ServiceImpl<AdvisoryBodyMapper, Adv
} }
Map<String, Object> companyMap = dskOpenApiUtil.requestBody("/api/jsk/enterprise/infoHeader", BeanUtil.beanToMap(infoHeaderBody, false, false)); Map<String, Object> companyMap = dskOpenApiUtil.requestBody("/api/jsk/enterprise/infoHeader", BeanUtil.beanToMap(infoHeaderBody, false, false));
Map companyData = MapUtils.getMap(companyMap, "data", null); Map companyData = MapUtils.getMap(companyMap, "data", null);
//最近一次合作时间
//查询最近一次合作时间
List<AdvisoryBodyProject> advisoryBodyProjectList = advisoryBodyProjectMapper.selectList(new LambdaQueryWrapper<AdvisoryBodyProject>() List<AdvisoryBodyProject> advisoryBodyProjectList = advisoryBodyProjectMapper.selectList(new LambdaQueryWrapper<AdvisoryBodyProject>()
.select(AdvisoryBodyProject::getCreateTime) .select(AdvisoryBodyProject::getCreateTime)
.eq(AdvisoryBodyProject::getAdvisoryBodyCid, advisoryBodySearchVo.getAdvisoryBodyCid()) .eq(AdvisoryBodyProject::getAdvisoryBodyCid, advisoryBodySearchVo.getAdvisoryBodyCid())
.orderByDesc(AdvisoryBodyProject::getCreateTime)); .orderByDesc(AdvisoryBodyProject::getCreateTime));
Date lastCooperateDate = null;
if (ObjectUtil.isNotNull(advisoryBodyProjectList) && !advisoryBodyProjectList.isEmpty()) { if (ObjectUtil.isNotNull(advisoryBodyProjectList) && !advisoryBodyProjectList.isEmpty()) {
advisoryBodySearchVo.setLastCooperateTime(advisoryBodyProjectList.get(0).getCreateTime()); //暂时取记录生成作为最近一次合作时间
//TODO:AdvisoryBodyProject表中保留了cooperate_time字段,应当取该字段作为最近一次合作时间,但产品并未给存入这个字段的需求
lastCooperateDate = advisoryBodyProjectList.get(0).getCreateTime();
advisoryBodySearchVo.setLastCooperateTime(lastCooperateDate);
}
//筛选最近一次合作时间
if (ObjectUtil.isNotNull(lastCooperateDate)
&& ObjectUtil.isNotNull(minLastCooperateDate)
&& ObjectUtil.isNotNull(maxLastCooperateDate)) {
if (DateUtil.isExpired(minLastCooperateDate, maxLastCooperateDate, lastCooperateDate)) {
iterator.remove();
continue;
}
} }
//经营范围 //经营范围
advisoryBodySearchVo.setBusinessStatus(MapUtils.getString(companyData, "businessStatus", "")); advisoryBodySearchVo.setBusinessStatus(MapUtils.getString(companyData, "businessStatus", ""));
//法人 //法人
...@@ -104,6 +122,7 @@ public class AdvisoryBodyServiceImpl extends ServiceImpl<AdvisoryBodyMapper, Adv ...@@ -104,6 +122,7 @@ public class AdvisoryBodyServiceImpl extends ServiceImpl<AdvisoryBodyMapper, Adv
advisoryBodySearchVo.setCooperateProjectCount(advisoryBodyProjectMapper.selectCount(new LambdaQueryWrapper<AdvisoryBodyProject>() advisoryBodySearchVo.setCooperateProjectCount(advisoryBodyProjectMapper.selectCount(new LambdaQueryWrapper<AdvisoryBodyProject>()
.eq(AdvisoryBodyProject::getAdvisoryBodyCid, advisoryBodySearchVo.getAdvisoryBodyCid()))); .eq(AdvisoryBodyProject::getAdvisoryBodyCid, advisoryBodySearchVo.getAdvisoryBodyCid())));
} }
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
...@@ -132,7 +151,7 @@ public class AdvisoryBodyServiceImpl extends ServiceImpl<AdvisoryBodyMapper, Adv ...@@ -132,7 +151,7 @@ public class AdvisoryBodyServiceImpl extends ServiceImpl<AdvisoryBodyMapper, Adv
List<Map<String, Object>> data = (List<Map<String, Object>>) jskData.get("list"); List<Map<String, Object>> data = (List<Map<String, Object>>) jskData.get("list");
for (Map<String, Object> companyData : data) { for (Map<String, Object> companyData : data) {
//企业名称完全匹配上,则直接返回给前端 //企业名称完全匹配上,则直接返回给前端
String companyName = StringUtils.removeRed(MapUtils.getString(companyData, "name","NotExist")); String companyName = StringUtils.removeRed(MapUtils.getString(companyData, "name", "NotExist"));
if (advisoryBodyName.equals(companyName)) { if (advisoryBodyName.equals(companyName)) {
AdvisoryBodyExistVo advisoryBodyExistVo = new AdvisoryBodyExistVo(); AdvisoryBodyExistVo advisoryBodyExistVo = new AdvisoryBodyExistVo();
advisoryBodyExistVo.setAdvisoryBodyCid(Math.toIntExact(MapUtils.getLong(companyData, "jskEid"))); advisoryBodyExistVo.setAdvisoryBodyCid(Math.toIntExact(MapUtils.getLong(companyData, "jskEid")));
...@@ -158,7 +177,8 @@ public class AdvisoryBodyServiceImpl extends ServiceImpl<AdvisoryBodyMapper, Adv ...@@ -158,7 +177,8 @@ public class AdvisoryBodyServiceImpl extends ServiceImpl<AdvisoryBodyMapper, Adv
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Integer addAdvisoryBody(AddAdvisoryBodyBo addAdvisoryBodyBo) { public Integer addAdvisoryBody(AddAdvisoryBodyBo addAdvisoryBodyBo) {
long advisoryBodyId = IdUtil.getSnowflakeNextId();; long advisoryBodyId = IdUtil.getSnowflakeNextId();
;
//如果是新增咨询机构,则需要新增记录到咨询机构表 //如果是新增咨询机构,则需要新增记录到咨询机构表
if (addAdvisoryBodyBo.getIsNewAdvisoryBody()) { if (addAdvisoryBodyBo.getIsNewAdvisoryBody()) {
AdvisoryBody newAdvisoryBody = BeanUtil.toBean(addAdvisoryBodyBo, AdvisoryBody.class); AdvisoryBody newAdvisoryBody = BeanUtil.toBean(addAdvisoryBodyBo, AdvisoryBody.class);
......
...@@ -85,7 +85,7 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto ...@@ -85,7 +85,7 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto
item.setCompanyId(companyId); item.setCompanyId(companyId);
} }
}catch (Exception e){ }catch (Exception e){
// log.error("CustomerInfoServiceImpl.queryPageList() error:" + e);
} }
}); });
} }
...@@ -105,6 +105,27 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto ...@@ -105,6 +105,27 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto
lqw.orderByDesc(DCustomer::getApproveDate2); lqw.orderByDesc(DCustomer::getApproveDate2);
lqw.last("limit 1"); lqw.last("limit 1");
DCustomer dCustomer = baseMapper.selectOne(lqw); DCustomer dCustomer = baseMapper.selectOne(lqw);
if(ObjectUtil.isNotEmpty(dCustomer)){
//营业执照url
dCustomer.setBusinessLicenseList(baseMapper.selectBusinessLicense(dCustomer.getCustomerId()));
//组织机构代码证url
dCustomer.setOrgCertificateList(baseMapper.selectOrgCertificate(dCustomer.getCustomerId()));
//税务登记证url
dCustomer.setTaxCertificateList(baseMapper.selectTaxCertificate(dCustomer.getCustomerId()));
//资质证书url
dCustomer.setQualificationCertificateList(baseMapper.selectQualificationCertificate(dCustomer.getCustomerId()));
//安全生产url
dCustomer.setSafetyCertificateList(baseMapper.selectSafetyCertificate(dCustomer.getCustomerId()));
//增值税一般纳税人资格证明url
// dCustomer.setRatepayerCertificateList(baseMapper.selectRatepayerCertificate(dCustomer.getCustomerId()));
//业绩报告url
dCustomer.setPerformanceCertificateList(baseMapper.selectPerformanceCertificate(dCustomer.getCustomerId()));
//考察报告url
dCustomer.setInspectionCertificateList(baseMapper.selectInspectionCertificate(dCustomer.getCustomerId()));
//其他url
dCustomer.setOtherCertificateList(baseMapper.selectOtherCertificate(dCustomer.getCustomerId()));
}
CustomerApproveVo vo = BeanUtil.toBean(dCustomer, CustomerApproveVo.class); CustomerApproveVo vo = BeanUtil.toBean(dCustomer, CustomerApproveVo.class);
return vo; return vo;
} }
......
...@@ -89,6 +89,35 @@ public class DCustomerServiceImpl extends ServiceImpl<DCustomerMapper, DCustomer ...@@ -89,6 +89,35 @@ public class DCustomerServiceImpl extends ServiceImpl<DCustomerMapper, DCustomer
return records; return records;
} }
@Override
public DCustomer info(String customerKey) {
DCustomer customer = baseMapper.selectById(customerKey);
setCertificate(customer);
return customer;
}
private void setCertificate(DCustomer customer) {
if (ObjectUtils.isEmpty(customer)) return;
//营业执照url
customer.setBusinessLicenseList(baseMapper.selectBusinessLicense(customer.getCustomerId()));
//组织机构代码证url
customer.setOrgCertificateList(baseMapper.selectOrgCertificate(customer.getCustomerId()));
//税务登记证url
customer.setTaxCertificateList(baseMapper.selectTaxCertificate(customer.getCustomerId()));
//资质证书url
customer.setQualificationCertificateList(baseMapper.selectQualificationCertificate(customer.getCustomerId()));
//安全生产url
customer.setSafetyCertificateList(baseMapper.selectSafetyCertificate(customer.getCustomerId()));
//增值税一般纳税人资格证明url
// customer.setRatepayerCertificateList(baseMapper.selectRatepayerCertificate(customer.getCustomerId()));
//业绩报告url
customer.setPerformanceCertificateList(baseMapper.selectPerformanceCertificate(customer.getCustomerId()));
//考察报告url
customer.setInspectionCertificateList(baseMapper.selectInspectionCertificate(customer.getCustomerId()));
//其他url
customer.setOtherCertificateList(baseMapper.selectOtherCertificate(customer.getCustomerId()));
}
private void dealWithCustomerClass(DCustomerSearchBo bo) { private void dealWithCustomerClass(DCustomerSearchBo bo) {
if (!ObjectUtils.isEmpty(bo.getCustomerClass())) { if (!ObjectUtils.isEmpty(bo.getCustomerClass())) {
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
......
...@@ -85,6 +85,9 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject> ...@@ -85,6 +85,9 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
//补充咨询机构信息 //补充咨询机构信息
projectSearchVo.setAdvisoryBody(this.getAdvisoryBodyByProjectKey(projectSearchVo.getProjectKey())); projectSearchVo.setAdvisoryBody(this.getAdvisoryBodyByProjectKey(projectSearchVo.getProjectKey()));
//补充项目与咨询机构关联信息
projectSearchVo.setAdvisoryBodyProject(advisoryBodyProjectMapper.selectById(projectSearchVo.getProjectKey()));
//关键字标红 //关键字标红
if (StringUtils.isNotBlank(projectSearchBo.getProjectName())) { if (StringUtils.isNotBlank(projectSearchBo.getProjectName())) {
projectSearchVo.setProjectName(StringUtils.markInRed(projectSearchVo.getProjectName(), projectSearchBo.getProjectName())); projectSearchVo.setProjectName(StringUtils.markInRed(projectSearchVo.getProjectName(), projectSearchBo.getProjectName()));
......
...@@ -2,6 +2,7 @@ package com.dsk.jsk.controller; ...@@ -2,6 +2,7 @@ package com.dsk.jsk.controller;
import com.dsk.common.core.domain.R; import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.jsk.domain.JskCompanyRelationTableV1DetailPageDto;
import com.dsk.jsk.domain.JskCompanyRelationTableV1Dto; import com.dsk.jsk.domain.JskCompanyRelationTableV1Dto;
import com.dsk.jsk.service.CompanyRelationTableV1Service; import com.dsk.jsk.service.CompanyRelationTableV1Service;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
...@@ -46,7 +47,7 @@ public class CompanyRelationTableV1Controller { ...@@ -46,7 +47,7 @@ public class CompanyRelationTableV1Controller {
*@date: 2023/5/18 10:29 *@date: 2023/5/18 10:29
*/ */
@PostMapping("/detailPage") @PostMapping("/detailPage")
public TableDataInfo detailPage(@RequestBody JskCompanyRelationTableV1Dto dto) throws Exception{ public TableDataInfo detailPage(@RequestBody JskCompanyRelationTableV1DetailPageDto dto) throws Exception{
return relationTableV1Service.detailPage(dto); return relationTableV1Service.detailPage(dto);
} }
...@@ -70,7 +71,7 @@ public class CompanyRelationTableV1Controller { ...@@ -70,7 +71,7 @@ public class CompanyRelationTableV1Controller {
*@date: 2023/5/18 10:29 *@date: 2023/5/18 10:29
*/ */
@PostMapping("/statistics") @PostMapping("/statistics")
public R statistics(@RequestBody JskCompanyRelationTableV1Dto dto) throws Exception{ public R statistics(@RequestBody JskCompanyRelationTableV1DetailPageDto dto) throws Exception{
return relationTableV1Service.statistics(dto); return relationTableV1Service.statistics(dto);
} }
......
package com.dsk.jsk.controller;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.jsk.domain.*;
import com.dsk.jsk.domain.bo.*;
import com.dsk.jsk.service.service.EconomicService;
import com.dsk.jsk.util.IpUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
/**
* @ClassName RegionalEconomicDataController
* @Description 区域经济大全
* @Author Dgm
* @Date 2023/5/18 10:09
* @Version 1.0.0
*/
@Slf4j
@RestController
@RequestMapping(value ="/economic")
public class RegionalEconomicDataController {
@Autowired
private EconomicService economicService;
/***
*@Description: 全国经济大全分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/national/nationalPage")
public AjaxResult nationalPage(@RequestBody @Valid OpRegionalEconomicDataV1PageDto dto) {
return economicService.nationalPage(dto);
}
/***
*@Description: 获取年份
*@Param:
*@return: com.dsk.acc.security.common.msg.RestResponse
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/years/list")
public AjaxResult yearsList(@RequestBody OpRegionalEconomicDataYearsListDto dto) {
return economicService.yearsList(dto);
}
/***
*@Description: 全国经济大全详情
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/details")
public AjaxResult details(@RequestBody @Valid OpRegionalEconomicDataDetailsDto detailsDto) {
return economicService.details(detailsDto);
}
/***
*@Description: 获取当前地区
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping(value = "location")
public AjaxResult location(@RequestBody OpRegionalLocalDto vo, HttpServletRequest request){
String ip = IpUtil.getIpAddr(request);
vo.setIp(ip);
return economicService.location(vo);
}
/***
*@Description: 地区经济-统计
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/statistics/regional")
public AjaxResult statisticsRegional(@RequestBody OpRegionalEconomicDataStatisticsRegionalDto dto) {
return economicService.statisticsRegional(dto);
}
/***
*@Description: 地区经济-主要指标列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/regional/list")
public AjaxResult regionalList(@RequestBody OpRegionalEconomicDataRegionalListDto dto) {
return economicService.regionalList(dto);
}
/***
*@Description: 地区经济
*@Param:
*@return: com.dsk.acc.security.common.msg.RestResponse
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/regional/compare")
public AjaxResult regionalCompare(@RequestBody OpRegionalEconomicDataStatisticsRegionalDto dto) {
return economicService.regionalCompare(dto);
}
/***
*@Description: 地区经济-对比
*@Param:
*@return: com.dsk.acc.security.common.msg.RestResponse
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/regional/multipleCompare")
public AjaxResult regionalMultipleCompare(@RequestBody OpRegionalEconomicRegionalCompareDto compareDto) {
return economicService.regionalMultipleCompare(compareDto);
}
}
package com.dsk.jsk.domain;
import lombok.Data;
import java.util.List;
/**
* @ClassName JskCompanyRelationTableV1DetailPageDto
* @Description 查看详情
* @Author Dgm
* @Date 2023/12/11 20:37
* @Version
*/
@Data
public class JskCompanyRelationTableV1DetailPageDto extends BasePage {
/**
* 搜-关键字素
*/
private String keyword;
/**
* 企业类型
*/
private String companyRole;
/**
* 项目类型
*/
private List<String> counterpartCompanyRoles;
/**
* 工程类型
*/
private List<String> projectTypes;
/**
* 咨询机构业务类型
*/
private List<String> businessTypes;
/**
* 公布日期-开始时间
*/
private String beginTime;
/**
* 公布日期-结束时间
*/
private String endTime;
/**
* 本次合作合同金额(万元)-最大金额
*/
private Double maxAmount;
/**
* 本次合作合同金额(万元)-最小金额
*/
private Double minAmount;
/**
* 企业Id
*/
private Integer companyId;
/**
* 企业类型 1:业主 2:施工 3:集团
*/
private Integer companyType;
/**
* 排序 1:金额降序 2:金额升序 3: 时间降序 4: 时间升区5: 数量降序6:数量升序
*/
private Integer sort = 5;
/**
* 集团Id
*/
private String combineId;
/**
* 成员Id(常合作集团成员详情)
*/
private Integer memberId;
}
package com.dsk.jsk.domain;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @ClassName OpRegionalEconomicDataV1Dto
* @Description 区域经济大全-详情
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataDetailsDto {
/**
* id
*/
@NotNull(message = "id 不能为空")
private Integer id;
}
package com.dsk.jsk.domain;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @ClassName OpRegionalEconomicDataV1Dto
* @Description 专项债-项目类别统计
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataRegionalListDto {
/**
* id
*/
@NotNull(message = "id 不能为空")
private Integer id;
/**
* 省Id
*/
@NotNull(message = "provinceId 不能为空")
private Integer provinceId;
/**
* 市Id
*/
private Integer cityId;
/**
* 区Id
*/
private Integer areaId;
}
package com.dsk.jsk.domain;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @ClassName OpRegionalEconomicDataV1Dto
* @Description 地区经济
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataStatisticsRegionalDto {
/**
* id
*/
@NotNull(message = "id 不能为空")
private Integer id;
/**
* 年份
*/
private Integer year;
/**
* 省Id
*/
private Integer provinceId;
/**
* 市Id
*/
private Integer cityId;
/**
* 区Id
*/
private Integer areaId;
}
package com.dsk.jsk.domain;
import lombok.Data;
/**
* @ClassName OpRegionalEconomicDataV1Dto
* @Description 专项债-项目类别统计
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataV1Dto {
/**
* id
*/
private Integer id;
/**
* 年份
*/
private Integer year;
/**
* 省Id
*/
private Integer provinceId;
/**
* 市Id
*/
private Integer cityId;
/**
* 区Id
*/
private Integer areaId;
/**
* 城市类型 1:直辖市
*/
private Integer cityType;
/**
* 城市类型 1:直辖市
*/
private Integer provinceType;
}
package com.dsk.jsk.domain;
import lombok.Data;
import java.util.List;
/**
* @ClassName OpRegionalEconomicDataV1PageDto
* @Description 专项债-项目类别统计
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataV1PageDto extends BasePage {
/**
* 年份
*/
private Integer year;
/**
* 省
*/
private List<Integer> provinceIds;
/**
* 市
*/
private List<Integer> cityIds;
/**
* 区
*/
private List<Integer> areaIds;
/**
* 全国宏观经济:1 / 辖区经济:2 / 地区对比:3
*/
private Integer type;
/**
* 排序字段 默认gdp
*/
private String field = "gdp";
/**
* 排序 (降序desc 升序asc)
*/
private String order = "desc";
}
package com.dsk.jsk.domain;
import lombok.Data;
/**
* @ClassName OpRegionalEconomicDataYearsListDto
* @Description 获取年份
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataYearsListDto {
private Integer year;
}
package com.dsk.jsk.domain;
import cn.hutool.core.util.ObjectUtil;
import java.util.List;
/**
* @ClassName OpRegionalEconomicRegionalCompareDto
* @Description 地区经济-对比
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
public class OpRegionalEconomicRegionalCompareDto {
/**
* 年份
*/
private Integer year;
private List<OpRegionalEconomicDataStatisticsRegionalDto> compareList;
public Integer getYear() {
return year;
}
public void setYear(Integer year) {
this.year = year;
}
public List<OpRegionalEconomicDataStatisticsRegionalDto> getCompareList() {
if (ObjectUtil.isNotEmpty(compareList)) {
for (OpRegionalEconomicDataStatisticsRegionalDto dataStatisticsRegionalDto : compareList) {
dataStatisticsRegionalDto.setYear(year);
}
}
return compareList;
}
public void setCompareList(List<OpRegionalEconomicDataStatisticsRegionalDto> compareList) {
this.compareList = compareList;
}
@Override
public String toString() {
return "OpRegionalEconomicRegionalCompareDto{" +
"year=" + year +
", compareList=" + compareList +
'}';
}
}
...@@ -34,7 +34,7 @@ public class CompanyRelationTableV1Service { ...@@ -34,7 +34,7 @@ public class CompanyRelationTableV1Service {
return dskOpenApiUtil.responsePage(map); return dskOpenApiUtil.responsePage(map);
} }
public TableDataInfo detailPage(JskCompanyRelationTableV1Dto dto) throws Exception { public TableDataInfo detailPage(JskCompanyRelationTableV1DetailPageDto dto) throws Exception {
Map<String, Object> map = null; Map<String, Object> map = null;
if (dto.getCompanyType().equals(3) || dto.getCompanyType().equals(4)) { if (dto.getCompanyType().equals(3) || dto.getCompanyType().equals(4)) {
map = dskOpenApiUtil.requestBody("/operate/consultancy/combineDetailPage", BeanUtil.beanToMap(dto, false, false)); map = dskOpenApiUtil.requestBody("/operate/consultancy/combineDetailPage", BeanUtil.beanToMap(dto, false, false));
...@@ -63,8 +63,13 @@ public class CompanyRelationTableV1Service { ...@@ -63,8 +63,13 @@ public class CompanyRelationTableV1Service {
*@Author: Dgm *@Author: Dgm
*@date: 2023/5/18 10:29 *@date: 2023/5/18 10:29
*/ */
public R statistics(JskCompanyRelationTableV1Dto dto) throws Exception{ public R statistics(JskCompanyRelationTableV1DetailPageDto dto) throws Exception{
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/consultancy/statistics", BeanUtil.beanToMap(dto, false, false)); Map<String, Object> map = null;
if (dto.getCompanyType().equals(3) || dto.getCompanyType().equals(4)) {
map = dskOpenApiUtil.requestBody("/operate/consultancy/combineDetail/statistics", BeanUtil.beanToMap(dto, false, false));
} else {
map = dskOpenApiUtil.requestBody("/operate/consultancy/statistics", BeanUtil.beanToMap(dto, false, false));
}
return BeanUtil.toBean(map, R.class); return BeanUtil.toBean(map, R.class);
} }
......
package com.dsk.jsk.service.service;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.jsk.domain.*;
import com.dsk.jsk.domain.bo.*;
/**
* @ClassName EconomicService
* @Description 经济大全业务层
* @Author Dgm
* @Date 2023/5/18 10:17
* @Version 1.00
*/
public interface EconomicService {
/***
*@Description: 全国经济大全分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult nationalPage(OpRegionalEconomicDataV1PageDto dto);
/***
*@Description: 全国经济大全分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult yearsList(OpRegionalEconomicDataYearsListDto dataYearsListDto);
/***
*@Description: 全国经济大全详情
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult details(OpRegionalEconomicDataDetailsDto detailsDto);
/***
*@Description: 获取当前地区
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult location(OpRegionalLocalDto detailsDto);
/***
*@Description: 地区经济统计
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult statisticsRegional(OpRegionalEconomicDataStatisticsRegionalDto dto);
/***
*@Description: 地区经济-分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult regionalList(OpRegionalEconomicDataRegionalListDto dto);
/***
*@Description: 对比经济
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult regionalCompare(OpRegionalEconomicDataStatisticsRegionalDto dto);
/***
*@Description: 地区经济-对比
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult regionalMultipleCompare (OpRegionalEconomicRegionalCompareDto dto);
}
package com.dsk.jsk.service.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.dsk.common.constant.CacheConstants;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.helper.LoginHelper;
import com.dsk.common.utils.DateUtils;
import com.dsk.jsk.domain.*;
import com.dsk.system.utils.DskOpenApiUtil;
import com.dsk.common.utils.JsonUtils;
import com.dsk.jsk.domain.bo.*;
import com.dsk.jsk.service.service.EconomicService;
import com.dsk.jsk.util.RedisCache;
import org.apache.commons.collections4.MapUtils;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Map;
/**
* @ClassName EconomicServiceImpl
* @Description 经济大全实现
* @Author Dgm
* @Date 2023/5/18 10:23
* @Version
*/
@Service
public class EconomicServiceImpl implements EconomicService {
@Resource
private DskOpenApiUtil dskOpenApiUtil;
@Resource
private RedisCache redisCache;
/**
* 全国宏观经济:1 / 辖区经济:2 / 地区对比:3
*/
private static final Integer TYPE = 1;
/**
* 默认排序
*/
private static final String FIELD = "gdp";
private static final String ORDER = "desc";
@Override
public AjaxResult nationalPage(OpRegionalEconomicDataV1PageDto dto) {
if (ObjectUtil.isEmpty(dto.getYear())) {
dto.setYear(DateUtils.getYear() - 1);
}
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/economic/national/nationalPage", BeanUtil.beanToMap(dto, false, false));
Integer code = MapUtils.getInteger(map, "code", 300);
if (!code.equals(HttpStatus.OK.value())) {
throw new RuntimeException();
}
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult yearsList(OpRegionalEconomicDataYearsListDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/economic/years/list", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult details(OpRegionalEconomicDataDetailsDto detailsDto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/economic/details", BeanUtil.beanToMap(detailsDto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult location(OpRegionalLocalDto detailsDto) {
Long userId = LoginHelper.getUserId();
String redisKey = CacheConstants.PERSONAL_LOCATION + userId;
if (ObjectUtil.isEmpty(detailsDto.getProvinceId()) && ObjectUtil.isEmpty(detailsDto.getCityId()) && ObjectUtil.isEmpty(detailsDto.getAreaId())) {
if (ObjectUtil.isNotEmpty(redisKey)) {
Map<Object, Object> cacheMap = JsonUtils.parseObject(redisCache.getCacheObject(redisKey), Map.class);
if (MapUtils.isNotEmpty(cacheMap)) {
return AjaxResult.success(cacheMap);
}
}
}
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/economic/location", BeanUtil.beanToMap(detailsDto, false, false));
Integer code = MapUtils.getInteger(map, "code", 300);
if (!code.equals(HttpStatus.OK.value())) {
throw new RuntimeException();
}
Map data = MapUtils.getMap(map, "data", null);
if (ObjectUtil.isNotEmpty(detailsDto.getProvinceId()) || ObjectUtil.isNotEmpty(detailsDto.getCityId()) || ObjectUtil.isNotEmpty(detailsDto.getAreaId())) {
redisCache.setCacheObject(redisKey, JsonUtils.toJsonString(data));
}
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult statisticsRegional(OpRegionalEconomicDataStatisticsRegionalDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/economic/statistics/regional", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult regionalList(OpRegionalEconomicDataRegionalListDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/economic/regional/list", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult regionalCompare(OpRegionalEconomicDataStatisticsRegionalDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/economic/regional/compare", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult regionalMultipleCompare(OpRegionalEconomicRegionalCompareDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/economic/regional/multipleCompare", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
}
package com.dsk.search.service; package com.dsk.search.service;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateTime;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
...@@ -8,6 +9,7 @@ import com.dsk.common.constant.Constants; ...@@ -8,6 +9,7 @@ import com.dsk.common.constant.Constants;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.excel.ExcelUtils; import com.dsk.common.excel.ExcelUtils;
import com.dsk.common.exception.ServiceException; import com.dsk.common.exception.ServiceException;
import com.dsk.common.utils.redis.RedisUtils;
import com.dsk.jsk.domain.JskCombineSearchDto; import com.dsk.jsk.domain.JskCombineSearchDto;
import com.dsk.jsk.domain.bo.ComposeQueryDto; import com.dsk.jsk.domain.bo.ComposeQueryDto;
import com.dsk.jsk.service.EnterpriseService; import com.dsk.jsk.service.EnterpriseService;
...@@ -15,6 +17,7 @@ import com.dsk.system.domain.SysUserFileRecord; ...@@ -15,6 +17,7 @@ import com.dsk.system.domain.SysUserFileRecord;
import com.dsk.system.domain.vo.AptitudeVo; import com.dsk.system.domain.vo.AptitudeVo;
import com.dsk.system.service.ISysUserFileRecordService; import com.dsk.system.service.ISysUserFileRecordService;
import com.dsk.system.utils.DskOpenApiUtil; import com.dsk.system.utils.DskOpenApiUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
...@@ -24,6 +27,7 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -24,6 +27,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.Duration;
import java.util.*; import java.util.*;
/** /**
...@@ -32,6 +36,7 @@ import java.util.*; ...@@ -32,6 +36,7 @@ import java.util.*;
* @Date 2023/12/06 16:40 * @Date 2023/12/06 16:40
**/ **/
@Service @Service
@Slf4j
public class ExportService { public class ExportService {
@Autowired @Autowired
...@@ -42,18 +47,22 @@ public class ExportService { ...@@ -42,18 +47,22 @@ public class ExportService {
private String EXPORT_BACK_URL; private String EXPORT_BACK_URL;
public AjaxResult aptitudeFile(MultipartFile file) throws Exception { public AjaxResult aptitudeFile(MultipartFile file) throws Exception {
ComposeQueryDto composeQueryDto = new ComposeQueryDto(); ComposeQueryDto composeQueryDto = new ComposeQueryDto();
//识别Excel内容 //识别Excel内容
List<AptitudeVo> companyNameList = new ExcelUtils<>(AptitudeVo.class).importExcel(file.getInputStream(), 2); List<AptitudeVo> companyNameList = new ExcelUtils<>(AptitudeVo.class).importExcel(file.getInputStream(), 2);
if (companyNameList.isEmpty()) { if (CollectionUtil.isEmpty(companyNameList)) {
throw new ServiceException("表格中不存在待导入数据!"); throw new ServiceException("表格中不存在待查询数据!");
} }
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
for (int i = 0; i < companyNameList.size(); i++) { for (int i = 0; i < companyNameList.size(); i++) {
if (i>499){ if (null==companyNameList.get(i)){
break; return AjaxResult.error("请使用正确的模板");
}
if (i<500){
list.add(companyNameList.get(i).getCompanyName());
} }
list.add(companyNameList.get(i).getCompanyName());
} }
composeQueryDto.setKeyword(String.join(",",list)); composeQueryDto.setKeyword(String.join(",",list));
SimpleDateFormat sdf =new SimpleDateFormat("yyyyMMdd"); SimpleDateFormat sdf =new SimpleDateFormat("yyyyMMdd");
......
...@@ -180,4 +180,31 @@ ...@@ -180,4 +180,31 @@
</if> </if>
order by approve_date2 desc order by approve_date2 desc
</select> </select>
<select id="selectBusinessLicense" resultType="com.dsk.cscec.domain.vo.CertificateVo">
select * from d_customer_business_license where customer_id =#{customerId}
</select>
<select id="selectOrgCertificate" resultType="com.dsk.cscec.domain.vo.CertificateVo">
select * from d_customer_org_certificate where customer_id =#{customerId}
</select>
<select id="selectTaxCertificate" resultType="com.dsk.cscec.domain.vo.CertificateVo">
select * from d_customer_tax_certificate where customer_id =#{customerId}
</select>
<select id="selectQualificationCertificate" resultType="com.dsk.cscec.domain.vo.CertificateVo">
select * from d_customer_qualification_certificate where customer_id =#{customerId}
</select>
<select id="selectSafetyCertificate" resultType="com.dsk.cscec.domain.vo.CertificateVo">
select * from d_customer_safety_certificate where customer_id =#{customerId}
</select>
<select id="selectRatepayerCertificate" resultType="com.dsk.cscec.domain.vo.CertificateVo">
select * from d_customer_business_license where customer_id =#{customerId}
</select>
<select id="selectPerformanceCertificate" resultType="com.dsk.cscec.domain.vo.CertificateVo">
select * from d_customer_performance_certificate where customer_id =#{customerId}
</select>
<select id="selectInspectionCertificate" resultType="com.dsk.cscec.domain.vo.CertificateVo">
select * from d_customer_inspection_certificate where customer_id =#{customerId}
</select>
<select id="selectOtherCertificate" resultType="com.dsk.cscec.domain.vo.CertificateVo">
select * from d_customer_other_certificate where customer_id =#{customerId}
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
p.province_name, p.province_name,
p.isinvestproject, p.isinvestproject,
p.project_type1, p.project_type1,
p.project_type, p.project_type2,
p.contract_orig_value, p.contract_orig_value,
p.owner_name, p.owner_name,
p.contract_org_name, p.contract_org_name,
......
...@@ -152,9 +152,6 @@ ...@@ -152,9 +152,6 @@
border-right: 1px solid #E6E9F0; border-right: 1px solid #E6E9F0;
border-bottom: 1px solid #E6E9F0; border-bottom: 1px solid #E6E9F0;
background: #fff; background: #fff;
&.bg{
background: #F9FCFF;
}
.label { .label {
width: 10%; width: 10%;
height: auto; height: auto;
...@@ -205,6 +202,33 @@ ...@@ -205,6 +202,33 @@
} }
} }
.table-box{
margin-top: 16px;
border: 1px solid #E6E9F0;
width: 100%;
border-top: 0;
thead{
background: #F0F3FA;
}
tr:nth-child(2n+1){
background: #F9FCFF;
}
tr:hover{
background: #dcebff;
}
td{
border-top: 1px solid #E6E9F0;
border-right: 1px solid #E6E9F0;
height: auto;
font-weight: 400;
font-size: 12px;
padding: 12px;
}
.blue{
color: #0081ff;
cursor: pointer;
}
}
} }
.table-supplier .fixed-table .el-table__fixed-header-wrapper{ .table-supplier .fixed-table .el-table__fixed-header-wrapper{
top: -16px !important; top: -16px !important;
......
...@@ -18,16 +18,27 @@ export const subfieldModuleTemplate = { ...@@ -18,16 +18,27 @@ export const subfieldModuleTemplate = {
export const defaultComOptions = [ export const defaultComOptions = [
{ {
comLabel: "单行文本",
// 组件类型 // 组件类型
comType: "el-input", comType: "el-input",
// 组件展示图标 // 组件展示图标
comShowIcon: require("@/assets/images/consultingAgencyManagement/customForm/icon_single_line_text@2x.png"), comShowIcon: require("@/assets/images/consultingAgencyManagement/customForm/icon_single_line_text@2x.png"),
// 验证规则 // 表单属性
rules: {}, formAttribute: {
// 绑定的值 // 验证规则
value: "", rules: {},
// 输入值为空提示 // 是否必填
placeholder: "请输入" required: false,
// 字段名称
fieldName: "",
// 展示label
label: "单行文本",
},
// 组件属性
componentAttribute: {
// 绑定的值
value: "",
// 输入值为空提示
placeholder: "请输入"
}
} }
]; ];
\ No newline at end of file
...@@ -6,13 +6,13 @@ ...@@ -6,13 +6,13 @@
<div class="design-header fields-header">字段组件</div> <div class="design-header fields-header">字段组件</div>
<div class="design-main fields-main"> <div class="design-main fields-main">
<vuedraggable :list="defaultComOptions" :group="{name: 'customComGroup', pull: 'clone', put: false}" class="design-draggable-fields" <vuedraggable :list="defaultComOptions" :group="{name: 'customComGroup', pull: 'clone', put: false}" class="design-draggable-fields"
draggable=".draggable-fields-item" ghostClass="dragClass" :clone="targetComClone" :sort="false" :disabled="!subfieldModuleList.length" draggable=".draggable-fields-item" ghostClass="subfield-origin-dragClass" :clone="targetComClone" :sort="false"
@end="fieldsOnEnd"> :disabled="!subfieldModuleList.length">
<transition-group name="fade" tag="div" class="draggable-fields-list"> <transition-group name="fade" tag="div" class="draggable-fields-list">
<div class="draggable-fields-item" :class="{'has-no-subfield-module' : !subfieldModuleList.length}" <div class="draggable-fields-item" :class="{'has-no-subfield-module' : !subfieldModuleList.length}"
v-for="(item,index) of defaultComOptions" :key="index" @click="fieldsItemClick"> v-for="(item,index) of defaultComOptions" :key="index" @click="fieldsItemClick">
<img :src="item.comShowIcon" alt=""> <img :src="item.comShowIcon" alt="">
<span>{{item.comLabel}}</span> <span>{{item.formAttribute.label}}</span>
</div> </div>
</transition-group> </transition-group>
</vuedraggable> </vuedraggable>
...@@ -22,22 +22,23 @@ ...@@ -22,22 +22,23 @@
<div class="custom-form-design-options"> <div class="custom-form-design-options">
<div class="design-header options-header">表单配置</div> <div class="design-header options-header">表单配置</div>
<div class="design-main options-main"> <div class="design-main options-main">
<el-form class="custom-design-el-form" ref="customDesignFormRef" :rules="{}" @submit.native.prevent> <el-form class="custom-design-el-form" ref="customDesignFormRef" :model="{}" :rules="{}" @submit.native.prevent>
<!-- 最外层dragg容器 拖动模块module .subfield-module-dragg-target-icon --> <!-- 最外层dragg容器 拖动模块module .subfield-module-dragg-target-icon -->
<vuedraggable :list="subfieldModuleList" group="customSubfieldmodule" class="subfield-module-container" <vuedraggable :list="subfieldModuleList" group="customSubfieldmodule" class="subfield-module-container"
draggable=".subfield-module-item-container" handle=".subfield-module-dragg-target-icon" :animation="340"> draggable=".subfield-module-item-container" handle=".subfield-module-dragg-target-icon" :animation="340">
<!-- 添加的分栏模块以及chidren模块 --> <!-- 添加的分栏模块以及chidren模块 -->
<transition-group name="fade" tag="div" class="subfield-module-list"> <transition-group name="fade" tag="div" class="subfield-module-list">
<vuedraggable v-for="(item,index) of subfieldModuleList" draggable=".subfield-item-container" <!-- <div class="subfield-module-draggable-list" v-for="(item,index) of subfieldModuleList" :key="item.uid"> -->
<vuedraggable v-for="(item,index) of subfieldModuleList" :key="item.uid" draggable=".subfield-item-container"
handle=".subfield-module-item-dragg-target-icon" tag="subfield-module" :list="item.children" group="customComGroup" handle=".subfield-module-item-dragg-target-icon" tag="subfield-module" :list="item.children" group="customComGroup"
:component-data="createComponentData(item)" :key="item.uid" :animation="340"> :component-data="createComponentData(item)" :animation="340" ghostClass="subfield-item-dragClass" :sort="true" @change="dataChange">
<subfield-item v-for="(child,index) of item.children" :key="child.uid" :parentUid="item.uid" :childModuleInfo="child" <subfield-item v-for="(child,index) of item.children" :key="child.uid" :activeUid="activeUid" :parentUid="item.uid"
@removeModuleItem="removeModuleItem"></subfield-item> :childModuleInfo="child" @removeModuleItem="removeModuleItem" @activeSubfieldItem="activeSubfieldItem"></subfield-item>
</vuedraggable> </vuedraggable>
<!-- </div> -->
</transition-group> </transition-group>
</vuedraggable> </vuedraggable>
<!-- 添加分栏 --> <!-- 添加分栏 -->
<div class="add-field-bar" @click="addSubfieldModule"> <div class="add-field-bar" @click="addSubfieldModule">
<img src="@/assets/images/consultingAgencyManagement/customForm/icon_add@2x.png" alt=""> <img src="@/assets/images/consultingAgencyManagement/customForm/icon_add@2x.png" alt="">
...@@ -50,7 +51,7 @@ ...@@ -50,7 +51,7 @@
<div class="custom-form-design-field-options"> <div class="custom-form-design-field-options">
<div class="design-header field-options-header">字段设置</div> <div class="design-header field-options-header">字段设置</div>
<div class="design-main field-options-main"> <div class="design-main field-options-main">
<set-field-option :activeFieldData="activeItemData"></set-field-option>
</div> </div>
</div> </div>
</div> </div>
...@@ -73,13 +74,15 @@ ...@@ -73,13 +74,15 @@
<script> <script>
import { defaultComOptions, subfieldModuleTemplate } from "@/utils/generator/custom-design-options"; import { defaultComOptions, subfieldModuleTemplate } from "@/utils/generator/custom-design-options";
import SubfieldItem from "@/views/consultingOrgManagement/components/CustomForm/components/SubfieldItem"; import SubfieldItem from "@/views/consultingOrgManagement/components/CustomForm/components/SubfieldItem";
import SetFieldOption from "@/views/consultingOrgManagement/components/CustomForm/components/SetFieldOption";
import vuedraggable from "vuedraggable"; import vuedraggable from "vuedraggable";
import { v4 } from 'uuid'; import { v4 } from 'uuid';
export default { export default {
name: "customFormDesign", name: "customFormDesign",
components: { components: {
vuedraggable, vuedraggable,
SubfieldItem SubfieldItem,
SetFieldOption
}, },
data() { data() {
return { return {
...@@ -90,7 +93,13 @@ export default { ...@@ -90,7 +93,13 @@ export default {
// 删除分栏提示 // 删除分栏提示
removeSubFiledModuleDialog: false, removeSubFiledModuleDialog: false,
// 要删除的分栏信息 // 要删除的分栏信息
removeSubfieldModule: {} removeSubfieldModule: {},
// 当前选中正在编辑的组件id
activeUid: "",
// 编辑的组件数据
activeItemData: {},
// active moduleId 当前命中的模块id
activeModuleId: ""
}; };
}, },
//可访问data属性 //可访问data属性
...@@ -105,22 +114,32 @@ export default { ...@@ -105,22 +114,32 @@ export default {
methods: { methods: {
// 克隆目标组件 // 克隆目标组件
targetComClone(v) { targetComClone(v) {
console.log("clone", v);
const cloneTarget = JSON.parse(JSON.stringify(v)); const cloneTarget = JSON.parse(JSON.stringify(v));
cloneTarget.uid = v4(); cloneTarget.uid = v4();
console.log(cloneTarget);
return cloneTarget; return cloneTarget;
}, },
// 字段组件结束拖动
fieldsOnEnd(e) {
console.log(e);
console.log(this.subfieldModuleList);
},
// 字段组件点击事件 // 字段组件点击事件
fieldsItemClick() { fieldsItemClick() {
if (!this.subfieldModuleList?.length) { if (!this.subfieldModuleList?.length) {
this.$message.warning("请先添加分栏"); this.$message.warning("请先添加分栏");
} }
}, },
dataChange({ added, removed, moved }) {
if (added) {
this.currentActiveByItemId(added.element);
}
if (moved) {
this.currentActiveByItemId(moved.element);
}
},
// 命中变化的表单元素
currentActiveByItemId(current) {
this.activeUid = current.uid;
this.activeItemData = current;
this.activeModuleId = this.subfieldModuleList.find(item => item?.children?.findIndex(child => child.uid == current.uid) > -1).uid;
console.log(this.activeModuleId);
},
// 添加分栏 // 添加分栏
addSubfieldModule() { addSubfieldModule() {
const _temp = JSON.parse(JSON.stringify(subfieldModuleTemplate)); const _temp = JSON.parse(JSON.stringify(subfieldModuleTemplate));
...@@ -140,36 +159,49 @@ export default { ...@@ -140,36 +159,49 @@ export default {
}, },
editOK(module) { editOK(module) {
},
activeSubfieldItem(itemModule, parentUid) {
this.activeUid = itemModule.uid;
this.activeModuleId = parentUid;
this.activeItemData = itemModule;
}, },
removeModuleItem(itemModule, parentUid) { removeModuleItem(itemModule, parentUid) {
if (itemModule.uid == this.activeUid) this.activeUid = "";
const parentModule = this.subfieldModuleList.find(item => item.uid == parentUid); const parentModule = this.subfieldModuleList.find(item => item.uid == parentUid);
if (parentModule) { if (parentModule) {
// 更新源数据标题
const index = parentModule?.children?.findIndex(item => item.uid == itemModule.uid); const index = parentModule?.children?.findIndex(item => item.uid == itemModule.uid);
if (index > -1) { if (index > -1) {
parentModule?.children?.splice(index, 1); parentModule?.children?.splice(index, 1);
} }
} }
}, },
// 删除分栏
removeModule(module) { removeModule(module) {
this.removeSubfieldModule = module; this.removeSubfieldModule = module;
this.removeSubFiledModuleDialog = true; this.removeSubFiledModuleDialog = true;
const findModule = this.subfieldModuleList.find(item => item.uid == module.uid);
if (findModule) {
// 更新源数据标题
findModule.subfieldModuleName = module.subfieldModuleName;
}
},
removeDialogClose() {
this.removeSubfieldModuleUid = "";
}, },
// 确定删除分栏
removeOk() { removeOk() {
if (this.activeModuleId == this.removeSubfieldModule.uid) {
this.activeModuleId = "";
}
// 查看当前命中的表单元素 是否存在于当前分栏下
if (this.removeSubfieldModule?.children?.length) {
const index = this.removeSubfieldModule.children.findIndex(item => item.uid == this.activeUid);
if (index > -1) {
this.activeUid = "";
this.activeItemData = {};
}
}
const index = this.subfieldModuleList.findIndex(item => item.uid == this.removeSubfieldModule.uid); const index = this.subfieldModuleList.findIndex(item => item.uid == this.removeSubfieldModule.uid);
if (index > -1) { if (index > -1) {
this.subfieldModuleList.splice(index, 1); this.subfieldModuleList.splice(index, 1);
} }
this.removeSubFiledModuleDialog = false; this.removeSubFiledModuleDialog = false;
} },
removeDialogClose() {
this.removeSubfieldModule = {};
},
}, },
} }
</script> </script>
...@@ -184,8 +216,31 @@ export default { ...@@ -184,8 +216,31 @@ export default {
display: flex; display: flex;
min-width: 1140px; min-width: 1140px;
.dragClass { .subfield-origin-dragClass,
border: 1px solid #0081ff; .subfield-item-dragClass {
display: flex;
align-items: center;
background: rgba(0, 129, 255, 0.3);
height: 56px;
padding: 0px 16px;
box-sizing: border-box;
color: rgba(35, 35, 35, 0.8);
font-size: 14px;
font-weight: 400;
.subfield-item-container {
background: rgba(0, 129, 255, 0.3);
}
& > img {
width: 16px;
height: 16px;
margin-right: 16px;
}
}
.subfield-origin-dragClass {
height: auto;
} }
.design-header { .design-header {
...@@ -254,7 +309,7 @@ export default { ...@@ -254,7 +309,7 @@ export default {
padding: 0px 16px; padding: 0px 16px;
box-sizing: border-box; box-sizing: border-box;
margin-top: 12px; margin-top: 12px;
cursor: pointer; cursor: move;
user-select: none; user-select: none;
&:hover { &:hover {
...@@ -302,6 +357,14 @@ export default { ...@@ -302,6 +357,14 @@ export default {
.custom-design-el-form { .custom-design-el-form {
width: 100%; width: 100%;
height: 100%; height: 100%;
/* .subfield-module-draggable-list {
margin-bottom: 12px;
width: 100%;
border: 1px solid #dcdfe6;
box-sizing: border-box;
border-radius: 4px;
} */
} }
} }
} }
......
<template>
<div class="set-field-option-container">
</div>
</template>
<script>
export default {
name: "setFieldOption",
props: {
activeFieldData: Object
},
watch: {
activeFieldData: {
handler(newValue) {
this.comActiveFieldData = newValue;
}
}
},
data() {
return {
comActiveFieldData: this.activeFieldData
};
},
//可访问data属性
created() {
},
//计算集
computed: {
},
//方法集
methods: {
},
}
</script>
<style lang="scss" scoped>
.set-field-option-container {
width: 100%;
height: 100%;
}
</style>
<template> <template>
<div class="subfield-item-container"> <div class="subfield-item-container" :class="{'is-active-subfield-item' : activeUid == comChildModuleInfo.uid}" @click="activeSubfieldItem">
<img src="@/assets/images/consultingAgencyManagement/customForm/icon_drag@2x.png" alt="" class="subfield-module-item-dragg-target-icon"> <img src="@/assets/images/consultingAgencyManagement/customForm/icon_drag@2x.png" alt="" class="subfield-module-item-dragg-target-icon">
<el-form-item class="subfield-module-form-item" :label="comChildModuleInfo.comLabel"> <el-form-item class="subfield-module-form-item" :label="comChildModuleInfo.formAttribute.label">
<el-input v-model="comChildModuleInfo.value" :placeholder="comChildModuleInfo.placeholder" clearable></el-input> <component :is="comChildModuleInfo.comType" v-model="comChildModuleInfo.componentAttribute.value"
:placeholder="comChildModuleInfo.componentAttribute.placeholder" clearable></component>
</el-form-item> </el-form-item>
<img src="@/assets/images/consultingAgencyManagement/customForm/icon_delete@2x.png" alt="" class="remove-subfield-item-icon" <img src="@/assets/images/consultingAgencyManagement/customForm/icon_delete@2x.png" alt="" class="remove-subfield-item-icon"
@click.stop="removeModuleItem"> @click.stop="removeModuleItem">
...@@ -13,7 +14,8 @@ export default { ...@@ -13,7 +14,8 @@ export default {
name: "subfieldItem", name: "subfieldItem",
props: { props: {
childModuleInfo: Object, childModuleInfo: Object,
parentUid: String parentUid: String,
activeUid: String
}, },
watch: { watch: {
childModuleInfo: { childModuleInfo: {
...@@ -25,7 +27,7 @@ export default { ...@@ -25,7 +27,7 @@ export default {
}, },
data() { data() {
return { return {
comChildModuleInfo: this.childModuleInfo comChildModuleInfo: this.childModuleInfo,
}; };
}, },
//可访问data属性 //可访问data属性
...@@ -41,6 +43,9 @@ export default { ...@@ -41,6 +43,9 @@ export default {
removeModuleItem() { removeModuleItem() {
this.$emit("removeModuleItem", this.comChildModuleInfo, this.parentUid); this.$emit("removeModuleItem", this.comChildModuleInfo, this.parentUid);
}, },
activeSubfieldItem() {
this.$emit("activeSubfieldItem", this.comChildModuleInfo, this.parentUid);
}
}, },
} }
</script> </script>
...@@ -54,10 +59,14 @@ export default { ...@@ -54,10 +59,14 @@ export default {
align-items: center; align-items: center;
background: #dcebff; background: #dcebff;
&.is-active-subfield-item {
border: 1px solid #0081ff;
}
.subfield-module-item-dragg-target-icon { .subfield-module-item-dragg-target-icon {
width: 14px; width: 14px;
height: 14px; height: 14px;
cursor: pointer; cursor: move;
} }
::v-deep .subfield-module-form-item { ::v-deep .subfield-module-form-item {
......
...@@ -4,7 +4,8 @@ ...@@ -4,7 +4,8 @@
<div class="subfield-module-title"> <div class="subfield-module-title">
<img src="@/assets/images/consultingAgencyManagement/customForm/icon_drag@2x.png" alt="" class="subfield-module-dragg-target-icon"> <img src="@/assets/images/consultingAgencyManagement/customForm/icon_drag@2x.png" alt="" class="subfield-module-dragg-target-icon">
<el-form-item v-if="comModuleInfo.edit" class="subfield-module-form-item" :rules="comModuleInfo.subfieldModuleNameRules" prop=""> <el-form-item v-if="comModuleInfo.edit" class="subfield-module-form-item" :rules="comModuleInfo.subfieldModuleNameRules" prop="">
<el-input v-model="comModuleInfo.subfieldModuleName" :placeholder="comModuleInfo.subfieldModulePlaceholder" clearable @keyup.enter.native.stop="editOK"></el-input> <el-input v-model="comModuleInfo.subfieldModuleName" :placeholder="comModuleInfo.subfieldModulePlaceholder" clearable
@keyup.enter.native.stop="editOK"></el-input>
</el-form-item> </el-form-item>
<span v-else>{{comModuleInfo.defaultSubfieldModuleName}}</span> <span v-else>{{comModuleInfo.defaultSubfieldModuleName}}</span>
</div> </div>
...@@ -18,9 +19,7 @@ ...@@ -18,9 +19,7 @@
<img src="@/assets/images/consultingAgencyManagement/customForm/icon_delete@2x.png" alt="" class="title-tool-delete" @click="removeModule"> <img src="@/assets/images/consultingAgencyManagement/customForm/icon_delete@2x.png" alt="" class="title-tool-delete" @click="removeModule">
</div> </div>
</div> </div>
<div class="subfield-module-item-list"> <slot></slot>
<slot></slot>
</div>
</div> </div>
</template> </template>
<script> <script>
...@@ -79,6 +78,7 @@ export default { ...@@ -79,6 +78,7 @@ export default {
border: 1px solid #dcdfe6; border: 1px solid #dcdfe6;
box-sizing: border-box; box-sizing: border-box;
border-radius: 4px; border-radius: 4px;
overflow: hidden;
.subfield-module-header { .subfield-module-header {
display: flex; display: flex;
...@@ -97,7 +97,7 @@ export default { ...@@ -97,7 +97,7 @@ export default {
& > img { & > img {
width: 14px; width: 14px;
height: 14px; height: 14px;
cursor: pointer; cursor: move;
} }
& > span { & > span {
font-size: 14px; font-size: 14px;
......
...@@ -153,8 +153,8 @@ export default { ...@@ -153,8 +153,8 @@ export default {
const _form = queryConditionFiltering(this.form); const _form = queryConditionFiltering(this.form);
// 处理时间 // 处理时间
if (_form?.cooperationTime?.length) { if (_form?.cooperationTime?.length) {
_form.projectStartTime = _form?.cooperationTime[0]; _form.minLastCooperateDate = _form?.cooperationTime[0];
_form.projectEndTime = _form?.cooperationTime[1]; _form.maxLastCooperateDate = _form?.cooperationTime[1];
} }
delete _form.cooperationTime; delete _form.cooperationTime;
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
<!--<img class="img" slot="prefix" src="../assets/images/phone.png"/>--> <!--<img class="img" slot="prefix" src="../assets/images/phone.png"/>-->
<!--</el-input>--> <!--</el-input>-->
<!--</el-form-item>--> <!--</el-form-item>-->
<!--<el-form-item prop="captchaCode" v-if="captchaEnabled">--> <!--<el-form-item prop="captchaCode" v-if="captchaEnabled" class="el-item-with-code">-->
<!--<el-input--> <!--<el-input-->
<!--v-model="dxform.captchaCode"--> <!--v-model="dxform.captchaCode"-->
<!--auto-complete="off"--> <!--auto-complete="off"-->
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
<!--<img :src="codeUrl" @click="getCode" class="login-code-img"/>--> <!--<img :src="codeUrl" @click="getCode" class="login-code-img"/>-->
<!--</div>--> <!--</div>-->
<!--</el-form-item>--> <!--</el-form-item>-->
<!--<el-form-item prop="smsCode">--> <!--<el-form-item prop="smsCode" class="el-item-with-code">-->
<!--<el-input--> <!--<el-input-->
<!--v-model="dxform.smsCode"--> <!--v-model="dxform.smsCode"-->
<!--auto-complete="off"--> <!--auto-complete="off"-->
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
<!--<div @click="isDXlogin = true">快捷登录</div>--> <!--<div @click="isDXlogin = true">快捷登录</div>-->
<!--</div>--> <!--</div>-->
<div class="loginname"><img src="../assets/images/login/ztlogo.png">中建一局集团第二建筑有限公司</div> <div class="loginname"><img src="../assets/images/login/ztlogo.png">中建一局集团第二建筑有限公司</div>
<el-form-item prop="username"> <el-form-item prop="username" >
<el-input <el-input
v-model="loginForm.username" v-model="loginForm.username"
type="text" type="text"
...@@ -94,7 +94,7 @@ ...@@ -94,7 +94,7 @@
<img class="img" slot="prefix" src="../assets/images/password.png"/> <img class="img" slot="prefix" src="../assets/images/password.png"/>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="code" v-if="captchaEnabled"> <el-form-item prop="code" v-if="captchaEnabled" class="el-item-with-code">
<el-input <el-input
v-model="loginForm.code" v-model="loginForm.code"
auto-complete="off" auto-complete="off"
...@@ -136,7 +136,7 @@ ...@@ -136,7 +136,7 @@
<img class="img" slot="prefix" src="../assets/images/phone.png"/> <img class="img" slot="prefix" src="../assets/images/phone.png"/>
</el-input> </el-input>
</el-form-item> </el-form-item>
<el-form-item prop="captchaCode" v-if="captchaEnabled && showcode"> <el-form-item prop="captchaCode" v-if="captchaEnabled && showcode" class="el-item-with-code">
<el-input <el-input
v-model="dxform.captchaCode" v-model="dxform.captchaCode"
@focus="getCode" @focus="getCode"
...@@ -150,7 +150,7 @@ ...@@ -150,7 +150,7 @@
<img :src="codeUrl" @click="getCode" class="login-code-img"/> <img :src="codeUrl" @click="getCode" class="login-code-img"/>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item prop="smsCode"> <el-form-item prop="smsCode" class="el-item-with-code">
<el-input <el-input
v-model="dxform.smsCode" v-model="dxform.smsCode"
auto-complete="off" auto-complete="off"
...@@ -697,4 +697,59 @@ ...@@ -697,4 +697,59 @@
background: #566380; background: #566380;
} }
} }
@media screen and (max-width : 750px){
.left {
display: none;
}
.login-form {
width: 90%;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
margin-top: 0px;
box-sizing: border-box;
box-shadow: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04);
.el-input {
width: 100%;
.el-input__inner::placeholder {
font-size: 12px !important;
}
}
.el-item-with-code {
.el-form-item__content {
display: flex;
line-height: 1;
.el-input {
float: unset !important;
width: 175px !important;
min-width: 175px;
}
.login-code {
height: 48px;
width: auto;
flex: 1;
float: unset !important;
&>img {
width: 100%;
height: 100%;
}
.hqyzm {
width: 100%;
font-size: 12px;
border: unset;
border-radius: unset;
}
}
}
}
}
}
</style> </style>
...@@ -86,7 +86,7 @@ ...@@ -86,7 +86,7 @@
<el-button type="primary" @click="handleConfirm">确定取消</el-button> <el-button type="primary" @click="handleConfirm">确定取消</el-button>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog :visible.sync="qyVisible" custom-class='dialog-claim dialogAdd' title="添加监控企业" width="480px" :close-on-click-modal="false"> <el-dialog :visible.sync="qyVisible" custom-class='dialog-claim dialogAdd' title="添加监控企业" width="480px" :close-on-click-modal="false" @close="handleCancel1">
<div class="add-content"> <div class="add-content">
<div class="enterprise"> <div class="enterprise">
<div class="label">企业名称</div> <div class="label">企业名称</div>
...@@ -115,7 +115,7 @@ ...@@ -115,7 +115,7 @@
<el-button type="primary" @click="handleAdd">确定</el-button> <el-button type="primary" @click="handleAdd">确定</el-button>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog :visible.sync="pldrVisible" custom-class='dialog-claim' title="批量导入监控企业" width="480px" :close-on-click-modal="false"> <el-dialog :visible.sync="pldrVisible" custom-class='dialog-claim' title="批量导入监控企业" width="480px" :close-on-click-modal="false" @close="handleUploadCancel1">
<div class="upload-content"> <div class="upload-content">
<el-upload <el-upload
class="upload-demo" class="upload-demo"
...@@ -219,7 +219,6 @@ ...@@ -219,7 +219,6 @@
}, },
methods: { methods: {
async querySubmit() { async querySubmit() {
console.log(this.queryParams)
companyPage(this.queryParams).then(res => { companyPage(this.queryParams).then(res => {
console.log(res) console.log(res)
this.isSkeleton = false; this.isSkeleton = false;
...@@ -247,13 +246,18 @@ ...@@ -247,13 +246,18 @@
let data={ let data={
cid:this.cid cid:this.cid
} }
companyAdd(data).then(res => { if(this.cid.length > 0){
this.qyVisible=false; companyAdd(data).then(res => {
this.companyName='' this.qyVisible=false;
this.dataList=[] this.companyName=''
this.$message.success("新增成功"); this.dataList=[]
this.querySubmit() this.$message.success("新增成功");
}) this.querySubmit()
})
}else {
this.$message.warning("请选择要添加的企业");
}
}, },
radioBtn(val){ radioBtn(val){
...@@ -385,7 +389,12 @@ ...@@ -385,7 +389,12 @@
a.remove(); a.remove();
}, },
submitUpload() { submitUpload() {
this.$refs.upload.submit(); if(this.fileList.length > 0){
this.$refs.upload.submit();
}else {
this.$message.warning("请选择要上传的内容");
}
}, },
} }
} }
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="app-container MonitoringDynamics"> <div class="app-container MonitoringDynamics">
<div class="search"> <div class="search">
<div class="search-item" style="line-height: 32px;margin-top: 0;padding-bottom: 8px;"> <div class="search-item" style="line-height: 32px;margin-top: 0;padding-bottom: 8px;">
<div class="label">监控动态</div> <div class="label">监控对象</div>
<el-input class="name" placeholder="请输入监控对象名称" v-model="companyName"> <el-input class="name" placeholder="请输入监控对象名称" v-model="companyName">
<el-button slot="append" @click="handleKeyword()">搜索</el-button> <el-button slot="append" @click="handleKeyword()">搜索</el-button>
</el-input> </el-input>
......
...@@ -30,9 +30,9 @@ ...@@ -30,9 +30,9 @@
<router-link :to="`/monitoring/MonitoringReportDetails/${i.companyOrstaffId}`" tag="a" class="a-link companyName">{{i.companyOrstaffName}}</router-link> <router-link :to="`/monitoring/MonitoringReportDetails/${i.companyOrstaffId}`" tag="a" class="a-link companyName">{{i.companyOrstaffName}}</router-link>
</p> </p>
<p class="card-right-p"> <p class="card-right-p">
<span class="right-label">提示:</span> <!--<span class="right-label">提示:</span>-->
<span class="right-color color1">{{i.promptCount}}</span> <!--<span class="right-color color1">{{i.promptCount}}</span>-->
<span class="right-label">正向:</span> <!--<span class="right-label">正向:</span>-->
<span class="right-color color2">{{i.positiveCount}}</span> <span class="right-color color2">{{i.positiveCount}}</span>
<span class="right-label">低风险:</span> <span class="right-label">低风险:</span>
<span class="right-color color3">{{i.lowRiskCount}}</span> <span class="right-color color3">{{i.lowRiskCount}}</span>
......
...@@ -447,26 +447,16 @@ ...@@ -447,26 +447,16 @@
this.querySubmit() this.querySubmit()
break; break;
case 2: case 2:
this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 3))
this.queryParams.condition.endTime = this.formatDate(endTime)
this.querySubmit()
break;
case 3:
this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 7)) this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 7))
this.queryParams.condition.endTime = this.formatDate(endTime) this.queryParams.condition.endTime = this.formatDate(endTime)
this.querySubmit() this.querySubmit()
break; break;
case 4: case 3:
this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 15))
this.queryParams.condition.endTime = this.formatDate(endTime)
this.querySubmit()
break;
case 5:
this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 30)) this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 30))
this.queryParams.condition.endTime = this.formatDate(endTime) this.queryParams.condition.endTime = this.formatDate(endTime)
this.querySubmit() this.querySubmit()
break; break;
case 6: case 4:
this.date=[] this.date=[]
break; break;
default: default:
......
...@@ -101,78 +101,152 @@ ...@@ -101,78 +101,152 @@
</div> </div>
<div class="acc-title i">上传证书及其他信息</div> <div class="acc-title i">上传证书及其他信息</div>
<skeleton v-if="fbsisSkeleton"></skeleton> <skeleton v-if="fbsisSkeleton"></skeleton>
<div class="main3-box"> <table class="table-box" border="0" cellspacing="0" >
<p> <thead>
<label class="label tab">证书类型</label> <td width="30%">证书类型</td>
<label class="label tab">到期时间</label> <td width="25%">到期时间</td>
<label class="label tab">状态</label> <td width="10%">状态</td>
<label class="label tab">查看</label> <td width="35%">查看</td>
<label class="label tab">操作</label> </thead>
</p> <template v-if="custmerInfo.businessLicenseList&&custmerInfo.businessLicenseList.length>0">
<p> <tr v-for="(item,index) in custmerInfo.businessLicenseList">
<span class="tab">营业执照</span> <td :rowspan="custmerInfo.businessLicenseList.length" v-if="index == 0">营业执照</td>
<span class="tab">{{custmerInfo.expireDate1 || '--'}}</span> <td>{{custmerInfo.expireDate1 || '--'}}</td>
<span class="tab">{{custmerInfo.status1}}</span> <td>{{custmerInfo.status1}}</td>
<span class="tab blue"></span> <td class="blue">
<span class="tab blue">下载</span> <el-link :href="`${item.docLink}`" :underline="false" target="_blank">
</p> <span class="blue"> {{item.docName}}</span>
<p class="bg"> </el-link>
<span class="tab">组织机构代码</span> </td>
<span class="tab">{{custmerInfo.expireDate2 || '--'}}</span> </tr>
<span class="tab">{{custmerInfo.status2}}</span> </template>
<span class="tab blue"></span> <template v-else>
<span class="tab blue">下载</span> <tr>
</p> <td>营业执照</td>
<p> <td>--</td>
<span class="tab">税务登记证</span> <td>--</td>
<span class="tab">{{custmerInfo.expireDate3 || '--'}}</span> <td>--</td>
<span class="tab">{{custmerInfo.status3}}</span> </tr>
<span class="tab blue"></span> </template>
<span class="tab blue">下载</span> <template v-if="custmerInfo.orgCertificateList&&custmerInfo.orgCertificateList.length>0">
</p> <tr v-for="(item,index) in custmerInfo.orgCertificateList">
<p class="bg"> <td :rowspan="custmerInfo.orgCertificateList.length" v-if="index == 0">组织机构代码</td>
<span class="tab">资质证书</span> <td>{{custmerInfo.expireDate2 || '--'}}</td>
<span class="tab">{{custmerInfo.expireDate4 || '--'}}</span> <td>{{custmerInfo.status2}}</td>
<span class="tab">{{custmerInfo.status4}}</span> <td class="blue">
<span class="tab blue"></span> <el-link :href="`${item.docLink}`" :underline="false" target="_blank">
<span class="tab blue">下载</span> <span class="blue"> {{item.docName}}</span>
</p> </el-link>
<p> </td>
<span class="tab">安全生产</span> </tr>
<span class="tab">{{custmerInfo.expireDate5 || '--'}}</span> </template>
<span class="tab">{{custmerInfo.status5}}</span> <template v-else>
<span class="tab blue"></span> <tr>
<span class="tab blue">下载</span> <td>组织机构代码</td>
</p> <td>--</td>
<p class="bg"> <td>--</td>
<span class="tab">增值税一般纳税人资格证明</span> <td>--</td>
<span class="tab">--</span> </tr>
<span class="tab">--</span> </template>
<span class="tab">--</span> <template v-if="custmerInfo.taxCertificateList&&custmerInfo.taxCertificateList.length>0">
<span class="tab">--</span> <tr v-for="(item,index) in custmerInfo.taxCertificateList">
</p> <td :rowspan="custmerInfo.taxCertificateList.length" v-if="index == 0">税务登记证</td>
<p> <td>{{custmerInfo.expireDate3 || '--'}}</td>
<span class="tab">业绩报告</span> <td>{{custmerInfo.status3}}</td>
<span class="tab">--</span> <td class="blue">
<span class="tab">--</span> <el-link :href="`${item.docLink}`" :underline="false" target="_blank">
<span class="tab">--</span> <span class="blue"> {{item.docName}}</span>
<span class="tab">--</span> </el-link>
</p> </td>
<p class="bg"> </tr>
<span class="tab">考察报告</span> </template>
<span class="tab">--</span> <template v-else>
<span class="tab">--</span> <tr>
<span class="tab">--</span> <td>税务登记证</td>
<span class="tab">--</span> <td>--</td>
</p> <td>--</td>
<p> <td>--</td>
<span class="tab">其他</span> </tr>
<span class="tab">--</span> </template>
<span class="tab">--</span> <template v-if="custmerInfo.qualificationCertificateList&&custmerInfo.qualificationCertificateList.length>0">
<span class="tab">--</span> <tr v-for="(item,index) in custmerInfo.qualificationCertificateList">
<span class="tab">--</span> <td :rowspan="custmerInfo.qualificationCertificateList.length" v-if="index == 0">资质证书</td>
</p> <td>{{custmerInfo.expireDate4 || '--'}}</td>
</div> <td>{{custmerInfo.status4}}</td>
<td class="blue">
<el-link :href="`${item.docLink}`" :underline="false" target="_blank">
<span class="blue"> {{item.docName}}</span>
</el-link>
</td>
</tr>
</template>
<template v-else>
<tr>
<td>资质证书</td>
<td>--</td>
<td>--</td>
<td>--</td>
</tr>
</template>
<template v-if="custmerInfo.safetyCertificateList&&custmerInfo.safetyCertificateList.length>0">
<tr v-for="(item,index) in custmerInfo.safetyCertificateList">
<td :rowspan="custmerInfo.safetyCertificateList.length" v-if="index == 0">安全生产</td>
<td>{{custmerInfo.expireDate5 || '--'}}</td>
<td>{{custmerInfo.status5}}</td>
<td class="blue">
<el-link :href="`${item.docLink}`" :underline="false" target="_blank">
<span class="blue"> {{item.docName}}</span>
</el-link>
</td>
</tr>
</template>
<template v-else>
<tr>
<td>安全生产</td>
<td>--</td>
<td>--</td>
<td>--</td>
</tr>
</template>
<template v-if="custmerInfo.ratepayerCertificateList&&custmerInfo.ratepayerCertificateList.length>0">
<tr v-for="(item,index) in custmerInfo.ratepayerCertificateList">
<td :rowspan="custmerInfo.ratepayerCertificateList.length" v-if="index == 0">增值税一般纳税人资格证明</td>
<td></td>
<td></td>
<td class="blue">
<el-link :href="`${item.docLink}`" :underline="false" target="_blank">
<span class="blue">{{item.docName}}</span>
</el-link>
</td>
</tr>
</template>
<template v-else>
<tr>
<td>增值税一般纳税人资格证明</td>
<td>--</td>
<td>--</td>
<td>--</td>
</tr>
</template>
<tr>
<td>业绩报告</td>
<td>--</td>
<td>--</td>
<td>--</td>
</tr>
<tr>
<td>考察报告</td>
<td>--</td>
<td>--</td>
<td>--</td>
</tr>
<tr>
<td>其他</td>
<td>--</td>
<td>--</td>
<td>--</td>
</tr>
</table>
<div class="acc-title i">项目部意见</div> <div class="acc-title i">项目部意见</div>
<div class="main3-box"> <div class="main3-box">
<p> <p>
......
...@@ -225,7 +225,7 @@ ...@@ -225,7 +225,7 @@
</el-table-column> </el-table-column>
<el-table-column label="分包商等级" min-width="120" :resizable="false"> <el-table-column label="分包商等级" min-width="120" :resizable="false">
<template slot-scope="scope"> <template slot-scope="scope">
<span class="creditLevel" @click="getFBS(scope.row)">{{scope.row.creditLevel||"--"}}</span> <span class="wordprimary" @click="getFBS(scope.row)">{{scope.row.creditLevel||"--"}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="链接" min-width="160" :resizable="false"> <el-table-column label="链接" min-width="160" :resizable="false">
......
...@@ -186,13 +186,14 @@ ...@@ -186,13 +186,14 @@
}) })
}, },
handleClick(item,key){ handleClick(item,key){
if(key === 1){ if(key === 0 || key === 1){
this.status=item.status this.status=item.status
this.handleVisible=true this.handleVisible=true
} }
if(key === 2){ if(key === 2){
this.handleVisible1=true this.handleVisible1=true
} }
console.log(this.status)
this.id=item.id this.id=item.id
}, },
// 开始时间改变 // 开始时间改变
......
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