Commit 95404e5a authored by tianhongyang's avatar tianhongyang

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

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys into V20231129-中建一局二公司
parents 02bce022 3d6a45f8
......@@ -9,6 +9,7 @@ import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil;
import com.dsk.common.annotation.Log;
import com.dsk.common.annotation.RepeatSubmit;
import com.dsk.common.constant.GlobalConstants;
import com.dsk.common.constant.TenantConstants;
import com.dsk.common.core.controller.BaseController;
......@@ -187,6 +188,7 @@ public class SysUserController extends BaseController {
/**
* 新增用户
*/
@RepeatSubmit
@SaCheckPermission("system:user:add")
@Log(title = "用户管理", businessType = BusinessType.INSERT)
@PostMapping
......
package com.dsk.web.schedule;
import com.dsk.common.tenant.helper.TenantHelper;
import com.dsk.cscec.service.AdvisoryBodyService;
import com.dsk.system.service.ISysTenantService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
......@@ -19,9 +20,10 @@ import org.springframework.stereotype.Component;
public class TenantTimerTask {
private final ISysTenantService tenantService;
private final AdvisoryBodyService advisoryBodyService;
/**
* 每6小时扫描并禁用已过期租户账号
* 每10分钟扫描并禁用已过期租户账号
*/
@Scheduled(cron = "0 0/10 * * * ? ")
public void updateExpiredTenantStatus() {
......@@ -29,4 +31,13 @@ public class TenantTimerTask {
TenantHelper.ignore(tenantService::handleExpiredTenant);
}
/**
* 每小时更新一次咨询机构经营范围
*/
@Scheduled(cron = "0 0 * 1/1 * ? ")
public void updateAdvisoryBodyBusinessScope() {
log.info("执行定时更新咨询机构经营范围(1h/次)");
TenantHelper.ignore(advisoryBodyService::updateAdvisoryBodyBusinessScope);
}
}
\ No newline at end of file
......@@ -187,7 +187,7 @@ sms:
territory: ap-guangzhou
dsk:
exportBackUrl: http://47.104.91.229:9099/prod-api/export/backUrl
exportBackUrl: http://111.204.34.146:9099/prod-api/export/backUrl
sa-token:
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
......
......@@ -187,7 +187,7 @@ sms:
territory: ap-guangzhou
dsk:
exportBackUrl: http://47.104.91.229:9099/prod-api/export/backUrl
exportBackUrl: http://111.204.34.146:9099/prod-api/export/backUrl
sa-token:
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
......
......@@ -5,23 +5,19 @@ import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.bo.AdvisoryBodySearchBo;
import com.dsk.cscec.domain.bo.CooperateProjectDetailSearchBo;
import com.dsk.cscec.domain.bo.ProjectDetailBo;
import com.dsk.cscec.domain.bo.ProjectSearchBo;
import com.dsk.cscec.domain.vo.AdvisoryBodySearchVo;
import com.dsk.cscec.domain.vo.CooperateProjectDetailSearchVo;
import com.dsk.cscec.domain.vo.ProjectDetailVo;
import com.dsk.cscec.domain.vo.ProjectSearchVo;
import com.dsk.cscec.domain.bo.*;
import com.dsk.cscec.domain.vo.*;
import com.dsk.cscec.service.AdvisoryBodyProjectService;
import com.dsk.cscec.service.AdvisoryBodyService;
import com.dsk.cscec.service.IDProjectService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.constraints.NotBlank;
/**
* 咨询机构管理控制层
......@@ -65,10 +61,26 @@ public class AdvisoryBodyManageController extends BaseController {
}
/**
* 根据项目主键查询项目详情
* 获取项目详情
*/
@GetMapping("/getProjectDetail")
public R<ProjectDetailVo> getProjectDetail(ProjectDetailBo projectDetailBo) {
return R.ok(baseService.queryProjectDetail(projectDetailBo));
}
/**
* 校验咨询机构是否存在
*/
@GetMapping("/checkAdvisoryBodyExist")
public R<AdvisoryBodyExistVo> checkAdvisoryBodyExist(@NotBlank(message = "咨询机构名称不能为空") String advisoryBodyName) {
return R.ok(advisoryBodyService.checkAdvisoryBodyExist(advisoryBodyName));
}
/**
* 新增咨询机构
*/
@PostMapping("/addAdvisoryBody")
public R<Void> addAdvisoryBody(AddAdvisoryBodyBo addAdvisoryBodyBo) {
return toAjax(advisoryBodyService.addAdvisoryBody(addAdvisoryBodyBo));
}
}
\ No newline at end of file
package com.dsk.cscec.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.dsk.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Date;
/**
* 咨询机构(SysAdvisoryBody)表实体类
......@@ -14,10 +15,11 @@ import java.util.Date;
* @author sxk
* @since 2023-12-12 10:12:06
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AdvisoryBody implements Serializable {
public class AdvisoryBody extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
......@@ -38,24 +40,5 @@ public class AdvisoryBody implements Serializable {
* 经营范围
*/
private String businessScope;
/**
* 创建者
*/
private String createBy;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新者
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
}
package com.dsk.cscec.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
......@@ -11,8 +13,9 @@ import java.util.Date;
* @date 2023.12.15
* @time 15:58
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AdvisoryBodyProject implements Serializable {
public class AdvisoryBodyProject extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
......@@ -61,20 +64,4 @@ public class AdvisoryBodyProject implements Serializable {
* 是否为终审单位(0代表是 1代表否)
*/
private String isFinalJudgeUnit;
/**
* 创建者
*/
private String createBy;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新者
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
}
package com.dsk.cscec.domain;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
......@@ -11,9 +13,10 @@ import java.util.Date;
* @author sxk
* @since 2023-12-10 15:34:49
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class DProject implements Serializable {
private static final long serialVersionUID = -39953154592938442L;
public class DProject extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 项目主键
......
package com.dsk.cscec.domain.bo;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
* @author sxk
* @date 2023.12.19
* @time 09:54
*/
@Data
public class AddAdvisoryBodyBo {
/**
* 是否为新资讯机构
*/
@NotNull(message = "是否为新咨询机构不能为空")
private Boolean isNewAdvisoryBody;
/**
* 项目主键
*/
@NotNull(message = "项目主键不能为空")
private Long projectKey;
/**
* 咨询机构cid(用于查询建设库数据)
*/
@NotNull(message = "咨询机构cid不能为空")
private Integer advisoryBodyCid;
/**
* 咨询机构名称
*/
@NotBlank(message = "咨询机构名称不能为空")
private String advisoryBodyName;
/**
* 经营范围
*/
@NotBlank(message = "经营范围不能为空")
private String businessScope;
/**
* 项目负责人
*/
private String projectLeader;
/**
* 项目负责人专业
*/
private String projectLeaderMajor;
/**
* 项目负责人联系电话
*/
private String projectLeaderPhone;
/**
* 结算金额(万元)
*/
private Double settleAmount;
/**
* 结算开始时间
*/
private Date settleStartTime;
/**
* 结算完成时间
*/
private Date settleFinishTime;
/**
* 是否为终审单位(0代表是 1代表否)
*/
private String isFinalJudgeUnit;
}
package com.dsk.cscec.domain.vo;
import com.dsk.cscec.domain.AdvisoryBody;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author sxk
* @date 2023.12.19
* @time 14:20
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AdvisoryBodyExistVo extends AdvisoryBody {
/**
* 是否为新资讯机构
*/
private Boolean isNewAdvisoryBody;
}
......@@ -3,6 +3,7 @@ package com.dsk.cscec.domain.vo;
import com.dsk.cscec.domain.AdvisoryBody;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.util.Date;
......@@ -12,6 +13,7 @@ import java.util.Date;
* @date 2023.12.13
* @time 10:32
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
......
package com.dsk.cscec.domain.vo;
import com.dsk.common.annotation.Excel;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
......@@ -149,6 +150,7 @@ public class DCustomerListVo implements Serializable {
* 准入时间
*/
@Excel(name = "准入时间", width = 10 , dateFormat = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date approveDate2;
/**
* 企业合作数量
......
package com.dsk.cscec.domain.vo;
import com.dsk.cscec.domain.AdvisoryBody;
import com.dsk.cscec.domain.AdvisoryBodyProject;
import com.dsk.cscec.domain.DProject;
import lombok.AllArgsConstructor;
import lombok.Data;
......@@ -22,11 +23,15 @@ public class ProjectDetailVo extends DProject {
*/
private AdvisoryBody advisoryBody;
/**
* 法定代表人
* 法定代表人
*/
private String corporatePerson;
/**
* 注册地址
*/
private String regAddress;
/**
* 项目信息
*/
private AdvisoryBodyProject advisoryBodyProject;
}
......@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsk.cscec.domain.DSubcontract;
import com.dsk.cscec.domain.vo.DCustomerListVo;
import com.dsk.cscec.domain.bo.CustomerCooperationBo;
import com.dsk.cscec.domain.vo.CustomerCooperationVo;
import org.apache.ibatis.annotations.Param;
......@@ -21,7 +22,9 @@ public interface DSubcontractMapper extends BaseMapper<DSubcontract> {
Integer selectProjectCountByCustomerId(String customerId);
/**
DCustomerListVo selectStatisticByCustomerId(String customerId);
/**
* 供应商合作记录
* @param build
* @param bo
......
......@@ -4,7 +4,9 @@ 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.AdvisoryBodySearchBo;
import com.dsk.cscec.domain.vo.AdvisoryBodyExistVo;
import com.dsk.cscec.domain.vo.AdvisoryBodySearchVo;
/**
......@@ -22,5 +24,26 @@ public interface AdvisoryBodyService extends IService<AdvisoryBody> {
* @return 所有数据
*/
TableDataInfo<AdvisoryBodySearchVo> queryAdvisoryBodyList(AdvisoryBodySearchBo advisoryBodySearchBo, PageQuery pageQuery);
/**
* 校验咨询机构是否存在
*
* @param advisoryBodyName 咨询机构名称
* @return 校验结果
*/
AdvisoryBodyExistVo checkAdvisoryBodyExist(String advisoryBodyName);
/**
* 新增咨询机构
*
* @param addAdvisoryBodyBo 新增信息
* @return 添加结果
*/
Integer addAdvisoryBody(AddAdvisoryBodyBo addAdvisoryBodyBo);
/**
* 每小时更新一次咨询机构经营范围
*/
void updateAdvisoryBodyBusinessScope();
}
......@@ -9,10 +9,13 @@ 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.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.AdvisoryBodySearchBo;
import com.dsk.cscec.domain.vo.AdvisoryBodyExistVo;
import com.dsk.cscec.domain.vo.AdvisoryBodySearchVo;
import com.dsk.cscec.mapper.AdvisoryBodyMapper;
import com.dsk.cscec.mapper.AdvisoryBodyProjectMapper;
......@@ -21,8 +24,11 @@ import com.dsk.jsk.domain.EnterpriseInfoHeaderBody;
import com.dsk.system.utils.DskOpenApiUtil;
import org.apache.commons.collections4.MapUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -100,5 +106,83 @@ public class AdvisoryBodyServiceImpl extends ServiceImpl<AdvisoryBodyMapper, Adv
}
return TableDataInfo.build(page);
}
/**
* 校验咨询机构是否存在
*
* @param advisoryBodyName 咨询机构名称
* @return 校验结果
*/
@Override
public AdvisoryBodyExistVo checkAdvisoryBodyExist(String advisoryBodyName) {
//先从咨询机构表查询是否存在,存在则直接返回
AdvisoryBody advisoryBody = baseMapper.selectOne(new LambdaQueryWrapper<AdvisoryBody>()
.eq(AdvisoryBody::getAdvisoryBodyName, advisoryBodyName));
if (ObjectUtil.isNotNull(advisoryBody)) {
//咨询机构表中有记录,则设置为非新咨询机构
AdvisoryBodyExistVo advisoryBodyExistVo = BeanUtil.toBean(advisoryBody, AdvisoryBodyExistVo.class);
advisoryBodyExistVo.setIsNewAdvisoryBody(false);
return advisoryBodyExistVo;
} else {
Map<String, Object> params = new HashMap<>();
params.put("keyword", advisoryBodyName);
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) {
//企业名称完全匹配上,则直接返回给前端
if (advisoryBodyName.equals(companyData.get("name"))) {
AdvisoryBodyExistVo advisoryBodyExistVo = new AdvisoryBodyExistVo();
advisoryBodyExistVo.setAdvisoryBodyCid(Math.toIntExact(MapUtils.getLong(companyData, "jskEid")));
advisoryBodyExistVo.setAdvisoryBodyName(MapUtils.getString(companyData, "name"));
advisoryBodyExistVo.setBusinessScope(MapUtils.getString(companyData, "businessScope"));
advisoryBodyExistVo.setIsNewAdvisoryBody(true);
break;
}
}
//查不到则抛异常
throw new ServiceException("咨询机构不存在");
}
}
return null;
}
/**
* 新增咨询机构
*
* @param addAdvisoryBodyBo 新增信息
* @return 添加结果
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Integer addAdvisoryBody(AddAdvisoryBodyBo addAdvisoryBodyBo) {
//如果是新增咨询机构,则需要新增记录到咨询机构表
if (addAdvisoryBodyBo.getIsNewAdvisoryBody()) {
AdvisoryBody newAdvisoryBody = BeanUtil.toBean(addAdvisoryBodyBo, AdvisoryBody.class);
newAdvisoryBody.setCreateTime(new Date());
baseMapper.insert(newAdvisoryBody);
}
return advisoryBodyProjectMapper.insert(BeanUtil.toBean(addAdvisoryBodyBo, AdvisoryBodyProject.class));
}
/**
* 每小时更新一次咨询机构经营范围
*/
@Override
public void updateAdvisoryBodyBusinessScope() {
EnterpriseInfoHeaderBody infoHeaderBody = new EnterpriseInfoHeaderBody();
for (AdvisoryBody advisoryBody : baseMapper.selectList(null)) {
infoHeaderBody.setCompanyId(Math.toIntExact(advisoryBody.getAdvisoryBodyCid()));
Map<String, Object> companyMap = dskOpenApiUtil.requestBody("/api/jsk/enterprise/infoHeader", BeanUtil.beanToMap(infoHeaderBody, false, false));
Map companyData = MapUtils.getMap(companyMap, "data", null);
String businessScope = MapUtils.getString(companyData, "businessScope", "empty");
if (!"empty".equals(businessScope)) {
advisoryBody.setBusinessScope(businessScope);
baseMapper.updateById(advisoryBody);
}
}
}
}
......@@ -11,15 +11,13 @@ 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.QueryConstants;
import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.domain.bo.AdvisoryBodyBo;
import com.dsk.cscec.domain.bo.CustomerCooperationBo;
import com.dsk.cscec.domain.bo.CustomerInfoBo;
import com.dsk.cscec.domain.vo.AdvisoryBodyVo;
import com.dsk.cscec.domain.vo.CustomerApproveVo;
import com.dsk.cscec.domain.vo.CustomerCooperationVo;
import com.dsk.cscec.domain.vo.CustomerInfoVo;
import com.dsk.cscec.domain.vo.*;
import com.dsk.cscec.mapper.AdvisoryBodyMapper;
import com.dsk.cscec.mapper.DCustomerMapper;
import com.dsk.cscec.mapper.DSubcontractMapper;
......@@ -65,10 +63,19 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto
Page<CustomerInfoVo> page = baseMapper.queryListByType(query.build(), bo);
if (CollectionUtils.isNotEmpty(page.getRecords())) {
page.getRecords().parallelStream().forEach(item->{
DCustomerListVo vo = subcontractMapper.selectStatisticByCustomerId(item.getCustomerId());
//企业合作数量
item.setEnterpriseCooperationCount(subcontractMapper.selectEnterpriseCountByCustomerId(item.getCustomerId()));
item.setEnterpriseCooperationCount(vo.getEnterpriseCooperationCount());
//项目合作数量
item.setProjectCooperationCount(subcontractMapper.selectProjectCountByCustomerId(item.getCustomerId()));
item.setProjectCooperationCount(vo.getProjectCooperationCount());
//关键字标红
if(!ObjectUtils.isEmpty(bo.getCustomerName())){
item.setCustomerName(StringUtils.markInRed(item.getCustomerName(), bo.getCustomerName()));
}
//关键字标红
if(!ObjectUtils.isEmpty(bo.getLeaderName())){
item.setCustomerName(StringUtils.markInRed(item.getLeaderName(), bo.getLeaderName()));
}
try {
Map<String, Object> map = opportunityRadarService.enterpriseByName(item.getCustomerName());
if (!ObjectUtils.isEmpty(map.get("data"))) {
......
......@@ -7,6 +7,7 @@ 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.domain.DCustomer;
import com.dsk.cscec.domain.bo.DCustomerSearchBo;
import com.dsk.cscec.domain.vo.DCustomerListVo;
......@@ -44,11 +45,17 @@ public class DCustomerServiceImpl extends ServiceImpl<DCustomerMapper, DCustomer
dealWithCustomerClass(bo);
Page<DCustomerListVo> page = baseMapper.allSearchList(query.build(), bo);
if (CollectionUtils.isNotEmpty(page.getRecords())) {
page.getRecords().parallelStream().forEach(item->{
page.getRecords().parallelStream().forEach(item -> {
DCustomerListVo vo = subcontractMapper.selectStatisticByCustomerId(item.getCustomerId());
//企业合作数量
item.setEnterpriseCooperationCount(subcontractMapper.selectEnterpriseCountByCustomerId(item.getCustomerId()));
item.setEnterpriseCooperationCount(vo.getEnterpriseCooperationCount());
//项目合作数量
item.setProjectCooperationCount(subcontractMapper.selectProjectCountByCustomerId(item.getCustomerId()));
item.setProjectCooperationCount(vo.getProjectCooperationCount());
showCustomerClass(item);
//关键字标红
if (!ObjectUtils.isEmpty(bo.getCustomerName())) {
item.setCustomerName(StringUtils.markInRed(item.getCustomerName(), bo.getCustomerName()));
}
try {
Map<String, Object> map = opportunityRadarService.enterpriseByName(item.getCustomerName());
if (!ObjectUtils.isEmpty(map.get("data"))) {
......@@ -56,7 +63,7 @@ public class DCustomerServiceImpl extends ServiceImpl<DCustomerMapper, DCustomer
Integer companyId = MapUtil.getInt(data, "jskEid");
item.setCompanyId(companyId);
}
}catch (Exception e){
} catch (Exception e) {
//
}
});
......@@ -69,12 +76,14 @@ public class DCustomerServiceImpl extends ServiceImpl<DCustomerMapper, DCustomer
dealWithCustomerClass(bo);
PageQuery query = new PageQuery();
List<DCustomerListVo> records = baseMapper.allSearchList(query.build(), bo).getRecords();
if(CollectionUtils.isNotEmpty(records)){
records.parallelStream().forEach(item->{
if (CollectionUtils.isNotEmpty(records)) {
records.parallelStream().forEach(item -> {
DCustomerListVo vo = subcontractMapper.selectStatisticByCustomerId(item.getCustomerId());
//企业合作数量
item.setEnterpriseCooperationCount(subcontractMapper.selectEnterpriseCountByCustomerId(item.getCustomerId()));
item.setEnterpriseCooperationCount(vo.getEnterpriseCooperationCount());
//项目合作数量
item.setProjectCooperationCount(subcontractMapper.selectProjectCountByCustomerId(item.getCustomerId()));
item.setProjectCooperationCount(vo.getProjectCooperationCount());
showCustomerClass(item);
});
}
return records;
......@@ -85,7 +94,7 @@ public class DCustomerServiceImpl extends ServiceImpl<DCustomerMapper, DCustomer
List<String> list = new ArrayList<>();
Integer isTeam = null;
for (String customerClass : bo.getCustomerClass()) {
switch (customerClass){
switch (customerClass) {
case "专业分包":
list.add("专业分包");
break;
......@@ -96,17 +105,17 @@ public class DCustomerServiceImpl extends ServiceImpl<DCustomerMapper, DCustomer
list.add("租赁");
break;
case "劳务分包":
if(isTeam == null){
if (isTeam == null) {
isTeam = 0;
}else if(isTeam == 1) {
} else if (isTeam == 1) {
isTeam = null;
}
list.add("劳务分包");
break;
case "劳务队伍":
if(isTeam == null) {
if (isTeam == null) {
isTeam = 1;
}else if(isTeam == 0) {
} else if (isTeam == 0) {
isTeam = null;
}
list.add("劳务分包");
......@@ -119,5 +128,25 @@ public class DCustomerServiceImpl extends ServiceImpl<DCustomerMapper, DCustomer
bo.setIsTeam(isTeam);
}
}
private void showCustomerClass(DCustomerListVo vo) {
if (!ObjectUtils.isEmpty(vo.getCustomerClass())) {
switch (vo.getCustomerClass()) {
case "分供":
vo.setCustomerClass("物资设备");
break;
case "租赁":
vo.setCustomerClass("施工机械");
break;
case "劳务分包":
if (!ObjectUtils.isEmpty(vo.getLeaderName())) {
vo.setCustomerClass("劳务队伍");
}
break;
default:
break;
}
}
}
}
......@@ -194,6 +194,9 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
projectDetailVo.setCorporatePerson(MapUtils.getString(companyData, "corporatePerson", ""));
//注册地址
projectDetailVo.setRegAddress(MapUtils.getString(companyData, "addressDetail", ""));
//查询项目信息并填充
projectDetailVo.setAdvisoryBodyProject(advisoryBodyProjectMapper.selectById(projectDetailBo.getProjectKey()));
return projectDetailVo;
}
}
......
package com.dsk.jsk.controller;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.jsk.domain.JskCompanyRelationTableV1Dto;
import com.dsk.jsk.service.CompanyRelationTableV1Service;
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.annotation.Resource;
/**
* @ClassName CompanyRelationTableV1Controller
* @Description
* @Author Dgm
* @Date 2023/12/13 11:28
* @Version
*/
@RestController
@RequestMapping("/consultancy")
public class CompanyRelationTableV1Controller {
@Resource
private CompanyRelationTableV1Service relationTableV1Service;
/***
*@Description: 业主/施工/集团单位-分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/page")
public TableDataInfo page(@RequestBody JskCompanyRelationTableV1Dto dto) throws Exception {
return relationTableV1Service.page(dto);
}
/***
*@Description: -业主/施工/集团单位详情-分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/detailPage")
public TableDataInfo detailPage(@RequestBody JskCompanyRelationTableV1Dto dto) throws Exception{
return relationTableV1Service.detailPage(dto);
}
}
package com.dsk.jsk.controller;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.jsk.domain.bo.UrbanInvestmentPlatformDto;
import com.dsk.jsk.service.service.UrbanInvestmentPlatformService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @ClassName UrbanInvestmentPlatformController
* @Description 城投平台
* @Author Dgm
* @Date 2023/12/18 10:09
* @Version 1.0.0
*/
@RestController
@RequestMapping(value ="/urbanInvestment")
public class UrbanInvestmentPlatformController {
@Autowired
private UrbanInvestmentPlatformService urbanInvestmentPlatformService;
/***
*@Description: 城投平台分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/page")
public AjaxResult page(@RequestBody UrbanInvestmentPlatformDto dto) {
return urbanInvestmentPlatformService.page(dto);
}
/***
*@Description: 城投平台详情
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/details/{id}")
public AjaxResult details(@PathVariable("id") String id) {
return urbanInvestmentPlatformService.details(id);
}
/***
*@Description: 城投平台统计
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/statistics")
public AjaxResult statistics(@RequestBody UrbanInvestmentPlatformDto dto) {
return urbanInvestmentPlatformService.statistics(dto);
}
@PostMapping("/export/pre")
public AjaxResult exportPre(@RequestBody UrbanInvestmentPlatformDto dto) {
return urbanInvestmentPlatformService.esportPre(dto);
}
}
package com.dsk.jsk.domain;
import lombok.Data;
import java.util.List;
/**
* @ClassName JskCompanyRelationTableV1Dto
* @Description
* @Author Dgm
* @Date 2023/12/11 20:37
* @Version
*/
@Data
public class JskCompanyRelationTableV1Dto 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;
}
package com.dsk.jsk.service;
import cn.hutool.core.bean.BeanUtil;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.jsk.domain.*;
import com.dsk.system.utils.DskOpenApiUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* @ClassName CompanyRelationTableV1Controller
* @Description
* @Author Dgm
* @Date 2023/12/13 11:28
* @Version
*/
@Slf4j
@Service
public class CompanyRelationTableV1Service {
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
public TableDataInfo page(JskCompanyRelationTableV1Dto dto) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/consultancy/page", BeanUtil.beanToMap(dto, false, false));
return dskOpenApiUtil.responsePage(map);
}
public TableDataInfo detailPage(JskCompanyRelationTableV1Dto dto) throws Exception{
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/consultancy/detailPage", BeanUtil.beanToMap(dto, false, false));
return dskOpenApiUtil.responsePage(map);
}
}
......@@ -5,6 +5,7 @@ import com.dsk.common.core.domain.AjaxResult;
import com.dsk.component.UploadComponent;
import com.dsk.jsk.domain.bo.ComposeQueryDto;
import com.dsk.search.service.BusinessOpportunityRadarService;
import com.dsk.search.util.PageQueryLimit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
......
......@@ -2,9 +2,9 @@ package com.dsk.search.controller;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.utils.StringUtils;
import com.dsk.jsk.domain.bo.ComposeQueryDto;
import com.dsk.search.service.BusinessOpportunityRadarService;
import com.dsk.search.util.PageQueryLimit;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
......
......@@ -54,8 +54,11 @@ public class ExportService {
list.add(companyNameList.get(i).getCompanyName());
}
composeQueryDto.setKeyword(String.join(",",list));
SimpleDateFormat sdf =new SimpleDateFormat("yyyyMMdd");
String dayformat = sdf.format(new Date());
SysUserFileRecord fileRecord = new SysUserFileRecord();
fileRecord.setFileName("批量导出".concat(Constants.SUFFIX_XLSX));
String fileName = "供应商资质批量查询".concat(dayformat);
fileRecord.setFileName(fileName);
fileRecord.setType(1);
//生成中
fileRecord.setStatus(2);
......@@ -64,9 +67,7 @@ public class ExportService {
composeQueryDto.setExportUniqueCode(fileId.toString());
//回调函数
composeQueryDto.setExportBackUrl(EXPORT_BACK_URL);
SimpleDateFormat sdf =new SimpleDateFormat("yyyyMMdd");
String dayformat = sdf.format(new Date());
composeQueryDto.setExportExeclName("供应商资质批量查询"+dayformat+".xlsx");
composeQueryDto.setExportExeclName(fileName);
dskOpenApiUtil.requestBody("/operate/export/zjyj/aptitude", BeanUtil.beanToMap(composeQueryDto,false,false));
return AjaxResult.success();
}
......
......@@ -61,7 +61,7 @@
</foreach>
</if>
<if test="bo.approveDateBegion != null and bo.approveDateBegion != '' ">and approve_date2 &gt;= #{bo.approveDateBegion}</if>
<if test="bo.approveDateEnd != null and bo.approveDateEnd != '' ">and approve_date2 &lt;= #{bo.approveDateBegion} </if>
<if test="bo.approveDateEnd != null and bo.approveDateEnd != '' ">and approve_date2 &lt;= #{bo.approveDateEnd} </if>
<if test="bo.isTeam != null"> and leader_name is <if test="bo.isTeam == 1">not</if> null </if>
order by approve_date2 desc
</select>
......@@ -114,29 +114,28 @@
<if test="bo.customerName != null and bo.customerName != '' ">
and customer_name like concat('%',#{bo.customerName},'%')
</if>
<if test="bo.registerProvince != null and bo.registerCity == null">
and register_province in
<foreach collection="bo.registerProvince" item="registerProvince" separator="," open="(" close=")">
#{registerProvince}
</foreach>
</if>
<if test="bo.registerProvince == null and bo.registerCity != null ">
and register_city in
<foreach collection="bo.registerCity" item="registerCity" separator="," open="(" close=")">
#{registerCity}
</foreach>
</if>
<if test="bo.registerProvince != null and bo.registerCity != null ">
and (
register_province in
<foreach collection="bo.registerProvince" item="registerProvince" separator="," open="(" close=")">
#{registerProvince}
</foreach>
or register_city in
<foreach collection="bo.registerCity" item="registerCity" separator="," open="(" close=")">
#{registerCity}
</foreach>
)
<if test="bo.registerRegion != null and bo.registerRegion.size > 0 or (bo.registerProvince != null and bo.registerProvince.size > 0) or (bo.registerCity != null and bo.registerCity.size > 0)">
and
<trim prefix="(" suffix=")" prefixOverrides="or">
<if test="bo.registerRegion != null and bo.registerRegion.size > 0 ">
or register_region in
<foreach collection="bo.registerRegion" item="registerRegion" open="(" close=")" separator=",">
#{registerRegion}
</foreach>
</if>
<if test="bo.registerProvince != null and bo.registerProvince.size > 0 ">
or register_province in
<foreach collection="bo.registerProvince" item="registerProvince" open="(" close=")" separator=",">
#{registerProvince}
</foreach>
</if>
<if test="bo.registerCity != null and bo.registerCity.size > 0 ">
or register_city in
<foreach collection="bo.registerCity" item="registerCity" open="(" close=")" separator=",">
#{registerCity}
</foreach>
</if>
</trim>
</if>
<if test="bo.groupSpecialtyId != null ">
<foreach collection="bo.groupSpecialtyId" item="groupSpecialtyId">
......
......@@ -17,7 +17,17 @@
) a
</select>
<select id="selectCooperationList" resultType="com.dsk.cscec.domain.vo.CustomerCooperationVo">
<select id="selectStatisticByCustomerId" resultType="com.dsk.cscec.domain.vo.DCustomerListVo">
select
count(DISTINCT org.sign_org_id) enterpriseCooperationCount,
count(DISTINCT project.project_id) projectCooperationCount
from d_customer dc
left join d_subcontract org on org.customer_id = dc.customer_id
left join d_subcontract project on project.customer_id = dc.customer_id
where dc.customer_id = #{customerId}
</select>
<select id="selectCooperationList" resultType="com.dsk.cscec.domain.vo.CustomerCooperationVo">
select ds.subcontract_key,ds.subcontract_id,ds.project_name,ds.sign_org_name,ds.sign_date,ds.subcontract_value,ds.settle_value,ds.job_scope,
dp.area_name,dp.province_name,dp.city_name,dp.project_manager_name,dp.project_manager_phone,dp.project_type2
from d_subcontract ds
......@@ -35,13 +45,28 @@
<if test="bo.customerName != null and bo.customerName != ''">
and ds.customer_name =#{bo.customerName}
</if>
<if test="bo.areaName != null and bo.areaName.size > 0">
and (
ds.areaName in
<foreach collection="bo.areaName" item="areaName" open="(" close=")" separator=",">
#{areaName}
</foreach>
)
<if test="bo.areaName != null and bo.areaName.size > 0 or (bo.provinceName != null and bo.provinceName.size > 0) or (bo.cityName != null and bo.cityName.size > 0)">
and
<trim prefix="(" suffix=")" prefixOverrides="or">
<if test="bo.areaName != null and bo.areaName.size > 0 ">
or dp.area_name in
<foreach collection="bo.areaName" item="areaName" open="(" close=")" separator=",">
#{areaName}
</foreach>
</if>
<if test="bo.provinceName != null and bo.provinceName.size > 0 ">
or dp.province_name in
<foreach collection="bo.provinceName" item="provinceName" open="(" close=")" separator=",">
#{provinceName}
</foreach>
</if>
<if test="bo.cityName != null and bo.cityName.size > 0 ">
or dp.city_name in
<foreach collection="bo.cityName" item="cityName" open="(" close=")" separator=",">
#{cityName}
</foreach>
</if>
</trim>
</if>
</where>
order by ds.sign_date desc
......
import request from '@/utils/request'
export function zjyjAptitude (data) {
return request({
url: '/enterprise/zjyjAptitude',
method: 'post',
data
})
}
export function enterpriseAptitude (data) {
return request({
url: '/enterprise/zjyj/enterpriseAptitude',
method: 'post',
data
})
}
export function importTemplate (data) {
return request({
url: '/export/aptitude/importTemplate',
method: 'post',
responseType: "blob",
data
})
}
export function list (data) {
return request({
url: '/user/file/record/list',
method: 'get',
params:data
})
}
//资质标准
export function standard (data) {
return request({
url: '/enterprise/zjyj/cert/standard',
method: 'post',
data
})
}
......@@ -21,7 +21,8 @@ export function customerExport(param) {
url: '/customer/export',
method: 'post',
data:param,
responseType: 'blob'
responseType: 'blob',
timeout: 60000
});
}
//专业类别选项列表
......
[
{
"name": "建筑业企业资质",
"id": 209,
"type": 0,
"list": [
{
"name": "施工总承包",
"id": 1,
"type": 1,
"list": [
{
"name": "建筑工程施工总承包",
"id": 4,
"type": 2,
"parentId": 1
},
{
"name": "公路工程施工总承包",
"id": 5,
"type": 2,
"parentId": 1
},
{
"name": "铁路工程施工总承包",
"id": 6,
"type": 2,
"parentId": 1
},
{
"name": "港口与航道工程施工总承包",
"id": 7,
"type": 2,
"parentId": 1
},
{
"name": "水利水电工程施工总承包",
"id": 8,
"type": 2,
"parentId": 1
},
{
"name": "电力工程施工总承包",
"id": 9,
"type": 2,
"parentId": 1
},
{
"name": "矿山工程施工总承包",
"id": 10,
"type": 2,
"parentId": 1
},
{
"name": "冶金工程施工总承包",
"id": 11,
"type": 2,
"parentId": 1
},
{
"name": "石油化工工程施工总承包",
"id": 12,
"type": 2,
"parentId": 1
},
{
"name": "市政公用工程施工总承包",
"id": 13,
"type": 2,
"parentId": 1
},
{
"name": "通信工程施工总承包",
"id": 14,
"type": 2,
"parentId": 1
},
{
"name": "机电工程施工总承包",
"id": 15,
"type": 2,
"parentId": 1
}
],
"parentId": 209
},
{
"name": "专业承包",
"id": 2,
"type": 1,
"list": [
{
"name": "地基基础工程专业承包",
"id": 16,
"type": 2,
"parentId": 2
},
{
"name": "起重设备安装工程专业承包",
"id": 17,
"type": 2,
"parentId": 2
},
{
"name": "预拌混凝土专业承包",
"id": 18,
"type": 2,
"parentId": 2
},
{
"name": "电子与智能化工程专业承包",
"id": 19,
"type": 2,
"parentId": 2
},
{
"name": "消防设施工程专业承包",
"id": 20,
"type": 2,
"parentId": 2
},
{
"name": "防水防腐保温工程专业承包",
"id": 21,
"type": 2,
"parentId": 2
},
{
"name": "桥梁工程专业承包",
"id": 22,
"type": 2,
"parentId": 2
},
{
"name": "隧道工程专业承包",
"id": 23,
"type": 2,
"parentId": 2
},
{
"name": "钢结构工程专业承包",
"id": 24,
"type": 2,
"parentId": 2
},
{
"name": "模板脚手架专业承包",
"id": 25,
"type": 2,
"parentId": 2
},
{
"name": "建筑装修装饰工程专业承包",
"id": 26,
"type": 2,
"parentId": 2
},
{
"name": "建筑机电安装工程专业承包",
"id": 27,
"type": 2,
"parentId": 2
},
{
"name": "建筑幕墙工程专业承包",
"id": 28,
"type": 2,
"parentId": 2
},
{
"name": "古建筑工程专业承包",
"id": 29,
"type": 2,
"parentId": 2
},
{
"name": "城市及道路照明工程专业承包",
"id": 30,
"type": 2,
"parentId": 2
},
{
"name": "公路路面工程专业承包",
"id": 31,
"type": 2,
"parentId": 2
},
{
"name": "公路路基工程专业承包",
"id": 32,
"type": 2,
"parentId": 2
},
{
"name": "公路交通工程专业承包",
"id": 33,
"type": 2,
"list": [
{
"name": "公路交通工程公路安全设施专业承包",
"id": 1663,
"type": 6,
"parentId": 33
},
{
"name": "公路交通工程公路机电工程专业承包",
"id": 1665,
"type": 6,
"parentId": 33
}
],
"parentId": 2
},
{
"name": "铁路电务工程专业承包",
"id": 34,
"type": 2,
"parentId": 2
},
{
"name": "铁路铺轨架梁工程专业承包",
"id": 35,
"type": 2,
"parentId": 2
},
{
"name": "铁路电气化工程专业承包",
"id": 36,
"type": 2,
"parentId": 2
},
{
"name": "机场场道工程专业承包",
"id": 37,
"type": 2,
"parentId": 2
},
{
"name": "民航空管工程及机场弱电系统工程专业承包",
"id": 38,
"type": 2,
"parentId": 2
},
{
"name": "机场目视助航工程专业承包",
"id": 39,
"type": 2,
"parentId": 2
},
{
"name": "港口与海岸工程专业承包",
"id": 40,
"type": 2,
"parentId": 2
},
{
"name": "航道工程专业承包",
"id": 41,
"type": 2,
"parentId": 2
},
{
"name": "通航建筑物工程专业承包",
"id": 42,
"type": 2,
"parentId": 2
},
{
"name": "港航设备安装及水上交管工程专业承包",
"id": 43,
"type": 2,
"parentId": 2
},
{
"name": "水工金属结构制作与安装工程专业承包",
"id": 44,
"type": 2,
"parentId": 2
},
{
"name": "水利水电机电安装工程专业承包",
"id": 45,
"type": 2,
"parentId": 2
},
{
"name": "河湖整治工程专业承包",
"id": 46,
"type": 2,
"parentId": 2
},
{
"name": "输变电工程专业承包",
"id": 47,
"type": 2,
"parentId": 2
},
{
"name": "核工程专业承包",
"id": 48,
"type": 2,
"parentId": 2
},
{
"name": "海洋石油工程专业承包",
"id": 49,
"type": 2,
"parentId": 2
},
{
"name": "环保工程专业承包",
"id": 50,
"type": 2,
"parentId": 2
},
{
"name": "特种工程专业承包",
"id": 51,
"type": 2,
"parentId": 2
}
],
"parentId": 209
}
],
"parentId": 0
},
{
"name": "工程勘察",
"id": 211,
"type": 0,
"list": [
{
"name": "工程勘察综合资质",
"id": 223,
"type": 1,
"parentId": 211
},
{
"name": "工程勘察专业资质",
"id": 225,
"type": 1,
"list": [
{
"name": "工程勘察岩土工程专业",
"id": 257,
"type": 2,
"list": [
{
"name": "工程勘察岩土工程专业",
"id": 404,
"type": 6,
"parentId": 257
},
{
"name": "工程勘察岩土工程专业(岩土工程勘察)",
"id": 405,
"type": 6,
"parentId": 257
},
{
"name": "岩土工程专业(岩土工程设计)",
"id": 407,
"type": 6,
"parentId": 257
},
{
"name": "岩土工程专业(岩土工程物探测试检测监测)",
"id": 409,
"type": 6,
"parentId": 257
}
],
"parentId": 225
},
{
"name": "工程勘察水文地质勘察专业",
"id": 259,
"type": 2,
"parentId": 225
},
{
"name": "工程勘察工程测量专业",
"id": 261,
"type": 2,
"parentId": 225
},
{
"name": "工程勘察海洋工程勘察专业",
"id": 263,
"type": 2,
"list": [
{
"name": "海洋工程勘察专业(海洋工程测量)",
"id": 411,
"type": 6,
"parentId": 263
},
{
"name": "海洋工程勘察专业(海洋岩土工程勘察)",
"id": 413,
"type": 6,
"parentId": 263
},
{
"name": "海洋工程勘察专业(海洋工程环境调查)",
"id": 415,
"type": 6,
"parentId": 263
}
],
"parentId": 225
}
],
"parentId": 211
},
{
"name": "工程勘察劳务资质",
"id": 227,
"type": 1,
"list": [
{
"name": "工程勘察工程钻探劳务",
"id": 265,
"type": 2,
"parentId": 227
},
{
"name": "工程勘察凿井劳务",
"id": 267,
"type": 2,
"parentId": 227
},
{
"name": "工程勘察劳务",
"id": 267,
"type": 2,
"parentId": 227
}
],
"parentId": 211
}
],
"parentId": 0
},
{
"name": "工程设计",
"id": 213,
"type": 0,
"list": [
{
"name": "工程设计综合资质",
"id": 229,
"type": 1,
"parentId": 213
},
{
"name": "工程设计行业资质",
"id": 231,
"type": 1,
"list": [
{
"name": "工程设计煤炭行业",
"id": 269,
"type": 2,
"parentId": 231
},
{
"name": "工程设计化工石化医药行业",
"id": 271,
"type": 2,
"parentId": 231
},
{
"name": "工程设计石油天然气(海洋石油)行业",
"id": 273,
"type": 2,
"parentId": 231
},
{
"name": "工程设计电力行业",
"id": 275,
"type": 2,
"parentId": 231
},
{
"name": "工程设计冶金行业",
"id": 277,
"type": 2,
"parentId": 231
},
{
"name": "工程设计军工行业",
"id": 279,
"type": 2,
"parentId": 231
},
{
"name": "工程设计机械行业",
"id": 281,
"type": 2,
"parentId": 231
},
{
"name": "工程设计商物粮行业",
"id": 283,
"type": 2,
"parentId": 231
},
{
"name": "工程设计核工业行业",
"id": 285,
"type": 2,
"parentId": 231
},
{
"name": "工程设计电子通信广电行业",
"id": 287,
"type": 2,
"list": [
{
"name": "工程设计电子通信广电行业(电子工程)",
"id": 417,
"type": 6,
"parentId": 287
},
{
"name": "工程设计电子通信广电行业(通信工程)",
"id": 419,
"type": 6,
"parentId": 287
},
{
"name": "工程设计电子通信广电行业(广电工程)",
"id": 421,
"type": 6,
"parentId": 287
}
],
"parentId": 231
},
{
"name": "工程设计轻纺行业",
"id": 289,
"type": 2,
"list": [
{
"name": "工程设计轻纺行业(轻工工程)",
"id": 423,
"type": 6,
"parentId": 289
},
{
"name": "工程设计轻纺行业(纺织工程)",
"id": 425,
"type": 6,
"parentId": 289
}
],
"parentId": 231
},
{
"name": "工程设计建材行业",
"id": 291,
"type": 2,
"parentId": 231
},
{
"name": "工程设计铁道行业",
"id": 293,
"type": 2,
"parentId": 231
},
{
"name": "工程设计公路行业",
"id": 295,
"type": 2,
"parentId": 231
},
{
"name": "工程设计水运行业",
"id": 297,
"type": 2,
"parentId": 231
},
{
"name": "工程设计民航行业",
"id": 299,
"type": 2,
"parentId": 231
},
{
"name": "工程设计市政行业",
"id": 301,
"type": 2,
"list": [
{
"name": "工程设计市政行业",
"id": 429,
"type": 6,
"parentId": 301
}
],
"parentId": 231
},
{
"name": "工程设计农林行业",
"id": 303,
"type": 2,
"list": [
{
"name": "工程设计农林行业(农业工程)",
"id": 431,
"type": 6,
"parentId": 303
},
{
"name": "工程设计农林行业(林业工程)",
"id": 433,
"type": 6,
"parentId": 303
}
],
"parentId": 231
},
{
"name": "工程设计水利行业",
"id": 305,
"type": 2,
"parentId": 231
},
{
"name": "工程设计海洋行业",
"id": 307,
"type": 2,
"parentId": 231
},
{
"name": "工程设计建筑行业",
"id": 309,
"type": 2,
"parentId": 231
}
],
"parentId": 213
},
{
"name": "工程设计专业资质",
"id": 233,
"type": 1,
"list": [
{
"name": "工程设计煤炭行业",
"id": 311,
"type": 2,
"list": [
{
"name": "工程设计煤炭行业矿井专业",
"id": 435,
"type": 6,
"parentId": 311
},
{
"name": "工程设计煤炭行业露天矿专业",
"id": 437,
"type": 6,
"parentId": 311
},
{
"name": "工程设计煤炭行业选煤厂专业",
"id": 439,
"type": 6,
"parentId": 311
}
],
"parentId": 233
},
{
"name": "工程设计化工石化医药行业",
"id": 313,
"type": 2,
"list": [
{
"name": "工程设计化工石化医药行业炼油工程专业",
"id": 441,
"type": 6,
"parentId": 313
},
{
"name": "工程设计化工石化医药行业化工工程专业",
"id": 443,
"type": 6,
"parentId": 313
},
{
"name": "工程设计化工石化医药行业石油及化工产品储运专业",
"id": 445,
"type": 6,
"parentId": 313
},
{
"name": "工程设计化工石化医药行业化工矿山专业",
"id": 447,
"type": 6,
"parentId": 313
},
{
"name": "工程设计化工石化医药行业生化、生物药专业",
"id": 449,
"type": 6,
"parentId": 313
},
{
"name": "工程设计化工石化医药行业中成药专业",
"id": 451,
"type": 6,
"parentId": 313
},
{
"name": "工程设计化工石化医药行业化学原料药专业",
"id": 453,
"type": 6,
"parentId": 313
},
{
"name": "工程设计化工石化医药行业药物制剂专业",
"id": 455,
"type": 6,
"parentId": 313
},
{
"name": "工程设计化工石化医药行业医疗器械(含药品内包装)专业",
"id": 457,
"type": 6,
"parentId": 313
}
],
"parentId": 233
},
{
"name": "工程设计石油天然气(海洋石油)行业",
"id": 315,
"type": 2,
"list": [
{
"name": "工程设计石油天然气(海洋石油)行业油田地面专业",
"id": 459,
"type": 6,
"parentId": 315
},
{
"name": "工程设计石油天然气(海洋石油)行业气田地面专业",
"id": 461,
"type": 6,
"parentId": 315
},
{
"name": "工程设计石油天然气(海洋石油)行业管道输送专业",
"id": 463,
"type": 6,
"parentId": 315
},
{
"name": "工程设计石油天然气(海洋石油)行业海洋石油专业",
"id": 465,
"type": 6,
"parentId": 315
},
{
"name": "工程设计石油天然气(海洋石油)行业油气库专业",
"id": 467,
"type": 6,
"parentId": 315
},
{
"name": "工程设计石油天然气(海洋石油)行业油气加工专业",
"id": 469,
"type": 6,
"parentId": 315
},
{
"name": "工程设计石油天然气(海洋石油)行业石油机械制造与修理专业",
"id": 471,
"type": 6,
"parentId": 315
}
],
"parentId": 233
},
{
"name": "工程设计电力行业",
"id": 317,
"type": 2,
"list": [
{
"name": "工程设计电力行业火力发电(含核电站常规岛设计)专业",
"id": 473,
"type": 6,
"parentId": 317
},
{
"name": "工程设计电力行业水力发电(含抽水蓄能、潮汐)专业",
"id": 475,
"type": 6,
"parentId": 317
},
{
"name": "工程设计电力行业风力发电专业",
"id": 477,
"type": 6,
"parentId": 317
},
{
"name": "工程设计电力行业新能源发电专业",
"id": 479,
"type": 6,
"parentId": 317
},
{
"name": "工程设计电力行业送电工程专业",
"id": 481,
"type": 6,
"parentId": 317
},
{
"name": "工程设计电力行业变电工程专业",
"id": 483,
"type": 6,
"parentId": 317
}
],
"parentId": 233
},
{
"name": "工程设计冶金行业",
"id": 319,
"type": 2,
"list": [
{
"name": "工程设计冶金行业金属冶炼工程专业",
"id": 485,
"type": 6,
"parentId": 319
},
{
"name": "工程设计冶金行业金属材料工程专业",
"id": 487,
"type": 6,
"parentId": 319
},
{
"name": "工程设计冶金行业焦化和耐火材料工程专业",
"id": 489,
"type": 6,
"parentId": 319
},
{
"name": "工程设计冶金行业冶金矿山工程专业",
"id": 491,
"type": 6,
"parentId": 319
}
],
"parentId": 233
},
{
"name": "工程设计军工行业",
"id": 321,
"type": 2,
"list": [
{
"name": "工程设计军工行业导弹及火箭弹工程专业",
"id": 493,
"type": 6,
"parentId": 321
},
{
"name": "工程设计军工行业弹、火工品及固体发动机工程专业",
"id": 495,
"type": 6,
"parentId": 321
},
{
"name": "工程设计军工行业燃机、动力装置及航天发动机工程专业",
"id": 497,
"type": 6,
"parentId": 321
},
{
"name": "工程设计军工行业控制系统、光学、光电、电子、仪表工程专业",
"id": 499,
"type": 6,
"parentId": 321
},
{
"name": "工程设计军工行业科研、靶场、试验、教育培训工程专业",
"id": 501,
"type": 6,
"parentId": 321
},
{
"name": "工程设计军工行业地面设备工程专业",
"id": 503,
"type": 6,
"parentId": 321
},
{
"name": "工程设计军工行业航天空间飞行器工程专业",
"id": 505,
"type": 6,
"parentId": 321
},
{
"name": "工程设计军工行业运载火箭制造工程专业",
"id": 507,
"type": 6,
"parentId": 321
},
{
"name": "工程设计军工行业地面制导站工程专业",
"id": 509,
"type": 6,
"parentId": 321
},
{
"name": "工程设计军工行业航空飞行器工程专业",
"id": 511,
"type": 6,
"parentId": 321
},
{
"name": "工程设计军工行业机场工程专业",
"id": 513,
"type": 6,
"parentId": 321
},
{
"name": "工程设计军工行业船舶制造工程专业",
"id": 515,
"type": 6,
"parentId": 321
},
{
"name": "工程设计军工行业船舶机械工程专业",
"id": 517,
"type": 6,
"parentId": 321
},
{
"name": "工程设计军工行业船舶水工工程专业",
"id": 519,
"type": 6,
"parentId": 321
},
{
"name": "工程设计军工行业坦克、装甲车辆工程专业",
"id": 521,
"type": 6,
"parentId": 321
},
{
"name": "工程设计军工行业枪、炮工程专业",
"id": 523,
"type": 6,
"parentId": 321
},
{
"name": "工程设计军工行业火、炸药工程专业",
"id": 525,
"type": 6,
"parentId": 321
},
{
"name": "工程设计军工行业防化、民爆器材工程专业",
"id": 1721,
"type": 6,
"parentId": 321
}
],
"parentId": 233
},
{
"name": "工程设计机械行业",
"id": 323,
"type": 2,
"list": [
{
"name": "工程设计机械行业通用设备制造业工程专业",
"id": 527,
"type": 6,
"parentId": 323
},
{
"name": "工程设计机械行业专用设备制造业工程专业",
"id": 529,
"type": 6,
"parentId": 323
},
{
"name": "工程设计机械行业交通运输设备制造业工程专业",
"id": 531,
"type": 6,
"parentId": 323
},
{
"name": "工程设计机械行业电气机械设备制造业工程专业",
"id": 533,
"type": 6,
"parentId": 323
},
{
"name": "工程设计机械行业金属制品业工程专业",
"id": 535,
"type": 6,
"parentId": 323
},
{
"name": "工程设计机械行业仪器仪表及文化办公机械制造业工程专业",
"id": 537,
"type": 6,
"parentId": 323
},
{
"name": "工程设计机械行业机械加工专业",
"id": 539,
"type": 6,
"parentId": 323
},
{
"name": "工程设计机械行业热加工专业",
"id": 541,
"type": 6,
"parentId": 323
},
{
"name": "工程设计机械行业表面处理专业",
"id": 543,
"type": 6,
"parentId": 323
},
{
"name": "工程设计机械行业检测专业",
"id": 545,
"type": 6,
"parentId": 323
},
{
"name": "工程设计机械行业物料搬运及仓储专业",
"id": 547,
"type": 6,
"parentId": 323
}
],
"parentId": 233
},
{
"name": "工程设计商物粮行业",
"id": 325,
"type": 2,
"list": [
{
"name": "工程设计商物粮行业冷冻冷藏工程专业",
"id": 549,
"type": 6,
"parentId": 325
},
{
"name": "工程设计商物粮行业肉食品加工工程专业",
"id": 551,
"type": 6,
"parentId": 325
},
{
"name": "工程设计商物粮行业批发配送与物流仓储工程专业",
"id": 553,
"type": 6,
"parentId": 325
},
{
"name": "工程设计商物粮行业成品油储运工程专业",
"id": 555,
"type": 6,
"parentId": 325
},
{
"name": "工程设计商物粮行业粮食工程专业",
"id": 557,
"type": 6,
"parentId": 325
},
{
"name": "工程设计商物粮行业油脂工程专业",
"id": 559,
"type": 6,
"parentId": 325
}
],
"parentId": 233
},
{
"name": "工程设计核工业行业",
"id": 327,
"type": 2,
"list": [
{
"name": "工程设计核工业行业反应堆工程设计(含核电站反应堆工程)专业",
"id": 561,
"type": 6,
"parentId": 327
},
{
"name": "工程设计核工业行业核燃料加工制造及处理工程专业",
"id": 563,
"type": 6,
"parentId": 327
},
{
"name": "工程设计核工业行业铀矿山及选冶工程专业",
"id": 565,
"type": 6,
"parentId": 327
},
{
"name": "工程设计核工业行业核设施退役及放射性三废处理处置工程专业",
"id": 567,
"type": 6,
"parentId": 327
},
{
"name": "工程设计核工业行业核技术及同位素应用工程专业",
"id": 569,
"type": 6,
"parentId": 327
}
],
"parentId": 233
},
{
"name": "工程设计电子通信广电行业",
"id": 329,
"type": 2,
"list": [
{
"name": "工程设计电子通信广电行业电子整机产品项目工程专业",
"id": 571,
"type": 6,
"parentId": 329
},
{
"name": "工程设计电子通信广电行业电子基础产品项目工程专业",
"id": 573,
"type": 6,
"parentId": 329
},
{
"name": "工程设计电子通信广电行业显示器件项目工程专业",
"id": 575,
"type": 6,
"parentId": 329
},
{
"name": "工程设计电子通信广电行业微电子产品项目工程专业",
"id": 577,
"type": 6,
"parentId": 329
},
{
"name": "工程设计电子通信广电行业电子特种环境工程专业",
"id": 579,
"type": 6,
"parentId": 329
},
{
"name": "工程设计电子通信广电行业电子系统工程专业",
"id": 581,
"type": 6,
"parentId": 329
},
{
"name": "工程设计电子通信广电行业有线通信专业",
"id": 583,
"type": 6,
"parentId": 329
},
{
"name": "工程设计电子通信广电行业通信铁塔专业",
"id": 585,
"type": 6,
"parentId": 329
},
{
"name": "工程设计电子通信广电行业广播电视中心专业",
"id": 587,
"type": 6,
"parentId": 329
},
{
"name": "工程设计电子通信广电行业广播电视发射专业",
"id": 589,
"type": 6,
"parentId": 329
},
{
"name": "工程设计电子通信广电行业广播电视传输专业",
"id": 591,
"type": 6,
"parentId": 329
},
{
"name": "工程设计电子通信广电行业电影工程专业",
"id": 593,
"type": 6,
"parentId": 329
},
{
"name": "工程设计电子通信广电行业无线通信专业",
"id": 1689,
"type": 6,
"parentId": 329
},
{
"name": "工程设计电子通信广电行业邮政工程专业",
"id": 1691,
"type": 6,
"parentId": 329
}
],
"parentId": 233
},
{
"name": "工程设计轻纺行业",
"id": 331,
"type": 2,
"list": [
{
"name": "工程设计轻纺行业制浆造纸工程专业",
"id": 595,
"type": 6,
"parentId": 331
},
{
"name": "工程设计轻纺行业食品发酵烟草工程专业",
"id": 597,
"type": 6,
"parentId": 331
},
{
"name": "工程设计轻纺行业制糖工程专业",
"id": 599,
"type": 6,
"parentId": 331
},
{
"name": "工程设计轻纺行业日化及塑料工程专业",
"id": 601,
"type": 6,
"parentId": 331
},
{
"name": "工程设计轻纺行业日用硅酸盐工程专业",
"id": 603,
"type": 6,
"parentId": 331
},
{
"name": "工程设计轻纺行业制盐及盐化工程专业",
"id": 605,
"type": 6,
"parentId": 331
},
{
"name": "工程设计轻纺行业皮革毛皮及制品专业",
"id": 607,
"type": 6,
"parentId": 331
},
{
"name": "工程设计轻纺行业家电电子及日用机械专业",
"id": 609,
"type": 6,
"parentId": 331
},
{
"name": "工程设计轻纺行业纺织工程专业",
"id": 611,
"type": 6,
"parentId": 331
},
{
"name": "工程设计轻纺行业印染工程专业",
"id": 613,
"type": 6,
"parentId": 331
},
{
"name": "工程设计轻纺行业服装工程专业",
"id": 615,
"type": 6,
"parentId": 331
},
{
"name": "工程设计轻纺行业化纤原料工程专业",
"id": 617,
"type": 6,
"parentId": 331
},
{
"name": "工程设计轻纺行业化纤工程专业",
"id": 619,
"type": 6,
"parentId": 331
}
],
"parentId": 233
},
{
"name": "工程设计建材行业",
"id": 333,
"type": 2,
"list": [
{
"name": "工程设计建材行业水泥工程专业",
"id": 621,
"type": 6,
"parentId": 333
},
{
"name": "工程设计建材行业玻璃、陶瓷、耐火材料工程专业",
"id": 623,
"type": 6,
"parentId": 333
},
{
"name": "工程设计建材行业新型建筑材料工程专业",
"id": 625,
"type": 6,
"parentId": 333
},
{
"name": "工程设计建材行业非金属矿及原料制备工程专业",
"id": 627,
"type": 6,
"parentId": 333
},
{
"name": "工程设计建材行业无机非金属材料及制品工程专业",
"id": 629,
"type": 6,
"parentId": 333
}
],
"parentId": 233
},
{
"name": "工程设计铁道行业",
"id": 335,
"type": 2,
"list": [
{
"name": "工程设计铁道行业桥梁专业",
"id": 631,
"type": 6,
"parentId": 335
},
{
"name": "工程设计铁道行业轨道专业",
"id": 633,
"type": 6,
"parentId": 335
},
{
"name": "工程设计铁道行业隧道专业",
"id": 635,
"type": 6,
"parentId": 335
},
{
"name": "工程设计铁道行业电气化专业",
"id": 637,
"type": 6,
"parentId": 335
},
{
"name": "工程设计铁道行业通信信号专业",
"id": 639,
"type": 6,
"parentId": 335
}
],
"parentId": 233
},
{
"name": "工程设计公路行业",
"id": 337,
"type": 2,
"list": [
{
"name": "工程设计公路行业公路专业",
"id": 641,
"type": 6,
"parentId": 337
},
{
"name": "工程设计公路行业特大桥梁专业",
"id": 643,
"type": 6,
"parentId": 337
},
{
"name": "工程设计公路行业特长隧道专业",
"id": 645,
"type": 6,
"parentId": 337
},
{
"name": "工程设计公路行业交通工程专业",
"id": 647,
"type": 6,
"parentId": 337
}
],
"parentId": 233
},
{
"name": "工程设计水运行业",
"id": 339,
"type": 2,
"list": [
{
"name": "工程设计水运行业港口工程专业",
"id": 649,
"type": 6,
"parentId": 339
},
{
"name": "工程设计水运行业航道工程专业",
"id": 651,
"type": 6,
"parentId": 339
},
{
"name": "工程设计水运行业通航建筑工程专业",
"id": 653,
"type": 6,
"parentId": 339
},
{
"name": "工程设计水运行业修造船厂水工工程专业",
"id": 655,
"type": 6,
"parentId": 339
},
{
"name": "工程设计水运行业港口装卸工艺专业",
"id": 657,
"type": 6,
"parentId": 339
},
{
"name": "工程设计水运行业水上交通管制工程专业",
"id": 659,
"type": 6,
"parentId": 339
}
],
"parentId": 233
},
{
"name": "工程设计民航行业",
"id": 341,
"type": 2,
"list": [
{
"name": "工程设计民航行业机场总体规划工程专业",
"id": 661,
"type": 6,
"parentId": 341
},
{
"name": "工程设计民航行业场道、目视助航工程专业",
"id": 663,
"type": 6,
"parentId": 341
},
{
"name": "工程设计民航行业通信、导航、航管及航站楼弱电工程专业",
"id": 665,
"type": 6,
"parentId": 341
},
{
"name": "工程设计民航行业供油工程专业",
"id": 667,
"type": 6,
"parentId": 341
}
],
"parentId": 233
},
{
"name": "工程设计市政行业",
"id": 343,
"type": 2,
"list": [
{
"name": "工程设计市政行业给水工程专业",
"id": 669,
"type": 6,
"parentId": 343
},
{
"name": "工程设计市政行业排水工程专业",
"id": 671,
"type": 6,
"parentId": 343
},
{
"name": "工程设计市政行业城镇燃气工程专业",
"id": 673,
"type": 6,
"parentId": 343
},
{
"name": "工程设计市政行业热力工程专业",
"id": 675,
"type": 6,
"parentId": 343
},
{
"name": "工程设计市政行业道路工程专业",
"id": 677,
"type": 6,
"parentId": 343
},
{
"name": "工程设计市政行业桥梁工程专业",
"id": 679,
"type": 6,
"parentId": 343
},
{
"name": "工程设计市政行业城市隧道工程专业",
"id": 681,
"type": 6,
"parentId": 343
},
{
"name": "工程设计市政行业公共交通工程专业",
"id": 683,
"type": 6,
"parentId": 343
},
{
"name": "工程设计市政行业载人索道专业",
"id": 685,
"type": 6,
"parentId": 343
},
{
"name": "工程设计市政行业轨道交通工程专业",
"id": 687,
"type": 6,
"parentId": 343
},
{
"name": "工程设计市政行业环境卫生工程专业",
"id": 689,
"type": 6,
"parentId": 343
}
],
"parentId": 233
},
{
"name": "工程设计农林行业",
"id": 345,
"type": 2,
"list": [
{
"name": "工程设计农林行业农业综合开发生态工程专业",
"id": 691,
"type": 6,
"parentId": 345
},
{
"name": "工程设计农林行业种植业工程专业",
"id": 693,
"type": 6,
"parentId": 345
},
{
"name": "工程设计农林行业兽医/畜牧工程专业",
"id": 695,
"type": 6,
"parentId": 345
},
{
"name": "工程设计农林行业渔港/渔业工程专业",
"id": 697,
"type": 6,
"parentId": 345
},
{
"name": "工程设计农林行业设施农业工程专业",
"id": 699,
"type": 6,
"parentId": 345
},
{
"name": "工程设计农林行业林产工业工程专业",
"id": 701,
"type": 6,
"parentId": 345
},
{
"name": "工程设计农林行业林产化学工程专业",
"id": 703,
"type": 6,
"parentId": 345
},
{
"name": "工程设计农林行业营造林工程专业",
"id": 705,
"type": 6,
"parentId": 345
},
{
"name": "工程设计农林行业森林资源环境工程专业",
"id": 707,
"type": 6,
"parentId": 345
},
{
"name": "工程设计农林行业森林工业工程专业",
"id": 709,
"type": 6,
"parentId": 345
}
],
"parentId": 233
},
{
"name": "工程设计水利行业",
"id": 347,
"type": 2,
"list": [
{
"name": "工程设计水利行业水库枢纽专业",
"id": 711,
"type": 6,
"parentId": 347
},
{
"name": "工程设计水利行业引调水专业",
"id": 713,
"type": 6,
"parentId": 347
},
{
"name": "工程设计水利行业灌溉排涝专业",
"id": 715,
"type": 6,
"parentId": 347
},
{
"name": "工程设计水利行业河道整治专业",
"id": 717,
"type": 6,
"parentId": 347
},
{
"name": "工程设计水利行业城市防洪专业",
"id": 719,
"type": 6,
"parentId": 347
},
{
"name": "工程设计水利行业围垦专业",
"id": 721,
"type": 6,
"parentId": 347
},
{
"name": "工程设计水利行业水土保持专业",
"id": 723,
"type": 6,
"parentId": 347
},
{
"name": "工程设计水利行业水文设施专业",
"id": 725,
"type": 6,
"parentId": 347
}
],
"parentId": 233
},
{
"name": "工程设计海洋行业",
"id": 349,
"type": 2,
"list": [
{
"name": "工程设计海洋行业沿岸工程专业",
"id": 727,
"type": 6,
"parentId": 349
},
{
"name": "工程设计海洋行业离岸工程专业",
"id": 729,
"type": 6,
"parentId": 349
},
{
"name": "工程设计海洋行业海水利用专业",
"id": 731,
"type": 6,
"parentId": 349
},
{
"name": "工程设计海洋行业海洋能利用专业",
"id": 733,
"type": 6,
"parentId": 349
}
],
"parentId": 233
},
{
"name": "工程设计建筑行业",
"id": 351,
"type": 2,
"list": [
{
"name": "工程设计建筑行业(建筑工程)",
"id": 735,
"type": 6,
"parentId": 351
},
{
"name": "工程设计建筑行业(人防工程)",
"id": 737,
"type": 6,
"parentId": 351
}
],
"parentId": 233
}
],
"parentId": 213
},
{
"name": "建筑工程设计事务所",
"id": 235,
"type": 1,
"list": [
{
"name": "工程设计建筑设计事务所",
"id": 353,
"type": 2,
"parentId": 235
},
{
"name": "工程设计结构设计事务所",
"id": 355,
"type": 2,
"parentId": 235
},
{
"name": "工程设计机电设计事务所",
"id": 357,
"type": 2,
"parentId": 235
}
],
"parentId": 213
},
{
"name": "工程设计专项资质",
"id": 237,
"type": 1,
"list": [
{
"name": "工程设计建筑装饰工程专项",
"id": 359,
"type": 2,
"parentId": 237
},
{
"name": "工程设计建筑智能化系统专项",
"id": 361,
"type": 2,
"parentId": 237
},
{
"name": "工程设计建筑幕墙工程专项",
"id": 363,
"type": 2,
"parentId": 237
},
{
"name": "工程设计轻型钢结构工程专项",
"id": 365,
"type": 2,
"parentId": 237
},
{
"name": "工程设计风景园林工程专项",
"id": 367,
"type": 2,
"parentId": 237
},
{
"name": "工程设计消防设施工程专项",
"id": 369,
"type": 2,
"parentId": 237
},
{
"name": "工程设计环境工程专项",
"id": 371,
"type": 2,
"list": [
{
"name": "工程设计环境工程专项(水污染防治工程)",
"id": 739,
"type": 6,
"parentId": 371
},
{
"name": "工程设计环境工程专项(大气污染防治工程)",
"id": 741,
"type": 6,
"parentId": 371
},
{
"name": "工程设计环境工程专项(固体废物处理处置工程)",
"id": 743,
"type": 6,
"parentId": 371
},
{
"name": "工程设计环境工程专项(物理污染防治工程)",
"id": 745,
"type": 6,
"parentId": 371
},
{
"name": "工程设计环境工程专项(污染修复工程)",
"id": 747,
"type": 6,
"parentId": 371
}
],
"parentId": 237
},
{
"name": "工程设计照明工程专项",
"id": 373,
"type": 2,
"parentId": 237
}
],
"parentId": 213
}
],
"parentId": 0
},
{
"name": "工程监理",
"id": 215,
"type": 0,
"list": [
{
"name": "工程监理综合资质",
"id": 239,
"type": 1,
"parentId": 215
},
{
"name": "工程监理专业资质",
"id": 241,
"type": 1,
"list": [
{
"name": "工程监理房屋建筑工程专业",
"id": 375,
"type": 2,
"parentId": 241
},
{
"name": "工程监理冶炼工程专业",
"id": 377,
"type": 2,
"parentId": 241
},
{
"name": "工程监理矿山工程专业",
"id": 379,
"type": 2,
"parentId": 241
},
{
"name": "工程监理化工石油工程专业",
"id": 381,
"type": 2,
"parentId": 241
},
{
"name": "工程监理水利水电工程专业",
"id": 383,
"type": 2,
"parentId": 241
},
{
"name": "工程监理电力工程专业",
"id": 385,
"type": 2,
"parentId": 241
},
{
"name": "工程监理农林工程专业",
"id": 387,
"type": 2,
"parentId": 241
},
{
"name": "工程监理铁路工程专业",
"id": 389,
"type": 2,
"parentId": 241
},
{
"name": "工程监理公路工程专业",
"id": 391,
"type": 2,
"parentId": 241
},
{
"name": "工程监理港口与航道工程专业",
"id": 393,
"type": 2,
"parentId": 241
},
{
"name": "工程监理航天航空工程专业",
"id": 395,
"type": 2,
"parentId": 241
},
{
"name": "工程监理通信工程专业",
"id": 397,
"type": 2,
"parentId": 241
},
{
"name": "工程监理市政公用工程专业",
"id": 399,
"type": 2,
"parentId": 241
},
{
"name": "工程监理机电安装工程专业",
"id": 401,
"type": 2,
"parentId": 241
}
],
"parentId": 215
},
{
"name": "工程监理事务所资质",
"id": 243,
"type": 1,
"list": [
{
"name": "工程监理事务所",
"id": 403,
"type": 2,
"parentId": 243
}
],
"parentId": 215
},
{
"name": "交通部监理",
"id": 3250,
"type": 1,
"list": [
{
"name": "公路工程监理",
"id": 3251,
"type": 2,
"list": [
{
"name": "公路工程专业",
"id": 3252,
"type": 6,
"parentId": 3251
},
{
"name": "公路工程特殊独立大桥专项",
"id": 3256,
"type": 6,
"parentId": 3251
},
{
"name": "公路工程特殊独立隧道专项",
"id": 3258,
"type": 6,
"parentId": 3251
},
{
"name": "公路工程公路机电工程专项",
"id": 3260,
"type": 6,
"parentId": 3251
}
],
"parentId": 3250
},
{
"name": "水运工程监理",
"id": 3262,
"type": 2,
"list": [
{
"name": "水运工程专业",
"id": 3263,
"type": 6,
"parentId": 3262
},
{
"name": "水运机电工程专项监理",
"id": 3267,
"type": 6,
"parentId": 3262
}
],
"parentId": 3250
}
],
"parentId": 215
},
{
"name": "水利部监理",
"id": 3269,
"type": 1,
"list": [
{
"name": "水利工程施工监理",
"id": 3270,
"type": 2,
"parentId": 3269
},
{
"name": "水土保持工程施工监理",
"id": 3274,
"type": 2,
"parentId": 3269
},
{
"name": "机电及金属结构设备制造监理",
"id": 3278,
"type": 2,
"parentId": 3269
},
{
"name": "水利工程建设环境保护监理",
"id": 3281,
"type": 2,
"parentId": 3269
}
],
"parentId": 215
},
{
"name": "住建部监理",
"id": 3300,
"type": 1,
"list": [
{
"name": "人防工程施工监理",
"id": 3301,
"type": 2,
"parentId": 3300
}
],
"parentId": 215
}
],
"parentId": 0
},
{
"name": "造价咨询企业资质",
"id": 221,
"type": 0,
"list": [
{
"name": "工程造价咨询",
"id": 255,
"type": 1,
"parentId": 221
}
],
"parentId": 0
}
]
\ No newline at end of file
.el-icon-arrow-down{
color: #C0C4CC;
}
.title_wrap,.el-divider{
border-color: #eee;
}
......@@ -203,3 +206,6 @@
}
}
.table-supplier .fixed-table .el-table__fixed-header-wrapper{
top: -16px !important;
}
<template>
<div v-loading="loading" class="market-container">
<iframe id="companyIframe" class="market-iframe" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" width="100%" :src="src" />
<div v-loading="loading" class="advisoryOrgan-container">
<iframe id="companyIframe" class="advisoryOrgan-iframe" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" width="100%" :src="src" />
</div>
</template>
......@@ -81,7 +81,7 @@ export default {
async iframeObserver() {
try {
await this.$nextTick();
this.iframeIns = document.querySelector(".market-iframe");
this.iframeIns = document.querySelector(".advisoryOrgan-iframe");
} catch (error) {
console.log(error);
}
......@@ -101,7 +101,7 @@ export default {
if (res.code == 200) {
this.timelongs = res.data.expire;
this.ak = res.data.accessToken;
this.src = `${this.domain}/search/market?ak=${this.ak}&initTime=${new Date().getTime()}&uid=${this.ak}&origin=${window.location.origin}`;
this.src = `${this.domain}/search/advisoryOrgan?ak=${this.ak}&initTime=${new Date().getTime()}&uid=${this.ak}&origin=${window.location.origin}`;
this.refreshtoken();
} else {
clearTimeout(this.tokentimer);
......@@ -140,7 +140,7 @@ export default {
</script>
<style lang="scss" scoped>
.market-container {
.advisoryOrgan-container {
width: 100%;
height: 100%;
padding: 16px 24px;
......@@ -150,7 +150,7 @@ export default {
left: 0;
top: 0;
.market-iframe {
.advisoryOrgan-iframe {
width: 100%;
height: 100%;
}
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -77,6 +77,7 @@
type="text"
auto-complete="off"
placeholder="请输入登录账号"
:onkeyup="loginForm.username = loginForm.username.replace(/\s+/g,'')"
>
<img class="img" slot="prefix" src="../assets/images/user.png"/>
</el-input>
......@@ -88,6 +89,7 @@
auto-complete="off"
placeholder="请输入账号密码"
@keyup.enter.native="handleLogin"
:onkeyup="loginForm.password = loginForm.password.replace(/\s+/g,'')"
>
<img class="img" slot="prefix" src="../assets/images/password.png"/>
</el-input>
......@@ -99,6 +101,7 @@
placeholder="请输入图形验证码"
style="width: 290px;float: left;"
@keyup.enter.native="handleLogin"
:onkeyup="loginForm.code = loginForm.code.replace(/\s+/g,'')"
>
<img class="img" slot="prefix" src="../assets/images/txyzm.png"/>
</el-input>
......
......@@ -25,46 +25,57 @@
</div>
<div class="content">
<div class="table-search">
<div class="total">162</div>
<div class="total">{{tableDataTotal}}</div>
<div class="right">
<span class="add" @click="addEnterprise">添加企业</span>
<span class="add1" @click="handleBatch">批量监控</span>
</div>
</div>
<div class="table-item">
<el-table
class="fixed-table"
element-loading-text="Loading"
:data="tableData"
border
highlight-current-row
>
<el-table-column label="序号" width="60" align="left" fixed>
<template slot-scope="scope">{{ queryParams.pageNum * queryParams.pageSize - queryParams.pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column label="监控对象" align="left" prop="companyName"></el-table-column>
<el-table-column label="风险动态" align="left">
<template slot-scope="scope">
<span class="color1 span">高风险 {{scope.row.highRiskCount}}</span>
<span class="color2 span">中风险 {{scope.row.middleRiskCount}}</span>
<span class="color3 span">低风险 {{scope.row.lowRiskCount}}</span>
<span class="color4 span">提示 {{scope.row.promptCount}}</span>
<span class="color5 span">正向 {{scope.row.positiveCount}}</span>
</template>
</el-table-column>
<el-table-column label="监控时间" width="240" align="left" prop="createTime"></el-table-column>
<el-table-column
label="操作"
align="left"
width="180"
class-name="small-padding fixed-width"
fixed="right"
<div v-if="tableDataTotal > 0 && !isSkeleton">
<el-table
class="fixed-table"
element-loading-text="Loading"
:data="tableData"
border
highlight-current-row
>
<template slot-scope="scope">
<span style="color:#0081FF;" @click="handleCancel(scope.row.companyId)">取消监控</span>
</template>
</el-table-column>
</el-table>
<el-table-column label="序号" width="60" align="left" fixed>
<template slot-scope="scope">{{ queryParams.pageNum * queryParams.pageSize - queryParams.pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column label="监控对象" align="left" prop="companyName"></el-table-column>
<el-table-column label="风险动态" align="left">
<template slot-scope="scope">
<span class="color1 span">高风险 {{scope.row.highRiskCount}}</span>
<span class="color2 span">中风险 {{scope.row.middleRiskCount}}</span>
<span class="color3 span">低风险 {{scope.row.lowRiskCount}}</span>
<span class="color4 span">提示 {{scope.row.promptCount}}</span>
<span class="color5 span">正向 {{scope.row.positiveCount}}</span>
</template>
</el-table-column>
<el-table-column label="监控时间" width="240" align="left" prop="createTime"></el-table-column>
<el-table-column
label="操作"
align="left"
width="180"
class-name="small-padding fixed-width"
fixed="right"
>
<template slot-scope="scope">
<span style="color:#0081FF;" @click="handleCancel(scope.row.companyId)">取消监控</span>
</template>
</el-table-column>
</el-table>
</div>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="empty" v-if="tableDataTotal === 0 && !isSkeleton">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div>
</div>
</div>
<div class="pagination-box" v-if="tableDataTotal>queryParams.pageSize">
<el-pagination background :current-page="queryParams.pageNum" :page-size="queryParams.pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div>
</div>
......@@ -100,7 +111,7 @@
</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="qyVisible=false">取消</el-button>
<el-button @click="handleCancel1">取消</el-button>
<el-button type="primary" @click="handleAdd">确定</el-button>
</div>
</el-dialog>
......@@ -136,12 +147,17 @@
<script>
import { companyPage,companyList,companyAdd,companyCancel,queryMonitorCompany } from '@/api/monitoring/monitoring'
import { getToken } from '@/utils/auth'
import skeleton from '../component/skeleton'
export default {
name: 'EnterpriseMonitoring',
components: {
skeleton
},
data() {
return {
radio:null,
date:[],
isSkeleton:true,
radioList:[
{
type:null,
......@@ -202,6 +218,7 @@
console.log(this.queryParams)
companyPage(this.queryParams).then(res => {
console.log(res)
this.isSkeleton = false;
this.tableData=res.rows
this.tableDataTotal=res.total
})
......@@ -210,13 +227,17 @@
this.addEnterprise()
},
changeCheckbox(item){
console.log(item)
if (this.cid.indexOf(item.id) == -1) {
this.cid.push(item.id)
} else {
this.cid.splice(this.cid.indexOf(item.id), 1)
}
},
handleCancel1(){
this.qyVisible=false;
this.companyName=''
this.dataList=[]
},
handleAdd(){
let data={
cid:this.cid
......@@ -266,6 +287,18 @@
break;
}
},
// 重置页数
handleSizeChange(val) {
this.queryParams.pageNum = 1
this.queryParams.pageSize = val
this.querySubmit()
},
// 跳转指定页数
handleCurrentChange(val) {
this.queryParams.pageNum = val
this.querySubmit()
window.scrollTo(0, 0);
},
// 时间选择改变后的回调
changePicker(value) {
if(value && value.length) {
......@@ -430,6 +463,27 @@
color: #0CBC6D;
}
}
.empty{
margin: 0 auto;
height: 550px;
text-align: center;
border-top: 1px solid #EFEFEF;
.img{
width: 108px;
height: 108px;
margin-bottom: 24px;
margin-top: 150px;
}
.p1{
color: #333333;
font-size: 16px;
}
.p2{
color: #999999;
font-size: 14px;
margin-top: 8px;
}
}
}
::v-deep .dialogAdd{
.el-dialog__body{
......
......@@ -75,7 +75,7 @@
</div>
<div class="main-item" style="line-height: 32px;">
<div class="label">手机号码</div>
<el-input class="phone" v-model="queryParams.phones" placeholder="请输入手机号"></el-input>
<el-input class="phone" v-model="queryParams.phones" placeholder="请输入手机号" oninput="value=value.replace(/[^\d]/g,'')"></el-input>
</div>
</div>
<div class="search">
......
......@@ -67,42 +67,53 @@
<div class="content">
<div class="total">{{tableDataTotal}}</div>
<div class="table-item">
<el-table
class="fixed-table"
:data="tableData"
element-loading-text="Loading"
border
highlight-current-row
>
<el-table-column label="序号" width="60" align="left" fixed>
<template slot-scope="scope">{{ queryParams.pageNum * queryParams.pageSize - queryParams.pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column label="监控对象" prop="companyName" align="left" width="250"></el-table-column>
<el-table-column label="风险级别" prop="riskLevel" align="left" width="120"></el-table-column>
<el-table-column label="监控类型" prop="parentName" align="left" width="150"></el-table-column>
<el-table-column label="动态内容" prop="details" align="left">
<template slot-scope="scope">
<div v-for="(item,index) in scope.row.Array" :key="index">
<div>
<span style="color: #999;">{{item.key}}</span>
<span>{{item.value}}</span>
</div>
</div>
</template>
</el-table-column>
<el-table-column label="更新时间" prop="createTime" align="left" width="150"></el-table-column>
<el-table-column
label="操作"
align="center"
width="150"
class-name="small-padding fixed-width"
fixed="right"
<div v-if="tableDataTotal > 0 && !isSkeleton">
<el-table
class="fixed-table"
:data="tableData"
element-loading-text="Loading"
border
highlight-current-row
>
<template slot-scope="scope">
<span style="cursor: pointer;" @click="handleDetail">查看详情</span>
</template>
</el-table-column>
</el-table>
<el-table-column label="序号" width="60" align="left" fixed>
<template slot-scope="scope">{{ queryParams.pageNum * queryParams.pageSize - queryParams.pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column label="监控对象" prop="companyName" align="left" width="250"></el-table-column>
<el-table-column label="风险级别" prop="riskLevel" align="left" width="120"></el-table-column>
<el-table-column label="监控类型" prop="parentName" align="left" width="150"></el-table-column>
<el-table-column label="动态内容" prop="details" align="left">
<template slot-scope="scope">
<div v-for="(item,index) in scope.row.Array" :key="index">
<div>
<span style="color: #999;">{{item.key}}</span>
<span>{{item.value}}</span>
</div>
</div>
</template>
</el-table-column>
<el-table-column label="更新时间" prop="createTime" align="left" width="150"></el-table-column>
<el-table-column
label="操作"
align="center"
width="150"
class-name="small-padding fixed-width"
fixed="right"
>
<template slot-scope="scope">
<span style="cursor: pointer;" @click="handleDetail">查看详情</span>
</template>
</el-table-column>
</el-table>
</div>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="empty" v-if="tableDataTotal === 0 && !isSkeleton">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div>
</div>
</div>
<div class="pagination-box" v-if="tableDataTotal>queryParams.pageSize">
<el-pagination background :current-page="queryParams.pageNum" :page-size="queryParams.pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div>
</div>
<el-dialog :visible.sync="dialogVisible" custom-class='dialog-claim' :title="title" width="720px" >
......@@ -149,14 +160,16 @@
import {changeTime} from "@/assets/js/common.js"
import { dynamicPage,companyDetail,rulesSelect } from '@/api/monitoring/monitoring'
import InfoTable from '../detail/party-a/component/infoTable';
import skeleton from '../component/skeleton'
export default {
name: 'MonitoringDynamics',
components: {
InfoTable
InfoTable,skeleton
},
data() {
return {
changeTime,
isSkeleton:true,
radio:null,
date:'',
radioList:[
......@@ -337,6 +350,7 @@
this.queryParams.condition.fxjbType=this.riskLevel.join()
}
dynamicPage(this.queryParams).then(res => {
this.isSkeleton = false;
this.tableData=res.rows;
this.tableDataTotal=res.total;
this.tableData.forEach(el => {
......@@ -433,6 +447,18 @@
break;
}
},
// 重置页数
handleSizeChange(val) {
this.queryParams.pageNum = 1
this.queryParams.pageSize = val
this.querySubmit()
},
// 跳转指定页数
handleCurrentChange(val) {
this.queryParams.pageNum = val
this.querySubmit()
window.scrollTo(0, 0);
},
// 时间选择改变后的回调
changePicker(value) {
if(value && value.length) {
......@@ -703,6 +729,27 @@
margin-right: 4px;
}
}
.empty{
margin: 0 auto;
height: 550px;
text-align: center;
border-top: 1px solid #EFEFEF;
.img{
width: 108px;
height: 108px;
margin-bottom: 24px;
margin-top: 150px;
}
.p1{
color: #333333;
font-size: 16px;
}
.p2{
color: #999999;
font-size: 14px;
margin-top: 8px;
}
}
}
::v-deep .dialog-claim{
.el-dialog__header{
......
......@@ -9,14 +9,14 @@
</el-tabs>
</div>
<div class="report-content">
<div class="list" v-for="item in dataList">
<div class="list" v-if="tableDataTotal > 0 && !isSkeleton" v-for="item in dataList">
<div class="list-title">
<div class="flex-box query-box">
<div class="flex-box query-params">
<span class="common-title">{{item.period}}</span>
</div>
<div class="flex-box query-ability">
<span style="color:#0081FF;padding: 0 4px;">13</span>家企业发生<span style="color:#F7965B;padding: 0 4px;">651</span>条动态信息
<span style="color:#0081FF;padding: 0 4px;">{{item.companyNum}}</span>家企业发生<span style="color:#F7965B;padding: 0 4px;">{{item.dynamicNum}}</span>条动态信息
</div>
</div>
</div>
......@@ -45,16 +45,27 @@
</div>
</div>
</div>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="empty" v-if="tableDataTotal === 0 && !isSkeleton">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div>
</div>
</div>
</div>
</template>
<script>
import { reportPage } from '@/api/monitoring/monitoring'
import skeleton from '../component/skeleton'
export default {
name: 'MonitoringReport',
components: {
skeleton
},
data() {
return {
isSkeleton:true,
activeName:'1',
dataList:[
{
......@@ -68,7 +79,8 @@
condition:{
reportType:1
}
}
},
tableDataTotal:0,
}
},
created() {
......@@ -78,7 +90,9 @@
async querySubmit() {
reportPage(this.queryParams).then(res => {
console.log(res)
this.dataList=res.rows
this.isSkeleton = false;
this.dataList=res.rows;
this.tableDataTotal=res.total
})
},
handleClick() {
......@@ -217,6 +231,28 @@
border-bottom:0;
}
}
.empty{
margin: 0 auto;
height: 550px;
text-align: center;
border-top: 1px solid #EFEFEF;
background: #ffffff;
.img{
width: 108px;
height: 108px;
margin-bottom: 24px;
margin-top: 150px;
}
.p1{
color: #333333;
font-size: 16px;
}
.p2{
color: #999999;
font-size: 14px;
margin-top: 8px;
}
}
}
}
</style>
......@@ -74,42 +74,53 @@
<div class="content">
<div class="total">{{tableDataTotal}}</div>
<div class="table-item">
<el-table
class="fixed-table"
:data="tableData"
element-loading-text="Loading"
border
highlight-current-row
>
<el-table-column label="序号" width="60" align="left" fixed>
<template slot-scope="scope">{{ queryParams.pageNum * queryParams.pageSize - queryParams.pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column label="监控对象" prop="companyName" align="left" width="250"></el-table-column>
<el-table-column label="风险级别" prop="riskLevel" align="left" width="120"></el-table-column>
<el-table-column label="监控类型" prop="parentName" align="left" width="150"></el-table-column>
<el-table-column label="动态内容" prop="details" align="left">
<template slot-scope="scope">
<div v-for="(item,index) in scope.row.Array" :key="index">
<div>
<span style="color: #999;">{{item.key}}</span>
<span>{{item.value}}</span>
</div>
</div>
</template>
</el-table-column>
<el-table-column label="更新时间" prop="createTime" align="left" width="150"></el-table-column>
<el-table-column
label="操作"
align="center"
width="150"
class-name="small-padding fixed-width"
fixed="right"
<div v-if="tableDataTotal > 0 && !isSkeleton">
<el-table
class="fixed-table"
:data="tableData"
element-loading-text="Loading"
border
highlight-current-row
>
<template slot-scope="scope">
<span style="cursor: pointer;" @click="handleDetail">查看详情</span>
</template>
</el-table-column>
</el-table>
<el-table-column label="序号" width="60" align="left" fixed>
<template slot-scope="scope">{{ queryParams.pageNum * queryParams.pageSize - queryParams.pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column label="监控对象" prop="companyName" align="left" width="250"></el-table-column>
<el-table-column label="风险级别" prop="riskLevel" align="left" width="120"></el-table-column>
<el-table-column label="监控类型" prop="parentName" align="left" width="150"></el-table-column>
<el-table-column label="动态内容" prop="details" align="left">
<template slot-scope="scope">
<div v-for="(item,index) in scope.row.Array" :key="index">
<div>
<span style="color: #999;">{{item.key}}</span>
<span>{{item.value}}</span>
</div>
</div>
</template>
</el-table-column>
<el-table-column label="更新时间" prop="createTime" align="left" width="150"></el-table-column>
<el-table-column
label="操作"
align="center"
width="150"
class-name="small-padding fixed-width"
fixed="right"
>
<template slot-scope="scope">
<span style="cursor: pointer;" @click="handleDetail">查看详情</span>
</template>
</el-table-column>
</el-table>
</div>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="empty" v-if="tableDataTotal === 0 && !isSkeleton">
<img class="img" src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div>
</div>
</div>
<div class="pagination-box" v-if="tableDataTotal>queryParams.pageSize">
<el-pagination background :current-page="queryParams.pageNum" :page-size="queryParams.pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div>
</div>
<el-dialog :visible.sync="dialogVisible" custom-class='dialog-claim' :title="title" width="720px" >
......@@ -142,14 +153,16 @@
import { dynamicPage,rulesSelect,companyDetail } from '@/api/monitoring/monitoring'
import InfoTable from '../detail/party-a/component/infoTable';
import {changeTime} from "@/assets/js/common.js"
import skeleton from '../component/skeleton'
export default {
name: 'MonitoringDynamics',
components: {
InfoTable
InfoTable,skeleton
},
data() {
return {
changeTime,
isSkeleton:true,
radio:0,
date:'',
radioList:[
......@@ -194,16 +207,6 @@
],
checkFx: true,
fxlxType:[],
jkType:[
{
value:'1',
label:'司法风险'
},
{
value:'2',
label:'工商变更'
},
],
selectList:[],
selectList1:[],
sffx:[],
......@@ -337,6 +340,7 @@
this.queryParams.condition.fxjbType=this.riskLevel.join()
}
dynamicPage(this.queryParams).then(res => {
this.isSkeleton = false;
this.object=res.object;
this.tableData=res.rows;
this.tableDataTotal=res.total;
......@@ -377,6 +381,18 @@
handleDetail(){
this.dialogVisible=true;
},
// 重置页数
handleSizeChange(val) {
this.queryParams.pageNum = 1
this.queryParams.pageSize = val
this.querySubmit()
},
// 跳转指定页数
handleCurrentChange(val) {
this.queryParams.pageNum = val
this.querySubmit()
window.scrollTo(0, 0);
},
// 时间格式化
formatDate(timeStr) {
let date = new Date(Number(timeStr));
......@@ -643,6 +659,27 @@
margin-right: 4px;
}
}
.empty{
margin: 0 auto;
height: 550px;
text-align: center;
border-top: 1px solid #EFEFEF;
.img{
width: 108px;
height: 108px;
margin-bottom: 24px;
margin-top: 150px;
}
.p1{
color: #333333;
font-size: 16px;
}
.p2{
color: #999999;
font-size: 14px;
margin-top: 8px;
}
}
}
::v-deep .dialog-claim{
.el-dialog__header{
......
......@@ -7,7 +7,7 @@
<el-tab-pane label="历史批量查询结果" name="third"></el-tab-pane>
</el-tabs>
</div>
<SearchAptitude v-if="activeName === 'first'"></SearchAptitude>
<SearchAptitude @changeActiveName="activeName = 'third'" v-if="activeName === 'first'"></SearchAptitude>
<AptitudeStandard v-if="activeName === 'second'"></AptitudeStandard>
<SearchResult v-if="activeName === 'third'"></SearchResult>
......
<template>
<div>
<div class="apt_stan_header">
<span v-for="(item,index) in list" class="apt_stan_header_span" :class="activeIndex==index?'active_span':''" :key="index" @click="activeIndex=index">{{item}}</span>
<span v-for="(item,index) in list" class="apt_stan_header_span" :class="activeIndex==index?'active_span':''" :key="index" @click="changeActiveIndex(index)">{{item.name}}</span>
</div>
<div class="apt_stan_content">
<div class="apt_stan_content_header">
<el-select v-model="value" placeholder="请选择">
<el-select v-model="value" value-key="id" @change="selectChange" placeholder="请选择">
<el-option
v-for="item in list[activeIndex].list"
:key="item.id"
:label="item.name"
:value="item">
</el-option>
</el-select>
<el-select v-model="value1" @change="selectChange1" v-if="options.length>0" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
:key="item.name"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
<div style="padding:16px;">
<el-table :data="tableData" :header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}" v-horizontal-scroll="'hover'"
<el-table :data="info.list" :span-method="objectSpanMethod" :header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}" v-horizontal-scroll="'hover'"
class="table-item1 fixed-table" border highlight-current-row>
<el-table-column label="资质名称" fixed >
<template slot-scope="scope">
{{scope.row.province}}
{{scope.row.name}}
</template>
</el-table-column>
<el-table-column label="等级" width="274">
<template slot-scope="scope">
{{scope.row.biddingCount||"--"}}
{{scope.row.level||"--"}}
</template>
</el-table-column>
<el-table-column label="经营范围" >
<template slot-scope="scope">
{{scope.row.landInfoCount||"--"}}
{{scope.row.contractScope||"--"}}
</template>
</el-table-column>
</el-table>
<div class="apt_stan_content_text_box">·建筑工程是指各类结构形式的民用建筑工程、工业建筑工程、构筑物工程以及相配套的道路、通信、管网管线等设施工程。工程内容包括地基与基础、主体结构、建筑屋面、装修装饰、建筑幕墙、附建人防工程以及给水排水及供暖、通风与空调、电气、消防、智能化、防雷等配套工程;</div>
<div class="apt_stan_content_text_box" v-html="info.remark||'--'"></div>
</div>
</div>
......@@ -44,33 +52,75 @@
</template>
<script>
import list from "@/assets/json/certs.json"
import {standard} from '@/api/supplier/assistant.js';
export default {
data(){
return{
tableData:[],
list,
activeIndex:0,
list:['建筑业企业资质','工程监理','工程设计','工程勘察','工程造价咨询'],
options: [
{
value: '选项1',
label: '黄金糕'
}, {
value: '选项2',
label: '双皮奶'
}, {
value: '选项3',
label: '蚵仔煎'
}, {
value: '选项4',
label: '龙须面'
}, {
value: '选项5',
label: '北京烤鸭'
}
],
value: ''
options: [],
value: '',
value1: '',
info:"",
}
},
methods:{
flitterData(arr) {
let spanOneArr = [];
let concatOne = 0;
arr.forEach((item, index) => {
if (index === 0) {
spanOneArr.push(1);
} else {
if (item.name === arr[index - 1].name) {
spanOneArr[concatOne] += 1;
spanOneArr.push(0);
} else {
spanOneArr.push(1);
concatOne = index;
}
}
});
return {
one: spanOneArr,
};
},
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 0) {
const _row = this.flitterData(this.info.list).one[rowIndex];
const _col = _row > 0 ? 1 : 0;
return {
rowspan: _row,
colspan: _col,
};
}
},
selectChange(){
if(this.value.list&&this.value.list.length>0){
this.options = this.value.list;
this.value1 = ""
}else{
this.options = []
standard({id:this.value.id}).then(res=>{
this.info = res.data
})
}
},
selectChange1(){
standard({id:this.value1}).then(res=>{
this.info = res.data
})
},
changeActiveIndex(index){
this.activeIndex=index;
this.value = '';
this.options = []
},
}
}
</script>
......
<template>
<el-dialog title="批量查资质" custom-class="batch_import_dialog" :visible.sync="visible">
<div class="upload" v-if="addfile==false">
<div class="upload" >
<div class="up_title">导入Excel文件,高效查询或导出企业信息;查询成功后可使用筛选项二次筛选</div>
<div>
<div class="step_box" v-for="(item,index) in list" :key="index">
......@@ -34,28 +34,14 @@
<div class="btn btn_default fr" @click="importCancel">取消</div>
</div>
</div>
<div class="success" v-if="addfile==true">
<div v-if="addsuccess==false">
<img class="img" src="@/assets/images/project/clock.png">
<div class="p1">查询客户中...</div>
<div class="p2">请耐心等待,过程大概30秒</div>
</div>
<div v-if="addsuccess == true">
<div class="p3">
<img src="@/assets/images/project/success.png">查询成功
</div>
<div class="p2">{{messages}}</div>
<div class="btns">
<div class="btn btn_primary h32" @click="getmsg">查看</div>
</div>
</div>
</div>
</el-dialog>
</template>
<script>
import { getToken } from "@/utils/auth";
import "@/assets/styles/project.scss"
import {importTemplate} from '@/api/supplier/assistant.js';
import {importData} from '@/api/custom/custom'
export default {
name: 'batchImport',
......@@ -67,7 +53,6 @@
list:['下载模版','按要求在模板内填写企业全称名录','上传文件','查询结果'],
visible:false,
isUpload:false,//有上传的文件
addfile:false,//已上传文件
addsuccess:false,//已成功加入数据
//批量导入
action:"",
......@@ -76,19 +61,11 @@
Authorization: "Bearer " + getToken(),
},
downloadhref:'',//样例地址
successCount:0,//成功条数
messages:'',
}
},
created(){
if(this.importtype == 'project'){//项目管理
this.downloadhref = '/file/projectTemplate.xlsx'
this.action = process.env.VUE_APP_BASE_API + '/business/info/upload'
}
if(this.importtype == 'custom'){//客户管理
this.downloadhref = '/file/Template.xlsx'
this.action = process.env.VUE_APP_BASE_API + "/customer/importData"
}
this.downloadhref = importTemplate
this.action = process.env.VUE_APP_BASE_API + '/export/aptitude/file'
},
methods:{
getmsg(){
......@@ -122,17 +99,10 @@
},
onSuccess(res, file, fileList) {
if (res.code == 200) {
this.successCount = res.successCount
if(this.importtype == 'project'){//项目管理
this.messages = res.msg
}
if(this.importtype == 'custom'){//客户管理
let num = res.data?res.data.length:0
let str = '成功导入客户条数'+res.successCount+',客户去重条数'+ num
this.messages = str
}
this.addsuccess = true
this.addsuccess = true;
this.$emit("loadingFn",true);
this.$refs["upload"].clearFiles();
this.isUpload = false;
}else {
this.importCancel()
this.$message.error({ message: res.msg, showClose: true })
......@@ -140,24 +110,25 @@
},
downloadClick() {
let a = document.createElement("a");
a.setAttribute("href", this.downloadhref);
a.setAttribute("download", "批量导入模版.xlsx");
document.body.appendChild(a);
a.click();
a.remove();
importTemplate().then(res=>{
const link = document.createElement('a')
const blob = new Blob([res])
link.href = window.URL.createObjectURL(blob)
link.download = '批量导入模版.xlsx'
link.click()
})
},
// 批量导入
importConfirmClick() {
if (this.fileList.length > 0) {
this.$refs["upload"].submit();
this.addfile = true
this.visible = false
this.$emit("loadingFn")
} else {
this.$message("请先选择文件");
}
},
importCancel(){
this.addfile = false
this.isUpload = false
this.addsuccess = false
this.fileList = []
......
<template>
<div>
<div v-loading="loading">
<div class="content">
<div class="content_item content_item_padding0">
<div class="label">企业名称</div>
<div class="content_right item_ckquery_list">
<el-input class="ename_input" clearable placeholder="多个企业用空格隔开" v-model="ename" @input="projectNamebtn('ename',ename,'关键字:')">
<div slot="append" class="btn-search" @click="search()">搜索</div>
<el-input class="ename_input" clearable placeholder="多个企业用空格隔开" v-model="keyword" >
<div slot="append" class="btn-search" @click="search(1)">搜索</div>
</el-input>
</div>
</div>
......@@ -34,7 +34,7 @@
</div>
</div>
</div>
<div class="content_item" style="margin-left:68px;">
<div class="content_item" v-if="aptitudeDtoList.length>1" style="margin-left:68px;">
<span v-for=" (kitme,k) in queryTypelist" :key="k">
<el-radio v-model="queryType" :label="kitme.key">
{{kitme.value}}
......@@ -43,12 +43,9 @@
</div>
<div class="content_item content_item1">
<div class="search-new">
<span @click="search()">查询</span>
<span style="color:#5B5B5B" @click="reset()">重置</span>
<span @click="$refs.batchImport.visible = true">批量查询</span>
</div>
<el-button type="primary" size="small" @click="search(1)">查询</el-button>
<el-button size="small" @click="reset()">重置</el-button>
<el-button size="small" @click="$refs.batchImport.visible = true">批量查询</el-button>
</div>
</div>
<div class="bottomlist">
......@@ -58,12 +55,12 @@
<span style="margin-right:4;color:rgba(35, 35, 35, 0.40);font-size: 18px;position: relative;top:2px;">·</span>共有{{total}}
</p>
</div>
<div class="title-right">
<!-- <div class="title-right">
<p>
<img src="@/assets/images/EXCEL.png" alt="">
<span class="excel" @click="clickDialog">导出EXCEL</span>
</p>
</div>
</div> -->
</div>
<div class="bd"></div>
<div class="table-item-jf table-item-jf1" v-if="tableData.length==0&& !isSkeleton">
......@@ -76,49 +73,49 @@
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class=" table-item-jf table-item " >
<div class="title_box">
<img src="@/assets/images/enterprise.png" >
<span class="name_box">{{ item.name }}</span>
<span class="float_r">符合条件资质({{ item.total }}<span v-if="item.total>5" class="show_more" @click="showClick(item)">查看所有 ></span></span></span>
<img :src="item.logoUrl?item.logoUrl:require('@/assets/images/enterprise.png')" >
<span class="name_box" v-html="item.ename"></span>
<span class="float_r">符合条件资质({{ item.size }}<span v-if="item.size>5" class="show_more" @click="showClick(item)">查看所有 ></span></span>
</div>
<el-table :data="item.list" :header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}" v-horizontal-scroll="'hover'"
<el-table :data="item.aptitudeListude" :header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}" v-horizontal-scroll="'hover'"
class="table-item1 fixed-table" border highlight-current-row>
<el-table-column label="证书编号" width="119">
<el-table-column label="证书编号" fixed width="119">
<template slot-scope="scope">
{{scope.row.supplierCount||"--"}}
{{scope.row.serial||"--"}}
</template>
</el-table-column>
<el-table-column label="资质名称" width="273">
<el-table-column label="资质名称" fixed width="273">
<template slot-scope="scope">
{{scope.row.biddingCount||"--"}}
{{scope.row.name||"--"}}
</template>
</el-table-column>
<el-table-column label="承包工程范围" width="415">
<template slot-scope="scope">
{{scope.row.landInfoCount||"--"}}
{{scope.row.contractScope||"--"}}
</template>
</el-table-column>
<el-table-column label="发证日期" width="119">
<template slot-scope="scope">
{{scope.row.bratingSubjectLevel||"--"}}
{{scope.row.issuTime||"--"}}
</template>
</el-table-column>
<el-table-column label="有效期至" width="119">
<template slot-scope="scope">
{{scope.row.bondBalance||"--"}}
{{scope.row.validate||"--"}}
</template>
</el-table-column>
<el-table-column label="发证机关" width="204">
<template slot-scope="scope">
{{scope.row.bondBalance1||"--"}}
{{scope.row.organ||"--"}}
</template>
</el-table-column>
<el-table-column label="经营范围" width="415">
<template slot-scope="scope">
<span class="line_2"> {{scope.row.bondBalance2||"--"}}</span>
<span class="line_2"> {{scope.row.businessScope||"--"}}</span>
</template>
</el-table-column>
......@@ -135,71 +132,92 @@
<el-dialog title="所有符合条件资质" custom-class="show_more_dialog" :visible.sync="showMore">
<div class=" table-item-jf table-item " >
<div class="title_box">
<img src="@/assets/images/enterprise.png" >
<span class="name_box">{{ dialogData.name }}</span>
<span class="float_r">共有 <span style="color: #0081FF;">{{ dialogData.total }}</span> 个资质</span>
</div>
<img src="@/assets/images/enterprise.png" >
<span class="name_box" v-html="ename"></span>
<span class="float_r">共有 <span style="color: #0081FF;">{{ dialogData.total }}</span> 个资质</span>
</div>
<el-table :data="dialogData.list" :header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}" v-horizontal-scroll="'hover'" class="table-item1 fixed-table" border highlight-current-row>
<el-table-column label="证书编号" width="119">
<el-table-column label="证书编号" fixed width="119">
<template slot-scope="scope">
{{scope.row.supplierCount||"--"}}
{{scope.row.serial||"--"}}
</template>
</el-table-column>
<el-table-column label="资质名称" width="273">
<el-table-column label="资质名称" fixed width="273">
<template slot-scope="scope">
{{scope.row.biddingCount||"--"}}
{{scope.row.name||"--"}}
</template>
</el-table-column>
<el-table-column label="承包工程范围" width="415">
<template slot-scope="scope">
{{scope.row.landInfoCount||"--"}}
{{scope.row.contractScope||"--"}}
</template>
</el-table-column>
<el-table-column label="发证日期" width="119">
<template slot-scope="scope">
{{scope.row.bratingSubjectLevel||"--"}}
{{scope.row.issuTime||"--"}}
</template>
</el-table-column>
<el-table-column label="有效期至" width="119">
<template slot-scope="scope">
{{scope.row.bondBalance||"--"}}
{{scope.row.validate||"--"}}
</template>
</el-table-column>
<el-table-column label="发证机关" width="204">
<template slot-scope="scope">
{{scope.row.bondBalance1||"--"}}
{{scope.row.organ||"--"}}
</template>
</el-table-column>
<el-table-column label="经营范围" width="415">
<template slot-scope="scope">
<span class="line_2"> {{scope.row.bondBalance2||"--"}}</span>
<span class="line_2"> {{scope.row.businessScope||"--"}}</span>
</template>
</el-table-column>
</el-table>
</div>
<div class="pagination clearfix" v-show="dialogData.total>5">
<el-pagination background :current-page="pageNum1" :page-size="pageSize" @current-change="handleCurrentChange1" layout="prev, pager, next"
:total="total">
<el-pagination background :current-page="pageNum1" :page-size="pageSize1" @current-change="handleCurrentChange1" layout="prev, pager, next"
:total="dialogData.total">
</el-pagination>
</div>
</el-dialog>
<BatchImport ref="batchImport"></BatchImport>
<ExportDialog :data="exportData" v-if="exportData.dialogExportVisible" @clickEXCEL="clickEXCEL"></ExportDialog>
<BatchImport ref="batchImport" @loadingFn="loadingFn"></BatchImport>
<ExportDialog :data="exportData" v-if="exportData.dialogExportVisible" @clickEXCEL="clickEXCEL"></ExportDialog>
<el-dialog
:visible.sync="successDialog"
:show-close="false"
custom-class="search_aptittude_success_dialog"
width="384px">
<div><img src="@/assets/images/success.png" alt=""><b>查询成功</b></div>
<div class="text">返回列表可查看批量查询结果</div>
<span slot="footer" class="dialog-footer">
<el-button @click="reUpload">重新上传</el-button>
<el-button type="primary" @click="toResult">查看结果</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import "@/assets/styles/public.scss";
import api from '@/api/enterpriseData/enterpriseData.js';
import {zjyjAptitude,enterpriseAptitude} from '@/api/supplier/assistant.js';
import skeleton from '@/views/project/projectList/component/skeleton';
import ExportDialog from "@/views/component/export-dialog"
import BatchImport from "./BatchImport"
import aptitudeCode from '@/assets/json/aptitudeCode.json';
export default {
components: { skeleton,ExportDialog,BatchImport },
data(){
return{
params:{},
successDialog:false,
loading:false,
batchImport:false,
ename: '',
aptitudeDtoList: [
......@@ -221,45 +239,15 @@ export default {
value: '同时具备'
},
],
queryType: 'and',
queryType: 'or',
optionss: [],
dialogData:{},
tableData: [
{
name:'中交第二航务工程局有限公司',
list:[
{
biddingCount:'工程勘察岩土工程专业(岩土工程勘察)甲级',
landInfoCount:'可承担一级以下公路,单座桥长 1000 米以下、单跨跨度 150 米以下的桥梁,长度 1000 米以下的隧道工程的施工。',
supplierCount:'B233000514',
bratingSubjectLevel:'2021-12-27',
bondBalance:'2021-12-27',
bondBalance1:'浙江省住房和城乡建设厅',
bondBalance2:'经营范围包含许可项目:建设工程设计;建设工程勘察;建设工程监理;建设工程施工;测绘服务;国土空间规划编制;水利工程建设监理(依法...',
}
],
total:10
},
{
name:'中交第二航务工程局有限公司',
list:[
{
biddingCount:'工程勘察岩土工程专业(岩土工程勘察)甲级',
landInfoCount:'可承担一级以下公路,单座桥长 1000 米以下、单跨跨度 150 米以下的桥梁,长度 1000 米以下的隧道工程的施工。',
supplierCount:'B233000514',
bratingSubjectLevel:'2021-12-27',
bondBalance:'2021-12-27',
bondBalance1:'浙江省住房和城乡建设厅',
bondBalance2:'经营范围包含许可项目:建设工程设计;建设工程勘察;建设工程监理;建设工程施工;测绘服务;国土空间规划编制;水利工程建设监理(依法...',
}
],
total:10
},
],
tableData: [],
total: 0,
pageNum: 1,
pageNum1: 1,
pageSize: 5,
pageSize1: 5,
dataEXCEL:{},
isSkeleton: false,
exportData:{
......@@ -287,6 +275,8 @@ export default {
exportEXCEL:{}
},
showMore:false,
keyword:"",
params1:{},
}
},
created(){
......@@ -301,25 +291,92 @@ export default {
}).catch(error => {
this.optionss = aptitudeCode;
});
this.search(1)
},
methods:{
projectNamebtn(){},
search(){},
reUpload(){
this.$refs.batchImport.visible = true;
this.successDialog = false
},
toResult(){
this.successDialog = false;
this.$emit("changeActiveName")
},
loadingFn(flag){
this.loading = !this.loading
if(flag){
this.successDialog = true
}
},
search(pageNum){
if(pageNum){
this.pageNum = pageNum
}
var aptitudeDtoList = [];
var dataList = {
codeStr: [],
};
for (let i = 0; i < this.aptitudeDtoList.length; i++) {
if (this.aptitudeDtoList[i].codeStr && this.aptitudeDtoList[i].codeStr.length > 0) {
dataList.codeStr.push(this.aptitudeDtoList[i].codeStr[this.aptitudeDtoList[i].codeStr.length -
1]);
}
dataList.queryType = this.queryType;
}
dataList.codeStr = dataList.codeStr.join(',');
aptitudeDtoList.push(dataList);
let params = {
"page": {
"page": this.pageNum,
"limit": this.pageSize
}
}
if(aptitudeDtoList.length>0){
params.aptitudeQueryDto = {aptitudeDtoList:aptitudeDtoList}
}
this.params = params
params.keyword = this.keyword
zjyjAptitude(params).then(res=>{
if(res.code==200){
this.tableData = res.data.list
this.total = res.data.total
}
})
},
showClick(item){
this.pageNum1 = 1
this.showMore = true;
this.dialogData = item
let params = {aptitudeQueryDto:this.params.aptitudeQueryDto};
params.page={
"page": this.pageNum1,
"limit": this.pageSize1
}
this.ename = item.ename;
params.eid=item.jskEid;
this.params1 = params
enterpriseAptitude(params).then(res=>{
if(res.code==200){
this.dialogData = res.data
}
})
},
handleCurrentChange(pageNum) {
this.pageNum = pageNum;
this.search(pageNum, this.pageSize);
this.search();
},
handleCurrentChange1(pageNum) {
this.pageNum1 = pageNum;
this.search(pageNum, this.pageSize);
this.params1.page.page = pageNum
enterpriseAptitude(this.params1).then(res=>{
if(res.code==200){
this.dialogData = res.data
}
})
},
handleSizeChange(pageSize) {
this.pageSize = pageSize;
this.search(this.pageNum, pageSize);
this.search(1);
},
reloadPage() {
this.pageFlag = false;
......@@ -328,10 +385,6 @@ export default {
});
},
optionsbtn(i) {
if (this.aptitudeDtoList.length > 1 && this.aptitudeDtoList[i].codeStr.length < 1) {
this.aptitudeDtoList.splice(i, 1);
i--;
}
this.$refs[i] && this.$refs[i][0].toggleDropDownVisible(false);
var _this = this;
//延迟500毫秒执行
......@@ -339,6 +392,7 @@ export default {
setTimeout(function () {
_this.aptitudeDtoList[i].nameStr = _this.$refs[i][0].$refs.input.$options.propsData.value;
}, 100);
console.log(_this.aptitudeDtoList)
}
},
addAptitudeDtoList(){
......@@ -351,10 +405,14 @@ export default {
if (n > 0) {
this.$message.warning("请选择资质条件后,增加资质!");
} else {
this.aptitudeDtoList.push({
nameStr: '',
codeStr: [],
});
if(this.aptitudeDtoList.length<6){
this.aptitudeDtoList.push({
nameStr: '',
codeStr: [],
});
}else{
this.$message.warning("最多可添加6组资质条!");
}
}
},
reset(){
......@@ -370,6 +428,7 @@ export default {
}).catch(error => {
this.optionss = aptitudeCode;
});
this.search(1)
},
clickDialog(){
this.exportData.dialogExportVisible=true;
......@@ -397,14 +456,44 @@ export default {
})
},
cancel(){
this.exportData.dialogExportVisible=false;
this.exportData.exportEXCEL={}
this.exportData.dialogExportVisible=false;
this.exportData.exportEXCEL={}
},
}
}
</script>
<style lang="scss" scoped>
<style lang="scss" scoped>
::v-deep .search_aptittude_success_dialog{
border-radius: 4px;
.el-dialog__header{
display: none;
}
.el-dialog__body{
padding: 20px;
}
.el-dialog__footer{
padding-top: 4px;
}
img{
width: 24px;
height: 24px;
margin-right: 12px;
}
b{
color: #232323;
font-size: 16px;
}
.text{
margin-left: 36px;
}
.el-button{
border-radius: 2px;
}
.el-button--default{
color:#232323;
}
}
.content {
padding: 0px 16px;
padding-top: 16px;
......@@ -550,7 +639,7 @@ export default {
}
.content_item1{
margin-top: 16px;
padding-top: 16px;
padding: 16px 0;
border-top: 1px solid #EEEEEE;
padding-left: 64px;
.search-new{
......@@ -707,9 +796,6 @@ export default {
overflow-y: clip;
}
}
.table-item-jf1 {
border-top: 1px solid #efefef;
}
.pagination {
padding: 14px;
.el-pagination {
......
......@@ -9,41 +9,61 @@
</el-table-column>
<el-table-column label="表格名称" >
<template slot-scope="scope">
{{scope.row.biddingCount||"--"}}
{{scope.row.fileName||"--"}}
</template>
</el-table-column>
<el-table-column label="查询时间" width="189">
<template slot-scope="scope">
{{scope.row.landInfoCount||"--"}}
{{scope.row.createTime||"--"}}
</template>
</el-table-column>
<el-table-column label="操作" width="154">
<template slot-scope="scope">
{{scope.row.bondBalance||"--"}}
<a class="download_span" :href="scope.row.url" v-if="scope.row.url">下载</a>
<span v-else >--</span>
</template>
</el-table-column>
</el-table>
<el-pagination background :current-page="pageNum" @current-change="handleCurrentChange" layout="prev, pager, next"
<el-pagination background v-if="total>0" :current-page="pageNum" @current-change="handleCurrentChange" layout="prev, pager, next"
:total="total">
</el-pagination>
</div>
</template>
<script>
import {list} from '@/api/supplier/assistant.js';
export default {
data(){
return{
tableData:[],
total: 0,
pageNum: 1,
pageSize:10,
}
},
created(){
this.getList()
},
methods:{
handleCurrentChange(pageNum) {
this.pageNum = pageNum;
this.getList()
},
getList(){
let params = {
pageNum:this.pageNum,
pageSize:this.pageSize,
}
list(params).then(res=>{
if(res.code==200){
this.tableData = res.rows
this.total = res.total
}
})
},
}
}
......@@ -60,6 +80,10 @@ export default {
margin-right: -5px;
margin-top: 16px;
}
.download_span{
color: #0081FF;
cursor: pointer;
}
}
</style>
\ No newline at end of file
......@@ -120,6 +120,11 @@
</el-table-column>
<el-table-column label="营业执照号码" min-width="180">
<template slot-scope="scope">
{{scope.row.unifySocialCode||"--"}}
</template>
</el-table-column>
<el-table-column label="推荐单位" min-width="280">
<template slot-scope="scope">
{{scope.row.recommendOrg||"--"}}
......@@ -140,14 +145,24 @@
{{scope.row.registerCity||"--"}}
</template>
</el-table-column>
<el-table-column label="专业类别" min-width="85" :resizable="false">
<el-table-column label="法人代表" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.groupSpecialty||"--"}}
{{scope.row.representative||"--"}}
</template>
</el-table-column>
<el-table-column label="法人代表" min-width="85" :resizable="false">
<el-table-column label="公司联系人" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.representative||"--"}}
{{scope.row.contactPerson||"--"}}
</template>
</el-table-column>
<el-table-column label="联系人电话" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.contactPhone||"--"}}
</template>
</el-table-column>
<el-table-column label="注册资本(万元)" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.registerCapital||"--"}}
</template>
</el-table-column>
<el-table-column label="纳税人身份" min-width="120" :resizable="false">
......@@ -160,29 +175,44 @@
{{scope.row.taxRate||"--"}}
</template>
</el-table-column>
<el-table-column label="施工承包范围" min-width="120" :resizable="false">
<el-table-column label="资质等级" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.credential||"--"}}
</template>
</el-table-column>
<el-table-column label="主项资质" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.constructJobScope||"--"}}
--
</template>
</el-table-column>
<el-table-column label="资质等级" min-width="85" :resizable="false">
<el-table-column label="劳务资质" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.credential||"--"}}
--
</template>
</el-table-column>
<el-table-column label="注册资本(万元)" min-width="120" :resizable="false">
<el-table-column label="施工队长" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.registerCapital||"--"}}
{{scope.row.leaderName||'--'}}
</template>
</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">
{{scope.row.contactPerson||"--"}}
{{scope.row.laborCaptainPhone||'--'}}
</template>
</el-table-column>
<el-table-column label="联系人电话" min-width="120" :resizable="false">
<el-table-column label="身份证号" min-width="180" :resizable="false">
<template slot-scope="scope">
{{scope.row.contactPhone||"--"}}
{{scope.row.laborCaptainIdcard||'--'}}
</template>
</el-table-column>
<el-table-column label="队伍规模" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.serviceTeamPersonnum||'--'}}
</template>
</el-table-column>
<el-table-column label="专业特长" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.serviceTeamSpeciality||"--"}}
</template>
</el-table-column>
<el-table-column label="准入时间" min-width="120" :resizable="false">
......
......@@ -204,12 +204,12 @@
</el-table-column>
<el-table-column label="联系人电话" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.contactPhone||"--"}}
</template>
</el-table-column>
<el-table-column label="准入时间" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.contactPhone||"--"}}
{{scope.row.approveDate2||"--"}}
</template>
</el-table-column>
<el-table-column label="公司合作数量" min-width="120" :resizable="false">
......
......@@ -21,7 +21,6 @@ import com.dsk.common.core.service.UserService;
import com.dsk.common.exception.ServiceException;
import com.dsk.common.helper.DataBaseHelper;
import com.dsk.common.helper.LoginHelper;
import com.dsk.common.tenant.helper.TenantHelper;
import com.dsk.common.utils.PasswordUtils;
import com.dsk.common.utils.StreamUtils;
import com.dsk.common.utils.StringUtils;
......@@ -515,8 +514,11 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
*/
@Override
public int updateUserStatus(SysUser user) {
Set<String> rolePermission = Objects.requireNonNull(LoginHelper.getLoginUser()).getRolePermission();
//如果禁用用户
if (UserConstants.USER_DISABLE.equals(user.getStatus())) {
if (UserConstants.USER_DISABLE.equals(user.getStatus())
&& (rolePermission.contains(TenantConstants.TENANT_SUPER_ADMIN_ROLE_KEY)
|| rolePermission.contains(TenantConstants.TENANT_ADMIN_ROLE_KEY))) {
//校验企业管理员角色下是否至少有一个可用账号
checkAdminHasUsers(baseMapper.selectUserById(user.getUserId()));
}
......
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