Commit a5f84e87 authored by Administrator's avatar Administrator

Merge remote-tracking branch 'origin/V20231129-中建一局二公司' into V20231129-中建一局二公司

parents 886c7634 0195f20c
......@@ -166,7 +166,8 @@ tenant:
- d_customer
- d_project
- d_subcontract
- sys_advisory_body
- advisory_body
- advisory_body_project
- dim_area
- biz_dict_data
......
......@@ -5,6 +5,7 @@ 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.AdvisoryBody;
import com.dsk.cscec.domain.bo.AdvisoryBodySearchBo;
import com.dsk.cscec.domain.bo.CooperateProjectDetailSearchBo;
import com.dsk.cscec.domain.bo.ProjectSearchBo;
......@@ -13,6 +14,7 @@ import com.dsk.cscec.domain.vo.CooperateProjectDetailSearchVo;
import com.dsk.cscec.domain.vo.ProjectDetailVo;
import com.dsk.cscec.domain.vo.ProjectSearchVo;
import com.dsk.cscec.service.IDProjectService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -27,6 +29,7 @@ import javax.validation.constraints.NotNull;
* @author sxk
* @since 2023-12-10 15:34:46
*/
@Validated
@RestController
@RequestMapping("advisory/body")
public class AdvisoryBodyManageController extends BaseController {
......@@ -67,5 +70,13 @@ public class AdvisoryBodyManageController extends BaseController {
public R<ProjectDetailVo> getProjectDetail(@NotNull(message = "项目主键不能为空") @PathVariable Long projectKey) {
return R.ok(baseService.queryProjectDetail(projectKey));
}
/**
* 根据咨询机构ID查询咨询机构详情
*/
@GetMapping("/getAdvisoryBodyDetail/{advisoryBodyId}")
public R<AdvisoryBody> getAdvisoryBodyDetail(@NotNull(message = "咨询机构ID不能为空") @PathVariable Long advisoryBodyId) {
return R.ok(baseService.queryAdvisoryBodyDetail(advisoryBodyId));
}
}
package com.dsk.cscec.controller;
import com.dsk.common.core.controller.BaseController;
import com.dsk.cscec.service.AdvisoryBodyProjectService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* 咨询机构和项目关联表(AdvisoryBodyProject)表控制层
*
* @author sxk
* @since 2023-12-15 15:57:54
*/
@RestController
@RequestMapping("advisoryBodyProject")
public class AdvisoryBodyProjectController extends BaseController {
/**
* 服务对象
*/
@Resource
private AdvisoryBodyProjectService advisoryBodyProjectService;
///**
// * 分页查询所有数据
// *
// * @param page 分页对象
// * @param advisoryBodyProject 查询实体
// * @return 所有数据
// */
//@GetMapping
//public R selectAll(Page<AdvisoryBodyProject> page, AdvisoryBodyProject advisoryBodyProject) {
// return success(this.advisoryBodyProjectService.page(page, new QueryWrapper<>(advisoryBodyProject)));
//}
//
///**
// * 通过主键查询单条数据
// *
// * @param id 主键
// * @return 单条数据
// */
//@GetMapping("{id}")
//public R selectOne(@PathVariable Serializable id) {
// return success(this.advisoryBodyProjectService.getById(id));
//}
//
///**
// * 新增数据
// *
// * @param advisoryBodyProject 实体对象
// * @return 新增结果
// */
//@PostMapping
//public R insert(@RequestBody AdvisoryBodyProject advisoryBodyProject) {
// return success(this.advisoryBodyProjectService.save(advisoryBodyProject));
//}
//
///**
// * 修改数据
// *
// * @param advisoryBodyProject 实体对象
// * @return 修改结果
// */
//@PutMapping
//public R update(@RequestBody AdvisoryBodyProject advisoryBodyProject) {
// return success(this.advisoryBodyProjectService.updateById(advisoryBodyProject));
//}
//
///**
// * 删除数据
// *
// * @param idList 主键结合
// * @return 删除结果
// */
//@DeleteMapping
//public R delete(@RequestParam("idList") List<Long> idList) {
// return success(this.advisoryBodyProjectService.removeByIds(idList));
//}
}
......@@ -5,15 +5,19 @@ import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.DCustomer;
import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.cscec.domain.bo.AdvisoryBodyBo;
import com.dsk.cscec.domain.bo.CustomerInfoBo;
import com.dsk.cscec.domain.vo.AdvisoryBodyVo;
import com.dsk.cscec.domain.vo.CustomerApproveVo;
import com.dsk.cscec.domain.vo.CustomerInfoVo;
import com.dsk.cscec.service.ICustomerInfoService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotEmpty;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 供应商相关
......@@ -35,16 +39,33 @@ public class CustomerInfoController extends BaseController {
* 供应商分类列表
*/
@PostMapping("/list")
public TableDataInfo<CustomerInfoVo> list(@Validated @RequestBody CustomerInfoBo bo,@RequestBody PageQuery query) {
public TableDataInfo<CustomerInfoVo> list(@Validated @RequestBody CustomerInfoBo bo, @RequestBody PageQuery query) {
return iCustomerInfoService.queryPageList(bo, query);
}
/**
* 内部合作-咨询机构合作记录
*/
@GetMapping("/advisoryList")
public TableDataInfo<AdvisoryBodyVo> advisoryList(@Validated AdvisoryBodyBo bo, PageQuery query) {
return iCustomerInfoService.queryAdvisoryList(bo, query);
}
/**
* 内部合作-咨询机构合作记录导出
*/
@GetMapping("/advisoryExport")
public void advisoryExport(@Validated AdvisoryBodyBo bo, PageQuery query, HttpServletResponse response) {
List<AdvisoryBodyVo> listVo = iCustomerInfoService.queryAdvisoryList(bo, query).getRows();
ExcelUtil.exportExcel(listVo, "咨询机构合作记录", AdvisoryBodyVo.class, response);
}
/**
* 合作记录-供应商准入情况
*/
@GetMapping("/getByName/{name}")
public R<DCustomer> list(@NotEmpty(message = "企业名称不能为空") @PathVariable String name) {
return R.ok(iCustomerInfoService.queryByName(name));
@GetMapping("/getApproveInfo")
public R<CustomerApproveVo> getApproveInfo(CustomerInfoBo bo) {
return R.ok(iCustomerInfoService.queryApproveByBo(bo));
}
}
......
......@@ -5,12 +5,19 @@ import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.R;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.excel.ExcelUtils;
import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.domain.bo.DCustomerSearchBo;
import com.dsk.cscec.domain.vo.DCustomerListVo;
import com.dsk.cscec.service.IDCustomerService;
import com.dsk.jsk.domain.JskCombineSearchDto;
import com.dsk.jsk.domain.vo.JskCombineWinBidProjectExportVo;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 组织维表(DCustomer)表控制层
*
......@@ -30,7 +37,7 @@ public class DCustomerController extends BaseController {
* 供应商总台账筛选
*/
@PostMapping("/all/searchList")
public TableDataInfo<DCustomer> allSearchList(@RequestBody DCustomerSearchBo bo,@RequestBody PageQuery query) {
public TableDataInfo<DCustomerListVo> allSearchList(@RequestBody DCustomerSearchBo bo,@RequestBody PageQuery query) {
return baseService.allSearchList(bo,query);
}
......@@ -42,6 +49,16 @@ public class DCustomerController extends BaseController {
return R.ok(baseService.getById(customerKey));
}
/**
* 供应商信息
*/
@PostMapping("/export")
public void export(@RequestBody DCustomerSearchBo bo, HttpServletResponse response) {
List<DCustomerListVo> list = baseService.exportList(bo);
ExcelUtils<DCustomerListVo> util = new ExcelUtils<>(DCustomerListVo.class);
util.exportExcel(response, list, "集团中标","", true);
}
}
......@@ -4,6 +4,7 @@ package com.dsk.cscec.controller;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.R;
import com.dsk.cscec.domain.vo.RegionVo;
import com.dsk.cscec.domain.vo.RegionWithLevelVo;
import com.dsk.cscec.service.IDimAreaService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -39,7 +40,7 @@ public class DimAreaController extends BaseController {
* 获取地区树(不含区域)
*/
@GetMapping("/all/withoutRegion")
public R<List<RegionVo>> allAreaWithoutRegion(){
public R<List<RegionWithLevelVo>> allAreaWithoutRegion(){
return R.ok(baseService.allAreaWithoutRegion());
}
}
......
......@@ -6,7 +6,6 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
......@@ -31,54 +30,14 @@ public class AdvisoryBody implements Serializable {
* 咨询机构cid(用于查询建设库数据)
*/
private Integer advisoryBodyCid;
/**
* 项目主键(用作关联d_project)
*/
private Long projectKey;
/**
* 咨询机构名称
*/
private String advisoryBodyName;
/**
* 法人代表
*/
private String legalPerson;
/**
* 法人联系电话
*/
private String legalPersonPhone;
/**
* 注册地址
*/
private String regAddress;
/**
* 项目负责人
*/
private String projectLeader;
/**
* 项目负责人专业
*/
private String projectLeaderMajor;
/**
* 项目负责人联系电话
*/
private String projectLeaderPhone;
/**
* 结算金额(万元)
*/
private BigDecimal settleAmount;
/**
* 结算开始时间
*/
private Date settleStartTime;
/**
* 结算完成时间
*/
private Date settleFinishTime;
/**
* 是否为终审单位(0代表是 1代表否)
* 经营范围
*/
private String isFinalJudgeUnit;
private String businessScope;
/**
* 创建者
*/
......
package com.dsk.cscec.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @author sxk
* @date 2023.12.15
* @time 15:58
*/
@Data
public class AdvisoryBodyProject implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 项目主键
*/
@TableId(value = "project_key")
private Long projectKey;
/**
* 咨询机构ID
*/
private Long advisoryBodyId;
/**
* 咨询机构cid(用于查询建设库数据)
*/
private Integer advisoryBodyCid;
/**
* 合作时间
*/
private Date cooperateTime;
/**
* 项目负责人
*/
private String projectLeader;
/**
* 项目负责人专业
*/
private String projectLeaderMajor;
/**
* 项目负责人联系电话
*/
private String projectLeaderPhone;
/**
* 结算金额(万元)
*/
private Double settleAmount;
/**
* 结算开始时间
*/
private Date settleStartTime;
/**
* 结算完成时间
*/
private Date settleFinishTime;
/**
* 是否为终审单位(0代表是 1代表否)
*/
private String isFinalJudgeUnit;
/**
* 创建者
*/
private String createBy;
/**
* 创建时间
*/
private Date createTime;
/**
* 更新者
*/
private String updateBy;
/**
* 更新时间
*/
private Date updateTime;
}
......@@ -13,29 +13,29 @@ import lombok.Data;
public class DimArea implements Serializable {
private static final long serialVersionUID = 1L;
private Integer areaKey;
private String areaCode;
private String areaName;
/**
private Integer areaKey;
private String areaCode;
private String areaName;
/**
* 地区
*/
private String areaName1;
/**
private String areaName1;
/**
* 省
*/
private String areaName2;
/**
private String areaName2;
/**
* 省简写
*/
private String areaAbbrName2;
private String areaName3;
private Integer levelNo;
private String isleaf;
private String isvalid;
private String remark;
private String areaId;
private String parentId;
private String loadTime;
private String areaAbbrName2;
private String areaName3;
private Integer levelNo;
private String isleaf;
private String isvalid;
private String remark;
private String areaId;
private String parentId;
private String loadTime;
}
package com.dsk.cscec.domain.bo;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import java.util.List;
/**
* 咨询机构合作记录查询
*
* @author
* @since 2023-12-14
*/
@Data
public class AdvisoryBodyBo extends BaseEntity {
/**
* 咨询机构ID
*/
private Long advisoryBodyId;
/**
* 咨询机构cid(用于查询建设库数据)
*/
private Integer advisoryBodyCid;
/**
* 项目主键(用作关联d_project)
*/
private Long projectKey;
/**
* 咨询机构名称
*/
private String advisoryBodyName;
/**
* 项目承接单位id
*/
private String contractOrgId;
/**
* 项目承接单位
*/
private String contractOrgName;
/**
* 省份
*/
private List<String> province;
/**
* 城市
*/
private List<String> city;
/**
* 项目承接类型
*/
/**
* 工程类别明细
*/
}
......@@ -3,6 +3,7 @@ package com.dsk.cscec.domain.bo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
......@@ -22,10 +23,12 @@ public class AdvisoryBodySearchBo {
/**
* 最小最近合作时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date minLastCooperateDate;
/**
* 最大最近合作时间
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date maxLastCooperateDate;
/**
* 经营范围
......
......@@ -4,6 +4,7 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
......@@ -16,9 +17,10 @@ import java.util.List;
@NoArgsConstructor
public class CooperateProjectDetailSearchBo {
/**
* 咨询机构ID
* 咨询机构CID
*/
private Long advisoryBodyId;
@NotNull(message = "咨询机构CID不能为空")
private Long advisoryBodyCid;
/**
* 项目名称
*/
......
package com.dsk.cscec.domain.bo;
import com.dsk.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
......@@ -16,6 +17,14 @@ import java.util.List;
*/
@Data
public class CustomerInfoBo extends BaseEntity {
/**
* 客商主键
*/
private Long customerKey;
/**
* 统一社会信用代码
*/
private String unifySocialCode;
/**
* 供应商类别(分供,劳务分包,专业分包,租赁,劳务分包队伍)
*/
......@@ -72,12 +81,12 @@ public class CustomerInfoBo extends BaseEntity {
/**
* 准入时间开始
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date approveDate2Start;
/**
* 准入时间结束
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date approveDate2End;
/**
* 队长名称
......
package com.dsk.cscec.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 咨询机构合作记录
*
* @author
* @since 2023-12-14
*/
@Data
@ExcelIgnoreUnannotated
public class AdvisoryBodyVo {
/**
* 项目主键
*/
private Long projectKey;
/**
* 项目名称
*/
@ExcelProperty(value = "项目名称", index = 0)
private String projectName;
/**
* 项目编码
*/
@ExcelProperty(value = "项目编码", index = 1)
private String projectCode;
/**
* 省
*/
@ExcelProperty(value = "省", index = 2)
private String provinceName;
/**
* 市
*/
@ExcelProperty(value = "市", index = 3)
private String cityName;
/**
* 项目承接类型
*/
@ExcelProperty(value = "项目承接类型", index = 4)
private String isinvestproject;
/**
* 工程基础大类
*/
@ExcelProperty(value = "工程基础大类", index = 5)
private String projectType1;
/**
* 工程类别明细
*/
@ExcelProperty(value = "工程类别明细", index = 6)
private String projectType;
/**
* 咨询机构ID
*/
private Long advisoryBodyId;
/**
* 咨询机构cid(用于查询建设库数据)
*/
private Integer advisoryBodyCid;
/**
* 咨询机构名称
*/
private String advisoryBodyName;
/**
* 项目负责人
*/
@ExcelProperty(value = "项目负责人姓名", index = 7)
private String projectLeader;
/**
* 项目负责人专业
*/
@ExcelProperty(value = "项目负责人专业", index = 8)
private String projectLeaderMajor;
/**
* 项目负责人联系电话
*/
@ExcelProperty(value = "项目负责人联系电话", index = 9)
private String projectLeaderPhone;
/**
* 合同金额
*/
@ExcelProperty(value = "合同金额", index = 10)
private BigDecimal contractOrigValue;
/**
* 业主单位
*/
@ExcelProperty(value = "业主单位", index = 11)
private String ownerName;
/**
* 项目承接单位
*/
@ExcelProperty(value = "项目承接单位", index = 12)
private String contractOrgName;
/**
* 创建时间
*/
@ExcelProperty(value = "创建时间", index = 13)
private Date loadTime;
}
package com.dsk.cscec.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import lombok.Data;
import java.util.Date;
/**
* 供应商准入情况
*
* @author
* @since 2023-12-15
*/
@Data
@ExcelIgnoreUnannotated
public class CustomerApproveVo {
/**
* 客商主键
*/
private Long customerKey;
/**
* 供应商编号
*/
private String customerCode;
/**
* 供应商名称
*/
private String customerName;
/**
* 注册资金
*/
private Double registerCapital;
/**
* 统一社会信用代码
*/
private String unifySocialCode;
/**
* 工商注册号
*/
private String registerNo;
/**
* 组织机构代码号
*/
private String orgnizationCode;
/**
* 税务登记号
*/
private String businessLicense;
/**
* 身份信息选择
*/
private String cardType;
/**
* 身份证号
*/
private String idCard;
/**
* 纳税人身份
*/
private String paytaxType;
/**
* 纳税人税率
*/
private String taxRate;
/**
* 法人代表
*/
private String representative;
/**
* 联系人
*/
private String contactPerson;
/**
* 联系电话
*/
private String contactPhone;
/**
* 业主性质
*/
private String ownerKind;
/**
* 资质等级
*/
private String credential;
/**
* 施工承包范围
*/
private String constructJobScope;
/**
* 专业类别id
*/
private String groupSpecialtyId;
/**
* 集团专业类别
*/
private String groupSpecialty;
/**
* 城市id
*/
private String registerCityId;
/**
* 注册地区域
*/
private String registerRegion;
/**
* 省份
*/
private String registerProvince;
/**
* 城市
*/
private String registerCity;
/**
* 企业注册地
*/
private String registerAddress;
/**
* 开户行
*/
private String openBank;
/**
* 银行账号
*/
private String bankAccount;
/**
* 主营业务
*/
private String primaryBusiness;
/**
* 税号
*/
private String taxNumber;
/**
* 企业性质
*/
private String customerProperty;
//证书信息
/**
* 营业执照到期时间1
*/
private Date expireDate1;
/**
* 组织机构代码证到期时间2
*/
private Date expireDate2;
/**
* 税务登记证到期时间3
*/
private Date expireDate3;
/**
* 资质证书到期时间4
*/
private Date expireDate4;
/**
* 安全生产许可证到期时间5
*/
private Date expireDate5;
/**
* 施工队长资格证到期时间6
*/
private String expireDate6;
/**
* 授权委托书到期时间7
*/
private String expireDate7;
//审批意见
/**
* 经办人
*/
private String responsiblePerson;
/**
* 经办人签字时间
*/
private Date approveDate1;
/**
* 商务经理
*/
private String businessManager;
/**
* 商务经理签字时间
*/
private Date approveDate3;
/**
* 项目经理
*/
private String projectManager;
/**
* 项目经理签字时间
*/
private Date approveDate4;
/**
* 采购部门负责人/公司意见
*/
private String purchasePrincipal;
/**
* 准入时间
*/
private Date approveDate2;
}
package com.dsk.cscec.domain.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.dsk.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Author lcl
* @Data 2023/12/18 14:14
*/
@Data
public class DCustomerListVo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* jsk企业id
*/
private Integer companyId;
/**
* 客商主键
*/
private Long customerKey;
/**
* ipm供应商id
*/
private String customerId;
/**
* 税号
*/
private String taxNumber;
/**
* 供应商编号
*/
@Excel(name = "供应商编号", width = 5)
private String customerCode;
/**
* 供应商名称
*/
@Excel(name = "供应商名称", width = 10)
private String customerName;
/**
* 推荐公司
*/
@Excel(name = "推荐公司", width = 10)
private String recommendOrg;
/**
* 注册地区域
*/
@Excel(name = "注册地区域", width = 5)
private String registerRegion;
/**
* 省份
*/
@Excel(name = "省份", width = 5)
private String registerProvince;
/**
* 城市
*/
@Excel(name = "城市", width = 5)
private String registerCity;
/**
* 注册资金
*/
@Excel(name = "注册资金", width = 5)
private Double registerCapital;
/**
* 供应商类别
*/
@Excel(name = "供应商类别", width = 5)
private String customerClass;
/**
* 集团专业类别
*/
@Excel(name = "专业类别", width = 5)
private String groupSpecialty;
/**
* 纳税人身份
*/
@Excel(name = "纳税人身份", width = 5)
private String paytaxType;
/**
* 纳税人税率
*/
@Excel(name = "纳税人税率", width = 5)
private String taxRate;
/**
* 供应商状态
*/
@Excel(name = "供应商状态", width = 5)
private String customerState;
/**
* 队长名称
*/
@Excel(name = "劳务队长", width = 5)
private String leaderName;
/**
* 劳务队长身份证号
*/
@Excel(name = "劳务队长身份证号", width = 5)
private String laborCaptainIdcard;
/**
* 劳务队长联系电话
*/
@Excel(name = "劳务队长联系电话", width = 5)
private String laborCaptainPhone;
/**
* 队伍规模人数
*/
@Excel(name = "队伍规模人数", width = 5)
private Double serviceTeamPersonnum;
/**
* 专业特长
*/
@Excel(name = "专业特长", width = 5)
private String serviceTeamSpeciality;
/**
* 施工承包范围
*/
@Excel(name = "施工承包范围", width = 5)
private String constructJobScope;
/**
* 资质等级
*/
@Excel(name = "资质等级", width = 5)
private String credential;
/**
* 联系人
*/
@Excel(name = "联系人", width = 5)
private String contactPerson;
/**
* 电话
*/
@Excel(name = "电话", width = 5)
private String contactPhone;
/**
* 准入时间
*/
@Excel(name = "准入时间", width = 5 , dateFormat = "yyyy-MM-dd")
private Date approveDate2;
/**
* 考评等级
*/
@Excel(name = "考评等级", width = 5)
private String creditLevel;
/**
* 企业合作数量
*/
private Integer enterpriseCooperationCount;
/**
* 项目合作数量
*/
private Integer projectCooperationCount;
}
package com.dsk.cscec.domain.vo;
import lombok.Data;
import java.util.List;
/**
* @Author sxk
* @Data 2023/12/13 14:14
*/
@Data
public class RegionWithLevelVo {
String level;
String value;
List<RegionWithLevelVo> children;
Integer childrenLength;
}
......@@ -2,13 +2,16 @@ package com.dsk.cscec.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dsk.cscec.domain.AdvisoryBody;
import com.dsk.cscec.domain.bo.AdvisoryBodyBo;
import com.dsk.cscec.domain.vo.AdvisoryBodySearchVo;
import com.dsk.cscec.domain.vo.AdvisoryBodyVo;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
* 咨询机构(SysAdvisoryBody)表数据库访问层
......@@ -16,15 +19,33 @@ import java.util.Date;
* @author sxk
* @since 2023-12-12 10:12:04
*/
public interface SysAdvisoryBodyMapper extends BaseMapper<AdvisoryBody> {
public interface AdvisoryBodyMapper extends BaseMapper<AdvisoryBody> {
/**
* 查询最近一次合作时间
* 获取所有企业列表(咨询机构)数据
*/
Date selectLastCooperateTime(@Param("advisoryBodyId") Long advisoryBodyId);
Page<AdvisoryBodySearchVo> selectPageAdvisoryBodyList(@Param("page") Page<AdvisoryBodySearchVo> page, @Param(Constants.WRAPPER) Wrapper<AdvisoryBody> queryWrapper);
/**
* 获取所有企业列表(咨询机构)数据
* 咨询机构合作记录
* @param build
* @param bo
* @return
*/
Page<AdvisoryBodySearchVo> selectPageAdvisoryBodyList(@Param("page") Page<AdvisoryBodySearchVo> page, @Param(Constants.WRAPPER) Wrapper<AdvisoryBody> queryWrapper);
Page<AdvisoryBodyVo> queryListByBo(IPage<AdvisoryBodyBo> build, @Param("bo") AdvisoryBodyBo bo);
/**
* 根据咨询机构名称查询对应的项目IDs
* @param advisoryBodyName 咨询机构名称
* @return 项目IDs
*/
List<Long> selectProjectIdsByAdvisoryBodyName(@Param("advisoryBodyName") String advisoryBodyName);
/**
* 根据项目主键查询咨询机构
*
* @param projectKey 项目主键
* @return 咨询机构
*/
AdvisoryBody queryAdvisoryBodyByProjectKey(@Param("projectKey") Long projectKey);
}
package com.dsk.cscec.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.cscec.domain.AdvisoryBodyProject;
/**
* 咨询机构和项目关联表(AdvisoryBodyProject)表数据库访问层
*
* @author makejava
* @since 2023-12-15 15:57:54
*/
public interface AdvisoryBodyProjectMapper extends BaseMapper<AdvisoryBodyProject> {
}
......@@ -8,6 +8,7 @@ import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.domain.bo.CustomerInfoBo;
import com.dsk.cscec.domain.bo.DCustomerSearchBo;
import com.dsk.cscec.domain.vo.CustomerInfoVo;
import com.dsk.cscec.domain.vo.DCustomerListVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
......@@ -20,7 +21,7 @@ import java.util.List;
*/
public interface DCustomerMapper extends BaseMapper<DCustomer> {
Page<DCustomer> allSearchList(IPage<DCustomerSearchBo> build, @Param("bo") DCustomerSearchBo bo);
Page<DCustomerListVo> allSearchList(IPage<DCustomerSearchBo> build, @Param("bo") DCustomerSearchBo bo);
/**
* 分类查询供应商列表
......
package com.dsk.cscec.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.cscec.domain.AdvisoryBodyProject;
/**
* 咨询机构和项目关联表(AdvisoryBodyProject)表服务接口
*
* @author makejava
* @since 2023-12-15 15:57:57
*/
public interface AdvisoryBodyProjectService extends IService<AdvisoryBodyProject> {
}
......@@ -4,7 +4,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.domain.bo.AdvisoryBodyBo;
import com.dsk.cscec.domain.bo.CustomerInfoBo;
import com.dsk.cscec.domain.vo.AdvisoryBodyVo;
import com.dsk.cscec.domain.vo.CustomerApproveVo;
import com.dsk.cscec.domain.vo.CustomerInfoVo;
/**
......@@ -17,5 +20,7 @@ public interface ICustomerInfoService extends IService<DCustomer> {
TableDataInfo<CustomerInfoVo> queryPageList(CustomerInfoBo bo, PageQuery query);
DCustomer queryByName(String name);
CustomerApproveVo queryApproveByBo(CustomerInfoBo bo);
TableDataInfo<AdvisoryBodyVo> queryAdvisoryList(AdvisoryBodyBo bo, PageQuery query);
}
......@@ -5,6 +5,9 @@ import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.domain.bo.DCustomerSearchBo;
import com.dsk.cscec.domain.vo.DCustomerListVo;
import java.util.List;
/**
* 组织维表(DCustomer)表服务接口
......@@ -14,7 +17,9 @@ import com.dsk.cscec.domain.bo.DCustomerSearchBo;
*/
public interface IDCustomerService extends IService<DCustomer> {
TableDataInfo<DCustomer> allSearchList(DCustomerSearchBo bo, PageQuery query);
TableDataInfo<DCustomerListVo> allSearchList(DCustomerSearchBo bo, PageQuery query);
List<DCustomerListVo> exportList(DCustomerSearchBo bo);
}
......@@ -3,6 +3,7 @@ package com.dsk.cscec.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.AdvisoryBody;
import com.dsk.cscec.domain.DProject;
import com.dsk.cscec.domain.bo.AdvisoryBodySearchBo;
import com.dsk.cscec.domain.bo.CooperateProjectDetailSearchBo;
......@@ -53,5 +54,13 @@ public interface IDProjectService extends IService<DProject> {
* @return 项目详情
*/
ProjectDetailVo queryProjectDetail(Long projectKey);
/**
* 根据咨询机构ID查询咨询机构详情
*
* @param advisoryBodyId 咨询机构ID
* @return 咨询机构详情
*/
AdvisoryBody queryAdvisoryBodyDetail(Long advisoryBodyId);
}
......@@ -3,6 +3,7 @@ package com.dsk.cscec.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.cscec.domain.DimArea;
import com.dsk.cscec.domain.vo.RegionVo;
import com.dsk.cscec.domain.vo.RegionWithLevelVo;
import java.util.List;
......@@ -17,7 +18,7 @@ public interface IDimAreaService extends IService<DimArea> {
List<RegionVo> allArea();
List<RegionVo> allAreaWithoutRegion();
List<RegionWithLevelVo> allAreaWithoutRegion();
}
package com.dsk.cscec.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.cscec.mapper.AdvisoryBodyProjectMapper;
import com.dsk.cscec.domain.AdvisoryBodyProject;
import com.dsk.cscec.service.AdvisoryBodyProjectService;
import org.springframework.stereotype.Service;
/**
* 咨询机构和项目关联表(AdvisoryBodyProject)表服务实现类
*
* @author makejava
* @since 2023-12-15 15:57:57
*/
@Service("advisoryBodyProjectService")
public class AdvisoryBodyProjectServiceImpl extends ServiceImpl<AdvisoryBodyProjectMapper, AdvisoryBodyProject> implements AdvisoryBodyProjectService {
}
package com.dsk.cscec.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.cscec.mapper.SysAdvisoryBodyMapper;
import com.dsk.cscec.mapper.AdvisoryBodyMapper;
import com.dsk.cscec.domain.AdvisoryBody;
import com.dsk.cscec.service.AdvisoryBodyService;
import org.springframework.stereotype.Service;
......@@ -12,8 +12,8 @@ import org.springframework.stereotype.Service;
* @author sxk
* @since 2023-12-12 10:12:09
*/
@Service("sysAdvisoryBodyService")
public class AdvisoryBodyServiceImpl extends ServiceImpl<SysAdvisoryBodyMapper, AdvisoryBody> implements AdvisoryBodyService {
@Service("advisoryBodyService")
public class AdvisoryBodyServiceImpl extends ServiceImpl<AdvisoryBodyMapper, AdvisoryBody> implements AdvisoryBodyService {
}
package com.dsk.cscec.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
......@@ -9,13 +11,19 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.constant.QueryConstants;
import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.domain.bo.AdvisoryBodyBo;
import com.dsk.cscec.domain.bo.CustomerInfoBo;
import com.dsk.cscec.domain.vo.AdvisoryBodyVo;
import com.dsk.cscec.domain.vo.CustomerApproveVo;
import com.dsk.cscec.domain.vo.CustomerInfoVo;
import com.dsk.cscec.mapper.AdvisoryBodyMapper;
import com.dsk.cscec.mapper.DCustomerMapper;
import com.dsk.cscec.mapper.DSubcontractMapper;
import com.dsk.cscec.service.ICustomerInfoService;
import com.dsk.search.service.BusinessOpportunityRadarService;
import jodd.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
......@@ -37,6 +45,9 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto
@Autowired
private BusinessOpportunityRadarService opportunityRadarService;
@Autowired
private AdvisoryBodyMapper advisoryBodyMapper;
@Override
public TableDataInfo<CustomerInfoVo> queryPageList(CustomerInfoBo bo, PageQuery query) {
if("劳务分包".equals(bo.getCustomerClass())){
......@@ -69,11 +80,25 @@ public class CustomerInfoServiceImpl extends ServiceImpl<DCustomerMapper, DCusto
}
@Override
public DCustomer queryByName(String name) {
public CustomerApproveVo queryApproveByBo(CustomerInfoBo bo) {
if(ObjectUtil.isNull(bo.getCustomerKey()) && StringUtil.isBlank(bo.getCustomerName()) && StringUtil.isBlank(bo.getUnifySocialCode())){
Assert.isTrue(false,"参数不能为空");
}
LambdaQueryWrapper<DCustomer> lqw = Wrappers.lambdaQuery();
lqw.eq(DCustomer::getCustomerName,name);
lqw.eq(ObjectUtil.isNotNull(bo.getCustomerKey()),DCustomer::getCustomerKey,bo.getCustomerKey());
lqw.eq(StringUtil.isNotBlank(bo.getUnifySocialCode()),DCustomer::getUnifySocialCode,bo.getUnifySocialCode());
lqw.eq(StringUtil.isNotBlank(bo.getCustomerName()),DCustomer::getCustomerName,bo.getCustomerName());
lqw.orderByDesc(DCustomer::getApproveDate2);
lqw.last("limit 1");
return baseMapper.selectOne(lqw);
DCustomer dCustomer = baseMapper.selectOne(lqw);
CustomerApproveVo vo = BeanUtil.toBean(dCustomer, CustomerApproveVo.class);
return vo;
}
@Override
public TableDataInfo<AdvisoryBodyVo> queryAdvisoryList(AdvisoryBodyBo bo, PageQuery query) {
bo.setContractOrgId(QueryConstants.LEVEL1_COMPANY_ID);
Page<AdvisoryBodyVo> page = advisoryBodyMapper.queryListByBo(query.build(),bo);
return TableDataInfo.build(page);
}
}
......@@ -9,6 +9,7 @@ import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.DCustomer;
import com.dsk.cscec.domain.bo.DCustomerSearchBo;
import com.dsk.cscec.domain.vo.DCustomerListVo;
import com.dsk.cscec.mapper.DCustomerMapper;
import com.dsk.cscec.mapper.DSubcontractMapper;
import com.dsk.cscec.service.IDCustomerService;
......@@ -39,9 +40,9 @@ public class DCustomerServiceImpl extends ServiceImpl<DCustomerMapper, DCustomer
private BusinessOpportunityRadarService opportunityRadarService;
@Override
public TableDataInfo<DCustomer> allSearchList(DCustomerSearchBo bo, PageQuery query) {
public TableDataInfo<DCustomerListVo> allSearchList(DCustomerSearchBo bo, PageQuery query) {
dealWithCustomerClass(bo);
Page<DCustomer> page = baseMapper.allSearchList(query.build(), bo);
Page<DCustomerListVo> page = baseMapper.allSearchList(query.build(), bo);
if (CollectionUtils.isNotEmpty(page.getRecords())) {
page.getRecords().parallelStream().forEach(item->{
//企业合作数量
......@@ -63,6 +64,15 @@ public class DCustomerServiceImpl extends ServiceImpl<DCustomerMapper, DCustomer
return TableDataInfo.build(page);
}
@Override
public List<DCustomerListVo> exportList(DCustomerSearchBo bo) {
dealWithCustomerClass(bo);
PageQuery query = new PageQuery();
query.setPageNum(1);
query.setPageSize(1000);
return baseMapper.allSearchList(query.build(), bo).getRecords();
}
private void dealWithCustomerClass(DCustomerSearchBo bo) {
if (!ObjectUtils.isEmpty(bo.getCustomerClass())) {
List<String> list = new ArrayList<>();
......
......@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.common.core.domain.entity.SysDictData;
import com.dsk.cscec.domain.DimArea;
import com.dsk.cscec.domain.vo.RegionVo;
import com.dsk.cscec.domain.vo.RegionWithLevelVo;
import com.dsk.cscec.mapper.DimAreaMapper;
import com.dsk.cscec.service.IDimAreaService;
import com.dsk.system.service.ISysDictTypeService;
......@@ -77,8 +78,8 @@ public class DimAreaServiceImpl extends ServiceImpl<DimAreaMapper, DimArea> impl
}
@Override
public List<RegionVo> allAreaWithoutRegion() {
List<RegionVo> vos = new ArrayList<>();
public List<RegionWithLevelVo> allAreaWithoutRegion() {
List<RegionWithLevelVo> vos = new ArrayList<>();
//区域
List<SysDictData> sysDictData = sysDictTypeService.selectDictDataByType(AREA_TYPE);
if(CollectionUtils.isNotEmpty(sysDictData)){
......@@ -92,9 +93,10 @@ public class DimAreaServiceImpl extends ServiceImpl<DimAreaMapper, DimArea> impl
if(CollectionUtils.isNotEmpty(provinces)){
for (Object province : provinces) {
RegionVo provinceVo = new RegionVo();
RegionWithLevelVo provinceVo = new RegionWithLevelVo();
provinceVo.setValue(String.valueOf(province));
List<RegionVo> cityVos = new ArrayList<>();
provinceVo.setLevel("1");
List<RegionWithLevelVo> cityVos = new ArrayList<>();
//市
List<Object> citys = baseMapper.selectObjs(Wrappers.<DimArea>lambdaQuery()
.select(DimArea::getAreaName3)
......@@ -103,12 +105,14 @@ public class DimAreaServiceImpl extends ServiceImpl<DimAreaMapper, DimArea> impl
.groupBy(DimArea::getAreaName3));
if(CollectionUtils.isNotEmpty(citys)){
for (Object city : citys) {
RegionVo cityVo = new RegionVo();
RegionWithLevelVo cityVo = new RegionWithLevelVo();
cityVo.setValue(String.valueOf(city));
cityVo.setLevel("2");
cityVos.add(cityVo);
}
}
provinceVo.setChildren(cityVos);
provinceVo.setChildrenLength(provinceVo.getChildren().size());
vos.add(provinceVo);
}
}
......
package com.dsk.cscec.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
......@@ -14,8 +12,9 @@ import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.utils.StringUtils;
import com.dsk.cscec.constant.QueryConstants;
import com.dsk.cscec.domain.DProject;
import com.dsk.cscec.domain.AdvisoryBody;
import com.dsk.cscec.domain.AdvisoryBodyProject;
import com.dsk.cscec.domain.DProject;
import com.dsk.cscec.domain.bo.AdvisoryBodySearchBo;
import com.dsk.cscec.domain.bo.CooperateProjectDetailSearchBo;
import com.dsk.cscec.domain.bo.ProjectSearchBo;
......@@ -23,8 +22,9 @@ import com.dsk.cscec.domain.vo.AdvisoryBodySearchVo;
import com.dsk.cscec.domain.vo.CooperateProjectDetailSearchVo;
import com.dsk.cscec.domain.vo.ProjectDetailVo;
import com.dsk.cscec.domain.vo.ProjectSearchVo;
import com.dsk.cscec.mapper.AdvisoryBodyMapper;
import com.dsk.cscec.mapper.AdvisoryBodyProjectMapper;
import com.dsk.cscec.mapper.DProjectMapper;
import com.dsk.cscec.mapper.SysAdvisoryBodyMapper;
import com.dsk.cscec.service.IDProjectService;
import com.dsk.jsk.domain.EnterpriseInfoHeaderBody;
import com.dsk.system.utils.DskOpenApiUtil;
......@@ -36,7 +36,6 @@ import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* 咨询机构管理
......@@ -50,7 +49,9 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
@Resource
private DProjectMapper baseMapper;
@Resource
private SysAdvisoryBodyMapper advisoryBodyMapper;
private AdvisoryBodyMapper advisoryBodyMapper;
@Resource
private AdvisoryBodyProjectMapper advisoryBodyProjectMapper;
@Resource
private DskOpenApiUtil dskOpenApiUtil;
......@@ -65,12 +66,15 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
public TableDataInfo<ProjectSearchVo> queryProjectList(ProjectSearchBo projectSearchBo, PageQuery pageQuery) {
//根据咨询机构名称查询对应的项目IDs
String advisoryBodyName = projectSearchBo.getAdvisoryBodyName();
List<Long> projectIds = new ArrayList<>();
List<Long> projectIds = advisoryBodyMapper.selectProjectIdsByAdvisoryBodyName(advisoryBodyName);
if (StringUtils.isNotBlank(advisoryBodyName)) {
//根据咨询机构名称查询咨询机构
for (AdvisoryBody advisoryBody : advisoryBodyMapper.selectList(new LambdaQueryWrapper<AdvisoryBody>()
.like(AdvisoryBody::getAdvisoryBodyName, advisoryBodyName))) {
if (ObjectUtil.isNotNull(advisoryBody.getProjectKey())) {
projectIds.add(advisoryBody.getProjectKey());
//根据咨询机构CID查询项目主键
for (AdvisoryBodyProject advisoryBodyProject : advisoryBodyProjectMapper.selectList(new LambdaQueryWrapper<AdvisoryBodyProject>()
.eq(AdvisoryBodyProject::getAdvisoryBodyCid, advisoryBody.getAdvisoryBodyCid()))) {
projectIds.add(advisoryBodyProject.getProjectKey());
}
}
}
......@@ -122,14 +126,13 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
}
/**
* 根据项目ID查询咨询机构
* 根据项目主键查询咨询机构
*
* @param projectKey 项目主键
* @return 咨询机构
*/
private AdvisoryBody getAdvisoryBodyByProjectKey(Long projectKey) {
return advisoryBodyMapper.selectOne(new LambdaQueryWrapper<AdvisoryBody>()
.eq(AdvisoryBody::getProjectKey, projectKey));
return advisoryBodyMapper.queryAdvisoryBodyByProjectKey(projectKey);
}
/**
......@@ -162,7 +165,12 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
Map<String, Object> companyMap = dskOpenApiUtil.requestBody("/api/jsk/enterprise/infoHeader", BeanUtil.beanToMap(infoHeaderBody, false, false));
Map companyData = MapUtils.getMap(companyMap, "data", null);
//最近一次合作时间
advisoryBodySearchVo.setLastCooperateTime(advisoryBodyMapper.selectLastCooperateTime(advisoryBodySearchVo.getAdvisoryBodyId()));
List<AdvisoryBodyProject> advisoryBodyProjectList = advisoryBodyProjectMapper.selectList(new LambdaQueryWrapper<AdvisoryBodyProject>()
.select(AdvisoryBodyProject::getCreateTime)
.eq(AdvisoryBodyProject::getAdvisoryBodyCid, advisoryBodySearchVo.getAdvisoryBodyCid())
.orderByDesc(AdvisoryBodyProject::getCreateBy));
advisoryBodySearchVo.setLastCooperateTime(advisoryBodyProjectList.get(0).getCreateTime());
//经营范围
advisoryBodySearchVo.setBusinessStatus(MapUtils.getString(companyData, "businessStatus", ""));
advisoryBodySearchVo.setCorporatePerson(MapUtils.getString(companyData, "corporatePerson", ""));
String provinceName = MapUtils.getString(companyData, "provinceName", "");
......@@ -188,14 +196,14 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
*/
@Override
public TableDataInfo<CooperateProjectDetailSearchVo> queryCooperateProjectDetailList(CooperateProjectDetailSearchBo cooperateProjectDetailSearchBo, PageQuery pageQuery) {
//先根据咨询机构ID查出所有该咨询机构下的记录
//先根据咨询机构CID查出所有该咨询机构下的记录
List<AdvisoryBody> advisoryBodyList = advisoryBodyMapper.selectList(new LambdaQueryWrapper<AdvisoryBody>()
.eq(AdvisoryBody::getAdvisoryBodyId, cooperateProjectDetailSearchBo.getAdvisoryBodyId()));
.eq(AdvisoryBody::getAdvisoryBodyCid, cooperateProjectDetailSearchBo.getAdvisoryBodyCid()));
//提取所有项目主键
ArrayList<Long> projectKeyList = new ArrayList<>();
for (AdvisoryBody advisoryBody : advisoryBodyList) {
projectKeyList.add(advisoryBody.getProjectKey());
//projectKeyList.add(advisoryBody.getProjectKey());
}
//再根据记录终改的项目主键查询项目详情
......@@ -217,15 +225,15 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
.in(!cooperateProjectDetailSearchBo.getCityName().isEmpty(), "city_name", cooperateProjectDetailSearchBo.getCityName());
Page<CooperateProjectDetailSearchVo> page = baseMapper.selectPageCooperateProjectDetailList(pageQuery.build(), wrapper);
//填充结算天数
for (CooperateProjectDetailSearchVo cooperateProjectDetailSearchVo : page.getRecords()) {
for (AdvisoryBody advisoryBody : advisoryBodyList) {
if (Objects.equals(advisoryBody.getProjectKey(), cooperateProjectDetailSearchVo.getProjectKey())) {
long betweenDays = DateUtil.between(advisoryBody.getSettleStartTime(), advisoryBody.getSettleFinishTime(), DateUnit.DAY);
cooperateProjectDetailSearchVo.setSettlementDays(betweenDays);
}
}
}
////填充结算天数
//for (CooperateProjectDetailSearchVo cooperateProjectDetailSearchVo : page.getRecords()) {
// for (AdvisoryBody advisoryBody : advisoryBodyList) {
// if (Objects.equals(advisoryBody.getProjectKey(), cooperateProjectDetailSearchVo.getProjectKey())) {
// long betweenDays = DateUtil.between(advisoryBody.getSettleStartTime(), advisoryBody.getSettleFinishTime(), DateUnit.DAY);
// cooperateProjectDetailSearchVo.setSettlementDays(betweenDays);
// }
// }
//}
return TableDataInfo.build(page);
}
......@@ -242,10 +250,21 @@ public class IDProjectServiceImpl extends ServiceImpl<DProjectMapper, DProject>
.eq(DProject::getProjectKey, projectKey));
ProjectDetailVo projectDetailVo = BeanUtil.toBean(dProject, ProjectDetailVo.class);
//查询咨询机构信息
AdvisoryBody advisoryBody = advisoryBodyMapper.selectOne(new LambdaQueryWrapper<AdvisoryBody>().eq(AdvisoryBody::getProjectKey, projectKey));
AdvisoryBody advisoryBody = advisoryBodyMapper.queryAdvisoryBodyByProjectKey(projectKey);
//填充咨询机构名称
projectDetailVo.setAdvisoryBodyName(advisoryBody.getAdvisoryBodyName());
return projectDetailVo;
}
/**
* 根据咨询机构ID查询咨询机构详情
*
* @param advisoryBodyId 咨询机构ID
* @return 咨询机构详情
*/
@Override
public AdvisoryBody queryAdvisoryBodyDetail(Long advisoryBodyId) {
return null;
}
}
......@@ -8,6 +8,7 @@ import com.dsk.search.service.BusinessOpportunityRadarService;
import com.dsk.search.service.ExportService;
import com.dsk.system.domain.vo.AptitudeVo;
import com.dsk.system.domain.vo.SysUserImportVo;
import com.dsk.system.service.ISysUserFileRecordService;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
......@@ -30,6 +31,18 @@ public class ExportController {
@Resource
private ExportService exportService;
@Resource
private ISysUserFileRecordService sysUserFileRecordService;
/**
* 导出回调接口
* @param object
* @return
*/
@PostMapping(value = "/backUrl")
public AjaxResult exportBack(@RequestBody JSONObject object) {
return sysUserFileRecordService.exportBack(object);
}
/**
* 获取导入模板
......@@ -37,10 +50,8 @@ public class ExportController {
@PostMapping("/aptitude/importTemplate")
public void importTemplate(HttpServletResponse response) {
List<Object> list = new ArrayList<>();
AptitudeVo aptitudeVo = new AptitudeVo();
aptitudeVo.setCompanyName("重庆市轨道交通(集团)有限公司");
list.add(aptitudeVo);
ExcelUtil.exportTemplate(list, "企业数据", "excel/userImportTemplate.xlsx", response);
list.add(new AptitudeVo("重庆市轨道交通(集团)有限公司"));
ExcelUtil.exportTemplate(list, "企业数据", "excel/aptitudeImportTemplate.xlsx", response);
}
/*
......
......@@ -2,26 +2,93 @@
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.cscec.mapper.SysAdvisoryBodyMapper">
<select id="selectLastCooperateTime" resultType="java.util.Date">
select ab.create_time
from sys_advisory_body ab
where ab.advisory_body_id = ${advisoryBodyId};
<mapper namespace="com.dsk.cscec.mapper.AdvisoryBodyMapper">
<select id="selectPageAdvisoryBodyList" resultType="com.dsk.cscec.domain.vo.AdvisoryBodySearchVo">
select
<include refid="allColumnOfAdvisoryBody"></include>
from advisory_body ${ew.getCustomSqlSegment}
</select>
<select id="selectPageAdvisoryBodyList" resultType="com.dsk.cscec.domain.vo.AdvisoryBodySearchVo">
select advisory_body_id,
project_key,
advisory_body_name,
legal_person,
legal_person_phone,
reg_address,
project_leader,
project_leader_major,
project_leader_phone,
settle_start_time,
settle_finish_time,
is_final_judge_unit
from sys_advisory_body ${ew.getCustomSqlSegment}
<select id="queryListByBo" resultType="com.dsk.cscec.domain.vo.AdvisoryBodyVo">
select abp.advisory_body_id,abp.advisory_body_cid,abp.project_key,abp.project_leader,abp.project_leader_major,
abp.project_leader_phone,
ab.advisory_body_name,
dp.project_name,dp.project_code,dp.province_name,dp.city_name,dp.isinvestproject,dp.project_type1,
dp.project_type,dp.contract_orig_value,dp.owner_name,dp.contract_org_name,dp.load_time
from advisory_body_project abp
left join advisory_body ab on ab.advisory_body_id = abp.advisory_body_id
left join d_project dp on dp.project_key = abp.project_key
<where>
<if test="bo.advisoryBodyId != null and bo.advisoryBodyId != ''">
and ab.advisory_body_id = #{bo.advisoryBodyId}
</if>
<if test="bo.advisoryBodyCid != null and bo.advisoryBodyCid != ''">
and ab.advisory_body_cid = #{bo.advisoryBodyCid}
</if>
<if test="bo.advisoryBodyName != null and bo.advisoryBodyName != ''">
and ab.advisory_body_name = #{bo.advisoryBodyName}
</if>
<if test="bo.contractOrgId != null and bo.contractOrgId != ''">
and dp.contract_org_id = #{bo.contractOrgId}
</if>
<if test="bo.contractOrgName != null and bo.contractOrgName != ''">
and dp.contract_org_name = #{bo.contractOrgName}
</if>
<if test="bo.province != null and bo.province.size > 0 and (bo.city == null or bo.city.size==0)">
and dp.province_name in
<foreach collection="bo.province" item="province" separator="," open="(" close=")">
#{province}
</foreach>
</if>
<if test="(bo.province == null or bo.province.size==0) and bo.city != null and bo.city.size > 0 ">
and dp.city_name in
<foreach collection="bo.city" item="city" separator="," open="(" close=")">
#{city}
</foreach>
</if>
<if test="bo.province != null and bo.province.size > 0 and bo.city != null and bo.city.size > 0 ">
and (
dp.province_name in
<foreach collection="bo.province" item="province" separator="," open="(" close=")">
#{province}
</foreach>
or dp.city_name in
<foreach collection="bo.city" item="city" separator="," open="(" close=")">
#{city}
</foreach>
)
</if>
</where>
order by dp.load_time desc
</select>
<select id="selectProjectIdsByAdvisoryBodyName" resultType="java.lang.Long">
select
<include refid="allColumnOfAdvisoryBody"></include>
from advisory_body
where
<if test="advisoryBodyName != null">
and advisory_body_name like concat('%',#{advisoryBodyName},'%')
</if>
</select>
<select id="queryAdvisoryBodyByProjectKey" resultType="com.dsk.cscec.domain.AdvisoryBody">
select
<include refid="allColumnOfAdvisoryBody"></include>
from advisory_body ab
left join advisory_body_project abp
on abp.advisory_body_cid = ab.advisory_body_cid
where abp.project_key = ${projectKey};
</select>
<sql id="allColumnOfAdvisoryBody">
advisory_body_id,
advisory_body_cid,
advisory_body_name,
business_scope,
create_by,
create_time,
update_by,
update_time
</sql>
</mapper>
\ No newline at end of file
<?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.AdvisoryBodyProjectMapper">
</mapper>
\ No newline at end of file
......@@ -4,7 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.cscec.mapper.DCustomerMapper">
<select id="allSearchList" resultType="com.dsk.cscec.domain.DCustomer">
<select id="allSearchList" resultType="com.dsk.cscec.domain.vo.DCustomerListVo">
select
customer_key, customer_id, customer_code, customer_name, recommend_org, register_region, register_province, register_city, customer_class, primary_business,
paytax_type, tax_rate, customer_state, leader_name, labor_captain_phone, labor_captain_idcard, service_team_personnum, service_team_speciality,
......@@ -61,7 +61,7 @@
</if>
<if test="bo.approveDateBegion != null and bo.approveDateBegion != '' ">and approve_date2 &gt;= #{bo.approveDateBegion}</if>
<if test="bo.approveDateEnd != null and bo.approveDateEnd != '' ">and approve_date2 &lt;= #{bo.approveDateBegion} </if>
<if test="bo.isTeam != null"> and leader_name is <if test="bo.isTeam == 0">not</if> null </if>
<if test="bo.isTeam != null"> and leader_name is <if test="bo.isTeam == 1">not</if> null </if>
order by approve_date2 desc
</select>
......
......@@ -5,10 +5,10 @@ VUE_APP_TITLE = 数字化经营履约全生命链路管理系统
ENV = 'production'
# 数字化经营履约全生命链路管理系统/生产环境
VUE_APP_BASE_API = 'https://szhapi.jiansheku.com'
VUE_APP_BASE_API = 'http://111.204.34.146:9099/prod-api'
# 子系统地址
VUE_APP_SUB_SYSTEM_ADDRESS = "https://plug.jiansheku.com"
#VUE_APP_SUB_SYSTEM_ADDRESS = "https://plug.jiansheku.com"
# Bi大屏系统地址
VUE_APP_BI_SYSTEM_ADDRESS = "https://192.168.60.104:8001"
#VUE_APP_BI_SYSTEM_ADDRESS = "https://192.168.60.104:8001"
......@@ -7,4 +7,4 @@ NODE_ENV = production
ENV = 'staging'
# 数字化经营履约全生命链路管理系统/测试环境
VUE_APP_BASE_API = '/stage-api'
VUE_APP_BASE_API = '/prod-api'
import request from '@/utils/request'
//监控动态
export function dynamicPage(data) {
return request({
url: '/monitor/company/dynamicPage',
method: 'post',
data: data
})
}
//监控动态详情
export function dynamicDetail(data) {
return request({
url: '/monitor/company/dynamicDetail',
method: 'post',
data: data
})
}
// 企业监控列表
export function companyPage(data) {
return request({
url: '/monitor/system/companyPage',
method: 'post',
data: data
})
}
// 模糊查企业联想
export function companyList(data) {
return request({
url: '/enterprise/index',
method: 'post',
data: data
})
}
// 添加监控企业
export function companyAdd(data) {
return request({
url: '/monitor/system/add',
method: 'post',
data: data
})
}
// 取消监控企业
export function companyCancel(data) {
return request({
url: '/monitor/system/cancel',
method: 'post',
data: data
})
}
// 企业监控详情
export function companyDetail(data) {
return request({
url: '/monitor/system/detail',
method: 'post',
data: data
})
}
// 监控报告
export function reportPage(data) {
return request({
url: '/monitor/reportPage',
method: 'post',
data: data
})
}
// 监控维度设置-类型
export function rulesSelect() {
return request({
url: '/monitor/push/rulesSelect',
method: 'get',
})
}
// 监控维度设置-新增修改
export function insertOrUpdate(data) {
return request({
url: '/monitor/push/rules/insertOrUpdate',
method: 'post',
data: data
})
}
// 监控维度设置
export function rulesDetail(data) {
return request({
url: '/monitor/push/rulesDetail',
method: 'post',
data: data
})
}
import request from '@/utils/request';
//获取地区树
export function areaAll() {
return request({
url: '/area/all',
method: 'get',
});
}
//供应商总台账
export function customerAll(param) {
return request({
url: '/customer/all/searchList',
data:param,
method: 'POSt',
});
}
//专业类别选项列表
export function bizDictData() {
return request({
url: '/bizDictData/tree?type=0',
method: 'get',
});
}
//供应商管理分类列表
export function custmerInfolist(param) {
return request({
url: '/customerInfo/list',
method: 'POST',
data: param
});
}
//供应商准入信息
export function custmerInfo(param) {
return request({
url: '/customer/info/'+param,
method: 'get',
});
}
......@@ -16,6 +16,21 @@ export function getConfig(configId) {
method: 'get'
});
}
// 根据参数键名查询参数值
export function configKey(configId) {
return request({
url: '/system/config/key/' + configId,
method: 'get'
});
}
// 根据键修改值
export function configUpdate(data) {
return request({
url: '/system/config/updateValue',
method: 'PUT',
data: data
});
}
// 根据参数键名查询参数值
export function getConfigKey(configKey) {
......
import request from '@/utils/request';
import { parseStrEmpty } from "@/utils/ruoyi";
// 推送分页列表
export function pageList(query) {
return request({
url: '/sysPush/pageList',
method: 'get',
params: query
});
}
// 添加推送人
export function sysPush(data) {
return request({
url: '/sysPush',
method: 'post',
data: data
});
}
// 修改推送状态
export function updateStatus(data) {
return request({
url: '/sysPush/updateStatus',
method: 'put',
data: data
});
}
// 删除推送人
export function sysPushDel(id) {
return request({
url: '/sysPush/' + id,
method: 'delete'
});
}
......@@ -92,8 +92,29 @@ let checkTag = function(str, oldTag, newTag) { //str字符串, oldTag当前标
return newHtml
}
let changeTime = function(item){
let value = Number(item)
let now = new Date().getTime()
if( now-value<1000*60*59 ) {
if( (now-value)/(1000*60) ){
return Math.ceil((now-value)/(1000*60))+'分钟前'
}else{
return '1分钟前'
}
}else if(now-value<1000*60*60*23) {
return Math.ceil((now-value)/(1000*60*60))+'小时前'
}else {
let YMD = new Date(value)
let Y = YMD.getFullYear() + '-';//年
let M =(YMD.getMonth() + 1 < 10 ? '0' + (YMD.getMonth() + 1) : YMD.getMonth() + 1) + '-';//月
let D =(YMD.getDate() < 10 ? '0' + YMD.getDate() : YMD.getDate());//日
return Y+M+D
}
}
export {
encodeStr,
changeTime,
changePath,
saveFixed,
removeTag,
......
......@@ -148,6 +148,9 @@
border-right: 1px solid #E6E9F0;
border-bottom: 1px solid #E6E9F0;
background: #fff;
&.bg{
background: #F9FCFF;
}
.label {
width: 10%;
height: auto;
......@@ -177,6 +180,24 @@
}
.tab{
border-right: 1px solid #E6E9F0;
}
.tab:nth-child(1){
width: 20%;
}
.tab:nth-child(2){
width: 15%;
}
.tab:nth-child(3){
width: 10%;
}
.tab:nth-child(4){
width: 35%;
}
.tab:nth-child(5){
width: 20%;
}
}
}
......
......@@ -103,6 +103,21 @@ export const constantRoutes = [
// }
// ]
// },
{
path: '/monitoring/MonitoringReportDetails',
component: Layout,
hidden: true,
redirect: 'noredirect',
children: [
{
path: '/monitoring/MonitoringReportDetails/:id',
component: () => import('@/views/monitoring/MonitoringReportDetails'),
name: 'MonitoringDynamics',
meta: { title: '监控报告详情', noCache: false },
}
]
},
{
path: '',
component: Layout,
......
......@@ -629,23 +629,211 @@ export function queryConditionFiltering(params) {
* @param {Array<object>} selectList
* @returns
*/
export function getTreeSelectAreaList(selectList) {
try {
if (Object.prototype.toString.call(selectList) != "[object Array]") throw new Error("传入查询条件不是一个数组");
if (!selectList?.length) return [];
const _temp = selectList;
const selectMap = new Map();
const len = _temp.length;
export function getTreeSelectAreaList(nodeList = [], tree, idkey = "id") {
for (let index = 0; index < len; index++) {
const treeItem = _temp[index];
console.log(treeItem);
// 没有父级 作为最顶级元素
if (!treeItem.parent) selectMap.set(treeItem.value, {});
try {
if (Object.prototype.toString.call(nodeList) != "[object Array]") throw new Error("传入参数不是一个节点数组");
const _result = [];
// 克隆源数据
const _tempTree = JSON.parse(JSON.stringify(tree));
// 根据所选节点生成tree
const newTree = generateDirectSubtreeAndRemove(nodeList, _tempTree, idkey);
if (newTree) {
// 循环找到每个节点的父节点 的选中状态
return findParentStatus(nodeList, newTree, idkey);
}
} catch (error) {
console.log(error);
}
}
/**
*
*/
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]) : [];
}
}
});
return Array.from(new Set(_temp.flat()));
}
/**
* 根据节点 id 获取父节点
* @param {*} tree
* @param {*} targetId
* @param {*} parentNode
* @returns
*/
export function findParentNode(tree, targetId, idKey = "id", parentNode = null) {
if (tree[idKey] === targetId) {
// 找到目标节点,返回其父节点
return parentNode;
}
if (tree?.children?.length) {
for (const child of tree.children) {
const result = findParentNode(child, targetId, idKey, tree);
if (result) {
// 如果找到目标节点,返回其父节点
return result;
}
}
}
// 如果未找到目标节点,返回 null
return null;
}
/**
* 根据节点信息 找到当前节点到祖先辈组成的树形结构
* @param {*} tree
* @param {*} targetId
* @returns
*/
export function findNodeAndAncestors(tree, targetId, idKey = "id", directAncestorsOnly = true) {
if (tree[idKey] === targetId) {
// 找到目标节点,directAncestorsOnly 只找直系节点的情况下 如果是根节点(没有parent父级),返回节点本身不带子节点,否则返回节点的树形结构
return directAncestorsOnly && !tree.parent ? { ...tree, children: null } : tree;
}
if (tree?.children?.length) {
for (const child of tree.children) {
const result = findNodeAndAncestors(child, targetId, idKey, directAncestorsOnly);
if (result) {
// 如果找到目标节点,将该节点加入祖先辈的树形结构中
if (directAncestorsOnly) {
return {
...tree,
children: [result]
};
} else {
return {
...tree,
children: tree?.children?.map(c => (c[idKey] === result[idKey] ? result : c))
};
}
}
}
}
// 如果未找到目标节点,返回null
return null;
}
/**
* 根据节点唯一标识查找节点信息
* @param {*} tree
* @param {*} targetId
* @param {*} idKey
*/
export function findNodeFromTree(tree, targetId, ancestors = [], idKey = "id") {
if (tree[idKey] == targetId) {
return { ...tree, ancestors };
}
if (tree?.children?.length) {
for (const child of tree.children) {
// 递归到孙子集查找
const result = findNodeFromTree(child, targetId, [...ancestors, tree], idKey);
if (result) {
// 如果找到目标节点,返回目标节点
return result;
}
}
}
return null;
}
/**
* 删除某个属性节点
* @param node
*/
export function removeAncestors(node, removeKey = "ancestors") {
delete node[removeKey];
for (const child of node.children) {
removeAncestors(child, removeKey);
}
}
/**
* 根据id 数组 生成直系关系树形结构 并排除不需要的属性
* @param tree
* @param targetIds []
* @returns
*/
export function generateDirectSubtreeAndRemove(targetIds, tree, idKey = "id") {
const result = { ...tree, children: [] };
for (const targetId of targetIds) {
const targetNode = findNodeFromTree(tree, targetId, [], idKey);
if (targetNode) {
// 当前节点
let currentNode = result;
for (const ancestor of targetNode.ancestors) {
const existingNode = currentNode.children.find((child) => child[idKey] === ancestor[idKey]);
if (existingNode) {
currentNode = existingNode;
} else {
const newNode = { ...ancestor, children: [] };
currentNode.children.push(newNode);
currentNode = newNode;
}
}
// 往目标节点追加值
currentNode.children.push({ ...targetNode, children: [] });
}
}
// 删除多余属性
removeAncestors(result);
return result ? JSON.parse(JSON.stringify({ ...result, children: result.children[0]?.children || [] })) : null;
}
// 甲方详情左侧菜单映射
......
......@@ -115,13 +115,13 @@ service.interceptors.response.use(res => {
});
}
return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
} else if (code === 500 && apiList.includes(res.config.url)) {
} else if (code === 500) {
Message({ message: msg, type: 'error' })
return Promise.reject(new Error(msg))
} else if (code === 601 && apiList.includes(res.config.url)) {
} else if (code === 601) {
Message({ message: msg, type: 'warning' })
return Promise.reject('error')
} else if (code !== 200 && apiList.includes(res.config.url)) {
} else if (code !== 200) {
Notification.error({ title: msg })
return Promise.reject('error')
} else {
......
......@@ -258,9 +258,12 @@ export default {
}
},
handleChange(params) {
const tree = this.$refs?.areaTree?.getCheckedNodes();
console.log(tree, "tree");
console.log(getTreeSelectAreaList(tree), "filter");
const selectNode = this.$refs?.areaTree?.getCheckedNodes();
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"));
}
}
},
}
......
......@@ -9,7 +9,7 @@
<el-breadcrumb-item>{{companyInfo.simpleName || companyInfo.companyName || '&#45;&#45;'}}</el-breadcrumb-item>
</el-breadcrumb>
</div>-->
<div class="flex-box part-header" style="min-width:1248px;">
<div class="flex-box part-header">
<img class="header-logo" :src="companyInfo && companyInfo.logoUrl || require('@/assets/images/detail/company_logo.png')">
{{companyInfo && companyInfo.companyName || '--'}}
</div>
......
<template>
<div class="app-container part-container details-of-party">
<Header :company-id="companyId" :companyInfo="companyInfo" :cooDetail="cooDetail" v-if="companyId" @close-detail="closeDetail" />
<div class="flex-box part-main">
<div class="part-main">
<div class="part-left">
<side-bar :statisticObj="statisticObj" ref="sidebar" @currentPath="showPartPage" :pathName="currentPath.pathName"
:partBoxHeight="partBoxHeight" :customerId="customerId" :isCompany="isCompany" :isCustomer="isCustomer" />
......@@ -383,18 +383,12 @@ export default {
margin-top: 12px;
width: 100%;
height: calc(100vh - 155px);
overflow-y: auto;
/* overflow-y: auto; */
align-items: initial;
}
.part-left {
margin-right: 16px;
padding-bottom: 16px;
position: fixed;
background: #ffffff;
width: 144px;
}
.part-right {
min-width: 1088px;
/* min-width: 1088px; */
width: 100%;
background: #ffffff;
border-radius: 4px;
......@@ -411,12 +405,10 @@ export default {
.details-of-party {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
margin: 0px;
padding: 16px 24px;
box-sizing: border-box;
overflow: hidden;
::v-deep .header-container {
.part-header {
......@@ -425,18 +417,43 @@ export default {
}
::v-deep .part-main {
height: calc(100% - 56px - 12px);
height: calc(100% - 68px);
.part-left {
margin-right: 16px;
position: fixed;
background: #ffffff;
width: 144px;
height: calc(100% - 156px);
#detailPart {
height: 100%;
min-height: unset;
padding-bottom: 0px;
}
}
.part-right {
margin-left: 160px;
height: 100%;
width: calc(100% - 160px);
overflow: auto;
}
}
overflow: hidden;
.part-common-container-style {
width: 100%;
height: 100%;
.part-common-container-style {
width: 100%;
height: 100%;
overflow: auto;
.app-container {
position: relative;
width: auto;
height: auto;
overflow: initial;
box-sizing: border-box;
min-width: 1200px;
}
}
}
}
}
</style>
<template>
<div class="login">
<div class="content">
<div class="left">
<img class="logo" src="../assets/images/logo1.png" />
<img class="img" src="../assets/images/login/img.png" />
<div class="left">
<div class="bgimg">
<div class="p1">欢迎使用</div>
<div class="p2">大数据经营管理支撑服务平台</div>
</div>
<!--快捷登录-->
<el-form v-if="!islog && !islang && isDXlogin" ref="dxform" :model="dxform" :rules="dxRules" class="login-form">
<div class="logintitle">
<div @click="isDXlogin = false">密码登录</div>
<div class="on" @click="isDXlogin = true">快捷登录</div>
</div>
<el-form-item prop="phonenumber">
<el-input
v-model="dxform.phonenumber"
type="text"
auto-complete="off"
placeholder="请输入手机号码"
>
<img class="img" slot="prefix" src="../assets/images/phone.png"/>
</el-input>
</el-form-item>
<el-form-item prop="captchaCode" v-if="captchaEnabled">
<el-input
v-model="dxform.captchaCode"
auto-complete="off"
placeholder="请输入图形验证码"
style="width: 196px;float: left;"
>
<img class="img" slot="prefix" src="../assets/images/txyzm.png"/>
</el-input>
<div class="login-code">
<img :src="codeUrl" @click="getCode" class="login-code-img"/>
</div>
</el-form-item>
<el-form-item prop="smsCode">
<el-input
v-model="dxform.smsCode"
auto-complete="off"
placeholder="请输入验证码"
style="width: 196px;float: left;"
@keyup.enter.native="dxLogin"
>
<img class="img" slot="prefix" src="../assets/images/validCode.png"/>
</el-input>
<div class="login-code">
<div class="hqyzm" @click="getsms" :class="{'disableds':smstitle!='获取验证码'&&smstitle!='重新获取'}">{{smstitle}}</div>
</div>
</el-form-item>
<el-form-item style="width:100%;margin-top: 42px">
<el-button
size="medium"
type="primary"
style="width:100%;height: 48px;border-radius: 4px;font-size: 16px;"
@click.native.prevent="dxLogin"
>
<span v-if="!loading">确认</span>
<span v-else>登 录 中...</span>
</el-button>
</el-form-item>
</el-form>
<!--密码登录-->
<el-form v-if="!islog && !islang && !isDXlogin" ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
<div class="logintitle">
<div class="on" @click="isDXlogin = false">密码登录</div>
<div @click="isDXlogin = true">快捷登录</div>
</div>
</div>
<!--快捷登录-->
<!--<el-form v-if="!islog && !islang && isDXlogin" ref="dxform" :model="dxform" :rules="dxRules" class="login-form">-->
<!--<div class="logintitle">-->
<!--<div @click="isDXlogin = false">密码登录</div>-->
<!--<div class="on" @click="isDXlogin = true">快捷登录</div>-->
<!--</div>-->
<!--<el-form-item prop="phonenumber">-->
<!--<el-input-->
<!--v-model="dxform.phonenumber"-->
<!--type="text"-->
<!--auto-complete="off"-->
<!--placeholder="请输入手机号码"-->
<!--&gt;-->
<!--<img class="img" slot="prefix" src="../assets/images/phone.png"/>-->
<!--</el-input>-->
<!--</el-form-item>-->
<!--<el-form-item prop="captchaCode" v-if="captchaEnabled">-->
<!--<el-input-->
<!--v-model="dxform.captchaCode"-->
<!--auto-complete="off"-->
<!--placeholder="请输入图形验证码"-->
<!--style="width: 290px;float: left;"-->
<!--&gt;-->
<!--<img class="img" slot="prefix" src="../assets/images/txyzm.png"/>-->
<!--</el-input>-->
<!--<div class="login-code">-->
<!--<img :src="codeUrl" @click="getCode" class="login-code-img"/>-->
<!--</div>-->
<!--</el-form-item>-->
<!--<el-form-item prop="smsCode">-->
<!--<el-input-->
<!--v-model="dxform.smsCode"-->
<!--auto-complete="off"-->
<!--placeholder="请输入验证码"-->
<!--style="width: 290px;float: left;"-->
<!--@keyup.enter.native="dxLogin"-->
<!--&gt;-->
<!--<img class="img" slot="prefix" src="../assets/images/validCode.png"/>-->
<!--</el-input>-->
<!--<div class="login-code">-->
<!--<div class="hqyzm" @click="getsms" :class="{'disableds':smstitle!='获取验证码'&&smstitle!='重新获取'}">{{smstitle}}-->
<!--</div>-->
<!--</div>-->
<!--</el-form-item>-->
<!--<el-form-item style="width:100%;margin-top: 42px">-->
<!--<el-button-->
<!--size="medium"-->
<!--type="primary"-->
<!--style="width:100%;height: 48px;border-radius: 4px;font-size: 16px;"-->
<!--@click.native.prevent="dxLogin"-->
<!--&gt;-->
<!--<span v-if="!loading">确认</span>-->
<!--<span v-else>登 录 中...</span>-->
<!--</el-button>-->
<!--</el-form-item>-->
<!--</el-form>-->
<!--密码登录-->
<div class="rightlogtin">
<el-form v-if="!islog && !islang && !isDXlogin" ref="loginForm" :model="loginForm" :rules="loginRules"
class="login-form ">
<!--<div class="logintitle">-->
<!--<div class="on" @click="isDXlogin = false">密码登录</div>-->
<!--<div @click="isDXlogin = true">快捷登录</div>-->
<!--</div>-->
<div class="loginname"><img src="../assets/images/login/ztlogo.png">中建一局集团第二建筑有限公司</div>
<el-form-item prop="username">
<el-input
v-model="loginForm.username"
......@@ -92,7 +97,7 @@
v-model="loginForm.code"
auto-complete="off"
placeholder="请输入图形验证码"
style="width: 196px;float: left;"
style="width: 290px;float: left;"
@keyup.enter.native="handleLogin"
>
<img class="img" slot="prefix" src="../assets/images/txyzm.png"/>
......@@ -113,6 +118,7 @@
<span v-else>登 录 中...</span>
</el-button>
</el-form-item>
<div class="changepwd" @click="$message.warning('请联系企业管理员修改密码')">忘记密码</div>
</el-form>
<!--安全验证-->
<el-form v-if="!islog && islang" ref="dxform" :model="dxform" :rules="dxRules" class="login-form">
......@@ -133,7 +139,7 @@
@focus="getCode"
auto-complete="off"
placeholder="请输入验证码"
style="width: 196px;float: left;"
style="width: 290px;float: left;"
>
<img class="img" slot="prefix" src="../assets/images/txyzm.png"/>
</el-input>
......@@ -146,13 +152,14 @@
v-model="dxform.smsCode"
auto-complete="off"
placeholder="请输入验证码"
style="width: 196px;float: left;"
style="width: 290px;float: left;"
@keyup.enter.native="dxLogin"
>
<img class="img" slot="prefix" src="../assets/images/validCode.png"/>
</el-input>
<div class="login-code">
<div class="hqyzm" @click="getsms" :class="{'disableds':smstitle!='获取验证码'&&smstitle!='重新获取'}">{{smstitle}}</div>
<div class="hqyzm" @click="getsms" :class="{'disableds':smstitle!='获取验证码'&&smstitle!='重新获取'}">{{smstitle}}
</div>
</div>
</el-form-item>
<el-form-item style="width:100%;margin-top: 42px">
......@@ -170,7 +177,9 @@
<div v-if="islog" class="login-form choose-form">
<h3 class="title i"><img src="../assets/images/login/title_choose.png"/>请选择你想要登录的企业</h3>
<div class="enterpriselist">
<div class="entername" v-for="(item,index) of tenanlist"> <el-radio v-model="tenantId" :label="item.tenantId">{{item.companyName}}</el-radio></div>
<div class="entername" v-for="(item,index) of tenanlist">
<el-radio v-model="tenantId" :label="item.tenantId">{{item.companyName}}</el-radio>
</div>
</div>
<el-button class="goin" type="primary" :disabled="tenantId == -1" @click="tochose">立即进入</el-button>
</div>
......@@ -180,10 +189,18 @@
<script>
import store from '@/store'
import { changeTenants, defaultTenantid, getCodeImg, getTenants,userTenantList,logincaptchaSms,smsLogin} from '@/api/login'
import {
changeTenants,
defaultTenantid,
getCodeImg,
getTenants,
logincaptchaSms,
smsLogin,
userTenantList
} from '@/api/login'
import { decrypt, encrypt } from '@/utils/jsencrypt'
import {Base64} from 'js-base64'
import { getTenantid, setTenantid,setToken } from '@/utils/auth'
import { Base64 } from 'js-base64'
import { getTenantid, setTenantid, setToken } from '@/utils/auth'
export default {
name: "Login",
......@@ -392,30 +409,40 @@
.login {
align-items: center;
height: 100%;
background-image: url("../assets/images/login_bg.png");
background-color: #fff;
background-size: cover;
overflow-y: hidden;
display: flex;
justify-content: center;
.content{
width: 1320px;
margin: 0 auto;
/*padding-top: 180px;*/
}
width: 100%;
min-width: 1200px;
.left{
float: left;
width: 730px;
width: 60%;
/*margin-right: 170px;*/
height: 100%;
}
.logo{
width: 253px;
height: 55px;
margin-bottom: 53px;
margin-left: 127px;
}
.img{
width: 662px;
height: 566px;
.bgimg{
width: 100%;
height: 100%;
background: url("../assets/images/login/img.png") no-repeat center;
background-size: cover;
padding-top: 10%;
padding-left: 14%;
.p1{
height: 36px;
font-size: 32px;
font-weight: 400;
color: #0081FF;
line-height: 36px;
margin-bottom: 24px;
}
.p2{
height: 48px;
font-size: 40px;
font-weight: 700;
color: #FFFFFF;
line-height: 48px;
letter-spacing: 3px;
}
}
}
.title {
......@@ -446,21 +473,45 @@
}
}
}
.rightlogtin{
width: 40%;
float: right;
height: 100%;
position: relative;
min-width: 420px;
.loginname{
line-height: 30px;
font-size: 22px;
font-weight: 900;
color: #232323;
height: 30px;
margin-bottom: 50px;
padding-left: 10px;
img{
width: 22px;
margin-right: 8px;
margin-top: 4px;
float: left;
}
}
}
.login-form {
border-radius: 10px;
background: #ffffff;
width: 420px;
float: right;
margin-top: 70px;
padding-bottom: 72px;
margin: auto;
position: absolute;
margin-top: -200px;
top: 50%;
left: 50%;
margin-left: -210px;
/*padding: 25px 25px 5px 25px;*/
.el-form-item{
padding: 0 48px;
/*padding: 0 48px;*/
margin-bottom:24px;
}
.el-input {
width: 324px;
width: 420px;
height: 48px;
background: #F2F4F9;
border-radius: 4px;
......@@ -513,13 +564,23 @@
}
}
}
.changepwd{
height: 12px;
font-size: 14px;
font-weight: 400;
color: rgba(35,35,35,0.4);
line-height: 12px;
margin-top: -4px;
text-align: center;
cursor: pointer;
}
.login-tip {
font-size: 13px;
text-align: center;
color: #bfbfbf;
}
.login-code {
width: 33%;
width: 116px;
height: 38px;
float: left;
margin-left: 14px;
......
......@@ -5,9 +5,21 @@
<div class="search">
<div class="label">监控维度</div>
<div class="checkbox">
<el-radio-group v-model="radio">
<el-radio-group v-model="radio" @change="radioBtn">
<el-radio v-for="item in radioList" :label="item.type">{{item.label}}</el-radio>
</el-radio-group>
<el-date-picker
v-if="radio==6"
v-model="date"
type="daterange"
value-format="yyyy-MM-dd"
unlink-panels
size="small"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="changePicker">
</el-date-picker>
</div>
</div>
</div>
......@@ -15,45 +27,41 @@
<div class="table-search">
<div class="total">共 162 条</div>
<div class="right">
<span class="add">添加企业</span>
<span class="add1">批量监控</span>
<span class="add" @click="addEnterprise">添加企业</span>
<span class="add1" @click="handleBatch">批量监控</span>
</div>
</div>
<div class="table-item">
<el-table
class="fixed-table"
element-loading-text="Loading"
:data="tableData"
border
highlight-current-row
>
<el-table-column label="序号" width="60" align="left" fixed>
<!--<template slot-scope="scope">{{ pageIndex * pageSize - pageSize + scope.$index + 1 }}</template>-->
<template slot-scope="scope">1</template>
</el-table-column>
<el-table-column label="监控对象" align="left">
<template slot-scope="scope">
中国中铁股份有限公司
</template>
<template slot-scope="scope">{{ queryParams.pageNum * queryParams.pageSize - queryParams.pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column label="监控对象" align="left" prop="companyName"></el-table-column>
<el-table-column label="风险动态" align="left">
<template slot-scope="scope">
中国中铁股份有限公司
</template>
</el-table-column>
<el-table-column label="监控时间" width="200" align="left">
<template slot-scope="scope">
2022-09-02
<span class="color1 span">高风险 {{scope.row.highRiskCount}}</span>
<span class="color2 span">中风险 {{scope.row.middleRiskCount}}</span>
<span class="color3 span">低风险 {{scope.row.lowRiskCount}}</span>
<span class="color4 span">提示 {{scope.row.promptCount}}</span>
<span class="color5 span">正向 {{scope.row.positiveCount}}</span>
</template>
</el-table-column>
<el-table-column label="监控时间" width="240" align="left" prop="createTime"></el-table-column>
<el-table-column
label="操作"
align="center"
align="left"
width="180"
class-name="small-padding fixed-width"
fixed="right"
>
<template slot-scope="scope">
<span>取消监控</span>
<span style="color:#0081FF;" @click="handleCancel(scope.row.companyId)">取消监控</span>
</template>
</el-table-column>
</el-table>
......@@ -63,45 +71,44 @@
<el-dialog :visible.sync="jkVisible" custom-class='dialog-claim' title="提示" width="480px" >
<div class="dialog-content"><i class="el-icon-warning"></i>取消后将错过企业最新动态</div>
<div slot="footer" class="dialog-footer">
<el-button>我再想想</el-button>
<el-button type="primary">确定取消</el-button>
<el-button @click="jkVisible===false">我再想想</el-button>
<el-button type="primary" @click="handleConfirm">确定取消</el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="qyVisible" custom-class='dialog-claim' title="添加监控企业" width="480px" >
<div class="add-content">
<div class="enterprise">
<div class="label">企业名称</div>
<el-input class="name" placeholder="请输入企业名称">
<el-button slot="append">搜索</el-button>
<el-input class="name" placeholder="请输入企业名称" v-model="companyName">
<el-button slot="append" @click="handleKeyword()">搜索</el-button>
</el-input>
</div>
<div class="companyList">
<div class="companyList" v-if="dataList.length > 0">
<div class="list">
<div class="item">
<div class="item" v-for="item in dataList">
<div class="item-left">
<!--<img v-if="item.logoUrl" :src="item.logoUrl" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />-->
<!--<img v-else src="@/assets/images/enterprise.png" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />-->
<img src="@/assets/images/enterprise.png"/>
<img v-if="item.logoUrl" :src="item.logoUrl" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />
<img v-else src="@/assets/images/enterprise.png" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />
</div>
<div class="item-right">
<p class="right-title">中国铁建集团</p>
<p class="right-title" v-html="item.name"></p>
<p class="right-tips">推荐监控</p>
</div>
<el-checkbox></el-checkbox>
<el-checkbox @change="changeCheckbox(item)"></el-checkbox>
</div>
</div>
<p class="tips">前往企业查询寻找企业线索<i class="el-icon-arrow-right"></i></p>
<div class="btn">
<div>
<el-button>取消</el-button>
<el-button type="primary">确定</el-button>
<el-button @click="qyVisible===false">取消</el-button>
<el-button type="primary" @click="handleAdd">确定</el-button>
</div>
</div>
</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button>取消</el-button>
<el-button type="primary">确定</el-button>
<el-button type="primary" @click="handleAdd">确定</el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="pldrVisible" custom-class='dialog-claim' title="批量导入监控企业" width="480px" >
......@@ -109,7 +116,13 @@
<el-upload
class="upload-demo"
drag
action="https://jsonplaceholder.typicode.com/posts/"
:action="action"
:file-list="fileList"
accept=".excel,.xlsx"
:headers="headers"
:on-change="handleFileListChange"
:auto-upload="false"
ref="upload"
multiple>
<i class="el-icon-plus"></i>
<div class="el-upload__text">
......@@ -121,18 +134,21 @@
<div slot="footer" class="dialog-footer">
<el-button class="download" icon="el-icon-download">下载模版</el-button>
<el-button>取消</el-button>
<el-button type="primary">确定</el-button>
<el-button type="primary" @click="submitUpload">确定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { companyPage,companyList,companyAdd,companyCancel } from '@/api/monitoring/monitoring'
import { getToken } from '@/utils/auth'
export default {
name: 'EnterpriseMonitoring',
data() {
return {
radio:1,
radio:null,
date:[],
radioList:[
{
type:1,
......@@ -159,25 +175,161 @@
label:'自定义日期'
},
],
tableData:[
{
name:'中国中铁股份有限公司',
time:'2022-09-02',
}
],
tableData:[],
tableDataTotal:0,
companyName:'',
jkVisible:false,
qyVisible:false,
pldrVisible:false,
queryParams:{
pageNum:1,
pageSize:10,
condition:{}
},
dataList:[],
cid:[],
//上传
action:process.env.VUE_APP_BASE_API + '/monitor/system/import',
fileList: [],
headers: {
Authorization: "Bearer " + getToken(),
},
companyId:''
}
},
created() {
this.querySubmit()
},
methods: {
async querySubmit() {
console.log(this.queryParams)
companyPage(this.queryParams).then(res => {
console.log(res)
this.tableData=res.rows
this.tableDataTotal=res.total
})
},
handleKeyword(){
let data={
keyword:this.companyName,
page:{
"page": 1,
"limit": 50,
}
}
companyList(data).then(res => {
console.log(res.data.list)
this.dataList=res.data.list
})
},
changeCheckbox(item){
console.log(item)
if (this.cid.indexOf(item.id) == -1) {
this.cid.push(item.id)
} else {
this.cid.splice(this.cid.indexOf(item.id), 1)
}
},
handleAdd(){
let data={
cid:this.cid
}
companyAdd(data).then(res => {
this.qyVisible=false;
this.$modal.success("新增成功");
this.querySubmit()
})
},
radioBtn(val){
let endTime = new Date()
switch (val) {
case 1:
this.queryParams.condition.beginTime=this.formatDate(endTime)
this.queryParams.condition.endTime=this.formatDate(endTime)
this.querySubmit()
break;
case 2:
this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 3))
this.queryParams.condition.endTime = this.formatDate(endTime)
this.querySubmit()
break;
case 3:
this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 7))
this.queryParams.condition.endTime = this.formatDate(endTime)
this.querySubmit()
break;
case 4:
this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 15))
this.queryParams.condition.endTime = this.formatDate(endTime)
this.querySubmit()
break;
case 5:
this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 30))
this.queryParams.condition.endTime = this.formatDate(endTime)
this.querySubmit()
break;
case 6:
this.date=[]
break;
default:
break;
}
},
// 时间选择改变后的回调
changePicker(value) {
if(value && value.length) {
this.queryParams.condition.beginTime = value[0]
this.queryParams.condition.endTime = value[1]
}
this.querySubmit()
},
// 时间格式化
formatDate(timeStr) {
let date = new Date(Number(timeStr));
let year = date.getFullYear();
let month = String(date.getMonth() + 1).padStart(2, 0);
let day = String(date.getDate()).padStart(2, 0);
return `${year}-${month}-${day}`;
},
handleCancel(id){
this.jkVisible=true;
this.companyId=id
},
handleConfirm(){
companyCancel({cid:[this.companyId]}).then(res => {
this.jkVisible=false;
this.$modal.success("取消成功");
this.querySubmit()
})
},
addEnterprise(){
this.qyVisible=true;
},
handleBatch(){
this.pldrVisible=true;
},
handleFileListChange(file, fileList) {
if (fileList.length > 0) {
this.fileList = [fileList[fileList.length - 1]];
}
},
onSuccess(res, file, fileList) {
if(res.code == 200 ){
this.$refs.upload.submit();
let _this = this
setTimeout(function() {
// _this.getList()
_this.$message.success('上传成功!')
// _this.isupload = false
},3000)
handleClick() {
}
}
else
this.$message.error({message:res.msg,showClose:true})
},
submitUpload() {
this.$refs.upload.submit();
},
}
}
</script>
......@@ -191,9 +343,22 @@
.search{
display: -webkit-box;
align-items: flex-start;
line-height: 20px;
line-height: 16px;
.label{
margin-right: 24px;
color: rgba(35,35,35,0.8);
font-size: 14px;
}
}
.checkbox{
display: flex;
align-items: flex-start;
padding-left: 12px;
position: relative;
::v-deep .el-date-editor{
position: absolute;
left: 602px;
top: -7px
}
}
}
......@@ -233,6 +398,37 @@
}
}
}
.table-item{
.span{
height: 22px;
line-height: 22px;
padding: 0 8px;
border-radius: 2px 2px 2px 2px;
font-size: 12px;
margin-right: 10px;
display: inline-block;
}
.color1{
background: #FFECE8;
color: #FF3C3C;
}
.color2{
background: #FFF3E8;
color: #F77234;
}
.color3{
background: #FFF8E8;
color: #FFAB44;
}
.color4{
background: #E8F7FF;
color: #0081FF;
}
.color5{
background: #E8FFF1;
color: #0CBC6D;
}
}
}
::v-deep .dialog-claim{
margin:0 !important;
......@@ -309,6 +505,7 @@
position: absolute;
.list{
max-height:372px;
overflow: auto;
}
.item{
display: flex;
......@@ -324,6 +521,7 @@
}
}
.item-right{
width: 250px;
p{
margin: 0;
padding: 0;
......
......@@ -7,26 +7,21 @@
<div class="main-item">
<div class="label">风险类型</div>
<div class="main-right">
<div class="checkbox">
<div class="checkbox-content-qx">
<el-checkbox v-model="checkFx" @change="checkFxBtn">全部</el-checkbox>
</div>
<el-checkbox-group v-model="queryParams.fxType" class="keyword_checkbox" @change="checkFx1Btn">
<el-checkbox v-for="item in fxlx" :label="item.value" :key="item.label">{{item.label}}</el-checkbox>
</el-checkbox-group>
<div class="select-popper">
<span :class="{ color_text: sffx.length }">司法风险{{sffx.length > 0 ? sffx.length:''}}<i class="el-icon-caret-bottom"></i></span>
<el-select ref="tenderTypeSelect" v-model="sffx" class="select-multiple" collapse-tags @change="handleSelect" multiple placeholder="请选择">
<el-option v-for="(i,index) in selectList" :key="index" :label="i.dimensionName" :value="i.dimensionName">
<el-checkbox style="width: 100%;" :label="i.dimensionName" @change="changeSffx(i)">{{i.dimensionName}}</el-checkbox>
</el-option>
</el-select>
</div>
</div>
</div>
<div class="main-item">
<div class="label">监控维度</div>
<div class="main-right">
<div class="checkbox">
<div class="checkbox-content-qx">
<el-checkbox v-model="checkJkwd" @change="checkJkwdBtn">全部</el-checkbox>
</div>
<el-checkbox-group v-model="queryParams.jkwdType" class="keyword_checkbox" @change="checkJkwd1Btn">
<el-checkbox v-for="item in jkwd" :label="item.value" :key="item.label">{{item.label}}</el-checkbox>
</el-checkbox-group>
<div class="select-popper">
<span :class="{ color_text: gsfx.length }">工商风险{{gsfx.length > 0 ? gsfx.length:''}}<i class="el-icon-caret-bottom"></i></span>
<el-select ref="tenderTypeSelect" v-model="gsfx" class="select-multiple" collapse-tags @change="handleSelect" multiple placeholder="请选择">
<el-option v-for="(i,index) in selectList1" :key="index" :label="i.dimensionName" :value="i.dimensionName">
<el-checkbox style="width: 100%;" :label="i.dimensionName" @change="changeGsfx(i)">{{i.dimensionName}}</el-checkbox>
</el-option>
</el-select>
</div>
</div>
</div>
......@@ -35,15 +30,18 @@
<div class="m-main">
<div class="main-item">
<div class="label">推送频率</div>
<el-radio v-model="queryParams.radio" label="1">每天</el-radio>
<el-radio v-model="queryParams.radio" label="2">工作日(排除节假日)</el-radio>
<el-radio v-model="queryParams.pushFrequency" label="0">每小时</el-radio>
<el-radio v-model="queryParams.pushFrequency" label="1">每天</el-radio>
<el-radio v-model="queryParams.pushFrequency" label="2">工作日(排除节假日)</el-radio>
</div>
<div class="main-item" style="line-height: 32px;">
<div class="label">推送时段</div>
<el-time-picker
is-range
class="timePicker"
v-model="queryParams.time"
v-model="time"
:picker-options="{ step: '01:00' }"
@change="changeTime"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
......@@ -55,17 +53,17 @@
<div class="m-main">
<div class="main-item">
<div class="label">接收方式</div>
<el-radio v-model="queryParams.radio" label="1">全部</el-radio>
<el-radio v-model="queryParams.radio" label="2">手机短信</el-radio>
<el-radio v-model="queryParams.radio" label="3">PC</el-radio>
<!--<el-radio v-model="queryParams.radio" label="1">全部</el-radio>-->
<el-radio v-model="queryParams.receiveMode" label="0">手机短信</el-radio>
<!--<el-radio v-model="queryParams.radio" label="3">PC</el-radio>-->
</div>
<div class="main-item" style="line-height: 32px;">
<div class="label">手机号码</div>
<el-input class="phone" v-model="queryParams.phone" placeholder="请输入手机号"></el-input>
<el-input class="phone" v-model="queryParams.phones" placeholder="请输入手机号"></el-input>
</div>
</div>
<div class="search">
<span class="btn1">保存</span>
<span class="btn1" @click="handleAdd">保存</span>
<span class="btn2">重置</span>
</div>
</div>
......@@ -74,58 +72,95 @@
</template>
<script>
import { rulesSelect,insertOrUpdate,rulesDetail } from '@/api/monitoring/monitoring'
export default {
name: 'MonitorSettings',
data() {
return {
fxlx:[
{
value:'1',
label:'工商风险'
},
{
value:'2',
label:'司法风险'
},
],
jkwd:[
{
value:'1',
label:'法院公告'
},
{
value:'2',
label:'裁判文书'
},
{
value:'3',
label:'开庭公告'
},
{
value:'3',
label:'股权冻结'
},
],
selectList:[],
selectList1:[],
sffx:[],
gsfx:[],
checkFx: true,
checkJkwd: true,
queryParams:{
fxType:[],
jkwdType:[],
time:[new Date(2016, 9, 10, 8, 40), new Date(2016, 9, 10, 9, 40)],
radio:'1',
phone:''
}
pushFrequency:'0',
receiveMode:'0',
phones:''
},
time:''
}
},
created() {
rulesSelect().then(res => {
this.selectList=res.data;
for(let i in res.data){
if(res.data[i].dimensionName === '司法风险'){
this.selectList=res.data[i].children
}
if(res.data[i].dimensionName === '工商风险'){
this.selectList1=res.data[i].children
}
}
})
rulesDetail({}).then(res => {
console.log(res)
})
},
methods: {
checkFxBtn(val) {
this.queryParams.fxType = [];
this.checkFx = true;
changeSffx(val) {
if (this.sffx.indexOf(val.dimensionName) == -1) {
this.sffx.push(val.dimensionName)
} else {
this.sffx.splice(this.sffx.indexOf(val.dimensionName), 1)
}
},
changeGsfx(val) {
if (this.gsfx.indexOf(val.dimensionName) == -1) {
this.gsfx.push(val.dimensionName)
} else {
this.gsfx.splice(this.gsfx.indexOf(val.dimensionName), 1)
}
},
handleSelect(val) {
// console.log(val)
},
handleAdd(){
let params={
pushFrequency:Number(this.queryParams.pushFrequency),
riskType:'',
dimension:'',
receiveMode:Number(this.queryParams.receiveMode),
phones:this.queryParams.phones,
}
if(this.sffx.length > 0 && this.gsfx.length > 0){
params.riskType='司法风险,工商风险'
params.dimension=this.sffx.join()+','+this.gsfx.join()
}
if(this.sffx.length > 0 && this.gsfx.length === 0){
params.riskType='司法风险'
params.dimension=this.sffx.join()
}
if(this.sffx.length === 0 && this.gsfx.length > 0){
params.riskType='工商风险'
params.dimension=this.gsfx.join()
}
if(this.time.length > 0){
params.timePeriodStart=this.time[0]
params.timePeriodEnd=this.time[1]
}
console.log(params)
insertOrUpdate(params).then(res => {
console.log(res)
})
},
changeTime(val){
console.log(val)
},
checkFx1Btn(val){
console.log(val)
if (val.length > 0) {
this.checkFx = false;
} else if (val.length == 0) {
......@@ -148,6 +183,16 @@
}
</script>
<style lang="scss">
.el-popper[x-placement^="bottom"] {
margin-top: 5px !important;
}
.el-select-dropdown__item.selected,
.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{
color: #3181fa;
font-size: 0;
}
</style>
<style lang="scss" scoped>
.MonitorSettings{
.content{
......@@ -178,13 +223,45 @@
font-weight: 400;
color: rgba(35, 35, 35, 0.8);
}
.color_text {
color: #0081ff;
}
.main-right {
width: calc(100% - 112px);
.checkbox{
display: flex;
align-items: flex-start;
.checkbox-content-qx{
margin-right: 24px;
.select-popper {
text-align: center;
display: inline-block;
position: relative;
color: #333333;
font-size: 14px;
cursor: pointer;
margin: 0px 12px;
margin-bottom: 16px;
}
.select-popper .select-popper-img {
width: 24px;
height: 12px;
position: absolute;
top: -10px;
right: 2px;
}
.select-multiple {
position: absolute;
left: 0;
top: -6px;
opacity: 0;
line-height: 22px;
.el-input {
width: 100%;
line-height: 22px;
.el-input__inner {
width: 100%;
height: 22px !important;
}
}
.el-tag__close.el-icon-close {
display: none;
}
}
}
......
......@@ -4,15 +4,15 @@
<div class="search">
<div class="search-item" style="line-height: 32px;margin-top: 0;padding-bottom: 8px;">
<div class="label">监控维度</div>
<el-input class="name" placeholder="请输入监控对象名称">
<el-button slot="append">搜索</el-button>
<el-input class="name" placeholder="请输入监控对象名称" v-model="companyName">
<el-button slot="append" @click="handleKeyword()">搜索</el-button>
</el-input>
</div>
<div class="search-item">
<div class="label">更新时间</div>
<div class="checkbox">
<el-radio-group v-model="radio">
<el-radio v-for="item in radioList" :label="item.type">{{item.label}}</el-radio>
<el-radio v-for="item in radioList" @change="radioBtn" :label="item.type">{{item.label}}</el-radio>
</el-radio-group>
<el-date-picker
v-if="radio==6"
......@@ -21,6 +21,7 @@
value-format="yyyy-MM-dd"
unlink-panels
size="small"
@change="changePicker"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
......@@ -29,36 +30,23 @@
</div>
<div class="search-item" style="line-height: 32px;">
<div class="label">监控类型</div>
<div class="checkbox">
<el-checkbox @change="checkJklxBtn('司法风险')"></el-checkbox>
<el-select v-model="queryParams.type" @change="iptAdaptive(inputID1,true,'changeSelect1')"
:class="[`select-adaptive-${inputID1}`,queryParams.type.length > 1 ? 'selectTag' : '']" multiple collapse-tags clearable
placeholder="司法风险">
<el-option v-for="(item,index) in sffxList" :key="index" :label="item" :value="item"></el-option>
</el-select>
<el-checkbox @change="checkJklxBtn('工商变更')"></el-checkbox>
<el-select v-model="queryParams.gsbgType" @change="iptAdaptive(inputID2,true,'changeSelect1')"
:class="[`select-adaptive-${inputID2}`,queryParams.gsbgType.length > 1 ? 'selectTag' : '']" multiple collapse-tags clearable
placeholder="工商变更">
<el-option v-for="(item,index) in gsbgList" :key="index" :label="item" :value="item"></el-option>
</el-select>
<!--<el-checkbox-group v-model="fxlxType" class="keyword_checkbox" @change="checkJklxBtn">-->
<!--<el-checkbox v-for="item in jkType" :label="item.value" :key="item.label"></el-checkbox>-->
<!--<template v-if="item.label=='司法风险'">-->
<!--<el-select v-model="queryParams.type" @change="iptAdaptive(inputID1,true,'changeSelect1')"-->
<!--:class="[`select-adaptive-${inputID1}`,queryParams.type.length > 1 ? 'selectTag' : '']" multiple collapse-tags clearable-->
<!--:placeholder="item.label">-->
<!--<el-option v-for="(item,index) in sffxList" :key="index" :label="item" :value="item"></el-option>-->
<!--</el-select>-->
<!--</template>-->
<!--<template v-if="item.label=='工商变更'">-->
<!--<el-select v-model="queryParams.gsbgType" @change="iptAdaptive(inputID2,true,'changeSelect1')"-->
<!--:class="[`select-adaptive-${inputID2}`,queryParams.gsbgType.length > 1 ? 'selectTag' : '']" multiple collapse-tags clearable-->
<!--:placeholder="item.label">-->
<!--<el-option v-for="(item,index) in gsbgList" :key="index" :label="item" :value="item"></el-option>-->
<!--</el-select>-->
<!--</template>-->
<!--</el-checkbox-group>-->
<div class="main-right">
<div class="select-popper">
<span :class="{ color_text: sffx.length }">司法风险{{sffx.length > 0 ? sffx.length:''}}<i class="el-icon-caret-bottom"></i></span>
<el-select ref="tenderTypeSelect" v-model="sffx" class="select-multiple" collapse-tags multiple placeholder="请选择">
<el-option v-for="(i,index) in selectList" :key="index" :label="i.dimensionName" :value="i.dimensionName">
<el-checkbox style="width: 100%;" :label="i.dimensionName" @change="changeSffx(i)">{{i.dimensionName}}</el-checkbox>
</el-option>
</el-select>
</div>
<div class="select-popper">
<span :class="{ color_text: gsfx.length }">工商风险{{gsfx.length > 0 ? gsfx.length:''}}<i class="el-icon-caret-bottom"></i></span>
<el-select ref="tenderTypeSelect" v-model="gsfx" class="select-multiple" collapse-tags multiple placeholder="请选择">
<el-option v-for="(i,index) in selectList1" :key="index" :label="i.dimensionName" :value="i.dimensionName">
<el-checkbox style="width: 100%;" :label="i.dimensionName" @change="changeGsfx(i)">{{i.dimensionName}}</el-checkbox>
</el-option>
</el-select>
</div>
</div>
</div>
<div class="search-item">
......@@ -68,16 +56,16 @@
<div class="checkbox-content-qx">
<el-checkbox v-model="checkFx" @change="checkFxjbBtn">全部</el-checkbox>
</div>
<el-radio-group v-model="fxjbType" class="keyword_checkbox" @change="checkFxjb1Btn">
<el-radio v-for="item in fxjb" :label="item.value" :key="item.label">{{item.label}}</el-radio>
</el-radio-group>
<el-checkbox-group v-model="fxjbType" class="keyword_checkbox" @change="checkFxjb1Btn">
<el-checkbox v-for="item in fxjb" :label="item.value" :key="item.label">{{item.label}}</el-checkbox>
</el-checkbox-group>
</div>
</div>
</div>
</div>
<div class="content">
<div class="total">162</div>
<div class="total">{{tableDataTotal}}</div>
<div class="table-item">
<el-table
class="fixed-table"
......@@ -87,34 +75,22 @@
highlight-current-row
>
<el-table-column label="序号" width="60" align="left" fixed>
<!--<template slot-scope="scope">{{ pageIndex * pageSize - pageSize + scope.$index + 1 }}</template>-->
<template slot-scope="scope">1</template>
</el-table-column>
<el-table-column label="监控对象" prop="name" align="left" width="250">
<template slot-scope="scope">
中国中铁股份有限公司
</template>
<template slot-scope="scope">{{ queryParams.pageNum * queryParams.pageSize - queryParams.pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column label="风险级别" prop="fxjb" align="left" width="120">
<el-table-column label="监控对象" prop="companyName" align="left" width="250"></el-table-column>
<el-table-column label="风险级别" prop="riskLevel" align="left" width="120"></el-table-column>
<el-table-column label="监控类型" prop="parentName" align="left" width="150"></el-table-column>
<el-table-column label="动态内容" prop="details" align="left">
<template slot-scope="scope">
正向
</template>
</el-table-column>
<el-table-column label="监控类型" prop="jklx" align="left" width="150">
<template slot-scope="scope">
新增中标业绩
</template>
</el-table-column>
<el-table-column label="动态内容" prop="dtlr" align="left">
<template slot-scope="scope">
新增中标业绩
</template>
</el-table-column>
<el-table-column label="更新时间" prop="time" align="left" width="150">
<template slot-scope="scope">
2022-09-02
<div v-for="(item,index) in scope.row.Array" :key="index">
<div>
<span style="color: #999;">{{item.key}}</span>
<span>{{item.value}}</span>
</div>
</div>
</template>
</el-table-column>
<el-table-column label="更新时间" prop="createTime" align="left" width="150"></el-table-column>
<el-table-column
label="操作"
align="center"
......@@ -132,7 +108,14 @@
<el-dialog :visible.sync="dialogVisible" custom-class='dialog-claim' :title="title" width="720px" >
<div class="dialog-content">
<template v-if="title=='开庭公告详情'">
<info-table class="info-tab" :list="defaultList0" :obj="detail" :labelWidth="labelWidth"></info-table>
<info-table class="info-tab" :list="defaultList0" :obj="detail" :labelWidth="labelWidth">
<template v-slot:relatedCompanies="row">
<p v-for="i in row.data.relatedCompanies">
{{i.role}}:<br/>
{{i.name}}
</p>
</template>
</info-table>
</template>
<template v-if="title=='失信被执行人详情'">
<info-table class="info-tab" :list="defaultList1" :obj="detail" :labelWidth="labelWidth"></info-table>
......@@ -147,7 +130,14 @@
<info-table class="info-tab" :list="defaultList4" :obj="detail" :labelWidth="labelWidth"></info-table>
</template>
<template v-if="title=='裁判文书详情'">
<info-table class="info-tab" :list="defaultList5" :obj="detail" :labelWidth="labelWidth"></info-table>
<info-table class="info-tab" :list="defaultList5" :obj="detail" :labelWidth="labelWidth">
<template v-slot:relatedCompanies="row">
<p v-for="i in row.data.relatedCompanies">
{{i.role}}:<br/>
{{i.name}}
</p>
</template>
</info-table>
</template>
</div>
</el-dialog>
......@@ -156,6 +146,8 @@
<script>
import { v4 } from "uuid";
import {changeTime} from "@/assets/js/common.js"
import { dynamicPage,companyDetail,rulesSelect } from '@/api/monitoring/monitoring'
import InfoTable from '../detail/party-a/component/infoTable';
export default {
name: 'MonitoringDynamics',
......@@ -164,6 +156,7 @@
},
data() {
return {
changeTime,
radio:1,
date:'',
radioList:[
......@@ -194,23 +187,23 @@
],
fxjb:[
{
value:'1',
value:'提示',
label:'提示'
},
{
value:'2',
value:'正向',
label:'正向'
},
{
value:'3',
value:'低风险',
label:'低风险'
},
{
value:'4',
value:'中风险',
label:'中风险'
},
{
value:'5',
value:'高风险',
label:'高风险'
},
],
......@@ -226,136 +219,228 @@
label:'工商变更'
},
],
sffxList:['开庭公告','裁判文书','法院公告','失信被执行人','被执行人','限制高消费','股权冻结'],
gsbgList:['法定代表人变更','企业类型变更','注册资本变更','股东变更','对外投资变更','企业名称变更','注册地址变更','经营状态变更','分支机构'],
selectList:[],
selectList1:[],
sffx:[],
gsfx:[],
queryParams:{
type:[],
gsbgType:[],
pageNum:1,
pageSize:10,
condition:{}
},
fxjbType:'',
type:[],
gsbgType:[],
companyName:'',
fxjbType:[],
inputID1: this.getUid(),
inputID2: this.getUid(),
tableData:[
{
name:'中国中铁股份有限公司',
jklx:'正向',
kjlx:'新增中标业绩',
dtlr:'新增中标,中标金额234.45万元:怀化国际陆港商贸服务综合物流枢纽及配套工程建设项目公共配套服务设施(市政绿化提档升级)项目一期EPC',
time:'2022-09-02',
}
],
tableData:[],
tableDataTotal:0,
dialogVisible:false,
labelWidth: 140,
//开庭公告详情
defaultList0:[
{ name: '案由', prop: 'a' },
{ name: '案号', prop: 'b' },
{ name: '开庭时间', prop: 'c' },
{ name: '承办部门', prop: 'd' },
{ name: '审判长/主判人', prop: 'e'},
{ name: '当事人', prop: 'f'},
{ name: '法院', prop: 'g'},
{ name: '法庭', prop: 'h'},
{ name: '公告内容', prop: 'j', style: true },
{ name: '案由', prop: 'causeAction' },
{ name: '案号', prop: 'caseNo' },
{ name: '开庭时间', prop: 'hearingDate' },
{ name: '承办部门', prop: 'department' },
{ name: '审判长/主判人', prop: 'judge'},
{ name: '当事人', prop: 'relatedCompanies',slot: true},
{ name: '法院', prop: 'court'},
{ name: '法庭', prop: 'tribunal'},
{ name: '公告内容', prop: 'content', style: true },
],
//失信被执行人详情
defaultList1:[
{ name: '失信被执行人行为具体情形', prop: 'a', style: true },
{ name: '履行情况', prop: 'b' },
{ name: '立案文号', prop: 'c' },
{ name: '立案日期', prop: 'd' },
{ name: '执行依据文号', prop: 'e'},
{ name: '执行法院', prop: 'f'},
{ name: '失信被执行人行为具体情形', prop: 'executionDesc', style: true },
{ name: '履行情况', prop: 'finalDuty' },
{ name: '立案文号', prop: 'caseNumber' },
{ name: '立案日期', prop: 'date' },
{ name: '执行依据文号', prop: 'docNumber'},
{ name: '执行法院', prop: 'court'},
],
//法院公告详情
defaultList2:[
{ name: '原告', prop: 'a',style: true },
{ name: '被告', prop: 'b' },
{ name: '公共类型', prop: 'c' },
{ name: '公告日期', prop: 'd' },
{ name: '公告法院', prop: 'e',style: true},
{ name: '案由', prop: 'f',style: true},
{ name: '当事人', prop: 'people',style: true },
{ name: '身份', prop: 'role' },
{ name: '公共类型', prop: 'type' },
{ name: '公告日期', prop: 'date' },
{ name: '公告法院', prop: 'court',style: true},
{ name: '案由', prop: 'caseReason',style: true},
],
//经营异常详情
defaultList3:[
{ name: '案号', prop: 'a'},
{ name: '经营异常类型', prop: 'b' },
{ name: '列入经营异常名录原因', prop: 'c',style: true },
{ name: '拖欠天数', prop: 'd' },
{ name: '涉及金额', prop: 'e'},
{ name: '列入日期', prop: 'e'},
{ name: '列入机关', prop: 'e'},
{ name: '数据来源', prop: 'f',style: true},
{ name: '列入日期', prop: 'inDate'},
{ name: '移出日期', prop: 'outDate' },
{ name: '列入经营异常原因', prop: 'outReason',style: true },
{ name: '做出决定机关(移入)', prop: 'department' },
{ name: '做出决定机关(移出)', prop: 'outDepartment'},
{ name: '移出经营移除名录原因', prop: 'outReason',style: true},
],
//股权冻结详情
defaultList4:[
{ name: '标题名称', prop: 'a'},
{ name: '执行事项', prop: 'b' },
{ name: '执行裁定文书号', prop: 'c'},
{ name: '执行通知文号', prop: 'd' },
{ name: '被执行人', prop: 'e'},
{ name: '被执行人持有股权、其他投资权益数额', prop: 'e'},
{ name: '冻结期限自', prop: 'e'},
{ name: '冻结期限至', prop: 'f'},
{ name: '冻结期限', prop: 'f'},
{ name: '公示日期', prop: 'f'},
{ name: '执行法院', prop: 'executiveCourt'},
{ name: '执行事项', prop: 'assistItem' },
{ name: '执行裁定文书号', prop: 'adjudicateNo'},
{ name: '执行通知文号', prop: 'number' },
{ name: '被执行人', prop: 'beExecutedPerson'},
{ name: '被执行人持有股权、其他投资权益数额', prop: 'amount'},
{ name: '冻结期限自', prop: 'freezeStartDate'},
{ name: '冻结期限至', prop: 'freezeEndDate'},
{ name: '冻结期限', prop: 'freezeYearMonth'},
{ name: '公示日期', prop: 'publicDate'},
],
//裁判文书详情
defaultList5:[
{ name: '案由', prop: 'a'},
{ name: '执行案号', prop: 'b' },
{ name: '身份', prop: 'c'},
{ name: '当事人', prop: 'd' },
{ name: '案件金额', prop: 'e'},
{ name: '判决日期', prop: 'e'},
{ name: '判决结果', prop: 'e',style: true},
{ name: '案由', prop: 'causeAction'},
{ name: '执行案号', prop: 'causeNo' },
{ name: '身份', prop: 'role'},
{ name: '当事人', prop: 'relatedCompanies',slot: true },
{ name: '案件金额', prop: 'subAmount'},
{ name: '判决日期', prop: 'date'},
{ name: '判决结果', prop: 'judgeresult',style: true},
],
title:'开庭公告详情',
detail:{
a:'民事借贷纠纷',
b:'(2023)豫44执513号',
c:'2021-11-20',
d:'-',
e:'-',
f:'原告:Z某某;被告L某某',
g:'宁乡县人民法院',
h:'第七审判庭',
j:'L某某宁乡县中小民间借贷服务有限公司: 本院受理原告C某某诉你民间借贷纠纷一案,现依法向你公告送达起诉状副本、应诉通知书、举证通知书、' +
'合议庭组成人员通知书及开庭传票等法律文书。自发出公告之日起,经过60日即视为送达。提出答辩状和举证的期限分别为公告期满后15日和30日内。' +
'并定于举证期满后第3日上午9时00分(遇法定假日顺延)在本院第七审判庭公开开庭审理,逾期将依法缺席裁判。 特此公告 发布日期:20160719',
}
title:'法院公告详情',
detail:{}
}
},
created() {
this.getPlaceholder()
this.querySubmit()
rulesSelect().then(res => {
this.selectList=res.data;
for(let i in res.data){
if(res.data[i].dimensionName === '司法风险'){
this.selectList=res.data[i].children
}
if(res.data[i].dimensionName === '工商风险'){
this.selectList1=res.data[i].children
}
}
})
},
methods: {
checkJklxBtn(val) {
console.log(val)
if(val === '司法风险'){
this.queryParams.type=this.queryParams.type.length != this.sffxList.length ? [] : this.sffxList;
this.iptAdaptive(this.inputID1,true,'changeSelect1')
async querySubmit() {
let endTime = new Date()
if(this.radio === 1){
this.queryParams.condition.beginTime=this.formatDate(endTime)
this.queryParams.condition.endTime=this.formatDate(endTime)
}
if(val==='工商变更'){
this.queryParams.gsbgType=this.queryParams.gsbgType.length != this.gsbgList.length ? [] : this.gsbgList;
this.iptAdaptive(this.inputID2,true,'changeSelect1')
}else {
this.queryParams.gsbgType=[]
if(this.companyName){
this.queryParams.condition.companyName=this.companyName
}
if(this.fxjbType.length > 0){
this.queryParams.condition.fxjbType=this.riskLevel.join()
}
dynamicPage(this.queryParams).then(res => {
this.tableData=res.rows;
this.tableDataTotal=res.total;
this.tableData.forEach(el => {
el.createTime = changeTime(el.createTime)
// 把动态内容从json字符串改为对象
el.details = JSON.parse(el.details)
// 对象转为键值对数组
let arr = Object.entries(el.details)
// 新建一个属性数组
el.Array = []
for(let [i,j] of arr){
el.Array.push({key:i,value:j})
}
})
console.log(this.tableData)
})
},
getDetail() {
companyDetail({dimensionName:'新增法院公告',sourceId:'0001c8e8-183f-48b5-a8ce-575b5c214b1a_65250c621707e177f7983cbf_'}).then(res => {
console.log(res)
this.detail=res.data;
})
},
changeSffx(val) {
if (this.sffx.indexOf(val.dimensionName) == -1) {
this.sffx.push(val.dimensionName)
} else {
this.sffx.splice(this.sffx.indexOf(val.dimensionName), 1)
}
},
changeGsfx(val) {
if (this.gsfx.indexOf(val.dimensionName) == -1) {
this.gsfx.push(val.dimensionName)
} else {
this.gsfx.splice(this.gsfx.indexOf(val.dimensionName), 1)
}
},
checkFxjbBtn(val) {
this.fxjbType = [];
this.checkFx = true;
this.querySubmit()
},
checkFxjb1Btn(val){
if (val.length > 0) {
this.checkFx = false;
} else if (val.length == 0) {
this.checkFx = true;
this.fxjbType = [];
}
this.querySubmit()
},
handleDetail(){
this.dialogVisible=true;
this.getDetail()
},
handleKeyword(){
this.querySubmit()
},
radioBtn(val){
let endTime = new Date()
switch (val) {
case 1:
this.queryParams.condition.beginTime=this.formatDate(endTime)
this.queryParams.condition.endTime=this.formatDate(endTime)
this.querySubmit()
break;
case 2:
this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 3))
this.queryParams.condition.endTime = this.formatDate(endTime)
this.querySubmit()
break;
case 3:
this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 7))
this.queryParams.condition.endTime = this.formatDate(endTime)
this.querySubmit()
break;
case 4:
this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 15))
this.queryParams.condition.endTime = this.formatDate(endTime)
this.querySubmit()
break;
case 5:
this.queryParams.condition.beginTime = this.formatDate(new Date(endTime.getTime() - 3600 * 1000 * 24 * 30))
this.queryParams.condition.endTime = this.formatDate(endTime)
this.querySubmit()
break;
case 6:
this.date=[]
break;
default:
break;
}
},
// 时间选择改变后的回调
changePicker(value) {
if(value && value.length) {
this.queryParams.condition.beginTime = value[0]
this.queryParams.condition.endTime = value[1]
}
this.querySubmit()
},
// 时间格式化
formatDate(timeStr) {
let date = new Date(Number(timeStr));
let year = date.getFullYear();
let month = String(date.getMonth() + 1).padStart(2, 0);
let day = String(date.getDate()).padStart(2, 0);
return `${year}-${month}-${day}`;
},
async getPlaceholder() {
try {
......@@ -504,6 +589,49 @@
background: #F5F5F5;
width: 60px;
color: #0081FF;
text-align: center;
}
.el-input-group__append:hover{
background:#F5F5F5;
}
}
.main-right {
width: calc(100% - 112px);
.select-popper {
text-align: center;
display: inline-block;
position: relative;
color: #333333;
font-size: 14px;
cursor: pointer;
margin: 0px 12px;
margin-bottom: 16px;
}
.select-popper .select-popper-img {
width: 24px;
height: 12px;
position: absolute;
top: -10px;
right: 2px;
}
.select-multiple {
position: absolute;
left: 0;
top: -6px;
opacity: 0;
line-height: 22px;
.el-input {
width: 100%;
line-height: 22px;
.el-input__inner {
width: 100%;
height: 22px !important;
}
}
.el-tag__close.el-icon-close {
display: none;
}
}
}
.checkbox{
......@@ -514,6 +642,11 @@
.checkbox-content-qx{
margin-right: 24px;
}
.keyword_checkbox{
::v-deep .el-checkbox{
margin-right: 24px;
}
}
::v-deep .el-checkbox{
margin-right: 10px;
}
......
......@@ -3,133 +3,45 @@
<div class="app-container MonitoringReport">
<div class="header">
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="监控日报" name="first"></el-tab-pane>
<el-tab-pane label="监控周报" name="second"></el-tab-pane>
<el-tab-pane label="监控月报" name="third"></el-tab-pane>
<el-tab-pane label="监控日报" name="1"></el-tab-pane>
<el-tab-pane label="监控周报" name="2"></el-tab-pane>
<el-tab-pane label="监控月报" name="3"></el-tab-pane>
</el-tabs>
</div>
<div class="report-content">
<div class="list">
<div class="list" v-for="item in dataList">
<div class="list-title">
<div class="flex-box query-box">
<div class="flex-box query-params">
<span class="common-title">今日</span>
<span class="common-title">{{item.period}}</span>
</div>
<div class="flex-box query-ability">
<span style="color:#0081FF;padding: 0 4px;">13</span>家企业发生<span style="color:#F7965B;padding: 0 4px;">651</span>条动态信息
</div>
</div>
</div>
<div class="item">
<div class="item" v-for="i in item.list">
<div class="item-left">
<!--<img v-if="item.logoUrl" :src="item.logoUrl" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />-->
<!--<img v-else src="@/assets/images/enterprise.png" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />-->
<img src="@/assets/images/enterprise.png"/>
<img v-if="i.logoUrl" :src="i.logoUrl" :alt="i.companyOrstaffName.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />
<img v-else src="@/assets/images/enterprise.png" :alt="i.companyOrstaffName.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />
</div>
<div class="item-right">
<p class="right-title">
<span>中国铁建集团</span>
<router-link :to="`/monitoring/MonitoringReportDetails/${i.companyOrstaffId}`" tag="a" class="a-link companyName">{{i.companyOrstaffName}}</router-link>
</p>
<p class="card-right-p">
<span class="right-label">提示:</span>
<span class="right-color color1">11</span>
<span class="right-color color1">{{i.promptCount}}</span>
<span class="right-label">正向:</span>
<span class="right-color color1">21</span>
<span class="right-color color1">{{i.positiveCount}}</span>
<span class="right-label">低风险:</span>
<span class="right-color color1">31</span>
<span class="right-color color1">{{i.lowRiskCount}}</span>
<span class="right-label">中风险:</span>
<span class="right-color color1">41</span>
<span class="right-color color1">{{i.middleRiskCount}}</span>
<span class="right-label">高风险:</span>
<span class="right-color color1">1</span>
<span class="right-color color1">{{i.highRiskCount}}</span>
</p>
<div class="tips">新增<span>654</span>条动态信息</div>
</div>
</div>
<div class="item">
<div class="item-left">
<!--<img v-if="item.logoUrl" :src="item.logoUrl" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />-->
<!--<img v-else src="@/assets/images/enterprise.png" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />-->
<img src="@/assets/images/enterprise.png"/>
</div>
<div class="item-right">
<p class="right-title">
<span>中国铁建集团</span>
</p>
<p class="card-right-p">
<span class="right-label">提示:</span>
<span class="right-color color1">11</span>
<span class="right-label">正向:</span>
<span class="right-color color2">21</span>
<span class="right-label">低风险:</span>
<span class="right-color color3">31</span>
<span class="right-label">中风险:</span>
<span class="right-color color4">41</span>
<span class="right-label">高风险:</span>
<span class="right-color color5">1</span>
</p>
<div class="tips">新增<span>654</span>条动态信息</div>
</div>
</div>
</div>
<div class="list">
<div class="list-title">
<div class="flex-box query-box">
<div class="flex-box query-params">
<span class="common-title">昨日</span>
</div>
<div class="flex-box query-ability">
<span style="color:#0081FF;padding: 0 4px;">13</span>家企业发生<span style="color:#F7965B;padding: 0 4px;">651</span>条动态信息
</div>
</div>
</div>
<div class="item">
<div class="item-left">
<!--<img v-if="item.logoUrl" :src="item.logoUrl" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />-->
<!--<img v-else src="@/assets/images/enterprise.png" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />-->
<img src="@/assets/images/enterprise.png"/>
</div>
<div class="item-right">
<p class="right-title">
<span>中国铁建集团</span>
</p>
<p class="card-right-p">
<span class="right-label">提示:</span>
<span class="right-color color1">11</span>
<span class="right-label">正向:</span>
<span class="right-color color1">21</span>
<span class="right-label">低风险:</span>
<span class="right-color color1">31</span>
<span class="right-label">中风险:</span>
<span class="right-color color1">41</span>
<span class="right-label">高风险:</span>
<span class="right-color color1">1</span>
</p>
<div class="tips">新增<span>654</span>条动态信息</div>
</div>
</div>
<div class="item">
<div class="item-left">
<!--<img v-if="item.logoUrl" :src="item.logoUrl" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />-->
<!--<img v-else src="@/assets/images/enterprise.png" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />-->
<img src="@/assets/images/enterprise.png"/>
</div>
<div class="item-right">
<p class="right-title">
<span>中国铁建集团</span>
</p>
<p class="card-right-p">
<span class="right-label">提示:</span>
<span class="right-color color1">11</span>
<span class="right-label">正向:</span>
<span class="right-color color2">21</span>
<span class="right-label">低风险:</span>
<span class="right-color color3">31</span>
<span class="right-label">中风险:</span>
<span class="right-color color4">41</span>
<span class="right-label">高风险:</span>
<span class="right-color color5">1</span>
</p>
<div class="tips">新增<span>654</span>条动态信息</div>
<div class="tips">新增<span style="color:#0081FF;padding: 0 4px;">{{i.dynamicTotal}}</span>条动态信息</div>
</div>
</div>
</div>
......@@ -138,26 +50,40 @@
</template>
<script>
import { reportPage } from '@/api/monitoring/monitoring'
export default {
name: 'MonitoringReport',
data() {
return {
activeName:'first',
activeName:'1',
dataList:[
{
time:'今日',
list:[]
}
]
],
queryParams:{
pageNum:1,
pageSize:10,
condition:{
reportType:1
}
}
}
},
created() {
this.querySubmit()
},
methods: {
async querySubmit() {
reportPage(this.queryParams).then(res => {
console.log(res)
this.dataList=res.rows
})
},
handleClick() {
this.queryParams.condition.reportType=Number(this.activeName)
this.querySubmit()
}
}
}
......
<template>
<!--监控报告详情-->
<div class="app-container MonitoringReportDetails">
<div class="search">
<div class="enterprise">
<div class="name">
<img src="@/assets/images/enterprise.png"/>
<span>{{object.companyName}}</span>
</div>
<p>
<span class="label">法定代表人:</span>
<span class="val">{{object.corporatePerson}}</span>
<span class="label">注册资本:</span>
<span class="val">{{object.regCapital}}</span>
<span class="label">成立日期:</span>
<span class="val">{{object.registeredDate}}</span>
</p>
</div>
<div class="search-item">
<div class="label">风险级别</div>
<div class="main-right">
<div class="checkbox">
<div class="checkbox-content-qx">
<el-checkbox v-model="checkFx" @change="checkFxjbBtn">全部</el-checkbox>
</div>
<el-checkbox-group v-model="fxjbType" class="keyword_checkbox" @change="checkFxjb1Btn">
<el-checkbox v-for="item in fxjb" :label="item.label" :key="item.label">{{item.label}}</el-checkbox>
</el-checkbox-group>
</div>
</div>
</div>
<div class="search-item" style="line-height: 32px;">
<div class="label">监控类型</div>
<div class="main-right">
<div class="select-popper">
<span :class="{ color_text: sffx.length }">司法风险{{sffx.length > 0 ? sffx.length:''}}<i class="el-icon-caret-bottom"></i></span>
<el-select ref="tenderTypeSelect" v-model="sffx" class="select-multiple" collapse-tags multiple placeholder="请选择">
<el-option v-for="(i,index) in selectList" :key="index" :label="i.dimensionName" :value="i.dimensionName">
<el-checkbox style="width: 100%;" :label="i.dimensionName" @change="changeSffx(i)">{{i.dimensionName}}</el-checkbox>
</el-option>
</el-select>
</div>
<div class="select-popper">
<span :class="{ color_text: gsfx.length }">工商风险{{gsfx.length > 0 ? gsfx.length:''}}<i class="el-icon-caret-bottom"></i></span>
<el-select ref="tenderTypeSelect" v-model="gsfx" class="select-multiple" collapse-tags multiple placeholder="请选择">
<el-option v-for="(i,index) in selectList1" :key="index" :label="i.dimensionName" :value="i.dimensionName">
<el-checkbox style="width: 100%;" :label="i.dimensionName" @change="changeGsfx(i)">{{i.dimensionName}}</el-checkbox>
</el-option>
</el-select>
</div>
</div>
</div>
<div class="search-item" style="line-height: 16px;">
<div class="label">时间筛选</div>
<div class="checkbox">
<el-radio-group v-model="radio">
<el-radio v-for="item in radioList" :label="item.type">{{item.label}}</el-radio>
</el-radio-group>
<el-date-picker
v-if="radio==4"
v-model="date"
type="daterange"
value-format="yyyy-MM-dd"
unlink-panels
size="small"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期">
</el-date-picker>
</div>
</div>
</div>
<div class="content">
<div class="total">{{tableDataTotal}}</div>
<div class="table-item">
<el-table
class="fixed-table"
:data="tableData"
element-loading-text="Loading"
border
highlight-current-row
>
<el-table-column label="序号" width="60" align="left" fixed>
<template slot-scope="scope">{{ queryParams.pageNum * queryParams.pageSize - queryParams.pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column label="监控对象" prop="companyName" align="left" width="250"></el-table-column>
<el-table-column label="风险级别" prop="riskLevel" align="left" width="120"></el-table-column>
<el-table-column label="监控类型" prop="parentName" align="left" width="150"></el-table-column>
<el-table-column label="动态内容" prop="details" align="left">
<template slot-scope="scope">
<div v-for="(item,index) in scope.row.Array" :key="index">
<div>
<span style="color: #999;">{{item.key}}</span>
<span>{{item.value}}</span>
</div>
</div>
</template>
</el-table-column>
<el-table-column label="更新时间" prop="createTime" align="left" width="150"></el-table-column>
<el-table-column
label="操作"
align="center"
width="150"
class-name="small-padding fixed-width"
fixed="right"
>
<template slot-scope="scope">
<span style="cursor: pointer;" @click="handleDetail">查看详情</span>
</template>
</el-table-column>
</el-table>
</div>
</div>
<el-dialog :visible.sync="dialogVisible" custom-class='dialog-claim' :title="title" width="720px" >
<div class="dialog-content">
<template v-if="title=='开庭公告详情'">
<info-table class="info-tab" :list="defaultList0" :obj="detail" :labelWidth="labelWidth"></info-table>
</template>
<template v-if="title=='失信被执行人详情'">
<info-table class="info-tab" :list="defaultList1" :obj="detail" :labelWidth="labelWidth"></info-table>
</template>
<template v-if="title=='法院公告详情'">
<info-table class="info-tab" :list="defaultList2" :obj="detail" :labelWidth="labelWidth"></info-table>
</template>
<template v-if="title=='经营异常详情'">
<info-table class="info-tab" :list="defaultList3" :obj="detail" :labelWidth="labelWidth"></info-table>
</template>
<template v-if="title=='股权冻结详情'">
<info-table class="info-tab" :list="defaultList4" :obj="detail" :labelWidth="labelWidth"></info-table>
</template>
<template v-if="title=='裁判文书详情'">
<info-table class="info-tab" :list="defaultList5" :obj="detail" :labelWidth="labelWidth"></info-table>
</template>
</div>
</el-dialog>
</div>
</template>
<script>
import { v4 } from "uuid";
import { dynamicPage,rulesSelect,companyDetail } from '@/api/monitoring/monitoring'
import InfoTable from '../detail/party-a/component/infoTable';
import {changeTime} from "@/assets/js/common.js"
export default {
name: 'MonitoringDynamics',
components: {
InfoTable
},
data() {
return {
changeTime,
radio:0,
date:'',
radioList:[
{
type:1,
label:'今天'
},
{
type:2,
label:'近七天'
},
{
type:3,
label:'近30天'
},
{
type:4,
label:'自定义'
},
],
fxjb:[
{
value:'1',
label:'提示'
},
{
value:'2',
label:'正向'
},
{
value:'3',
label:'低风险'
},
{
value:'4',
label:'中风险'
},
{
value:'5',
label:'高风险'
},
],
checkFx: true,
fxlxType:[],
jkType:[
{
value:'1',
label:'司法风险'
},
{
value:'2',
label:'工商变更'
},
],
selectList:[],
selectList1:[],
sffx:[],
gsfx:[],
queryParams:{
pageNum:1,
pageSize:10,
condition:{
// companyId:this.$route.params.id,
companyId:285,
}
},
type:[],
gsbgType:[],
companyName:'',
fxjbType:[],
inputID1: this.getUid(),
inputID2: this.getUid(),
object:{},
tableData:[],
tableDataTotal:0,
dialogVisible:false,
labelWidth: 140,
//开庭公告详情
defaultList0:[
{ name: '案由', prop: 'causeAction' },
{ name: '案号', prop: 'caseNo' },
{ name: '开庭时间', prop: 'hearingDate' },
{ name: '承办部门', prop: 'department' },
{ name: '审判长/主判人', prop: 'judge'},
{ name: '当事人', prop: 'relatedCompanies',slot: true},
{ name: '法院', prop: 'court'},
{ name: '法庭', prop: 'tribunal'},
{ name: '公告内容', prop: 'content', style: true },
],
//失信被执行人详情
defaultList1:[
{ name: '失信被执行人行为具体情形', prop: 'executionDesc', style: true },
{ name: '履行情况', prop: 'finalDuty' },
{ name: '立案文号', prop: 'caseNumber' },
{ name: '立案日期', prop: 'date' },
{ name: '执行依据文号', prop: 'docNumber'},
{ name: '执行法院', prop: 'court'},
],
//法院公告详情
defaultList2:[
{ name: '当事人', prop: 'people',style: true },
{ name: '身份', prop: 'role' },
{ name: '公共类型', prop: 'type' },
{ name: '公告日期', prop: 'date' },
{ name: '公告法院', prop: 'court',style: true},
{ name: '案由', prop: 'caseReason',style: true},
],
//经营异常详情
defaultList3:[
{ name: '列入日期', prop: 'inDate'},
{ name: '移出日期', prop: 'outDate' },
{ name: '列入经营异常原因', prop: 'outReason',style: true },
{ name: '做出决定机关(移入)', prop: 'department' },
{ name: '做出决定机关(移出)', prop: 'outDepartment'},
{ name: '移出经营移除名录原因', prop: 'outReason',style: true},
],
//股权冻结详情
defaultList4:[
{ name: '执行法院', prop: 'executiveCourt'},
{ name: '执行事项', prop: 'assistItem' },
{ name: '执行裁定文书号', prop: 'adjudicateNo'},
{ name: '执行通知文号', prop: 'number' },
{ name: '被执行人', prop: 'beExecutedPerson'},
{ name: '被执行人持有股权、其他投资权益数额', prop: 'amount'},
{ name: '冻结期限自', prop: 'freezeStartDate'},
{ name: '冻结期限至', prop: 'freezeEndDate'},
{ name: '冻结期限', prop: 'freezeYearMonth'},
{ name: '公示日期', prop: 'publicDate'},
],
//裁判文书详情
defaultList5:[
{ name: '案由', prop: 'causeAction'},
{ name: '执行案号', prop: 'causeNo' },
{ name: '身份', prop: 'role'},
{ name: '当事人', prop: 'relatedCompanies',slot: true },
{ name: '案件金额', prop: 'subAmount'},
{ name: '判决日期', prop: 'date'},
{ name: '判决结果', prop: 'judgeresult',style: true},
],
title:'开庭公告详情',
detail:{}
}
},
created() {
this.getPlaceholder()
this.querySubmit()
console.log(this.$route.params)
rulesSelect().then(res => {
this.selectList=res.data;
for(let i in res.data){
if(res.data[i].dimensionName === '司法风险'){
this.selectList=res.data[i].children
}
if(res.data[i].dimensionName === '工商风险'){
this.selectList1=res.data[i].children
}
}
})
},
methods: {
changeSffx(val) {
if (this.sffx.indexOf(val.dimensionName) == -1) {
this.sffx.push(val.dimensionName)
} else {
this.sffx.splice(this.sffx.indexOf(val.dimensionName), 1)
}
},
changeGsfx(val) {
if (this.gsfx.indexOf(val.dimensionName) == -1) {
this.gsfx.push(val.dimensionName)
} else {
this.gsfx.splice(this.gsfx.indexOf(val.dimensionName), 1)
}
},
async querySubmit() {
let endTime = new Date()
if(this.radio === 1){
this.queryParams.condition.beginTime=this.formatDate(endTime)
this.queryParams.condition.endTime=this.formatDate(endTime)
}
if(this.companyName){
this.queryParams.condition.companyName=this.companyName
}
if(this.fxjbType.length > 0){
this.queryParams.condition.fxjbType=this.riskLevel.join()
}
dynamicPage(this.queryParams).then(res => {
this.object=res.object;
this.tableData=res.rows;
this.tableDataTotal=res.total;
this.tableData.forEach(el => {
el.createTime = changeTime(el.createTime)
// 把动态内容从json字符串改为对象
el.details = JSON.parse(el.details)
// 对象转为键值对数组
let arr = Object.entries(el.details)
// 新建一个属性数组
el.Array = []
for(let [i,j] of arr){
el.Array.push({key:i,value:j})
}
})
})
},
getDetail() {
companyDetail({dimensionName:'新增法院公告',sourceId:'0001c8e8-183f-48b5-a8ce-575b5c214b1a_65250c621707e177f7983cbf_'}).then(res => {
console.log(res)
this.detail=res.data;
})
},
checkFxjbBtn(val) {
this.fxjbType = [];
this.checkFx = true;
this.querySubmit()
},
checkFxjb1Btn(val){
if (val.length > 0) {
this.checkFx = false;
} else if (val.length == 0) {
this.checkFx = true;
this.fxjbType = [];
}
this.querySubmit()
},
handleDetail(){
this.dialogVisible=true;
},
// 时间格式化
formatDate(timeStr) {
let date = new Date(Number(timeStr));
let year = date.getFullYear();
let month = String(date.getMonth() + 1).padStart(2, 0);
let day = String(date.getDate()).padStart(2, 0);
return `${year}-${month}-${day}`;
},
async getPlaceholder() {
try {
await this.$nextTick();
const doms = document.querySelectorAll("[class*='select-adaptive-']");
if (doms?.length) {
doms.forEach(dom => {
const realStyles = window.getComputedStyle(dom);
const ipt = dom.querySelector("input");
const text = ipt.getAttribute("placeholder");
const textContainer = document.createElement("span");
textContainer.style.setProperty("visibility", "hidden");
textContainer.style.setProperty("display", "inline-block");
textContainer.style.setProperty("font-size", "14px");
const hasPadding = (parseInt(realStyles.paddingLeft) || parseInt(realStyles.paddingRight)) ? true : false;
hasPadding ? textContainer.style.setProperty("padding", realStyles.paddingRight) : null;
textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = text;
document.body.append(textContainer);
// 加上按钮宽度 以及按钮左外边距
let containerWidth = textContainer.offsetWidth + 30;
textContainer.remove();
dom.style.setProperty("width", `${containerWidth}px`);
});
}
} catch (error) {
}
},
iptAdaptive(uid, multiple = false, name) {
multiple ? this.multipleAdaptiveHandle(uid, name) : this.iptAdaptiveHandle(uid, name);
},
getUid() {
return v4();
},
// 多选处理
async multipleAdaptiveHandle(uid, name) {
try {
await this.$nextTick();
const dom = document.querySelector(`.select-adaptive-${uid}`);
const iptChild = dom.querySelector(".el-input__inner");
if (dom) {
const textContainer = document.createElement("span");
const textName = `text-${uid}`;
textContainer.classList.add(textName);
const selectChildren = dom.querySelectorAll(".el-tag");
if (selectChildren.length) {
let width = 0;
selectChildren.forEach(item => {
const text = item.textContent;
const itemInfo = window.getComputedStyle(item);
textContainer.style.setProperty("visibility", "hidden");
textContainer.style.setProperty("display", "inline-block");
textContainer.style.setProperty("font-size", "14px");
textContainer.style.setProperty("padding", itemInfo.padding);
textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = text;
document.body.append(textContainer);
width += textContainer.offsetWidth + parseInt(itemInfo.marginLeft) + parseInt(itemInfo.marginRight);
textContainer.remove();
});
dom.style.setProperty("width", `${width + 50}px`);
// this.handleSearch(name);
return;
}
textContainer.style.setProperty("visibility", "hidden");
textContainer.style.setProperty("display", "inline-block");
textContainer.style.setProperty("font-size", "14px");
textContainer.style.setProperty("padding", "0px 8px");
textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = iptChild.getAttribute("placeholder");
document.body.append(textContainer);
let containerWidth = textContainer.offsetWidth + 12 + 8;
// let containerWidth = 130;
textContainer.remove();
dom.style.setProperty("width", `${containerWidth}px`);
// this.handleSearch(name);
}
} catch (error) {
console.log(error);
}
},
// 单选处理
async iptAdaptiveHandle(uid, name) {
try {
await this.$nextTick();
const dom = document.querySelector(`.select-adaptive-${uid}`);
const realStyles = window.getComputedStyle(dom);
if (dom) {
const iptChild = dom.querySelector(".el-input__inner");
const textContainer = document.createElement("span");
const textName = `text-${uid}`;
textContainer.classList.add(textName);
textContainer.style.setProperty("visibility", "hidden");
textContainer.style.setProperty("display", "inline-block");
textContainer.style.setProperty("font-size", "14px");
const hasPadding = (parseInt(realStyles.paddingLeft) || parseInt(realStyles.paddingRight)) ? true : false;
hasPadding ? textContainer.style.setProperty("padding", "0px 8px") : null;
textContainer.style.setProperty("box-sizing", "border-box");
textContainer.textContent = iptChild.value ? iptChild.value : iptChild.getAttribute("placeholder");
document.body.append(textContainer);
let containerWidth = textContainer.offsetWidth + 50;
textContainer.remove();
dom.style.setProperty("width", `${containerWidth}px`);
}
// this.handleSearch(name);
} catch (error) {
}
},
}
}
</script>
<style lang="scss" scoped>
.MonitoringReportDetails{
.search{
background: #FFFFFF;
padding: 25px 16px;
border-radius: 4px;
.enterprise{
border-bottom: 1px solid #EEEEEE;
.name{
img{
width: 28px;
height: 28px;
float: left;
margin-right: 12px;
}
span{
font-weight: 700;
color: #232323;
font-size: 16px;
}
}
.label{
color: rgba(35,35,35,0.4);
font-size: 14px;
}
.val{
color: rgba(35,35,35,0.8);
margin-right: 26px;
font-size: 14px;
}
}
.search-item{
display: -webkit-box;
align-items: flex-start;
line-height: 20px;
margin-top: 8px;
}
.label{
margin-right: 12px;
font-size: 14px;
color: rgba(35,35,35,0.8);
}
.main-right {
width: calc(100% - 112px);
.select-popper {
text-align: center;
display: inline-block;
position: relative;
color: #333333;
font-size: 14px;
cursor: pointer;
margin: 0px 12px;
margin-bottom: 16px;
}
.select-popper .select-popper-img {
width: 24px;
height: 12px;
position: absolute;
top: -10px;
right: 2px;
}
.select-multiple {
position: absolute;
left: 0;
top: -6px;
opacity: 0;
line-height: 22px;
.el-input {
width: 100%;
line-height: 22px;
.el-input__inner {
width: 100%;
height: 22px !important;
}
}
.el-tag__close.el-icon-close {
display: none;
}
}
}
.checkbox{
display: flex;
align-items: flex-start;
padding-left: 12px;
position: relative;
.checkbox-content-qx{
margin-right: 24px;
}
.keyword_checkbox{
::v-deep .el-checkbox{
margin-right: 24px;
}
}
::v-deep .el-checkbox{
margin-right: 10px;
}
::v-deep .el-date-editor{
position: absolute;
left: 602px;
top: -7px
}
::v-deep .el-select{
.el-input{
.el-input__inner{
height: 32px;
line-height: 32px;
border-radius: 4px;
border: 0;
padding-left: 0px;
padding-right: 8px;
&::placeholder{
color: rgba(35,35,35,0.8) !important;
}
}
.el-input__suffix{
top:2px;
}
}
}
}
}
.content{
background: #FFFFFF;
border-radius: 4px;
margin-top: 16px;
padding: 16px;
.total{
color: rgba(35,35,35,0.8);
font-size: 12px;
padding-bottom: 16px;
display: flex;
align-items: center;
&:before {
content: "";
display: inline-block;
width: 2px;
height: 2px;
background: rgba(35,35,35,.4);
margin-right: 4px;
}
}
}
::v-deep .dialog-claim{
.el-dialog__header{
display: block;
padding:16px 20px;
border-bottom: 1px solid #EEEEEE;
font-size: 16px;
font-weight: 700;
color: #232323;
}
.el-dialog__body {
padding: 24px 20px;
}
}
}
</style>
......@@ -13,156 +13,198 @@
<div class="main3-box">
<p>
<label class="label">资源平台分类</label>
<span class="span-one">-</span>
<span></span>
<!--<span class="span-one">{{custmerInfo. || '&#45;&#45;'}}</span>-->
</p>
<p>
<label class="label">公司名称</label>
<span>555</span>
<span>{{custmerInfo.cusomerName || '--'}}</span>
<label class="label">注册资本(万元)</label>
<span>555</span>
<span>{{custmerInfo.registerCapital || '--'}}</span>
</p>
<p>
<label class="label">证件选择</label>
<span>555</span>
<span></span>
<label class="label">统一社会信用代码</label>
<span>555</span>
<span>{{custmerInfo.unifySocialCode || '--'}}</span>
</p>
<p>
<label class="label">工商注册号</label>
<span>555</span>
<span>{{custmerInfo.registerNo || '--'}}</span>
<label class="label">组织机构代码证号</label>
<span>555</span>
<span>{{custmerInfo.orgnizationCode || '--'}}</span>
</p>
<p>
<label class="label">税务登记号</label>
<span class="span-one">-</span>
<span>{{custmerInfo.businessLicense || '--'}}</span>
</p>
<p>
<label class="label">身份选择</label>
<span>555</span>
<span>{{custmerInfo.cardType || '--'}}</span>
<label class="label">法人身份证号/护照/其他</label>
<span>555</span>
<span>{{custmerInfo.idCard || '--'}}</span>
</p>
<p>
<label class="label">纳税人身份</label>
<span>555</span>
<span>{{custmerInfo.paytaxType || '--'}}</span>
<label class="label">纳税人税率</label>
<span>555</span>
<span>{{custmerInfo.taxRate || '--'}}</span>
</p>
<p>
<label class="label">享受优惠政策说明</label>
<span class="span-one" style="height: 64px">-</span>
<span class="span-one" style="height: 64px"></span>
</p>
</div>
<div class="main3-box">
<p>
<label class="label">法人代表</label>
<span>555</span>
<span>{{custmerInfo.representative || '--'}}</span>
<label class="label">公司联系人</label>
<span>555</span>
<span>{{custmerInfo.contactPerson || '--'}}</span>
</p>
<p>
<label class="label">公司联系人电话</label>
<span>555</span>
<span>{{custmerInfo.contactPhone || '--'}}</span>
<label class="label">主项资质</label>
<span>555</span>
<span></span>
</p>
<p>
<label class="label">公司性质</label>
<span>555</span>
<span></span>
<label class="label">资质等级</label>
<span>555</span>
<span>{{custmerInfo.credential || '--'}}</span>
</p>
<p>
<label class="label">施工承包范围</label>
<span>555</span>
<span>{{custmerInfo.constructJobScope || '--'}}</span>
<label class="label">专业类别</label>
<span>555</span>
<span>{{custmerInfo.groupSpecialty || '--'}}</span>
</p>
<p>
<label class="label">公司注册地所属区域</label>
<span>555</span>
<span>{{custmerInfo.registerRegion || '--'}}</span>
<label class="label">公司注册地所属省</label>
<span>555</span>
<span>{{custmerInfo.registerProvince || '--'}}</span>
</p>
<p>
<label class="label">公司注册地所属城市</label>
<span>555</span>
<span>{{custmerInfo.registerCity || '--'}}</span>
<label class="label">注册地址</label>
<span>555</span>
<span>{{custmerInfo.address || '--'}}</span>
</p>
<p>
<label class="label">开户行</label>
<span>555</span>
<span>{{custmerInfo.openBank || '--'}}</span>
<label class="label">银行账号</label>
<span>555</span>
<span>{{custmerInfo.bankAccount || '--'}}</span>
</p>
</div>
<div class="acc-title i">上传证书及其他信息</div>
<skeleton v-if="fbsisSkeleton"></skeleton>
<div class="table-item-jf table-item" style="margin-top: 16px" v-if="!fbsisSkeleton&&tableData.length>0">
<el-table :data="tableData" :header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}"
v-sticky-header.always="{offsetTop : '-16px',offsetBottom : '10px'}" class="table-item1 fixed-table" border highlight-current-row>
<el-table-column label="证书类型" :resizable="false">
<template slot-scope="scope">
<span>{{scope.row.legalPerson||'--'}}</span>
</template>
</el-table-column>
<el-table-column label="到期时间" width="120" :resizable="false">
<template slot-scope="scope">
<span>2020-12-30</span>
</template>
</el-table-column>
<el-table-column label="状态" width="180" :resizable="false">
<template slot-scope="scope">
<span>{{scope.row.legalPerson||'--'}}</span>
</template>
</el-table-column>
<el-table-column label="查看" :resizable="false">
<template slot-scope="scope">
<span class="wordprimary">{{scope.row.legalPerson||'--'}}</span>
</template>
</el-table-column>
<el-table-column label="操作" width="180" :resizable="false">
<template slot-scope="scope">
<span class="wordprimary">下载</span>
</template>
</el-table-column>
</el-table>
<div class="main3-box">
<p>
<label class="label tab">证书类型</label>
<label class="label tab">到期时间</label>
<label class="label tab">状态</label>
<label class="label tab">查看</label>
<label class="label tab">操作</label>
</p>
<p>
<span class="tab">营业执照</span>
<span class="tab">{{custmerInfo.expireDate1 || '--'}}</span>
<span class="tab">{{custmerInfo.status1}}</span>
<span class="tab blue"></span>
<span class="tab blue">下载</span>
</p>
<p class="bg">
<span class="tab">组织机构代码</span>
<span class="tab">{{custmerInfo.expireDate2 || '--'}}</span>
<span class="tab">{{custmerInfo.status2}}</span>
<span class="tab blue"></span>
<span class="tab blue">下载</span>
</p>
<p>
<span class="tab">税务登记证</span>
<span class="tab">{{custmerInfo.expireDate3 || '--'}}</span>
<span class="tab">{{custmerInfo.status3}}</span>
<span class="tab blue"></span>
<span class="tab blue">下载</span>
</p>
<p class="bg">
<span class="tab">资质证书</span>
<span class="tab">{{custmerInfo.expireDate4 || '--'}}</span>
<span class="tab">{{custmerInfo.status4}}</span>
<span class="tab blue"></span>
<span class="tab blue">下载</span>
</p>
<p>
<span class="tab">安全生产</span>
<span class="tab">{{custmerInfo.expireDate5 || '--'}}</span>
<span class="tab">{{custmerInfo.status5}}</span>
<span class="tab blue"></span>
<span class="tab blue">下载</span>
</p>
<p class="bg">
<span class="tab">增值税一般纳税人资格证明</span>
<span class="tab">--</span>
<span class="tab">--</span>
<span class="tab">--</span>
<span class="tab">--</span>
</p>
<p>
<span class="tab">业绩报告</span>
<span class="tab">--</span>
<span class="tab">--</span>
<span class="tab">--</span>
<span class="tab">--</span>
</p>
<p class="bg">
<span class="tab">考察报告</span>
<span class="tab">--</span>
<span class="tab">--</span>
<span class="tab">--</span>
<span class="tab">--</span>
</p>
<p>
<span class="tab">其他</span>
<span class="tab">--</span>
<span class="tab">--</span>
<span class="tab">--</span>
<span class="tab">--</span>
</p>
</div>
<div class="acc-title i">项目部意见</div>
<div class="main3-box">
<p>
<label class="label">准入情况</label>
<span class="span-one">-</span>
<span>{{custmerInfo.isagree || '--'}}</span>
</p>
<p>
<label class="label">经办人</label>
<span>555</span>
<span>{{custmerInfo.responsiblePerson || '--'}}</span>
<label class="label">准入时间</label>
<span>555</span>
<span>{{custmerInfo.approveDate1 || '--'}}</span>
</p>
<p>
<label class="label">商务经理</label>
<span>555</span>
<span>{{custmerInfo.businessManager || '--'}}</span>
<label class="label">准入时间</label>
<span>555</span>
<span>{{custmerInfo.approveDate3 || '--'}}</span>
</p>
<p>
<label class="label">项目经理</label>
<span>555</span>
<span>{{custmerInfo.projectManager || '--'}}</span>
<label class="label">准入时间</label>
<span>555</span>
<span>{{custmerInfo.approveDate4 || '--'}}</span>
</p>
</div>
<div class="acc-title i">公司意见</div>
<div class="main3-box">
<p>
<label class="label">公司意见</label>
<span>555</span>
<span>{{custmerInfo.purchasePrincipal || '--'}}</span>
<label class="label">准入时间</label>
<span>555</span>
<span>{{custmerInfo.approveDate2||'--'}}</span>
</p>
</div>
</el-tab-pane>
......@@ -324,10 +366,11 @@
</template>
<script>
import { encodeStr } from "@/assets/js/common.js";
import { encodeStr } from '@/assets/js/common.js'
import '@/assets/styles/public.scss'
import '@/assets/styles/supplierlist.scss'
import skeleton from '@/views/project/projectList/component/skeleton';
import skeleton from '@/views/project/projectList/component/skeleton'
import { custmerInfo } from '@/api/supplier/supplier'
export default {
name: 'access',
......@@ -344,9 +387,30 @@
pageNum:1,
// table列是否悬浮
tableColumnFixed: true,
custmerInfo:{},
}
},
created() {
custmerInfo(this.$route.query.customerKey).then(res=>{
console.log(res)
this.custmerInfo = res.data
let date = new Date().getTime()
let d1 = new Date(this.custmerInfo.expireDate1).getTime()
let d2 = new Date(this.custmerInfo.expireDate2).getTime()
let d3 = new Date(this.custmerInfo.expireDate3).getTime()
let d4 = new Date(this.custmerInfo.expireDate4).getTime()
let d5 = new Date(this.custmerInfo.expireDate5).getTime()
this.custmerInfo.status1 = '--'
this.custmerInfo.status2 = '--'
this.custmerInfo.status3 = '--'
this.custmerInfo.status4 = '--'
this.custmerInfo.status5 = '--'
if (d1) this.custmerInfo.status1 = d1 > date ? '有效' : '过期'
if (d2) this.custmerInfo.status2 = d2 > date ? '有效' : '过期'
if (d3) this.custmerInfo.status3 = d3 > date ? '有效' : '过期'
if (d4) this.custmerInfo.status4 = d4 > date ? '有效' : '过期'
if (d5) this.custmerInfo.status5 = d5>date?'有效':'过期'
})
},
methods:{
handleClick(){},
......
......@@ -9,60 +9,53 @@
<div class="content-supplier">
<el-form :model="formdata" label-width="82px" label-position="right" :inline="true" >
<el-row>
<el-form-item label="供应商名称">
<el-input v-model="formdata.user" placeholder="请输入分供方名称"></el-input>
</el-form-item>
<el-form-item label="注册地区">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in arealist" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
<el-form-item label="分供方名称">
<el-input v-model="formdata.customerName" placeholder="请输入分供方名称"></el-input>
</el-form-item>
<el-form-item label="注册城市">
<el-cascader
v-model="formdata.user"
:options="addressList" :collapse-tags="true"
v-model="formdata.areas"
:options="addressList" :collapse-tags="true" :show-all-levels="false" clearable
:props="provienceprops"></el-cascader>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="供应商状态">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.customerState" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in customstate" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="资质等级">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.credential" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in credential" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="专业类别">
<el-select v-model="formdata.user" placeholder="请选择">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
<el-cascader clearable
v-model="formdata.groupSpecialtys"
:options="groupSpecialty" :collapse-tags="true"
:props="groupprops"></el-cascader>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="评价等级">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.creditLevel" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in creditlevel" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="纳税人身份">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.paytaxType" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in paytaxtype" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="纳税人税率">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.taxRate" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in taxrate" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="准入时间">
<el-date-picker
v-model="formdata.time"
v-model="formdata.times"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="至"
......@@ -73,8 +66,8 @@
</el-row>
<el-divider></el-divider>
<el-form-item label=" ">
<el-button type="primary" size="small">查询</el-button>
<el-button size="small">重置</el-button>
<el-button type="primary" size="small" @click="handleCurrentChange(1)">查询</el-button>
<el-button size="small" @click="clears">重置</el-button>
</el-form-item>
</el-form>
</div>
......@@ -83,6 +76,11 @@
<div class="total-title">
<div class="totals">{{total}}</div>
</div>
<div class="table-item-jf table-item-jf1 empty-table" v-if="total == 0 && !isSkeleton">
<img class="item-jf-img" src="@/assets/images/kong.png" alt="">
<div class="item-jf-titel">暂无相关数据</div>
<div class="item-jf-text">抱歉,暂无数据,试试更换搜索条件吧</div>
</div>
<skeleton v-if="isSkeleton"></skeleton>
<div class="table-item-jf table-item" v-if="!isSkeleton&&tableData.length>0">
......@@ -93,18 +91,23 @@
<el-table-column type="index" label="序号" :fixed="tableColumnFixed" width="60" :resizable="false">
<template slot-scope="scope">
<span>{{(pageNum - 1) *pageSize + scope.$index + 1}}</span>
<span>{{(formdata.pageNum - 1) *formdata.pageSize + scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column label="供应商编号" :fixed="tableColumnFixed" width="120" :resizable="false">
<el-table-column label="二级市场编码" :fixed="tableColumnFixed" width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.secondaryCode||"--"}}
</template>
</el-table-column>
<el-table-column label="供应商编号" prop="customerCode" :fixed="tableColumnFixed" width="120" :resizable="false">
</el-table-column>
<el-table-column label="供应商名称" :fixed="tableColumnFixed" width="380" :resizable="false">
<template slot-scope="scope">
<div class="renling">
<div style="display:flex;align-items:center">
<router-link :to="`/enterprise/${encodeStr(scope.row.id)}`" tag="a"
class="wordprimary" v-html="scope.row.name"></router-link>
<router-link :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a"
class="wordprimary" v-html="scope.row.customerName"></router-link>
</div>
</div>
......@@ -114,87 +117,87 @@
<el-table-column label="推荐单位" min-width="280">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.recommendOrg||"--"}}
</template>
</el-table-column>
<el-table-column label="公司注册区域" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerRegion||"--"}}
</template>
</el-table-column>
<el-table-column label="公司注册省" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerProvince||"--"}}
</template>
</el-table-column>
<el-table-column label="公司注册城市" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerCity||"--"}}
</template>
</el-table-column>
<el-table-column label="专业类别" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.groupSpecialty||"--"}}
</template>
</el-table-column>
<el-table-column label="法人代表" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.representative||"--"}}
</template>
</el-table-column>
<el-table-column label="纳税人身份" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.paytaxType||"--"}}
</template>
</el-table-column>
<el-table-column label="纳税人税率" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.taxRate||"--"}}
</template>
</el-table-column>
<el-table-column label="施工承包范围" min-width="200" :resizable="false">
<el-table-column label="施工承包范围" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.constructJobScope||"--"}}
</template>
</el-table-column>
<el-table-column label="资质等级" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.credential||"--"}}
</template>
</el-table-column>
<el-table-column label="注册资本(万元)" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerCapital||"--"}}
</template>
</el-table-column>
<el-table-column label="公司联系人" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.contactPerson||"--"}}
</template>
</el-table-column>
<el-table-column label="联系人电话" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.contactPhone||"--"}}
</template>
</el-table-column>
<el-table-column label="准入时间" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.approveDate2||"--"}}
</template>
</el-table-column>
<el-table-column label="公司合作数量" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.enterpriseCooperationCount||"--"}}
</template>
</el-table-column>
<el-table-column label="合作项目数量" min-width="120" :resizable="false">
<template slot-scope="scope">
<span>{{scope.row.legalPerson||"--"}}</span>
<span>{{scope.row.projectCooperationCount||"--"}}</span>
</template>
</el-table-column>
<el-table-column label="分包商等级" min-width="120" :resizable="false">
<template slot-scope="scope">
<span class="wordprimary" @click="getFBS(scope.row)">{{scope.row.legalPerson||"--"}}</span>
<span class="wordprimary" @click="getFBS(scope.row)">{{scope.row.creditLevel||"--"}}</span>
</template>
</el-table-column>
<el-table-column label="链接" min-width="160" :resizable="false">
......@@ -205,14 +208,14 @@
</el-table-column>
<el-table-column label="资源平台分类" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
--
</template>
</el-table-column>
</el-table>
</div>
<div class="pagination clearfix" v-show="total>0">
<el-pagination background :page-size="pageSize" :current-page.sync="pageNum" @current-change="handleCurrentChange" layout="prev, pager, next"
<el-pagination background :page-size="formdata.pageSize" :current-page.sync="formdata.pageNum" @current-change="handleCurrentChange" layout="prev, pager, next"
:total="total">
</el-pagination>
</div>
......@@ -260,20 +263,19 @@
</template>
<script>
import { encodeStr } from "@/assets/js/common.js";
import "@/assets/styles/public.scss";
import "@/assets/styles/supplierlist.scss";
import skeleton from '@/views/project/projectList/component/skeleton';
import api from '@/api/enterpriseData/enterpriseData.js';
import dataRegion from '@/assets/json/provinceTree'
import { getDicts } from "@/api/system/dict/data";
import { encodeStr } from '@/assets/js/common.js'
import '@/assets/styles/public.scss'
import '@/assets/styles/supplierlist.scss'
import skeleton from '@/views/project/projectList/component/skeleton'
import { areaAll, bizDictData, custmerInfolist } from '@/api/supplier/supplier'
import { getDicts } from '@/api/system/dict/data'
import {queryConditionFiltering} from '@/utils/index'
export default {
name: 'laborSubcontracting',
components:{skeleton},
data(){
return{
encodeStr,
formdata:{},
addressList:[],
arealist:[],
creditlevel:[],
......@@ -281,215 +283,39 @@
credential:[],
paytaxtype:[],
taxrate:[],
groupSpecialty:[],
provienceprops:{
checkStrictly:true,
checkStrictly:false,
multiple:true,
label:'value',
},
groupprops:{
checkStrictly:false,
multiple:true,
value:'id',
},
options: [
{
value: 'zhinan',
label: '指南',
children: [{
value: 'shejiyuanze',
label: '设计原则',
children: [{
value: 'yizhi',
label: '一致'
}, {
value: 'fankui',
label: '反馈'
}, {
value: 'xiaolv',
label: '效率'
}, {
value: 'kekong',
label: '可控'
}]
}, {
value: 'daohang',
label: '导航',
children: [{
value: 'cexiangdaohang',
label: '侧向导航'
}, {
value: 'dingbudaohang',
label: '顶部导航'
}]
}]
}, {
value: 'zujian',
label: '组件',
children: [{
value: 'basic',
label: 'Basic',
children: [{
value: 'layout',
label: 'Layout 布局'
}, {
value: 'color',
label: 'Color 色彩'
}, {
value: 'typography',
label: 'Typography 字体'
}, {
value: 'icon',
label: 'Icon 图标'
}, {
value: 'button',
label: 'Button 按钮'
}]
}, {
value: 'form',
label: 'Form',
children: [{
value: 'radio',
label: 'Radio 单选框'
}, {
value: 'checkbox',
label: 'Checkbox 多选框'
}, {
value: 'input',
label: 'Input 输入框'
}, {
value: 'input-number',
label: 'InputNumber 计数器'
}, {
value: 'select',
label: 'Select 选择器'
}, {
value: 'cascader',
label: 'Cascader 级联选择器'
}, {
value: 'switch',
label: 'Switch 开关'
}, {
value: 'slider',
label: 'Slider 滑块'
}, {
value: 'time-picker',
label: 'TimePicker 时间选择器'
}, {
value: 'date-picker',
label: 'DatePicker 日期选择器'
}, {
value: 'datetime-picker',
label: 'DateTimePicker 日期时间选择器'
}, {
value: 'upload',
label: 'Upload 上传'
}, {
value: 'rate',
label: 'Rate 评分'
}, {
value: 'form',
label: 'Form 表单'
}]
}, {
value: 'data',
label: 'Data',
children: [{
value: 'table',
label: 'Table 表格'
}, {
value: 'tag',
label: 'Tag 标签'
}, {
value: 'progress',
label: 'Progress 进度条'
}, {
value: 'tree',
label: 'Tree 树形控件'
}, {
value: 'pagination',
label: 'Pagination 分页'
}, {
value: 'badge',
label: 'Badge 标记'
}]
}, {
value: 'notice',
label: 'Notice',
children: [{
value: 'alert',
label: 'Alert 警告'
}, {
value: 'loading',
label: 'Loading 加载'
}, {
value: 'message',
label: 'Message 消息提示'
}, {
value: 'message-box',
label: 'MessageBox 弹框'
}, {
value: 'notification',
label: 'Notification 通知'
}]
}, {
value: 'navigation',
label: 'Navigation',
children: [{
value: 'menu',
label: 'NavMenu 导航菜单'
}, {
value: 'tabs',
label: 'Tabs 标签页'
}, {
value: 'breadcrumb',
label: 'Breadcrumb 面包屑'
}, {
value: 'dropdown',
label: 'Dropdown 下拉菜单'
}, {
value: 'steps',
label: 'Steps 步骤条'
}]
}, {
value: 'others',
label: 'Others',
children: [{
value: 'dialog',
label: 'Dialog 对话框'
}, {
value: 'tooltip',
label: 'Tooltip 文字提示'
}, {
value: 'popover',
label: 'Popover 弹出框'
}, {
value: 'card',
label: 'Card 卡片'
}, {
value: 'carousel',
label: 'Carousel 走马灯'
}, {
value: 'collapse',
label: 'Collapse 折叠面板'
}]
}]
}, {
value: 'ziyuan',
label: '资源',
children: [{
value: 'axure',
label: 'Axure Components'
}, {
value: 'sketch',
label: 'Sketch Templates'
}, {
value: 'jiaohu',
label: '组件交互文档'
}]
}
],
tableData:[
{name:'测试',legalPerson:'AAAA'}
],
formdata:{
customerClass:'劳务分包',
pageNum:1,
pageSize:50,
times:[],
customerName:"",
areas:[],
customerState:[],
credential:[],
groupSpecialtys:[],
groupSpecialtyId:[],
creditLevel:[],
paytaxType:[],
taxRate:[],
registerProvince:[],
registerCity:[],
approveDate2Start:null,
approveDate2End:null,
},
tableData:[],
isSkeleton:false,
total:100,
pageSize:50,
pageNum:1,
total:0,
// table列是否悬浮
tableColumnFixed: true,
fbsvisib:false,
......@@ -498,13 +324,10 @@
},
created() {
this.init()
this.cusoomerInfolist()
},
methods:{
init(){
//地区
getDicts('arealist').then(res=>{
this.arealist = res.data
})
//评价等级
getDicts('credit_level').then(res=>{
this.creditlevel = res.data
......@@ -525,24 +348,81 @@
getDicts('credential').then(res=>{
this.credential = res.data
})
this.dataRegion()
// this.dataRegion()
//专业类别
bizDictData().then(res=>{
this.groupSpecialty = res.data
})
// 地区树
areaAll().then(res=>{
this.addressList = res.data
})
},
handleCurrentChange(){
clears(){
this.formdata = {
customerClass: '劳务分包',
pageNum: 1,
pageSize: 50,
times: [],
customerName: '',
areas: [],
customerState: [],
credential: [],
groupSpecialtys: [],
groupSpecialtyId: [],
creditLevel: [],
paytaxType: [],
taxRate: [],
registerProvince: [],
registerCity: [],
approveDate2Start: null,
approveDate2End: null
}
this.cusoomerInfolist()
},
//地区
async dataRegion() {
let addrs = JSON.parse(JSON.stringify(dataRegion))
addrs.forEach(item=>{
if (item.children) {
(item.children).forEach(i => {
if (i.children) {
delete i.children
cusoomerInfolist(){
this.isSkeleton = true
let param = this.formdata
if(param.times){
param.approveDate2Start = param.times[0]
param.approveDate2End = param.times[1]
}else{
param.approveDate2Start = ''
param.approveDate2End = ''
}
param.groupSpecialtyId = []
if(param.groupSpecialtys){
param.groupSpecialtys.forEach(item=>{
param.groupSpecialtyId.push(item[item.length-1])
})
}
if(param.areas){
let province = []
let city = []
param.areas.forEach(item=>{
if(item.length == 3){//到市
if(item[1].indexOf('重庆')>-1||item[1].indexOf('北京')>-1||item[1].indexOf('天津')>-1||item[1].indexOf('上海')>-1){
province.push(item[1])
}else{
city.push(item[2])
}
})
}
}
})
param.registerProvince = province
param.registerCity = city
}else{
param.registerProvince = []
param.registerCity = []
}
custmerInfolist(queryConditionFiltering(this.formdata)).then(res=>{
this.isSkeleton = false
this.tableData = res.rows
this.total = res.total
})
this.addressList = addrs;
},
handleCurrentChange(val){
this.formdata.pageNum = val
this.cusoomerInfolist()
},
setHeaderRow() {
return "owner-table-list-header";
......@@ -562,7 +442,7 @@
},
//点击准入
goAccess(row){
this.$tab.openPage('测试一下-准入情况', '/supplier/supplierlist/access')
this.$tab.openPage(row.customerName+'-准入情况', '/supplier/supplierlist/access',{customerKey:row.customerKey})
},
//点击考评
goAssessment(row){
......@@ -575,5 +455,3 @@
<style scoped lang="scss">
</style>
......@@ -10,62 +10,57 @@
<el-form :model="formdata" label-width="82px" label-position="right" :inline="true" >
<el-row>
<el-form-item label="供应商名称">
<el-input v-model="formdata.user" placeholder="请输入分供方名称"></el-input>
<el-input v-model="formdata.customerName" placeholder="请输入供应商名称"></el-input>
</el-form-item>
<el-form-item label="劳务队长">
<el-input v-model="formdata.user" placeholder="请输入劳务队长"></el-input>
<el-input v-model="formdata.leaderName" placeholder="请输入劳务队长"></el-input>
</el-form-item>
<el-form-item label="注册地区">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in arealist" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="注册城市">
<el-cascader
v-model="formdata.user"
:options="addressList" :collapse-tags="true"
v-model="formdata.areas"
:options="addressList" :collapse-tags="true" :show-all-levels="false" clearable
:props="provienceprops"></el-cascader>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="供应商状态">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.customerState" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in customstate" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="资质等级">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.credential" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in credential" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="专业类别">
<el-select v-model="formdata.user" placeholder="请选择">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
<el-cascader clearable
v-model="formdata.groupSpecialtys"
:options="groupSpecialty" :collapse-tags="true"
:props="groupprops"></el-cascader>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="评价等级">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.creditLevel" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in creditlevel" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="纳税人身份">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.paytaxType" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in paytaxtype" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="纳税人税率">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.taxRate" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in taxrate" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="准入时间">
<el-date-picker
v-model="formdata.time"
v-model="formdata.times"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="至"
......@@ -76,8 +71,8 @@
</el-row>
<el-divider></el-divider>
<el-form-item label=" ">
<el-button type="primary" size="small">查询</el-button>
<el-button size="small">重置</el-button>
<el-button type="primary" size="small" @click="handleCurrentChange(1)">查询</el-button>
<el-button size="small" @click="clears">重置</el-button>
</el-form-item>
</el-form>
</div>
......@@ -86,6 +81,11 @@
<div class="total-title">
<div class="totals">{{total}}</div>
</div>
<div class="table-item-jf table-item-jf1 empty-table" v-if="total == 0 && !isSkeleton">
<img class="item-jf-img" src="@/assets/images/kong.png" alt="">
<div class="item-jf-titel">暂无相关数据</div>
<div class="item-jf-text">抱歉,暂无数据,试试更换搜索条件吧</div>
</div>
<skeleton v-if="isSkeleton"></skeleton>
<div class="table-item-jf table-item" v-if="!isSkeleton&&tableData.length>0">
......@@ -96,20 +96,23 @@
<el-table-column type="index" label="序号" :fixed="tableColumnFixed" width="60" :resizable="false">
<template slot-scope="scope">
<span>{{(pageNum - 1) *pageSize + scope.$index + 1}}</span>
<span>{{(formdata.pageNum - 1) *formdata.pageSize + scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column label="二级市场编码" :fixed="tableColumnFixed" width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.secondaryCode||"--"}}
</template>
</el-table-column>
<el-table-column label="供应商编号" :fixed="tableColumnFixed" width="120" :resizable="false">
<el-table-column label="供应商编号" prop="customerCode" :fixed="tableColumnFixed" width="120" :resizable="false">
</el-table-column>
<el-table-column label="供应商名称" :fixed="tableColumnFixed" width="380" :resizable="false">
<template slot-scope="scope">
<div class="renling">
<div style="display:flex;align-items:center">
<router-link :to="`/enterprise/${encodeStr(scope.row.id)}`" tag="a"
class="wordprimary" v-html="scope.row.name"></router-link>
<router-link :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a"
class="wordprimary" v-html="scope.row.customerName"></router-link>
</div>
</div>
......@@ -117,121 +120,89 @@
</el-table-column>
<el-table-column label="营业执照号码" min-width="280">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
</template>
</el-table-column>
<el-table-column label="推荐单位" min-width="280">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.recommendOrg||"--"}}
</template>
</el-table-column>
<el-table-column label="公司注册区域" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerRegion||"--"}}
</template>
</el-table-column>
<el-table-column label="公司注册省" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerProvince||"--"}}
</template>
</el-table-column>
<el-table-column label="公司注册城市" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
</template>
</el-table-column>
<el-table-column label="法人代表" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
</template>
</el-table-column>
<el-table-column label="公司联系人" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerCity||"--"}}
</template>
</el-table-column>
<el-table-column label="联系人电话" min-width="120" :resizable="false">
<el-table-column label="专业类别" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.groupSpecialty||"--"}}
</template>
</el-table-column>
<el-table-column label="注册资本(万元)" min-width="120" :resizable="false">
<el-table-column label="法人代表" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.representative||"--"}}
</template>
</el-table-column>
<el-table-column label="纳税人身份" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.paytaxType||"--"}}
</template>
</el-table-column>
<el-table-column label="纳税人税率" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.taxRate||"--"}}
</template>
</el-table-column>
<el-table-column label="资质等级" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
</template>
</el-table-column>
<el-table-column label="主项资质" min-width="85" :resizable="false">
<template slot-scope="scope">
<!--没有值直接展示空-->
--
</template>
</el-table-column>
<el-table-column label="劳务资质" min-width="85" :resizable="false">
<el-table-column label="施工承包范围" min-width="120" :resizable="false">
<template slot-scope="scope">
<!--没有值直接展示空-->
--
</template>
</el-table-column>
<el-table-column label="施工队长" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.constructJobScope||"--"}}
</template>
</el-table-column>
<el-table-column label="联系电话" min-width="85" :resizable="false">
<el-table-column label="资质等级" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.credential||"--"}}
</template>
</el-table-column>
<el-table-column label="身份证号" min-width="85" :resizable="false">
<el-table-column label="注册资本(万元)" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerCapital||"--"}}
</template>
</el-table-column>
<el-table-column label="队伍规模" min-width="85" :resizable="false">
<el-table-column label="公司联系人" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.contactPerson||"--"}}
</template>
</el-table-column>
<el-table-column label="专业特长" min-width="85" :resizable="false">
<el-table-column label="联系人电话" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.contactPhone||"--"}}
</template>
</el-table-column>
<el-table-column label="准入时间" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.approveDate2||"--"}}
</template>
</el-table-column>
<el-table-column label="公司合作数量" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.enterpriseCooperationCount||"--"}}
</template>
</el-table-column>
<el-table-column label="合作项目数量" min-width="120" :resizable="false">
<template slot-scope="scope">
<span>{{scope.row.legalPerson||"--"}}</span>
<span>{{scope.row.projectCooperationCount||"--"}}</span>
</template>
</el-table-column>
<el-table-column label="分包商等级" min-width="120" :resizable="false">
<template slot-scope="scope">
<span class="wordprimary" @click="getFBS(scope.row)">{{scope.row.legalPerson||"--"}}</span>
<span class="wordprimary" @click="getFBS(scope.row)">{{scope.row.creditLevel||"--"}}</span>
</template>
</el-table-column>
<el-table-column label="链接" min-width="160" :resizable="false">
......@@ -242,14 +213,14 @@
</el-table-column>
<el-table-column label="资源平台分类" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
--
</template>
</el-table-column>
</el-table>
</div>
<div class="pagination clearfix" v-show="total>0">
<el-pagination background :page-size="pageSize" :current-page.sync="pageNum" @current-change="handleCurrentChange" layout="prev, pager, next"
<el-pagination background :page-size="formdata.pageSize" :current-page.sync="formdata.pageNum" @current-change="handleCurrentChange" layout="prev, pager, next"
:total="total">
</el-pagination>
</div>
......@@ -297,13 +268,13 @@
</template>
<script>
import { encodeStr } from "@/assets/js/common.js";
import "@/assets/styles/public.scss";
import "@/assets/styles/supplierlist.scss";
import skeleton from '@/views/project/projectList/component/skeleton';
import api from '@/api/enterpriseData/enterpriseData.js';
import dataRegion from '@/assets/json/provinceTree'
import { getDicts } from "@/api/system/dict/data";
import { encodeStr } from '@/assets/js/common.js'
import '@/assets/styles/public.scss'
import '@/assets/styles/supplierlist.scss'
import skeleton from '@/views/project/projectList/component/skeleton'
import { areaAll, bizDictData, custmerInfolist } from '@/api/supplier/supplier'
import { getDicts } from '@/api/system/dict/data'
import {queryConditionFiltering} from '@/utils/index'
export default {
name: 'laborSubcontractingTeam',
components:{skeleton},
......@@ -317,216 +288,40 @@
credential:[],
paytaxtype:[],
taxrate:[],
groupSpecialty:[],
provienceprops:{
checkStrictly:true,
checkStrictly:false,
multiple:true,
label:'value',
},
groupprops:{
checkStrictly:false,
multiple:true,
value:'id',
},
formdata:{},
options: [
{
value: 'zhinan',
label: '指南',
children: [{
value: 'shejiyuanze',
label: '设计原则',
children: [{
value: 'yizhi',
label: '一致'
}, {
value: 'fankui',
label: '反馈'
}, {
value: 'xiaolv',
label: '效率'
}, {
value: 'kekong',
label: '可控'
}]
}, {
value: 'daohang',
label: '导航',
children: [{
value: 'cexiangdaohang',
label: '侧向导航'
}, {
value: 'dingbudaohang',
label: '顶部导航'
}]
}]
}, {
value: 'zujian',
label: '组件',
children: [{
value: 'basic',
label: 'Basic',
children: [{
value: 'layout',
label: 'Layout 布局'
}, {
value: 'color',
label: 'Color 色彩'
}, {
value: 'typography',
label: 'Typography 字体'
}, {
value: 'icon',
label: 'Icon 图标'
}, {
value: 'button',
label: 'Button 按钮'
}]
}, {
value: 'form',
label: 'Form',
children: [{
value: 'radio',
label: 'Radio 单选框'
}, {
value: 'checkbox',
label: 'Checkbox 多选框'
}, {
value: 'input',
label: 'Input 输入框'
}, {
value: 'input-number',
label: 'InputNumber 计数器'
}, {
value: 'select',
label: 'Select 选择器'
}, {
value: 'cascader',
label: 'Cascader 级联选择器'
}, {
value: 'switch',
label: 'Switch 开关'
}, {
value: 'slider',
label: 'Slider 滑块'
}, {
value: 'time-picker',
label: 'TimePicker 时间选择器'
}, {
value: 'date-picker',
label: 'DatePicker 日期选择器'
}, {
value: 'datetime-picker',
label: 'DateTimePicker 日期时间选择器'
}, {
value: 'upload',
label: 'Upload 上传'
}, {
value: 'rate',
label: 'Rate 评分'
}, {
value: 'form',
label: 'Form 表单'
}]
}, {
value: 'data',
label: 'Data',
children: [{
value: 'table',
label: 'Table 表格'
}, {
value: 'tag',
label: 'Tag 标签'
}, {
value: 'progress',
label: 'Progress 进度条'
}, {
value: 'tree',
label: 'Tree 树形控件'
}, {
value: 'pagination',
label: 'Pagination 分页'
}, {
value: 'badge',
label: 'Badge 标记'
}]
}, {
value: 'notice',
label: 'Notice',
children: [{
value: 'alert',
label: 'Alert 警告'
}, {
value: 'loading',
label: 'Loading 加载'
}, {
value: 'message',
label: 'Message 消息提示'
}, {
value: 'message-box',
label: 'MessageBox 弹框'
}, {
value: 'notification',
label: 'Notification 通知'
}]
}, {
value: 'navigation',
label: 'Navigation',
children: [{
value: 'menu',
label: 'NavMenu 导航菜单'
}, {
value: 'tabs',
label: 'Tabs 标签页'
}, {
value: 'breadcrumb',
label: 'Breadcrumb 面包屑'
}, {
value: 'dropdown',
label: 'Dropdown 下拉菜单'
}, {
value: 'steps',
label: 'Steps 步骤条'
}]
}, {
value: 'others',
label: 'Others',
children: [{
value: 'dialog',
label: 'Dialog 对话框'
}, {
value: 'tooltip',
label: 'Tooltip 文字提示'
}, {
value: 'popover',
label: 'Popover 弹出框'
}, {
value: 'card',
label: 'Card 卡片'
}, {
value: 'carousel',
label: 'Carousel 走马灯'
}, {
value: 'collapse',
label: 'Collapse 折叠面板'
}]
}]
}, {
value: 'ziyuan',
label: '资源',
children: [{
value: 'axure',
label: 'Axure Components'
}, {
value: 'sketch',
label: 'Sketch Templates'
}, {
value: 'jiaohu',
label: '组件交互文档'
}]
}
],
tableData:[
{name:'测试',legalPerson:'AAAA'}
],
formdata:{
customerClass:'劳务分包队伍',
pageNum:1,
pageSize:50,
times:[],
customerName:"",
leaderName:"",
areas:[],
customerState:[],
credential:[],
groupSpecialtys:[],
groupSpecialtyId:[],
creditLevel:[],
paytaxType:[],
taxRate:[],
registerProvince:[],
registerCity:[],
approveDate2Start:null,
approveDate2End:null,
},
tableData:[],
isSkeleton:false,
total:100,
pageSize:50,
pageNum:1,
total:0,
// table列是否悬浮
tableColumnFixed: true,
fbsvisib:false,
......@@ -535,13 +330,10 @@
},
created() {
this.init()
this.cusoomerInfolist()
},
methods:{
init(){
//地区
getDicts('arealist').then(res=>{
this.arealist = res.data
})
//评价等级
getDicts('credit_level').then(res=>{
this.creditlevel = res.data
......@@ -562,24 +354,82 @@
getDicts('credential').then(res=>{
this.credential = res.data
})
this.dataRegion()
// this.dataRegion()
//专业类别
bizDictData().then(res=>{
this.groupSpecialty = res.data
})
// 地区树
areaAll().then(res=>{
this.addressList = res.data
})
},
//地区
async dataRegion() {
let addrs = JSON.parse(JSON.stringify(dataRegion))
addrs.forEach(item=>{
if (item.children) {
(item.children).forEach(i => {
if (i.children) {
delete i.children
clears(){
this.formdata = {
customerClass: '劳务分包队伍',
pageNum: 1,
pageSize: 50,
times: [],
customerName: '',
leaderName: '',
areas: [],
customerState: [],
credential: [],
groupSpecialtys: [],
groupSpecialtyId: [],
creditLevel: [],
paytaxType: [],
taxRate: [],
registerProvince: [],
registerCity: [],
approveDate2Start: null,
approveDate2End: null
}
this.cusoomerInfolist()
},
cusoomerInfolist(){
this.isSkeleton = true
let param = this.formdata
if(param.times){
param.approveDate2Start = param.times[0]
param.approveDate2End = param.times[1]
}else{
param.approveDate2Start = ''
param.approveDate2End = ''
}
param.groupSpecialtyId = []
if(param.groupSpecialtys){
param.groupSpecialtys.forEach(item=>{
param.groupSpecialtyId.push(item[item.length-1])
})
}
if(param.areas){
let province = []
let city = []
param.areas.forEach(item=>{
if(item.length == 3){//到市
if(item[1].indexOf('重庆')>-1||item[1].indexOf('北京')>-1||item[1].indexOf('天津')>-1||item[1].indexOf('上海')>-1){
province.push(item[1])
}else{
city.push(item[2])
}
})
}
}
})
param.registerProvince = province
param.registerCity = city
}else{
param.registerProvince = []
param.registerCity = []
}
custmerInfolist(queryConditionFiltering(this.formdata)).then(res=>{
this.isSkeleton = false
this.tableData = res.rows
this.total = res.total
})
this.addressList = addrs;
},
handleCurrentChange(){
handleCurrentChange(val){
this.formdata.pageNum = val
this.cusoomerInfolist()
},
setHeaderRow() {
return "owner-table-list-header";
......@@ -599,7 +449,7 @@
},
//点击准入
goAccess(row){
this.$tab.openPage('测试一下-准入情况', '/supplier/supplierlist/access')
this.$tab.openPage(row.customerName+'-准入情况', '/supplier/supplierlist/access',{customerKey:row.customerKey})
},
//点击考评
goAssessment(row){
......@@ -612,5 +462,3 @@
<style scoped lang="scss">
</style>
......@@ -10,34 +10,42 @@
<el-form :model="formdata" label-width="82px" label-position="right" :inline="true" >
<el-row>
<el-form-item label="分供方名称">
<el-input v-model="formdata.user" placeholder="请输入分供方名称" clearable></el-input>
</el-form-item>
<el-form-item label="注册地区">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in arealist" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
<el-input v-model="formdata.customerName" placeholder="请输入分供方名称" clearable></el-input>
</el-form-item>
<el-form-item label="注册城市">
<el-cascader
v-model="formdata.user"
v-model="formdata.areas"
:options="addressList" :collapse-tags="true" :show-all-levels="false" clearable
:props="provienceprops"></el-cascader>
</el-form-item>
<el-form-item label="供应商类别">
<el-select v-model="formdata.customerClass" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in suppliertype" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="供应商状态">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.customerState" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in customstate" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="评价等级">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.creditLevel" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in creditlevel" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="资质等级">
<el-select v-model="formdata.credential" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in credential" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-divider></el-divider>
<el-row>
<el-form-item label="准入时间">
<el-date-picker
v-model="formdata.time"
v-model="formdata.times"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="至"
......@@ -45,24 +53,16 @@
end-placeholder="年/月/日">
</el-date-picker>
</el-form-item>
</el-row>
<el-divider></el-divider>
<el-row>
<el-form-item label="纳税人身份">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in paytaxtype" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="纳税人税率">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in taxrate" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
<el-form-item label="涉诉状态">
<!--<el-select multiple placeholder="请选择" :collapse-tags="true" clearable>-->
<!--<el-option v-for="(item,index) in litigationstatus" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>-->
<!--</el-select>-->
</el-form-item>
</el-row>
<el-divider></el-divider>
<el-form-item label=" ">
<el-button type="primary" size="small">查询</el-button>
<el-button size="small">重置</el-button>
<el-button type="primary" size="small" @click="getSearch">查询</el-button>
<el-button size="small" @click="clears">重置</el-button>
</el-form-item>
</el-form>
</div>
......@@ -75,14 +75,14 @@
<span class="excel" @click="$message({message: '功能正在开发中',type: 'warning'})">导出EXCEL</span>
</p>
</div>
<div class="table-item-jf table-item-jf1 empty-table" v-if="!tableData.length && !isSkeleton">
<div class="table-item-jf table-item-jf1 empty-table" v-if="total == 0 && !isSkeleton">
<img class="item-jf-img" src="@/assets/images/kong.png" alt="">
<div class="item-jf-titel">暂无相关数据</div>
<div class="item-jf-text">抱歉,暂无数据,试试更换搜索条件吧</div>
</div>
<skeleton v-if="isSkeleton"></skeleton>
<div class="table-item-jf table-item" v-if="!isSkeleton&&tableData.length>0">
<div class="table-item-jf table-item" v-if="!isSkeleton&&total>0">
<el-table :data="tableData" :header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}"
v-sticky-header.always="{offsetTop : '-16px',offsetBottom : '10px'}" class="table-item1 fixed-table" border highlight-current-row
:header-row-class-name="setHeaderRow" :cell-class-name="setCellClass" :row-class-name="setRowClass" :header-cell-class-name="setCellClass"
......@@ -90,18 +90,18 @@
<el-table-column type="index" label="序号" :fixed="tableColumnFixed" width="60" :resizable="false">
<template slot-scope="scope">
<span>{{(pageNum - 1) *pageSize + scope.$index + 1}}</span>
<span>{{(formdata.pageNum - 1) *formdata.pageSize + scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column label="供应商编号" :fixed="tableColumnFixed" width="120" :resizable="false">
<el-table-column label="供应商编号" prop="customerCode" :fixed="tableColumnFixed" width="120" :resizable="false">
</el-table-column>
<el-table-column label="供应商名称" :fixed="tableColumnFixed" width="380" :resizable="false">
<template slot-scope="scope">
<div class="renling">
<div style="display:flex;align-items:center">
<router-link :to="`/enterprise/${encodeStr(scope.row.id)}`" tag="a"
class="wordprimary" v-html="scope.row.name"></router-link>
<router-link :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a"
class="wordprimary" v-html="scope.row.customerName"></router-link>
</div>
</div>
......@@ -111,67 +111,65 @@
<el-table-column label="推荐单位" min-width="280">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.recommendOrg||"--"}}
</template>
</el-table-column>
<el-table-column label="公司注册区域" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerRegion||"--"}}
</template>
</el-table-column>
<el-table-column label="公司注册省" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerProvince||"--"}}
</template>
</el-table-column>
<el-table-column label="公司注册城市" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerCity||"--"}}
</template>
</el-table-column>
<el-table-column label="供应商类别" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.customerClass||"--"}}
</template>
</el-table-column>
<el-table-column label="专业类别" min-width="85" :resizable="false">
<el-table-column label="专业类别" min-width="185" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.groupSpecialty||"--"}}
</template>
</el-table-column>
<el-table-column label="纳税人身份" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.paytaxType||"--"}}
</template>
</el-table-column>
<el-table-column label="纳税人税率" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.taxRate||"--"}}
</template>
</el-table-column>
<el-table-column label="状态" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.customerState||"--"}}
</template>
</el-table-column>
<el-table-column label="限用/禁用状态" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
</template>
<template slot-scope="scope">--</template>
</el-table-column>
<el-table-column label="劳务队长" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.leaderName||"--"}}
</template>
</el-table-column>
<el-table-column label="队长联系电话" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.laborCaptainPhone||"--"}}
</template>
</el-table-column>
<el-table-column label="队长身份证" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.laborCaptainIdcard||"--"}}
</template>
</el-table-column>
<el-table-column label="队伍规模" min-width="120" :resizable="false">
......@@ -181,27 +179,27 @@
</el-table-column>
<el-table-column label="专业特长" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.serviceTeamSpeciality||"--"}}
</template>
</el-table-column>
<el-table-column label="施工承包范围" min-width="200" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.constructJobScope||"--"}}
</template>
</el-table-column>
<el-table-column label="资质等级" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.credential||"--"}}
</template>
</el-table-column>
<el-table-column label="注册资本(万元)" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerCapital||"--"}}
</template>
</el-table-column>
<el-table-column label="公司联系人" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.contactPerson||"--"}}
</template>
</el-table-column>
<el-table-column label="联系人电话" min-width="120" :resizable="false">
......@@ -211,22 +209,22 @@
</el-table-column>
<el-table-column label="准入时间" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.contactPhone||"--"}}
</template>
</el-table-column>
<el-table-column label="公司合作数量" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.enterpriseCooperationCount||"--"}}
</template>
</el-table-column>
<el-table-column label="合作项目数量" min-width="120" :resizable="false">
<template slot-scope="scope">
<span class="wordprimary">{{scope.row.legalPerson||"--"}}</span>
<span class="projectCooperationCount">{{scope.row.legalPerson||"--"}}</span>
</template>
</el-table-column>
<el-table-column label="分包商等级" min-width="120" :resizable="false">
<template slot-scope="scope">
<span class="wordprimary" @click="getFBS(scope.row)">{{scope.row.legalPerson||"--"}}</span>
<span class="creditLevel" @click="getFBS(scope.row)">{{scope.row.creditLevel||"--"}}</span>
</template>
</el-table-column>
<el-table-column label="链接" min-width="160" :resizable="false">
......@@ -237,15 +235,13 @@
</template>
</el-table-column>
<el-table-column label="资源平台分类" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
</template>
<template slot-scope="scope">--</template>
</el-table-column>
</el-table>
</div>
<div class="pagination clearfix" v-show="total>0">
<el-pagination background :page-size="pageSize" :current-page.sync="pageNum" @current-change="handleCurrentChange" layout="prev, pager, next"
<el-pagination background :page-size="formdata.pageSize" :current-page.sync="formdata.pageNum" @current-change="handleCurrentChange" layout="prev, pager, next"
:total="total">
</el-pagination>
</div>
......@@ -297,8 +293,7 @@
import "@/assets/styles/public.scss";
import "@/assets/styles/supplierlist.scss";
import skeleton from '@/views/project/projectList/component/skeleton';
import api from '@/api/enterpriseData/enterpriseData.js';
import dataRegion from '@/assets/json/provinceTree'
import {customerAll,areaAll} from '@/api/supplier/supplier';
import { getDicts } from "@/api/system/dict/data";
export default {
name: 'ledger',
......@@ -307,242 +302,34 @@
return{
encodeStr,
addressList:[],
arealist:[],
creditlevel:[],
customstate:[],
paytaxtype:[],
taxrate:[],
credential:[],
litigationstatus:[],
suppliertype:[],
provienceprops:{
checkStrictly:true,
checkStrictly:false,
multiple:true,
value:'id',
label:'value',
},
formdata:{},
options: [
{
value: 'zhinan',
label: '指南',
children: [{
value: 'shejiyuanze',
label: '设计原则',
children: [{
value: 'yizhi',
label: '一致'
}, {
value: 'fankui',
label: '反馈'
}, {
value: 'xiaolv',
label: '效率'
}, {
value: 'kekong',
label: '可控'
}]
}, {
value: 'daohang',
label: '导航',
children: [{
value: 'cexiangdaohang',
label: '侧向导航'
}, {
value: 'dingbudaohang',
label: '顶部导航'
}]
}]
}, {
value: 'zujian',
label: '组件',
children: [{
value: 'basic',
label: 'Basic',
children: [{
value: 'layout',
label: 'Layout 布局'
}, {
value: 'color',
label: 'Color 色彩'
}, {
value: 'typography',
label: 'Typography 字体'
}, {
value: 'icon',
label: 'Icon 图标'
}, {
value: 'button',
label: 'Button 按钮'
}]
}, {
value: 'form',
label: 'Form',
children: [{
value: 'radio',
label: 'Radio 单选框'
}, {
value: 'checkbox',
label: 'Checkbox 多选框'
}, {
value: 'input',
label: 'Input 输入框'
}, {
value: 'input-number',
label: 'InputNumber 计数器'
}, {
value: 'select',
label: 'Select 选择器'
}, {
value: 'cascader',
label: 'Cascader 级联选择器'
}, {
value: 'switch',
label: 'Switch 开关'
}, {
value: 'slider',
label: 'Slider 滑块'
}, {
value: 'time-picker',
label: 'TimePicker 时间选择器'
}, {
value: 'date-picker',
label: 'DatePicker 日期选择器'
}, {
value: 'datetime-picker',
label: 'DateTimePicker 日期时间选择器'
}, {
value: 'upload',
label: 'Upload 上传'
}, {
value: 'rate',
label: 'Rate 评分'
}, {
value: 'form',
label: 'Form 表单'
}]
}, {
value: 'data',
label: 'Data',
children: [{
value: 'table',
label: 'Table 表格'
}, {
value: 'tag',
label: 'Tag 标签'
}, {
value: 'progress',
label: 'Progress 进度条'
}, {
value: 'tree',
label: 'Tree 树形控件'
}, {
value: 'pagination',
label: 'Pagination 分页'
}, {
value: 'badge',
label: 'Badge 标记'
}]
}, {
value: 'notice',
label: 'Notice',
children: [{
value: 'alert',
label: 'Alert 警告'
}, {
value: 'loading',
label: 'Loading 加载'
}, {
value: 'message',
label: 'Message 消息提示'
}, {
value: 'message-box',
label: 'MessageBox 弹框'
}, {
value: 'notification',
label: 'Notification 通知'
}]
}, {
value: 'navigation',
label: 'Navigation',
children: [{
value: 'menu',
label: 'NavMenu 导航菜单'
}, {
value: 'tabs',
label: 'Tabs 标签页'
}, {
value: 'breadcrumb',
label: 'Breadcrumb 面包屑'
}, {
value: 'dropdown',
label: 'Dropdown 下拉菜单'
}, {
value: 'steps',
label: 'Steps 步骤条'
}]
}, {
value: 'others',
label: 'Others',
children: [{
value: 'dialog',
label: 'Dialog 对话框'
}, {
value: 'tooltip',
label: 'Tooltip 文字提示'
}, {
value: 'popover',
label: 'Popover 弹出框'
}, {
value: 'card',
label: 'Card 卡片'
}, {
value: 'carousel',
label: 'Carousel 走马灯'
}, {
value: 'collapse',
label: 'Collapse 折叠面板'
}]
}]
}, {
value: 'ziyuan',
label: '资源',
children: [{
value: 'axure',
label: 'Axure Components'
}, {
value: 'sketch',
label: 'Sketch Templates'
}, {
value: 'jiaohu',
label: '组件交互文档'
}]
}
],
tableData:[
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
{name:'测试',legalPerson:'AAAA'},
],
formdata:{
customerName: '',
customerClass:[],
areas:[],
province:[],
city:[],
customerState:[],
creditLevel:[],
credential:[],
approveDateBegion:null,
approveDateEnd:null,
times:[],
pageSize:50,
pageNum:1,
},
tableData:[],
isSkeleton:false,
total:100,
pageSize:50,
pageNum:1,
total:0,
// table列是否悬浮
tableColumnFixed: true,
fbsvisib:false,
......@@ -551,47 +338,94 @@
},
created() {
this.init()
this.customerAll()
},
methods:{
init(){
//地区
getDicts('arealist').then(res=>{
this.arealist = res.data
areaAll().then(res=>{
this.addressList = res.data
})
//评价等级
getDicts('credit_level').then(res=>{
this.creditlevel = res.data
})
//资质等级
getDicts('credential').then(res=>{
this.credential = res.data
})
//供应商类别
getDicts('suppliertype').then(res=>{
this.suppliertype = res.data
})
//供应商状态
getDicts('custom_state').then(res=>{
this.customstate = res.data
})
//纳税人身份
getDicts('paytaxtype').then(res=>{
this.paytaxtype = res.data
})
//纳税人税率
getDicts('taxrate').then(res=>{
this.taxrate = res.data
//涉诉状态
getDicts('litigation_status').then(res=>{
this.litigationstatus = res.data
})
this.dataRegion()
},
//地区
async dataRegion() {
let addrs = JSON.parse(JSON.stringify(dataRegion))
addrs.forEach(item=>{
if (item.children) {
(item.children).forEach(i => {
if (i.children) {
delete i.children
getSearch(){
this.formdata.pageNum = 1
this.customerAll()
},
clears(){
this.formdata={
customerName: '',
customerClass:[],
areas:[],
province:[],
city:[],
customerState:[],
creditLevel:[],
credential:[],
approveDateBegion:null,
approveDateEnd:null,
times:[],
pageSize:50,
pageNum:1,
}
this.customerAll()
},
customerAll(){
this.isSkeleton = true
let param = this.formdata
if(param.times){
param.approveDateBegion = param.times[0]
param.approveDateEnd = param.times[1]
}else{
param.approveDateBegion = ''
param.approveDateEnd = ''
}
if(param.areas){
let province = []
let city = []
param.areas.forEach(item=>{
if(item.length == 3){//到市
if(item[1].indexOf('重庆')>-1||item[1].indexOf('北京')>-1||item[1].indexOf('天津')>-1||item[1].indexOf('上海')>-1){
province.push(item[1])
}else{
city.push(item[2])
}
})
}
}
})
param.province = province
param.city = city
}else{
param.province = []
param.city = []
}
customerAll(JSON.stringify(param)).then(res=>{
this.tableData = res.rows
this.total = res.total
this.isSkeleton = false
})
this.addressList = addrs;
},
handleCurrentChange(){
handleCurrentChange(val){
this.formdata.pageNum = val
this.customerAll()
},
setHeaderRow() {
return "owner-table-list-header";
......@@ -611,7 +445,7 @@
},
//点击准入
goAccess(row){
this.$tab.openPage('测试一下-准入情况', '/supplier/supplierlist/access')
this.$tab.openPage(row.customerName+'-准入情况', '/supplier/supplierlist/access',{customerKey:row.customerKey})
},
//点击考评
goAssessment(row){
......
......@@ -10,59 +10,52 @@
<el-form :model="formdata" label-width="82px" label-position="right" :inline="true" >
<el-row>
<el-form-item label="分供方名称">
<el-input v-model="formdata.user" placeholder="请输入分供方名称"></el-input>
</el-form-item>
<el-form-item label="注册地区">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in arealist" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
<el-input v-model="formdata.customerName" placeholder="请输入分供方名称"></el-input>
</el-form-item>
<el-form-item label="注册城市">
<el-cascader
v-model="formdata.user"
:options="addressList" :collapse-tags="true"
v-model="formdata.areas"
:options="addressList" :collapse-tags="true" :show-all-levels="false" clearable
:props="provienceprops"></el-cascader>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="供应商状态">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.customerState" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in customstate" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="资质等级">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.credential" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in credential" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="专业类别">
<el-select v-model="formdata.user" placeholder="请选择">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
<el-cascader clearable
v-model="formdata.groupSpecialtys"
:options="groupSpecialty" :collapse-tags="true"
:props="groupprops"></el-cascader>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="评价等级">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.creditLevel" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in creditlevel" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="纳税人身份">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.paytaxType" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in paytaxtype" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="纳税人税率">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.taxRate" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in taxrate" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="准入时间">
<el-date-picker
v-model="formdata.time"
v-model="formdata.times"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="至"
......@@ -73,8 +66,8 @@
</el-row>
<el-divider></el-divider>
<el-form-item label=" ">
<el-button type="primary" size="small">查询</el-button>
<el-button size="small">重置</el-button>
<el-button type="primary" size="small" @click="handleCurrentChange(1)">查询</el-button>
<el-button size="small" @click="clears">重置</el-button>
</el-form-item>
</el-form>
</div>
......@@ -83,6 +76,11 @@
<div class="total-title">
<div class="totals">{{total}}</div>
</div>
<div class="table-item-jf table-item-jf1 empty-table" v-if="total == 0 && !isSkeleton">
<img class="item-jf-img" src="@/assets/images/kong.png" alt="">
<div class="item-jf-titel">暂无相关数据</div>
<div class="item-jf-text">抱歉,暂无数据,试试更换搜索条件吧</div>
</div>
<skeleton v-if="isSkeleton"></skeleton>
<div class="table-item-jf table-item" v-if="!isSkeleton&&tableData.length>0">
......@@ -93,18 +91,18 @@
<el-table-column type="index" label="序号" :fixed="tableColumnFixed" width="60" :resizable="false">
<template slot-scope="scope">
<span>{{(pageNum - 1) *pageSize + scope.$index + 1}}</span>
<span>{{(formdata.pageNum - 1) *formdata.pageSize + scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column label="供应商编号" :fixed="tableColumnFixed" width="120" :resizable="false">
<el-table-column label="供应商编号" prop="customerCode" :fixed="tableColumnFixed" width="120" :resizable="false">
</el-table-column>
<el-table-column label="供应商名称" :fixed="tableColumnFixed" width="380" :resizable="false">
<template slot-scope="scope">
<div class="renling">
<div style="display:flex;align-items:center">
<router-link :to="`/enterprise/${encodeStr(scope.row.id)}`" tag="a"
class="wordprimary" v-html="scope.row.name"></router-link>
<router-link :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a"
class="wordprimary" v-html="scope.row.customerName"></router-link>
</div>
</div>
......@@ -114,87 +112,87 @@
<el-table-column label="推荐单位" min-width="280">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.recommendOrg||"--"}}
</template>
</el-table-column>
<el-table-column label="公司注册区域" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerRegion||"--"}}
</template>
</el-table-column>
<el-table-column label="公司注册省" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerProvince||"--"}}
</template>
</el-table-column>
<el-table-column label="公司注册城市" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerCity||"--"}}
</template>
</el-table-column>
<el-table-column label="专业类别" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.groupSpecialty||"--"}}
</template>
</el-table-column>
<el-table-column label="法人代表" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.representative||"--"}}
</template>
</el-table-column>
<el-table-column label="纳税人身份" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.paytaxType||"--"}}
</template>
</el-table-column>
<el-table-column label="纳税人税率" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.taxRate||"--"}}
</template>
</el-table-column>
<el-table-column label="施工承包范围" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.constructJobScope||"--"}}
</template>
</el-table-column>
<el-table-column label="资质等级" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.credential||"--"}}
</template>
</el-table-column>
<el-table-column label="注册资本(万元)" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerCapital||"--"}}
</template>
</el-table-column>
<el-table-column label="公司联系人" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.contactPerson||"--"}}
</template>
</el-table-column>
<el-table-column label="联系人电话" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.contactPhone||"--"}}
</template>
</el-table-column>
<el-table-column label="准入时间" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.approveDate2||"--"}}
</template>
</el-table-column>
<el-table-column label="公司合作数量" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.enterpriseCooperationCount||"--"}}
</template>
</el-table-column>
<el-table-column label="合作项目数量" min-width="120" :resizable="false">
<template slot-scope="scope">
<span>{{scope.row.legalPerson||"--"}}</span>
<span>{{scope.row.projectCooperationCount||"--"}}</span>
</template>
</el-table-column>
<el-table-column label="分包商等级" min-width="120" :resizable="false">
<template slot-scope="scope">
<span class="wordprimary" @click="getFBS(scope.row)">{{scope.row.legalPerson||"--"}}</span>
<span class="wordprimary" @click="getFBS(scope.row)">{{scope.row.creditLevel||"--"}}</span>
</template>
</el-table-column>
<el-table-column label="链接" min-width="160" :resizable="false">
......@@ -205,14 +203,14 @@
</el-table-column>
<el-table-column label="资源平台分类" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
--
</template>
</el-table-column>
</el-table>
</div>
<div class="pagination clearfix" v-show="total>0">
<el-pagination background :page-size="pageSize" :current-page.sync="pageNum" @current-change="handleCurrentChange" layout="prev, pager, next"
<el-pagination background :page-size="formdata.pageSize" :current-page.sync="formdata.pageNum" @current-change="handleCurrentChange" layout="prev, pager, next"
:total="total">
</el-pagination>
</div>
......@@ -260,13 +258,14 @@
</template>
<script>
import { encodeStr } from "@/assets/js/common.js";
import "@/assets/styles/public.scss";
import "@/assets/styles/supplierlist.scss";
import skeleton from '@/views/project/projectList/component/skeleton';
import api from '@/api/enterpriseData/enterpriseData.js';
import dataRegion from '@/assets/json/provinceTree'
import { getDicts } from "@/api/system/dict/data";
import { encodeStr } from '@/assets/js/common.js'
import '@/assets/styles/public.scss'
import '@/assets/styles/supplierlist.scss'
import skeleton from '@/views/project/projectList/component/skeleton'
import { areaAll, bizDictData, custmerInfolist } from '@/api/supplier/supplier'
import { getDicts } from '@/api/system/dict/data'
import {queryConditionFiltering} from '@/utils/index'
export default {
name: 'professionalSubcontracting',
components:{skeleton},
......@@ -280,216 +279,39 @@
credential:[],
paytaxtype:[],
taxrate:[],
groupSpecialty:[],
provienceprops:{
checkStrictly:true,
checkStrictly:false,
multiple:true,
label:'value',
},
groupprops:{
checkStrictly:false,
multiple:true,
value:'id',
},
formdata:{},
options: [
{
value: 'zhinan',
label: '指南',
children: [{
value: 'shejiyuanze',
label: '设计原则',
children: [{
value: 'yizhi',
label: '一致'
}, {
value: 'fankui',
label: '反馈'
}, {
value: 'xiaolv',
label: '效率'
}, {
value: 'kekong',
label: '可控'
}]
}, {
value: 'daohang',
label: '导航',
children: [{
value: 'cexiangdaohang',
label: '侧向导航'
}, {
value: 'dingbudaohang',
label: '顶部导航'
}]
}]
}, {
value: 'zujian',
label: '组件',
children: [{
value: 'basic',
label: 'Basic',
children: [{
value: 'layout',
label: 'Layout 布局'
}, {
value: 'color',
label: 'Color 色彩'
}, {
value: 'typography',
label: 'Typography 字体'
}, {
value: 'icon',
label: 'Icon 图标'
}, {
value: 'button',
label: 'Button 按钮'
}]
}, {
value: 'form',
label: 'Form',
children: [{
value: 'radio',
label: 'Radio 单选框'
}, {
value: 'checkbox',
label: 'Checkbox 多选框'
}, {
value: 'input',
label: 'Input 输入框'
}, {
value: 'input-number',
label: 'InputNumber 计数器'
}, {
value: 'select',
label: 'Select 选择器'
}, {
value: 'cascader',
label: 'Cascader 级联选择器'
}, {
value: 'switch',
label: 'Switch 开关'
}, {
value: 'slider',
label: 'Slider 滑块'
}, {
value: 'time-picker',
label: 'TimePicker 时间选择器'
}, {
value: 'date-picker',
label: 'DatePicker 日期选择器'
}, {
value: 'datetime-picker',
label: 'DateTimePicker 日期时间选择器'
}, {
value: 'upload',
label: 'Upload 上传'
}, {
value: 'rate',
label: 'Rate 评分'
}, {
value: 'form',
label: 'Form 表单'
}]
}, {
value: 'data',
label: 'Data',
children: [{
value: 'table',
label: 'Table 表格'
}, {
value: 'tag',
label: 'Tag 标签'
}, {
value: 'progress',
label: 'Progress 进度条'
}, {
value: 'tree',
label: 'Tree 树形控件'
}, {
value: 'pagination',
label: 'Pagination 分页'
}, {
value: 'badge',
label: 'Badge 标记'
}]
}, {
value: 'notice',
label: 'Notice',
children: [{
value: 'alert',
label: 'Alert 警告'
}, {
value: 'loading',
label: 'Loading 加载'
}, {
value: 'message',
label: 'Message 消息提示'
}, {
value: 'message-box',
label: 'MessageBox 弹框'
}, {
value: 'notification',
label: 'Notification 通知'
}]
}, {
value: 'navigation',
label: 'Navigation',
children: [{
value: 'menu',
label: 'NavMenu 导航菜单'
}, {
value: 'tabs',
label: 'Tabs 标签页'
}, {
value: 'breadcrumb',
label: 'Breadcrumb 面包屑'
}, {
value: 'dropdown',
label: 'Dropdown 下拉菜单'
}, {
value: 'steps',
label: 'Steps 步骤条'
}]
}, {
value: 'others',
label: 'Others',
children: [{
value: 'dialog',
label: 'Dialog 对话框'
}, {
value: 'tooltip',
label: 'Tooltip 文字提示'
}, {
value: 'popover',
label: 'Popover 弹出框'
}, {
value: 'card',
label: 'Card 卡片'
}, {
value: 'carousel',
label: 'Carousel 走马灯'
}, {
value: 'collapse',
label: 'Collapse 折叠面板'
}]
}]
}, {
value: 'ziyuan',
label: '资源',
children: [{
value: 'axure',
label: 'Axure Components'
}, {
value: 'sketch',
label: 'Sketch Templates'
}, {
value: 'jiaohu',
label: '组件交互文档'
}]
}
],
tableData:[
{name:'测试',legalPerson:'AAAA'}
],
formdata:{
customerClass:'专业分包',
pageNum:1,
pageSize:50,
times:[],
customerName:"",
areas:[],
customerState:[],
credential:[],
groupSpecialtys:[],
groupSpecialtyId:[],
creditLevel:[],
paytaxType:[],
taxRate:[],
registerProvince:[],
registerCity:[],
approveDate2Start:null,
approveDate2End:null,
},
tableData:[],
isSkeleton:false,
total:100,
pageSize:50,
pageNum:1,
total:0,
// table列是否悬浮
tableColumnFixed: true,
fbsvisib:false,
......@@ -498,13 +320,10 @@
},
created() {
this.init()
this.cusoomerInfolist()
},
methods:{
init(){
//地区
getDicts('arealist').then(res=>{
this.arealist = res.data
})
//评价等级
getDicts('credit_level').then(res=>{
this.creditlevel = res.data
......@@ -525,24 +344,81 @@
getDicts('credential').then(res=>{
this.credential = res.data
})
this.dataRegion()
// this.dataRegion()
//专业类别
bizDictData().then(res=>{
this.groupSpecialty = res.data
})
// 地区树
areaAll().then(res=>{
this.addressList = res.data
})
},
//地区
async dataRegion() {
let addrs = JSON.parse(JSON.stringify(dataRegion))
addrs.forEach(item=>{
if (item.children) {
(item.children).forEach(i => {
if (i.children) {
delete i.children
clears(){
this.formdata = {
customerClass: '专业分包',
pageNum: 1,
pageSize: 50,
times: [],
customerName: '',
areas: [],
customerState: [],
credential: [],
groupSpecialtys: [],
groupSpecialtyId: [],
creditLevel: [],
paytaxType: [],
taxRate: [],
registerProvince: [],
registerCity: [],
approveDate2Start: null,
approveDate2End: null
}
this.cusoomerInfolist()
},
cusoomerInfolist(){
this.isSkeleton = true
let param = this.formdata
if(param.times){
param.approveDate2Start = param.times[0]
param.approveDate2End = param.times[1]
}else{
param.approveDate2Start = ''
param.approveDate2End = ''
}
param.groupSpecialtyId = []
if(param.groupSpecialtys){
param.groupSpecialtys.forEach(item=>{
param.groupSpecialtyId.push(item[item.length-1])
})
}
if(param.areas){
let province = []
let city = []
param.areas.forEach(item=>{
if(item.length == 3){//到市
if(item[1].indexOf('重庆')>-1||item[1].indexOf('北京')>-1||item[1].indexOf('天津')>-1||item[1].indexOf('上海')>-1){
province.push(item[1])
}else{
city.push(item[2])
}
})
}
}
})
param.registerProvince = province
param.registerCity = city
}else{
param.registerProvince = []
param.registerCity = []
}
custmerInfolist(queryConditionFiltering(this.formdata)).then(res=>{
this.isSkeleton = false
this.tableData = res.rows
this.total = res.total
})
this.addressList = addrs;
},
handleCurrentChange(){
handleCurrentChange(val){
this.formdata.pageNum = val
this.cusoomerInfolist()
},
setHeaderRow() {
return "owner-table-list-header";
......@@ -562,7 +438,7 @@
},
//点击准入
goAccess(row){
this.$tab.openPage('测试一下-准入情况', '/supplier/supplierlist/access')
this.$tab.openPage(row.customerName+'-准入情况', '/supplier/supplierlist/access',{customerKey:row.customerKey})
},
//点击考评
goAssessment(row){
......
<template>
<div class="supplier">
<div class="search-supplier">
<div class="title_wrap">
<div class="enterprise_title">
租赁服务
机械施工
</div>
</div>
<div class="content-supplier">
<el-form :model="formdata" label-width="82px" label-position="right" :inline="true" >
<el-row>
<el-form-item label="供应商名称">
<el-input v-model="formdata.user" placeholder="请输入分供方名称"></el-input>
</el-form-item>
<el-form-item label="注册地区">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in arealist" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
<el-input v-model="formdata.customerName" placeholder="请输入供应商名称"></el-input>
</el-form-item>
<el-form-item label="注册城市">
<el-cascader
v-model="formdata.user"
:options="addressList" :collapse-tags="true"
v-model="formdata.areas"
:options="addressList" :collapse-tags="true" :show-all-levels="false" clearable
:props="provienceprops"></el-cascader>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="供应商状态">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.customerState" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in customstate" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="资质等级">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.credential" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in credential" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="物资类别">
<el-select v-model="formdata.user" placeholder="请选择">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
<el-cascader clearable
v-model="formdata.groupSpecialtys"
:options="groupSpecialty" :collapse-tags="true"
:props="groupprops"></el-cascader>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="评价等级">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.creditLevel" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in creditlevel" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="纳税人身份">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.paytaxType" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in paytaxtype" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="纳税人税率">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.taxRate" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in taxrate" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="准入时间">
<el-date-picker
v-model="formdata.time"
v-model="formdata.times"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="至"
......@@ -74,8 +66,8 @@
</el-row>
<el-divider></el-divider>
<el-form-item label=" ">
<el-button type="primary" size="small">查询</el-button>
<el-button size="small">重置</el-button>
<el-button type="primary" size="small" @click="handleCurrentChange(1)">查询</el-button>
<el-button size="small" @click="clears">重置</el-button>
</el-form-item>
</el-form>
</div>
......@@ -84,6 +76,11 @@
<div class="total-title">
<div class="totals">{{total}}</div>
</div>
<div class="table-item-jf table-item-jf1 empty-table" v-if="total == 0 && !isSkeleton">
<img class="item-jf-img" src="@/assets/images/kong.png" alt="">
<div class="item-jf-titel">暂无相关数据</div>
<div class="item-jf-text">抱歉,暂无数据,试试更换搜索条件吧</div>
</div>
<skeleton v-if="isSkeleton"></skeleton>
<div class="table-item-jf table-item" v-if="!isSkeleton&&tableData.length>0">
......@@ -94,18 +91,18 @@
<el-table-column type="index" label="序号" :fixed="tableColumnFixed" width="60" :resizable="false">
<template slot-scope="scope">
<span>{{(pageNum - 1) *pageSize + scope.$index + 1}}</span>
<span>{{(formdata.pageNum - 1) *formdata.pageSize + scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column label="供应商编号" :fixed="tableColumnFixed" width="120" :resizable="false">
<el-table-column label="供应商编号" prop="customerCode" :fixed="tableColumnFixed" width="120" :resizable="false">
</el-table-column>
<el-table-column label="供应商名称" :fixed="tableColumnFixed" width="380" :resizable="false">
<template slot-scope="scope">
<div class="renling">
<div style="display:flex;align-items:center">
<router-link :to="`/enterprise/${encodeStr(scope.row.id)}`" tag="a"
class="wordprimary" v-html="scope.row.name"></router-link>
<router-link :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a"
class="wordprimary" v-html="scope.row.customerName"></router-link>
</div>
</div>
......@@ -115,82 +112,82 @@
<el-table-column label="推荐单位" min-width="280">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.recommendOrg||"--"}}
</template>
</el-table-column>
<el-table-column label="公司注册区域" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerRegion||"--"}}
</template>
</el-table-column>
<el-table-column label="公司注册省" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerProvince||"--"}}
</template>
</el-table-column>
<el-table-column label="公司注册城市" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerCity||"--"}}
</template>
</el-table-column>
<el-table-column label="专业类别" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.groupSpecialty||"--"}}
</template>
</el-table-column>
<el-table-column label="法人代表" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.representative||"--"}}
</template>
</el-table-column>
<el-table-column label="纳税人身份" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.paytaxType||"--"}}
</template>
</el-table-column>
<el-table-column label="纳税人税率" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.taxRate||"--"}}
</template>
</el-table-column>
<el-table-column label="资质等级" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.credential||"--"}}
</template>
</el-table-column>
<el-table-column label="注册资本(万元)" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerCapital||"--"}}
</template>
</el-table-column>
<el-table-column label="公司联系人" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.contactPerson||"--"}}
</template>
</el-table-column>
<el-table-column label="联系人电话" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.contactPhone||"--"}}
</template>
</el-table-column>
<el-table-column label="准入时间" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.approveDate2||"--"}}
</template>
</el-table-column>
<el-table-column label="公司合作数量" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.enterpriseCooperationCount||"--"}}
</template>
</el-table-column>
<el-table-column label="合作项目数量" min-width="120" :resizable="false">
<template slot-scope="scope">
<span>{{scope.row.legalPerson||"--"}}</span>
<span>{{scope.row.projectCooperationCount||"--"}}</span>
</template>
</el-table-column>
<el-table-column label="分包商等级" min-width="120" :resizable="false">
<template slot-scope="scope">
<span class="wordprimary" @click="getFBS(scope.row)">{{scope.row.legalPerson||"--"}}</span>
<span class="wordprimary" @click="getFBS(scope.row)">{{scope.row.creditLevel||"--"}}</span>
</template>
</el-table-column>
<el-table-column label="链接" min-width="160" :resizable="false">
......@@ -201,14 +198,14 @@
</el-table-column>
<el-table-column label="资源平台分类" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
--
</template>
</el-table-column>
</el-table>
</div>
<div class="pagination clearfix" v-show="total>0">
<el-pagination background :page-size="pageSize" :current-page.sync="pageNum" @current-change="handleCurrentChange" layout="prev, pager, next"
<el-pagination background :page-size="formdata.pageSize" :current-page.sync="formdata.pageNum" @current-change="handleCurrentChange" layout="prev, pager, next"
:total="total">
</el-pagination>
</div>
......@@ -256,13 +253,13 @@
</template>
<script>
import { encodeStr } from "@/assets/js/common.js";
import "@/assets/styles/public.scss";
import "@/assets/styles/supplierlist.scss";
import skeleton from '@/views/project/projectList/component/skeleton';
import api from '@/api/enterpriseData/enterpriseData.js';
import dataRegion from '@/assets/json/provinceTree'
import { getDicts } from "@/api/system/dict/data";
import { encodeStr } from '@/assets/js/common.js'
import '@/assets/styles/public.scss'
import '@/assets/styles/supplierlist.scss'
import skeleton from '@/views/project/projectList/component/skeleton'
import { areaAll, bizDictData, custmerInfolist } from '@/api/supplier/supplier'
import { getDicts } from '@/api/system/dict/data'
import {queryConditionFiltering} from '@/utils/index'
export default {
name: 'rentalServices',
components:{skeleton},
......@@ -276,216 +273,39 @@
credential:[],
paytaxtype:[],
taxrate:[],
groupSpecialty:[],
provienceprops:{
checkStrictly:true,
checkStrictly:false,
multiple:true,
label:'value',
},
groupprops:{
checkStrictly:false,
multiple:true,
value:'id',
},
formdata:{},
options: [
{
value: 'zhinan',
label: '指南',
children: [{
value: 'shejiyuanze',
label: '设计原则',
children: [{
value: 'yizhi',
label: '一致'
}, {
value: 'fankui',
label: '反馈'
}, {
value: 'xiaolv',
label: '效率'
}, {
value: 'kekong',
label: '可控'
}]
}, {
value: 'daohang',
label: '导航',
children: [{
value: 'cexiangdaohang',
label: '侧向导航'
}, {
value: 'dingbudaohang',
label: '顶部导航'
}]
}]
}, {
value: 'zujian',
label: '组件',
children: [{
value: 'basic',
label: 'Basic',
children: [{
value: 'layout',
label: 'Layout 布局'
}, {
value: 'color',
label: 'Color 色彩'
}, {
value: 'typography',
label: 'Typography 字体'
}, {
value: 'icon',
label: 'Icon 图标'
}, {
value: 'button',
label: 'Button 按钮'
}]
}, {
value: 'form',
label: 'Form',
children: [{
value: 'radio',
label: 'Radio 单选框'
}, {
value: 'checkbox',
label: 'Checkbox 多选框'
}, {
value: 'input',
label: 'Input 输入框'
}, {
value: 'input-number',
label: 'InputNumber 计数器'
}, {
value: 'select',
label: 'Select 选择器'
}, {
value: 'cascader',
label: 'Cascader 级联选择器'
}, {
value: 'switch',
label: 'Switch 开关'
}, {
value: 'slider',
label: 'Slider 滑块'
}, {
value: 'time-picker',
label: 'TimePicker 时间选择器'
}, {
value: 'date-picker',
label: 'DatePicker 日期选择器'
}, {
value: 'datetime-picker',
label: 'DateTimePicker 日期时间选择器'
}, {
value: 'upload',
label: 'Upload 上传'
}, {
value: 'rate',
label: 'Rate 评分'
}, {
value: 'form',
label: 'Form 表单'
}]
}, {
value: 'data',
label: 'Data',
children: [{
value: 'table',
label: 'Table 表格'
}, {
value: 'tag',
label: 'Tag 标签'
}, {
value: 'progress',
label: 'Progress 进度条'
}, {
value: 'tree',
label: 'Tree 树形控件'
}, {
value: 'pagination',
label: 'Pagination 分页'
}, {
value: 'badge',
label: 'Badge 标记'
}]
}, {
value: 'notice',
label: 'Notice',
children: [{
value: 'alert',
label: 'Alert 警告'
}, {
value: 'loading',
label: 'Loading 加载'
}, {
value: 'message',
label: 'Message 消息提示'
}, {
value: 'message-box',
label: 'MessageBox 弹框'
}, {
value: 'notification',
label: 'Notification 通知'
}]
}, {
value: 'navigation',
label: 'Navigation',
children: [{
value: 'menu',
label: 'NavMenu 导航菜单'
}, {
value: 'tabs',
label: 'Tabs 标签页'
}, {
value: 'breadcrumb',
label: 'Breadcrumb 面包屑'
}, {
value: 'dropdown',
label: 'Dropdown 下拉菜单'
}, {
value: 'steps',
label: 'Steps 步骤条'
}]
}, {
value: 'others',
label: 'Others',
children: [{
value: 'dialog',
label: 'Dialog 对话框'
}, {
value: 'tooltip',
label: 'Tooltip 文字提示'
}, {
value: 'popover',
label: 'Popover 弹出框'
}, {
value: 'card',
label: 'Card 卡片'
}, {
value: 'carousel',
label: 'Carousel 走马灯'
}, {
value: 'collapse',
label: 'Collapse 折叠面板'
}]
}]
}, {
value: 'ziyuan',
label: '资源',
children: [{
value: 'axure',
label: 'Axure Components'
}, {
value: 'sketch',
label: 'Sketch Templates'
}, {
value: 'jiaohu',
label: '组件交互文档'
}]
}
],
tableData:[
{name:'测试',legalPerson:'AAAA'}
],
formdata:{
customerClass:'租赁',
pageNum:1,
pageSize:50,
times:[],
customerName:"",
areas:[],
customerState:[],
credential:[],
groupSpecialtys:[],
groupSpecialtyId:[],
creditLevel:[],
paytaxType:[],
taxRate:[],
registerProvince:[],
registerCity:[],
approveDate2Start:null,
approveDate2End:null,
},
tableData:[],
isSkeleton:false,
total:100,
pageSize:50,
pageNum:1,
total:0,
// table列是否悬浮
tableColumnFixed: true,
fbsvisib:false,
......@@ -494,13 +314,10 @@
},
created() {
this.init()
this.cusoomerInfolist()
},
methods:{
init(){
//地区
getDicts('arealist').then(res=>{
this.arealist = res.data
})
//评价等级
getDicts('credit_level').then(res=>{
this.creditlevel = res.data
......@@ -521,24 +338,81 @@
getDicts('credential').then(res=>{
this.credential = res.data
})
this.dataRegion()
// this.dataRegion()
//专业类别
bizDictData().then(res=>{
this.groupSpecialty = res.data
})
// 地区树
areaAll().then(res=>{
this.addressList = res.data
})
},
//地区
async dataRegion() {
let addrs = JSON.parse(JSON.stringify(dataRegion))
addrs.forEach(item=>{
if (item.children) {
(item.children).forEach(i => {
if (i.children) {
delete i.children
clears(){
this.formdata = {
customerClass: '租赁',
pageNum: 1,
pageSize: 50,
times: [],
customerName: '',
areas: [],
customerState: [],
credential: [],
groupSpecialtys: [],
groupSpecialtyId: [],
creditLevel: [],
paytaxType: [],
taxRate: [],
registerProvince: [],
registerCity: [],
approveDate2Start: null,
approveDate2End: null
}
this.cusoomerInfolist()
},
cusoomerInfolist(){
this.isSkeleton = true
let param = this.formdata
if(param.times){
param.approveDate2Start = param.times[0]
param.approveDate2End = param.times[1]
}else{
param.approveDate2Start = ''
param.approveDate2End = ''
}
param.groupSpecialtyId = []
if(param.groupSpecialtys){
param.groupSpecialtys.forEach(item=>{
param.groupSpecialtyId.push(item[item.length-1])
})
}
if(param.areas){
let province = []
let city = []
param.areas.forEach(item=>{
if(item.length == 3){//到市
if(item[1].indexOf('重庆')>-1||item[1].indexOf('北京')>-1||item[1].indexOf('天津')>-1||item[1].indexOf('上海')>-1){
province.push(item[1])
}else{
city.push(item[2])
}
})
}
}
})
param.registerProvince = province
param.registerCity = city
}else{
param.registerProvince = []
param.registerCity = []
}
custmerInfolist(queryConditionFiltering(this.formdata)).then(res=>{
this.isSkeleton = false
this.tableData = res.rows
this.total = res.total
})
this.addressList = addrs;
},
handleCurrentChange(){
handleCurrentChange(val){
this.formdata.pageNum = val
this.cusoomerInfolist()
},
setHeaderRow() {
return "owner-table-list-header";
......@@ -558,7 +432,7 @@
},
//点击准入
goAccess(row){
this.$tab.openPage('测试一下-准入情况', '/supplier/supplierlist/access')
this.$tab.openPage(row.customerName+'-准入情况', '/supplier/supplierlist/access',{customerKey:row.customerKey})
},
//点击考评
goAssessment(row){
......@@ -571,4 +445,3 @@
<style scoped lang="scss">
</style>
......@@ -3,66 +3,59 @@
<div class="search-supplier">
<div class="title_wrap">
<div class="enterprise_title">
分供分包类
物资设备
</div>
</div>
<div class="content-supplier">
<el-form :model="formdata" label-width="82px" label-position="right" :inline="true" >
<el-row>
<el-form-item label="供应商名称">
<el-input v-model="formdata.user" placeholder="请输入分供方名称"></el-input>
</el-form-item>
<el-form-item label="注册地区">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in arealist" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
<el-input v-model="formdata.customerName" placeholder="请输入供应商名称"></el-input>
</el-form-item>
<el-form-item label="注册城市">
<el-cascader
v-model="formdata.user"
:options="addressList" :collapse-tags="true"
v-model="formdata.areas"
:options="addressList" :collapse-tags="true" :show-all-levels="false" clearable
:props="provienceprops"></el-cascader>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="供应商状态">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.customerState" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in customstate" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="资质等级">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.credential" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in credential" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="物资类别">
<el-select v-model="formdata.user" placeholder="请选择">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
<el-cascader clearable
v-model="formdata.groupSpecialtys"
:options="groupSpecialty" :collapse-tags="true"
:props="groupprops"></el-cascader>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="评价等级">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.creditLevel" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in creditlevel" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="纳税人身份">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.paytaxType" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in paytaxtype" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
<el-form-item label="纳税人税率">
<el-select v-model="formdata.user" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-select v-model="formdata.taxRate" multiple placeholder="请选择" :collapse-tags="true" clearable>
<el-option v-for="(item,index) in taxrate" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="准入时间">
<el-date-picker
v-model="formdata.time"
v-model="formdata.times"
type="daterange"
value-format="yyyy-MM-dd"
range-separator="至"
......@@ -73,8 +66,8 @@
</el-row>
<el-divider></el-divider>
<el-form-item label=" ">
<el-button type="primary" size="small">查询</el-button>
<el-button size="small">重置</el-button>
<el-button type="primary" size="small" @click="handleCurrentChange(1)">查询</el-button>
<el-button size="small" @click="clears">重置</el-button>
</el-form-item>
</el-form>
</div>
......@@ -83,6 +76,11 @@
<div class="total-title">
<div class="totals">{{total}}</div>
</div>
<div class="table-item-jf table-item-jf1 empty-table" v-if="total == 0 && !isSkeleton">
<img class="item-jf-img" src="@/assets/images/kong.png" alt="">
<div class="item-jf-titel">暂无相关数据</div>
<div class="item-jf-text">抱歉,暂无数据,试试更换搜索条件吧</div>
</div>
<skeleton v-if="isSkeleton"></skeleton>
<div class="table-item-jf table-item" v-if="!isSkeleton&&tableData.length>0">
......@@ -93,18 +91,18 @@
<el-table-column type="index" label="序号" :fixed="tableColumnFixed" width="60" :resizable="false">
<template slot-scope="scope">
<span>{{(pageNum - 1) *pageSize + scope.$index + 1}}</span>
<span>{{(formdata.pageNum - 1) *formdata.pageSize + scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column label="供应商编号" :fixed="tableColumnFixed" width="120" :resizable="false">
<el-table-column label="供应商编号" prop="customerCode" :fixed="tableColumnFixed" width="120" :resizable="false">
</el-table-column>
<el-table-column label="供应商名称" :fixed="tableColumnFixed" width="380" :resizable="false">
<template slot-scope="scope">
<div class="renling">
<div style="display:flex;align-items:center">
<router-link :to="`/enterprise/${encodeStr(scope.row.id)}`" tag="a"
class="wordprimary" v-html="scope.row.name"></router-link>
<router-link :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a"
class="wordprimary" v-html="scope.row.customerName"></router-link>
</div>
</div>
......@@ -114,82 +112,82 @@
<el-table-column label="推荐单位" min-width="280">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.recommendOrg||"--"}}
</template>
</el-table-column>
<el-table-column label="公司注册区域" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerRegion||"--"}}
</template>
</el-table-column>
<el-table-column label="公司注册省" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerProvince||"--"}}
</template>
</el-table-column>
<el-table-column label="公司注册城市" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerCity||"--"}}
</template>
</el-table-column>
<el-table-column label="供应类别" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.groupSpecialty||"--"}}
</template>
</el-table-column>
<el-table-column label="法人代表" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.representative||"--"}}
</template>
</el-table-column>
<el-table-column label="纳税人身份" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.paytaxType||"--"}}
</template>
</el-table-column>
<el-table-column label="纳税人税率" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.taxRate||"--"}}
</template>
</el-table-column>
<el-table-column label="资质等级" min-width="85" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.credential||"--"}}
</template>
</el-table-column>
<el-table-column label="注册资本(万元)" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.registerCapital||"--"}}
</template>
</el-table-column>
<el-table-column label="公司联系人" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.contactPerson||"--"}}
</template>
</el-table-column>
<el-table-column label="联系人电话" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.contactPhone||"--"}}
</template>
</el-table-column>
<el-table-column label="准入时间" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.approveDate2||"--"}}
</template>
</el-table-column>
<el-table-column label="公司合作数量" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
{{scope.row.enterpriseCooperationCount||"--"}}
</template>
</el-table-column>
<el-table-column label="合作项目数量" min-width="120" :resizable="false">
<template slot-scope="scope">
<span>{{scope.row.legalPerson||"--"}}</span>
<span>{{scope.row.projectCooperationCount||"--"}}</span>
</template>
</el-table-column>
<el-table-column label="分包商等级" min-width="120" :resizable="false">
<template slot-scope="scope">
<span class="wordprimary" @click="getFBS(scope.row)">{{scope.row.legalPerson||"--"}}</span>
<span class="wordprimary" @click="getFBS(scope.row)">{{scope.row.creditLevel||"--"}}</span>
</template>
</el-table-column>
<el-table-column label="链接" min-width="160" :resizable="false">
......@@ -200,14 +198,14 @@
</el-table-column>
<el-table-column label="资源平台分类" min-width="120" :resizable="false">
<template slot-scope="scope">
{{scope.row.legalPerson||"--"}}
--
</template>
</el-table-column>
</el-table>
</div>
<div class="pagination clearfix" v-show="total>0">
<el-pagination background :page-size="pageSize" :current-page.sync="pageNum" @current-change="handleCurrentChange" layout="prev, pager, next"
<el-pagination background :page-size="formdata.pageSize" :current-page.sync="formdata.pageNum" @current-change="handleCurrentChange" layout="prev, pager, next"
:total="total">
</el-pagination>
</div>
......@@ -255,13 +253,13 @@
</template>
<script>
import { encodeStr } from "@/assets/js/common.js";
import "@/assets/styles/public.scss";
import "@/assets/styles/supplierlist.scss";
import skeleton from '@/views/project/projectList/component/skeleton';
import api from '@/api/enterpriseData/enterpriseData.js';
import dataRegion from '@/assets/json/provinceTree'
import { getDicts } from "@/api/system/dict/data";
import { encodeStr } from '@/assets/js/common.js'
import '@/assets/styles/public.scss'
import '@/assets/styles/supplierlist.scss'
import skeleton from '@/views/project/projectList/component/skeleton'
import { areaAll, bizDictData, custmerInfolist } from '@/api/supplier/supplier'
import { getDicts } from '@/api/system/dict/data'
import {queryConditionFiltering} from '@/utils/index'
export default {
name: 'supplySubcontracting',
components:{skeleton},
......@@ -275,216 +273,39 @@
credential:[],
paytaxtype:[],
taxrate:[],
groupSpecialty:[],
provienceprops:{
checkStrictly:true,
checkStrictly:false,
multiple:true,
label:'value',
},
groupprops:{
checkStrictly:false,
multiple:true,
value:'id',
},
formdata:{},
options: [
{
value: 'zhinan',
label: '指南',
children: [{
value: 'shejiyuanze',
label: '设计原则',
children: [{
value: 'yizhi',
label: '一致'
}, {
value: 'fankui',
label: '反馈'
}, {
value: 'xiaolv',
label: '效率'
}, {
value: 'kekong',
label: '可控'
}]
}, {
value: 'daohang',
label: '导航',
children: [{
value: 'cexiangdaohang',
label: '侧向导航'
}, {
value: 'dingbudaohang',
label: '顶部导航'
}]
}]
}, {
value: 'zujian',
label: '组件',
children: [{
value: 'basic',
label: 'Basic',
children: [{
value: 'layout',
label: 'Layout 布局'
}, {
value: 'color',
label: 'Color 色彩'
}, {
value: 'typography',
label: 'Typography 字体'
}, {
value: 'icon',
label: 'Icon 图标'
}, {
value: 'button',
label: 'Button 按钮'
}]
}, {
value: 'form',
label: 'Form',
children: [{
value: 'radio',
label: 'Radio 单选框'
}, {
value: 'checkbox',
label: 'Checkbox 多选框'
}, {
value: 'input',
label: 'Input 输入框'
}, {
value: 'input-number',
label: 'InputNumber 计数器'
}, {
value: 'select',
label: 'Select 选择器'
}, {
value: 'cascader',
label: 'Cascader 级联选择器'
}, {
value: 'switch',
label: 'Switch 开关'
}, {
value: 'slider',
label: 'Slider 滑块'
}, {
value: 'time-picker',
label: 'TimePicker 时间选择器'
}, {
value: 'date-picker',
label: 'DatePicker 日期选择器'
}, {
value: 'datetime-picker',
label: 'DateTimePicker 日期时间选择器'
}, {
value: 'upload',
label: 'Upload 上传'
}, {
value: 'rate',
label: 'Rate 评分'
}, {
value: 'form',
label: 'Form 表单'
}]
}, {
value: 'data',
label: 'Data',
children: [{
value: 'table',
label: 'Table 表格'
}, {
value: 'tag',
label: 'Tag 标签'
}, {
value: 'progress',
label: 'Progress 进度条'
}, {
value: 'tree',
label: 'Tree 树形控件'
}, {
value: 'pagination',
label: 'Pagination 分页'
}, {
value: 'badge',
label: 'Badge 标记'
}]
}, {
value: 'notice',
label: 'Notice',
children: [{
value: 'alert',
label: 'Alert 警告'
}, {
value: 'loading',
label: 'Loading 加载'
}, {
value: 'message',
label: 'Message 消息提示'
}, {
value: 'message-box',
label: 'MessageBox 弹框'
}, {
value: 'notification',
label: 'Notification 通知'
}]
}, {
value: 'navigation',
label: 'Navigation',
children: [{
value: 'menu',
label: 'NavMenu 导航菜单'
}, {
value: 'tabs',
label: 'Tabs 标签页'
}, {
value: 'breadcrumb',
label: 'Breadcrumb 面包屑'
}, {
value: 'dropdown',
label: 'Dropdown 下拉菜单'
}, {
value: 'steps',
label: 'Steps 步骤条'
}]
}, {
value: 'others',
label: 'Others',
children: [{
value: 'dialog',
label: 'Dialog 对话框'
}, {
value: 'tooltip',
label: 'Tooltip 文字提示'
}, {
value: 'popover',
label: 'Popover 弹出框'
}, {
value: 'card',
label: 'Card 卡片'
}, {
value: 'carousel',
label: 'Carousel 走马灯'
}, {
value: 'collapse',
label: 'Collapse 折叠面板'
}]
}]
}, {
value: 'ziyuan',
label: '资源',
children: [{
value: 'axure',
label: 'Axure Components'
}, {
value: 'sketch',
label: 'Sketch Templates'
}, {
value: 'jiaohu',
label: '组件交互文档'
}]
}
],
tableData:[
{name:'测试',legalPerson:'AAAA'}
],
formdata:{
customerClass:'分供',
pageNum:1,
pageSize:50,
times:[],
customerName:"",
areas:[],
customerState:[],
credential:[],
groupSpecialtys:[],
groupSpecialtyId:[],
creditLevel:[],
paytaxType:[],
taxRate:[],
registerProvince:[],
registerCity:[],
approveDate2Start:null,
approveDate2End:null,
},
tableData:[],
isSkeleton:false,
total:100,
pageSize:50,
pageNum:1,
total:0,
// table列是否悬浮
tableColumnFixed: true,
fbsvisib:false,
......@@ -493,13 +314,10 @@
},
created() {
this.init()
this.cusoomerInfolist()
},
methods:{
init(){
//地区
getDicts('arealist').then(res=>{
this.arealist = res.data
})
//评价等级
getDicts('credit_level').then(res=>{
this.creditlevel = res.data
......@@ -520,24 +338,81 @@
getDicts('credential').then(res=>{
this.credential = res.data
})
this.dataRegion()
// this.dataRegion()
//专业类别
bizDictData().then(res=>{
this.groupSpecialty = res.data
})
// 地区树
areaAll().then(res=>{
this.addressList = res.data
})
},
//地区
async dataRegion() {
let addrs = JSON.parse(JSON.stringify(dataRegion))
addrs.forEach(item=>{
if (item.children) {
(item.children).forEach(i => {
if (i.children) {
delete i.children
clears(){
this.formdata = {
customerClass: '分供',
pageNum: 1,
pageSize: 50,
times: [],
customerName: '',
areas: [],
customerState: [],
credential: [],
groupSpecialtys: [],
groupSpecialtyId: [],
creditLevel: [],
paytaxType: [],
taxRate: [],
registerProvince: [],
registerCity: [],
approveDate2Start: null,
approveDate2End: null
}
this.cusoomerInfolist()
},
cusoomerInfolist(){
this.isSkeleton = true
let param = this.formdata
if(param.times){
param.approveDate2Start = param.times[0]
param.approveDate2End = param.times[1]
}else{
param.approveDate2Start = ''
param.approveDate2End = ''
}
param.groupSpecialtyId = []
if(param.groupSpecialtys){
param.groupSpecialtys.forEach(item=>{
param.groupSpecialtyId.push(item[item.length-1])
})
}
if(param.areas){
let province = []
let city = []
param.areas.forEach(item=>{
if(item.length == 3){//到市
if(item[1].indexOf('重庆')>-1||item[1].indexOf('北京')>-1||item[1].indexOf('天津')>-1||item[1].indexOf('上海')>-1){
province.push(item[1])
}else{
city.push(item[2])
}
})
}
}
})
param.registerProvince = province
param.registerCity = city
}else{
param.registerProvince = []
param.registerCity = []
}
custmerInfolist(queryConditionFiltering(this.formdata)).then(res=>{
this.isSkeleton = false
this.tableData = res.rows
this.total = res.total
})
this.addressList = addrs;
},
handleCurrentChange(){
handleCurrentChange(val){
this.formdata.pageNum = val
this.cusoomerInfolist()
},
setHeaderRow() {
return "owner-table-list-header";
......@@ -557,7 +432,7 @@
},
//点击准入
goAccess(row){
this.$tab.openPage('测试一下-准入情况', '/supplier/supplierlist/access')
this.$tab.openPage(row.customerName+'-准入情况', '/supplier/supplierlist/access',{customerKey:row.customerKey})
},
//点击考评
goAssessment(row){
......
<template>
<!--供应商不良推送-->
<div class="app-container supplierBad">
<div class="content">
<div class="c-title">推送人信息</div>
<div class="main">
<div class="table-item" v-if="tableDataTotal > 0 && !isSkeleton">
<el-button class="btn" icon="el-icon-plus" type="primary">添加推送人</el-button>
<el-table
class="fixed-table"
:data="tableData"
element-loading-text="Loading"
border
highlight-current-row
>
<el-table-column label="推送人姓名" prop="name" align="left" width="200"></el-table-column>
<el-table-column label="推送电话" prop="contact" align="left"></el-table-column>
<el-table-column
label="操作"
align="left"
class-name="small-padding fixed-width"
fixed="right"
>
<template slot-scope="scope">
<span v-if="scope.row.status===0" style="cursor: pointer;margin-right: 16px;color: #0081FF;" @click="handleClick(scope.row,1)">停用</span>
<span v-if="scope.row.status===1" style="cursor: pointer;margin-right: 16px;color: #0081FF;" @click="handleClick(scope.row,1)">启用</span>
<span style="cursor: pointer;color: #FF3C3C;" @click="handleClick(scope.row,2)">删除</span>
</template>
</el-table-column>
</el-table>
<div class="pagination-box" v-if="tableDataTotal>pageSize">
<el-pagination background :current-page="pageNum" :page-size="pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div>
</div>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="empty" v-if="tableDataTotal === 0 && !isSkeleton">
<img class="img" src="@/assets/images/empty.png">
<div class="p1">暂无推送人信息</div>
<div class="p2">抱歉,暂时没有相关数据展示~</div>
<el-button class="btn" icon="el-icon-plus" type="primary" @click="visible=true">添加推送人</el-button>
</div>
</div>
</div>
<div class="content">
<div class="c-title">推送时间</div>
<div class="main">
<div class="main-item">
<div class="label">推送频率</div>
<el-radio-group v-model="radioTime" @change="radioBtn">
<el-radio label="0">每天</el-radio>
<el-radio label="1">工作日(排除节假日)</el-radio>
</el-radio-group>
</div>
<div class="main-item" style="line-height: 32px;">
<div class="label">推送时段</div>
<el-time-picker
is-range
class="timePicker"
v-model="time"
value-format="HH:mm:ss"
@change="changeTime"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
placeholder="选择时间范围">
</el-time-picker>
</div>
</div>
</div>
<el-dialog :visible.sync="visible" custom-class='dialog-claim' title="新增推送人信息" width="480px" >
<div class="add-content">
<div class="input">
<div class="label">推送人姓名</div>
<el-input class="name" placeholder="请输入推送人姓名" v-model="name"></el-input>
</div>
<div class="input">
<div class="label">推送电话号码</div>
<el-input class="name" placeholder="请输入推送人联系方式" v-model="contact"></el-input>
</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="visible=false">取消</el-button>
<el-button type="primary" @click="handleAdd">确定</el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="handleVisible" custom-class='dialog-confirm' width="384px" :show-close="false">
<template slot="title">
<div v-if="status === 0"><img class="tip-img" src="@/assets/images/tips1.png" />停用账号</div>
<div v-if="status === 1"><img class="tip-img" src="@/assets/images/tips1.png" />启用账号</div>
</template>
<div class="dialog-content">
<div v-if="status === 0" class="text">确认停用账号?</div>
<div v-if="status === 1" class="text">确认启用账号?</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="handleVisible=false">取消</el-button>
<el-button type="primary" @click="handleUpdate">确定</el-button>
</div>
</el-dialog>
<el-dialog :visible.sync="handleVisible1" custom-class='dialog-confirm' width="384px" :show-close="false">
<template slot="title">
<div><img class="tip-img" src="@/assets/images/tips1.png" />删除账号</div>
</template>
<div class="dialog-content">
<div class="text">确认删除账号?</div>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="handleVisible1=false">取消</el-button>
<el-button type="primary" @click="handleDelete">确定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { configKey,configUpdate } from "@/api/system/config";
import { pageList,sysPush,updateStatus,sysPushDel } from "@/api/system/supplierBad";
import skeleton from '../../component/skeleton'
export default {
name: 'supplierBad',
components: {
skeleton
},
data() {
return {
queryParams:{},
tableData:[],
visible:false,
radioTime:'0',
time:[],
tableDataTotal:0,
pageSize:10,
pageNum:1,
contact:'',
name:'',
handleVisible:false,
handleVisible1:false,
id:null,
status:null,
isSkeleton:true,
}
},
created() {
configKey("customer-badness-date-type").then(response => {
this.radioTime=response.data.configValue
});
configKey("customer-badness-time-frame").then(response => {
this.time=[this.converTime(response.data.configValue.split('-')[0]),this.converTime(response.data.configValue.split('-')[1])]
});
this.getList()
},
methods: {
radioBtn(val){
configUpdate({configKey:'customer-badness-date-type',configValue:val}).then(res => {
this.$modal.success(res.msg);
});
},
getList(){
let params={
pushTypeCode:'custoemr-badness',
pageSize:this.pageSize,
pageNum:this.pageNum,
}
pageList(params).then(res => {
console.log(res)
this.isSkeleton = false;
this.tableData=res.rows;
this.tableDataTotal=res.total
})
},
handleClick(item,key){
if(key === 1){
this.status=item.status
this.handleVisible=true
}
if(key === 2){
this.handleVisible1=true
}
this.id=item.id
},
handleAdd(){
let params={
pushTypeCode:'custoemr-badness',
pushType:'供应商不良',
name:this.name,
contact:this.contact,
}
sysPush(params).then(res => {
console.log(res)
if(res.code === 200){
this.visible=false;
this.$modal.success("新增成功");
this.getList()
}else {
this.$message.error(res.msg);
}
})
},
handleUpdate(){
let params={
id:this.id,
status:'1',
}
updateStatus(params).then(res => {
console.log(res)
this.handleVisible=false;
this.getList()
})
},
handleDelete(){
sysPushDel(this.id).then(res => {
console.log(res)
this.handleVisible1=false;
this.getList()
})
},
changeTime(val){
console.log(val)
let time=val[0]+'-'+val[1]
configUpdate({configKey:'customer-badness-time-frame',configValue:time}).then(res => {
this.$modal.success(res.msg);
});
},
converTime(time) {
const date = new Date();
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
const hour = time.split(':')[0];
const minutes = time.split(':')[1];
return new Date(year, month, day, hour, minutes);
},
}
}
</script>
<style lang="scss" scoped>
.supplierBad{
.content{
background: #ffffff;
padding:16px;
margin-bottom: 16px;
.c-title{
border-left: 2px solid rgba(35,35,35,0.8);;
padding-left: 8px;
font-size: 16px;
height: 16px;
line-height: 16px;
font-weight: 700;
color: #232323;
margin-bottom: 16px;
}
.main{
border-top: 1px solid #EEEEEE;
padding-top: 20px;
}
.main-item {
margin-bottom: 16px;
display: -webkit-box;
align-items: flex-start;
.label {
width: 88px;
font-size: 14px;
font-weight: 400;
color: rgba(35, 35, 35, 0.8);
}
.main-right {
width: calc(100% - 112px);
.checkbox{
display: flex;
align-items: flex-start;
.checkbox-content-qx{
margin-right: 24px;
}
}
}
::v-deep .timePicker{
width: 228px;
height: 32px;
.el-range__icon{
line-height: 27px;
}
.el-range__close-icon{
line-height: 27px;
}
}
::v-deep .phone{
width: 228px;
height: 32px;
border-radius: 2px 2px 2px 2px;
}
}
.table-item{
.btn{
padding: 10px 12px;
margin:0 0 16px 0;
}
}
.empty{
margin: 0 auto;
height: 276px;
text-align: center;
.img{
width: 108px;
height: 108px;
margin-bottom: 12px;
margin-top: 30px;
}
.p1{
color: #232323;
font-size: 14px;
}
.p2{
color: rgba(35,35,35,0.4);
font-size: 12px;
margin-top: 8px;
margin-bottom: 16px;
}
.btn{
padding: 10px 12px;
}
}
}
::v-deep .dialog-claim{
margin:0 !important;
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%);
.el-dialog__header{
display: block;
padding:16px 20px;
border-bottom: 1px solid #EEEEEE;
font-size: 16px;
font-weight: 700;
color: #232323;
}
.el-dialog__body{
padding: 24px 20px;
font-size: 14px;
.add-content{
.input{
display: -webkit-box;
align-items: flex-start;
line-height: 32px;
margin-bottom: 12px;
.label{
font-size: 14px;
color: rgba(35,35,35,0.8);
width: 90px;
text-align: right;
}
.name{
width: 340px;
height: 32px;
margin-left: 12px;
border-radius: 2px;
}
.el-input__inner{
height: 32px;
}
}
}
}
.el-dialog__footer{
padding: 0;
}
.dialog-footer{
border-top: 1px solid #EEEEEE;
padding: 16px 20px;
}
}
::v-deep .dialog-confirm{
.el-dialog__header{
display: block;
padding:20px 20px 8px 20px;
font-size: 16px;
color: #232323;
font-weight: 700;
line-height: 24px;
img{
width: 24px;
height: 24px;
margin-right: 12px;
float: left;
}
}
.el-dialog__body{
padding: 0 20px 24px 20px;
color: #666666;
.text{
padding-left: 36px;
}
}
}
}
</style>
......@@ -35,9 +35,10 @@ module.exports = {
proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
// target: `http://47.104.91.229:9099/prod-api`,//测试
// target: `http://47.104.91.229:9099/prod-api`,//测试-旧
target: `http://111.204.34.146:9099/prod-api`,//测试
// target: `https://szhapi.jiansheku.com`,//线上
// target: `http://192.168.60.5:9098`,//陈跃方
// target: `http://122.9.160.122:9011`, //线上
// target: `http://192.168.0.165:9098`,//施-无线
// target: `http://192.168.60.46:9098`,//施-有线
......
......@@ -74,4 +74,8 @@ public class AptitudeVo implements Serializable {
@Excel(name = "经营范围")
private String businessScope;
public AptitudeVo(String deptName) {
this.companyName = deptName.replace(" ", "");
}
}
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