Commit 34146c04 authored by danfuman's avatar danfuman

Merge branch 'dev20230707'

parents 04786c45 d1517056
......@@ -2,7 +2,7 @@ package com.dsk.web.controller.business;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessBacklog;
import com.dsk.system.domain.business.BusinessBacklog;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.service.IBusinessBacklogService;
import io.swagger.annotations.Api;
......@@ -11,8 +11,6 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 项目工作待办Controller
*
......@@ -36,8 +34,7 @@ public class BusinessBacklogController extends BaseController
public TableDataInfo list(BusinessBacklog businessBacklog)
{
startPage();
List<BusinessBacklog> list = businessBacklogService.selectBusinessBacklogList(businessBacklog);
return getDataTable(list);
return getDataTable(businessBacklogService.selectBusinessBacklogList(businessBacklog));
}
/**
......@@ -63,6 +60,15 @@ public class BusinessBacklogController extends BaseController
return toAjax(businessBacklogService.updateBusinessBacklog(businessBacklog));
}
/**
* 获取项目工作代办逾期数量
*/
@GetMapping("/overdue/count/{businessId}")
public AjaxResult overdueCount(@PathVariable Integer businessId)
{
return AjaxResult.success(businessBacklogService.overdueCount(businessId));
}
// /**
// * 导出项目工作待办列表
// */
......
......@@ -9,7 +9,7 @@ import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.file.FileUploadUtils;
import com.dsk.common.utils.file.FileUtils;
import com.dsk.framework.config.ServerConfig;
import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.business.dto.BusinessIdDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......
......@@ -4,8 +4,8 @@ import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessFollowRecord;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.BusinessListDto;
import com.dsk.system.domain.business.dto.BusinessIdDto;
import com.dsk.system.domain.business.dto.BusinessListDto;
import com.dsk.system.service.IBusinessFollowRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......
......@@ -4,9 +4,9 @@ import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessInfo;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.domain.BusinessAddDto;
import com.dsk.system.domain.BusinessListDto;
import com.dsk.system.domain.vo.BusinessListVo;
import com.dsk.system.domain.business.dto.BusinessAddDto;
import com.dsk.system.domain.business.dto.BusinessListDto;
import com.dsk.system.domain.business.vo.BusinessListVo;
import com.dsk.system.service.IBusinessInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......@@ -90,7 +90,7 @@ public class BusinessInfoController extends BaseController
/**
* 新增项目详情
*/
// @PreAuthorize("@ss.hasPermi('system:business:add')")
// @PreAuthorize("@ss.hasPermi('system:business:add')")Z
// @Log(title = "项目管理", businessType = BusinessType.INSERT)
@PostMapping("/add")
public AjaxResult add(@RequestBody BusinessAddDto dto)
......
......@@ -3,7 +3,7 @@ package com.dsk.web.controller.business;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessLabel;
import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.business.dto.BusinessIdDto;
import com.dsk.system.service.IBusinessLabelService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
......
......@@ -4,7 +4,7 @@ import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessRelateCompany;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.business.dto.BusinessIdDto;
import com.dsk.system.service.IBusinessRelateCompanyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......
package com.dsk.web.controller.customer;
import com.dsk.common.annotation.RepeatSubmit;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.domain.customer.ContactInfo;
import com.dsk.system.domain.customer.dto.ContactInfoSearchDto;
import com.dsk.system.service.IContactInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* 联系人(ContactInfo)表控制层
*
* @author makejava
* @since 2023-07-25 17:18:00
*/
@RestController
@RequestMapping("/contact/info")
public class ContactInfoController extends BaseController {
/**
* 服务对象
*/
@Autowired
private IContactInfoService baseService;
/**
* 联系人列表
*/
// @PreAuthorize("@ss.hasPermi('contact:list')")
@GetMapping("/list")
public TableDataInfo selectPageList(ContactInfoSearchDto dto){
startPage();
return getDataTable(baseService.selectList(dto));
}
/**
* 联系人详情
*/
// @PreAuthorize("@ss.hasPermi('contact:info')")
@GetMapping("/{id}")
public AjaxResult info(@PathVariable Long id){
return AjaxResult.success(baseService.selectById(id));
}
/**
* 添加用户联系人
*/
// @PreAuthorize("@ss.hasPermi('contact:add')")
@PostMapping()
@RepeatSubmit()
public AjaxResult add(@RequestBody ContactInfo baen){
return AjaxResult.success(baseService.insert(baen));
}
/**
* 编辑用户联系人
*/
// @PreAuthorize("@ss.hasPermi('contact:edit')")
@PutMapping()
@RepeatSubmit()
public AjaxResult edit(@RequestBody ContactInfo baen){
return AjaxResult.success(baseService.update(baen));
}
/**
* 删除用户联系人
*/
// @PreAuthorize("@ss.hasPermi('contact:del')")
@DeleteMapping("/{id}")
@RepeatSubmit()
public AjaxResult del(@PathVariable("id") Long id){
return AjaxResult.success(baseService.deleteById(id));
}
}
......@@ -14,8 +14,8 @@ import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.system.domain.customer.Customer;
import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto;
import com.dsk.system.domain.customer.dto.CustomerSearchDto;
import com.dsk.system.searchService.BusinessOpportunityRadarService;
import com.dsk.system.service.ICustomerService;
import com.dsk.web.controller.search.service.BusinessOpportunityRadarService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.ObjectUtils;
......@@ -39,8 +39,8 @@ public class CustomerController extends BaseController {
@Autowired
private ICustomerService baseService;
@Autowired
private BusinessOpportunityRadarService opportunityRadarService;
// @Autowired
// private BusinessOpportunityRadarService opportunityRadarService;
/**
* 查询客户列表
......@@ -68,7 +68,6 @@ public class CustomerController extends BaseController {
@PostMapping()
@RepeatSubmit
public AjaxResult add(@RequestBody Customer customer) {
dealWithcustomerData(customer);
return toAjax(baseService.add(customer));
}
......@@ -80,7 +79,6 @@ public class CustomerController extends BaseController {
@RepeatSubmit
public AjaxResult claim(@RequestBody Customer customer) {
if (ObjectUtils.isEmpty(customer.getUipId())) throw new BeanException("城投uipId不能为空");
dealWithcustomerData(customer);
boolean add = baseService.add(customer);
if (add) {
Map<String, Object> map = new HashMap<>();
......@@ -90,43 +88,6 @@ public class CustomerController extends BaseController {
return AjaxResult.error();
}
private void dealWithcustomerData(Customer customer) {
if (ObjectUtils.isEmpty(customer.getCompanyName())) throw new BeanException("企业名称不能为空");
if (ObjectUtils.isEmpty(customer.getCompanyId())) {
try {
Map<String, Object> map = opportunityRadarService.enterpriseByName(customer.getCompanyName());
if (!ObjectUtils.isEmpty(map.get("data"))) {
customer.setCompanyId(MapUtil.getInt(BeanUtil.beanToMap(map.get("data")), "jskEid"));
if (ObjectUtils.isEmpty(customer.getLegalPerson())) {
customer.setLegalPerson(MapUtil.getStr(map, "legalPerson"));
}
if (ObjectUtils.isEmpty(customer.getRegisterCapital())) {
customer.setRegisterCapital(MapUtil.getStr(map, "registeredCapitalStr"));
}
if (ObjectUtils.isEmpty(customer.getProvinceId())) {
customer.setProvinceId(MapUtil.getInt(map, "provinceId"));
}
if (ObjectUtils.isEmpty(customer.getCityId())) {
customer.setCityId(MapUtil.getInt(map, "cityId"));
}
if (ObjectUtils.isEmpty(customer.getDistrictId())) {
customer.setDistrictId(MapUtil.getInt(map, "countyId"));
}
if (ObjectUtils.isEmpty(customer.getRegisterAddress())) {
customer.setRegisterAddress(MapUtil.getStr(map, "domicile"));
}
if (ObjectUtils.isEmpty(customer.getCreditCode())) {
customer.setCreditCode(MapUtil.getStr(map, "creditCode"));
}
}
} catch (Exception e) {
logger.debug("获取企业id错误!error:{}", e.getMessage());
}
}
}
/**
* 编辑客户
*/
......@@ -167,21 +128,21 @@ public class CustomerController extends BaseController {
continue;
}
try {
Map<String, Object> map = opportunityRadarService.enterpriseByName(customer.getCompanyName());
if (ObjectUtils.isEmpty(map)) {
throw new HttpException("远程调用匹配接口失败!");
}
Map<String, Object> obj = BeanUtil.beanToMap(map.get("data"));
if (!ObjectUtils.isEmpty(obj)) {
customer.setCompanyId(MapUtil.getInt(obj, "jskEid"));
customer.setLegalPerson(MapUtil.getStr(obj, "legalPerson"));
customer.setRegisterCapital(MapUtil.getStr(obj, "registeredCapitalStr"));
customer.setProvinceId(MapUtil.getInt(obj, "provinceId"));
customer.setCityId(MapUtil.getInt(obj, "cityId"));
customer.setDistrictId(MapUtil.getInt(obj, "countyId"));
customer.setRegisterAddress(MapUtil.getStr(obj, "domicile"));
customer.setCreditCode(MapUtil.getStr(obj, "creditCode"));
}
// Map<String, Object> map = opportunityRadarService.enterpriseByName(customer.getCompanyName());
// if (ObjectUtils.isEmpty(map)) {
// throw new HttpException("远程调用匹配接口失败!");
// }
// Map<String, Object> obj = BeanUtil.beanToMap(map.get("data"));
// if (!ObjectUtils.isEmpty(obj)) {
// customer.setCompanyId(MapUtil.getInt(obj, "jskEid"));
// customer.setLegalPerson(MapUtil.getStr(obj, "legalPerson"));
// customer.setRegisterCapital(MapUtil.getStr(obj, "registeredCapitalStr"));
// customer.setProvinceId(MapUtil.getInt(obj, "provinceId"));
// customer.setCityId(MapUtil.getInt(obj, "cityId"));
// customer.setDistrictId(MapUtil.getInt(obj, "countyId"));
// customer.setRegisterAddress(MapUtil.getStr(obj, "domicile"));
// customer.setCreditCode(MapUtil.getStr(obj, "creditCode"));
// }
baseService.add(customer);
successCount++;
} catch (Exception e) {
......
......@@ -3,9 +3,7 @@ package com.dsk.web.controller.search.controller;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.common.dtos.Page;
import com.dsk.web.controller.search.service.BusinessOpportunityRadarService;
import com.dsk.web.controller.search.service.MarketAnalysisService;
import com.dsk.system.searchService.BusinessOpportunityRadarService;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -87,6 +85,18 @@ public class BusinessOpportunityRadarController {
return opportunityRadarService.jskBidNewsPage(object);
}
/*
* 标讯pro 商机项目关联查询
*/
@RequestMapping("/jskBidNewsPage/findByName")
public AjaxResult findByName(@RequestBody JSONObject object) {
ComposeQueryDto compose = JSONObject.parseObject(object.toJSONString(), ComposeQueryDto.class);
if (PageQueryLimit.pageLimit(compose.getPage())){
return AjaxResult.error("翻页已达到上限");
}
return opportunityRadarService.findByName(object);
}
/*
* 专项债查询
......
......@@ -4,7 +4,7 @@ import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.web.controller.search.service.BusinessOpportunityRadarService;
import com.dsk.system.searchService.BusinessOpportunityRadarService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
......
......@@ -4,8 +4,7 @@ import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.web.controller.search.service.MarketAnalysisService;
import com.dsk.system.searchService.MarketAnalysisService;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......
package com.dsk.web.controller.search.service;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.ComposeQueryDto;
/**
* @Author liujie
* @ClassName MarketAnalysisService
* @Date 2023/5/15 16:39
**/
public interface BusinessOpportunityRadarService {
AjaxResult jskBidNewsPage(JSONObject object);
AjaxResult jskBidTenderPage(JSONObject object);
AjaxResult jskBidPage(JSONObject object);
AjaxResult landMarketPage( JSONObject object);
AjaxResult establishmentPage(JSONObject object);
AjaxResult enterpriseIndex(JSONObject object);
AjaxResult enterpriseByName(String keyword);
AjaxResult enterprisePage(JSONObject object);
AjaxResult bondProjectPage( JSONObject object);
AjaxResult jskBidPlanPage( JSONObject object);
AjaxResult getCapitalSourceSelect();
AjaxResult keywordList();
AjaxResult bidSourceList( JSONObject object);
}
//package com.dsk.web.controller.search.service;
//
//import com.alibaba.fastjson2.JSONObject;
//import com.dsk.common.core.domain.AjaxResult;
//import com.dsk.common.dtos.ComposeQueryDto;
//
///**
// * @Author liujie
// * @ClassName MarketAnalysisService
// * @Date 2023/5/15 16:39
// **/
//public interface BusinessOpportunityRadarService {
//
//
// AjaxResult jskBidNewsPage(JSONObject object);
//
// AjaxResult jskBidTenderPage(JSONObject object);
//
// AjaxResult jskBidPage(JSONObject object);
//
// AjaxResult landMarketPage( JSONObject object);
//
// AjaxResult establishmentPage(JSONObject object);
//
// AjaxResult enterpriseIndex(JSONObject object);
//
// AjaxResult enterpriseByName(String keyword);
//
// AjaxResult enterprisePage(JSONObject object);
//
// AjaxResult bondProjectPage( JSONObject object);
//
// AjaxResult jskBidPlanPage( JSONObject object);
//
// AjaxResult getCapitalSourceSelect();
//
// AjaxResult keywordList();
//
// AjaxResult bidSourceList( JSONObject object);
//
//}
package com.dsk.web.controller.search.service;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.ComposeQueryDto;
/**
* @Author liujie
* @ClassName MarketAnalysisService
* @Date 2023/5/15 16:39
**/
public interface MarketAnalysisService {
AjaxResult areaGroupByProvince();
AjaxResult certGroupByMajorAndLevel();
AjaxResult certGroupByMajorProvinceLevel();
AjaxResult countGroupByProvince(JSONObject object);
AjaxResult countGroupByMonth(JSONObject object);
AjaxResult bidMoneyGroupByProjectType(JSONObject object);
AjaxResult bidGroupCountByProjectType(JSONObject object);
}
//package com.dsk.web.controller.search.service;
//
//import com.alibaba.fastjson2.JSONObject;
//import com.dsk.common.core.domain.AjaxResult;
//import com.dsk.common.dtos.ComposeQueryDto;
//
///**
// * @Author liujie
// * @ClassName MarketAnalysisService
// * @Date 2023/5/15 16:39
// **/
//public interface MarketAnalysisService {
//
// AjaxResult areaGroupByProvince();
//
// AjaxResult certGroupByMajorAndLevel();
//
// AjaxResult certGroupByMajorProvinceLevel();
//
// AjaxResult countGroupByProvince(JSONObject object);
//
// AjaxResult countGroupByMonth(JSONObject object);
//
// AjaxResult bidMoneyGroupByProjectType(JSONObject object);
//
// AjaxResult bidGroupCountByProjectType(JSONObject object);
//}
package com.dsk.web.controller.search.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.web.controller.search.service.BusinessOpportunityRadarService;
import com.dsk.web.controller.search.service.MarketAnalysisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
* @Author liujie
* @ClassName MarketAnalysisServiceImpl
* @Date 2023/5/15 16:40
**/
@Service
public class BusinessOpportunityRadarServiceImpl implements BusinessOpportunityRadarService {
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
@Override
public AjaxResult jskBidNewsPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/news/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult jskBidTenderPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidTender/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult establishmentPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/establishment/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult jskBidPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/page",object);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult landMarketPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/landMarket/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult enterpriseIndex(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/index", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult enterprisePage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/page",object);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult enterpriseByName(String keyword){
Map<String,Object> params = new HashMap<>();
params.put("keyword",keyword);
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/findByName", params);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult bondProjectPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/bondProject/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult jskBidPlanPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidPlan/page",object);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult getCapitalSourceSelect() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidPlan/getCapitalSourceSelect", null);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult keywordList() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/project/keywordList", null);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult bidSourceList(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/source",object);
return BeanUtil.toBean(map, AjaxResult.class);
}
}
//package com.dsk.web.controller.search.service.impl;
//
//import cn.hutool.core.bean.BeanUtil;
//import com.alibaba.fastjson2.JSONObject;
//import com.dsk.common.core.domain.AjaxResult;
//import com.dsk.common.dtos.ComposeQueryDto;
//import com.dsk.common.utils.DskOpenApiUtil;
//import com.dsk.web.controller.search.service.BusinessOpportunityRadarService;
//import com.dsk.web.controller.search.service.MarketAnalysisService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.util.HashMap;
//import java.util.Map;
//
///**
// * @Author liujie
// * @ClassName MarketAnalysisServiceImpl
// * @Date 2023/5/15 16:40
// **/
//@Service
//public class BusinessOpportunityRadarServiceImpl implements BusinessOpportunityRadarService {
//
// @Autowired
// private DskOpenApiUtil dskOpenApiUtil;
//
//
// @Override
// public AjaxResult jskBidNewsPage(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/news/page", object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
//
// @Override
// public AjaxResult jskBidTenderPage(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidTender/page", object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// @Override
// public AjaxResult establishmentPage(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/establishment/page", object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// @Override
// public AjaxResult jskBidPage(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/page",object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// @Override
// public AjaxResult landMarketPage(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/landMarket/page", object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// @Override
// public AjaxResult enterpriseIndex(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/index", object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// @Override
// public AjaxResult enterprisePage(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/page",object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
//
// @Override
// public AjaxResult enterpriseByName(String keyword){
// Map<String,Object> params = new HashMap<>();
// params.put("keyword",keyword);
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/findByName", params);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// @Override
// public AjaxResult bondProjectPage(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/bondProject/page", object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// @Override
// public AjaxResult jskBidPlanPage(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidPlan/page",object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// @Override
// public AjaxResult getCapitalSourceSelect() {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidPlan/getCapitalSourceSelect", null);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// @Override
// public AjaxResult keywordList() {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/project/keywordList", null);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// @Override
// public AjaxResult bidSourceList(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/source",object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//}
package com.dsk.web.controller.search.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.R;
import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.common.utils.http.HttpUtils;
import com.dsk.web.controller.search.service.MarketAnalysisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* @Author liujie
* @ClassName MarketAnalysisServiceImpl
* @Date 2023/5/15 16:40
**/
@Service
public class MarketAnalysisServiceImpl implements MarketAnalysisService {
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
@Override
public AjaxResult areaGroupByProvince() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/areaGroupByProvince", null);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult certGroupByMajorAndLevel() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/certGroupByMajorAndLevel", null);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult certGroupByMajorProvinceLevel() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/certGroupByMajorProvinceLevel", null);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult bidMoneyGroupByProjectType(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/bidMoneyGroupByProjectType", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult bidGroupCountByProjectType(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/bidGroupCountByProjectType", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult countGroupByProvince(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countGroupByProvince", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult countGroupByMonth(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countGroupByMonth", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
}
//package com.dsk.web.controller.search.service.impl;
//
//import cn.hutool.core.bean.BeanUtil;
//import com.alibaba.fastjson2.JSONObject;
//import com.dsk.common.core.domain.AjaxResult;
//import com.dsk.common.core.domain.R;
//import com.dsk.common.dtos.ComposeQueryDto;
//import com.dsk.common.utils.DskOpenApiUtil;
//import com.dsk.common.utils.http.HttpUtils;
//import com.dsk.web.controller.search.service.MarketAnalysisService;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.util.Map;
//
///**
// * @Author liujie
// * @ClassName MarketAnalysisServiceImpl
// * @Date 2023/5/15 16:40
// **/
//@Service
//public class MarketAnalysisServiceImpl implements MarketAnalysisService {
//
// @Autowired
// private DskOpenApiUtil dskOpenApiUtil;
// @Override
// public AjaxResult areaGroupByProvince() {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/areaGroupByProvince", null);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// @Override
// public AjaxResult certGroupByMajorAndLevel() {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/certGroupByMajorAndLevel", null);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
//
// @Override
// public AjaxResult certGroupByMajorProvinceLevel() {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/certGroupByMajorProvinceLevel", null);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
//
// @Override
// public AjaxResult bidMoneyGroupByProjectType(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/bidMoneyGroupByProjectType", object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// @Override
// public AjaxResult bidGroupCountByProjectType(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/bidGroupCountByProjectType", object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// @Override
// public AjaxResult countGroupByProvince(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countGroupByProvince", object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//
// @Override
// public AjaxResult countGroupByMonth(JSONObject object) {
// Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countGroupByMonth", object);
// return BeanUtil.toBean(map, AjaxResult.class);
// }
//}
spring:
profiles:
active: pre
active: test
# MyBatisPlus配置
# https://baomidou.com/config/
......
......@@ -164,6 +164,28 @@ public class BusinessInfo extends BaseEntity
/** 主管单位联系电话 */
@Excel(name = "主管单位联系电话")
private String supervisorPhone;
/** 建设单位城投id */
@Excel(name = "建设单位城投id")
private String constructionUnitUipId;
/** 建设单位建设库id */
@Excel(name = "建设单位建设库id")
private Integer constructionUnitCid;
public String getConstructionUnitUipId() {
return constructionUnitUipId;
}
public void setConstructionUnitUipId(String constructionUnitUipId) {
this.constructionUnitUipId = constructionUnitUipId;
}
public Integer getConstructionUnitCid() {
return constructionUnitCid;
}
public void setConstructionUnitCid(Integer constructionUnitCid) {
this.constructionUnitCid = constructionUnitCid;
}
public String getConstructionUnit() {
return constructionUnit;
......@@ -514,6 +536,8 @@ public class BusinessInfo extends BaseEntity
.append("supervisorUnit", getSupervisorUnit())
.append("supervisorPrincipal", getSupervisorPrincipal())
.append("supervisorPhone", getSupervisorPhone())
.append("constructionUnitUipId", getConstructionUnitUipId())
.append("constructionUnitCid", getConstructionUnitCid())
.toString();
}
}
......@@ -2,14 +2,11 @@ package com.dsk.common.core.domain.entity;
import com.dsk.common.annotation.Excel;
import com.dsk.common.core.domain.BaseEntity;
import com.dsk.common.utils.CheckUtils;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.Pattern;
/**
* 项目关联单位对象 business_relate_company
*
......@@ -29,10 +26,14 @@ public class BusinessRelateCompany extends BaseEntity
@Excel(name = "项目id")
private Integer businessId;
/** 单位id */
@Excel(name = "单位id")
/** 单位建设库id */
@Excel(name = "单位建设库id")
private Integer companyId;
/** 单位城投id */
@Excel(name = "单位城投id")
private String companyUipId;
/** 单位名称 */
@Excel(name = "单位名称")
private String companyName;
......@@ -53,35 +54,6 @@ public class BusinessRelateCompany extends BaseEntity
@Excel(name = "对接深度/竞争力度")
private String depth;
/** 企业类型 */
@Excel(name = "企业类型")
private String companyType;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("businessId", getBusinessId())
.append("companyId", getCompanyId())
.append("companyName", getCompanyName())
.append("companyRole", getCompanyRole())
.append("responsiblePerson", getResponsiblePerson())
.append("phone", getPhone())
.append("createTime", getCreateTime())
.append("updateTime", getUpdateTime())
.append("depth", getDepth())
.append("companyType", getCompanyType())
.toString();
}
public BusinessRelateCompany(Integer businessId, Integer companyId, String companyName, String companyRole) {
this.businessId = businessId;
this.companyId = companyId;
this.companyName = companyName;
this.companyRole = companyRole;
}
public BusinessRelateCompany(Integer businessId) {
this.businessId = businessId;
}
/** 是否业主单位 0:否 1:是 */
private Integer isProprietor;
}
package com.dsk.common.core.domain.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.dsk.common.annotation.Excel;
import com.dsk.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
......@@ -11,11 +17,16 @@ import org.apache.commons.lang3.builder.ToStringStyle;
* @author lxl
* @date 2023-05-17
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("business_user")
public class BusinessUser extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
@TableId(value = "id",type = IdType.INPUT)
private Integer id;
/** 项目id(business_info表id) */
......@@ -24,76 +35,17 @@ public class BusinessUser extends BaseEntity
/** 部门id */
@Excel(name = "部门id")
private Integer deptId;
private Long deptId;
/** 用户id */
@Excel(name = "用户id")
private Integer userId;
private Long userId;
/** 是否创建人(1 是,0 否) */
@Excel(name = "是否创建人(1 是,0 否)")
private Integer isFounder;
public void setId(Integer id)
{
this.id = id;
}
public Integer getId()
{
return id;
}
public void setBusinessId(Integer businessId)
{
this.businessId = businessId;
}
public Integer getBusinessId()
{
return businessId;
}
public void setDeptId(Integer deptId)
{
this.deptId = deptId;
}
public Integer getDeptId()
{
return deptId;
}
public void setUserId(Integer userId)
{
this.userId = userId;
}
public Integer getUserId()
{
return userId;
}
public void setIsFounder(Integer isFounder)
{
this.isFounder = isFounder;
}
public Integer getIsFounder()
{
return isFounder;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("businessId", getBusinessId())
.append("deptId",getDeptId() )
.append("userId", getUserId())
.append("isFounder", getIsFounder())
.append("createTime", getCreateTime())
.append("updateTime", getUpdateTime())
.toString();
}
public BusinessUser(Integer businessId, Integer deptId, Integer userId, Integer isFounder) {
public BusinessUser(Integer businessId, Long deptId, Long userId, Integer isFounder) {
this.businessId = businessId;
this.deptId = deptId;
this.userId = userId;
......
......@@ -21,6 +21,8 @@ public class EnterpriseInvestmentBody extends BasePage {
private Integer hasBid;
private double stockPercentageMin;
private double stockPercentageMax;
//搜索-企业名称
private String keyword;
public boolean isVaildCid() {
return 0 == cid;
......
......@@ -5,9 +5,7 @@ import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.validation.constraints.AssertFalse;
import javax.validation.constraints.NotNull;
import java.util.List;
@Data
@ToString
......@@ -25,6 +23,11 @@ public class EnterpriseProjectApprovalProjectPageBody extends BasePage {
*/
private String keys;
/**
* 是否为民介0(否),1(是)
*/
private String isProject;
/*
* 1金额倒序,2金额正序,3计划开工时间倒序,4计划开工时间正序,13计划完工时间倒序,14计划完工时间正序
......
package com.dsk.common.utils;
import java.math.BigDecimal;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
......@@ -51,7 +52,8 @@ public class CheckUtils {
* @return
*/
public static int checkIntegerPlaces(Double number) {
String strNumber = Double.toString(Math.abs(number));
BigDecimal bigDecimal = new BigDecimal(String.valueOf(number));
String strNumber = bigDecimal.toString();
int integerPlaces = strNumber.indexOf('.');
if (integerPlaces == -1) {
return strNumber.length();
......@@ -66,7 +68,8 @@ public class CheckUtils {
* @return
*/
public static int checkDecimalPlaces(Double number) {
String strNumber = Double.toString(Math.abs(number));
BigDecimal bigDecimal = new BigDecimal(String.valueOf(number));
String strNumber = bigDecimal.toString();
int decimalPlaces = 0;
int index = strNumber.indexOf('.');
if (index != -1) {
......
import request from "@/utils/request";
// 投标记录列表
export function getBiddetail(data) {
return request({
url: '/enterpriseBussiness/projectDetail',
method: 'post',
data: data
})
}
\ No newline at end of file
......@@ -158,6 +158,15 @@ export function addXGQY(param) {
})
}
//编辑相关企业
export function saveXGQY(param) {
return request({
url: '/business/company/edit',
method: 'POST',
data:param
})
}
//删除相关企业
export function delXGQY(param) {
return request({
......
......@@ -394,8 +394,11 @@ ul, li {
}
}
}
}
}
.el-table__body tr.hover-row > td.el-table__cell{
background-color: #DCEBFF;
}
.common-title{
border-left: 2px solid #445781;
padding-left: 8px;
......@@ -524,15 +527,15 @@ ul, li {
line-height: 50px;
height: 50px;
}
.el-tabs__item.is-disabled {
color: #C0C4CC;
cursor: not-allowed;
}
.is-active{
color: #0081FF;
font-weight: bold;
}
}
.el-tabs__item.is-disabled {
color: #C0C4CC;
cursor: not-allowed;
}
//按钮
.btn{
margin-left: 8px;
......
......@@ -33,7 +33,7 @@
box-shadow: 0px 0px 8px 0px rgba(0,0,0,0.12);
border-radius: 2px;
position: absolute;
z-index: 3;
z-index: 20;
text-align: center;
.words{
padding: 24px 0;
......@@ -459,10 +459,10 @@
opacity: 0.8;
padding: 0;
}
.el-input{
.el-input,.el-textarea{
display: inline-block;
width: 240px;
.el-input__inner{
.el-input__inner,.el-textarea__inner{
width: 100%;
height: 32px;
border-radius: 0px;
......@@ -471,6 +471,11 @@
border-color: #0081FF;
}
}
.el-textarea__inner{
height: 90px;
font-family: inherit;
color: #000;
}
.el-input__suffix{
height: 32px;
}
......@@ -500,9 +505,15 @@
width: 80px;
}
}
.row.i{
.el-form-item__label{
line-height: 18px;
text-align: left;
}
}
}
.popform.i{
.el-input{
.el-input,.el-textarea{
width: 335px;
}
}
......@@ -907,6 +918,9 @@
.xz{
opacity: 0.8;
}
.xg{
//color: #FF3C3C;
}
.sc{
color: #FF3C3C;
}
......@@ -994,7 +1008,7 @@
position: fixed;
top: 0;
left: 0;
z-index: 3;
z-index: 10;
.upload{
width: 528px;
height: 430px;
......
......@@ -13,7 +13,7 @@
mode="vertical"
>
<sidebar-item
v-for="(route, index) in sidebarRouters"
v-for="(route, index) in hidechildren"
:key="route.path + index"
:is-collapse="isCollapse"
......@@ -49,6 +49,18 @@ export default {
computed: {
...mapState(["settings"]),
...mapGetters(["sidebarRouters", "sidebar"]),
hidechildren(){
return this.sidebarRouters.map(item=>{
if(item.children?.length){
item.children = item.children.filter(i=>{
if (typeof (i.hidden) == 'boolean' && i.hidden == false || i.path == "index"){
return i
}
})
}
return item
})
},
activeMenu() {
const route = this.$route;
const { meta, path } = route;
......
......@@ -390,8 +390,8 @@ export default {
height: 17px;
justify-content: center;
width: 36px;
right: -46px;
bottom: 10px;
right: -130px;
bottom: 0px;
cursor: pointer;
text-align: center;
&:hover{
......
......@@ -145,6 +145,20 @@ export const constantRoutes = [
}
]
},
{
path: '/biddetail',
component: Layout,
hidden: true,
redirect: 'noredirect',
children: [
{
path: '/biddetail/:id(\\d+)',
component: () => import('@/views/detail//biddetail/index'),
name: 'Biddetail',
meta: { title: '中标业绩详情',icon: 'enterprise'}
}
]
},
{
path: '/financing',
component: Layout,
......
......@@ -104,7 +104,7 @@
label="注册资本金(万元)"
width="140">
<template slot-scope="scope">
{{scope.row.registerCapital || '--'}}
<span v-if="scope.row.registerCapital && scope.row.registerCapital>0">{{scope.row.registerCapital}}</span><span v-else>--</span>
</template>
</el-table-column>
<el-table-column
......@@ -313,9 +313,18 @@
}
},
created() {
this.$watch(
() => this.$route.params,
() => {
this.getCustomerList()
this.getDictType()
this.prvinceTree()
this.searchParam.companyName=''
},
// 组件创建完后获取数据,
// 此时 data 已经被 observed 了
{ immediate: true }
)
},
methods:{
sq1(item,sq){
......
......@@ -93,7 +93,7 @@
label="注册资本金(万元)"
width="140">
<template slot-scope="scope">
{{scope.row.registerCapital || '--'}}
<span v-if="scope.row.registerCapital && scope.row.registerCapital>0">{{scope.row.registerCapital}}</span><span v-else>--</span>
</template>
</el-table-column>
<el-table-column
......@@ -243,8 +243,13 @@ export default {
}
},
created() {
this.$watch(
() => this.$route.params,
() => {
this.getCustomerList()
this.getDictType()
this.searchParam.companyName = ''
},{ immediate: true })
},
methods:{
sq1(item,sq){
......
......@@ -33,7 +33,7 @@
</div>
</div>
<div class="flex">
<el-card class="box-card noborder left" style="position: relative">
<el-card class="box-card noborder left" style="position: relative;padding-bottom: 0">
<div class="cardtitles">客户级别</div>
<div class="chartsum">
<div class="sum">23家</div>
......@@ -67,7 +67,7 @@
</el-card>
<el-card class="box-card noborder right">
<el-card class="box-card noborder right" style="padding-bottom: 0">
<div class="cardtitles">客户跟进动态
<div class="labels">
<div :class="{'on':datatype==1}" @click="getDT(1)">周</div>
......@@ -259,11 +259,11 @@
{
name: '',
type: 'bar',
barWidth: '12px',
barWidth: '18px',
data: [100, 152, 200, 334, 390, 330, 220,256,178],
itemStyle:{
normal: {
barBorderRadius: [4, 4, 0, 0],
barBorderRadius: [9, 9, 0, 0],
color: '#165DFF'
}
}
......@@ -316,11 +316,11 @@
{
name: '',
type: 'bar',
barWidth: '12px',
barWidth: '18px',
data: [110, 112, 190, 234, 310, 350, 220,276,198],
itemStyle:{
normal:{
barBorderRadius:[4,4,0,0],
barBorderRadius:[9,9,0,0],
color:'#14C9C9'
},
}
......@@ -367,7 +367,7 @@
left:'8%',
top:'8%',
right:'5%',
bottom:'10%',
bottom:'42px',
},
tooltip:{
axisPointer:{ //悬浮于圆点展示标签
......
<template>
<div class="app-container qyzx-details">
<div class="bottomlist">
<ul class="bottomlist-content">
<li class="bottomlist-list" >
<p class="list-titel">
{{info.projectAllName}}
</p>
<div class="list-content" v-if="info.winBidTime">
<p class="list-content-text" >
<span>中标时间:</span>
<span >{{info.winBidTime}}</span>
</p>
</div>
<div class="list-content-img" @mouseenter="showimg=false" @mouseleave="showimg=true">
<img v-if="showimg" src="@/assets/images/bxpro/original1.png">
<img v-else src="@/assets/images/bxpro/original.png">
<span>
<a :href="info.sourceUrl" target="_blank">原文链接</a>
</span>
</div>
</li>
</ul>
</div>
<div class="content main3">
<div class="common-title">信息详情</div>
<div class="biddetail-title">中标信息</div>
<div class="main31-box">
<p>
<label class="label">中标企业</label>
<span>
<router-link v-if="info.companyName" :to="info.uipId?'/enterprise/' + encodeStr(info.companyId) :'/company/' + encodeStr(info.companyId) " tag="a" class="list-titel-a blue" v-html="info.companyName"></router-link>
<span v-else>--</span>
</span>
<label class="label">中标时间</label>
<span>{{info.winBidTime||"--"}}</span>
<label class="label">中标金额</label>
<span>{{info.winBidAmount||"--"}}</span>
</p>
<p>
<label class="label">项目负责人</label>
<span>{{info.staffName||"--"}}</span>
<label class="label">中标地区</label>
<span>{{info.region||"--"}}</span>
<label class="label">项目类型</label>
<span>{{info.projectTypeNew||"--"}}</span>
</p>
<p>
<label class="label">工期(天)</label>
<span>{{info.period||"--"}}</span>
<label class="label">下浮率(%)</label>
<span>{{info.lowerRate||"--"}}</span>
<label class="label">建设性质</label>
<span>{{info.projectNature||"--"}}</span>
</p>
</div>
<div class="biddetail-title">招标信息</div>
<div class="main31-box">
<p>
<label class="label">招标单位</label>
<span class="span1">
<router-link v-if="info.projectUnit" :to="info.uipId?'/enterprise/' + encodeStr(info.projectUnitId) :'/company/' + encodeStr(info.projectUnitId) " tag="a" class="list-titel-a blue" v-html="info.projectUnit"></router-link>
<span v-else>--</span>
</span>
<label class="label label1">招标代理机构</label>
<span class="span1">{{info.agency||"--"}}</span>
</p>
</div>
<div class="tip">
<span>温馨提示:</span>本栏信息全部来自政府建设主管单位,可作为该公司资质电报、招标投标业绩核实、优质工程(奖杯)申请、信用评估等用途使用。
</div>
</div>
<div class="content main3">
<div class="common-title">信息快照</div>
<div class="main3-box" >
<img class="tip-img" :src="'https://imgs.jiansheku.com/'+info.snapshootPic" v-if="info.snapshootPic" />
<div v-else class="no-data">
<div class="no-data-box" >
<img :src="noData" alt="暂时没有找到相关数据" />
<span>暂时没有找到相关数据</span>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import "@/assets/styles/public.css";
import {encodeStr} from "@/assets/js/common.js"
import {getBiddetail} from '@/api/detail/party-a/biddetail.js';
export default {
name: 'Biddetail',
data() {
return {
encodeStr,
id: '',
info:{},
showimg:true,
noData: require("@/assets/images/detail/noData.png")
}
},
created() {
this.id = this.$route.params.id;
this.biddetail();
},
methods:{
biddetail(){
getBiddetail({
id: this.id
}).then(res => {
if(res.code==200){
this.info = res.data
}
}).catch(error => {
});
}
}
}
</script>
<style lang="scss" scoped>
.bottomlist {
width: 100%;
background-color: #FFFFFF;
border-radius: 4px 4px 4px 4px;
.bottomlist-title {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 12px;
padding: 16px;
border-bottom: 1px solid #EFEFEF;
.title-right {
display: flex;
align-items: center;
p:first-child {
font-size: 12px;
font-weight: 400;
color: #3D3D3D;
margin-right: 10px;
}
p:last-child {
display: flex;
align-items: center;
font-size: 14px;
font-weight: 400;
color: rgba(35, 35, 35, 0.8);
}
img {
width: 18px;
height: 18px;
}
}
}
.bottomlist-content {
padding-bottom: 0px;
}
.bottomlist-list {
padding: 16px;
font-size: 14px;
border-bottom: 1px solid #EFEFEF;
padding-bottom: 14px;
.list-titel {
font-size: 16px;
font-weight: 700;
color: #3D3D3D;
line-height: 19px;
.list-titel-a {
text-decoration: none;
color: #3D3D3D;
}
a:hover,
a:visited,
a:link,
a:active {
color: #3D3D3D;
}
}
.content-label {
margin-top: 12px;
.list-label {
background: #F3F3FF;
color: #8491E8;
border-radius: 1px 1px 1px 1px;
margin-right: 12px;
padding: 3px 7px;
font-size: 12px;
}
.list-label-zb{
font-weight: 400;
color: #5A88F9;
background: #E7EDFC;
}
.list-label-lx{
font-weight: 400;
color: #41A1FD;
background: #E4F3FD;
}
}
.list-content {
margin-top: 6px;
display: flex;
justify-content: start;
align-items: center;
.list-content-text {
margin-top: 7px;
display: flex;
justify-content: start;
align-items: center;
margin-right: 27px;
font-size: 14px;
span:first-child {
font-weight: 400;
color: rgba(35, 35, 35, 0.4);
line-height: 15px
}
span:last-child {
font-weight: 400;
color: rgba(35, 35, 35, 0.8);
line-height: 15px
}
.blue {
color: #0081FF !important;
cursor: pointer;
}
}
}
.list-addree {
width: auto;
background: #F3F4F5;
display: inline-flex;
margin-top: 7px;
.list-content-text {
margin-top: 0px;
span {
line-height: 30px !important;
}
}
img {
width: 14px;
margin: 0 8px;
}
}
.list-content-img{
position: absolute;
top: 16px;
right:40px ;
color: #0081FF;
display: flex;
align-items: center;
font-size: 14px;
cursor: pointer;
img{
width: 14px;
height: 14px;
margin-right: 4px;
}
}
.list-content-img:hover{
color: #0067CC;
}
}
.bottomlist-list:hover {
background: #F6F9FC;
cursor: pointer;
}
.pagination {
padding: 14px;
.el-pagination {
float: right;
}
}
}
.app-container {
padding: 0;
}
.qyzx-details {
.content {
margin-top: 16px;
background: #FFFFFF;
padding: 16px;
border-radius: 4px;
}
.common-title {
margin-bottom: 16px;
}
.biddetail-title{
color: #232323;
font-size: 14px;
height: 14px;
line-height: 14px;
margin-top: 8px;
}
.tip{
font-size: 12px;
color: rgba(35, 35, 35, 0.80);
span{
color: rgba(35, 35, 35, 0.40);
}
}
.main3 {
position: relative;
.main3-box {
margin-top: 22px;
min-height: 400px;
border: 1px solid #D8D8D8;
img{
width: 100%;
}
.no-data {
font-size: 14px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: #999999;
width: 100%;
height: 400px;
display: flex;
justify-content: center;
align-items: center;
background: #ffffff;
.no-data-box {
display: flex;
flex-direction: column;
align-items: center;
img {
width: 64px;
height: 79px;
margin-bottom: 16px;
}
}
}
}
.main31-box {
margin-top: 16px;
margin-bottom: 16px;
border-top: 1px solid #E6E9F0;
p {
display: flex;
align-items: center;
margin: 0;
border-left: 1px solid #E6E9F0;
border-right: 1px solid #E6E9F0;
border-bottom: 1px solid #E6E9F0;
background: #F0F3FA;
.label {
width: 11.1%;
height: 100%;
font-weight: 400;
line-height: 22px;
font-size: 12px;
padding: 9px 12px;
}
.label1{
width: 10%;
}
span {
width: 22.3%;
color: #000;
line-height: 22px;
padding: 9px 12px;
font-size: 12px;
background: #fff;
}
.span1{
width: 40%;
}
.span-one {
width: 90%;
}
.blue {
color: #0081FF !important;
cursor: pointer;
}
}
}
}
}
</style>
\ No newline at end of file
......@@ -242,7 +242,7 @@ export default {
border: 1px solid #E4E7ED;
padding: 6px 0;
border-radius: 4px;
z-index: 9;
z-index: 10;
// .arrow {
......
......@@ -272,7 +272,7 @@ export default {
border: 1px solid #E4E7ED;
padding: 6px 0;
border-radius: 4px;
z-index: 9;
z-index: 10;
.option {
padding: 0 24px 0 16px;
......
......@@ -107,7 +107,7 @@ export default {
{title: '商务信息', pathName: 'business'},
{title: '招标偏好', pathName: 'preference'},
{title: '合作情况', pathName: 'cooperate'},
{title: '决策链条', pathName: 'decisionMaking'},
{title: '联系人', pathName: 'decisionMaking'},
{title: '跟进记录', pathName: 'gjjl'}
],
defaultRoute: [],
......
......@@ -28,7 +28,7 @@
@handle-current-change="handleCurrentChange"
>
<template slot="projectName" slot-scope="scope">
<span class="link-type" @click="clickDetail(scope.row.id)">
<span class="link-type" @click="clickDetail(scope.row.id)" >
{{ scope.row.projectName }}
</span>
</template>
......@@ -64,7 +64,7 @@
<el-form-item label="项目名称:" prop="projectName" label-width="120px">
<el-input v-model="addParam.projectName" placeholder="请输入项目名称" @input="getCompany1"></el-input>
<div class="resultlist" v-if="showlist1">
<div v-for="(item,index) in companData1" @click="selCompany1(item)"><span v-html="item"></span></div>
<div v-for="(item,index) in companData1" @click="selCompany1(item.projectName)"><span v-html="item.projectName"></span></div>
</div>
</el-form-item>
<div class="erow">
......@@ -266,6 +266,17 @@ export default {
this.ifEmpty = true
}
this.tableData = res.rows
this.tableData.forEach(item=>{
let investmentAmount = item.investmentAmount
if(investmentAmount){
investmentAmount = parseFloat(investmentAmount)
if(investmentAmount<=0){
item.investmentAmount = null
}
}else{
item.investmentAmount = null
}
})
this.tableDataTotal = res.total
this.tableLoading = false
}
......@@ -313,7 +324,7 @@ export default {
}
},
selCompany1(item){
this.addParam.projectName = item
this.addParam.projectName = item.replace(/<[^>]+>/g, '')
this.showlist1 = false
},
//获取业主单位
......
......@@ -27,8 +27,7 @@
<template slot="projectAllName" slot-scope="scope">
<div class="flex-box">
<img class="tip-img" src="@/assets/images/detail/ico_pdf.png" v-if="scope.row.snapshootPic" @click="handlePic(scope.row.snapshootPic, true)"/>
<div class="a-link" @click="handlePic(scope.row.sourceUrl)" v-if="scope.row.sourceUrl&&scope.row.projectAllName" v-html="scope.row.projectAllName" style="cursor: pointer"></div>
<!-- <router-link to="" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectAllName" v-html="scope.row.projectAllName"></router-link>-->
<div class="a-link" @click="linkTo(scope)" v-if="scope.row.id&&scope.row.projectAllName" v-html="scope.row.projectAllName" style="cursor: pointer"></div>
<span v-else v-html="scope.row.projectAllName || '--'"></span>
</div>
</template>
......@@ -108,6 +107,10 @@ export default {
window.open(url, "_blank")
}
},
linkTo(scope){
this.drawer = false
this.$router.push(`/biddetail/${scope.row.id}`)
},
cancel() {
this.$emit('cancel')
}
......
......@@ -27,9 +27,7 @@
<template slot="projectAllName" slot-scope="scope">
<div class="flex-box">
<img class="tip-img" src="@/assets/images/detail/ico_pdf.png" v-if="scope.row.snapshootPic" @click="handlePic(scope.row.snapshootPic, true)"/>
<div class="a-link" @click="handlePic(scope.row.sourceUrl)" v-if="scope.row.sourceUrl&&scope.row.projectAllName" v-html="scope.row.projectAllName" style="cursor: pointer"></div>
<!-- <router-link to="" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectAllName" v-html="scope.row.projectAllName"></router-link>-->
<span v-else v-html="scope.row.projectAllName || '--'"></span>
<div class="a-link" @click="linkTo(scope)" v-if="scope.row.id&&scope.row.projectAllName" v-html="scope.row.projectAllName" style="cursor: pointer"></div> <span v-else v-html="scope.row.projectAllName || '--'"></span>
</div>
</template>
<template slot="province" slot-scope="scope">
......@@ -108,6 +106,10 @@ export default {
window.open(url, "_blank")
}
},
linkTo(scope){
this.drawer = false
this.$router.push(`/biddetail/${scope.row.id}`)
},
cancel() {
this.$emit('cancel')
}
......
......@@ -25,8 +25,7 @@
<div v-else v-html="scope.row.companyName || '--'"></div>
</template>
<template slot="projectAllName" slot-scope="scope">
<div class="a-link" @click="handleDetail(scope.row.projectInfo)" v-if="scope.row.projectInfo&&scope.row.projectInfo.sourceUrl&&scope.row.projectInfo.projectAllName" v-html="scope.row.projectInfo.projectAllName" style="cursor: pointer"></div>
<!-- <router-link to="" tag="a" class="a-link" v-if="scope.row.projectInfo.projectId&&scope.row.projectInfo.projectAllName" v-html="scope.row.projectInfo.projectAllName"></router-link>-->
<router-link :to="`/biddetail/${scope.row.projectInfo.projectId}`" tag="a" class="a-link" v-if="scope.row.projectInfo.projectId&&scope.row.projectInfo.projectAllName" >{{ scope.row.projectInfo.projectAllName }}</router-link>
<div v-else v-html="scope.row.projectInfo&&scope.row.projectInfo.projectAllName || '--'"></div>
<div v-if="scope.row.count>1" @click="handleClick($event, scope.row)" style="color: #FF7E38;cursor: pointer;">{{scope.row.count}}个合作项目/工程 ></div>
</template>
......@@ -105,6 +104,7 @@ export default {
},
handleDetail(row){
if(row.sourceUrl){
window.open(row.sourceUrl, "_blank")
}
}
......
......@@ -21,9 +21,8 @@
@sort-change="sortChange"
>
<template slot="projectAllName" slot-scope="scope">
<div class="a-link" @click="handleDetail(scope.row)" v-if="scope.row.sourceUrl&&scope.row.projectAllName" v-html="scope.row.projectAllName" style="cursor: pointer"></div>
<!-- <router-link to="" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectAllName " v-html="scope.row.projectAllName"></router-link>-->
<div v-else v-html="scope.row.projectAllName || '--'"></div>
<router-link :to="`/biddetail/${scope.row.id}`" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectAllName" >{{ scope.row.projectAllName }}</router-link>
<div v-else v-html="scope.row&&scope.row.projectAllName || '--'"></div>
</template>
<template slot="companyName" slot-scope="scope">
<router-link :to="scope.row.uipId?`/enterprise/${encodeStr(scope.row.companyId)}`:`/company/${encodeStr(scope.row.companyId)}`" tag="a" class="a-link" v-if="scope.row.companyId&&scope.row.companyName">{{ scope.row.companyName }}</router-link>
......
......@@ -25,8 +25,7 @@
<div v-else v-html="scope.row.companyName || '--'"></div>
</template>
<template slot="projectAllName" slot-scope="scope">
<div class="a-link" @click="handleDetail(scope.row.projectInfo)" v-if="scope.row.projectInfo&&scope.row.projectInfo.sourceUrl&&scope.row.projectInfo.projectAllName" v-html="scope.row.projectInfo.projectAllName" style="cursor: pointer"></div>
<!-- <router-link to="" tag="a" class="a-link" v-if="scope.row.projectInfo.projectId&&scope.row.projectInfo.projectAllName" v-html="scope.row.projectInfo.projectAllName"></router-link>-->
<router-link :to="`/biddetail/${scope.row.projectInfo.projectId}`" tag="a" class="a-link" v-if="scope.row.projectInfo.projectId&&scope.row.projectInfo.projectAllName" >{{ scope.row.projectInfo.projectAllName }}</router-link>
<div v-else v-html="scope.row.projectInfo&&scope.row.projectInfo.projectAllName || '--'"></div>
<div v-if="scope.row.count>1" @click="handleClick($event, scope.row)" style="color: #FF7E38;cursor: pointer;">{{scope.row.count}}个合作项目/工程 ></div>
</template>
......
......@@ -5,7 +5,7 @@
<div class="flex-box query-box">
<div class="flex-box query-params"></div>
<div class="flex-box query-add">
<el-button type="primary" icon="el-icon-plus" @click="opennew">新增决策链条</el-button>
<el-button type="primary" icon="el-icon-plus" @click="opennew">新增联系人</el-button>
</div>
</div>
......@@ -71,12 +71,12 @@
</template>
<script>
import Tables from "../component/Tables"
import {
import Tables from "../component/Tables"
import {
getList,
addChain
} from '@/api/detail/party-a/decisionMaking'
export default {
} from '@/api/detail/party-a/decisionMaking'
export default {
name: 'DecisionMaking',
components: {
Tables
......@@ -178,10 +178,10 @@ export default {
this.dialogVisible = true
},
}
}
}
</script>
<style lang="scss" scoped>
.decisionMaking{
.decisionMaking{
background: #ffffff;
border-radius: 4px;
padding: 16px;
......@@ -316,11 +316,11 @@ export default {
}
}
}
}
::v-deep .el-table__fixed::before, ::v-deep .el-table__fixed-right::before{
}
::v-deep .el-table__fixed::before, ::v-deep .el-table__fixed-right::before{
background-color:unset;
}
::v-deep .el-dialog__headerbtn{
}
::v-deep .el-dialog__headerbtn{
z-index: 9;
}
}
</style>
......@@ -92,6 +92,11 @@ export default {
this.tableLoading = false
if(res.code==200){
this.tableData = res.rows
if(this.tableData.length>0){
this.tableData.map(item=>{
item.transactionPrice==0&&(item.transactionPrice = '--')
})
}
}
this.tableDataTotal = res.total
}
......
......@@ -61,6 +61,7 @@ export default {
],
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: [], width: 220},
{ type: 1, fieldName: 'isProject', value: '', placeholder: '是否为民间推介项目', options: [{name:'不限',value:null},{name:'是',value:'1'},{name:'否',value:'0'}],width: 180},
],
//列表
tableLoading:false,
......
......@@ -2,7 +2,7 @@
<div class="app-container detail-container">
<el-tabs v-model="activeName" @tab-click="handleClick" class="detail-tab">
<el-tab-pane label="工商信息" name="first"></el-tab-pane>
<el-tab-pane label="工商变更" name="second"></el-tab-pane>
<el-tab-pane label="工商变更" :disabled="tableDataTotal>0" name="second"></el-tab-pane>
</el-tabs>
......@@ -91,11 +91,13 @@ export default {
],
//列表
tableLoading:false,
tableData:[]
tableData:[],
tableDataTotal:0
}
},
created() {
this.handleQuery()
this.handleQuery();
this.handleQuery1();
},
methods: {
handleClick(){
......@@ -103,13 +105,20 @@ export default {
},
async handleQuery() {
this.tableLoading = true
let param = this.activeName == 'first' ? this.baseParams : this.queryParams
let res = this.activeName == 'first' ? await icInfo(param) : await changeInfo(param)
let param = this.baseParams;
let res = await icInfo(param);
this.tableLoading = false
if(res.code==200){
this.activeName == 'first' ? this.forInfo = res.data : this.tableData = res.rows
this.forInfo = res.data
}
},
async handleQuery1() {
let param = this.queryParams
let res = await changeInfo(param)
if(res.code==200){
this.tableData = res.rows;
this.tableDataTotal = res.total
}
this.activeName == 'first' ? '' : this.tableDataTotal = res.total
},
showRegion(region){
if(region) {
......
......@@ -166,9 +166,9 @@ export default {
}
},
grid:{
left:'1%',
left:'5%',
top:'8%',
right:'5%',
right:'8%',
bottom:'8%',
containLabel: true
},
......
......@@ -33,21 +33,25 @@
prop="operatingIncome"
align="right"
label="营业收入(亿)">
<template slot-scope="scope">{{ scope.row.operatingIncome==0||!scope.row.operatingIncome?'--':scope.row.operatingIncome }}</template>
</el-table-column>
<el-table-column
prop="netProfit"
align="right"
label="净利润(亿)">
<template slot-scope="scope">{{ scope.row.netProfit==0||!scope.row.netProfit?'--':scope.row.netProfit }}</template>
</el-table-column>
<el-table-column
prop="totalAssets"
align="right"
label="总资产(亿)">
<template slot-scope="scope">{{ scope.row.totalAssets==0||!scope.row.totalAssets?'--':scope.row.totalAssets }}</template>
</el-table-column>
<el-table-column
prop="netAssets"
align="right"
label="净资产(亿)">
<template slot-scope="scope">{{ scope.row.netAssets==0||!scope.row.netAssets?'--':scope.row.netAssets }}</template>
</el-table-column>
</el-table-column>
</el-table>
......@@ -95,8 +99,8 @@ export default {
let myChart = echarts.init(document.getElementById("echartsFinance"))
let barData = [],years = [],compareData = [];
this.viewData.map(item=>{
barData.push(item[val+'Size'].toFixed(2));
compareData.push(item[val+'Compare']||'');
barData.push(item[val+'Size']?item[val+'Size'].toFixed(2):'--');
compareData.push(item[val+'Compare']||'--');
years.push(item.year)
})
// let compareDataMax = Math.max(...compareData)
......
......@@ -11,8 +11,9 @@
<img :src="require('@/assets/images/detail/overview/logo@2x.png')" :alt="companyInfo.companyName" :title="companyInfo.companyName" v-else>
</div>
<div class="company-title">
<div class="company-name">
{{companyInfo.companyName || '--'}}
<div class="company-name flex-box" @mouseenter="ifShow=!ifShow" @mouseleave="ifShow=!ifShow">
<div v-clipboard:copy="companyInfo.companyName" v-clipboard:success="clipboardSuccess">{{companyInfo.companyName || '--'}}</div>
<span v-clipboard:copy="companyInfo.companyName" v-clipboard:success="clipboardSuccess" v-if="companyInfo.companyName && ifShow">复制</span>
</div>
<div class="company-tag">
<div style="float: left;margin-top: 8px;" class="company-history" v-if="companyInfo.historyNames && companyInfo.historyNames.length>0">
......@@ -160,6 +161,7 @@
</template>
<script>
import ClipboardJS from 'clipboard'
import { changePath,encodeStr } from '@/assets/js/common'
var Swiper = require('@/assets/lib/swiper/swiper-bundle.min.js')
import "@/assets/lib/swiper/swiper-bundle.css"
......@@ -171,6 +173,7 @@ export default {
data() {
return {
encodeStr,
ifShow:false,
newStatic: null,
labelList: [], //企业标签
customerId:'',
......@@ -204,6 +207,11 @@ export default {
methods: {
//认领
async handleClaim(){
let res = await api.customerStatus(this.companyInfo.companyName)
if(res.data === 1){
this.claimLoading = false
this.dialogVisible2=true;
}else{
if(this.companyInfo.uipId){
this.claimLoading = true
let param = {
......@@ -219,11 +227,6 @@ export default {
registerAddress:this.companyInfo.provinceName+(this.companyInfo.cityName?'-'+this.companyInfo.cityName:'')+(this.companyInfo.districtName?'-'+this.companyInfo.districtName:''),
creditCode:this.companyInfo.creditCode
}
let res = await api.customerStatus(this.companyInfo.companyName)
if(res.data === 1){
this.claimLoading = false
this.dialogVisible2=true;
}else{
let res = await claim(param)
this.claimLoading = false
if(res.code==200){
......@@ -231,10 +234,14 @@ export default {
this.companyInfo.claimStatus = 1
this.customerId = res.data.customerId
}
}
}else{
this.$message.warning('对不起,当前不能认领')
}
}
},
/** 复制代码成功 */
clipboardSuccess() {
this.$modal.msgSuccess("复制成功");
},
//取消认领
cancelClaimClick(){
......@@ -522,6 +529,27 @@ export default {
color: #000000;
font-weight: bold;
margin-right: 100px;
cursor: pointer;
align-items: center;
span{
width: 44px;
height: 22px;
font-size: 12px;
line-height: 22px;
color: #666666;
text-align: center;
font-weight: 400;
display: inline-block;
border: 1px solid #EEEEEE;
border-radius: 2px;
cursor: pointer;
margin-left: 16px;
&:hover{
background: #E9F4FF;
color: #0081FF;
border: 1px solid #0081FF;
}
}
}
.company-tag{
overflow: hidden;
......
......@@ -3,7 +3,7 @@
<div class="common-title">关系企业</div>
<el-tabs v-model="activeName" @tab-click="handleClick" class="tabpane selfTab">
<el-tab-pane label="股东" name="first"></el-tab-pane>
<el-tab-pane label="对外投资" name="second"></el-tab-pane>
<el-tab-pane label="对外投资" :disabled="shipTotal<1" name="second"></el-tab-pane>
<el-tab-pane label="分支机构" :disabled="affiliatesTotal<1" name="third"></el-tab-pane>
</el-tabs>
<div class="table-item">
......
......@@ -8,7 +8,7 @@
/>
<el-tabs v-model="activeName" @tab-click="handleClick" class="detail-tab">
<el-tab-pane label="股东信息" name="first"></el-tab-pane>
<el-tab-pane label="历史股东" name="second"></el-tab-pane>
<el-tab-pane label="历史股东" :disabled="disabled" name="second"></el-tab-pane>
</el-tabs>
<tables
......@@ -65,11 +65,13 @@ export default {
tableLoading:false,
tableData:[],
tableDataTotal:0,
disabled:false,
labelArr:['失信联合惩戒企业','严重行政处罚','司法纠纷','注销', '注销企业'],
}
},
created() {
this.handleQuery()
this.handleQuery();
this.handleQuery1();
},
methods: {
handleClick(){
......@@ -85,6 +87,17 @@ export default {
this.tableData = res.rows
}
this.tableDataTotal = res.total
},
async handleQuery1(params) {
let param = params?params:this.queryParams
param.isHistory = 1
let res = await bestStockPage(param)
this.tableLoading = false
if(res.code==200){
if(res.total<1){
this.disabled = true
}
}
}
}
}
......
......@@ -82,7 +82,8 @@ export default {
{name:'不到5%',value:'0~0.05'}
],
width: 130
}
},
{ type: 3, fieldName: 'keyword', value: '', placeholder: '输入企业名称查询'},
],
//列表
tableLoading:false,
......
......@@ -3,7 +3,7 @@
<div class="content">
<div class="content_item">
<div class="content_right item_ckquery_list">
<el-input class="ename_input" placeholder="请输入企业名称关键字" v-model="keys" >
<el-input class="ename_input" placeholder="请输入企业名称关键字" clearable v-model="keys" >
<div slot="append" class="btn-search" @click="search()">搜索</div>
</el-input>
......@@ -137,13 +137,15 @@
</div>
</div>
<div class="table-item-jf table-item-jf1" v-if="tableData.length==0">
<div class="table-item-jf table-item-jf1" v-if="tableData.length==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>
<div class=" table-item-jf" v-if="tableData.length>0">
<el-table :data="tableData" v-loading="loading" :header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}" element-loading-text="Loading" class="table-item1 fixed-table" border highlight-current-row>
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class=" table-item-jf" v-if="!isSkeleton&&tableData.length>0">
<el-table :data="tableData" :header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}" class="table-item1 fixed-table" border highlight-current-row>
<el-table-column type="index" label="序号" fixed width="60">
<template slot-scope="scope">
<span>{{(pageNum - 1) *20 + scope.$index + 1}}</span>
......@@ -484,12 +486,15 @@
<script>
import {encodeStr} from "@/assets/js/common.js"
import jsk_data from '../../../../../public/jsk.json';
import skeleton from '@/views/project/projectList/component/skeleton'
import api from '@/api/enterpriseData/enterpriseData.js';
export default {
name: 'Owner',
components:{skeleton},
data() {
return {
encodeStr,
isSkeleton:true,
keys:'',
addressList: [],
addressType: [],
......@@ -498,10 +503,7 @@ export default {
expandTrigger: "hover",
value: "id",
},
loading:false,
pageSize: 20,
jskBidQueryDto: {
provinceIds: [],
cityIds: [],
......@@ -918,9 +920,9 @@ export default {
}else{
delete params.equityRelationship
}
this.loading = true;
this.isSkeleton = true;
api.uipSerach(params).then(res=>{
this.loading = false;
this.isSkeleton = false
// console.log(res)
if (res.code==200) {
this.tableData=res.rows;
......@@ -928,7 +930,6 @@ export default {
}
}).catch(error=>{
this.loading = false;
});
},
......
......@@ -4,7 +4,7 @@
<div class="content">
<div class="content_item content_item_padding0">
<div class="content_right item_ckquery_list">
<el-input class="ename_input" placeholder="请输入关键字,如企业名称、统一社会信用代码等" v-model="ename" @input="projectNamebtn('ename',ename,'关键字:')">
<el-input class="ename_input" clearable placeholder="请输入关键字,如企业名称、统一社会信用代码等" v-model="ename" @input="projectNamebtn('ename',ename,'关键字:')">
<div slot="append" class="btn-search" @click="search()">搜索</div>
</el-input>
<!-- <template v-if="ename">
......@@ -454,12 +454,13 @@
</div>
</div>
<div class="table-item-jf1" v-if="tableData.length==0">
<div class="table-item-jf1" v-if="tableData.length==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>
<ul class="bottomlist-content" v-if="tableData.length>0">
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<ul class="bottomlist-content" v-if="!isSkeleton&&tableData.length>0">
<li class="info-list" v-for="(item,index) in tableData" :key="index">
<div class="info-list-left">
<img v-if="item.logoUrl" :src="item.logoUrl" :alt="item.name.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" />
......@@ -584,8 +585,10 @@
import options from '@/assets/json/options.json';
import api from '@/api/enterpriseData/enterpriseData.js';
import {encodeStr} from "@/assets/js/common.js"
import skeleton from '@/views/project/projectList/component/skeleton'
export default {
name: 'EnterpriseQuery',
components:{skeleton},
directives: {
numberOnly: {
bind: function(el) {
......@@ -605,6 +608,7 @@
return {
encodeStr,
ename: '',
isSkeleton:true,
enameQueryTypeList: [{
key: 'and',
status: false,
......@@ -2752,7 +2756,9 @@
data.aptitudeQueryDto['aptitudeDtoList'] = aptitudeDtoList;
data.aptitudeQueryDto['aptitudeSource'] = 'new';
}
this.isSkeleton = true;
api.enterprisePage(data).then(res=>{
this.isSkeleton = false
if (res.code==200) {
this.tableData=res.data.list;
this.total=res.data.total;
......
......@@ -114,7 +114,9 @@ export default {
}
bidMoneyGroupByProjectType(params).then(res => {
if(res.data.length > 0){
let list=res.data[1].type
let list=[]
if(res.data.length > 1){
list=res.data[1].type
for (let i=0; i<res.data[0].type.length; i++){
for (let j=0; j<list.length; j++){
if(res.data[0].type[i].projectType === list[j].projectType){
......@@ -123,6 +125,13 @@ export default {
}
}
}
}else {
list=res.data[0].type
for (let i=0; i<list.length; i++){
list[i].lastMoney=0;
list[i].lastRate=0;
}
}
for(let i=0; i<list.length; i++){
list[i].money=list[i].money ? Number(list[i].money).toFixed(2) : '-';
list[i].rate=list[i].rate ? Number(list[i].rate).toFixed(2) : '-';
......@@ -189,6 +198,8 @@ export default {
//鼠标悬停时显示的样式
tooltip: {
extraCssText:'width:120px!important;',
backgroundColor:"rgba(255, 255, 255, 0.8)",
borderWidth:'0',
formatter: function (params){
var result = ''
result+='<p style="color: rgba(35,35,35,0.8);padding: 0;margin: 0;">'+ params.name +'</p>'
......
......@@ -384,13 +384,18 @@ export default {
.el-input__suffix{
margin-top: -1px;
}
.el-input__inner:focus{
border-color: #e0e0e0;
}
.el-input-group__append{
width: 59px;
width: 60px;
padding: 0;
text-align: center;
background: #F5F5F5;
color:#0081FF;
border-left: 0;
padding: 0;
text-align: center;
border-radius: 0;
border-right: 0;
}
}
.total{
......
......@@ -225,7 +225,7 @@ export default {
img{
width: 28px;
height: 28px;
margin-bottom: -9px;
// margin-bottom: -9px;
margin-right: 17px;
}
}
......
<template>
<div class="app-container qyzx">
<Region v-if="province" :province="province" :dataQuery="dataQuery" @addressListbtn="addressListbtn"></Region>
<div class="content">
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div v-if="!isSkeleton" class="content">
<div class="common-title">专项债项目</div>
<div class="content-box" v-if="!state">
<div class="box-left">
......@@ -14,7 +15,7 @@
border
:summary-method="getSummaries"
show-summary
height="400"
max-height="400"
fit
@sort-change="sortChange"
highlight-current-row
......@@ -34,7 +35,7 @@
</div>
</div>
</div>
<div class="content">
<div v-if="!isSkeleton" class="content">
<div class="common-title flex-box">
<div class="flex-box">项目明细</div>
<div class="flex-box query-ability">
......@@ -44,7 +45,6 @@
</div>
<div class="table-item">
<el-table
v-loading="tableLoading"
:data="listData"
element-loading-text="Loading"
@sort-change="sortChange1"
......@@ -85,10 +85,11 @@
import * as echarts from 'echarts';
import { statistics,projectsPage,location } from '@/api/macro/macro'
import Region from '../component/region'
import skeleton from '../component/skeleton'
export default {
name: 'Financing',
components: {
Region
Region,skeleton
},
data() {
return {
......@@ -96,7 +97,6 @@ export default {
tableParams:{},
tableData:[],
listData:[],
tableLoading: false,
pageIndex: 1,
pageSize: 10,
tableDataTotal: 0,
......@@ -106,6 +106,7 @@ export default {
province:'',
provinceId:[],
state:false,
isSkeleton:true
}
},
created() {
......@@ -157,7 +158,6 @@ export default {
},
methods: {
getData(){
this.tableLoading = true
let params={ pageNum: this.pageIndex, pageSize: this.pageSize}
if(this.tableParams.field){
params.field=this.tableParams.field
......@@ -175,16 +175,12 @@ export default {
params.areaId=this.provinceId[2]
}
projectsPage(params).then(res => {
this.tableLoading = false
this.listData=res.data.list;
this.tableDataTotal = res.data.totalCount
})
// 延迟关闭加载效果
// setTimeout(() => {
// this.tableLoading = false
// }, 200)
},
getStatistics(){
this.isSkeleton = true
let params={};
if(this.provinceId.length > 0){
params.provinceId=this.provinceId[0]
......@@ -202,6 +198,7 @@ export default {
params.order=this.queryParams.order
}
statistics(params).then(res => {
this.isSkeleton = false
var list=[];
for(var i=0;i<res.data.length;i++){
var obj={};
......@@ -308,6 +305,15 @@ export default {
field:this.queryParams.field,
order:this.queryParams.order
};
if(this.provinceId.length > 0){
params.provinceId=this.provinceId[0]
}
if(this.provinceId.length > 1){
params.cityId=this.provinceId[1]
}
if(this.provinceId.length > 2){
params.areaId=this.provinceId[2]
}
statistics(params).then(res => {
var list=[];
for(var i=0;i<res.data.length;i++){
......
......@@ -15,14 +15,14 @@
<div class="main2">
<div class="flex-box query-box head">
<span>{{value}}全国招标总数<span class="number"> {{totalCount}} </span>万个</span>
<div class="select-popper" style="position: relative;">
<div class="select-popper" style="position: relative;margin-right:0;">
<el-dropdown
@command="handleDate"
trigger="click"
ref="punishDateShowPopper"
:hide-on-click="false"
>
<span class="el-dropdown-link" :class="punishDateValue ? 'color_text' : ''">{{punishDateValue}}<i class="el-icon-caret-bottom"></i></span>
<span class="el-dropdown-link" :class="punishDateValue ? 'color_text' : ''">{{punishDateValue}}<i class="el-icon-arrow-down" style="color:#313131;"></i></span>
<div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item
......@@ -625,5 +625,10 @@ export default {
}
}
}
::v-deep .el-input--medium{
.el-input__icon{
line-height: 32px;
}
}
}
</style>
......@@ -831,6 +831,9 @@ export default {
border-radius: 4px;
.search{
margin-top: 22px;
::v-deep .el-radio{
margin-right: 16px;
}
.search-box{
display: inline-block;
margin-right: 32px;
......@@ -918,7 +921,7 @@ export default {
height: 32px;
line-height: 32px;
font-size: 12px;
padding-left: 6px;
padding-left: 8px;
border-right: 0;
}
.el-input__suffix{
......@@ -931,6 +934,8 @@ export default {
background: #F5F5F5;
color:#0081FF;
border-left: 0;
border-radius: 0;
border-right: 0;
}
/*}*/
}
......
......@@ -253,7 +253,6 @@ export default {
weekdata1.length = time
weekdata2.length = time
weekdata3.length = time
console.log(time)
for(var i=0;i<7;i++){
if(i > time){
weekdata1.push('')
......@@ -304,8 +303,6 @@ export default {
default:
break;
}
console.log(datas)
console.log(labels)
this.initDT(datas,labels)
},
resizeEcharts (){
......@@ -350,8 +347,8 @@ export default {
// trigger: 'axis'
},
legend: {
right: '20px',
top:"30px",
right: '155px',
top:"2px",
data: ['成交金额', '储备项目', '跟进动态'],
itemHeight: 8, // 修改icon图形大小
itemGap: 20
......
......@@ -12,10 +12,13 @@
</div>
<el-form class="popform j" :model="queryParam" :rules="rules" ref="ruleForm" label-width="130px">
<el-form-item label="项目名称:" class="row" prop="projectName">
<el-input type="text" placeholder="请输入" v-model="queryParam.projectName"></el-input>
<el-input type="text" placeholder="请输入" v-model="queryParam.projectName" @input="getProject" :οnkeyup="queryParam.projectName=queryParam.projectName.replace(/^\s+|\s+$/g,'')"></el-input>
<div class="resultlist" v-if="proList.length>0" id="box1">
<div v-for="(item,index) in proList" @click="selProject(item)"><span v-html="item.projectName"></span></div>
</div>
</el-form-item>
<el-form-item label="业主单位:" class="row" prop="ownerCompany">
<el-input type="text" placeholder="请输入" v-model="queryParam.ownerCompany" @input="getCompany"></el-input>
<el-form-item label="招采单位:" class="row" prop="ownerCompany">
<el-input type="text" placeholder="请输入" v-model="queryParam.ownerCompany" @input="getCompany" :οnkeyup="queryParam.ownerCompany=queryParam.ownerCompany.replace(/^\s+|\s+$/g,'')"></el-input>
<div class="resultlist" v-if="showlist" id="box">
<div v-for="(item,index) in companData" @click="selCompany(item)"><span v-html="item.name"></span></div>
</div>
......@@ -56,6 +59,7 @@
<script>
import {getEnterprise,getDictType,} from '@/api/main'
import {addProject} from '@/api/project/project'
import {queryProject} from '@/api/detail/party-a/cooperate'
export default {
name: 'addProject',
data(){
......@@ -74,7 +78,7 @@
userId:'',//用户id
projectName:'',// 项目名称
companyId:'',//企业id
ownerCompany:'',//业主单位
ownerCompany:'',//招采单位
projectStage:null,//项目阶段
projectType:null,//项目类型
projectCategory:null,//项目类别
......@@ -90,6 +94,7 @@
projectStage:[],//项目阶段
projectType:[],//项目类型
projectCategory:[],//项目类别
proList:[],//项目列表
}
},
mounted(){
......@@ -110,6 +115,7 @@
},
methods:{
toradar(){
this.resetForm()
this.$router.push({path:'/radar'})
},
handleALL(event){
......@@ -119,6 +125,12 @@
this.showlist = false
}
}
var two = document.getElementById("box1");
if(two){
if(!two.contains(event.target)){
this.proList = []
}
}
},
//获取建设库客户
getCompany(value){
......@@ -139,19 +151,45 @@
})
}
},
//获取项目名称
getProject(value){
if (value.length>=2){
let param = {
projectName:value,
}
queryProject(JSON.stringify(param)).then(result=>{
if(result.code != 200){
this.proList = []
return false
}
this.proList = result.data
})
}
},
selCompany(item){
this.queryParam.companyId = item.jskEid
this.queryParam.ownerCompany = item.name.replace(/<[^>]+>/g, '')
this.showlist = false
},
selProject(item){
this.queryParam.projectStage = item.projectStage
this.queryParam.investmentAmount = item.investmentAmount
this.queryParam.projectType = item.projectType
this.queryParam.projectCategory = item.projectCategory
this.queryParam.status = item.status
this.queryParam.ownerCompany = item.companyName
this.queryParam.projectName = item.projectName.replace(/<[^>]+>/g, '')
this.proList = []
},
//添加客户
submitForm(formName) {
this.queryParam.userId = this.$store.state.user.userId
if(this.queryParam.investmentAmount!="")
this.queryParam.investmentAmount = parseFloat(this.queryParam.investmentAmount)
this.$refs[formName].validate((valid) => {
if (valid) {
addProject(this.queryParam).then(result=>{
let param = JSON.parse(JSON.stringify(this.queryParam))
if(param.investmentAmount!="")
param.investmentAmount = parseFloat(param.investmentAmount)
addProject(param).then(result=>{
if(result.code == 200){
this.$message.success('添加成功!')
this.resetForm('ruleForm')
......@@ -168,7 +206,7 @@
this.queryParam = {
projectName:'',// 项目名称
companyId:'',//企业id
ownerCompany:'',//业主单位
ownerCompany:'',//招采单位
projectStage:null,//项目阶段
projectType:null,//项目类型
projectCategory:null,//项目类别
......
......@@ -11,14 +11,14 @@
<div class="writting" v-if="isEdit == true">
<div class="wri_top">
<img src="@/assets/images/project/add_3.png">
<el-input v-model="queryParam.task" placeholder="新建一条跟进记录,如:周五上午预约客户上门拜访"></el-input>
<el-input v-model="queryParam.task" maxlength="500" placeholder="新建一条跟进记录,如:周五上午预约客户上门拜访"></el-input>
</div>
<div class="wr_bot">
<div class="times"><img src="@/assets/images/project/ico_4.png">
<el-date-picker value-format="yyyy-MM-dd"
v-model="queryParam.finishTime"
type="date"
placeholder="完成时间">
<el-date-picker value-format="yyyy-MM-dd HH:mm:ss"
v-model="queryParam.dueTime"
type="datetime"
placeholder="截止时间">
</el-date-picker>
</div>
<div class="sels">
......@@ -26,28 +26,40 @@
<el-input v-model="queryParam.target" placeholder="拜访对象" maxlength="500" style="width: 100px;">
</el-input>
</div>
<div class="btn btn_primary h32 wc" @click="add" :class="{'btn_disabled':queryParam.task == ''}">完成</div>
<div class="wc">
<div class="btn btn_primary h32 " @click="add" :class="{'btn_disabled':queryParam.task == ''}">完成</div>
<div class="btn btn_primary h32" style="border: 1px solid #D3D3D3;background: #ffffff;color:rgba(35,35,35,0.8);" @click="cancel" :class="{'btn_disabled':queryParam.task == ''}">取消</div>
</div>
</div>
</div>
</div>
<skeleton v-if="isSkeleton" style="padding-top: 16px"></skeleton>
<div v-else>
<div class="tasktitle"><strong>我的任务</strong><span @click="getYQ">{{yqnum}}条已逾期</span><!--<span class="on">4条已逾期</span>--></div>
<div class="tabList" v-else>
<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="yqnum" name="third"></el-tab-pane>
</el-tabs>
<div class="tasklist" v-for="(item,index) in datalist.rows">
<div class="task_name">{{item.task}}</div>
<div class="task_con"><span>发起时间:{{item.createTime}}</span><span v-if="item.target">关联客户:<font class="wordprimary">{{item.target}}</font></span><span v-if="item.finishTime">完成时间:{{item.finishTime}}</span></div>
<div class="select" :class="{'on':item.state == 2}">
<div class="task_con"><span>发起时间:{{item.createTime}}</span><span v-if="item.target">关联客户:<font class="wordprimary">{{item.target}}</font></span><span v-if="item.dueTime">完成时间:{{item.dueTime}}</span></div>
<div class="select" :class="{'on':item.state == 1}">
<div class="select-popper">
<span>
{{item.state == 2?"已完成":"未完成"}}
{{item.state == 1?"已完成":"进行中"}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-if="isDisableds == false" placeholder="请选择" v-model="item.state" class="select-multiple" @change="changes(item.id,$event)">
<el-option label="未完成" value="1"></el-option>
<el-option label="已完成" value="2"></el-option>
<el-option label="进行中" value="0"></el-option>
<el-option label="已完成" value="1"></el-option>
</el-select>
</div></div>
</div>
<!--<div class="tasktitle"><strong>已完成</strong></div>-->
<!---->
<!--<div class="tasktitle"><strong>进行中</strong><span @click="getYQ">{{yqnum}}条已逾期</span>&lt;!&ndash;<span class="on">4条已逾期</span>&ndash;&gt;</div>-->
<div class="tables" v-if="datalist.total>searchPram.pageSize">
<div class="bottems">
......@@ -85,6 +97,7 @@
},
data(){
return{
activeName:'first',
isEdit:false,
value:'',
status:0,
......@@ -92,22 +105,34 @@
businessId:this.detailId ? this.detailId : parseInt(this.$route.query.id),//项目详情id
target:'',
task:'',
finishTime:'',
dueTime:'',
},
searchPram:{
businessId:this.detailId ? this.detailId : parseInt(this.$route.query.id),
pageSize:20,
pageNum:1,
state:null,
state:0
},
datalist:[],
yqnum:0,//已逾期数量
yqnum:'',//已逾期数量
isDisableds:this.isDisabled,
isSkeleton:true,
}
},
created(){
this.getList()
let params={
...this.searchPram,
state:2,
// cancelHttp: true
}
getGZDB(params).then(result=>{
this.datalist = result.code == 200?result:[]
console.log(this.datalist.rows)
if(this.datalist){
this.yqnum = `已逾期 ${this.datalist.rows.length} 条`;
}
})
},
methods:{
getEdit(){
......@@ -115,7 +140,9 @@
this.value = ""
},
add(){
if(this.queryParam.task == '' || this.queryParam.finishTime == '')
// if(this.queryParam.task == '' || this.queryParam.dueTime == '')
if(this.queryParam.task == '')
return this.$message.warning('时间和内容需填写完整!')
addGZDB(this.queryParam).then(result=>{
if(result.code == 200){
......@@ -123,29 +150,37 @@
this.getList()
this.queryParam.target = ''
this.queryParam.task = ''
this.queryParam.finishTime = ''
this.queryParam.dueTime = ''
}else{
this.$message.error(result.msg)
}
})
},
cancel(){
this.isEdit = false;
this.queryParam.target = ''
this.queryParam.task = ''
this.queryParam.dueTime = ''
},
getList(){
this.isSkeleton = true
getGZDB(this.searchPram).then(result=>{
let params={
...this.searchPram,
// cancelHttp: true
}
getGZDB(params).then(result=>{
this.isSkeleton = false
this.datalist = result.code == 200?result:[]
let num = 0
this.datalist.rows.forEach(item=>{
if(item.state == 0)
num++;
})
this.yqnum = num
})
},
handleCurrentChange(val){
this.searchPram.pageNum = val
this.getList()
},
handleClick(){
this.searchPram.state=this.activeName === 'first'? 0 : this.activeName === 'second'? 1 : 2
this.getList()
},
changes(id,state){
let param={
id:id,
......@@ -162,7 +197,7 @@
},
getYQ(){
let state = this.searchPram.state
this.searchPram.state = state == 0?null:0
this.searchPram.state = state == 2?null:2
this.handleCurrentChange(1)
},
}
......@@ -170,6 +205,35 @@
</script>
<style lang="scss" scoped>
.records{
.tasklist{
.select{
background: #FFEBEB;
color: #FF3C3C;
.select-popper{
color: #FF3C3C;
}
}
.task_name{
word-wrap: break-word;
width: 87%;
}
}
}
.tabList{
margin-top: 18px;
::v-deep .el-tabs{
.el-tabs__header{
margin: 0;
}
.el-tabs__active-bar{
height: 1px;
}
.el-tabs__nav-wrap::after{
height: 1px;
}
}
}
.wc{
position: absolute;
right: 0;
......
......@@ -106,8 +106,8 @@
<img src="@/assets/images/economies/icon.png">
<span>{{projectname}}</span>
</div>
<el-form class="popform" label-width="137px">
<el-form-item label="联系人姓名:" class="row">
<el-form class="popform" :model="queryParam" ref="ruleForm" label-width="137px" :rules="rules" >
<el-form-item label="联系人姓名:" class="row" prop="name">
<el-input type="text" v-model="queryParam.name" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="联系人性别:" class="row">
......@@ -157,6 +157,9 @@
},
data(){
return{
rules:{
name:[{ required: true, message: '请输入非空格字符!', trigger: 'blur' },],
},
dialogVisible:false,
isnew:true,//是否新增
textarea:"",
......@@ -200,26 +203,40 @@
})
},
save(){
this.$refs['ruleForm'].validate((valid) => {
if (valid) {
let param = JSON.parse(JSON.stringify(this.queryParam))
param.sex = parseInt(param.sex)
if(this.isnew == false){
editLXR(param).then(result=>{
if(result.code == 200){
if (!this.queryParam.phone) {
this.$message.error('请输入电话号码')
return false
}
var regPartton = /1[3-9]+\d{9}/;
var regPartton1 = /0\d{2,3}-\d{7,8}|\(?0\d{2,3}[)-]?\d{7,8}|\(?0\d{2,3}[)-]*\d{7,8}/;
if (!regPartton.test(this.queryParam.phone) && !regPartton1.test(this.queryParam.phone)) {
this.$message.error("请输入正确的电话");
return false
}
if (this.isnew == false) {
editLXR(param).then(result => {
if (result.code == 200) {
this.$message.success('保存成功!')
this.getList()
this.dialogVisible = false
}
})
}
if(this.isnew == true){
addLXR(param).then(result=>{
if(result.code == 200){
if (this.isnew == true) {
addLXR(param).then(result => {
if (result.code == 200) {
this.$message.success('新增成功!')
this.getList()
this.dialogVisible = false
}
})
}
}
})
},
//翻页
handleCurrentChange(val) {
......
......@@ -4,7 +4,7 @@
<el-card class="box-card noborder">
<div class="cardtitles">相关企业</div>
<div class="searchbtns">
<el-select class="select" placeholder="企业类型" clearable v-model="searchParam.companyType" @change="handleCurrentChange(1)">
<el-select class="select" placeholder="企业类型" clearable v-model="searchParam.companyRole" @change="handleCurrentChange(1)">
<el-option v-for="(item,index) in companytype" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
<div class="searchInput small">
......@@ -40,16 +40,44 @@
sortable
label="对接深度/竞争力度"
>
<template slot-scope="scope">
{{scope.row.depth || '--'}}
</template>
</el-table-column>
<el-table-column
prop="companyRole"
label="企业角色"
width="">
<template slot-scope="scope">
{{scope.row.companyRole || '--'}}
</template>
</el-table-column>
<el-table-column
prop="responsiblePerson"
label="负责人"
width="">
<template slot-scope="scope">
{{scope.row.responsiblePerson || '--'}}
</template>
</el-table-column>
<el-table-column
prop="phone"
label="负责人联系方式"
width="">
<template slot-scope="scope">
{{scope.row.phone || '--'}}
</template>
</el-table-column>
<el-table-column
prop="responsiblePerson"
label="备注"
width="">
<template slot-scope="scope">
<div class="showremark" v-if="scope.row.remark">
<el-tooltip class="item" effect="dark" :content="scope.row.remark" placement="top"><span>{{scope.row.remark}}</span></el-tooltip>
</div>
<div v-else>--</div>
</template>
</el-table-column>
<el-table-column v-if="isDisableds == false"
prop="name"
......@@ -58,6 +86,7 @@
width="">
<template slot-scope="scope">
<div class="hoverbtn">
<div class="xg" @click="getDetail(scope.row)">修改</div>
<div class="sc" @click="ondel = scope.row.id">删除</div>
</div>
</template>
......@@ -83,55 +112,69 @@
</div>
</div>
</div>
<el-dialog
class="popups"
:visible.sync="dialogVisible"
width="464px">
<div @click = 'handleALL'>
<div class="poptitle">
<img src="@/assets/images/economies/icon.png">
<span>新建相关企业</span>
</div>
<div class="types">
<div v-for="(item,index) in companytype" :class="{'on':types==item.dictValue}" @click="totype(item.dictValue)"><i></i>{{item.dictLabel}}</div>
</div>
<div class="popform">
<div class="popbot" style="padding-right: 0">
<div class="btn btn_cancel h32" @click="cancel(0)">返回</div>
<div class="btn btn_primary h32" @click="gettype">下一步</div>
</div>
</div>
</div>
</el-dialog>
<!--<el-dialog-->
<!--class="popups"-->
<!--:visible.sync="dialogVisible"-->
<!--width="464px">-->
<!--<div @click = 'handleALL'>-->
<!--<div class="poptitle">-->
<!--<img src="@/assets/images/economies/icon.png">-->
<!--<span>新建相关企业</span>-->
<!--</div>-->
<!--<div class="types">-->
<!--<div v-for="(item,index) in companytype" :class="{'on':types==item.dictValue}" @click="totype(item.dictValue)"><i></i>{{item.dictLabel}}</div>-->
<!--</div>-->
<!--<div class="popform">-->
<!--<div class="popbot" style="padding-right: 0">-->
<!--<div class="btn btn_cancel h32" @click="cancel(0)">返回</div>-->
<!--<div class="btn btn_primary h32" @click="gettype">下一步</div>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--</el-dialog>-->
<el-dialog
class="popups"
:visible.sync="hzhbVisible"
width="464px">
<div class="poptitle">
<img src="@/assets/images/economies/icon.png">
<span>新建相关企业-{{types}}</span>
<span>新建相关企业</span>
</div>
<el-form class="popform i":model="queryParam" label-width="85px" :rules="rules" ref="ruleForm" >
<el-form-item label="企业角色:" prop="companyRole" class="row">
<el-select placeholder="请选择" v-model="queryParam.companyRole">
<el-option v-for="(item,index) in companytype" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</el-form-item>
<el-form-item label="企业名称:" prop="companyName" class="row">
<el-input type="text" v-model="queryParam.companyName" @input="getCompany" placeholder="请输入"></el-input>
<div class="resultlist" v-if="showlist" id="box">
<div v-for="(item,index) in companData" @click="selCompany(item)"><span v-html="item.name"></span></div>
</div>
</el-form-item>
<el-form-item :label="typename" class="row">
<el-form-item :label="typename" class="row i">
<el-input type="text" v-model="queryParam.depth" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="企业角色:" class="row">
<el-select placeholder="请选择" v-model="queryParam.companyRole">
<el-option v-for="(item,index) in companyrole" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</el-form-item>
<el-form-item label="负责人:" class="row">
<el-input type="text" v-model="queryParam.responsiblePerson" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="联系方式:" class="row">
<el-input type="text" oninput="value=value.replace(/[^\d]/g,'')" v-model="queryParam.phone" maxlength="11" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="备注说明:" class="row">
<el-input
type="textarea"
placeholder="请输入"
v-model="queryParam.remark"
maxlength="200"
show-word-limit
>
</el-input>
</el-form-item>
<div class="popbot">
<div class="btn btn_cancel h32" @click="cancel(1)">返回</div>
<div class="btn btn_primary h32" @click="addqy">添加</div>
<div class="btn btn_cancel h32" @click="cancel()">返回</div>
<div class="btn btn_primary h32" v-if="isedit" @click="saveqy">保存</div>
<div class="btn btn_primary h32" v-else @click="addqy">添加</div>
</div>
</el-form>
</el-dialog>
......@@ -140,10 +183,11 @@
</template>
<script>
import "@/assets/styles/project.scss"
import {getXGQY,addXGQY,delXGQY} from '@/api/project/project'
import {getDictType,getEnterprise} from '@/api/main'
import '@/assets/styles/project.scss'
import { addXGQY, delXGQY, getXGQY, saveXGQY } from '@/api/project/project'
import { getDictType, getEnterprise } from '@/api/main'
import skeleton from './skeleton'
export default {
components:{skeleton},
name: 'xgqy',
......@@ -156,38 +200,43 @@
},
data(){
return{
types:1,
dialogVisible:false,
hzhbVisible:false,
textarea:"",
nowedit:-1,//当前正在编辑的文本
tipslit:[],//项目标签
tipsvalue:"",//标签填写内容
tableData: [],
typelist:['对接深度:','合作阶段:','竞争力度:'],
typename:"",
typename:"对接深度/竞争力度",
rules:{
companyRole:[{ required: true, message: '请输入非空格字符!', trigger: 'blur' },],
companyName:[{ required: true, message: '请输入非空格字符!', trigger: 'blur' },],
phone: [
{
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
message: "请输入正确的手机号码",
trigger: "blur"
}
]
},
companytype:[],
companyrole:[],
queryParam:{
businessId:this.detailId ? this.detailId : this.$route.query.id,
companyId:'',
companyName:'',
companyRole:'',
companyType:'',
responsiblePerson:'',
depth:'',
remark:'',
},
searchParam:{
pageSize:20,
pageNum:1,
businessId:this.detailId ? this.detailId : this.$route.query.id,
companyType:"",
companyRole:"",
companyName:'',
},
ondel:-1,
isedit:false,
isDisableds:this.isDisabled,
showlist:false,
companData:[],
......@@ -198,17 +247,17 @@
//企业类型
getDictType('company_type').then(result=>{
this.companytype = result.code == 200 ? result.data:[]
this.types = this.companytype[0].dictValue
})
//企业角色
getDictType('company_role').then(result=>{
this.companyrole = result.code == 200 ? result.data:[]
})
this.getlist()
},
mounted(){
},
methods:{
getDetail(row){
this.isedit = true
this.hzhbVisible = true
this.queryParam = JSON.parse(JSON.stringify(row))
},
//获取建设库客户
getCompany(value){
this.queryParam.companyId = ''
......@@ -252,9 +301,14 @@
})
},
addqy(){
if(this.queryParam.companyName === ''){
return this.$message.warning('企业名称需填写完整!')
}
if(this.queryParam.companyRole === ''){
return this.$message.warning('企业角色称需填写完整!')
}
addXGQY(this.queryParam).then(res=>{
this.hzhbVisible=false
this.dialogVisible=false
if(res.code == 200){
this.$message.success('添加成功!')
this.getlist()
......@@ -262,6 +316,18 @@
this.$message.error(res.msg)
}
})
},
saveqy(){
saveXGQY(this.queryParam).then(res=>{
this.hzhbVisible=false
if(res.code == 200){
this.$message.success('修改成功!')
this.getlist()
}else {
this.$message.error(res.msg)
}
})
},
getlist(){
this.isSkeleton = true
......@@ -275,38 +341,21 @@
this.searchParam.pageNum = val
this.getlist()
},
cancel(type){
if(type == 0)
this.dialogVisible = false
else{
this.dialogVisible = true
cancel(){
this.hzhbVisible = false
}
},
totype(value){
this.types = value
},
gettype(){
this.queryParam.companyType = this.types
this.companytype.forEach((item,index)=>{
if(item.dictValue == this.types){
this.typename = this.typelist[index]
}
})
this.hzhbVisible = true
this.dialogVisible = false
},
//打开新建窗口
opennew(){
this.dialogVisible = true
this.isedit = false
this.hzhbVisible = true
this.queryParam={
businessId:this.detailId ? this.detailId : this.$route.query.id,
companyId:'',
companyName:'',
companyRole:'',
companyType:'',
responsiblePerson:'',
depth:'',
remark:'',
}
},
}
......@@ -314,6 +363,18 @@
</script>
<style lang="scss" scoped>
.showremark{
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
word-break: break-all;
cursor: pointer;
&:hover{
color: #0081FF;
}
}
.searchInput .el-input{
width: 68%;
}
......
......@@ -64,7 +64,7 @@
</div>
</div>
<div class="con i">
<span>建设单位 :</span>
<span>业主单位 :</span>
<div class="inputxt" id="inputxt3" :style="{width:rig1}">
<div class="flex" v-if="nowedit == 3 && isDisabled == false">
<el-input placeholder="待添加" v-model="xmsldata.constructionUnit"></el-input>
......@@ -93,7 +93,7 @@
</div>
</div>
<div class="con i">
<span>建设单位负责人 :</span>
<span>业主单位负责人 :</span>
<div class="inputxt" id="inputxt5">
<div class="flex" v-if="nowedit == 5 && isDisabled == false">
<el-input placeholder="待添加" v-model="xmsldata.constructionPrincipal"></el-input>
......@@ -121,7 +121,7 @@
</div>
</div>
<div class="con i">
<span>建设单位联系电话 :</span>
<span>业主单位联系电话 :</span>
<div class="inputxt" id="inputxt7">
<div class="flex" v-if="nowedit == 7 && isDisabled == false">
<el-input placeholder="待添加" v-model="xmsldata.constructionPhone"></el-input>
......
......@@ -129,7 +129,7 @@
<span>项目类型:</span>
<span>{{item.projectType}}</span>
</div>
<div class="det-con" v-if="item.investmentAmount">
<div class="det-con" v-if="item.investmentAmount&&item.investmentAmount>0">
<span>投资估算(万元):</span>
<span>{{item.investmentAmount}}</span>
</div>
......@@ -139,7 +139,8 @@
</div>
<div class="det-con" v-if="item.ownerCompany ">
<span>业主单位:</span>
<span class="wordprimary">{{item.ownerCompany}}</span>
<span class="wordprimary" v-if="item.ownerCompanyCid||item.ownerCompanyUipId" @click="toEnterprise(item)">{{item.ownerCompany}}</span>
<span v-else>{{item.ownerCompany}}</span>
</div>
</div>
<el-divider v-if="index != datalist.length-1"></el-divider>
......@@ -185,11 +186,13 @@
import addproject from './component/addProject'
import batchimport from './component/batchImport'
import skeleton from './component/skeleton'
import {encodeStr} from "@/assets/js/common.js"
export default {
name: 'ProjectList',
components:{addproject,batchimport,skeleton},
data() {
return {
encodeStr,
types:'project',
props:{multiple: true},
activeName:'first',
......@@ -387,6 +390,13 @@ export default {
toDetail(id,tag){
this.$router.push({ path: '/project/projectList/detail', query: {id:id,tag:tag} });
},
toEnterprise(item){
if(item.ownerCompanyUipId){
this.$router.push({ path: '/enterprise/'+this.encodeStr(item.ownerCompanyCid)});
}else if(item.ownerCompanyCid){
this.$router.push({ path: '/company/'+this.encodeStr(item.ownerCompanyCid)});
}
},
handleClick(){
this.reset()
},
......
......@@ -54,7 +54,8 @@
<el-table-column label="企业名称" >
<template slot-scope="scope">
<router-link :to="scope.row.uipId?'/enterprise/' + encodeStr(scope.row.uipId) :'/company/' + encodeStr(scope.row.companyId) " tag="a" class="list-titel-a blue" v-html="scope.row.companyName"></router-link>
<router-link v-if="scope.row.uipId||scope.row.companyId" :to="scope.row.uipId?'/enterprise/' + encodeStr(scope.row.companyId) :'/company/' + encodeStr(scope.row.companyId) " tag="a" class="list-titel-a blue" v-html="scope.row.companyName"></router-link>
<span v-else>{{ scope.row.companyName||'--' }}</span>
</template>
</el-table-column>
......
......@@ -25,7 +25,7 @@
<p class="list-content-text">
<span>招采单位:</span>
<span v-if="textList.tenderee">
<router-link :to="textList.uipId?'/enterprise/' + encodeStr(textList.uipId) :'/company/' + encodeStr(textList.tendereeId) " tag="a" class="list-titel-a blue" v-html="textList.tenderee"></router-link>
<router-link :to="'/company/' + encodeStr(textList.tendereeId) " tag="a" class="list-titel-a blue" v-html="textList.tenderee"></router-link>
</span>
<span v-else>--</span>
</p>
......
......@@ -87,7 +87,10 @@
</p>
<p>
<label class="label">项目联系方式</label>
<span>{{textList.personTel||'--'}}</span>
<span v-if="textList.personTel && textList.personTel.length>0">
<template v-for="item in JSON.parse(textList.personTel)">{{ item.tel }} </template>
</span>
<span v-else>--</span>
<label class="label">行业分类</label>
<span>{{textList.projectIndustry||'--'}}</span>
</p>
......
......@@ -119,7 +119,11 @@
</div>
<div class="bottomlist">
<div class="bottomlist-title">
<div></div>
<div class="bottomlist-title-left" >
<p class="title-left">
查询结果
</p>
</div>
<div class="title-right">
<p>共有{{total}}</p>
<p>
......@@ -129,12 +133,13 @@
</div>
</div>
<div class="table-item-jf1" v-if="tableData.length==0">
<div class="table-item-jf1" v-if="tableData.length==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>
<ul class="bottomlist-content" v-if="tableData.length>0">
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<ul class="bottomlist-content" v-if="tableData.length>0&& !isSkeleton">
<li class="bottomlist-list" v-for="item in tableData">
<p class="list-titel">
<router-link :to="'/radar/BidRecord/details/'+ item.id" tag="a" class="list-titel-a" v-html="item.projectName"></router-link>
......@@ -184,11 +189,14 @@
<script>
import jsk_data from '../../../../../public/jsk.json';
import {encodeStr} from "@/assets/js/common.js"
import skeleton from '@/views/project/projectList/component/skeleton'
import api from '@/api/radar/radar.js';
export default {
name: 'BidRecord',
components:{skeleton},
data() {
return {
isSkeleton:true,
addressList: [],
addressType: [],
props: {
......@@ -434,7 +442,9 @@ export default {
}else{
delete params.keywordNot
}
this.isSkeleton = true;
api.jskBidTenderPage(params).then(res=>{
this.isSkeleton = false;
if (res.code==200) {
this.tableData=res.data.list;
this.total=res.data.total;
......@@ -970,7 +980,20 @@ export default {
cursor: pointer;
}
}
.bottomlist-title-left{
display: inline-flex;;
align-items: center;
.title-left{
border-left:2px solid #445781;
padding-left:8px;
padding-right:32px;
font-size: 16px;
height:16px;
line-height: 16px;
font-weight: bold;
color: #232323;
}
}
}
.bottomlist-content{
......
......@@ -204,7 +204,11 @@
</div>
<div class="bottomlist">
<div class="bottomlist-title">
<div></div>
<div class="bottomlist-title-left" >
<p class="title-left">
查询结果
</p>
</div>
<div class="title-right">
<p>共有{{total}}</p>
<p>
......@@ -214,12 +218,13 @@
</div>
</div>
<div class="table-item-jf1" v-if="tableData.length==0">
<div class="table-item-jf1" v-if="tableData.length==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>
<ul class="bottomlist-content" v-if="tableData.length>0">
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<ul class="bottomlist-content" v-if="tableData.length>0&& !isSkeleton">
<li class="bottomlist-list" v-for="item in tableData">
<p class="list-titel">
<router-link :to="'/radar/Bidding/details/'+ item.id" tag="a" class="list-titel-a" v-html="item.projectName" ></router-link>
......@@ -306,12 +311,15 @@
<script>
import jsk_data from '../../../../../public/jsk.json';
import {encodeStr} from "@/assets/js/common.js"
import skeleton from '@/views/project/projectList/component/skeleton'
import api from '@/api/radar/radar.js';
export default {
name: 'Bidding',
components:{skeleton},
data() {
return {
encodeStr,
isSkeleton:true,
IssueTimeOptions: [
{
label: "不限",
......@@ -590,7 +598,9 @@ export default {
}else{
delete params.keywordNot
}
this.isSkeleton = true;
api.jskBidPlanPage(params).then(res=>{
this.isSkeleton = false;
if (res.code==200) {
this.tableData=res.data.list;
this.total=res.data.total;
......@@ -1151,7 +1161,20 @@ export default {
margin-top: 12px;
padding: 16px ;
border-bottom: 1px solid #EFEFEF;
.bottomlist-title-left{
display: inline-flex;;
align-items: center;
.title-left{
border-left:2px solid #445781;
padding-left:8px;
padding-right:32px;
font-size: 16px;
height:16px;
line-height: 16px;
font-weight: bold;
color: #232323;
}
}
.title-right{
display: flex;
align-items: center;
......
......@@ -175,7 +175,11 @@
</div>
<div class="bottomlist">
<div class="bottomlist-title">
<div></div>
<div class="bottomlist-title-left" >
<p class="title-left">
查询结果
</p>
</div>
<div class="title-right">
<p>共有{{total}}</p>
<p>
......@@ -185,12 +189,13 @@
</div>
</div>
<div class="table-item-jf1" v-if="tableData.length==0">
<div class="table-item-jf1" v-if="tableData.length==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>
<ul class="bottomlist-content" v-if="tableData.length>0">
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<ul class="bottomlist-content" v-if="tableData.length>0&& !isSkeleton">
<li class="bottomlist-list" v-for="item in tableData">
<p class="list-titel">
<router-link :to="'/radar/Establishment/details/'+ item.id" tag="a" class="list-titel-a" v-html="item.projectName" ></router-link>
......@@ -269,14 +274,15 @@
<script>
import jsk_data from '../../../../../public/jsk.json';
import {encodeStr} from "@/assets/js/common.js"
import skeleton from '@/views/project/projectList/component/skeleton'
import api from '@/api/radar/radar.js';
export default {
name: 'Establishment',
components: {
},
components:{skeleton},
data() {
return {
encodeStr,
isSkeleton:true,
//是否为向民间推介项目
isProjectOptions: [{
value: 0,
......@@ -625,8 +631,9 @@
},
establishmentDto: data,
};
this.isSkeleton = true;
api.establishmentPage(params).then(res=>{
this.isSkeleton = false;
if (res.code==200) {
this.tableData=res.data.list;
this.total=res.data.total;
......@@ -1264,7 +1271,20 @@
cursor: pointer;
}
}
.bottomlist-title-left{
display: inline-flex;;
align-items: center;
.title-left{
border-left:2px solid #445781;
padding-left:8px;
padding-right:32px;
font-size: 16px;
height:16px;
line-height: 16px;
font-weight: bold;
color: #232323;
}
}
}
.bottomlist-content{
......
......@@ -202,6 +202,10 @@
<div class="bottomlist">
<div class="bottomlist-title">
<div class="bottomlist-title-left" >
<p class="title-left">
查询结果
</p>
<el-popover v-model="fieldshow" placement="bottom-start" trigger="click"
popper-class="viewlist-el-popover">
<ul class="pup_list">
......@@ -215,6 +219,7 @@
:style="{transform:fieldshow?'rotate(180deg)':''}"></i>
</span>
</el-popover>
</div>
<div class="title-right">
<p>共有{{total}}</p>
<p>
......@@ -224,13 +229,13 @@
</div>
</div>
<div class="table-item-jf1" v-if="tableData.length==0">
<div class="table-item-jf1" v-if="tableData.length==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>
<ul class="bottomlist-content" v-if="tableData.length>0">
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<ul class="bottomlist-content" v-if="tableData.length>0&& !isSkeleton">
<li class="bottomlist-list" v-for="item in tableData">
<p class="list-titel">
<router-link :to="'/radar/Land/details/'+ item.id" tag="a" class="list-titel-a" v-html="item.projectName"></router-link>
......@@ -312,13 +317,16 @@
<script>
import {encodeStr} from "@/assets/js/common.js"
import skeleton from '@/views/project/projectList/component/skeleton'
import api from '@/api/radar/radar.js';
import jsk_data from '../../../../../public/jsk.json';
export default {
name: 'Land',
components:{skeleton},
data() {
return {
encodeStr,
isSkeleton:true,
conditionTitles: {
keyword: "关键词:",
landAddr: "土地坐落:",
......@@ -612,7 +620,9 @@
},
landMarketDto: data,
};
this.isSkeleton = true;
api.landMarketPage(params).then(res=>{
this.isSkeleton = false;
if (res.code==200) {
this.tableData=res.data.list;
this.total=res.data.total;
......@@ -1041,7 +1051,20 @@
margin-top: 12px;
padding: 16px ;
border-bottom: 1px solid #EFEFEF;
.bottomlist-title-left{
display: inline-flex;;
align-items: center;
.title-left{
border-left:2px solid #445781;
padding-left:8px;
padding-right:32px;
font-size: 16px;
height:16px;
line-height: 16px;
font-weight: bold;
color: #232323;
}
}
.title-right{
display: flex;
align-items: center;
......
......@@ -177,19 +177,26 @@
</div>
<div class="bottomlist">
<div class="bottomlist-title">
<div class="bottomlist-title-left" >
<p class="title-left">
查询结果
</p>
</div>
<div class="title-right">
<p>共有{{total}}</p>
<p>
<img src="@/assets/images/EXCEL.png" alt="">
<span class="excel" @click="$message({message: '功能正在开发中',type: 'warning'})">导出EXCEL</span>
</p>
</div>
<div class="table-item-jf1" v-if="tableData.length==0">
</div>
<div class="table-item-jf1" v-if="tableData.length==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>
<ul class="bottomlist-content" v-if="tableData.length>0">
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<ul class="bottomlist-content" v-if="tableData.length>0&& !isSkeleton">
<li class="bottomlist-list" v-for="item in tableData">
<p class="list-titel">
<router-link :to="'/radar/Tender/details/'+ item.id" tag="a" class="list-titel-a" v-html="item.projectName"></router-link>
......@@ -285,18 +292,20 @@
import Select from "./Select.vue";
import jsk_data from '../../../../../public/jsk.json';
import {encodeStr} from "@/assets/js/common.js"
import skeleton from '@/views/project/projectList/component/skeleton'
import api from '@/api/radar/radar.js';
export default {
name: 'Tender',
components: {
Select
Select,skeleton
},
data() {
return {
//有无联系方式
encodeStr,
isSkeleton:true,
phonePointType: [{
value: '',
label: '不限'
......@@ -787,8 +796,9 @@
};
params.keyword = this.keyword;
params.keywordNot = this.keywordNot;
this.isSkeleton = true;
api.jskBidPage(params).then(res=>{
this.isSkeleton = false;
if (res.code==200) {
this.tableData=res.data.list;
this.total=res.data.total;
......@@ -1232,26 +1242,42 @@
.bottomlist-title {
display: flex;
justify-content: end;
justify-content: space-between;
align-items: center;
margin-top: 12px;
padding: 24px;
padding: 16px ;
border-bottom: 1px solid #EFEFEF;
p:first-child {
.bottomlist-title-left{
display: inline-flex;;
align-items: center;
.title-left{
border-left:2px solid #445781;
padding-left:8px;
padding-right:32px;
font-size: 16px;
height:16px;
line-height: 16px;
font-weight: bold;
color: #232323;
}
}
.title-right{
display: flex;
align-items: center;
p:first-child{
font-size: 12px;
font-weight: 400;
color: #3D3D3D;
margin-right: 10px;
}
p:last-child {
p:last-child{
display: flex;
align-items: center;
font-size: 14px;
font-weight: 400;
color: rgba(35, 35, 35, 0.8);
color: rgba(35,35,35,0.8);
}
img {
img{
width: 18px;
height: 18px;
}
......@@ -1259,6 +1285,7 @@
cursor: pointer;
}
}
}
.bottomlist-content {
......
......@@ -331,7 +331,11 @@
</div>
<div class="bottomlist">
<div class="bottomlist-title">
<div></div>
<div class="bottomlist-title-left" >
<p class="title-left">
查询结果
</p>
</div>
<div class="title-right">
<p>共有{{total}}条</p>
<p>
......@@ -341,13 +345,13 @@
</div>
</div>
<div class="table-item-jf1" v-if="tableData.length==0">
<div class="table-item-jf1" v-if="tableData.length==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>
<div class="table-item" v-if="tableData.length>0">
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class="table-item" v-if="tableData.length>0&& !isSkeleton">
<el-table :data="tableData" element-loading-text="Loading" border fit highlight-current-row>
<el-table-column label="序号" width="60">
<template slot-scope="scope">
......@@ -486,15 +490,17 @@
import jsk_data from '../../../../../public/jsk.json';
import Keyword from "@/components/Keyword";
import {encodeStr} from "@/assets/js/common.js"
import skeleton from '@/views/project/projectList/component/skeleton'
import api from '@/api/radar/radar.js';
export default {
name: "bxprozbgg",
components: {
Keyword
Keyword,skeleton
},
data(){
return{
encodeStr,
isSkeleton:true,
allDownloadList:[],
province:[
{
......@@ -1635,7 +1641,9 @@
params.keyword = this.keyword;
params.keywordNot = this.keywordNot;
this.currentPage = params.page.page;
this.isSkeleton = true;
api.jskBidNewsPage(params).then(res=>{
this.isSkeleton = false;
if (res.code==200) {
this.tableData=res.data.list;
this.total=res.data.total;
......@@ -1987,7 +1995,20 @@
align-items: center;
margin-top: 12px;
padding: 16px ;
.bottomlist-title-left{
display: inline-flex;;
align-items: center;
.title-left{
border-left:2px solid #445781;
padding-left:8px;
padding-right:32px;
font-size: 16px;
height:16px;
line-height: 16px;
font-weight: bold;
color: #232323;
}
}
.title-right{
display: flex;
align-items: center;
......@@ -2030,7 +2051,6 @@
}
}
}
}
.bottomlist-content{
......
......@@ -91,20 +91,26 @@
<div class="bottomlist">
<div class="bottomlist-title">
<div class="bottomlist-title-left" >
<p class="title-left">
查询结果
</p>
</div>
<div class="title-right">
<p>共有{{total}}条</p>
<p>
<img src="@/assets/images/EXCEL.png" alt="">
<span class="excel" @click="$message({message: '功能正在开发中',type: 'warning'})">导出EXCEL</span>
</p>
</div>
<div class="table-item-jf1" v-if="tableData.length==0">
</div>
<div class="table-item-jf1" v-if="tableData.length==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>
<ul class="bottomlist-content" v-if="tableData.length>0">
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<ul class="bottomlist-content" v-if="!isSkeleton&&tableData.length>0">
<li class="bottomlist-list" v-for="item in tableData">
<p class="list-titel">
<router-link :to="'/radar/debtProject/details/'+ item.uuid" tag="a" class="list-titel-a" v-html="item.projectName" ></router-link>
......@@ -180,13 +186,16 @@
<script>
import {encodeStr} from "@/assets/js/common.js"
import skeleton from '@/views/project/projectList/component/skeleton'
import api from '@/api/radar/radar.js';
import jsk_data from '../../../../../public/jsk.json';
export default {
name: 'debtProject',
components:{skeleton},
data() {
return {
encodeStr,
isSkeleton:true,
projectName:'',
nameTypeList: [{
key: 'like',
......@@ -490,8 +499,9 @@
if(this.projectType.length>0&&this.projectType[0]!='不限'){
params.specialBondProjectDto['projectType'] = this.projectType.join(',');
}
this.isSkeleton = true;
api.bondProjectPage(params).then(res=>{
this.isSkeleton = false;
if (res.code==200) {
this.tableData=res.data.list;
this.total=res.data.total;
......@@ -672,11 +682,28 @@
border-radius: 4px 4px 4px 4px;
.bottomlist-title{
display: flex;
justify-content: end;
justify-content: space-between;
align-items: center;
margin-top: 12px;
padding: 24px ;
padding: 16px ;
border-bottom: 1px solid #EFEFEF;
.bottomlist-title-left{
display: inline-flex;;
align-items: center;
.title-left{
border-left:2px solid #445781;
padding-left:8px;
padding-right:32px;
font-size: 16px;
height:16px;
line-height: 16px;
font-weight: bold;
color: #232323;
}
}
.title-right{
display: flex;
align-items: center;
p:first-child{
font-size: 12px;
font-weight: 400;
......@@ -684,6 +711,8 @@
margin-right: 10px;
}
p:last-child{
display: flex;
align-items: center;
font-size: 14px;
font-weight: 400;
color: rgba(35,35,35,0.8);
......@@ -696,6 +725,7 @@
cursor: pointer;
}
}
}
.bottomlist-content{
padding-bottom: 0px;
......
package com.dsk.common.core.domain.entity;
package com.dsk.system.domain.business;
import java.util.Date;
import com.dsk.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.dsk.common.annotation.Excel;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
......@@ -14,6 +15,7 @@ import org.apache.commons.lang3.builder.ToStringStyle;
* @author lxl
* @date 2023-05-17
*/
@Data
public class BusinessBacklog extends BaseEntity
{
private static final long serialVersionUID = 1L;
......@@ -34,82 +36,17 @@ public class BusinessBacklog extends BaseEntity
private String task;
/** 完成时间 */
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date finishTime;
/** 完成时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "到期时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date dueTime;
/** 状态(2已完成,1进行中,0逾期) */
@Excel(name = "状态(2已完成,1进行中,0逾期)")
@Excel(name = "状态 0:进行中 1:已到期")
private Integer state;
public void setId(Integer id)
{
this.id = id;
}
public Integer getId()
{
return id;
}
public void setBusinessId(Integer businessId)
{
this.businessId = businessId;
}
public Integer getBusinessId()
{
return businessId;
}
public void setTarget(String target)
{
this.target = target;
}
public String getTarget()
{
return target;
}
public void setTask(String task)
{
this.task = task;
}
public String getTask()
{
return task;
}
public void setFinishTime(Date finishTime)
{
this.finishTime = finishTime;
}
public Date getFinishTime()
{
return finishTime;
}
public void setState(Integer state)
{
this.state = state;
}
public Integer getState()
{
return state;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("businessId", getBusinessId())
.append("target", getTarget())
.append("task", getTask())
.append("finishTime", getFinishTime())
.append("state", getState())
.append("createTime", getCreateTime())
.append("updateTime", getUpdateTime())
.toString();
}
}
package com.dsk.system.domain;
package com.dsk.system.domain.business.dto;
import lombok.Data;
......@@ -18,7 +18,7 @@ public class BusinessAddDto {
/**
* 用户id
*/
private Integer userId;
private Long userId;
/**
* 项目类型
......
package com.dsk.system.domain;
package com.dsk.system.domain.business.dto;
import com.dsk.common.utils.StringUtils;
import lombok.Data;
......
package com.dsk.system.domain;
package com.dsk.system.domain.business.dto;
import lombok.Data;
......@@ -24,7 +24,7 @@ public class BusinessListDto {
/**
* 用户查看全部他人可见项目标示
*/
private Integer others;
private Long others;
/**
* 省id
......
package com.dsk.system.domain.business.vo;
import com.dsk.common.annotation.Excel;
import com.dsk.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
* 项目工作待办对象 business_backlog
*
* @author lxl
* @date 2023-05-17
*/
@Data
public class BusinessBacklogListVo {
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private Integer id;
/** 项目id */
private Integer businessId;
/** 关联客户 */
private String target;
/** 待办工作内容 */
private String task;
/** 完成时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date finishTime;
/** 完成时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "到期时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private Date dueTime;
/** 状态(2已完成,1进行中,0逾期) */
@Excel(name = "状态 0:进行中 1:已到期 2:已逾期")
private Integer state;
}
package com.dsk.system.domain.business.vo;
import com.dsk.common.annotation.Excel;
import lombok.Data;
/**
* @author lcl
* @create 2023/7/27
*/
@Data
public class BusinessLikeProjectNameListVo {
private String projectName;
private String companyName;
/** 总投金额(万元) */
private Double investmentAmount;
/** 项目级别 */
private String projectLevel;
/** 项目阶段 */
private String projectStage;
/** 项目类型 */
private String projectType;
/** 项目类别 */
private String projectCategory;
/** 项目状态(0.储备中1.跟进中2.已合作) */
private Integer status;
}
package com.dsk.system.domain.vo;
package com.dsk.system.domain.business.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
......@@ -48,6 +48,16 @@ public class BusinessListVo {
*/
private String ownerCompany;
/**
* 业主单位城投id
*/
private String ownerCompanyUipId;
/**
* 业主单位建设库id
*/
private Integer ownerCompanyCid;
/**
* 最后跟进时间
*/
......
package com.dsk.system.domain.customer;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 用户联系人(CustomerContact)实体类
*
* @author makejava
* @since 2023-07-25 17:18:00
*/
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("contact_info")
public class ContactInfo implements Serializable {
private static final long serialVersionUID = -22461377492423075L;
@TableId(value = "id",type = IdType.AUTO)
private Long id;
/**
* 客户id
*/
private String customerId;
/**
* 项目id
*/
private Integer projectId;
/**
* 姓名
*/
private String name;
/**
* 性别
*/
private String sex;
/**
* 角色
*/
private String role;
/**
* 职位
*/
private String position;
/**
* 联系方式
*/
private String contactInformation;
/**
* 企业id
*/
private Integer companyId;
/**
* 城投企业id
*/
private String uipId;
/**
* 企业名称
*/
private String companyName;
/**
* 备注
*/
private String remark;
private String createBy;
private Date createTime;
private String updateBy;
private Long updateId;
private Date updateTime;
}
package com.dsk.system.domain.customer.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @author lcl
* @create 2023/5/16
*/
@Data
public class ContactInfoSearchDto implements Serializable {
/**
* 项目id
*/
private Integer projectId;
/**
* 企业名称
*/
private String companyName;
/**
* 客户id
*/
private String customerId;
}
......@@ -10,10 +10,22 @@ import java.io.Serializable;
*/
@Data
public class CustomerSearchDto implements Serializable {
/**
* 企业id
*/
private Integer companyId;
/**
* 城投企业id
*/
private String uipId;
/**
* 企业名称
*/
private String companyName;
/**
* 客户id
*/
private String customerId;
/**
* 用户id
*/
......
package com.dsk.system.domain.customer.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 用户联系人(CustomerContact)实体类
*
* @author makejava
* @since 2023-07-25 17:18:00
*/
@Data
public class ContactInfoListVo implements Serializable {
private static final long serialVersionUID = -22461377492423075L;
private Long id;
/**
* 客户id
*/
private String customerId;
/**
* 项目id
*/
private Integer projectId;
/**
* 项目名称
*/
private String projectName;
/**
* 姓名
*/
private String name;
/**
* 性别
*/
private String sex;
/**
* 角色
*/
private String role;
/**
* 职位
*/
private String position;
/**
* 联系方式
*/
private String contactInformation;
/**
* 企业id
*/
private Integer companyId;
/**
* 城投企业id
*/
private String uipId;
/**
* 企业名称
*/
private String companyName;
/**
* 更新人
*/
private String updateBy;
}
......@@ -145,9 +145,38 @@ public class EnterpriseService {
}
public TableDataInfo investment(EnterpriseInvestmentBody body) throws Exception {
if (body.isVaildCid()) return new TableDataInfo(new ArrayList<>(), 0);
if (body.isVaildCid()) {
return new TableDataInfo(new ArrayList<>(), 0);
}
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterprise/investment", BeanUtil.beanToMap(body, false, false));
return dskOpenApiUtil.responsePage(map);
// Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterprise/investment", BeanUtil.beanToMap(body, false, false));
// Integer code = MapUtils.getInteger(map, "code", 300);
// if (!code.equals(HttpStatus.OK.value())) {
// throw new RuntimeException();
// }
// Map data = MapUtils.getMap(map, "data", null);
// List<Object> list = CommonUtils.assertAsArray(MapUtils.getObject(data, "list", ""));
// if (CollectionUtils.isEmpty(list)) {
// return new TableDataInfo(list, 0);
// }
// List<Object> newList = new ArrayList<>(20);
// for (Object companyObj : list) {
// Map<String, Object> companyMap = CommonUtils.assertAsMap(companyObj);
// String businessStatus = MapUtils.getString(companyMap, "businessStatus");
// if (!"注销".equals(businessStatus)) {
// newList.add(companyMap);
// }
// }
// for (Object companyObj : list) {
// Map<String, Object> companyMap = CommonUtils.assertAsMap(companyObj);
// String businessStatus = MapUtils.getString(companyMap, "businessStatus");
// if ("注销".equals(businessStatus)) {
// newList.add(companyMap);
// }
// }
// return new TableDataInfo(newList, MapUtils.getInteger(data, "totalCount", 0));
}
public TableDataInfo affiliates(EnterpriseAffiliatesBody body) throws Exception {
......@@ -221,16 +250,32 @@ public class EnterpriseService {
}
ArrayList<String> uipIds = new ArrayList<>();
ArrayList<Long> cIds = new ArrayList<>();
for (Object dataMap : list) {
uipIds.add(MapUtils.getString(CommonUtils.assertAsMap(dataMap), "uipId"));
cIds.add(MapUtils.getLong(CommonUtils.assertAsMap(dataMap), "companyId"));
}
List<CustomerStatusListVo> claimStatusList = iCustomerService.selectStatusList(uipIds);
Map<String, Object> bondCreditRatingBatchMap = new HashMap<>(1);
bondCreditRatingBatchMap.put("cIds", cIds);
Map<String, Object> bondCreditRatingMap = dskOpenApiUtil.requestBody("/operate/enterprise/bondCreditRatingBatch", bondCreditRatingBatchMap);
Integer codeRating = MapUtils.getInteger(bondCreditRatingMap, "code", 300);
ArrayList<Map<String, Object>> objArrayList = new ArrayList(1);
if (codeRating.equals(HttpStatus.OK.value())) {
Object object = bondCreditRatingMap.get("data");
if (ObjectUtil.isNotEmpty(object)) {
objArrayList = (ArrayList)object;
}
}
//按照城投企业id合并两个list
for (Object companyObj : list) {
Map<String, Object> companyMap = CommonUtils.assertAsMap(companyObj);
companyMap.put("bratingSubjectLevel", null);
String uipId = MapUtils.getString(companyMap, "uipId");
Long companyId = MapUtils.getLong(companyMap, "companyId");
companyMap.put("bondBalance",MapUtils.getDouble(companyMap, "bondBalance")==null?null:String.format("%.2f", MapUtils.getDouble(companyMap, "bondBalance")));
companyMap.put("totalAssets",MapUtils.getDouble(companyMap, "totalAssets")==null?null:String.format("%.2f", MapUtils.getDouble(companyMap, "totalAssets")));
companyMap.put("belongNetAssets",MapUtils.getDouble(companyMap, "belongNetAssets")==null?null:String.format("%.2f", MapUtils.getDouble(companyMap, "belongNetAssets")));
......@@ -273,6 +318,12 @@ public class EnterpriseService {
companyMap.put("claimStatus", 1);
}
}
for (Map<String, Object> m : objArrayList) {
Long companyIdCredit = MapUtils.getLong(m, "companyId", 0L);
if (companyIdCredit.equals(companyId)) {
companyMap.put("bratingSubjectLevel", m.get("bratingSubjectLevel"));
}
}
}
return new TableDataInfo(list, MapUtils.getInteger(data, "totalCount", 0));
......
package com.dsk.system.mapper;
import com.dsk.common.core.domain.entity.BusinessBacklog;
import com.dsk.system.domain.business.BusinessBacklog;
import com.dsk.system.domain.business.vo.BusinessBacklogListVo;
import java.util.List;
......@@ -26,7 +27,7 @@ public interface BusinessBacklogMapper
* @param businessBacklog 项目工作待办
* @return 项目工作待办集合
*/
public List<BusinessBacklog> selectBusinessBacklogList(BusinessBacklog businessBacklog);
public List<BusinessBacklogListVo> selectBusinessBacklogList(BusinessBacklog businessBacklog);
/**
* 新增项目工作待办
......@@ -60,9 +61,6 @@ public interface BusinessBacklogMapper
*/
public int deleteBusinessBacklogByIds(Long[] ids);
/**
* 修改工作待办逾期状态
* @return
*/
int updateBacklogState();
Integer overdueCount(Integer businessId);
}
package com.dsk.system.mapper;
import com.dsk.common.core.domain.entity.BusinessFollowRecord;
import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.BusinessListDto;
import com.dsk.system.domain.vo.BusinessListVo;
import com.dsk.system.domain.business.dto.BusinessIdDto;
import com.dsk.system.domain.business.dto.BusinessListDto;
import com.dsk.system.domain.business.vo.BusinessListVo;
import java.util.List;
......
......@@ -2,11 +2,12 @@ package com.dsk.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.common.core.domain.entity.BusinessInfo;
import com.dsk.system.domain.BusinessListDto;
import com.dsk.system.domain.business.dto.BusinessListDto;
import com.dsk.system.domain.business.vo.BusinessLikeProjectNameListVo;
import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto;
import com.dsk.system.domain.customer.vo.CustomerBusinessListVo;
import com.dsk.system.domain.vo.BusinessBrowseVo;
import com.dsk.system.domain.vo.BusinessListVo;
import com.dsk.system.domain.business.vo.BusinessBrowseVo;
import com.dsk.system.domain.business.vo.BusinessListVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
......@@ -19,8 +20,7 @@ import java.util.List;
* @date 2023-05-17
*/
@Mapper
public interface BusinessInfoMapper extends BaseMapper<BusinessInfo>
{
public interface BusinessInfoMapper extends BaseMapper<BusinessInfo> {
/**
* 查询项目详情
*
......@@ -39,9 +39,10 @@ public interface BusinessInfoMapper extends BaseMapper<BusinessInfo>
/**
* 查询所有项目名称(支持模糊查询)
*
* @return
*/
List<String> selectProjectName(BusinessListDto dto);
List<BusinessLikeProjectNameListVo> selectProjectName(BusinessListDto dto);
/**
* 查询项目详情列表
......@@ -78,6 +79,7 @@ public interface BusinessInfoMapper extends BaseMapper<BusinessInfo>
/**
* 批量删除项目
* 项目关联的其他所有表数据一并删除
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
......@@ -85,6 +87,7 @@ public interface BusinessInfoMapper extends BaseMapper<BusinessInfo>
/**
* 根据项目统计
*
* @param business
* @return
*/
......@@ -92,13 +95,16 @@ public interface BusinessInfoMapper extends BaseMapper<BusinessInfo>
/**
* 查询项目名称是否存在
*
* @param projectName
* @param userId
* @return
*/
int isRepetitionProjectName(@Param("projectName") String projectName,@Param("userId") Integer userId);
int isRepetitionProjectName(@Param("projectName") String projectName,
@Param("userId") Long userId,
@Param("companyName") String companyName);
int selectCountByStatusAndCustomerId(@Param("status") Integer status,@Param("customerId") String customerId);
int selectCountByStatusAndCustomerId(@Param("status") Integer status, @Param("customerId") String customerId);
List<CustomerBusinessListVo> selectCustomerBusinessList(CustomerBusinessSearchDto dto);
......
package com.dsk.system.mapper;
import com.dsk.common.core.domain.entity.BusinessLabel;
import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.business.dto.BusinessIdDto;
import java.util.List;
......
......@@ -61,4 +61,7 @@ public interface BusinessRelateCompanyMapper extends BaseMapper<BusinessRelateCo
* @return 结果
*/
public int deleteBusinessRelateCompanyByIds(Long[] ids);
BusinessRelateCompany selectByProprietor(Integer id);
}
package com.dsk.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.system.domain.customer.ContactInfo;
import com.dsk.system.domain.customer.dto.ContactInfoSearchDto;
import com.dsk.system.domain.customer.vo.ContactInfoListVo;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 用户联系人(CustomerContact)表数据库访问层
*
* @author makejava
* @since 2023-07-25 17:18:05
*/
@Mapper
public interface ContactInfoMapper extends BaseMapper<ContactInfo> {
List<ContactInfoListVo> selectPageList(ContactInfoSearchDto dto);
}
package com.dsk.system.searchService;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.utils.DskOpenApiUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
* @Author liujie
* @ClassName MarketAnalysisServiceImpl
* @Date 2023/5/15 16:40
**/
@Service
public class BusinessOpportunityRadarService {
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
public AjaxResult jskBidNewsPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/news/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult findByName(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/news/findByName", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult jskBidTenderPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidTender/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult establishmentPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/establishment/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult jskBidPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult landMarketPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/landMarket/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult enterpriseIndex(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/index", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult enterprisePage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult enterpriseByName(String keyword) {
Map<String, Object> params = new HashMap<>();
params.put("keyword", keyword);
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/findByName", params);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult bondProjectPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/bondProject/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult jskBidPlanPage(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidPlan/page", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult getCapitalSourceSelect() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidPlan/getCapitalSourceSelect", null);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult keywordList() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/project/keywordList", null);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult bidSourceList(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBid/source", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
}
package com.dsk.system.searchService;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.utils.DskOpenApiUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* @Author liujie
* @ClassName MarketAnalysisServiceImpl
* @Date 2023/5/15 16:40
**/
@Service
public class MarketAnalysisService {
@Autowired
private DskOpenApiUtil dskOpenApiUtil;
public AjaxResult areaGroupByProvince() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/areaGroupByProvince", null);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult certGroupByMajorAndLevel() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/certGroupByMajorAndLevel", null);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult certGroupByMajorProvinceLevel() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/certGroupByMajorProvinceLevel", null);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult bidMoneyGroupByProjectType(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/bidMoneyGroupByProjectType", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult bidGroupCountByProjectType(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/bidGroupCountByProjectType", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult countGroupByProvince(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countGroupByProvince", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
public AjaxResult countGroupByMonth(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countGroupByMonth", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
}
package com.dsk.system.service;
import com.dsk.common.core.domain.entity.BusinessBacklog;
import com.dsk.system.domain.business.BusinessBacklog;
import com.dsk.system.domain.business.vo.BusinessBacklogListVo;
import java.util.List;
......@@ -26,7 +27,7 @@ public interface IBusinessBacklogService
* @param businessBacklog 项目工作待办
* @return 项目工作待办集合
*/
public List<BusinessBacklog> selectBusinessBacklogList(BusinessBacklog businessBacklog);
public List<BusinessBacklogListVo> selectBusinessBacklogList(BusinessBacklog businessBacklog);
/**
* 新增项目工作待办
......@@ -59,4 +60,7 @@ public interface IBusinessBacklogService
* @return 结果
*/
public int deleteBusinessBacklogById(Long id);
Integer overdueCount(Integer businessId);
}
package com.dsk.system.service;
import com.dsk.common.core.domain.entity.BusinessFollowRecord;
import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.BusinessListDto;
import com.dsk.system.domain.vo.BusinessListVo;
import com.dsk.system.domain.business.dto.BusinessIdDto;
import com.dsk.system.domain.business.dto.BusinessListDto;
import com.dsk.system.domain.business.vo.BusinessListVo;
import java.util.List;
......
......@@ -2,16 +2,17 @@ package com.dsk.system.service;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessInfo;
import com.dsk.system.domain.BusinessAddDto;
import com.dsk.system.domain.BusinessListDto;
import com.dsk.system.domain.business.dto.BusinessAddDto;
import com.dsk.system.domain.business.dto.BusinessListDto;
import com.dsk.system.domain.business.vo.BusinessLikeProjectNameListVo;
import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto;
import com.dsk.system.domain.customer.vo.CustomerBusinessListVo;
import com.dsk.system.domain.vo.BusinessBrowseVo;
import com.dsk.system.domain.vo.BusinessListVo;
import com.dsk.system.domain.business.vo.BusinessBrowseVo;
import com.dsk.system.domain.business.vo.BusinessListVo;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
* 项目详情Service接口
......@@ -56,7 +57,7 @@ public interface IBusinessInfoService
* 查询所有项目名称(支持模糊查询)
* @return
*/
List<String> selectProjectName(BusinessListDto dto);
List<BusinessLikeProjectNameListVo> selectProjectName(BusinessListDto dto);
/**
* 项目批量导入
......@@ -99,4 +100,11 @@ public interface IBusinessInfoService
List<CustomerBusinessListVo> selectCustomerBusinessList(CustomerBusinessSearchDto dto);
/**
* 查询企业的城投id和建设库id
* @param companyName
* @return
*/
Map queryUipIdOrCid (String companyName);
}
package com.dsk.system.service;
import com.dsk.common.core.domain.entity.BusinessLabel;
import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.business.dto.BusinessIdDto;
import java.util.List;
......
package com.dsk.system.service;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessRelateCompany;
import com.dsk.system.domain.BusinessIdDto;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import com.dsk.system.domain.business.dto.BusinessIdDto;
import java.util.List;
......
package com.dsk.system.service;
import com.dsk.system.domain.customer.ContactInfo;
import com.dsk.system.domain.customer.dto.ContactInfoSearchDto;
import com.dsk.system.domain.customer.vo.ContactInfoListVo;
import java.util.List;
/**
* 用户联系人(CustomerContact)表服务接口
*
* @author makejava
* @since 2023-07-25 17:18:05
*/
public interface IContactInfoService {
/**
* 查询数据列表
*/
List<ContactInfoListVo> selectList(ContactInfoSearchDto dto);
/**
* 通过ID查询单条数据
*
* @param id 主键
* @return 实例对象
*/
ContactInfo selectById(Long id);
/**
* 新增数据
*
* @param bean 实例对象
* @return 实例对象
*/
boolean insert(ContactInfo bean);
/**
* 修改数据
*
* @param bean 实例对象
* @return 实例对象
*/
boolean update(ContactInfo bean);
/**
* 通过主键删除数据
*
* @param id 主键
* @return 是否成功
*/
boolean deleteById(Long id);
}
......@@ -39,4 +39,6 @@ public interface ICustomerService {
boolean historyClaim(String companyName);
Customer selectByCompanyNameAndUserId(String companyName);
}
package com.dsk.system.service.impl;
import com.dsk.common.core.domain.entity.BusinessBacklog;
import cn.hutool.core.bean.BeanException;
import cn.hutool.core.util.ObjectUtil;
import com.dsk.system.domain.business.BusinessBacklog;
import com.dsk.common.exception.base.BaseException;
import com.dsk.common.utils.DateUtils;
import com.dsk.system.domain.business.vo.BusinessBacklogListVo;
import com.dsk.system.mapper.BusinessBacklogMapper;
import com.dsk.system.service.IBusinessBacklogService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
......@@ -22,9 +25,8 @@ import java.util.List;
*/
@Service
@Slf4j
public class BusinessBacklogServiceImpl implements IBusinessBacklogService
{
@Autowired
public class BusinessBacklogServiceImpl implements IBusinessBacklogService {
@Resource
private BusinessBacklogMapper businessBacklogMapper;
/**
......@@ -34,8 +36,7 @@ public class BusinessBacklogServiceImpl implements IBusinessBacklogService
* @return 项目工作待办
*/
@Override
public BusinessBacklog selectBusinessBacklogById(Integer id)
{
public BusinessBacklog selectBusinessBacklogById(Integer id) {
return businessBacklogMapper.selectBusinessBacklogById(id);
}
......@@ -46,8 +47,10 @@ public class BusinessBacklogServiceImpl implements IBusinessBacklogService
* @return 项目工作待办
*/
@Override
public List<BusinessBacklog> selectBusinessBacklogList(BusinessBacklog businessBacklog)
{
public List<BusinessBacklogListVo> selectBusinessBacklogList(BusinessBacklog businessBacklog) {
if (ObjectUtil.isEmpty(businessBacklog.getBusinessId())) {
throw new BeanException("项目id不能为空!");
}
return businessBacklogMapper.selectBusinessBacklogList(businessBacklog);
}
......@@ -59,12 +62,10 @@ public class BusinessBacklogServiceImpl implements IBusinessBacklogService
*/
@Override
@Transactional
public int insertBusinessBacklog(BusinessBacklog businessBacklog)
{
if(businessBacklog.getFinishTime().before(new Date())) throw new BaseException("完成时间必须大于当前时间");
businessBacklog.setCreateTime(DateUtils.getNowDate());
//新增记录,状态默认 进行中
businessBacklog.setState(1);
public int insertBusinessBacklog(BusinessBacklog businessBacklog) {
if(ObjectUtil.isNotEmpty(businessBacklog.getDueTime())){
if (businessBacklog.getDueTime().before(new Date())) throw new BaseException("到期时间必须大于当前时间");
}
return businessBacklogMapper.insertBusinessBacklog(businessBacklog);
}
......@@ -76,16 +77,23 @@ public class BusinessBacklogServiceImpl implements IBusinessBacklogService
*/
@Override
@Transactional
public int updateBusinessBacklog(BusinessBacklog businessBacklog)
{
//从完成状态修改到为完成,判断是否已逾期
BusinessBacklog backlog = selectBusinessBacklogById(businessBacklog.getId());
if (businessBacklog.getState() == 1 && backlog.getState() == 2 && backlog.getFinishTime().before(new Date())) {
businessBacklog.setState(0);
businessBacklog.setUpdateTime(new Date());
return businessBacklogMapper.updateBusinessBacklog(businessBacklog);
public int updateBusinessBacklog(BusinessBacklog businessBacklog) {
if (ObjectUtil.isEmpty(businessBacklog.getId())) {
throw new BeanException("id不能为空!");
}
if (ObjectUtil.isEmpty(businessBacklog.getState())) {
throw new BeanException("状态不能为空!");
}
switch (businessBacklog.getState()) {
case 0:
businessBacklog.setFinishTime(null);
break;
case 1:
businessBacklog.setFinishTime(new Date());
break;
default:
throw new BeanException("状态参数错误!");
}
businessBacklog.setUpdateTime(new Date());
return businessBacklogMapper.updateBusinessBacklog(businessBacklog);
}
......@@ -96,8 +104,7 @@ public class BusinessBacklogServiceImpl implements IBusinessBacklogService
* @return 结果
*/
@Override
public int deleteBusinessBacklogByIds(Long[] ids)
{
public int deleteBusinessBacklogByIds(Long[] ids) {
return businessBacklogMapper.deleteBusinessBacklogByIds(ids);
}
......@@ -108,17 +115,12 @@ public class BusinessBacklogServiceImpl implements IBusinessBacklogService
* @return 结果
*/
@Override
public int deleteBusinessBacklogById(Long id)
{
public int deleteBusinessBacklogById(Long id) {
return businessBacklogMapper.deleteBusinessBacklogById(id);
}
/**
* 定时修改工作待办逾期状态
*/
@Scheduled(cron = "0 0 0 * * ?")//每天凌晨0点执行一次
public void judgeOverdue() {
int updateBacklogState = businessBacklogMapper.updateBacklogState();
if (updateBacklogState > 1) log.info("定时修改工作待办逾期状态");
@Override
public Integer overdueCount(Integer businessId) {
return businessBacklogMapper.overdueCount(businessId);
}
}
......@@ -2,9 +2,9 @@ package com.dsk.system.service.impl;
import com.dsk.common.core.domain.entity.BusinessFollowRecord;
import com.dsk.common.utils.DateUtils;
import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.BusinessListDto;
import com.dsk.system.domain.vo.BusinessListVo;
import com.dsk.system.domain.business.dto.BusinessIdDto;
import com.dsk.system.domain.business.dto.BusinessListDto;
import com.dsk.system.domain.business.vo.BusinessListVo;
import com.dsk.system.mapper.BusinessFollowRecordMapper;
import com.dsk.system.service.IBusinessFollowRecordService;
import org.springframework.beans.factory.annotation.Autowired;
......
......@@ -2,41 +2,48 @@ package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.acc.openapi.client.util.CommonUtils;
import com.dsk.common.config.RuoYiConfig;
import com.dsk.common.constant.HttpStatus;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessInfo;
import com.dsk.common.core.domain.entity.BusinessLabel;
import com.dsk.common.core.domain.entity.BusinessRelateCompany;
import com.dsk.common.core.domain.entity.BusinessUser;
import com.dsk.common.exception.ServiceException;
import com.dsk.common.exception.base.BaseException;
import com.dsk.common.utils.CheckUtils;
import com.dsk.common.utils.DateUtils;
import com.dsk.common.utils.SecurityUtils;
import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.*;
import com.dsk.common.utils.file.FileUtils;
import com.dsk.system.domain.BusinessAddDto;
import com.dsk.system.domain.BusinessExcelDto;
import com.dsk.system.domain.BusinessListDto;
import com.dsk.system.domain.business.dto.BusinessAddDto;
import com.dsk.system.domain.business.dto.BusinessExcelDto;
import com.dsk.system.domain.business.dto.BusinessListDto;
import com.dsk.system.domain.business.vo.BusinessLikeProjectNameListVo;
import com.dsk.system.domain.customer.Customer;
import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto;
import com.dsk.system.domain.customer.vo.CustomerBusinessListVo;
import com.dsk.system.domain.vo.BusinessBrowseVo;
import com.dsk.system.domain.vo.BusinessLabelVo;
import com.dsk.system.domain.vo.BusinessListVo;
import com.dsk.system.domain.customer.vo.CustomerVo;
import com.dsk.system.domain.business.vo.BusinessBrowseVo;
import com.dsk.system.domain.business.vo.BusinessLabelVo;
import com.dsk.system.domain.business.vo.BusinessListVo;
import com.dsk.system.mapper.BusinessInfoMapper;
import com.dsk.system.mapper.BusinessLabelMapper;
import com.dsk.system.mapper.BusinessRelateCompanyMapper;
import com.dsk.system.mapper.BusinessUserMapper;
import com.dsk.system.service.IBusinessInfoService;
import com.dsk.system.service.ICustomerService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.*;
/**
* 项目详情Service业务层处理
......@@ -55,6 +62,13 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
private BusinessLabelMapper businessLabelMapper;
@Resource
private ReadBusinessInfoExcel readBusinessInfoExcel;
@Resource
private BusinessRelateCompanyMapper relateCompanyMapper;
@Resource
private DskOpenApiUtil dskOpenApiUtil;
@Autowired
private ICustomerService customerService;
/**
* 查询项目详情
......@@ -69,7 +83,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
@Override
public BusinessInfo getConstruction(Integer id) {
BusinessInfo businessInfo =businessInfoMapper.getConstruction(id);
BusinessInfo businessInfo = businessInfoMapper.getConstruction(id);
return ObjectUtil.isEmpty(businessInfo) ? new BusinessInfo() : businessInfo;
}
......@@ -81,13 +95,10 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
*/
@Override
public List<BusinessListVo> selectBusinessInfoList(BusinessListDto dto) {
if(StringUtils.isEmpty(dto.getMinAmount()))dto.setMinAmount("0");
List<BusinessListVo> othersList = new ArrayList<>();
//userId不传值,就查询全部他人可见项目+自己的
if (dto.getUserId() == null) {
Long userId = SecurityUtils.getLoginUser().getUserId();
if (userId == null) throw new BaseException("请登录");
dto.setOthers(userId.intValue());
dto.setOthers(SecurityUtils.getUserId());
//查询他人可见项目
othersList = businessInfoMapper.selectBusinessInfoList(dto);
}
......@@ -103,7 +114,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
BusinessBrowseVo businessBrowseVo = new BusinessBrowseVo();
//查询项目基本信息
BusinessInfo businessInfo = businessInfoMapper.selectBusinessInfoById(businessId);
if(ObjectUtil.isNotEmpty(businessInfo)) BeanUtil.copyProperties(businessInfo, businessBrowseVo);
if (ObjectUtil.isNotEmpty(businessInfo)) BeanUtil.copyProperties(businessInfo, businessBrowseVo);
//商务团队
businessBrowseVo.setTeam(businessUserMapper.selectCreatorByBusinessId(businessId));
//查询是否是项目创建人
......@@ -122,13 +133,45 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
businessBrowseVo.setFollowRecordCount(total.getFollowRecordCount());
businessBrowseVo.setRelateCompanyCount(total.getRelateCompanyCount());
//资料文档统计
businessBrowseVo.setFileCount(FileUtils.getAllFileNames(RuoYiConfig.getProfile()+businessId).size());
businessBrowseVo.setFileCount(FileUtils.getAllFileNames(RuoYiConfig.getProfile() + businessId).size());
return businessBrowseVo;
}
@Override
public List<String> selectProjectName(BusinessListDto dto) {
return businessInfoMapper.selectProjectName(dto);
public List<BusinessLikeProjectNameListVo> selectProjectName(BusinessListDto dto) {
// List<BusinessLikeProjectNameListVo> vos = businessInfoMapper.selectProjectName(dto);
List<BusinessLikeProjectNameListVo> vos = new ArrayList<>();
try {
Map<String, Object> result = dskOpenApiUtil.requestBody("/nationzj/jskBid/news/findByName", toRequestMap(dto));
if (ObjectUtil.isNotEmpty(result.get("data"))) {
List<Map<String, Object>> list = (List<Map<String, Object>>) BeanUtil.beanToMap(result.get("data")).get("list");
if (!CollectionUtils.isEmpty(list)) {
for (Map<String, Object> map : list) {
BusinessLikeProjectNameListVo vo = new BusinessLikeProjectNameListVo();
vo.setProjectName(MapUtil.getStr(map, "projectName").replace(dto.getProjectName(), "<font color='#FF204E'>" + dto.getProjectName() + "</font>"));
vo.setCompanyName(MapUtil.getStr(map, "tenderee"));
vo.setInvestmentAmount(Double.parseDouble(MapUtil.getStr(map, "projectContractAmount")));
vo.setProjectType(MapUtil.getStr(map, "projectType"));
vo.setProjectCategory(MapUtil.getStr(map, "projectPurposes"));
vos.add(vo);
}
}
}
}catch (Exception e) {
log.error("模糊查询项目名称调用失败!");
}
return vos;
}
private Map<String, Object> toRequestMap(BusinessListDto dto) {
Map<String, Object> page = new HashMap<>();
page.put("page", 1);
page.put("limit", 20);
Map<String, Object> map = new HashMap<>();
map.put("keyword", dto.getProjectName());
map.put("page", page);
return map;
}
@Override
......@@ -141,10 +184,10 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
Integer errorCount = 0;//失败条数
List<String> result = new LinkedList();//导入结果汇总
List<BusinessExcelDto> businessInfoList = readBusinessInfoExcel.getExcelInfo(file);
if(CollectionUtil.isEmpty(businessInfoList))return AjaxResult.error("文档中无项目信息,请按照模板文档格式上传");
if (CollectionUtil.isEmpty(businessInfoList)) return AjaxResult.error("文档中无项目信息,请按照模板文档格式上传");
for (BusinessExcelDto businessInfo : businessInfoList) {
//查询已有的项目名称
Integer count = businessInfoMapper.isRepetitionProjectName(businessInfo.getProjectName(), userId.intValue());
Integer count = businessInfoMapper.isRepetitionProjectName(businessInfo.getProjectName(), userId, businessInfo.getOwnerCompany());
row++;
if (count > 0) {
//如果存在,跳过该项目,不保存
......@@ -155,8 +198,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
//保存到数据库
BusinessAddDto businessAddDto = new BusinessAddDto();
BeanUtil.copyProperties(businessInfo, businessAddDto);
businessAddDto.setUserId(userId.intValue());
businessAddDto.setCompanyId(0);
businessAddDto.setUserId(userId);
AjaxResult add = insertBusinessInfo(businessAddDto);
if (add.get("code").equals(HttpStatus.SUCCESS)) rowSuccess++;
}
......@@ -164,7 +206,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
result.add("导入项目成功条数" + rowSuccess);
result.add("导入项目去重条数" + errorCount);
AjaxResult success = AjaxResult.success(String.join(",", result));
success.put("successCount",rowSuccess);
success.put("successCount", rowSuccess);
return success;
}
......@@ -178,7 +220,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
@Transactional
public AjaxResult insertBusinessInfo(BusinessAddDto dto) {
//新增前查询是否已存在
int count = businessInfoMapper.isRepetitionProjectName(dto.getProjectName(), dto.getUserId());
int count = businessInfoMapper.isRepetitionProjectName(dto.getProjectName(), dto.getUserId(), dto.getOwnerCompany());
if (count > 0) return AjaxResult.error("项目名称已存在");
//判断资金Double类型的位数
if (dto.getInvestmentAmount() != null) {
......@@ -190,16 +232,40 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
//新增项目主信息
BusinessInfo businessInfo = new BusinessInfo();
BeanUtil.copyProperties(dto, businessInfo);
businessInfo.setConstructionUnit(dto.getOwnerCompany());
CustomerVo vo = new CustomerVo();
if (ObjectUtil.isNotEmpty(dto.getCustomerId())) {
vo = customerService.info(dto.getCustomerId());
} else {
Customer verifyCustomer = customerService.selectByCompanyNameAndUserId(dto.getOwnerCompany());
if (ObjectUtil.isNotEmpty(verifyCustomer)) {
BeanUtil.copyProperties(verifyCustomer, vo);
} else {
vo.setCompanyName(dto.getOwnerCompany());
customerService.add(vo);
}
businessInfo.setCustomerId(vo.getCustomerId());
}
businessInfo.setConstructionUnit(vo.getCompanyName());
businessInfo.setConstructionUnitUipId(vo.getUipId());
businessInfo.setConstructionUnitCid(vo.getCompanyId());
businessInfo.setConstructionPrincipal(vo.getLegalPerson());
int addBusiness = businessInfoMapper.insertBusinessInfo(businessInfo);
if (addBusiness > 0) {
//获取登陆用户的部门id
Long deptId = SecurityUtils.getLoginUser().getDeptId();
//新增用户-项目关系信息
int addbusinessUser = businessUserMapper.insertBusinessUser(new BusinessUser(businessInfo.getId(), deptId.intValue(), dto.getUserId(), 1));
return addbusinessUser > 0 ? AjaxResult.success() : AjaxResult.error();
int addbusinessUser = businessUserMapper.insertBusinessUser(new BusinessUser(businessInfo.getId(), SecurityUtils.getDeptId(), dto.getUserId(), 1));
if (addbusinessUser == 0) {
throw new ServiceException("项目关系信息添加失败!");
}
}
int i = relateCompanyMapper.insertBusinessRelateCompany(dealwithCustomer(businessInfo));
if (i == 0) {
throw new ServiceException("业主单位信息添加失败!");
}
return AjaxResult.error();
return AjaxResult.success();
}
......@@ -212,8 +278,11 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
@Override
@Transactional
public int updateBusinessInfo(BusinessInfo businessInfo) {
if (ObjectUtil.isEmpty(businessInfo.getId())) {
throw new BaseException("项目id不能为空!");
}
//判断资金Double类型的位数
if (businessInfo.getInvestmentAmount() != null) {
if (ObjectUtil.isNotEmpty(businessInfo.getInvestmentAmount())) {
int front = CheckUtils.checkIntegerPlaces(businessInfo.getInvestmentAmount());
int later = CheckUtils.checkDecimalPlaces(businessInfo.getInvestmentAmount());
if (front > 9) throw new BaseException("500", "小数点前最多支持9位");
......@@ -223,13 +292,53 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
if (!CheckUtils.isPhone(businessInfo.getConstructionPhone()) || !CheckUtils.isPhone(businessInfo.getSupervisorPhone()))
throw new BaseException("500", "请输入正确的电话号码");
}
businessInfo.setUpdateTime(DateUtils.getNowDate());
// BusinessInfo info = businessInfoMapper.selectBusinessInfoById(businessInfo.getId());
//查询企业的城投id和建设库id
BusinessRelateCompany relateCompany = relateCompanyMapper.selectByProprietor(businessInfo.getId());
if (ObjectUtil.isNotEmpty(businessInfo.getConstructionUnit())) {
Map map = queryUipIdOrCid(businessInfo.getConstructionUnit());
if (map.containsKey("jskEid")) {
businessInfo.setConstructionUnitCid(MapUtils.getInteger(map, "jskEid", null));
} else {
businessInfo.setConstructionUnitUipId(MapUtils.getString(map, "uipId", null));
businessInfo.setConstructionUnitCid(MapUtils.getInteger(map, "companyId", null));
}
//相关企业
if (ObjectUtil.isEmpty(relateCompany)) {
relateCompanyMapper.insertBusinessRelateCompany(dealwithCustomer(businessInfo));
}
if (ObjectUtil.isNotEmpty(relateCompany) && !businessInfo.getConstructionUnit().equals(relateCompany.getCompanyName())) {
relateCompany.setCompanyId(businessInfo.getConstructionUnitCid());
relateCompany.setCompanyUipId(businessInfo.getConstructionUnitUipId());
relateCompany.setCompanyName(businessInfo.getConstructionUnit());
relateCompanyMapper.updateBusinessRelateCompany(relateCompany);
}
// //客户信息
// if(ObjectUtil.isNotEmpty(info.getCustomerId())){
// CustomerVo customerVo = customerService.info(info.getCustomerId());
// customerVo
// customerService.edit(customerVo);
// }else {
// Customer customer = new Customer();
// customer.setCompanyName()
// customerService.add()
// }
}
if (ObjectUtil.isNotEmpty(relateCompany) &&
(ObjectUtil.isNotEmpty(businessInfo.getConstructionPhone())
|| ObjectUtil.isNotEmpty(businessInfo.getConstructionPrincipal()))) {
relateCompany.setPhone(businessInfo.getConstructionPhone());
relateCompany.setResponsiblePerson(businessInfo.getConstructionPrincipal());
relateCompanyMapper.updateBusinessRelateCompany(relateCompany);
}
return businessInfoMapper.updateBusinessInfo(businessInfo);
}
/**
* 批量删除项目
* 项目关联的其他所有表数据一并删除
*
* @param ids 需要删除的项目详情主键
* @return 结果
*/
......@@ -276,4 +385,56 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
public List<CustomerBusinessListVo> selectCustomerBusinessList(CustomerBusinessSearchDto dto) {
return businessInfoMapper.selectCustomerBusinessList(dto);
}
@Override
public Map queryUipIdOrCid(String companyName) {
Map<Object, Object> map = MapUtil.builder().build();
if (StringUtils.isEmpty(companyName)) return map;
//查询城投企业
Map<String, Object> paramMap = MapUtil.<String, Object>builder().put("companyName", companyName).build();
Map<String, Object> resultMap = dskOpenApiUtil.requestBody("/urbanInvestment/detailsByCompanyName", paramMap);
Integer code = MapUtils.getInteger(resultMap, "code", 300);
if (code == HttpStatus.SUCCESS) {
Map data = MapUtils.getMap(resultMap, "data", null);
if (data != null) {
map.put("uipId", MapUtils.getString(data, "uipId", null));
map.put("companyId", MapUtils.getInteger(data, "companyId", null));
}
}
if (MapUtil.isEmpty(map)) {
//查村建设库企业
Map<String, Object> jskParamMap = MapUtil.<String, Object>builder()
.put("keyword", companyName)
.put("page", MapUtil.<String, Object>builder().put("page", 1).put("limit", 10).build())
.build();
Map<String, Object> jskResultMap = dskOpenApiUtil.requestBody("/enterprise/index", jskParamMap);
if (MapUtils.getInteger(resultMap, "code", 300).equals(HttpStatus.SUCCESS)) {
Map data = MapUtils.getMap(jskResultMap, "data", null);
if (data != null) {
List<Object> list = CommonUtils.assertAsArray(MapUtils.getObject(data, "list", ""));
if (CollectionUtil.isNotEmpty(list)) {
for (Object obj : list) {
map.put("jskEid", MapUtils.getInteger(BeanUtil.beanToMap(obj, false, false), "jskEid", null));
}
}
}
}
}
return map;
}
private BusinessRelateCompany dealwithCustomer(BusinessInfo bean) {
BusinessRelateCompany relateCompany = new BusinessRelateCompany();
relateCompany.setBusinessId(bean.getId());
relateCompany.setCompanyId(bean.getConstructionUnitCid());
relateCompany.setCompanyUipId(bean.getConstructionUnitUipId());
relateCompany.setCompanyName(bean.getConstructionUnit());
relateCompany.setPhone(bean.getConstructionPhone());
relateCompany.setCompanyRole("招采单位");
relateCompany.setResponsiblePerson(bean.getConstructionPrincipal());
relateCompany.setIsProprietor(1);
relateCompany.setRemark("业主单位");
return relateCompany;
}
}
......@@ -4,7 +4,7 @@ import java.util.List;
import com.dsk.common.core.domain.entity.BusinessLabel;
import com.dsk.common.utils.DateUtils;
import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.business.dto.BusinessIdDto;
import com.dsk.system.mapper.BusinessLabelMapper;
import com.dsk.system.service.IBusinessLabelService;
import org.springframework.beans.factory.annotation.Autowired;
......
package com.dsk.system.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsk.common.core.domain.entity.BusinessRelateCompany;
import com.dsk.common.exception.base.BaseException;
import com.dsk.common.utils.CheckUtils;
import com.dsk.common.utils.DateUtils;
import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.business.dto.BusinessIdDto;
import com.dsk.system.mapper.BusinessRelateCompanyMapper;
import com.dsk.system.service.IBusinessInfoService;
import com.dsk.system.service.IBusinessRelateCompanyService;
import org.apache.commons.collections4.MapUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
......@@ -24,6 +30,8 @@ public class BusinessRelateCompanyServiceImpl implements IBusinessRelateCompanyS
{
@Resource
private BusinessRelateCompanyMapper businessRelateCompanyMapper;
@Resource
private IBusinessInfoService businessInfoService;
/**
* 查询项目关联单位
......@@ -61,6 +69,14 @@ public class BusinessRelateCompanyServiceImpl implements IBusinessRelateCompanyS
{
// if(!CheckUtils.isPhone(businessRelateCompany.getPhone())) throw new BaseException("500","请输入正确的电话号码");
businessRelateCompany.setCreateTime(DateUtils.getNowDate());
//查询企业的城投id和建设库id
Map map = businessInfoService.queryUipIdOrCid(businessRelateCompany.getCompanyName());
if(map.containsKey("jskEid")){
businessRelateCompany.setCompanyId(MapUtils.getInteger(map,"jskEid",null));
}else {
businessRelateCompany.setCompanyUipId(MapUtils.getString(map,"uipId",null));
businessRelateCompany.setCompanyId(MapUtils.getInteger(map,"companyId",null));
}
return businessRelateCompanyMapper.insertBusinessRelateCompany(businessRelateCompany);
}
......@@ -74,8 +90,18 @@ public class BusinessRelateCompanyServiceImpl implements IBusinessRelateCompanyS
@Transactional
public int updateBusinessRelateCompany(BusinessRelateCompany businessRelateCompany)
{
// if(!CheckUtils.isPhone(businessRelateCompany.getPhone())) throw new BaseException("500","请输入正确的电话号码");
if(ObjectUtil.isNotEmpty(businessRelateCompany.getPhone())){
if(!CheckUtils.isPhone(businessRelateCompany.getPhone())) throw new BaseException("500","请输入正确的电话号码");
}
businessRelateCompany.setUpdateTime(DateUtils.getNowDate());
//查询企业的城投id和建设库id
Map map = businessInfoService.queryUipIdOrCid(businessRelateCompany.getCompanyName());
if(map.containsKey("jskEid")){
businessRelateCompany.setCompanyId(MapUtils.getInteger(map,"jskEid",null));
}else {
businessRelateCompany.setCompanyUipId(MapUtils.getString(map,"uipId",null));
businessRelateCompany.setCompanyId(MapUtils.getInteger(map,"companyId",null));
}
return businessRelateCompanyMapper.updateBusinessRelateCompany(businessRelateCompany);
}
......
package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanException;
import com.dsk.common.core.domain.model.LoginUser;
import com.dsk.common.utils.SecurityUtils;
import com.dsk.system.domain.customer.ContactInfo;
import com.dsk.system.domain.customer.dto.ContactInfoSearchDto;
import com.dsk.system.domain.customer.vo.ContactInfoListVo;
import com.dsk.system.mapper.ContactInfoMapper;
import com.dsk.system.service.IContactInfoService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.List;
/**
* 用户联系人(CustomerContact)表服务实现类
*
* @author makejava
* @since 2023-07-25 17:18:04
*/
@Slf4j
@Service
public class ContactInfoServiceImpl implements IContactInfoService {
@Resource
private ContactInfoMapper baseMapper;
@Override
public List<ContactInfoListVo> selectList(ContactInfoSearchDto dto) {
return baseMapper.selectPageList(dto);
}
@Override
public ContactInfo selectById(Long id) {
return baseMapper.selectById(id);
}
@Override
public boolean insert(ContactInfo bean) {
verifyParameter(bean);
return baseMapper.insert(bean) > 0;
}
@Override
public boolean update(ContactInfo bean) {
if (ObjectUtils.isEmpty(bean.getId())) throw new BeanException("id不能为空!");
verifyParameter(bean);
return baseMapper.updateById(bean) > 0;
}
@Override
public boolean deleteById(Long id) {
return baseMapper.deleteById(id) > 0;
}
/**
* 参数验证
*/
private void verifyParameter(ContactInfo bean) {
// if (ObjectUtils.isEmpty(bean.getCustomerId())) throw new BeanException("客户id不能为空!");
LoginUser loginUser = SecurityUtils.getLoginUser();
bean.setCreateBy(loginUser.getUser().getNickName());
bean.setUpdateId(loginUser.getUserId());
bean.setUpdateBy(loginUser.getUser().getNickName());
}
}
......@@ -3,10 +3,12 @@ package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanException;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsk.common.core.domain.R;
import com.dsk.common.exception.ServiceException;
import com.dsk.common.utils.SecurityUtils;
import com.dsk.common.utils.StringUtils;
import com.dsk.system.domain.customer.Customer;
import com.dsk.system.domain.customer.CustomerUser;
import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto;
......@@ -15,6 +17,7 @@ import com.dsk.system.domain.customer.vo.*;
import com.dsk.system.dskService.EnterpriseService;
import com.dsk.system.mapper.CustomerMapper;
import com.dsk.system.mapper.CustomerUserMapper;
import com.dsk.system.searchService.BusinessOpportunityRadarService;
import com.dsk.system.service.IBusinessInfoService;
import com.dsk.system.service.ICustomerService;
import lombok.extern.slf4j.Slf4j;
......@@ -25,6 +28,7 @@ import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* 客户信息表(Customer)表服务实现类
......@@ -44,6 +48,8 @@ public class CustomerServiceImpl implements ICustomerService {
private IBusinessInfoService businessInfoService;
@Autowired
private EnterpriseService enterpriseService;
@Autowired
private BusinessOpportunityRadarService opportunityRadarService;
@Override
public List<CustomerListVo> selectList(CustomerSearchDto dto) {
......@@ -65,6 +71,7 @@ public class CustomerServiceImpl implements ICustomerService {
@Override
@Transactional(rollbackFor = Exception.class)
public boolean add(Customer customer) {
dealWithcustomerData(customer);
if (ObjectUtils.isEmpty(customer.getUipId())) {
try {
R res = enterpriseService.getUipId(customer.getCompanyName());
......@@ -153,6 +160,11 @@ public class CustomerServiceImpl implements ICustomerService {
return updateClaimStatus(companyName, 0);
}
@Override
public Customer selectByCompanyNameAndUserId(String companyName) {
return baseMapper.selectByCompanyNameAndUserId(companyName, SecurityUtils.getUserId());
}
//修改客户认领状态
private boolean updateClaimStatus(String companyName, Integer status) {
Customer cus = baseMapper.selectByCompanyNameAndUserId(companyName, SecurityUtils.getUserId());
......@@ -167,5 +179,56 @@ public class CustomerServiceImpl implements ICustomerService {
return customerUserMapper.updateById(customerUser) == 1;
}
private void dealWithcustomerData(Customer customer) {
if (ObjectUtils.isEmpty(customer.getCompanyName())) throw new BeanException("企业名称不能为空");
try {
Map<String, Object> map = opportunityRadarService.enterpriseByName(customer.getCompanyName());
if (!ObjectUtils.isEmpty(map.get("data"))) {
Map<String, Object> data = BeanUtil.beanToMap(map.get("data"));
Integer companyId = MapUtil.getInt(data, "jskEid");
if(ObjectUtil.isNotEmpty(customer.getCompanyId()) && !customer.getCompanyId().equals(companyId)) {
return;
}
customer.setCompanyId(companyId);
if (ObjectUtils.isEmpty(customer.getLegalPerson())) {
customer.setLegalPerson(MapUtil.getStr(data, "legalPerson"));
}
if (ObjectUtils.isEmpty(customer.getRegisterCapital())) {
customer.setRegisterCapital(MapUtil.getStr(data, "registeredCapitalStr"));
}
if (ObjectUtils.isEmpty(customer.getProvinceId())) {
customer.setProvinceId(MapUtil.getInt(data, "provinceId"));
}
if (ObjectUtils.isEmpty(customer.getCityId())) {
customer.setCityId(MapUtil.getInt(data, "cityId"));
}
if (ObjectUtils.isEmpty(customer.getDistrictId())) {
customer.setDistrictId(MapUtil.getInt(data, "countyId"));
}
if (ObjectUtils.isEmpty(customer.getRegisterAddress())) {
if(ObjectUtil.isNotEmpty(MapUtil.getStr(data, "domicile"))){
customer.setRegisterAddress(MapUtil.getStr(data, "domicile"));
}else {
String address = null;
if (ObjectUtils.isEmpty(MapUtil.getStr(data, "province"))) {
address = MapUtil.getStr(data, "province");
if (ObjectUtils.isEmpty(MapUtil.getStr(data, "city"))) {
address = address.concat("-").concat(MapUtil.getStr(data, "city"));
if (ObjectUtils.isEmpty(MapUtil.getStr(data, "county"))) {
address = address.concat("-").concat(MapUtil.getStr(data, "county"));
}
}
}
customer.setRegisterAddress(address);
}
}
if (ObjectUtils.isEmpty(customer.getCreditCode())) {
customer.setCreditCode(MapUtil.getStr(data, "creditCode"));
}
}
} catch (Exception e) {
log.debug("获取企业id错误!error:{}", e.getMessage());
}
}
}
package com.dsk.system.service.impl;
import com.dsk.system.domain.BusinessExcelDto;
import com.dsk.system.domain.business.dto.BusinessExcelDto;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
......
......@@ -9,7 +9,6 @@ import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Service;
import com.dsk.common.constant.Constants;
import com.dsk.common.constant.UserConstants;
......
package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.dsk.acc.openapi.client.util.CommonUtils;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.UrbanInvestmentPlatformDto;
......@@ -49,22 +50,46 @@ public class UrbanInvestmentPlatformServiceImpl implements UrbanInvestmentPlatfo
}
ArrayList<String> uipIds = new ArrayList<>();
ArrayList<Long> cIds = new ArrayList<>();
for (Object dataMap : list) {
uipIds.add(MapUtils.getString(CommonUtils.assertAsMap(dataMap), "uipId"));
cIds.add(MapUtils.getLong(CommonUtils.assertAsMap(dataMap), "companyId"));
}
// List<String> claimStatusList = iCustomerService.selectUipIdList(uipIds);
List<CustomerStatusListVo> customerStatusListVos = iCustomerService.selectStatusList(uipIds);
Map<String, Object> bondCreditRatingBatchMap = new HashMap<>(1);
bondCreditRatingBatchMap.put("cIds", cIds);
Map<String, Object> bondCreditRatingMap = dskOpenApiUtil.requestBody("/operate/enterprise/bondCreditRatingBatch", bondCreditRatingBatchMap);
Integer codeRating = MapUtils.getInteger(bondCreditRatingMap, "code", 300);
ArrayList<Map<String, Object>> objArrayList = new ArrayList(1);
if (codeRating.equals(HttpStatus.OK.value())) {
Object object = bondCreditRatingMap.get("data");
if (ObjectUtil.isNotEmpty(object)) {
objArrayList = (ArrayList)object;
}
}
//按照城投企业id合并两个list
//按照城投企业id合并两个list
for (Object companyObj : list) {
Map<String, Object> companyMap = CommonUtils.assertAsMap(companyObj);
Long companyId = MapUtils.getLong(companyMap, "companyId");
String uipId = MapUtils.getString(companyMap, "uipId");
companyMap.put("claimStatus", 0);
companyMap.put("bratingSubjectLevel", null);
for (CustomerStatusListVo vo : customerStatusListVos) {
if (uipId.equals(vo.getUipId())) {
companyMap.put("claimStatus", 1);
}
}
for (Map<String, Object> m : objArrayList) {
Long companyIdCredit = MapUtils.getLong(m, "companyId", 0L);
if (companyIdCredit.equals(companyId)) {
companyMap.put("bratingSubjectLevel", m.get("bratingSubjectLevel"));
}
}
}
// for (Object companyObj : list) {
......
......@@ -4,7 +4,7 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.system.mapper.BusinessBacklogMapper">
<resultMap type="com.dsk.common.core.domain.entity.BusinessBacklog" id="BusinessBacklogResult">
<resultMap type="com.dsk.system.domain.business.BusinessBacklog" id="BusinessBacklogResult">
<result property="id" column="id"/>
<result property="businessId" column="business_id"/>
<result property="target" column="target"/>
......@@ -21,71 +21,48 @@
target,
task,
finish_time,
state,
due_time,
if(due_time &lt; now() and state = 0, 2 ,state) state,
create_time,
update_time
from business_backlog
</sql>
<select id="selectBusinessBacklogList" parameterType="com.dsk.common.core.domain.entity.BusinessBacklog"
<select id="selectBusinessBacklogList" parameterType="com.dsk.system.domain.business.vo.BusinessBacklogListVo"
resultMap="BusinessBacklogResult">
<include refid="selectBusinessBacklogVo"/>
<where>
<if test="businessId != null ">and business_id = #{businessId}</if>
where business_id = #{businessId}
<if test="target != null and target != ''">and target = #{target}</if>
<if test="task != null and task != ''">and task = #{task}</if>
<if test="finishTime != null ">and finish_time = #{finishTime}</if>
<if test="state != null ">and state = #{state}</if>
</where>
ORDER BY create_time DESC
</select>
<select id="selectBusinessBacklogById" parameterType="Long" resultMap="BusinessBacklogResult">
<select id="selectBusinessBacklogById" resultMap="BusinessBacklogResult">
<include refid="selectBusinessBacklogVo"/>
where id = #{id}
</select>
<insert id="insertBusinessBacklog" parameterType="com.dsk.common.core.domain.entity.BusinessBacklog"
<insert id="insertBusinessBacklog" parameterType="com.dsk.system.domain.business.BusinessBacklog"
useGeneratedKeys="true" keyProperty="id">
insert into business_backlog
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="businessId != null">business_id,</if>
<if test="target != null">target,</if>
<if test="task != null">task,</if>
<if test="finishTime != null">finish_time,</if>
<if test="state != null">state,</if>
<if test="createTime != null">create_time,</if>
<if test="updateTime != null">update_time,</if>
<if test="dueTime != null">due_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="businessId != null">#{businessId},</if>
<if test="target != null">#{target},</if>
<if test="task != null">#{task},</if>
<if test="finishTime != null">#{finishTime},</if>
<if test="state != null">#{state},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="dueTime != null">#{dueTime},</if>
</trim>
</insert>
<update id="updateBusinessBacklog" parameterType="com.dsk.common.core.domain.entity.BusinessBacklog">
update business_backlog
<trim prefix="SET" suffixOverrides=",">
<if test="businessId != null">business_id = #{businessId},</if>
<if test="target != null">target = #{target},</if>
<if test="task != null">task = #{task},</if>
<if test="finishTime != null">finish_time = #{finishTime},</if>
<if test="state != null">state = #{state},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
</trim>
where id = #{id}
</update>
<update id="updateBacklogState">
update business_backlog
set state = 0
where state = 1
and finish_time &lt; CURRENT_TIMESTAMP
<update id="updateBusinessBacklog" parameterType="com.dsk.system.domain.business.BusinessBacklog">
update business_backlog set finish_time = #{finishTime}, state = #{state} where id = #{id}
</update>
<delete id="deleteBusinessBacklogById" parameterType="Long">
......@@ -100,4 +77,8 @@
#{id}
</foreach>
</delete>
<select id="overdueCount" resultType="java.lang.Integer">
select count(id) from business_backlog where business_id = #{businessId} and due_time &lt; now() and state = 0
</select>
</mapper>
......@@ -75,7 +75,7 @@
</where>
ORDER BY f.creat_time DESC
</select>
<select id="selectRelateProject" resultType="com.dsk.system.domain.vo.BusinessListVo">
<select id="selectRelateProject" resultType="com.dsk.system.domain.business.vo.BusinessListVo">
select i.id,i.project_name as projectName
from business_info i
left join business_user u on u.business_id = i.id
......
......@@ -78,11 +78,13 @@
construction_phone,
supervisor_unit,
supervisor_principal,
supervisor_phone
supervisor_phone,
construction_unit_uip_id,
construction_unit_cid
from business_info
</sql>
<select id="selectBusinessInfoList" resultType="com.dsk.system.domain.vo.BusinessListVo">
<select id="selectBusinessInfoList" resultType="com.dsk.system.domain.business.vo.BusinessListVo">
SELECT
i.id,
i.project_name projectName,
......@@ -92,14 +94,16 @@
i.district_name districtName,
i.investment_amount investmentAmount,
i.construction_unit ownerCompany,
i.construction_unit_uip_id ownerCompanyUipId,
i.construction_unit_cid ownerCompanyCid,
MAX(f.creat_time) followTime,
u.nick_name nickName,
GROUP_CONCAT(DISTINCT l.label) label
FROM business_info i
LEFT JOIN business_user bu on bu.business_id = i.id
LEFT JOIN business_follow_record f on f.business_id = i.id
LEFT JOIN business_label l on l.business_id = i.id
LEFT JOIN business_user bu on bu.business_id = i.id
LEFT JOIN sys_user u on u.user_id = f.user_id
LEFT JOIN sys_user u on u.user_id = bu.user_id
<where>
<if test="userId != null">
and bu.user_id = #{userId}
......@@ -110,20 +114,8 @@
#{projectType}
</foreach>
</if>
<if test="minAmount != null and minAmount != '' and minAmount != '0' and maxAmount != minAmount">
and i.investment_amount &gt; #{minAmount}
</if>
<if test="minAmount == '0' and maxAmount != minAmount">
and ((i.investment_amount &gt; #{minAmount}
and i.investment_amount &lt;= #{maxAmount})
or i.investment_amount is null)
</if>
<if test="maxAmount != null and maxAmount != '' and maxAmount != minAmount and minAmount != '0'">
and i.investment_amount &lt;= #{maxAmount}
</if>
<if test="minAmount != null and minAmount != '' and maxAmount != null and maxAmount != '' and maxAmount == minAmount">
and i.investment_amount = #{minAmount}
</if>
<if test="minAmount != null and minAmount != ''"> and i.investment_amount &gt;= #{minAmount} </if>
<if test="maxAmount != null and maxAmount != ''"> and i.investment_amount &lt;= #{maxAmount}</if>
<if test="projectStage != null and projectStage != ''">
and i.project_stage in
<foreach collection="projectStage" item="projectStage" open="(" separator="," close=")">
......@@ -215,15 +207,14 @@
ORDER BY i.create_time DESC
</select>
<select id="selectProjectName" resultType="java.lang.String">
SELECT *
FROM
(SELECT project_name as name FROM business_info) AS bu
<where>
<if test="projectName !=null and projectName!=''">
name like concat('%',#{projectName},'%')
</if>
</where>
<select id="selectProjectName" resultType="com.dsk.system.domain.business.vo.BusinessLikeProjectNameListVo">
SELECT
project_name, investment_amount, project_level, project_stage, project_type,
project_category, status
FROM business_info
where project_name like concat('%',#{projectName},'%')
order by project_name desc
limit 20
</select>
<select id="selectBusinessInfoById" parameterType="integer" resultMap="BusinessInfoResult">
......@@ -231,7 +222,7 @@
where id = #{id}
</select>
<select id="selectTotal" resultType="com.dsk.system.domain.vo.BusinessBrowseVo">
<select id="selectTotal" resultType="com.dsk.system.domain.business.vo.BusinessBrowseVo">
SELECT
count(DISTINCT c.id) contactsCount,
count(DISTINCT f.id) followRecordCount,
......@@ -284,6 +275,8 @@
<if test="supervisorUnit != null">supervisor_unit,</if>
<if test="supervisorPrincipal != null">supervisor_principal,</if>
<if test="supervisorPhone != null">supervisor_phone,</if>
<if test="constructionUnitUipId != null">construction_unit_uip_id,</if>
<if test="constructionUnitCid != null">construction_unit_cid,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="projectName != null">#{projectName},</if>
......@@ -321,6 +314,8 @@
<if test="supervisorUnit != null">#{supervisorUnit},</if>
<if test="supervisorPrincipal != null">#{supervisorPrincipal},</if>
<if test="supervisorPhone != null">#{supervisorPhone},</if>
<if test="constructionUnitUipId != null">#{constructionUnitUipId},</if>
<if test="constructionUnitCid != null">#{constructionUnitCid},</if>
</trim>
</insert>
......@@ -343,11 +338,11 @@
city_id = #{cityId},
district_name = #{districtName},
district_id = #{districtId},
construction_unit_uip_id = #{constructionUnitUipId},
construction_unit_cid = #{constructionUnitCid},
<if test="projectType != null">project_type = #{projectType},</if>
<if test="projectCategory != null">project_category = #{projectCategory},</if>
<if test="isPrivate != null">is_private = #{isPrivate},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="status != null">status = #{status},</if>
<if test="customerId != null">customer_id = #{customerId},</if>
<if test="evaluationBidWay != null">evaluation_bid_way = #{evaluationBidWay},</if>
......@@ -427,8 +422,10 @@
<select id="isRepetitionProjectName" resultType="java.lang.Integer">
select count(i.id)
from business_info i
inner join business_user u on u.business_id = i.id
join business_user u on u.business_id = i.id
left join customer ct on ct.customer_id = i.customer_id
where i.project_name = #{projectName}
and u.user_id = #{userId}
<if test="companyName != null and companyName != '' "> and ct.company_name =#{companyName}</if>
</select>
</mapper>
......@@ -12,10 +12,12 @@
<result property="companyRole" column="company_role"/>
<result property="responsiblePerson" column="responsible_person"/>
<result property="phone" column="phone"/>
<result property="isProprietor" column="is_proprietor"/>
<result property="remark" column="remark"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="depth" column="depth"/>
<result property="companyType" column="company_type"/>
<result property="companyUipId" column="company_uip_id"/>
</resultMap>
<sql id="selectBusinessRelateCompanyVo">
......@@ -27,9 +29,11 @@
responsible_person,
phone,
depth,
is_proprietor,
remark,
create_time,
update_time,
company_type
company_uip_id
from business_relate_company
</sql>
......@@ -48,7 +52,6 @@
#{responsiblePerson}
</if>
<if test="phone != null and phone != ''">and phone = #{phone}</if>
<if test="companyType != null and companyType != ''">and company_type = #{companyType}</if>
</where>
</select>
......@@ -68,9 +71,9 @@
<if test="companyRole != null">company_role,</if>
<if test="responsiblePerson != null">responsible_person,</if>
<if test="phone != null">phone,</if>
<if test="createTime != null">create_time,</if>
<if test="updateTime != null">update_time,</if>
<if test="companyType != null">company_type,</if>
<if test="isProprietor != null">is_proprietor,</if>
<if test="remark != null and remark != '' ">remark,</if>
<if test="companyUipId != null">company_uip_id,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="businessId != null">#{businessId},</if>
......@@ -80,26 +83,24 @@
<if test="companyRole != null">#{companyRole},</if>
<if test="responsiblePerson != null">#{responsiblePerson},</if>
<if test="phone != null">#{phone},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="companyType != null">#{companyType},</if>
<if test="isProprietor != null">#{isProprietor},</if>
<if test="remark != null and remark != ''">#{remark},</if>
<if test="companyUipId != null">#{companyUipId},</if>
</trim>
</insert>
<update id="updateBusinessRelateCompany" parameterType="com.dsk.common.core.domain.entity.BusinessRelateCompany">
update business_relate_company
<trim prefix="SET" suffixOverrides=",">
<if test="businessId != null">business_id = #{businessId},</if>
<set>
<if test="companyId != null">company_id = #{companyId},</if>
<if test="companyUipId != null">company_uip_id = #{companyUipId},</if>
<if test="companyName != null">company_name = #{companyName},</if>
<if test="depth != null">depth = #{depth},</if>
<if test="companyRole != null">company_role = #{companyRole},</if>
<if test="responsiblePerson != null">responsible_person = #{responsiblePerson},</if>
<if test="phone != null">phone = #{phone},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="companyType != null">company_type = #{companyType},</if>
</trim>
<if test="remark != null">remark = #{remark},</if>
</set>
where id = #{id}
</update>
......@@ -115,4 +116,9 @@
#{id}
</foreach>
</delete>
<select id="selectByProprietor" resultType="com.dsk.common.core.domain.entity.BusinessRelateCompany">
<include refid="selectBusinessRelateCompanyVo"/>
where business_id = #{businessId} and is_proprietor = 1
</select>
</mapper>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsk.system.mapper.ContactInfoMapper">
<select id="selectPageList" resultType="com.dsk.system.domain.customer.vo.ContactInfoListVo">
select
cc.id, cc.customer_id, cc.project_id, bi.project_name, cc.name, cc.sex, cc.role,
cc.position, cc.contact_information, cc.company_id, cc.uip_id, cc.company_name,
cc.update_by
from contact_info cc
left join business_info bi on cc.project_id = bi.id
<where>
<if test="cc.customerId != null and cc.customerId !='' "> and (cc.customer_id = #{customerId} or cc.company_name =#{companyName})</if>
<if test="cc.projectId != null "> and cc.project_id = #{projectId} </if>
</where>
order by cc.create_time desc
</select>
</mapper>
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