Commit 056f0b3f authored by danfuman's avatar danfuman

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

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys into V20231129-中建一局二公司
parents 09ef6491 7a12eb4e
......@@ -168,6 +168,7 @@ tenant:
- d_subcontract
- advisory_body
- advisory_body_project
- advisory_body_custom_form
- dim_area
- biz_dict_data
......
......@@ -5,19 +5,20 @@ 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.AdvisoryBodyCustomForm;
import com.dsk.cscec.domain.bo.*;
import com.dsk.cscec.domain.vo.*;
import com.dsk.cscec.service.AdvisoryBodyCustomFormService;
import com.dsk.cscec.service.AdvisoryBodyProjectService;
import com.dsk.cscec.service.AdvisoryBodyService;
import com.dsk.cscec.service.IDProjectService;
import org.springframework.transaction.annotation.Transactional;
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 org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 咨询机构管理控制层
......@@ -25,7 +26,6 @@ import javax.validation.constraints.NotBlank;
* @author sxk
* @since 2023-12-10 15:34:46
*/
@Validated
@RestController
@RequestMapping("advisory/body")
public class AdvisoryBodyManageController extends BaseController {
......@@ -35,6 +35,8 @@ public class AdvisoryBodyManageController extends BaseController {
private AdvisoryBodyService advisoryBodyService;
@Resource
private AdvisoryBodyProjectService advisoryBodyProjectService;
@Resource
private AdvisoryBodyCustomFormService advisoryBodyCustomFormService;
/**
* 获取所有项目列表数据
......@@ -56,7 +58,7 @@ public class AdvisoryBodyManageController extends BaseController {
* 获取合作项目明细
*/
@GetMapping("/getCooperateProjectDetailList")
public TableDataInfo<CooperateProjectDetailSearchVo> getCooperateProjectDetailList(CooperateProjectDetailSearchBo cooperateProjectDetailSearchBo, PageQuery pageQuery) {
public TableDataInfo<CooperateProjectDetailSearchVo> getCooperateProjectDetailList(@Validated CooperateProjectDetailSearchBo cooperateProjectDetailSearchBo, PageQuery pageQuery) {
return baseService.queryCooperateProjectDetailList(cooperateProjectDetailSearchBo, pageQuery);
}
......@@ -64,7 +66,7 @@ public class AdvisoryBodyManageController extends BaseController {
* 获取项目详情
*/
@GetMapping("/getProjectDetail")
public R<ProjectDetailVo> getProjectDetail(ProjectDetailBo projectDetailBo) {
public R<ProjectDetailVo> getProjectDetail(@Validated ProjectDetailBo projectDetailBo) {
return R.ok(baseService.queryProjectDetail(projectDetailBo));
}
......@@ -80,7 +82,33 @@ public class AdvisoryBodyManageController extends BaseController {
* 新增咨询机构
*/
@PostMapping("/addAdvisoryBody")
public R<Void> addAdvisoryBody(AddAdvisoryBodyBo addAdvisoryBodyBo) {
public R<Void> addAdvisoryBody(@Validated AddAdvisoryBodyBo addAdvisoryBodyBo) {
return toAjax(advisoryBodyService.addAdvisoryBody(addAdvisoryBodyBo));
}
/**
* 获取咨询机构自定义表单
*/
@GetMapping("/getAdvisoryBodyCustomForm/{projectKey}")
public R<AdvisoryBodyCustomForm> getAdvisoryBodyCustomForm(@Validated @NotNull(message = "项目主键不能为空") @PathVariable Long projectKey) {
return R.ok(advisoryBodyCustomFormService.getById(projectKey));
}
/**
* 新增咨询机构自定义表单
*/
@PostMapping("/addAdvisoryBodyCustomForm")
@Transactional(rollbackFor = Exception.class)
public R<Void> addAdvisoryBodyCustomForm(@Validated AdvisoryBodyCustomForm advisoryBodyCustomForm) {
return toAjax(advisoryBodyCustomFormService.save(advisoryBodyCustomForm));
}
/**
* 更新咨询机构自定义表单
*/
@PutMapping("/updateAdvisoryBodyCustomForm")
@Transactional(rollbackFor = Exception.class)
public R<Void> updateAdvisoryBodyCustomForm(@Validated AdvisoryBodyCustomForm advisoryBodyCustomForm) {
return toAjax(advisoryBodyCustomFormService.updateById(advisoryBodyCustomForm));
}
}
\ No newline at end of file
package com.dsk.cscec.entity;
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 javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
......@@ -15,17 +18,21 @@ import java.io.Serializable;
@EqualsAndHashCode(callSuper = true)
@Data
public class AdvisoryBodyCustomForm extends BaseEntity implements Serializable {
private static final long serialVersionUID = 385050456847400745L;
private static final long serialVersionUID = 1L;
/**
* 项目主键
*/
@TableId(value = "project_key")
@NotNull(message = "项目主键不能为空")
private Long projectKey;
/**
* 咨询机构ID
*/
@NotNull(message = "咨询机构ID不能为空")
private Long advisoryBodyId;
/**
* json数据
*/
@NotBlank(message = "json数据不能为空")
private String jsonData;
}
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;
......@@ -13,9 +11,8 @@ import java.util.Date;
* @author sxk
* @since 2023-12-10 15:34:49
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class DProject extends BaseEntity implements Serializable {
public class DProject implements Serializable {
private static final long serialVersionUID = 1L;
/**
......
package com.dsk.cscec.domain.bo;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
......@@ -57,10 +58,12 @@ public class AddAdvisoryBodyBo {
/**
* 结算开始时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date settleStartTime;
/**
* 结算完成时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date settleFinishTime;
/**
* 是否为终审单位(0代表是 1代表否)
......
package com.dsk.cscec.domain.vo;
import com.dsk.cscec.domain.AdvisoryBody;
import com.dsk.cscec.domain.AdvisoryBodyProject;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
......@@ -67,6 +67,11 @@ public class CooperateProjectDetailSearchVo {
*/
private BigDecimal contractOrigValue;
/**
* 咨询机构与项目关联信息
*/
private AdvisoryBodyProject advisoryBodyProject;
/**
* 结算天数(天)
*/
......@@ -82,11 +87,6 @@ public class CooperateProjectDetailSearchVo {
*/
private String contractOrgName;
/**
* 咨询机构(咨询机构表)
*/
private AdvisoryBody advisoryBody;
/**
* 创建时间(合同生效日期)
*/
......
package com.dsk.cscec.mapper;
import com.dsk.cscec.entity.AdvisoryBodyCustomForm;
import org.apache.ibatis.annotations.Param;
import org.springframework.data.domain.Pageable;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.cscec.domain.AdvisoryBodyCustomForm;
/**
* 咨询机构自定义表单(AdvisoryBodyCustomForm)表数据库访问层
......@@ -11,7 +9,7 @@ import java.util.List;
* @author sxk
* @since 2023-12-20 16:39:37
*/
public interface AdvisoryBodyCustomFormMapper {
public interface AdvisoryBodyCustomFormMapper extends BaseMapper<AdvisoryBodyCustomForm> {
}
package com.dsk.cscec.service;
import com.dsk.cscec.entity.AdvisoryBodyCustomForm;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.cscec.domain.AdvisoryBodyCustomForm;
/**
* 咨询机构自定义表单(AdvisoryBodyCustomForm)表服务接口
*
* @author sxk
* @since 2023-12-20 16:39:44
* @author makejava
* @since 2023-12-20 17:33:31
*/
public interface AdvisoryBodyCustomFormService {
public interface AdvisoryBodyCustomFormService extends IService<AdvisoryBodyCustomForm> {
}
package com.dsk.cscec.service.impl;
import com.dsk.cscec.entity.AdvisoryBodyCustomForm;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.cscec.domain.AdvisoryBodyCustomForm;
import com.dsk.cscec.mapper.AdvisoryBodyCustomFormMapper;
import com.dsk.cscec.service.AdvisoryBodyCustomFormService;
import org.springframework.stereotype.Service;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import javax.annotation.Resource;
......@@ -14,12 +12,10 @@ import javax.annotation.Resource;
* 咨询机构自定义表单(AdvisoryBodyCustomForm)表服务实现类
*
* @author sxk
* @since 2023-12-20 16:39:44
* @since 2023-12-20 17:33:31
*/
@Service("advisoryBodyCustomFormService")
public class AdvisoryBodyCustomFormServiceImpl implements AdvisoryBodyCustomFormService {
public class AdvisoryBodyCustomFormServiceImpl extends ServiceImpl<AdvisoryBodyCustomFormMapper, AdvisoryBodyCustomForm> implements AdvisoryBodyCustomFormService {
@Resource
private AdvisoryBodyCustomFormMapper advisoryBodyCustomFormMapper;
private AdvisoryBodyCustomFormMapper baseMapper;
}
package com.dsk.cscec.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
......@@ -27,7 +28,6 @@ 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;
......@@ -132,17 +132,18 @@ public class AdvisoryBodyServiceImpl extends ServiceImpl<AdvisoryBodyMapper, Adv
List<Map<String, Object>> data = (List<Map<String, Object>>) jskData.get("list");
for (Map<String, Object> companyData : data) {
//企业名称完全匹配上,则直接返回给前端
if (advisoryBodyName.equals(companyData.get("name"))) {
String companyName = StringUtils.removeRed(MapUtils.getString(companyData, "name","NotExist"));
if (advisoryBodyName.equals(companyName)) {
AdvisoryBodyExistVo advisoryBodyExistVo = new AdvisoryBodyExistVo();
advisoryBodyExistVo.setAdvisoryBodyCid(Math.toIntExact(MapUtils.getLong(companyData, "jskEid")));
advisoryBodyExistVo.setAdvisoryBodyName(MapUtils.getString(companyData, "name"));
advisoryBodyExistVo.setAdvisoryBodyName(companyName);
advisoryBodyExistVo.setBusinessScope(MapUtils.getString(companyData, "businessScope"));
advisoryBodyExistVo.setIsNewAdvisoryBody(true);
break;
return advisoryBodyExistVo;
}
}
//查不到则抛异常
throw new ServiceException("咨询机构不存在");
throw new ServiceException("咨询机构不存在或结果不唯一,请输入完整咨询机构企业名称");
}
}
return null;
......@@ -157,20 +158,24 @@ public class AdvisoryBodyServiceImpl extends ServiceImpl<AdvisoryBodyMapper, Adv
@Override
@Transactional(rollbackFor = Exception.class)
public Integer addAdvisoryBody(AddAdvisoryBodyBo addAdvisoryBodyBo) {
long advisoryBodyId = IdUtil.getSnowflakeNextId();;
//如果是新增咨询机构,则需要新增记录到咨询机构表
if (addAdvisoryBodyBo.getIsNewAdvisoryBody()) {
AdvisoryBody newAdvisoryBody = BeanUtil.toBean(addAdvisoryBodyBo, AdvisoryBody.class);
newAdvisoryBody.setCreateTime(new Date());
newAdvisoryBody.setAdvisoryBodyId(advisoryBodyId);
baseMapper.insert(newAdvisoryBody);
}
return advisoryBodyProjectMapper.insert(BeanUtil.toBean(addAdvisoryBodyBo, AdvisoryBodyProject.class));
AdvisoryBodyProject advisoryBodyProject = BeanUtil.toBean(addAdvisoryBodyBo, AdvisoryBodyProject.class);
advisoryBodyProject.setAdvisoryBodyId(advisoryBodyId);
return advisoryBodyProjectMapper.insert(advisoryBodyProject);
}
/**
* 每小时更新一次咨询机构经营范围
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void updateAdvisoryBodyBusinessScope() {
EnterpriseInfoHeaderBody infoHeaderBody = new EnterpriseInfoHeaderBody();
for (AdvisoryBody advisoryBody : baseMapper.selectList(null)) {
......
......@@ -35,6 +35,7 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
......@@ -80,9 +81,14 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
Page<ProjectSearchVo> page = baseMapper.selectPageProjectList(pageQuery.build(), this.buildProjectQueryWrapper(projectSearchBo, projectKeys));
//补充咨询机构信息
for (ProjectSearchVo projectSearchVo : page.getRecords()) {
//补充咨询机构信息
projectSearchVo.setAdvisoryBody(this.getAdvisoryBodyByProjectKey(projectSearchVo.getProjectKey()));
//关键字标红
if (StringUtils.isNotBlank(projectSearchBo.getProjectName())) {
projectSearchVo.setProjectName(StringUtils.markInRed(projectSearchVo.getProjectName(), projectSearchBo.getProjectName()));
}
}
return TableDataInfo.build(page);
}
......@@ -103,7 +109,7 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
.like(StringUtils.isNotBlank(projectSearchBo.getOwnerUnit()), "p.owner_name", projectSearchBo.getOwnerUnit())
//项目创建时间(字段去的合同签约日期)
.between(ObjectUtil.isNotNull(projectSearchBo.getProjectStartTime()) && ObjectUtil.isNotNull(projectSearchBo.getProjectEndTime()),
"p.sign_date",
"p.contract_sign_date",
projectSearchBo.getProjectStartTime(),
projectSearchBo.getProjectEndTime())
//项目承接类型下拉选项
......@@ -142,7 +148,6 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
public TableDataInfo<CooperateProjectDetailSearchVo> queryCooperateProjectDetailList(CooperateProjectDetailSearchBo cooperateProjectDetailSearchBo, PageQuery pageQuery) {
//先根据咨询机构CID查出所有该咨询机构下的项目主键keys
List<Long> projectKeys = advisoryBodyProjectMapper.selectProjectKeysByAdvisoryBodyCids(Collections.singletonList(cooperateProjectDetailSearchBo.getAdvisoryBodyCid()));
//再根据记录终改的项目主键查询项目详情
QueryWrapper<DProject> wrapper = Wrappers.query();
wrapper
......@@ -151,22 +156,36 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
//项目名称
.like(StringUtils.isNotBlank(cooperateProjectDetailSearchBo.getProjectName()), "project_name", cooperateProjectDetailSearchBo.getProjectName())
//项目承接类型
.in(!cooperateProjectDetailSearchBo.getIsinvestproject().isEmpty(), "isinvestproject", cooperateProjectDetailSearchBo.getIsinvestproject())
.in(ObjectUtil.isNotNull(cooperateProjectDetailSearchBo.getIsinvestproject()), "isinvestproject", cooperateProjectDetailSearchBo.getIsinvestproject())
//工程基础大类
.in(!cooperateProjectDetailSearchBo.getProjectType1().isEmpty(), "project_type1", cooperateProjectDetailSearchBo.getProjectType1())
.in(ObjectUtil.isNotNull(cooperateProjectDetailSearchBo.getProjectType1()), "project_type1", cooperateProjectDetailSearchBo.getProjectType1())
//工程类别明细
.in(!cooperateProjectDetailSearchBo.getProjectType().isEmpty(), "project_type", cooperateProjectDetailSearchBo.getProjectType())
.in(ObjectUtil.isNotNull(cooperateProjectDetailSearchBo.getProjectType()), "project_type", cooperateProjectDetailSearchBo.getProjectType())
//项目地区
.in(!cooperateProjectDetailSearchBo.getProvinceName().isEmpty(), "province_name", cooperateProjectDetailSearchBo.getProvinceName())
.in(ObjectUtil.isNotNull(cooperateProjectDetailSearchBo.getProvinceName()), "province_name", cooperateProjectDetailSearchBo.getProvinceName())
.or()
.in(!cooperateProjectDetailSearchBo.getCityName().isEmpty(), "city_name", cooperateProjectDetailSearchBo.getCityName());
.in(ObjectUtil.isNotNull(cooperateProjectDetailSearchBo.getCityName()), "city_name", cooperateProjectDetailSearchBo.getCityName());
Page<CooperateProjectDetailSearchVo> page = baseMapper.selectPageCooperateProjectDetailList(pageQuery.build(), wrapper);
//填充结算天数
for (CooperateProjectDetailSearchVo cooperateProjectDetailSearchVo : page.getRecords()) {
AdvisoryBodyProject advisoryBodyProject = advisoryBodyProjectMapper.selectById(cooperateProjectDetailSearchVo.getProjectKey());
long betweenDays = DateUtil.between(advisoryBodyProject.getSettleStartTime(), advisoryBodyProject.getSettleFinishTime(), DateUnit.DAY);
cooperateProjectDetailSearchVo.setSettlementDays(betweenDays);
//填充咨询机构与项目关联信息
cooperateProjectDetailSearchVo.setAdvisoryBodyProject(advisoryBodyProject);
//填充结算天数
if (ObjectUtil.isNotNull(advisoryBodyProject)) {
Date settleStartTime = advisoryBodyProject.getSettleStartTime();
Date settleFinishTime = advisoryBodyProject.getSettleFinishTime();
if (ObjectUtil.isNotNull(settleStartTime)&& ObjectUtil.isNotNull(settleFinishTime)) {
cooperateProjectDetailSearchVo.setSettlementDays(DateUtil.between(settleStartTime, settleFinishTime, DateUnit.DAY));
}else {
cooperateProjectDetailSearchVo.setSettlementDays(0L);
}
}
//关键字标红
if (StringUtils.isNotBlank(cooperateProjectDetailSearchBo.getProjectName())) {
cooperateProjectDetailSearchVo.setProjectName(StringUtils.markInRed(cooperateProjectDetailSearchVo.getProjectName(), cooperateProjectDetailSearchBo.getProjectName()));
}
}
return TableDataInfo.build(page);
}
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.cscec.mapper.AdvisoryBodyCustomFormMapper">
</mapper>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.cscec.mapper.AdvisoryBodyCustomFormMapper">
</mapper>
\ No newline at end of file
......@@ -41,3 +41,9 @@ export const getAreaListApi = () => request({
url: "/area/all/withoutRegion",
method: "get"
});
//获取地区树
export const getAllAreaApi = () => request({
url: '/area/all',
method: 'get',
});
import request from '@/utils/request';
/**
* 获取(常合作业主单位、常合作施工单位、常合作集团)列表
* @param {*} data
* @returns
*/
export const getCooperativeOwnerUnitsListApi = (data) => request({
url: "/consultancy/detailPage",
method: "post",
data
});
\ No newline at end of file
import request from '@/utils/request';
/**
* 获取咨询机构合作列表
* @param {*} data
* @returns
*/
export const getConsultingAgencyCooperationListApi = (data) => request({
url: "/customerInfo/advisoryList",
method: "get",
data
});
/**
* 供应商准入情况
* @param {*} params
* @returns
*/
export const getSupplierAccessInfoApi = (params) => request({
url: "/customerInfo/approveInfo",
method: "get",
params
});
/**
* 导出咨询机构合作记录excel文件
* @param {*} params
* @returns
*/
export const exportRecordOfCooperationExcelApi = (params) => request({
url: "/customerInfo/advisoryExport",
method: "get",
params,
responseType: "blob"
});
/**
* 供应商合作记录列表
* @param {*} params
* @returns
*/
export const getSupplierCooperationRecordListApi = (params) => request({
url: "/customerInfo/cooperationList",
method: "get",
params,
});
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="16" height="16" viewBox="0 0 16 16"><defs><clipPath id="master_svg0_181_024631"><rect x="0" y="0" width="16" height="16" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_181_024631)"><g><g><g><rect x="0" y="0" width="16" height="16" rx="0" fill="#FFFFFF" fill-opacity="0.009999999776482582"/></g><g><path d="M3.9996778125,11.500654375L14.6663078125,11.500654375Q14.7156078125,11.500654375,14.7639078125,11.491044375Q14.8122078125,11.481434375,14.8577078125,11.462594375Q14.9032078125,11.443744375,14.9441078125,11.416384375Q14.9851078125,11.389024375,15.0199078125,11.354204375Q15.0547078125,11.319384375,15.0821078125,11.278434375Q15.1094078125,11.237494375,15.1283078125,11.191994375Q15.1471078125,11.146494375,15.1567078125,11.098194375Q15.1663078125,11.049894375,15.1663078125,11.000654375L15.1663078125,2.333984375Q15.1663078125,2.284738675,15.1567078125,2.236439275Q15.1471078125,2.188139375,15.1283078125,2.142642375Q15.1094078125,2.097145375,15.0821078125,2.056199375Q15.0547078125,2.015253375,15.0199078125,1.980431375Q14.9851078125,1.945609375,14.9441078125,1.918249375Q14.9032078125,1.8908903750000001,14.8577078125,1.872044375Q14.8122078125,1.853199375,14.7639078125,1.843591375Q14.7156078125,1.833984375,14.6663078125,1.833984375L1.3330078125,1.833984375Q1.2837621125,1.833984375,1.2354627125,1.843591375Q1.1871628125,1.853199375,1.1416658124999999,1.872044375Q1.0961688125,1.8908903750000001,1.0552228125,1.918249375Q1.0142768125,1.945609375,0.9794548125,1.980431375Q0.9446328125,2.015253375,0.9172728125,2.056199375Q0.8899138125,2.097145375,0.8710678125,2.142642375Q0.8522228125,2.188139375,0.8426148124999999,2.236439275Q0.8330078125,2.284738675,0.8330078125,2.333984375L0.8330078125,11.000654375Q0.8330078125,11.049894375,0.8426148124999999,11.098194375Q0.8522228125,11.146494375,0.8710678125,11.191994375Q0.8899138125,11.237484375,0.9172728125,11.278434375Q0.9446328125,11.319384375,0.9794548125,11.354204375Q1.0142768125,11.389024375,1.0552228125,11.416384375Q1.0961688125,11.443744375,1.1416658124999999,11.462584375Q1.1871628125,11.481434375,1.2354627125,11.491044375Q1.2837621125,11.500654375,1.3330078125,11.500654375L3.9996778125,11.500654375ZM14.1663078125,10.500654375L1.8330078125,10.500654375L1.8330078125,2.833984375L14.1663078125,2.833984375L14.1663078125,10.500654375Z" fill-rule="evenodd" fill="#232323" fill-opacity="1"/></g><g><path d="M4.8330078125,7.333984375L4.8330078125,8.667314375Q4.8330078125,8.716564375,4.8426148125,8.764864375Q4.8522228125,8.813164375,4.8710678125,8.858664375Q4.8899138125,8.904154375000001,4.9172728125,8.945104375Q4.9446328125,8.986044375,4.9794548125,9.020874375Q5.0142768125,9.055694375,5.0552228125,9.083054375Q5.0961688125,9.110414375,5.1416658125,9.129254375Q5.1871628125,9.148104374999999,5.2354627125,9.157714375Q5.2837621125,9.167314375,5.3330078125,9.167314375Q5.3822535125,9.167314375,5.4305529125,9.157714375Q5.4788528125,9.148104374999999,5.5243498125,9.129254375Q5.5698468125,9.110414375,5.6107928125,9.083054375Q5.6517388125,9.055694375,5.6865608125,9.020874375Q5.7213828125,8.986044375,5.7487428125,8.945104375Q5.7761018125,8.904154375000001,5.7949478125,8.858664375Q5.8137928125,8.813164375,5.8234008125,8.764864375Q5.8330078125,8.716564375,5.8330078125,8.667314375L5.8330078125,7.333984375Q5.8330078125,7.284738675,5.8234008125,7.236439275Q5.8137928125,7.188139375,5.7949478125,7.142642375Q5.7761018125,7.097145375,5.7487428125,7.056199375Q5.7213828125,7.015253375,5.6865608125,6.980431375Q5.6517388125,6.945609375,5.6107928125,6.918249375Q5.5698468125,6.890890375,5.5243498125,6.872044375Q5.4788528125,6.853199375,5.4305529125,6.843591375Q5.3822535125,6.833984375,5.3330078125,6.833984375Q5.2837621125,6.833984375,5.2354627125,6.843591375Q5.1871628125,6.853199375,5.1416658125,6.872044375Q5.0961688125,6.890890375,5.0552228125,6.918249375Q5.0142768125,6.945609375,4.9794548125,6.980431375Q4.9446328125,7.015253375,4.9172728125,7.056199375Q4.8899138125,7.097145375,4.8710678125,7.142642375Q4.8522228125,7.188139375,4.8426148125,7.236439275Q4.8330078125,7.284738675,4.8330078125,7.333984375Z" fill-rule="evenodd" fill="#232323" fill-opacity="1"/></g><g><path d="M7.5,11L7.5,13Q7.5,13.04925,7.509607,13.09754Q7.519215,13.14584,7.53806,13.19134Q7.556906,13.23684,7.584265,13.27778Q7.611625,13.31873,7.646447,13.35355Q7.681269,13.38838,7.722215,13.41573Q7.763161,13.44309,7.808658,13.46194Q7.854155,13.48078,7.9024549,13.49039Q7.9507543,13.5,8,13.5Q8.0492457,13.5,8.0975451,13.49039Q8.145845,13.48078,8.191342,13.46194Q8.236839,13.44309,8.277785,13.41573Q8.318731,13.38838,8.353553,13.35355Q8.388375,13.31873,8.415735,13.27779Q8.443094,13.23684,8.46194,13.19134Q8.480785000000001,13.14584,8.490393,13.09754Q8.5,13.04925,8.5,13L8.5,11Q8.5,10.9507543,8.490393,10.9024549Q8.480785000000001,10.854155,8.46194,10.808658Q8.443094,10.763161,8.415735,10.722215Q8.388375,10.681269,8.353553,10.646447Q8.318731,10.611625,8.277785,10.584265Q8.236839,10.556906,8.191342,10.53806Q8.145845,10.519214999999999,8.0975451,10.509607Q8.0492457,10.5,8,10.5Q7.9507543,10.5,7.9024549,10.509607Q7.854155,10.519214999999999,7.808658,10.53806Q7.763161,10.556906,7.722215,10.584265Q7.681269,10.611625,7.646447,10.646447Q7.611625,10.681269,7.584265,10.722215Q7.556906,10.763161,7.53806,10.808658Q7.519215,10.854155,7.509607,10.9024549Q7.5,10.9507543,7.5,11Z" fill-rule="evenodd" fill="#232323" fill-opacity="1"/></g><g><path d="M7.5,6L7.5,8.66667Q7.5,8.715910000000001,7.509607,8.76421Q7.519215,8.81251,7.53806,8.85801Q7.556906,8.90351,7.584265,8.94445Q7.611625,8.9854,7.646447,9.02022Q7.681269,9.05504,7.722215,9.0824Q7.763161,9.10976,7.808658,9.12861Q7.854155,9.14745,7.9024549,9.15706Q7.9507543,9.16667,8,9.16667Q8.0492457,9.16667,8.0975451,9.15706Q8.145845,9.14745,8.191342,9.12861Q8.236839,9.10976,8.277785,9.0824Q8.318731,9.05504,8.353553,9.02022Q8.388375,8.9854,8.415735,8.94445Q8.443094,8.90351,8.46194,8.85801Q8.480785000000001,8.81251,8.490393,8.76421Q8.5,8.715910000000001,8.5,8.66667L8.5,6Q8.5,5.9507543,8.490393,5.9024549Q8.480785000000001,5.854155,8.46194,5.808658Q8.443094,5.763161,8.415735,5.722215Q8.388375,5.681269,8.353553,5.646447Q8.318731,5.611625,8.277785,5.584265Q8.236839,5.556906,8.191342,5.53806Q8.145845,5.519215,8.0975451,5.509607Q8.0492457,5.5,8,5.5Q7.9507543,5.5,7.9024549,5.509607Q7.854155,5.519215,7.808658,5.53806Q7.763161,5.556906,7.722215,5.584265Q7.681269,5.611625,7.646447,5.646447Q7.611625,5.681269,7.584265,5.722215Q7.556906,5.763161,7.53806,5.808658Q7.519215,5.854155,7.509607,5.9024549Q7.5,5.9507543,7.5,6Z" fill-rule="evenodd" fill="#232323" fill-opacity="1"/></g><g><path d="M10.1669921875,4.666015625L10.1669921875,8.666015625Q10.1669921875,8.715265625,10.1765991875,8.763565625Q10.186207187499999,8.811855625,10.2050521875,8.857355625Q10.2238981875,8.902855625,10.2512571875,8.943795625Q10.2786171875,8.984745625,10.3134391875,9.019565625Q10.3482611875,9.054385625,10.3892071875,9.081745625Q10.4301531875,9.109105625,10.4756501875,9.127955625Q10.5211471875,9.146795625,10.5694470875,9.156405625Q10.6177464875,9.166015625,10.6669921875,9.166015625Q10.7162378875,9.166015625,10.7645372875,9.156405625Q10.8128371875,9.146795625,10.8583341875,9.127955625Q10.9038311875,9.109105625,10.9447771875,9.081745625Q10.9857231875,9.054385625,11.0205451875,9.019565625Q11.0553671875,8.984745625,11.0827271875,8.943795625Q11.1100861875,8.902855625,11.1289321875,8.857355625Q11.147777187500001,8.811855625,11.1573851875,8.763565625Q11.1669921875,8.715265625,11.1669921875,8.666015625L11.1669921875,4.666015625Q11.1669921875,4.616769925,11.1573851875,4.568470525Q11.147777187500001,4.520170625,11.1289321875,4.474673625Q11.1100861875,4.429176625,11.0827271875,4.388230625Q11.0553671875,4.347284625,11.0205451875,4.312462625Q10.9857231875,4.277640625,10.9447771875,4.250280625Q10.9038311875,4.222921625,10.8583341875,4.204075625Q10.8128371875,4.185230625,10.7645372875,4.175622625Q10.7162378875,4.166015625,10.6669921875,4.166015625Q10.6177464875,4.166015625,10.5694470875,4.175622625Q10.5211471875,4.185230625,10.4756501875,4.204075625Q10.4301531875,4.222921625,10.3892071875,4.250280625Q10.3482611875,4.277640625,10.3134391875,4.312462625Q10.2786171875,4.347284625,10.2512571875,4.388230625Q10.2238981875,4.429176625,10.2050521875,4.474673625Q10.186207187499999,4.520170625,10.1765991875,4.568470525Q10.1669921875,4.616769925,10.1669921875,4.666015625Z" fill-rule="evenodd" fill="#232323" fill-opacity="1"/></g><g><path d="M4,14.166015625L12.00001,14.166015625Q12.04926,14.166015625,12.09756,14.156408625Q12.14586,14.146800625000001,12.19135,14.127955625Q12.23685,14.109109625,12.2778,14.081750625Q12.31874,14.054390625,12.35357,14.019568625Q12.38839,13.984746625,12.41575,13.943800625Q12.44311,13.902854625,12.46195,13.857357625Q12.4808,13.811860625,12.49041,13.763560725Q12.50001,13.715261325,12.50001,13.666015625Q12.50001,13.616769925,12.49041,13.568470525Q12.4808,13.520170625,12.46195,13.474673625Q12.44311,13.429176625,12.41575,13.388230625Q12.38839,13.347284625,12.35357,13.312462625Q12.31874,13.277640625,12.2778,13.250280625Q12.23685,13.222921625,12.19135,13.204075625Q12.14586,13.185230624999999,12.09756,13.175622625Q12.04926,13.166015625,12.00001,13.166015625L4,13.166015625Q3.9507543,13.166015625,3.9024549,13.175622625Q3.854155,13.185230624999999,3.808658,13.204075625Q3.763161,13.222921625,3.722215,13.250280625Q3.681269,13.277640625,3.646447,13.312462625Q3.611625,13.347284625,3.584265,13.388230625Q3.556906,13.429176625,3.5380599999999998,13.474673625Q3.519215,13.520170625,3.509607,13.568470525Q3.5,13.616769925,3.5,13.666015625Q3.5,13.715261325,3.509607,13.763560725Q3.519215,13.811860625,3.5380599999999998,13.857357625Q3.556906,13.902854625,3.584265,13.943800625Q3.611625,13.984746625,3.646447,14.019568625Q3.681269,14.054390625,3.722215,14.081750625Q3.763161,14.109109625,3.808658,14.127955625Q3.854155,14.146800625000001,3.9024549,14.156408625Q3.9507543,14.166015625,4,14.166015625Z" fill-rule="evenodd" fill="#232323" fill-opacity="1"/></g></g></g></g></svg>
\ No newline at end of file
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="none" version="1.1" width="16" height="16" viewBox="0 0 16 16"><defs><clipPath id="master_svg0_181_024594"><rect x="0" y="0" width="16" height="16" rx="0"/></clipPath></defs><g clip-path="url(#master_svg0_181_024594)"><g><path d="M6.8151546875,5.021609375000001L5.7810546875,5.241409375Q5.7393446875,5.250279375,5.6997346875,5.266079375Q5.6601246875,5.281879375,5.6237646875,5.304169375Q5.5874046875,5.326449375,5.5553346875,5.3545693750000005Q5.5232746875,5.382679375,5.4964346875,5.4158293749999995Q5.4696046875,5.448969375,5.448764687500001,5.486179375Q5.4279246875,5.523379375,5.4136946875,5.563579375Q5.3994546875000005,5.603779375,5.3922346875,5.645809375Q5.3850146875,5.687839374999999,5.3850146875,5.730489374999999L5.3850146875,5.7318693750000005Q5.3851546875,5.783719375,5.3959346875000005,5.8344393750000005Q5.4048046875,5.876149375,5.4206046875,5.915759375Q5.4364046875,5.955369375,5.4586946874999995,5.991729375Q5.4809746875,6.028099375,5.5090946875,6.060159375Q5.5372046875,6.092219375,5.5703546875,6.119059375Q5.6034946875,6.145899375,5.6407046875,6.166729375Q5.6779046875,6.187569375,5.7181046875,6.201809375Q5.7583046875,6.216039374999999,5.8003346875,6.223259375Q5.8423646875,6.230489374999999,5.8850146875,6.230489374999999L5.8863946875,6.230489374999999Q5.9382446875,6.230339375,5.9889646875,6.219559374999999L7.0230646875,5.999759375Q7.0905646875,5.985409375,7.1485046875,6.023029375L9.8481246875,7.776189375Q10.2535446875,8.039359375,10.7261246875,7.938889375L13.0644046875,7.441899375Q13.5371046875,7.341399375,13.8003046875,6.936109375Q14.0635046875,6.530819375,13.9630046875,6.058119375L13.7551046875,5.079999375Q13.6546046875,4.607329375,13.2493046875,4.344119375Q12.8440046875,4.080929375,12.3714046875,4.181379375L11.0112246875,4.470479375Q10.9436646875,4.484839375,10.8858246875,4.447269375L8.1861646875,2.694081375Q7.7808446875,2.4308843749999998,7.3081846875,2.531356375L1.3833496875,3.790712375Q1.3416356875,3.799578375,1.3020266875,3.815381375Q1.2624166875,3.831183375,1.2260556875,3.853465375Q1.1896946875,3.875748375,1.1576316875,3.9038663749999998Q1.1255696875,3.931984375,1.0987316875,3.965125375Q1.0718946875,3.998267375,1.0510566875,4.0354793749999995Q1.0302196875,4.072679375,1.0159836875,4.112879375Q1.0017486875000001,4.153079375,0.9945266875000001,4.1951093749999995Q0.9873046875,4.237139375,0.9873046875,4.279789375L0.9873066875000001,4.281169375Q0.9874496875000001,4.333019375,0.9982306875,4.383739375Q1.0189086875,4.481019375,1.0752416875,4.562989375Q1.1315736875,4.6449493749999995,1.2149846874999999,4.699119375Q1.3391976875,4.779789375,1.4873046875,4.779789375L1.4948042575,4.7797293750000005Q1.5435621875,4.778999375,1.5912596875,4.768859375L7.5161046875,3.509502375Q7.5836246875,3.495150375,7.6415246875,3.532750375L10.3411246875,5.285899375Q10.7463846875,5.549119375,11.2191346875,5.448629374999999L12.5792046875,5.159529375Q12.7423046875,5.124879375,12.7769046875,5.287899375L12.9848046875,6.266059375Q13.0195046875,6.429089375,12.8565046875,6.463749375L10.5181646875,6.960749375Q10.4506646875,6.975099375,10.3927646875,6.937519375L7.6931146875,5.184339375Q7.2877746875,4.921129375,6.8151546875,5.021609375000001Z" fill-rule="evenodd" fill="#232323" fill-opacity="1"/></g><g><path d="M10.21899875,10.092180625000001L10.21929875,10.092120625Q10.316588750000001,10.071440625000001,10.39854875,10.015110625Q10.48050875,9.958780625,10.53467875,9.875370625Q10.61534875,9.751150625,10.61534875,9.603040625L10.61528875,9.595550625Q10.61455875,9.546790625,10.60441875,9.499090625000001Q10.58374875,9.401810625,10.52740875,9.319840625Q10.47107875,9.237880625,10.38766875,9.183710625Q10.26345875,9.103050625,10.115348749999999,9.103040625L10.107848749999999,9.103100625Q10.05908875,9.103830625,10.01139875,9.113970625L8.97728875,9.333770625Q8.909738749999999,9.348130625,8.85189875,9.310560625L6.15223875,7.557376625Q5.7468787500000005,7.294155625,5.27423875,7.394642625L2.93595875,7.891671725Q2.46328005,7.992118625,2.20007175,8.397427625Q1.93687575,8.802718625,2.03734975,9.275400625L2.24526375,10.253540625Q2.34573175,10.726240624999999,2.75102175,10.989440625Q3.1563197499999998,11.252640625,3.62901875,11.152150625L4.98913875,10.863050625Q5.05667875,10.848690625,5.11457875,10.886290625L7.81418875,12.639450625Q8.219548750000001,12.902670624999999,8.69219875,12.802180625L14.61701875,11.542820625000001Q14.65871875,11.533950625,14.69831875,11.518150625Q14.73791875,11.502350625,14.77431875,11.480060625Q14.81061875,11.457780625,14.84271875,11.429660625Q14.87481875,11.401550625,14.90161875,11.368400625Q14.92841875,11.335260625,14.94931875,11.298060625Q14.97011875,11.260850625,14.98431875,11.220650625000001Q14.99861875,11.180450625,15.00581875,11.138420625Q15.01301875,11.096390625,15.01301875,11.053750625L15.01301875,11.052360625Q15.01291875,11.000510625,15.00211875,10.949790625Q14.99321875,10.908070625,14.97741875,10.868470625Q14.96161875,10.828860625,14.93931875,10.792490625Q14.91711875,10.756130625,14.88891875,10.724070625Q14.86081875,10.692010625,14.82771875,10.665170625Q14.79451875,10.638330625,14.75731875,10.617500625Q14.72011875,10.596660625,14.67991875,10.582420625000001Q14.63971875,10.568190625,14.59771875,10.560970625Q14.55571875,10.553740625,14.51301875,10.553740625L14.51161875,10.553750625Q14.45981875,10.553890625000001,14.40911875,10.564670625L8.48423875,11.824040625Q8.41675875,11.838390625,8.35882875,11.800780625L5.65918875,10.047600625Q5.25388875,9.784410625,4.78122875,9.884900625L3.42107175,10.174010625000001Q3.35355375,10.188360625,3.2956647500000003,10.150770625Q3.23776675,10.113170625,3.22340975,10.045620625L3.01549675,9.067490625Q3.0011437499999998,8.999960625,3.03874575,8.942060625Q3.07634075,8.884170625,3.14387575,8.869820625L5.482188750000001,8.372780625Q5.54966875,8.358433625,5.60759875,8.396046625L8.307198750000001,10.149190625Q8.71244875,10.412410625,9.18519875,10.311920624999999L10.21899875,10.092180625000001Z" fill-rule="evenodd" fill="#232323" fill-opacity="1"/></g></g></svg>
\ No newline at end of file
......@@ -976,3 +976,9 @@ li {
.min1370 {
min-width: 1370px;
}
// 重置全局 溢出弹出提示宽度
.el-tooltip__popper {
max-width: 70%;
}
......@@ -64,6 +64,7 @@ export default {
}
},
tabChoose(item) {
if (item.value == this.currentValue) return;
this.$emit("currentTabChange", item.value);
this.$emit("tabToggle", item.value);
this.initSlidingBar();
......
......@@ -634,14 +634,19 @@ export function getTreeSelectAreaList(nodeList = [], tree, idkey = "id") {
try {
if (Object.prototype.toString.call(nodeList) != "[object Array]") throw new Error("传入参数不是一个节点数组");
const _result = [];
// 克隆源数据
const _tempTree = JSON.parse(JSON.stringify(tree));
let _tempTree = JSON.parse(JSON.stringify(tree));
if (_tempTree instanceof Array) {
_tempTree = { childrenLength: _tempTree.length, children: _tempTree, level: 0 };
}
// 根据所选节点生成tree
const newTree = generateDirectSubtreeAndRemove(nodeList, _tempTree, idkey);
if (newTree) {
// 循环找到每个节点的父节点 的选中状态
return findParentStatus(nodeList, newTree, idkey);
const result = nodeList.map(item => {
return createAreaSelect(item, newTree, idkey);
});
}
} catch (error) {
......@@ -653,46 +658,67 @@ export function getTreeSelectAreaList(nodeList = [], tree, idkey = "id") {
/**
*
*/
export function findParentStatus(nodeList, tree, idkey) {
const _temp = nodeList.map(item => {
// 找节点parent
const parent = findParentNode(tree, item, idkey);
// 有parent
if (parent) {
const count = parent.childrenLength;
const len = parent.children?.length;
// 比较 count 跟 length 看子节点是否全选中
const flag = count == len && parent.children?.every(childItem => nodeList.includes(childItem[idkey])) ? true : false;
// flag为true 当前节点下的子节点全选中返回父节点id 没有则是根节点 根节点返回所有child id
if (flag) {
return parent[idkey] ? parent[idkey] : parent.children?.map(childItem => childItem[idkey]);
} else {
console.log("没有全选中");
// 没有全选中 看当前子节点是否有选中状态
const itemNode = findNodeFromTree(tree, item, [], idkey);
console.log(itemNode);
// 当前节点有子节点
if (itemNode?.children?.length) {
// 当前节点的子节点选中结果 子节点是全选状态 传递自身 否则传递子节点
const childResult = itemNode?.children?.every(childItem => nodeList.includes(childItem[idkey])) && itemNode?.children?.length == itemNode?.childrenLength;
if (childResult) {
return item;
}
const childNodes = itemNode?.children?.filter(childItem => nodeList.includes(childItem[idkey]));
return childNodes ? childNodes.map(childItem => childItem[idkey]) : [];
}
// 当前节点没有子节点 看父节点是否全选 父节点全选 返回父节点
const childResult = parent.children?.every(childItem => nodeList.includes(childItem[idkey])) && parent.children?.length == parent?.childrenLength;
if (childResult) {
return item;
}
const childNodes = parent.children?.filter(childItem => nodeList.includes(childItem[idkey]));
return childNodes ? childNodes.map(childItem => childItem[idkey]) : [];
}
export function createAreaSelect(node, tree, idkey) {
// console.log(node, tree, idkey);
const selfNode = findNodeFromTree(tree, node, [], idkey);
console.log(selfNode);
// 查找chidren
if (selfNode?.children?.length) {
const childTempArray = [];
for (const child of selfNode?.children) {
const _temp = createAreaSelect(child[idkey], tree, idkey);
if (_temp) childTempArray.push(childTempArray);
}
});
return childTempArray;
}
return Array.from(new Set(_temp.flat()));
// 没有children 已经是最底层 看parent
const parentNode = findParentNode(tree, node, idkey);
console.log(parentNode,"没有children");
// const _temp = nodeList.map(item => {
// // 找节点parent
// const parent = findParentNode(tree, item, idkey);
// console.log("父节点", parent);
// // 有parent
// if (parent) {
// const count = parent.childrenLength;
// const len = parent.children?.length;
// // 比较 count 跟 length 看子节点是否全选中
// const flag = count == len && parent.children?.every(childItem => nodeList.includes(childItem[idkey])) ? true : false;
// // flag为true 当前节点下的子节点全选中返回父节点id 没有则是根节点 根节点返回所有child id
// if (flag) {
// return parent[idkey] ? parent[idkey] : parent.children?.map(childItem => childItem[idkey]);
// } else {
// console.log("没有全选中");
// // 没有全选中 看当前子节点是否有选中状态
// const itemNode = findNodeFromTree(tree, item, [], idkey);
// console.log(itemNode);
// // 当前节点有子节点
// if (itemNode?.children?.length) {
// // 当前节点的子节点选中结果 子节点是全选状态 传递自身 否则传递子节点
// const childResult = itemNode?.children?.every(childItem => nodeList.includes(childItem[idkey])) && itemNode?.children?.length == itemNode?.childrenLength;
// if (childResult) {
// return item;
// }
// const childNodes = itemNode?.children?.filter(childItem => nodeList.includes(childItem[idkey]));
// return childNodes ? childNodes.map(childItem => childItem[idkey]) : [];
// }
// // 当前节点没有子节点 看父节点是否全选 父节点全选 返回父节点
// const childResult = parent.children?.every(childItem => nodeList.includes(childItem[idkey])) && parent.children?.length == parent?.childrenLength;
// if (childResult) {
// return item;
// }
// const childNodes = parent.children?.filter(childItem => nodeList.includes(childItem[idkey]));
// return childNodes ? childNodes.map(childItem => childItem[idkey]) : [];
// }
// }
// });
// return Array.from(new Set(_temp.flat()));
}
......
......@@ -164,8 +164,8 @@ export default {
methods: {
async init() {
try {
if (!this.$routes?.params?.advisoryBodyCid) return this.$message.error("缺少咨询机构Id");
this.queryParams.advisoryBodyCid = !this.$routes?.params?.advisoryBodyCid;
if (!this.$route?.params?.advisoryBodyCid) return this.$message.error("缺少咨询机构Id");
this.queryParams.advisoryBodyCid = this.$route?.params?.advisoryBodyCid;
await this.getList(this.queryParams);
} catch (error) {
......@@ -262,7 +262,7 @@ export default {
if (selectNode?.length) {
const nodeValueList = selectNode.map(item => item.value);
console.log(nodeValueList);
console.log(getTreeSelectAreaList(nodeValueList, { childrenLength: this.areaDataList.length, children: this.areaDataList }, "value"));
console.log(getTreeSelectAreaList(nodeValueList, this.areaDataList, "value"));
}
}
},
......
......@@ -48,6 +48,16 @@
</div>
<span v-else>-</span>
</template>
<!-- 经营范围 -->
<template slot="businessScope" scope="{data,row}">
<el-tooltip effect="dark" placement="top" v-if="row.businessScope" class="business-text-tooltip">
<template slot="content">
<div class="business-text-line">{{row.businessScope}}</div>
</template>
<div class="business-text-line">{{row.businessScope}}</div>
</el-tooltip>
<span v-else>-</span>
</template>
</table-list-com>
</div>
......@@ -87,12 +97,12 @@ export default {
{ label: '序号', prop: "staticSerialNumber", type: "index", lock: true, fixed: false, uid: v4() },
{ label: '咨询机构名称', prop: 'advisoryBodyName', width: "198px", lock: true, fixed: false, slot: true, uid: v4(), showOverflowTooltip: true },
{ label: '最近一次合作时间', prop: 'lastCooperateTime', width: "201px", uid: v4() },
{ label: '经营状态', prop: 'businessStatus', width: "74px", uid: v4() },
{ label: '经营状态', prop: 'businessStatus', minWidth: "74px", uid: v4(), showOverflowTooltip: true },
{ label: '法定代表人', prop: 'corporatePerson', width: "86px", uid: v4() },
{ label: '注册资本', prop: 'regCapital', width: "107px", uid: v4() },
{ label: '注册资本', prop: 'regCapital', width: "120px", uid: v4() },
{ label: '注册地区', prop: 'regArea', width: "149px", uid: v4() },
{ label: '成立日期', prop: 'registeredDate', width: "97px", uid: v4() },
{ label: '经营范围', prop: 'businessScope', width: "417px", uid: v4() },
{ label: '经营范围', prop: 'businessScope', width: "417px", uid: v4(), slot: true },
{ label: '合作项目数量', prop: 'cooperateProjectCount', width: "98px", uid: v4(), slot: true },
],
queryParams: {
......@@ -274,6 +284,16 @@ export default {
padding: 0px;
margin-top: 16px;
}
.business-text-line {
text-overflow: -o-ellipsis-lastline;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
line-clamp: 2;
-webkit-box-orient: vertical;
}
}
}
}
......
......@@ -74,22 +74,22 @@
v-else-if="!tableLoading" :height="'100%'" @handle-current-change="handleCurrentChange">
<!-- 项目列表 -->
<template slot="projectName" slot-scope="{data,row}">
<div v-if="row.projectName" class="no-line-feed ">{{row.projectName}}</div>
<div v-if="row.projectName" class="no-line-feed" v-html="row.projectName">{{row.projectName}}</div>
<span v-else>-</span>
</template>
<!-- 业主单位 -->
<template slot="ownerName" slot-scope="{data,row}">
<div v-if="row.ownerName" class="no-line-feed ">{{row.ownerName}}</div>
<div v-if="row.ownerName" class="no-line-feed">{{row.ownerName}}</div>
<span v-else>-</span>
</template>
<!-- 项目承接单位 -->
<template slot="contractOrgName" slot-scope="{data,row}">
<div v-if="row.contractOrgName" class="no-line-feed ">{{row.contractOrgName}}</div>
<div v-if="row.contractOrgName" class="no-line-feed">{{row.contractOrgName}}</div>
<span v-else>-</span>
</template>
<!-- 咨询机构名称 -->
<template slot="advisoryBodyName" slot-scope="{data,row}">
<div v-if="row.advisoryBodyName" class="no-line-feed ">{{row.advisoryBodyName}}</div>
<div v-if="row.advisoryBodyName" class="no-line-feed">{{row.advisoryBodyName}}</div>
<span v-else>-</span>
</template>
</table-list-com>
......
......@@ -44,7 +44,10 @@ export default {
},
//可访问data属性
created() {
const target = this.$route.query.target;
if (target && ["project", "enterprise"].includes(target)) {
this.currentList = target;
}
},
//计算集
computed: {
......@@ -52,7 +55,6 @@ export default {
},
//方法集
methods: {
},
}
</script>
......
......@@ -80,7 +80,7 @@
<span class="flex-box ability-total" v-if="isTotal">共有{{ total }}条</span>
<span class="flex-box ability-excel" v-hasPermi="['combine:info:export:win:bid','combine:info:export:bid']"
v-if="isExcel && title ==='集团业绩'|| title ==='集团招标' " @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
<span class="flex-box ability-excel" v-else @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
<span class="flex-box ability-excel" v-else-if="isExcel" @click="clickEXCEL"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
</div>
</div>
</div>
......@@ -297,14 +297,7 @@ export default {
this.$emit('handle-search');
},
clickEXCEL() {
if (this.title === '集团业绩' || this.title === '集团招标' || this.title === '集团成员') {
this.$emit('handle-excel');
} else {
this.$message({
message: '功能正在开发中',
type: 'warning'
});
}
this.$emit('handle-excel');
},
clickFocus(e) {
document.getElementById(e).classList.toggle('span-ba');
......
<template>
<div id="detailPart" class="sides-container">
<!-- 搜索栏 -->
<el-input placeholder="搜索" class="side-input" v-model="searchText" clearable @input="handleSearch(true)" @keyup.enter.native="handleSearch()">
<i slot="prefix" class="el-input__icon el-icon-search" @click="handleSearch()"></i>
</el-input>
<div class="search-bar-container">
<el-input placeholder="请输入内容" class="side-input" v-model="searchText" clearable @input="handleSearch(true)"
@keyup.enter.native="handleSearch()">
<i slot="prefix" class="el-input__icon el-icon-search" @click="handleSearch()"></i>
</el-input>
</div>
<el-menu ref="sideMenu" :unique-opened="true" :default-active="searchIndex" class="detail-menu" @open="handleOpen">
<template v-for="(item, index) in sideRoute">
<!-- 一级菜单 -->
<el-submenu :index="item.index" :key="item.index" v-if="item.children" class="top-level-menu"
:disabled="!isCompanyId(item.title) || (item.title=='项目商机'&&statisticObj.business.landInfo<1&&statisticObj.business.busProposedProjectV1<1&&statisticObj.performance.specialDebt<1&&statisticObj.performance.bidPlan<1&&statisticObj.business.biddingAnnouncement<1&&statisticObj.business.proBiddingAnnouncement<1&&statisticObj.business.adminLicensing<1)">
:disabled="item.disabled || !isCompanyId(item.title) || (item.title=='项目商机'&&statisticObj.business.landInfo<1&&statisticObj.business.busProposedProjectV1<1&&statisticObj.performance.specialDebt<1&&statisticObj.performance.bidPlan<1&&statisticObj.business.biddingAnnouncement<1&&statisticObj.business.proBiddingAnnouncement<1&&statisticObj.business.adminLicensing<1)">
<template slot="title">
<span>{{item.title}}</span>
<div class="top-level-menu-title">
<svg-icon :iconClass="item.icon"></svg-icon>
<span>{{item.title}}</span>
</div>
</template>
<template v-for="(subItem,subIndex) of item.children">
......@@ -53,6 +59,7 @@
import { financial } from '@/api/detail/party-a/financial';
import { detailSideBar } from "@/utils";
import { v4 } from "uuid";
import SvgIcon from "@/components/SvgIcon";
export default {
name: 'Sidebar',
props: {
......@@ -81,12 +88,15 @@ export default {
default: false
}
},
components: {
SvgIcon
},
data() {
return {
searchText: '',
sideRoute: [
{
title: "企业经营", pathName: "", children: [
title: "企业经营", icon: "enterprise-management-detail-side", pathName: "", children: [
{
title: '企业概要', pathName: '', children: [
{ title: '企业速览', pathName: 'overview' },
......@@ -119,6 +129,13 @@ export default {
{ title: '开标记录', pathName: 'bidrecords' }
]
},
{
title: '咨询业务往来', pathName: '', children: [
{ title: '常合作业主单位', pathName: 'cooperativeOwnerUnits' },
{ title: '常合作施工单位', pathName: 'cooperativeConstructionUnit' },
{ title: '常合作集团', pathName: 'cooperativeGroup' },
]
},
{
title: '城投分析', pathName: '', children: [
{ title: '区域经济', pathName: 'regionalEconomies' },
......@@ -146,6 +163,19 @@ export default {
{ title: '联系人', pathName: 'decisionMaking' },
{ title: '跟进记录', pathName: 'gjjl' }
]
},
{
title: "内部合作", icon: "internal-cooperation-detail-side", pathName: "", children: [
{ title: '咨询机构合作', pathName: 'consultingAgencyCooperation' },
{
title: '供应商合作记录', pathName: '', children: [
{ title: '准入情况', pathName: 'accessCondition' },
{ title: '施工业绩', pathName: 'constructionPerformance' },
{ title: '在施工程情况', pathName: 'constructionSituation' },
{ title: '合作记录', pathName: 'cooperationRecord' },
]
},
]
}
],
sideRoute1: [
......@@ -183,6 +213,13 @@ export default {
{ title: '开标记录', pathName: 'bidrecords' }
]
},
{
title: '咨询业务往来', pathName: '', children: [
{ title: '常合作业主单位', pathName: 'cooperativeOwnerUnits' },
{ title: '常合作施工单位', pathName: 'cooperativeConstructionUnit' },
{ title: '常合作集团', pathName: 'cooperativeGroup' },
]
},
{
title: '城投分析', pathName: '', children: [
{ title: '区域经济', pathName: 'regionalEconomies' },
......@@ -210,6 +247,19 @@ export default {
{ title: '联系人', pathName: 'decisionMaking' },
{ title: '跟进记录', pathName: 'gjjl' }
]
},
{
title: "内部合作", icon: "internal-cooperation-detail-side", pathName: "", children: [
{ title: '咨询机构合作', pathName: 'consultingAgencyCooperation' },
{
title: '供应商合作记录', pathName: '', children: [
{ title: '准入情况', pathName: 'accessCondition' },
{ title: '施工业绩', pathName: 'constructionPerformance' },
{ title: '在施工程情况', pathName: 'constructionSituation' },
{ title: '合作记录', pathName: 'cooperationRecord' },
]
},
]
}
],
defaultRoute: [],
......@@ -244,6 +294,11 @@ export default {
this.createSideBarWithServerData(val);
}
},
pathName: {
handler(newValue) {
this.searchIndex = this.findNodeIndex(this.sideRoute, newValue).index;
}
}
},
methods: {
sideBarInit() {
......@@ -275,10 +330,11 @@ export default {
return item;
});
},
financial(id) {
getFinancial(id) {
financial({ cid: String(id) }).then(res => {
if ((res.code == 200 && !res.data) || !res.data?.totalAssets) {
this.sideRoute[1].disabled = true;
this.$set(this.sideRoute[0], "disabled", true);
this.$set(this.sideRoute[1], "disabled", true);
this.defaultRoute = JSON.parse(JSON.stringify(this.sideRoute));
}
});
......@@ -437,33 +493,37 @@ export default {
<style lang="scss" scoped>
#app {
.sides-container {
width: 144px;
width: 160px;
min-height: calc(100vh - 170px);
padding-bottom: 20px;
background: #ffffff;
border-radius: 4px;
.side-input {
width: 128px;
margin-top: 16px;
margin-left: 8px;
border: 0;
::v-deep .el-input__inner {
height: 32px;
background: #f3f3f4;
border-radius: 20px;
.search-bar-container {
padding: 9px 8px;
box-sizing: border-box;
::v-deep .side-input {
width: 100%;
border: 0;
&::placeholder {
color: #3d3d3d;
.el-input__inner {
height: 32px;
background: #f3f3f4;
border-radius: 20px;
border: 0;
&::placeholder {
color: #3d3d3d;
}
}
.el-icon-search {
line-height: 34px;
color: #0081ff;
cursor: pointer;
}
}
.el-icon-search {
line-height: 34px;
color: #0081ff;
cursor: pointer;
}
}
.detail-menu {
margin-top: 20px;
margin-top: 9px;
border-right: 0;
::v-deep .el-menu-item,
::v-deep .el-submenu__title {
......@@ -530,6 +590,15 @@ export default {
justify-content: space-between;
padding: 9px 8px !important;
box-sizing: border-box;
.top-level-menu-title {
display: flex;
align-items: center;
& > span {
margin-left: 4px;
}
}
}
// 二级菜单
......
<template>
<div class="Tables">
<div class="table-item">
<el-table v-if="tableDataTotal>0" class="fixed-table" :class="headerFixed ? 'headerFixed':''"
v-loading="tableLoading"
:data="tableData"
element-loading-text="Loading"
ref="tableRef"
v-horizontal-scroll="'hover'"
border
fit
highlight-current-row
:default-sort = "defaultSort?defaultSort:{}"
@sort-change="sortChange"
>
<el-table-column
v-if="isIndex"
label="序号"
:width="flexWidth(tableData)"
align="left"
:fixed="indexFixed"
:resizable="false">
<el-table v-if="tableDataTotal>0" class="fixed-table" :class="headerFixed ? 'headerFixed':''" v-loading="tableLoading" :data="tableData"
element-loading-text="Loading" ref="tableRef" v-horizontal-scroll="'hover'" border fit highlight-current-row
:default-sort="defaultSort?defaultSort:{}" @sort-change="sortChange">
<el-table-column v-if="isIndex" label="序号" :width="flexWidth(tableData)" align="left" :fixed="indexFixed" :resizable="false">
<template slot-scope="scope">{{ queryParams.pageNum * queryParams.pageSize - queryParams.pageSize + scope.$index + 1 }}</template>
</el-table-column>
<template >
<el-table-column
v-for="(item,index) in forData"
:key="index"
:label="item.label"
:prop="item.prop"
:width="item.width"
:min-width="item.minWidth"
:align="item.align?item.align:'left'"
:fixed="item.fixed"
:sortable="item.sortable ?item.sortable=='custom'? 'custom':true : false"
<template>
<el-table-column v-for="(item,index) in forData" :key="index" :label="item.label" :prop="item.prop" :width="item.width"
:min-width="item.minWidth" :align="item.align?item.align:'left'" :fixed="item.fixed"
:sortable="item.sortable ?item.sortable=='custom'? 'custom':true : false" :show-overflow-tooltip="item.showOverflowTooltip"
:resizable="false">
<template v-if="item.children&&item.children.length">
<el-table-column
v-for="(cld, i) in item.children"
:key="i"
:prop="cld.prop"
:label="cld.label"
:width="cld.width"
:resizable="false">
<el-table-column v-for="(cld, i) in item.children" :key="i" :prop="cld.prop" :label="cld.label" :width="cld.width" :resizable="false">
<template slot-scope="cldscope">
<template v-if="cld.slot">
<slot :name="cld.prop" :row="cldscope.row" :data="cld"></slot>
......@@ -58,8 +30,8 @@
<template slot-scope="scope">
<slot v-if="item.slot" :name="item.prop" :row="scope.row" :index="scope.$index" :data="item"></slot>
<span v-else>
{{ scope.row[item.prop] || '-' }}
</span>
{{ scope.row[item.prop] || '-' }}
</span>
</template>
</el-table-column>
......@@ -73,13 +45,14 @@
</div>
</div>
<div class="pagination-box" v-if="show_page && tableDataTotal>queryParams.pageSize">
<el-pagination background :current-page="current_page" :page-size="queryParams.pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
<el-pagination background :current-page="current_page" :page-size="queryParams.pageSize" :total="tableDataTotal"
layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div>
</div>
</template>
<script>
import NoData from '../component/noData'
import NoData from '../component/noData';
export default {
name: "Tables",
props: {
......@@ -135,128 +108,132 @@ export default {
return {
current_page: this.queryParams.pageNum,
show_page: this.paging
}
};
},
watch:{
'queryParams.pageNum'(newVal,oldVal){
this.current_page=newVal
watch: {
'queryParams.pageNum'(newVal, oldVal) {
this.current_page = newVal;
}
},
created() {
},
methods:{
handleCurrentChange(e){
if(this.MaxPage<e){
this.show_page = false
methods: {
handleCurrentChange(e) {
if (this.MaxPage < e) {
this.show_page = false;
this.$nextTick(() => {
this.current_page = this.queryParams.pageNum
this.$message.warning(`对不起,最多只能访问${this.MaxPage}页`)
this.show_page = true
})
}else{
this.$emit('handle-current-change',e)
this.current_page = this.queryParams.pageNum;
this.$message.warning(`对不起,最多只能访问${this.MaxPage}页`);
this.show_page = true;
});
} else {
this.$emit('handle-current-change', e);
}
},
handleSizeChange(e){
this.$emit('handle-current-change',e)
handleSizeChange(e) {
this.$emit('handle-current-change', e);
},
sortChange(e){
this.$emit('sort-change',e)
sortChange(e) {
this.$emit('sort-change', e);
},
flexWidth(tableData) {
let currentMax = this.queryParams.pageNum*this.queryParams.pageSize - this.queryParams.pageSize + tableData.length, wdth = 59
let currentMax = this.queryParams.pageNum * this.queryParams.pageSize - this.queryParams.pageSize + tableData.length, wdth = 59;
// return currentMax.toString().length*25 + 'px'
if(currentMax.toString().length>3){
wdth = wdth + (currentMax.toString().length-3)*10
if (currentMax.toString().length > 3) {
wdth = wdth + (currentMax.toString().length - 3) * 10;
}
return wdth+'px'
return wdth + 'px';
}
}
}
</script>
<style lang="scss" scoped>
.Tables{
::v-deep .el-table__body tr.current-row > td.el-table__cell{
background-color: #ffffff;
}
/*::v-deep .el-table__fixed{
.Tables {
::v-deep .el-table__body tr.current-row > td.el-table__cell {
background-color: #ffffff;
}
/*::v-deep .el-table__fixed{
height: calc(100% - 16px) !important;
}*/
::v-deep .el-table__row{
&:nth-child(even){
background-color: #F9FCFF;
.more{
background: #F8FBFF;
span{
color: #0081FF;
}
}
}
&:nth-child(odd){
.more{
span{
color: #0081FF;
}
::v-deep .el-table__row {
&:nth-child(even) {
background-color: #f9fcff;
.more {
background: #f8fbff;
span {
color: #0081ff;
}
}
}
.table-item{
::v-deep .el-table td.el-table__cell{
border-bottom: 0;
&:nth-child(odd) {
.more {
span {
color: #0081ff;
}
}
}
::v-deep .el-table th.el-table__cell.is-leaf,::v-deep .el-table td.el-table__cell {
border-bottom: 1px solid #E6EAF1;
}
::v-deep .el-table--border .el-table__cell {
border-right: 1px solid #E6EAF1;
}
::v-deep .table-item {
.el-table td.el-table__cell {
border-bottom: 0;
}
::v-deep .el-table__body tr.hover-row.current-row>td,
::v-deep .el-table__body tr.hover-row.el-table__row--striped.current-row>td,
::v-deep .el-table__body tr.hover-row.el-table__row--striped>td,
::v-deep .el-table__body tr.hover-row>td{
background-color:#DCEBFF !important;
.more{
background: #DCEBFF;
.el-table {
.cell {
font-size: 12px;
}
}
::v-deep .el-table--enable-row-hover .el-table__body tr:hover > td {
background-color: #DCEBFF;
}
::v-deep .fixed-table{
overflow: visible;
}
::v-deep .el-table th.el-table__cell.is-leaf,
::v-deep .el-table td.el-table__cell {
border-bottom: 1px solid #e6eaf1;
}
::v-deep .el-table--border .el-table__cell {
border-right: 1px solid #e6eaf1;
}
::v-deep .el-table__body tr.hover-row.current-row > td,
::v-deep .el-table__body tr.hover-row.el-table__row--striped.current-row > td,
::v-deep .el-table__body tr.hover-row.el-table__row--striped > td,
::v-deep .el-table__body tr.hover-row > td {
background-color: #dcebff !important;
.more {
background: #dcebff;
}
::v-deep .el-table__header-wrapper{
}
::v-deep .el-table--enable-row-hover .el-table__body tr:hover > td {
background-color: #dcebff;
}
::v-deep .fixed-table {
overflow: visible;
}
::v-deep .el-table__header-wrapper {
position: sticky;
top: 0;
z-index: 9;
}
::v-deep .el-table__fixed-header-wrapper {
position: sticky;
z-index: 9;
top: 0;
}
.headerFixed {
::v-deep .el-table__header-wrapper {
position: sticky;
top:0;
top: 80px;
z-index: 9;
}
::v-deep .el-table__fixed-header-wrapper{
::v-deep .el-table__fixed-header-wrapper {
position: sticky;
z-index: 9;
top: 0;
top: 80px;
}
.headerFixed{
::v-deep .el-table__header-wrapper{
position: sticky;
top:80px;
z-index: 9;
}
::v-deep .el-table__fixed-header-wrapper{
position: sticky;
z-index: 9;
top:80px;
}
}
::v-deep .el-table__fixed{
overflow-x: clip;
overflow-y: clip;
}
}
::v-deep .el-table__fixed {
overflow-x: clip;
overflow-y: clip;
}
}
</style>
<template>
<div class="cooperative-owner-units">
<head-form-new title="常合作业主单位" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables v-if="!isSkeleton" :indexFixed="true" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" @handle-current-change="handleCurrentChange">
</tables>
</div>
</template>
<script>
import skeleton from '../component/skeleton';
import mixin from '@/views/detail/party-a/mixins/mixin';
import { getCooperativeOwnerUnitsListApi } from "@/api/consultingTransaction";
export default {
name: "cooperativeOwnerUnits",
mixins: [mixin],
components: {
skeleton
},
props: ['companyId'],
data() {
return {
queryParams: {
cid: this.companyId,
pageNum: 1,
pageSize: 10,
companyType: 1
},
forData: [
{ label: '限消令对象', prop: 'name', width: '215' },
],
formData: [
{ type: 4, fieldName: 'businessTypes', value: '', placeholder: '咨询机构业务', uid: this.getUid() },
{ type: 5, fieldName: 'time', value: '', placeholder: '合作频率', startTime: 'dateFrom', endTime: 'dateTo', uid: this.getUid() },
],
//列表
tableLoading: false,
tableData: [],
tableDataTotal: 0,
isSkeleton: true
};
},
//可访问data属性
created() {
this.initDetail();
},
//计算集
computed: {
},
//方法集
methods: {
async initDetail() {
try {
await this.handleQuery();
} catch (error) {
}
},
async handleQuery(params) {
try {
let data = params ? params : this.queryParams;
this.isSkeleton = true;
const res = await getCooperativeOwnerUnitsListApi(data);
this.tableData = res.rows ? res.rows : [];
this.tableDataTotal = res.total ? res.total : 0;
} catch (error) {
console.log(error);
} finally {
this.isSkeleton = false;
}
},
},
}
</script>
<style lang="scss" scoped>
.cooperative-owner-units {
background: #ffffff;
border-radius: 4px;
padding: 16px;
input {
border: 1px solid #efefef;
}
::v-deep .el-form-item {
margin-right: 8px !important;
}
.query-box {
margin: 10px 0 20px;
}
.cell-span {
display: inline-block;
position: relative;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 4;
cursor: pointer;
> span {
display: inline-block;
width: 37px;
position: absolute;
right: 0;
bottom: 0;
background-color: #fff;
z-index: 1;
}
}
@import "@/assets/styles/search-common.scss";
}
</style>
......@@ -32,6 +32,9 @@
<Bidagency v-if="currentPath.pathName=='bidagency'" :company-id="companyId" />
<Hiscontract v-if="currentPath.pathName=='hiscontract'" :company-id="companyId" />
<Bidrecords v-if="currentPath.pathName=='bidrecords'" :company-id="companyId" />
<!-- 咨询业务往来 -->
<!-- 1.常合作业主单位 -->
<cooperative-owner-units v-if="currentPath.pathName=='cooperativeOwnerUnits'" :company-id="companyId"></cooperative-owner-units>
<!-- 投诚分析 -->
<RegionalEconomies v-if="currentPath.pathName=='regionalEconomies'" :company-id="companyId" :companyInfo="companyInfo" />
<LandAcquisition v-if="currentPath.pathName=='landAcquisition'" :company-id="companyId" />
......@@ -48,6 +51,15 @@
<!-- <Judgment v-if="currentPath.pathName=='judgment'" :company-id="companyId" />
<CourtNotice v-if="currentPath.pathName=='courtNotice'" :company-id="companyId" />
<OpenacourtsessionNotice v-if="currentPath.pathName=='openacourtsessionNotice'" :company-id="companyId" /> -->
<!-- 内部合作 -->
<!-- 1、咨询机构合作 -->
<consulting-agency-cooperation v-if="currentPath.pathName=='consultingAgencyCooperation'"
:company-id="companyId"></consulting-agency-cooperation>
<!-- 2、准入情况 -->
<access-condition v-if="currentPath.pathName=='accessCondition'" :company-id="companyId" :companyInfo="companyInfo"></access-condition>
<!-- 3、供应商合作记录 -->
<cooperation-record v-if="currentPath.pathName=='cooperationRecord'" :company-id="companyId"></cooperation-record>
</template>
<template v-if="customerId && isCustomer">
<!-- 商务信息 -->
......@@ -98,6 +110,7 @@ import Supplier from "./dealings/supplier"; //业务往来-供应商
import Bidagency from "./dealings/bidagency"; //业务往来-招标代理
import Hiscontract from "./dealings/hiscontract"; //业务往来-历史发包
import Bidrecords from "./dealings/bidrecords"; //业务往来-开标记录
import CooperativeOwnerUnits from "@/views/detail/party-a/consultingTransaction/cooperativeOwnerUnits"; //咨询业务往来 常合作业主单位
import LandAcquisition from "./urbanLnvestment/landAcquisition"; //投诚分析-城投拿地
import RegionalEconomies from "./urbanLnvestment/regionalEconomies"; //投诚分析-区域经济
import SameRegion from "./urbanLnvestment/sameRegion"; //投诚分析-同地区城投
......@@ -115,9 +128,12 @@ import Preference from "./preference"; //招标偏好
import Cooperate from "./cooperate"; //合作情况
import DecisionMaking from "./decisionMaking"; //决策链条
import Gjjl from "../../project/projectList/component/gjjl"; //跟进记录
// import {
// urbanInvestmentPage,
// } from '@/api/detail/party-a/urbanLnvestment';
import ConsultingAgencyCooperation from "@/views/detail/party-a/internalCooperation/consultingAgencyCooperation"; //内部合作 咨询机构合作
import AccessCondition from "@/views/detail/party-a/internalCooperation/accessCondition"; //内部合作 准入情况
import CooperationRecord from "@/views/detail/party-a/internalCooperation/cooperationRecord"; //内部合作 准入情况
import {
urbanInvestmentPage,
} from '@/api/detail/party-a/urbanLnvestment';
export default {
name: 'PartyA',
components: {
......@@ -160,7 +176,11 @@ export default {
Preference,
Cooperate,
DecisionMaking,
Gjjl
Gjjl,
CooperativeOwnerUnits,
ConsultingAgencyCooperation,
AccessCondition,
CooperationRecord
},
data() {
return {
......@@ -217,8 +237,6 @@ export default {
if (titlename) {
titlename.innerText = this.customerInfo.companyName;
}
// }
// })
});
}
}
......@@ -249,9 +267,6 @@ export default {
let companyId = this.$route.params.id;
await this.getCompanyId(companyId);
}
if (this.$route.query.path) { // 获取跳转对应板块
this.currentPath.pathName = this.$route.query.path;
}
} catch (error) {
console.log(error);
}
......@@ -269,7 +284,7 @@ export default {
await this.getStatistic();
await this.handleQuery();
await this.association(this.$route.query.customerId);
this.$refs.sidebar.financial(data);
this.$refs.sidebar.getFinancial(data);
}
},
async getStatistic() {
......@@ -290,22 +305,21 @@ export default {
provinceIds: [this.companyInfo.provinceId],
cityIds: [this.companyInfo.cityId],
};
// const result = await urbanInvestmentPage(data);
// if (result.code == 200) {
// if (result.data.totalCount < 1) {
// let arr = JSON.parse(JSON.stringify(this.$refs.sidebar.sideRoute));
// arr[4].children[2].disabled = true;
// this.$refs.sidebar.sideRoute = arr;
// }
// }
const result = await urbanInvestmentPage(data);
if (result.code == 200) {
if (result.data.totalCount < 1) {
let arr = JSON.parse(JSON.stringify(this.$refs.sidebar.sideRoute));
arr[1].children[5].children[2].disabled = true;
this.$refs.sidebar.sideRoute = arr;
}
}
if (this.companyInfo && this.companyInfo.companyName) {
this.$nextTick(() => {
document.getElementById('tagTitle').innerText = this.companyInfo.companyName;
let titlename = document.getElementById('tagTitles');
if (titlename) {
titlename.innerText = this.companyInfo.companyName;
}
});
await this.$nextTick();
document.getElementById('tagTitle').innerText = this.companyInfo.companyName;
let titlename = document.getElementById('tagTitles');
if (titlename) {
titlename.innerText = this.companyInfo.companyName;
}
}
}
},
......@@ -353,7 +367,7 @@ export default {
await this.$nextTick();
this.isCustomer = true;
this.isCompany = true;
this.currentPath.pathName = 'overview';
this.currentPath.pathName = this.$route.query.path ? this.$route.query.path : 'overview';
}
}
} catch (err) {
......@@ -364,7 +378,7 @@ export default {
} else {
await this.$nextTick();
this.isCompany = true;
this.currentPath.pathName = 'overview';
this.currentPath.pathName = this.$route.query.path ? this.$route.query.path : 'overview';
}
},
......@@ -390,7 +404,7 @@ export default {
width: 100%;
background: #ffffff;
border-radius: 4px;
margin-left: 160px;
margin-left: 176px;
::v-deep .el-table__header-wrapper {
position: sticky;
top: 0;
......@@ -421,7 +435,7 @@ export default {
margin-right: 16px;
position: fixed;
background: #ffffff;
width: 144px;
width: 160px;
height: calc(100% - 156px);
#detailPart {
......@@ -432,9 +446,9 @@ export default {
}
.part-right {
margin-left: 160px;
margin-left: 176px;
height: 100%;
width: calc(100% - 160px);
width: calc(100% - 176px);
overflow: hidden;
.part-common-container-style {
......
<template>
<div class="access-condition">
<!-- 基本信息 -->
<div class="basic-information">
<div class="info-module-title"><span>基本信息</span></div>
<!-- 基本信息表格 -->
<table>
<tr>
<td class="table-key">资源平台分类</td>
<td colspan="3">-</td>
</tr>
<tr>
<td class="table-key">公司名称</td>
<td>-</td>
<td class="table-key">注册资本(万元)</td>
<td>-</td>
</tr>
<tr>
<td class="table-key">证件选择</td>
<td>-</td>
<td class="table-key">统一社会信用代码</td>
<td>-</td>
</tr>
<tr>
<td class="table-key">工商注册号</td>
<td>-</td>
<td class="table-key">组织机构代码证号</td>
<td>-</td>
</tr>
<tr>
<td class="table-key">税务登记号</td>
<td colspan="3">-</td>
</tr>
<tr>
<td class="table-key">身份选择</td>
<td>-</td>
<td class="table-key">法人身份证号/护照...</td>
<td>-</td>
</tr>
<tr>
<td class="table-key">纳税人身份</td>
<td>-</td>
<td class="table-key">纳税人税率</td>
<td>-</td>
</tr>
<tr>
<td class="table-key lot">享受优惠政策说明</td>
<td colspan="3">-</td>
</tr>
</table>
<table style="margin-top:16px;">
<tr>
<td class="table-key">法人代表</td>
<td>-</td>
<td class="table-key">公司联系人</td>
<td>-</td>
</tr>
<tr>
<td class="table-key">公司联系人电话</td>
<td>-</td>
<td class="table-key">主项资质</td>
<td>-</td>
</tr>
<tr>
<td class="table-key">公司性质</td>
<td>-</td>
<td class="table-key">资质等级</td>
<td>-</td>
</tr>
<tr>
<td class="table-key">施工承包范围</td>
<td>-</td>
<td class="table-key">专业类别</td>
<td>-</td>
</tr>
<tr>
<td class="table-key">公司注册地所属区域</td>
<td>-</td>
<td class="table-key">公司注册地所属省</td>
<td>-</td>
</tr>
<tr>
<td class="table-key">公司注册地所属城市</td>
<td>-</td>
<td class="table-key">注册地址</td>
<td>-</td>
</tr>
<tr>
<td class="table-key">开户行</td>
<td>-</td>
<td class="table-key">银行账号</td>
<td>-</td>
</tr>
</table>
</div>
<!-- 上传证书及其他信息 -->
<div class="certificate-details table-item">
<div class="info-module-title"><span>上传证书及其他信息</span></div>
<el-table :data="textTabel" border stripe>
<el-table-column label="证书类型" width="194px">
</el-table-column>
<el-table-column label="到期时间" width="194px">
</el-table-column>
<el-table-column label="状态" width="194px">
</el-table-column>
<el-table-column label="查看" min-width="194px">
</el-table-column>
<el-table-column label="操作" width="194px">
</el-table-column>
</el-table>
</div>
<!-- 审批意见 -->
<div class="approval-opinions">
<div class="info-module-title"><span>审批意见</span></div>
<!-- 项目部意见 -->
<div class="project-opinion">
<div class="opinion-title">项目部意见</div>
<table>
<tr>
<td class="table-key">准入情况</td>
<td colspan="3">-</td>
</tr>
<tr>
<td class="table-key">经办人</td>
<td>-</td>
<td class="table-key">准入时间</td>
<td>-</td>
</tr>
<tr>
<td class="table-key">商务经理</td>
<td>-</td>
<td class="table-key">准入时间</td>
<td>-</td>
</tr>
<tr>
<td class="table-key">项目经理</td>
<td>-</td>
<td class="table-key">准入时间</td>
<td>-</td>
</tr>
</table>
</div>
<!-- 公司意见 -->
<div class="company-opinion">
<div class="opinion-title">公司意见</div>
<table>
<tr>
<td class="table-key">公司意见</td>
<td>-</td>
<td class="table-key">准入时间</td>
<td>-</td>
</tr>
</table>
</div>
</div>
</div>
</template>
<script>
import { getSupplierAccessInfoApi } from "@/api/internalCooperation";
export default {
name: "accessCondition",
props: ['companyId', "companyInfo"],
data() {
return {
comCompanyInfo: this.companyInfo,
queryParams: {
advisoryBodyCid: this.companyId,
},
supplierAccessInfo: {},
textTabel: []
};
},
//可访问data属性
created() {
this.init();
},
//计算集
computed: {
},
//方法集
methods: {
async init() {
try {
const result = await getSupplierAccessInfoApi({
customerName: this.comCompanyInfo.companyName
});
if (result.code == 200 && result.data) {
this.supplierAccessInfo = { ...this.supplierAccessInfo, ...result.data };
}
console.log(result);
} catch (error) {
}
}
},
}
</script>
<style lang="scss" scoped>
.access-condition {
width: 100%;
height: 100%;
padding: 16px;
box-sizing: border-box;
overflow: auto;
.info-module-title {
line-height: 24px;
color: #232323;
font-weight: bold;
font-size: 16px;
margin-bottom: 16px;
display: flex;
align-items: center;
& > span {
display: inline-block;
position: relative;
padding-left: 8px;
box-sizing: border-box;
&::before {
content: "";
position: absolute;
left: 0px;
top: 50%;
transform: translateY(-50%);
background: rgba(35, 35, 35, 0.8);
width: 2px;
height: 14px;
}
}
}
table {
width: 100%;
border-spacing: 0;
border-collapse: collapse;
&,
th,
td {
border: 1px solid #e6eaf1;
box-sizing: border-box;
}
td {
padding: 9px 12px;
line-height: 22px;
color: #232323;
font-size: 12px;
}
.table-key {
width: 140px;
background: #f0f3fa;
color: rgba(35, 35, 35, 0.8);
&.lot {
height: 62px;
}
}
}
.approval-opinions,
.certificate-details {
margin-top: 32px;
}
.certificate-details {
&.table-item {
::v-deep .el-table {
.el-table__header-wrapper {
position: static;
}
}
}
}
.approval-opinions {
.company-opinion,
.project-opinion {
margin-top: 16px;
.opinion-title {
color: #232323;
font-size: 14px;
line-height: 24px;
margin-bottom: 16px;
}
}
}
}
</style>
<template>
<div class="consulting-agency-cooperation">
<head-form-new title="咨询机构合作" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" ref="searchFormNew" @handle-excel="handleExcel" />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables v-if="!isSkeleton" :indexFixed="true" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" @handle-current-change="handleCurrentChange">
<!-- 项目列表 -->
<template slot="projectName" slot-scope="scope">
<span v-if="scope.row.projectName" style="color: #0081FF;cursor: pointer;"
@click="viewProjectDetail(scope.row)">{{scope.row.projectName}}</span>
<span v-else>-</span>
</template>
<!-- 省市区 -->
<template slot="provinceName" slot-scope="scope">
<span>{{`${scope.row.provinceName}${scope.row.provinceName || scope.row.cityName ? " - " : ""}${scope.row.cityName}`}}</span>
</template>
<!-- 业主单位 -->
<template slot="ownerName" slot-scope="scope">
<span v-if="scope.row.ownerName" style="color: #0081FF;cursor: pointer;" @click="viewEnterprise(scope.row)">{{scope.row.ownerName}}</span>
<span v-else>-</span>
</template>
<!-- 项目承接单位 -->
<template slot="contractOrgName" slot-scope="scope">
<span v-if="scope.row.contractOrgName" style="color: #0081FF;cursor: pointer;"
@click="viewEnterprise(scope.row)">{{scope.row.contractOrgName}}</span>
<span v-else>-</span>
</template>
<!-- 咨询机构名称 -->
<template slot="advisoryBodyName" slot-scope="scope">
<span v-if="scope.row.advisoryBodyName" style="color: #0081FF;cursor: pointer;"
@click="viewEnterprise(scope.row)">{{scope.row.advisoryBodyName}}</span>
<span v-else>-</span>
</template>
</tables>
</div>
</template>
<script>
import skeleton from '../component/skeleton';
import mixin from '@/views/detail/party-a/mixins/mixin';
import { getConsultingAgencyCooperationListApi, exportRecordOfCooperationExcelApi } from "@/api/internalCooperation";
import { getAllAreaApi } from "@/api/common";
import { getTreeSelectAreaList } from "@/utils";
export default {
name: "consultingAgencyCooperation",
mixins: [mixin],
components: {
skeleton
},
props: ['companyId'],
data() {
return {
queryParams: {
advisoryBodyCid: this.companyId,
pageNum: 1,
pageSize: 10,
},
forData: [
{ label: '项目列表', prop: 'projectName', width: '222', slot: true, showOverflowTooltip: true },
{ label: '项目编码', prop: 'projectCode', width: '123' },
{ label: '省市', prop: 'provinceName', minWidth: '110', slot: true },
{ label: '项目承接类型', prop: 'isinvestproject', width: '102', showOverflowTooltip: true },
{ label: '工程基础大类', prop: 'projectType1', width: '98', showOverflowTooltip: true },
{ label: '工程类别明细', prop: 'projectType', width: '98', showOverflowTooltip: true },
{ label: '项目负责人姓名', prop: 'projectLeader', width: '110' },
{ label: '项目负责人专业', prop: 'projectLeaderMajor', width: "110" },
{ label: '项目负责人联系电话', prop: 'projectLeaderPhone', width: "135" },
{ label: '合同金额(元)', prop: 'contractOrigValue', width: "110", align: "right" },
{ label: '业主单位', prop: 'ownerName', slot: true, width: "185", showOverflowTooltip: true },
{ label: '项目承接单位', prop: 'contractOrgName', width: "196", slot: true },
{ label: '咨询机构名称', prop: 'advisoryBodyName', width: "172", slot: true },
{ label: '创建时间', prop: 'loadTime', width: "172" },
],
formData: [
{
type: 7, fieldName: 'businessTypes', value: '', placeholder: '项目省市', uid: this.getUid(), options: [], props: {
multiple: true,
value: "value",
label: "value",
// checkStrictly: true
}
},
{ type: 4, fieldName: 'causeAction', value: '', placeholder: '项目承接类型', options: [], uid: this.getUid() },
{ type: 4, fieldName: 'causeAction', value: '', placeholder: '工程类别明细', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'advisoryBodyName', value: '', placeholder: '请输入', uid: this.getUid() },
],
//列表
tableLoading: false,
tableData: [],
tableDataTotal: 0,
isSkeleton: true,
areaList: []
};
},
//可访问data属性
created() {
this.initDetail();
},
//计算集
computed: {
},
//方法集
methods: {
async initDetail() {
try {
await this.handleQuery();
await this.getAllArea();
} catch (error) {
}
},
async getAllArea() {
try {
const area = await getAllAreaApi();
if (area.code == 200) {
this.areaList = area.data;
this.$set(this.formData[0], "options", this.areaList);
console.log();
}
} catch (error) {
}
},
async handleQuery(params) {
try {
let data = params ? params : this.queryParams;
this.isSkeleton = true;
const res = await getConsultingAgencyCooperationListApi(data);
this.tableData = res.rows ? res.rows : [];
this.tableDataTotal = res.total ? res.total : 0;
} catch (error) {
console.log(error);
} finally {
this.isSkeleton = false;
}
},
async handleSearch() {
try {
const areaSearchList = this.$refs["searchFormNew"].$refs["cascader"][0].getCheckedNodes();
if (areaSearchList?.length) {
const valueList = areaSearchList.map(item => item.value);
const result = getTreeSelectAreaList(valueList, this.areaList, "value");
console.log(result);
}
} catch (error) {
}
},
// 导出excel
async handleExcel() {
try {
const result = await exportRecordOfCooperationExcelApi(this.queryParams);
this.$download.saveAs(result);
} catch (error) {
}
},
// 跳转项目详情
viewProjectDetail(row) {
},
viewEnterprise(row) {
}
}
}
</script>
<style lang="scss" scoped>
.consulting-agency-cooperation {
background: #ffffff;
border-radius: 4px;
padding: 16px;
input {
border: 1px solid #efefef;
}
::v-deep .el-form-item {
margin-right: 8px !important;
}
.query-box {
margin: 10px 0 20px;
}
.cell-span {
display: inline-block;
position: relative;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 4;
cursor: pointer;
> span {
display: inline-block;
width: 37px;
position: absolute;
right: 0;
bottom: 0;
background-color: #fff;
z-index: 1;
}
}
@import "@/assets/styles/search-common.scss";
}
</style>
<template>
<div class="cooperation-record">
<head-form-new title="供应商合作记录" :form-data="formData" :query-params="queryParams" :total="tableDataTotal" :isExcel="true"
@handle-search="handleSearch" ref="searchFormNew" @handle-excel="handleExcel" />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables v-if="!isSkeleton" :indexFixed="true" :tableData="tableData" :forData="forData" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" @handle-current-change="handleCurrentChange">
<!-- 项目列表 -->
<template slot="projectName" slot-scope="scope">
<span v-if="scope.row.projectName" style="color: #0081FF;cursor: pointer;"
@click="viewProjectDetail(scope.row)">{{scope.row.projectName}}</span>
<span v-else>-</span>
</template>
</tables>
<el-dialog :title="dialogTitle" :visible.sync="cooperationRecordDialog" width="1100px" @close="dialogClose"
class="cooperation-record-dialog-container" custom-class="cooperation-record-dialog">
<div class="cooperation-record-dialog-innner">
<dialog-head-form-new title="" :form-data="dialogFormData" :query-params="dialogQueryParams" :total="dialogtableDataTotal" :isExcel="false"
@handle-search="dialogHandleSearch" ref="dialogSearchFormNew" />
<skeleton v-if="dialogIsSkeleton" style="padding: 16px"></skeleton>
<!-- 列表 -->
<dialog-tables v-if="!dialogIsSkeleton" :indexFixed="true" :tableData="dialogTableData" :forData="forData"
:tableDataTotal="dialogtableDataTotal" :queryParams="dialogQueryParams" @handle-current-change="dialogCurrentChange">
</dialog-tables>
</div>
</el-dialog>
</div>
</template>
<script>
import skeleton from '../component/skeleton';
import mixin from '@/views/detail/party-a/mixins/mixin';
import { getSupplierCooperationRecordListApi } from "@/api/internalCooperation";
import { getAllAreaApi } from "@/api/common";
import { getTreeSelectAreaList } from "@/utils";
import DialogHeadFormNew from "../component/HeadFormNew";
import DialogTables from "../component/Tables";
export default {
name: "cooperationRecord",
mixins: [mixin],
components: {
skeleton,
DialogHeadFormNew,
DialogTables
},
props: ['companyId'],
data() {
return {
queryParams: {
customerId: this.companyId,
pageNum: 1,
pageSize: 10,
},
forData: [
{ label: '工程名称', prop: 'projectName', width: '244', slot: true, showOverflowTooltip: true },
{ label: '合作区域', prop: 'areaName', width: '102' },
{ label: '省份', prop: 'provinceName', width: '102' },
{ label: '城市', prop: 'cityName', width: '102' },
{ label: '项目联系人', prop: 'projectManagerName', width: '86' },
{ label: '联系电话', prop: 'projectManagerPhone', width: '102' },
{ label: '资源平台类型', prop: 'projectType2', width: '98' },
{ label: '合同签订日期', prop: 'signDate', width: '149' },
{ label: '合同总价', prop: 'subcontractValue', width: '79' },
{ label: '结算总价', prop: 'settleValue', width: '79' },
{ label: '分包内容', prop: 'jobScope', width: '126' },
{ label: '工程类型', prop: 'projectType2', width: '78' },
{ label: '队伍完工评价', prop: '', minWidth: '98' },
{ label: '合同完工评价', prop: '', minWidth: '98' },
{ label: '评价有效性', prop: '', minWidth: '86' },
{ label: '无效原因', prop: '', minWidth: '74' },
],
formData: [
{
type: 7, fieldName: 'businessTypes', value: '', placeholder: '项目地区', uid: this.getUid(), options: [], props: {
multiple: true,
value: "value",
label: "value",
// checkStrictly: true
}
},
{ type: 4, fieldName: 'causeAction', value: '', placeholder: '招标品类', options: [], uid: this.getUid() },
{ type: 4, fieldName: 'causeAction', value: '', placeholder: '采购类型', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'advisoryBodyName', value: '', placeholder: '请输入', uid: this.getUid() },
],
//列表
tableLoading: false,
tableData: [],
tableDataTotal: 0,
isSkeleton: true,
areaList: [],
// 合作记录弹窗
cooperationRecordDialog: true,
dialogTitle: "",
dialogQueryParams: {
},
dialogFormData: [
{ type: 4, fieldName: 'causeAction', value: '', placeholder: '合作项目类型', options: [], uid: this.getUid() },
{ type: 6, fieldName: 'causeAction', value: '', placeholder: '合作金额', options: [], uid: this.getUid() },
{ type: 4, fieldName: 'causeAction', value: '', placeholder: '数据来源', options: [], uid: this.getUid() },
{ type: 3, fieldName: 'advisoryBodyName', value: '', placeholder: '请输入', uid: this.getUid() },
],
dialogIsSkeleton: true,
dialogtableDataTotal: 0,
dialogTableData: [],
};
},
//可访问data属性
created() {
this.initDetail();
},
//计算集
computed: {
},
//方法集
methods: {
async initDetail() {
try {
await this.handleQuery();
await this.getAllArea();
} catch (error) {
}
},
async getAllArea() {
try {
const area = await getAllAreaApi();
if (area.code == 200) {
this.areaList = area.data;
this.$set(this.formData[0], "options", this.areaList);
console.log();
}
} catch (error) {
}
},
async handleQuery(params) {
try {
let data = params ? params : this.queryParams;
this.isSkeleton = true;
const res = await getSupplierCooperationRecordListApi(data);
this.tableData = res.rows ? res.rows : [];
this.tableDataTotal = res.total ? res.total : 0;
} catch (error) {
console.log(error);
} finally {
this.isSkeleton = false;
}
},
async handleSearch() {
try {
const areaSearchList = this.$refs["searchFormNew"].$refs["cascader"][0].getCheckedNodes();
if (areaSearchList?.length) {
const valueList = areaSearchList.map(item => item.value);
const result = getTreeSelectAreaList(valueList, this.areaList, "value");
console.log(result);
}
} catch (error) {
}
},
handleExcel() {
},
dialogClose() {
},
dialogHandleSearch() {
},
dialogCurrentChange() {
}
},
}
</script>
<style lang="scss" scoped>
.cooperation-record {
background: #ffffff;
border-radius: 4px;
padding: 16px;
input {
border: 1px solid #efefef;
}
::v-deep .el-form-item {
margin-right: 8px !important;
}
.query-box {
margin: 10px 0 20px;
}
.cell-span {
display: inline-block;
position: relative;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 4;
cursor: pointer;
> span {
display: inline-block;
width: 37px;
position: absolute;
right: 0;
bottom: 0;
background-color: #fff;
z-index: 1;
}
}
@import "@/assets/styles/search-common.scss";
::v-deep .cooperation-record-dialog-container {
.cooperation-record-dialog {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
border-radius: 4px;
margin: 0px !important;
.el-dialog__header {
padding: 20px;
height: 56px;
display: flex;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
border-bottom: 1px solid #eeeeee;
.el-dialog__title {
color: #232323;
font-weight: bold;
line-height: 16px;
}
.el-dialog__headerbtn {
position: static;
width: 16px;
height: 16px;
}
}
.el-dialog__body {
padding: 24px 20px;
box-sizing: border-box;
.cooperation-record-dialog-innner {
width: 100%;
height: 100%;
}
}
}
}
}
</style>
......@@ -72,7 +72,7 @@ export default {
let res = await projectTenderDataGroup({ cid: this.companyId, type: this.activeIndex });
if (res.code == 200 && res.data) {
this.isSkeleton = false;
let data = res.data, totalVal = data.map(item => item.value).reduce((prev, cur) => {prev + cur},0);
let data = res.data, totalVal = data.map(item => item.value).reduce((prev, cur) => prev + cur, 0);
this.viewData = data.map(item => {
let it = { name: item.name, value: item.value, percent: parseFloat(Number(Number(item.value) / Number(totalVal) * 100).toFixed(2)) };
return it;
......
......@@ -45,7 +45,6 @@ export default {
tableLoading: false,
tableData: [],
tableDataTotal: 0,
showList: [],
isSkeleton: true
};
},
......
......@@ -122,16 +122,17 @@ import {importTemplate} from '@/api/supplier/assistant.js';
importConfirmClick() {
if (this.fileList.length > 0) {
this.$refs["upload"].submit();
this.visible = false
this.visible = false;
this.$emit("loadingFn")
} else {
this.$message("请先选择文件");
}
},
importCancel(){
this.isUpload = false
this.addsuccess = false
this.fileList = []
this.isUpload = false;
this.visible = false;
this.addsuccess = false;
this.fileList = [];
this.$emit('cancels')
},
}
......
......@@ -74,7 +74,8 @@
<div class=" table-item-jf table-item " >
<div class="title_box">
<img :src="item.logoUrl?item.logoUrl:require('@/assets/images/enterprise.png')" >
<span class="name_box" v-html="item.ename"></span>
<router-link v-if="item.jskEid" :to="`/enterprise/${encodeStr(item.jskEid)}`" tag="a" class="name_box" v-html="item.ename"></router-link>
<span v-else 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.aptitudeListude" :header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}" v-horizontal-scroll="'hover'"
......@@ -115,8 +116,9 @@
</el-table-column>
<el-table-column label="经营范围" width="415">
<template slot-scope="scope">
<span class="line_2"> {{scope.row.businessScope||"--"}}</span>
<el-tooltip class="item" effect="light" :content="scope.row.businessScope" placement="bottom">
<span class="line_2"> {{scope.row.businessScope||"--"}}</span>
</el-tooltip>
</template>
</el-table-column>
</el-table>
......@@ -133,7 +135,8 @@
<div class=" table-item-jf table-item " >
<div class="title_box">
<img src="@/assets/images/enterprise.png" >
<span class="name_box" v-html="ename"></span>
<span v-if="jskEid" @click="linkTo(`/enterprise/${encodeStr(jskEid)}`)" class="name_box" v-html="ename"></span>
<span v-else 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>
......@@ -173,8 +176,9 @@
</el-table-column>
<el-table-column label="经营范围" width="415">
<template slot-scope="scope">
<span class="line_2"> {{scope.row.businessScope||"--"}}</span>
<el-tooltip class="item" effect="light" :content="scope.row.businessScope" placement="bottom">
<span class="line_2"> {{scope.row.businessScope||"--"}}</span>
</el-tooltip>
</template>
</el-table-column>
</el-table>
......@@ -210,16 +214,19 @@ 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';
import { encodeStr } from "@/assets/js/common.js";
export default {
components: { skeleton,ExportDialog,BatchImport },
data(){
return{
encodeStr,
params:{},
successDialog:false,
loading:false,
batchImport:false,
ename: '',
jskEid:'',
aptitudeDtoList: [
{
nameStr: '',
......@@ -294,6 +301,10 @@ export default {
this.search(1)
},
methods:{
linkTo(url){
this.showMore = false;
this.$router.push(url)
},
reUpload(){
this.$refs.batchImport.visible = true;
this.successDialog = false
......@@ -352,6 +363,7 @@ export default {
"limit": this.pageSize1
}
this.ename = item.ename;
this.jskEid = item.jskEid;
params.eid=item.jskEid;
this.params1 = params
enterpriseAptitude(params).then(res=>{
......@@ -462,8 +474,13 @@ export default {
}
}
</script>
<style lang="scss" scoped>
<style lang="scss">
.el-tooltip__popper{
margin: 30px;
}
</style>
<style lang="scss" scoped>
::v-deep .search_aptittude_success_dialog{
border-radius: 4px;
.el-dialog__header{
......@@ -574,8 +591,8 @@ export default {
}
}
.content_item_list {
width: 280px;
::v-deep .content_item_list {
width: 405px;
height: 32px;
line-height: 32px;
}
......@@ -594,6 +611,7 @@ export default {
.item_ckquery_btn{
height: 32px;
line-height: 32px;
margin-left: 12px;
top: 1px;
border-color: #DCDFE6;
color: rgba(35, 35, 35, 0.8);
......@@ -752,6 +770,7 @@ export default {
.title_box{
font-size: 14px;
color: #232323;
margin-bottom: 12px;
.name_box{
font-size: 16px;
font-weight: 700;
......
......@@ -106,8 +106,9 @@
<template slot-scope="scope">
<div class="renling">
<div style="display:flex;align-items:center">
<router-link :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a"
<router-link v-if="scope.row.companyId" :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a"
class="wordprimary" v-html="scope.row.customerName"></router-link>
<span v-else v-html="scope.row.customerName"></span>
</div>
</div>
......
......@@ -111,8 +111,9 @@
<template slot-scope="scope">
<div class="renling">
<div style="display:flex;align-items:center">
<router-link :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a"
<router-link v-if="scope.row.companyId" :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a"
class="wordprimary" v-html="scope.row.customerName"></router-link>
<span v-else v-html="scope.row.customerName"></span>
</div>
</div>
......
......@@ -100,8 +100,9 @@
<template slot-scope="scope">
<div class="renling">
<div style="display:flex;align-items:center">
<router-link :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a"
<router-link v-if="scope.row.companyId" :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a"
class="wordprimary" v-html="scope.row.customerName"></router-link>
<span v-else v-html="scope.row.customerName"></span>
</div>
</div>
......
......@@ -101,8 +101,9 @@
<template slot-scope="scope">
<div class="renling">
<div style="display:flex;align-items:center">
<router-link :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a"
<router-link v-if="scope.row.companyId" :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a"
class="wordprimary" v-html="scope.row.customerName"></router-link>
<span v-else v-html="scope.row.customerName"></span>
</div>
</div>
......
......@@ -101,8 +101,9 @@
<template slot-scope="scope">
<div class="renling">
<div style="display:flex;align-items:center">
<router-link :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a"
<router-link v-if="scope.row.companyId" :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a"
class="wordprimary" v-html="scope.row.customerName"></router-link>
<span v-else v-html="scope.row.customerName"></span>
</div>
</div>
......
......@@ -101,8 +101,9 @@
<template slot-scope="scope">
<div class="renling">
<div style="display:flex;align-items:center">
<router-link :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a"
<router-link v-if="scope.row.companyId" :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a"
class="wordprimary" v-html="scope.row.customerName"></router-link>
<span v-else v-html="scope.row.customerName"></span>
</div>
</div>
......
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