Commit 7f8e47a7 authored by 375138141's avatar 375138141

ad

parents 0b094bd8 cee429b0
...@@ -5,6 +5,7 @@ import org.springframework.boot.SpringApplication; ...@@ -5,6 +5,7 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.scheduling.annotation.EnableScheduling;
/** /**
* 启动程序 * 启动程序
...@@ -12,6 +13,7 @@ import org.springframework.context.ConfigurableApplicationContext; ...@@ -12,6 +13,7 @@ import org.springframework.context.ConfigurableApplicationContext;
* @author dsk * @author dsk
*/ */
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@EnableScheduling
public class DskOperateSysApplication { public class DskOperateSysApplication {
public static void main(String[] args) { public static void main(String[] args) {
// System.setProperty("spring.devtools.restart.enabled", "false"); // System.setProperty("spring.devtools.restart.enabled", "false");
......
...@@ -40,7 +40,7 @@ public class BusinessContactsController extends BaseController ...@@ -40,7 +40,7 @@ public class BusinessContactsController extends BaseController
*/ */
// @PreAuthorize("@ss.hasPermi('system:contacts:list')") // @PreAuthorize("@ss.hasPermi('system:contacts:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(BusinessContacts businessContacts) public TableDataInfo list(@RequestBody BusinessContacts businessContacts)
{ {
startPage(); startPage();
List<BusinessContacts> list = businessContactsService.selectBusinessContactsList(businessContacts); List<BusinessContacts> list = businessContactsService.selectBusinessContactsList(businessContacts);
......
package com.dsk.web.controller.customer; package com.dsk.web.controller.customer;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.http.HttpException;
import com.dsk.common.annotation.Log;
import com.dsk.common.annotation.RepeatSubmit; import com.dsk.common.annotation.RepeatSubmit;
import com.dsk.common.core.controller.BaseController; import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.SysRole;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.enums.BusinessType;
import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.system.domain.customer.Customer; import com.dsk.system.domain.customer.Customer;
import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto; import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto;
import com.dsk.system.domain.customer.dto.CustomerSearchDto; import com.dsk.system.domain.customer.dto.CustomerSearchDto;
import com.dsk.system.service.ICustomerService; import com.dsk.system.service.ICustomerService;
import com.dsk.web.controller.search.service.BusinessOpportunityRadarService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* 客户相关 * 客户相关
...@@ -24,13 +40,15 @@ public class CustomerController extends BaseController { ...@@ -24,13 +40,15 @@ public class CustomerController extends BaseController {
@Autowired @Autowired
private ICustomerService baseService; private ICustomerService baseService;
@Autowired
private BusinessOpportunityRadarService opportunityRadarService;
/** /**
* 查询客户列表 * 查询客户列表
*/ */
@PreAuthorize("@ss.hasPermi('customer:list')") @PreAuthorize("@ss.hasPermi('customer:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo selectPageList(CustomerSearchDto dto){ public TableDataInfo selectPageList(CustomerSearchDto dto) {
startPage(); startPage();
return getDataTable(baseService.selectList(dto)); return getDataTable(baseService.selectList(dto));
} }
...@@ -40,7 +58,7 @@ public class CustomerController extends BaseController { ...@@ -40,7 +58,7 @@ public class CustomerController extends BaseController {
*/ */
@PreAuthorize("@ss.hasPermi('customer:info')") @PreAuthorize("@ss.hasPermi('customer:info')")
@GetMapping("/{customerId}") @GetMapping("/{customerId}")
public AjaxResult info(@PathVariable("customerId") String customerId){ public AjaxResult info(@PathVariable("customerId") String customerId) {
return AjaxResult.success(baseService.info(customerId)); return AjaxResult.success(baseService.info(customerId));
} }
...@@ -50,7 +68,7 @@ public class CustomerController extends BaseController { ...@@ -50,7 +68,7 @@ public class CustomerController extends BaseController {
@PreAuthorize("@ss.hasPermi('customer:add')") @PreAuthorize("@ss.hasPermi('customer:add')")
@PostMapping() @PostMapping()
@RepeatSubmit @RepeatSubmit
public AjaxResult add(@RequestBody Customer customer){ public AjaxResult add(@RequestBody Customer customer) {
return AjaxResult.success(baseService.add(customer)); return AjaxResult.success(baseService.add(customer));
} }
...@@ -60,7 +78,7 @@ public class CustomerController extends BaseController { ...@@ -60,7 +78,7 @@ public class CustomerController extends BaseController {
@PreAuthorize("@ss.hasPermi('customer:edit')") @PreAuthorize("@ss.hasPermi('customer:edit')")
@PutMapping() @PutMapping()
@RepeatSubmit @RepeatSubmit
public AjaxResult edit(@RequestBody Customer customer){ public AjaxResult edit(@RequestBody Customer customer) {
return AjaxResult.success(baseService.edit(customer)); return AjaxResult.success(baseService.edit(customer));
} }
...@@ -68,7 +86,7 @@ public class CustomerController extends BaseController { ...@@ -68,7 +86,7 @@ public class CustomerController extends BaseController {
* 获取个人客户列表 * 获取个人客户列表
*/ */
@GetMapping("/user/list") @GetMapping("/user/list")
public AjaxResult userList(){ public AjaxResult userList() {
return AjaxResult.success(baseService.selectUserList()); return AjaxResult.success(baseService.selectUserList());
} }
...@@ -77,9 +95,42 @@ public class CustomerController extends BaseController { ...@@ -77,9 +95,42 @@ public class CustomerController extends BaseController {
*/ */
// @PreAuthorize("@ss.hasPermi('customer:business:list')") // @PreAuthorize("@ss.hasPermi('customer:business:list')")
@GetMapping("/business/list") @GetMapping("/business/list")
public TableDataInfo businessList(CustomerBusinessSearchDto dto){ public TableDataInfo businessList(CustomerBusinessSearchDto dto) {
startPage(); startPage();
return getDataTable(baseService.selectBusinessList(dto)); return getDataTable(baseService.selectBusinessList(dto));
} }
@Log(title = "客户数据导入", businessType = BusinessType.IMPORT)
//@PreAuthorize("@ss.hasPermi('customer:importData')")
@PostMapping("/importData")
public AjaxResult importData(@RequestPart("file") MultipartFile file) throws Exception {
List<Customer> customerList = new ExcelUtil<>(Customer.class).importExcel(file.getInputStream(), 2);
List<String> resultList = new ArrayList<>();
for (Customer customer : customerList) {
if (ObjectUtils.isEmpty(customer.getCompanyName())) {
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,"registeredCapital"));
customer.setProvinceId(MapUtil.getInt(obj,"provinceId"));
customer.setCityId(MapUtil.getInt(obj,"cityId"));
customer.setDistrictId(MapUtil.getInt(obj,"districtId"));
customer.setRegisterAddress(MapUtil.getStr(obj,"domicile"));
customer.setCreditCode(MapUtil.getStr(obj,"creditCode"));
}
baseService.add(customer);
} catch (Exception e) {
resultList.add(customer.getCompanyName().concat(":").concat(e.getMessage()));
}
}
return AjaxResult.success(resultList);
}
} }
...@@ -58,4 +58,20 @@ public class BusinessOpportunityRadarController { ...@@ -58,4 +58,20 @@ public class BusinessOpportunityRadarController {
return opportunityRadarService.jskBidNewsPage(compose); return opportunityRadarService.jskBidNewsPage(compose);
} }
/*
* 专项债查询
*/
@RequestMapping("/bondProjectPage")
public AjaxResult bondProjectPage(@RequestBody ComposeQueryDto compose) {
return opportunityRadarService.bondProjectPage(compose);
}
/*
* 投标计划查询
*/
@RequestMapping("/jskBidPlanPage")
public AjaxResult jskBidPlanPage(@RequestBody ComposeQueryDto compose) {
return opportunityRadarService.jskBidPlanPage(compose);
}
} }
...@@ -3,15 +3,13 @@ package com.dsk.web.controller.search.controller; ...@@ -3,15 +3,13 @@ package com.dsk.web.controller.search.controller;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.ComposeQueryDto; import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.web.controller.search.service.BusinessOpportunityRadarService; import com.dsk.web.controller.search.service.BusinessOpportunityRadarService;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
/** /**
* 模糊查企业 * 查企业
* @author Administrator * @author Administrator
* *
*/ */
...@@ -24,11 +22,18 @@ public class CompanySearchController { ...@@ -24,11 +22,18 @@ public class CompanySearchController {
BusinessOpportunityRadarService opportunityRadarService; BusinessOpportunityRadarService opportunityRadarService;
/* /*
* 土地交易 * 模糊查询企业名称
*/ */
@RequestMapping("/index") @RequestMapping("/index")
public AjaxResult landMarketPage(@RequestBody ComposeQueryDto compose) { public AjaxResult landMarketPage(@RequestBody ComposeQueryDto compose) {
return opportunityRadarService.enterprisePage(compose); return opportunityRadarService.enterprisePage(compose);
} }
/*
* 完全匹配企业名称
*/
@GetMapping("/findByName/{keyword}")
public AjaxResult findByName(@PathVariable String keyword) {
return opportunityRadarService.enterpriseByName(keyword);
}
} }
package com.dsk.web.controller.search.macroMarket; package com.dsk.web.controller.search.macroMarket;
import cn.hutool.core.bean.BeanUtil;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.OpRegionalEconomicDataV1Dto;
import com.dsk.system.domain.OpRegionalEconomicDataV1;
import com.dsk.system.service.EconomicService; import com.dsk.system.service.EconomicService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/** /**
* @ClassName EconomicController * @ClassName EconomicController
...@@ -28,8 +35,84 @@ public class EconomicController { ...@@ -28,8 +35,84 @@ public class EconomicController {
*@Author: Dgm *@Author: Dgm
*@date: 2023/5/18 10:29 *@date: 2023/5/18 10:29
*/ */
@GetMapping("/nationalPage") @PostMapping("/national/list")
public AjaxResult areaGroupByProvince() { public AjaxResult nationalList(@RequestBody OpRegionalEconomicDataV1Dto dto) {
return economicService.nationalPage(); // return economicService.nationalList(dto);
return new AjaxResult(HttpStatus.OK.value(), "", new OpRegionalEconomicDataV1());
}
/***
*@Description: 全国经济大全详情
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@GetMapping("/details/{id}")
public AjaxResult details(@PathVariable("id") Integer id) {
// return economicService.details(id);
return new AjaxResult(HttpStatus.OK.value(), "", new OpRegionalEconomicDataV1());
}
/***
*@Description: 地区经济-统计
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/statistics/regional")
public AjaxResult statisticsRegional(@RequestBody OpRegionalEconomicDataV1Dto dto) {
// return economicService.regional(dto);
Map<String, Object> map = BeanUtil.beanToMap(new OpRegionalEconomicDataV1(), false, false);
// 下属辖区
map.put("subordinateJurisdiction", 38);
// 城投平台
map.put("urbanInvestmentPlatform", 365);
// 城投平台授信余额
map.put("creditBalance", 666.66);
// 城投平台营收账款
map.put("accountsReceivable", 888.88);
return new AjaxResult(HttpStatus.OK.value(), "", map);
}
/***
*@Description: 地区经济-主要指标列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/regional/list")
public AjaxResult regionalList(@RequestBody OpRegionalEconomicDataV1Dto dto) {
// return economicService.regionalList(dto);
List<OpRegionalEconomicDataV1> opRegionalEconomicDataV1List= new ArrayList<>(5);
OpRegionalEconomicDataV1 dataV1 = new OpRegionalEconomicDataV1();
dataV1.setProvince("重庆");
dataV1.setYear(2022);
OpRegionalEconomicDataV1 dataV2 = new OpRegionalEconomicDataV1();
dataV2.setProvince("重庆");
dataV2.setYear(2021);
OpRegionalEconomicDataV1 dataV3 = new OpRegionalEconomicDataV1();
dataV3.setProvince("重庆");
dataV3.setYear(2020);
OpRegionalEconomicDataV1 dataV4 = new OpRegionalEconomicDataV1();
dataV4.setProvince("重庆");
dataV4.setYear(2019);
OpRegionalEconomicDataV1 dataV5 = new OpRegionalEconomicDataV1();
dataV5.setProvince("重庆");
dataV5.setYear(2018);
opRegionalEconomicDataV1List.add(dataV1);
opRegionalEconomicDataV1List.add(dataV2);
opRegionalEconomicDataV1List.add(dataV3);
opRegionalEconomicDataV1List.add(dataV4);
opRegionalEconomicDataV1List.add(dataV5);
return new AjaxResult(HttpStatus.OK.value(), "", opRegionalEconomicDataV1List);
} }
} }
package com.dsk.web.controller.search.macroMarket;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.system.service.RegionalEnterprisesService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @ClassName RegionalEnterprisesController
* @Description 区域企业
* @Author Dgm
* @Date 2023/5/24 16:20
* @Version
*/
@RestController
@RequestMapping(value="/enterprises")
public class RegionalEnterprisesController {
@Autowired
private RegionalEnterprisesService regionalEnterprisesService;
@PostMapping("regional/page")
public AjaxResult page(@RequestBody ComposeQueryDto compose) {
return regionalEnterprisesService.page(compose);
}
}
package com.dsk.web.controller.search.macroMarket;
import cn.hutool.core.bean.BeanUtil;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.SpecialPurposeBondsDto;
import com.dsk.system.domain.SpecialBondInformationV1;
import com.dsk.system.domain.SpecialBondProjectsV1;
import com.dsk.system.service.SpecialPurposeBondsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @ClassName SpecialPurposeBondsController
* @Description 专项债项目
* @Author Dgm
* @Date 2023/5/18 10:09
* @Version 1.0.0
*/
@RestController
@RequestMapping(value ="/specialPurposeBonds")
public class SpecialPurposeBondsController {
@Autowired
private SpecialPurposeBondsService specialPurposeBondsService;
/***
*@Description: 专项债项目分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/projects/page")
public AjaxResult page() {
// return specialPurposeBondsService.page();
Map<String, Object> map = BeanUtil.beanToMap(new SpecialBondProjectsV1(), false, false);
return new AjaxResult(HttpStatus.OK.value(), "", map);
}
/***
*@Description: 专项债项目详情
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@GetMapping("/details/{id}")
public AjaxResult details(@PathVariable("id") String id) {
return specialPurposeBondsService.details(id);
}
/***
*@Description: 专项债-项目类别统计
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/bond/statistics")
public AjaxResult bondStatistics(@RequestBody SpecialPurposeBondsDto dto) {
// return specialPurposeBondsService.bondStatistics();
Map<String, Object> map = BeanUtil.beanToMap(new SpecialPurposeBondsDto(), false, false);
List<SpecialPurposeBondsDto> list = new ArrayList<>(4);
SpecialPurposeBondsDto one = new SpecialPurposeBondsDto();
one.setCount(3);
one.setProportion(55.55);
SpecialPurposeBondsDto two = new SpecialPurposeBondsDto();
two.setCount(8);
two.setProportion(0.12);
SpecialPurposeBondsDto three = new SpecialPurposeBondsDto();
three.setCount(1);
three.setProportion(33.33);
SpecialPurposeBondsDto four = new SpecialPurposeBondsDto();
four.setCount(5);
four.setProportion(11.11);
list.add(one);
list.add(two);
list.add(three);
list.add(four);
switch (dto.getField()) {
case "count": list = sortedCount(list, dto);
break;
case "totalInvestment": list = sortedTotalInvestment(list, dto);
break;
case "proportion": list = sortedProportion(list, dto);
break;
default:
break;
}
return new AjaxResult(HttpStatus.OK.value(), "", list);
}
/***
*@Description: 专项债分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/bond/page")
public AjaxResult bondPage() {
// return specialPurposeBondsService.bondPage();
Map<String, Object> map = BeanUtil.beanToMap(new SpecialBondInformationV1(), false, false);
return new AjaxResult(HttpStatus.OK.value(), "", map);
}
/***
*@Description: 项目数量
*@Param:
*@return: void
*@Author: Dgm
*@date: 2023/5/25 11:26
*/
public List<SpecialPurposeBondsDto> sortedCount(List<SpecialPurposeBondsDto> list, SpecialPurposeBondsDto dto) {
if ("desc".equals(dto.getOrder())) {
list = list.stream().sorted(Comparator.comparing(SpecialPurposeBondsDto::getCount).reversed()).collect(Collectors.toList());
} else {
list = list.stream().sorted(Comparator.comparing(SpecialPurposeBondsDto::getCount)).collect(Collectors.toList());
}
return list;
}
/***
*@Description: 金额
*@Param:
*@return: void
*@Author: Dgm
*@date: 2023/5/25 11:26
*/
public List<SpecialPurposeBondsDto> sortedTotalInvestment(List<SpecialPurposeBondsDto> list, SpecialPurposeBondsDto dto) {
if ("desc".equals(dto.getOrder())) {
list = list.stream().sorted(Comparator.comparing(SpecialPurposeBondsDto::getTotalInvestment).reversed()).collect(Collectors.toList());
} else {
list = list.stream().sorted(Comparator.comparing(SpecialPurposeBondsDto::getTotalInvestment)).collect(Collectors.toList());
}
return list;
}
/***
*@Description: 比例
*@Param:
*@return: void
*@Author: Dgm
*@date: 2023/5/25 11:26
*/
public List<SpecialPurposeBondsDto> sortedProportion(List<SpecialPurposeBondsDto> list, SpecialPurposeBondsDto dto) {
if ("desc".equals(dto.getOrder())) {
list = list.stream().sorted(Comparator.comparing(SpecialPurposeBondsDto::getProportion).reversed()).collect(Collectors.toList());
} else {
list = list.stream().sorted(Comparator.comparing(SpecialPurposeBondsDto::getProportion)).collect(Collectors.toList());
}
return list;
}
}
package com.dsk.web.controller.search.macroMarket;
import cn.hutool.core.bean.BeanUtil;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.UrbanInvestmentPlatformDto;
import com.dsk.system.domain.OpUipFinancialData;
import com.dsk.system.service.UrbanInvestmentPlatformService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* @ClassName UrbanInvestmentPlatformController
* @Description 城投平台
* @Author Dgm
* @Date 2023/5/18 10:09
* @Version 1.0.0
*/
@RestController
@RequestMapping(value ="/urbanInvestment")
public class UrbanInvestmentPlatformController {
@Autowired
private UrbanInvestmentPlatformService urbanInvestmentPlatformService;
/***
*@Description: 城投平台分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/page")
public AjaxResult page(@RequestBody UrbanInvestmentPlatformDto dto) {
// return urbanInvestmentPlatformService.page();
Map<String, Object> map = BeanUtil.beanToMap(new OpUipFinancialData(), false, false);
// 招标
map.put("biddingAnnouncement", 11);
// 供应商
map.put("supplier", 33);
// 土地
map.put("landInfo", 66);
return new AjaxResult(HttpStatus.OK.value(), "", map);
}
/***
*@Description: 城投平台详情
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping("/details/{id}")
public AjaxResult details(@PathVariable("id") String id) {
return urbanInvestmentPlatformService.details(id);
}
}
...@@ -19,4 +19,10 @@ public interface BusinessOpportunityRadarService { ...@@ -19,4 +19,10 @@ public interface BusinessOpportunityRadarService {
AjaxResult establishmentPage(ComposeQueryDto compose); AjaxResult establishmentPage(ComposeQueryDto compose);
AjaxResult enterprisePage(ComposeQueryDto compose); AjaxResult enterprisePage(ComposeQueryDto compose);
AjaxResult enterpriseByName(String keyword);
AjaxResult bondProjectPage(ComposeQueryDto compose);
AjaxResult jskBidPlanPage(ComposeQueryDto compose);
} }
...@@ -10,6 +10,7 @@ import com.dsk.web.controller.search.service.MarketAnalysisService; ...@@ -10,6 +10,7 @@ import com.dsk.web.controller.search.service.MarketAnalysisService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
/** /**
...@@ -54,4 +55,24 @@ public class BusinessOpportunityRadarServiceImpl implements BusinessOpportunityR ...@@ -54,4 +55,24 @@ public class BusinessOpportunityRadarServiceImpl implements BusinessOpportunityR
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/index", BeanUtil.beanToMap(compose, false, false)); Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/index", BeanUtil.beanToMap(compose, false, false));
return BeanUtil.toBean(map, AjaxResult.class); 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(ComposeQueryDto compose) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/bondProject/page", BeanUtil.beanToMap(compose, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult jskBidPlanPage(ComposeQueryDto compose) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/jskBidPlan/page", BeanUtil.beanToMap(compose, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
} }
...@@ -31,7 +31,7 @@ public class BusinessFollowRecord extends BaseEntity ...@@ -31,7 +31,7 @@ public class BusinessFollowRecord extends BaseEntity
/** 用户昵称 */ /** 用户昵称 */
@Excel(name = "用户昵称") @Excel(name = "用户昵称")
private Integer userName; private String nickName;
/** 拜访对象 */ /** 拜访对象 */
@Excel(name = "拜访对象") @Excel(name = "拜访对象")
...@@ -64,8 +64,8 @@ public class BusinessFollowRecord extends BaseEntity ...@@ -64,8 +64,8 @@ public class BusinessFollowRecord extends BaseEntity
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date creatTime; private Date creatTime;
public Integer getUserName() { public String getNickName() {
return userName; return nickName;
} }
public String getVisitPerson() { public String getVisitPerson() {
...@@ -76,8 +76,8 @@ public class BusinessFollowRecord extends BaseEntity ...@@ -76,8 +76,8 @@ public class BusinessFollowRecord extends BaseEntity
return position; return position;
} }
public void setUserName(Integer userName) { public void setNickName(String nickName) {
this.userName = userName; this.nickName = nickName;
} }
public void setVisitPerson(String visitPerson) { public void setVisitPerson(String visitPerson) {
...@@ -168,7 +168,7 @@ public class BusinessFollowRecord extends BaseEntity ...@@ -168,7 +168,7 @@ public class BusinessFollowRecord extends BaseEntity
.append("id", getId()) .append("id", getId())
.append("businessId", getBusinessId()) .append("businessId", getBusinessId())
.append("userId", getUserId()) .append("userId", getUserId())
.append("userName", getUserName()) .append("nickName", getNickName())
.append("visitPerson", getVisitPerson()) .append("visitPerson", getVisitPerson())
.append("position", getPosition()) .append("position", getPosition())
.append("visitTime", getVisitTime()) .append("visitTime", getVisitTime())
......
...@@ -58,6 +58,10 @@ public class ComposeQueryDto { ...@@ -58,6 +58,10 @@ public class ComposeQueryDto {
JskBidCandidateDto jskBidCandidateDto; JskBidCandidateDto jskBidCandidateDto;
//中标公示 //中标公示
JskBidWinListDto jskBidWinListDto; JskBidWinListDto jskBidWinListDto;
//专项债项目
SpecialBondProjectDto specialBondProjectDto;
//投标计划
JskBidPlanDto jskBidPlanDto;
String achievementQueryType; String achievementQueryType;
......
package com.dsk.common.dtos;
import lombok.Data;
/**
* 组合查询参数
* @author Administrator
*
*/
@Data
public class JskBidPlanDto {
String id;
String uuid;
String title;
String projectName;
String projectNumber;
//招标人
String tenderee;
String tendereeId;
String projectScale;
String province;
String city;
String area;
String domicile;
//标的物类型
String objectType;
//项目类型
String projectType;
//招标方式
String tenderWay;
//合同预估金额
Double planTenderAmount;
Double startPlanTenderAmount;
Double endPlanTenderAmount;
//资金来源
String projecetCapitalSource;
//发布时间
String issueTime;
//来源网站
String sourceName;
/**
* 修改时间
*/
String updateTime;
}
package com.dsk.common.dtos;
import lombok.Data;
import org.springframework.boot.context.event.SpringApplicationEvent;
/**
* @ClassName OpRegionalEconomicDataV1Dto
* @Description 专项债-项目类别统计
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataV1Dto {
/**
* 年份
*/
private Integer year;
/**
* 省
*/
private Integer provinceId;
/**
* 市
*/
private Integer cityId;
/**
* 区
*/
private Integer areaId;
/**
* 全国宏观经济:1 / 辖区经济:2 / 地区对比:3
*/
private Integer type;
}
package com.dsk.common.dtos;
import lombok.Data;
/**
* 组合查询参数
* @author Administrator
*
*/
@Data
public class SpecialBondProjectDto {
Long id;
String uuid;
String projectName;
String projectType;
//项目总投资
String projectTotalInvestment;
//项目资本金
String projectCapital;
//专项债金额
String specialCapital;
//项目主体
String projectEntity;
//项目主体id
Long projectEntityId;
//主管部门
String chargeDepartment;
//实施单位
String piu;
Long piuId;
String domicile;
String province;
String city;
String area;
}
package com.dsk.common.dtos;
import lombok.Data;
/**
* @ClassName SpecialPurposeBonds
* @Description 专项债-项目类别统计
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class SpecialPurposeBondsDto {
/**
* 项目类型
*/
private String projectType;
/**
* 项目个数
*/
private Integer count;
/**
* 投资金额
*/
private Double totalInvestment;
/**
* 比例(%)
*/
private Double proportion;
/**
* 排序字段
*/
private String field;
/**
* 排序 (降序desc 升序asc)
*/
private String order;
}
package com.dsk.common.dtos;
import com.dsk.common.core.domain.model.BasePage;
import lombok.Data;
/**
* @ClassName UrbanInvestmentPlatformDto
* @Description 城投平台参数对象
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class UrbanInvestmentPlatformDto extends BasePage {
/**
* 行政级别
*/
private String uipExecutiveLevel;
/**
* 城投业务类型
*/
private String uipBusinessType;
/**
* 主体评级
*/
private String bratingSubjectLevel;
/**
* 股东背景
*/
private String shareholderBg;
/**
* 股权关系
*/
private String equityRelationship;
/**
* 平台重要性
*/
private String platformImportance;
/**
* 所属开发区
*/
private String developmentZone;
/**
* 省
*/
private Integer provinceId;
/**
* 市
*/
private Integer cityId;
/**
* 区
*/
private Integer areaId;
}
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
"axios": "0.24.0", "axios": "0.24.0",
"clipboard": "2.0.8", "clipboard": "2.0.8",
"core-js": "3.25.3", "core-js": "3.25.3",
"echarts": "5.4.0", "echarts": "^5.4.0",
"element-resize-detector": "^1.2.4", "element-resize-detector": "^1.2.4",
"element-ui": "2.15.12", "element-ui": "2.15.12",
"file-saver": "2.0.5", "file-saver": "2.0.5",
......
This diff is collapsed.
import request from '@/utils/request'
// 客户列表
export function getCustomerList(param) {
return request({
url: '/customer/list',
method: 'get',
params: param
})
}
//新增客户
export function addCustomer(param) {
return request({
url: '/customer',
method: 'POST',
data: param
})
}
import request from '@/utils/request'
// 获取客户决策链条列表
export function getList(data) {
return request({
url: '/customer/decision/chain/list',
method: 'get',
params: data
})
}
// 添加客户决策链条
export function addChain(data) {
return request({
url: '/customer/decision/chain',
method: 'post',
data:data
})
}
import request from '@/utils/request'
//根据字典类型查询字典数据信息
export function getDictType(dictType) {
return request({
url: '/system/dict/data/type/'+dictType,
method: 'get',
})
}
//模糊查询企业联想
export function getEnterprise(param) {
return request({
url: '/enterprise/index',
method: 'POST',
data: param
})
}
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -519,6 +519,7 @@ ul, li { ...@@ -519,6 +519,7 @@ ul, li {
.btn_default{ .btn_default{
border: 1px solid #0081FF; border: 1px solid #0081FF;
color: #0081FF; color: #0081FF;
background: #FFFFFF;
&.h28{ &.h28{
line-height: 26px; line-height: 26px;
} }
...@@ -617,7 +618,8 @@ ul, li { ...@@ -617,7 +618,8 @@ ul, li {
top: 0; top: 0;
border-radius: 0; border-radius: 0;
&:hover{ &:hover{
color: #006AD1; color: #FFFFFF;
background: #0081FF;
} }
} }
} }
......
.app-container{
padding: 0;
}
//小导航 //小导航
.miantitle{ .miantitle{
color: #232323; color: #232323;
...@@ -388,6 +392,11 @@ ...@@ -388,6 +392,11 @@
content: "\e78f"; content: "\e78f";
opacity: 0.4; opacity: 0.4;
} }
.el-icon-arrow-down:before{
content: "\e790";
opacity: 0.4;
color: #232323;
}
} }
} }
.popbot{ .popbot{
...@@ -410,10 +419,10 @@ ...@@ -410,10 +419,10 @@
} }
.popform.j{ .popform.j{
.left{ .left{
width: 116px; width: 130px;
} }
.el-input{ .el-input{
width: 374px; width: 364px;
} }
} }
.types{ .types{
...@@ -693,12 +702,8 @@ ...@@ -693,12 +702,8 @@
font-size: 12px; font-size: 12px;
} }
} }
.b1{
padding: 0 5px;
border-radius: 2px;
}
.b2{ .b2{
padding: 0 15px; width: 80px;
border-radius: 2px; border-radius: 2px;
} }
.b3{ .b3{
...@@ -744,6 +749,25 @@ ...@@ -744,6 +749,25 @@
.el-table--enable-row-hover .el-table__body tr:hover > td.el-table__cell{ .el-table--enable-row-hover .el-table__body tr:hover > td.el-table__cell{
background: #F6F9FC;; background: #F6F9FC;;
} }
.hoverbtn{
display: none;
>div{
cursor: pointer;
margin-right: 24px;
}
.xz{
opacity: 0.8;
}
.sc{
color: #FF3C3C;
}
}
tr:hover{
.hoverbtn{
display: flex;
justify-content: right;
}
}
.el-table__header-wrapper th{ .el-table__header-wrapper th{
background: #FFFFFF; background: #FFFFFF;
font-size: 12px; font-size: 12px;
...@@ -791,3 +815,183 @@ ...@@ -791,3 +815,183 @@
.p10{ .p10{
padding: 0 10px; padding: 0 10px;
} }
.tips{
display: inline-block;
padding: 4px 8px;
border-radius: 2px;
font-size: 12px;
margin-right: 8px;
&.tip1{
background-color: #E4F3FD;
color: #41A1FD;
}
&.tip2{
background-color: #F3F3FF;
color: #8491E8;
}
&.tip3{
background-color: #DEF6F0;
color: #0BAE8D;
}
}
//批量导入
.uploadwin{
background: rgba(0,0,0,0.3);
width: 100%;
height: 100%;
position: fixed;
top: 0;
left: 0;
z-index: 2;
.upload{
width: 528px;
height: 430px;
background: #F4F9FF;
border-radius: 4px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
.up_title{
font-size: 14px;
font-weight: 700;
text-align: center;
line-height: 50px;
}
.up_box{
margin: 0 24px;
width: 480px;
height: 296px;
background: #FFFFFF;
border-radius: 2px;
border: 1px dashed #0081FF;
position: relative;
.el-upload-dragger{
height: 294px;
width: 478px;
border: 0;
}
.up_img{
margin: 56px auto 13px;
}
.up_text{
color: #666;
font-size: 14px;
line-height: 18px;
padding-bottom: 12px;
}
.up_tip{
color: #999;
font-size: 12px;
line-height: 16px;
padding-bottom: 12px;
text-align: left;
padding-left: 82px;
&:before{
content: " ";
width: 4px;
height: 4px;
background: #D8D8D8;
border-radius: 50%;
float: left;
margin: 6px 6px 0 0;
}
}
.up_success{
padding-top: 135px;
font-size: 18px;
color: #46AF41;
font-weight: 700;
line-height: 24px;
>img{
float: left;
width: 24px;
margin-right: 10px;
margin-left: 187px;
}
}
}
.btn_download{
position: absolute;
width: 78px;
height: 22px;
background: #E2EEFF;
border-radius: 2px;
color: #0081FF;
background: rgba(0, 129, 255, 0.16);
font-size: 12px;
line-height: 22px;
top: 149px;
right: 61px;
cursor: pointer;
.img{
float: left;
background: url('../images/upload.png')no-repeat center center;
transform: rotateX(180deg);
width: 9px;
height: 11px;
margin: 4px 2px 0 10px;
}
}
}
.btns{
text-align: center;
.btn_primary,.btn_disabled,.btn_default{
border-radius: 2px;
margin: 24px 8px 0;
width: 104px;
}
.btn_disabled{
background: #999;
}
}
.success{
width: 240px;
height: 175px;
background: #FFFFFF;
border-radius: 4px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
text-align: center;
.img{
display: block;
margin: 24px auto 16px;
width: 60px;
}
.p1{
font-size: 16px;
font-family: Microsoft YaHei-Bold, Microsoft YaHei;
font-weight: 700;
color: rgba(35,35,35,0.8);
line-height: 21px;
}
.p2{
margin-top: 16px;
font-size: 14px;
font-family: Microsoft YaHei-Regular, Microsoft YaHei;
font-weight: 400;
color: rgba(35,35,35,0.4);
line-height: 14px;
}
.p3{
padding-top: 35px;
font-size: 18px;
color: #46AF41;
font-weight: 700;
line-height: 24px;
text-align: left;
>img{
float: left;
width: 24px;
margin-right: 10px;
margin-left: 67px;
}
}
.btn_primary{
margin-top: 16px;
}
}
}
* {
padding: 0;
margin: 0;
}
div,
dl,
dt,
dd,
form,
h1,
h2,
h3,
h4,
h5,
h6,
img,
ol,
ul,
li,
table,
th,
td,
p,
span,
a {
border: 0;
}
img,
input {
border: none;
vertical-align: middle;
background: none;
outline: none;
}
html {
height: 100%;
box-sizing: border-box;
}
body {
height: 100%;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
}
ul,
ol {
list-style-type: none;
}
th,
td,
input {
font-size: 12px;
}
h3 {
font-size: 14px;
}
s,
i,
em {
font-style: normal;
text-decoration: none;
}
button {
border: none;
cursor: pointer;
font-size: 12px;
background-color: transparent;
}
select {
border-width: 1px;
_zoom: 1;
border-style: solid;
padding-top: 2px;
font-size: 12px;
}
.clear {
clear: both;
font-size: 1px;
height: 0;
visibility: hidden;
line-height: 0;
}
.clearfix:after {
content: "";
display: block;
clear: both;
}
.clearfix {
zoom: 1;
}
.float_left {
float: left;
}
.float_right {
float: right;
}
.el-input {
width: 100%;
}
.el-input .el-input__inner {
width: 100%;
height: 34px;
line-height: 34px;
background: #ffffff;
border: 1px solid #e0e0e0;
border-radius: 2px;
box-sizing: border-box;
}
.el-input__icon {
line-height: 34px;
}
.el-dropdown-link .el-input {
width: 100%;
}
.el-dropdown-link .el-input__inner {
width: 100%;
}
.el-input--suffix .el-input__inner {
padding-right: 15px;
}
.el-select .el-input.is-focus .el-input__inner,
.el-input.is-active .el-input__inner,
.el-input__inner:focus,
.el-select .el-input__inner:focus,
.el-range-editor.is-active:focus-within {
border-color: #3181fa;
}
.el-popper[x-placement^=top] {
margin-bottom: 12px;
}
.el-select-dropdown .popper__arrow {
display: none;
}
.el-popper .popper__arrow {
display: none;
}
.select-popper {
text-align: center;
display: inline-block;
position: relative;
color: #333333;
font-size: 14px;
cursor: pointer;
margin-right: 24px;
}
.select-popper .select-popper-img {
width: 24px;
height: 12px;
position: absolute;
top: -10px;
right: 2px;
}
.select-popper .el-select__tags,
.select-popper .el-cascader__tags,
.select-popper .el-input__suffix {
display: none;
}
.select-popper:hover {
color: #0381fa;
}
.select-popper-active {
color: #0381fa;
}
.select-popper-title {
padding: 4px 6px;
}
.select-popper-title .colorhover {
color: #0381fa;
}
.select-popper::-webkit-scrollbar-thumb {
background-color: #a1a3a9;
border-radius: 6px;
}
.select-popper::-webkit-scrollbar {
width: 6px;
height: 6px;
}
.select-popper::-webkit-scrollbar-track {
background: #fff;
}
.select-popper::-webkit-scrollbar-corner {
background: #fff;
}
.select-popper .el-select {
width: 100%;
}
.cascader-region {
position: absolute;
left: 0;
top: 0px;
opacity: 0;
line-height: 16px;
}
.cascader-region .el-input {
width: 100%;
line-height: 16px;
}
.cascader-region .el-input .el-input__inner {
width: 100%;
height: 16px !important;
}
.content_item .select-caret {
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
line-height: 16px;
font-weight: 400;
color: #333333;
cursor: pointer;
position: relative;
}
.content_item .select-popper:hover .select-caret {
color: #0074E5;
}
.content_item .select-caret:focus {
border: none;
outline: none;
}
.content_item .geduan{
width: 100%;
height: 0px;
opacity: 1;
border: 1px solid #EFEFEF;
margin: 16px 0px;
}
.content_item .search-new {
width: 100%;
padding-bottom: 16px;
}
.content_item .search-new span:last-child {
display: inline-block;
width: 80px;
text-align: center;
color: #5B5B5B;
line-height: 32px;
cursor: pointer;
border-radius: 2px 2px 2px 2px;
border: 1px solid #D4D4D4;
opacity: 1;
}
.content_item .search-new span:first-child {
margin-right: 12px;
display: inline-block;
width: 80px;
text-align: center;
cursor: pointer;
background: #0089ff;
color: #fff;
line-height: 34px;
border-radius: 2px 2px 2px 2px;
opacity: 1;
}
.content_item .search-new span:first-child:hover {
background: #0080FF;
}
.content_item .search-new span:last-child:hover {
background: #f5faff;
color: #0081FF;
border-color: #0081FF;
}
* {
padding: 0;
margin: 0;
}
div,
dl,
dt,
dd,
form,
h1,
h2,
h3,
h4,
h5,
h6,
img,
ol,
ul,
li,
table,
th,
td,
p,
span,
a {
border: 0;
}
img,
input {
border: none;
vertical-align: middle;
background: none;
outline: none;
}
html {
height: 100%;
box-sizing: border-box;
}
body {
height: 100%;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
}
ul,
ol {
list-style-type: none;
}
th,
td,
input {
font-size: 12px;
}
h3 {
font-size: 14px;
}
s,
i,
em {
font-style: normal;
text-decoration: none;
}
button {
border: none;
cursor: pointer;
font-size: 12px;
background-color: transparent;
}
select {
border-width: 1px;
_zoom: 1;
border-style: solid;
padding-top: 2px;
font-size: 12px;
}
.clear {
clear: both;
font-size: 1px;
height: 0;
visibility: hidden;
line-height: 0;
}
.clearfix:after {
content: "";
display: block;
clear: both;
}
.clearfix {
zoom: 1;
}
.float_left {
float: left;
}
.float_right {
float: right;
}
...@@ -122,7 +122,21 @@ export const constantRoutes = [ ...@@ -122,7 +122,21 @@ export const constantRoutes = [
meta: { title: '区域专项债详情', icon: 'user' } meta: { title: '区域专项债详情', icon: 'user' }
} }
] ]
} },
{
path: '/debtProject',
component: Layout,
hidden: true,
redirect: 'noredirect',
children: [
{
path: '/radar/debtProject/details/:id(\\d+)',
component: () => import('@/views/radar/debtProject/details'),
name: 'debtProjectDetails',
meta: { title: '企业专项债详情', icon: 'radar' }
}
]
}
] ]
// 动态路由,基于用户权限动态去加载 // 动态路由,基于用户权限动态去加载
......
<template> <template>
<div class="app-container"> <div>
跟进动态 <div class="miantitle">
<span>客户管理</span>
<span> / 客户列表</span>
<span> / 跟进动态</span>
</div>
<div class="app-container">
<gjjl types="gjdt" :data="datas"></gjjl>
</div>
</div> </div>
</template> </template>
<script> <script>
import gjjl from '../../project/projectList/component/gjjl.vue'
export default { export default {
components:{
gjjl
},
name: 'Trends', name: 'Trends',
data() { data() {
return { return {
datas:[]
} }
}, },
created() { created() {
......
...@@ -37,12 +37,12 @@ export default { ...@@ -37,12 +37,12 @@ export default {
searchText: '', searchText: '',
sideRoute: [ sideRoute: [
{title: '企业概要', pathName: '', children: [ {title: '企业概要', pathName: '', children: [
{title: '企业速览', pathName: ''}, {title: '企业速览', pathName: 'overview'},
{title: '工商信息', pathName: ''}, {title: '工商信息', pathName: 'businfo'},
{title: '股东信息', pathName: ''}, {title: '股东信息', pathName: 'holderinfo'},
{title: '高管信息', pathName: ''}, {title: '高管信息', pathName: 'execuinfo'},
{title: '对外投资', pathName: ''}, {title: '对外投资', pathName: 'overseas'},
{title: '分支机构', pathName: ''} {title: '分支机构', pathName: 'branch'}
]}, ]},
{title: '财务简析', pathName: 'financial'}, {title: '财务简析', pathName: 'financial'},
{title: '项目商机', pathName: '', children: [ {title: '项目商机', pathName: '', children: [
...@@ -77,10 +77,10 @@ export default { ...@@ -77,10 +77,10 @@ export default {
{title: '信用中国', pathName: ''} {title: '信用中国', pathName: ''}
]}, ]},
{title: '商务信息', pathName: 'business'}, {title: '商务信息', pathName: 'business'},
{title: '招标偏好', pathName: ''}, {title: '招标偏好', pathName: 'preference'},
{title: '合作情况', pathName: ''}, {title: '合作情况', pathName: 'cooperate'},
{title: '决策链条', pathName: ''}, {title: '决策链条', pathName: 'decisionMaking'},
{title: '跟进记录', pathName: ''} {title: '跟进记录', pathName: 'gjjl'}
] ]
} }
}, },
...@@ -112,62 +112,66 @@ export default { ...@@ -112,62 +112,66 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.detail-container{ #app{
width: 144px; .detail-container{
min-height: calc(100vh - 170px); width: 144px;
padding-bottom: 20px; min-height: calc(100vh - 170px);
background: #FFFFFF; padding-bottom: 20px;
.side-input{ background: #FFFFFF;
width: 128px; .side-input{
margin-top: 16px; width: 128px;
margin-left: 8px; margin-top: 16px;
border: 0; margin-left: 8px;
::v-deep .el-input__inner{
height: 32px;
background: #F3F3F4;
border-radius: 20px;
border: 0; border: 0;
&::placeholder { ::v-deep .el-input__inner{
color: #3D3D3D; height: 32px;
background: #F3F3F4;
border-radius: 20px;
border: 0;
&::placeholder {
color: #3D3D3D;
}
} }
} .el-icon-search{
.el-icon-search{ color: #0081FF;
color: #0081FF; cursor: pointer;
cursor: pointer;
}
}
.detail-menu{
margin-top: 20px;
border-right: 0;
::v-deep .el-menu-item, ::v-deep .el-submenu__title{
height: 30px;
line-height: 30px;
font-size: 14px;
color: #232323;
&:hover, &:focus{
background: linear-gradient(91deg, rgba(0,129,255,0.1) 0%, rgba(0,129,255,0) 100%);;
} }
.el-submenu__icon-arrow{ }
.detail-menu{
margin-top: 20px;
border-right: 0;
::v-deep .el-menu-item, ::v-deep .el-submenu__title{
height: 30px;
line-height: 30px;
font-size: 14px;
color: #232323; color: #232323;
right: 48px; padding: 0 0 0 16px !important;
margin-top: -5px; text-align: initial !important;
&:hover, &:focus, &.is-active{
background: linear-gradient(91deg, rgba(0,129,255,0.1) 0%, rgba(0,129,255,0) 100%);;
}
.el-submenu__icon-arrow{
color: #232323;
right: 48px;
margin-top: -5px;
}
} }
} ::v-deep .el-submenu .el-menu-item{
::v-deep .el-submenu .el-menu-item{ font-size: 12px;
font-size: 12px; color: rgba(35,35,35,0.8);
color: rgba(35,35,35,0.8); padding: 0 0 0 27px !important;
padding: 0 0 0 27px !important; min-width: 144px !important;
min-width: 144px !important; position: relative;
position: relative; &:before {
&:before { content: "";
content: ""; position: absolute;
position: absolute; top: 14px;
top: 14px; left: 21px;
left: 21px; width: 2px;
width: 2px; height: 2px;
height: 2px; background: rgba(35,35,35,0.8);
background: rgba(35,35,35,0.8); border-radius: 50%;
border-radius: 50%; }
} }
} }
} }
......
This diff is collapsed.
<template>
<div class="decisionMaking">
<template v-if="ifEmpty">
<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>
</div>
</div>
<div class="table-item">
<el-table
v-loading="tableLoading"
:data="tableData"
element-loading-text="Loading"
border
fit
highlight-current-row
>
<el-table-column label="序号" width="50" align="left">
<template slot-scope="scope">{{ pageIndex * pageSize - pageSize + scope.$index + 1 }}</template>
</el-table-column>
<el-table-column label="姓名" prop="enterpriseName" min-width="70" align="left" />
<el-table-column label="角色" prop="level" min-width="70" align="left" />
<el-table-column label="公司/机关" prop="legalPerson" min-width="70" align="left" />
<el-table-column label="职位" prop="capital" min-width="115" align="left" />
<el-table-column label="联系方式" prop="capital" min-width="115" align="left" />
<el-table-column label="内部维护人" prop="capital" min-width="115" align="left" />
<el-table-column label="备注" prop="capital" min-width="115" align="left" />
</el-table>
</div>
<div class="pagination-box">
<el-pagination background :current-page="queryParams.pageNum" :page-size="queryParams.pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div>
</template>
<template v-else>
<div class="cooperate_empty">
<img src="@/assets/images/project/empty.png"/>
<div class="empty-t">暂无客户联系人数据</div>
<div class="empty-d">抱歉,你还未添加客户联系人,快去添加吧</div>
<el-button type="primary" class="empty-b" @click="opennew">添加联系人</el-button>
</div>
</template>
<!-- 弹窗添加联系人 -->
<el-dialog
class="popups"
:visible.sync="dialogVisible"
width="464px">
<div class="poptitle">
<img src="@/assets/images/economies/icon.png">
<span>重庆市轨道交通3号线二期工程4标段施工总承包</span>
</div>
<div class="popform">
<div class="row">
<span class="left">联系人姓名:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="row">
<span class="left">联系人角色:</span>
<el-select placeholder="请选择">
<el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option>
</el-select>
</div>
<div class="row">
<span class="left">联系人职位:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="row">
<span class="left">联系人公司/机关:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="row">
<span class="left">内部维护人:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="row">
<span class="left">联系方式:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="popbot">
<div class="btn btn_cancel h32" @click="cancel">返回</div>
<div class="btn btn_primary h32">保存</div>
</div>
</div>
</el-dialog>
</div>
</template>
<script>
import {
getList,
addChain
} from '@/api/decisionMaking/decisionMaking'
export default {
name: 'DecisionMaking',
components: {
},
data() {
return {
ifEmpty:true,
queryParams:{
customerId:null,
pageNum:1,
pageSize:10,
},
stageOptions:[],
statusOptions:[],
//列表
tableLoading:false,
tableData:[],
pageIndex:1,
pageSize:10,
tableDataTotal:0,
//弹窗
dialogVisible: false,
}
},
created() {
this.list();
},
computed: {
},
methods: {
list(){
getList(this.queryParams).then((res) => {
console.log(res)
})
},
resetQuery() {
},
//分页
handleCurrentChange(e){
},
handleSizeChange(e){
},
cancel(){
this.dialogVisible = false
},
//打开新建窗口
opennew(){
this.dialogVisible = true
},
}
}
</script>
<style lang="scss" scoped>
.decisionMaking{
background: #ffffff;
border-radius: 4px;
padding: 16px;
input{
border: 1px solid #EFEFEF;
}
::v-deep .el-form-item{
margin-right: 8px !important;
}
.cooperate-name{
::v-deep .el-form-item__content{
display: flex;
span{
width: 60px;
height: 32px;
background: #F5F5F5;
text-align: center;
color: #0081FF;
border: 1px solid #EFEFEF;
border-left: 0;
cursor: pointer;
}
}
::v-deep .el-input__inner{
border-right: 0;
border-radius: 2px 0 2px 0;
}
}
.query-add{
button{
width: 124px;
line-height: 32px;
height: 32px;
background: #0081FF;
border-radius: 2px 2px 2px 2px;
padding: 0;
color: #ffffff;
span{
color: #ffff;
margin-left: 4px;
}
}
}
.cooperate_empty{
text-align: center;
height: calc(100vh - 170px);
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
img{
width: 108px;
height: 108px;
border-radius: 50%;
margin-bottom: 24px;
}
.empty-t{
font-size: 16px;
color: #333333;
margin-bottom: 8px;
}
.empty-d{
font-size: 14px;
font-weight: 400;
color: #999999;
margin-bottom: 24px;
}
.empty-b{
width: 116px;
height: 36px;
background: #0081FF;
border-radius: 4px;
padding: 0;
}
}
.table-item{
margin-top: 10px;
}
// 弹窗
.popups{
.poptitle {
line-height: 48px;
border-bottom: 1px solid #E1E1E1;
height: 48px;
position: absolute;
top: 0;
left: 0;
width: 100%;
img {
width: 17px;
margin: 16px;
float: left;
}
span {
font-weight: bold;
font-size: 16px;
color: #232323;
font-family: Microsoft YaHei-Bold, Microsoft YaHei;
width: 385px;
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.popform {
padding-top: 24px;
.row {
padding-bottom: 16px;
.left {
width: 137px;
display: inline-block;
text-align: right;
opacity: 0.8;
}
::v-deep .el-input {
display: inline-block;
width: 240px;
}
}
.popbot {
text-align: right;
padding-top: 8px;
}
}
}
}
</style>
...@@ -7,8 +7,22 @@ ...@@ -7,8 +7,22 @@
</div> </div>
<div class="part-right"> <div class="part-right">
<div id="partBox"> <div id="partBox">
<Overview v-if="currentPath.pathName=='overview'" />
<Businfo v-if="currentPath.pathName=='businfo'" />
<Holderinfo v-if="currentPath.pathName=='holderinfo'" />
<Execuinfo v-if="currentPath.pathName=='execuinfo'" />
<Overseas v-if="currentPath.pathName=='overseas'" />
<Branch v-if="currentPath.pathName=='branch'" />
<Financial v-if="currentPath.pathName=='financial'" /> <Financial v-if="currentPath.pathName=='financial'" />
<Business v-if="currentPath.pathName=='business'" /> <Business v-if="currentPath.pathName=='business'" />
<!-- 招标偏好 -->
<Preference v-if="currentPath.pathName=='preference'" />
<!-- 合作情况 -->
<Cooperate v-if="currentPath.pathName=='cooperate'" />
<!-- 决策链条 -->
<DecisionMaking v-if="currentPath.pathName=='decisionMaking'" />
<!-- 跟进记录 -->
<Gjjl v-if="currentPath.pathName=='gjjl'" />
</div> </div>
</div> </div>
</div> </div>
...@@ -19,20 +33,40 @@ ...@@ -19,20 +33,40 @@
import elementResizeDetectorMaker from "element-resize-detector" import elementResizeDetectorMaker from "element-resize-detector"
import Header from "./component/Header" import Header from "./component/Header"
import SideBar from "./component/Sidebar" import SideBar from "./component/Sidebar"
import Financial from "./financial" import Overview from "./overview/overview" //企业概览-企业速览
import Business from "./business" import Businfo from "./overview/businfo" //企业概览-工商信息
import Holderinfo from "./overview/holderinfo" //企业概览-股东信息
import Execuinfo from "./overview/execuinfo" //企业概览-高管信息
import Overseas from "./overview/overseas" //企业概览-对外投资
import Branch from "./overview/branch" //企业概览-分支机构
import Financial from "./financial" //财务简析
import Business from "./business" //商务信息
import Preference from "./preference" //招标偏好
import Cooperate from "./cooperate" //合作情况
import DecisionMaking from "./decisionMaking" //决策链条
import Gjjl from "../../project/projectList/component/gjjl" //跟进记录
export default { export default {
name: 'PartyA', name: 'PartyA',
components: { components: {
Header, Header,
SideBar, SideBar,
Overview,
Businfo,
Holderinfo,
Execuinfo,
Overseas,
Branch,
Financial, Financial,
Business Business,
Preference,
Cooperate,
DecisionMaking,
Gjjl
}, },
data() { data() {
return { return {
currentPath: { currentPath: {
pathName: 'financial' //默认展示页 pathName: 'overview' //默认展示页
}, },
partBoxHeight: null partBoxHeight: null
} }
......
<template>
<div class="app-container part-container">
企业速览
</div>
</template>
<script>
export default {
name: 'Overview',
data() {
return {
}
},
created() {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.part-container{
margin: 0;
padding: 0;
}
</style>
<template>
<div class="app-container part-container">
企业速览
</div>
</template>
<script>
export default {
name: 'Overview',
data() {
return {
}
},
created() {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.part-container{
margin: 0;
padding: 0;
}
</style>
<template>
<div class="app-container operations-container">
<div class="common-title">公司经营</div>
<div class="part-swiper">
<div class="swiper-containers">
<ul class="swiper-wrapper">
<li class="swiper-slide" v-for="(item, index) in operList" :key="index">
<div class="swiper-div">
<div class="operations-title">{{item.range}}-<span>{{item.year}}</span></div>
<div class="flex-box text-cl1 operations-info">
{{item.name}}
<span><img src="@/assets/images/detail/overview/oper_source.png">{{item.name}}</span>
</div>
</div>
</li>
</ul>
</div>
<div class="swiper-button-prev" slot="button-prev" style="left: 0;"><i class="el-icon-arrow-left"></i></div>
<div class="swiper-button-next" slot="button-next" style="right: 0"><i class="el-icon-arrow-right"></i></div>
</div>
<div class="flex-box operations-list">
<div class="list-item" v-for="(item, index) in gsjyList" :key="index">
<div class="flex-box list-item-all"><img :src="item.ico">{{item.name}}</div>
<div class="list-item-amount">{{item.amount}}</div>
</div>
</div>
</div>
</template>
<script>
var Swiper = require('@/assets/lib/swiper/swiper-bundle.min.js')
import "@/assets/lib/swiper/swiper-bundle.css"
export default {
name: 'Overview',
data() {
return {
operList: [
{name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'},
{name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'},
{name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'},
{name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'},
{name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'}
],
gsjyList: [
{ name: '总资产', ico: require('@/assets/images/detail/overview/gsjy_ico1.png'), amount: '1699.7'},
{ name: '净资产', ico: require('@/assets/images/detail/overview/gsjy_ico2.png'), amount: '1699.7'},
{ name: '授信余额', ico: require('@/assets/images/detail/overview/gsjy_ico3.png'), amount: '1699.7'},
{ name: '营业收入', ico: require('@/assets/images/detail/overview/gsjy_ico4.png'), amount: '1699.7'},
{ name: '总负债', ico: require('@/assets/images/detail/overview/gsjy_ico5.png'), amount: '1699.7'}
],
}
},
created() {
},
mounted() {
this.companySwiper()
},
methods: {
companySwiper(){
new Swiper('.swiper-containers', {
slidesPerView: 4,
// 设置点击箭头
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
}
})
}
}
}
</script>
<style lang="scss" scoped>
.operations-container{
margin: 0;
padding: 24px 16px;
background: #FFFFFF;
.part-swiper{
position: relative;
margin-top: 16px;
.swiper-containers{
width: calc(100% - 38px);
height: 96px;
margin-top: 8px;
margin-left: 25px;
overflow: hidden;
.swiper-slide{
.swiper-div{
width: calc(100% - 12px);
height: 96px;
background: url("~@/assets/images/detail/overview/swiper_bg.png") no-repeat;
background-size: 100% 100%;
.operations-title{
margin-right: 22px;
font-weight: bold;
font-size: 20px;
color: #0081FF;
padding: 24px 16px 0 16px;
span{
font-size: 16px;
}
}
.operations-info{
padding: 14px 16px 10px 16px;
justify-content: space-between;
font-size: 14px;
color: #416587;
span{
font-size: 12px;
img{
width: 10px;
height: 10px;
margin-right: 3px;
}
}
}
}
}
}
.swiper-button-prev, .swiper-button-next{
width: 16px;
height: 96px;
background: #F0F5FC;
top: 0;
margin-top: 0;
&.swiper-button-disabled{
opacity: 1;
color:#AAAAAA;
background: #F5F5F5;
}
i{
color: #AAAAAA;
}
&:hover i{
color:#667199;
}
&:after{
content: "";
}
}
}
.operations-list{
flex-wrap: wrap;
justify-content: space-between;
.list-item{
width: calc(20% - 12px);
height: 88px;
padding: 18px;
margin-top: 14px;
font-size: 14px;
color: #232323;
border: 1px solid #E2E7EE;
text-align: center;
.list-item-all{
justify-content: center;
img{
width: 24px;
height: 24px;
margin-right: 4px;
}
}
.list-item-amount{
padding-top: 6px;
font-weight: bold;
}
}
}
}
</style>
<template>
<div class="app-container part-container">
企业速览
</div>
</template>
<script>
export default {
name: 'Overview',
data() {
return {
}
},
created() {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.part-container{
margin: 0;
padding: 0;
}
</style>
<template>
<div class="app-container part-container">
企业速览
</div>
</template>
<script>
export default {
name: 'Overview',
data() {
return {
}
},
created() {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.part-container{
margin: 0;
padding: 0;
}
</style>
<template>
<div class="app-container part-container">
企业速览
</div>
</template>
<script>
export default {
name: 'Overview',
data() {
return {
}
},
created() {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.part-container{
margin: 0;
padding: 0;
}
</style>
<template>
<div class="app-container part-container">
企业速览
<div class="gsjy">
<Operations />
</div>
</div>
</template>
<script>
import Operations from "./component/operations";
export default {
name: 'Overview',
components: {
Operations
},
data() {
return {
}
},
created() {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.part-container{
margin: 0;
padding: 0;
.gsjy{
margin-top: 12px;
}
}
</style>
<template>
<div class="preference">
<div class="preference-item">
<div class="flex-box query-box">
<div class="flex-box query-params">
<span class="common-title">商务条件特点</span>
</div>
</div>
<div class="query-params">
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item>
<el-input v-model="queryParams.key"
type="textarea"
:autosize="{ minRows: 8, maxRows: 8}"
maxlength="500"
show-word-limit
placeholder="请输入商务条件特点">
</el-input>
</el-form-item>
</el-form>
</div>
</div>
<div class="preference-item">
<div class="flex-box query-box">
<div class="flex-box query-params">
<span class="common-title">决策链条</span>
</div>
</div>
<div class="query-params">
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item>
<el-input v-model="queryParams.key"
type="textarea"
:autosize="{ minRows: 8, maxRows: 8}"
maxlength="500"
show-word-limit
placeholder="请输入决策链条">
</el-input>
</el-form-item>
</el-form>
</div>
</div>
<div class="preference-item">
<div class="flex-box query-box">
<div class="flex-box query-params">
<span class="common-title">招投标流程特点</span>
</div>
</div>
<div class="query-params">
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item>
<el-input v-model="queryParams.key"
type="textarea"
:autosize="{ minRows: 8, maxRows: 8}"
maxlength="500"
show-word-limit
placeholder="请输入招投标流程特点">
</el-input>
</el-form-item>
</el-form>
</div>
</div>
<div class="preference-item">
<div class="flex-box query-box">
<div class="flex-box query-params">
<span class="common-title">履约阶段特点</span>
</div>
</div>
<div class="query-params">
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item>
<el-input v-model="queryParams.key"
type="textarea"
:autosize="{ minRows: 8, maxRows: 8}"
maxlength="500"
show-word-limit
placeholder="请输入履约阶段特点">
</el-input>
</el-form-item>
</el-form>
</div>
</div>
</div>
</template>
<script>
export default {
name: 'Preference',
components: {
},
data() {
return {
queryParams:{
}
}
},
created() {
},
computed: {
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.preference{
background: #ffffff;
border-radius: 4px;
padding: 16px;
.query-params{
margin-top:20px;
::v-deep .el-form-item{
width: 100%;
}
::v-deep .el-form-item__content{
width: 80%;
}
}
}
</style>
...@@ -19,6 +19,11 @@ ...@@ -19,6 +19,11 @@
<el-option label="cccc" value="11"></el-option> <el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option> <el-option label="cccc" value="121"></el-option>
</el-select> </el-select>
<el-select v-if="showtype == 'gjdt'" v-model="value" class="w128" placeholder="关联企业">
<i slot="prefix" class="el-input__icon"><img src="@/assets/images/project/ico_1.png"></i>
<el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option>
</el-select>
<el-input v-model="value" placeholder="拜访对象" style="width: 100px;"> <el-input v-model="value" placeholder="拜访对象" style="width: 100px;">
<i slot="prefix" class="el-input__icon"><img src="@/assets/images/project/ico_2.png"></i> <i slot="prefix" class="el-input__icon"><img src="@/assets/images/project/ico_2.png"></i>
</el-input> </el-input>
...@@ -96,13 +101,25 @@ ...@@ -96,13 +101,25 @@
<script> <script>
import "@/assets/styles/project.scss" import "@/assets/styles/project.scss"
export default { export default {
props:{
types: { //当前组件展示类型
type: String,
default: ""
},
datas:[],//数据源
},
name: 'gjjl', name: 'gjjl',
data(){ data(){
return{ return{
showtype:'',
isEdit:false, isEdit:false,
value:'' value:''
} }
}, },
created(){
this.showtype = this.types
console.log(this.types)
},
methods:{ methods:{
getEdit(){ getEdit(){
this.isEdit = true; this.isEdit = true;
......
...@@ -50,6 +50,17 @@ ...@@ -50,6 +50,17 @@
label="负责人" label="负责人"
width=""> width="">
</el-table-column> </el-table-column>
<el-table-column
prop="name"
label=""
align="right"
width="">
<template slot-scope="scope">
<div class="hoverbtn">
<div class="sc">删除</div>
</div>
</template>
</el-table-column>
</el-table> </el-table>
<div class="tables"> <div class="tables">
......
...@@ -8,8 +8,37 @@ ...@@ -8,8 +8,37 @@
<el-input type="text" placeholder="输入关键词查询"></el-input> <el-input type="text" placeholder="输入关键词查询"></el-input>
<div class="btn">搜索</div> <div class="btn">搜索</div>
</div> </div>
<div class="btn btn_primary h32 b1"><div class="img img1"></div>新建文件夹</div> <div class="btn btn_primary h32 b2" @click="isupload=true"><div class="img img2"></div>上传</div>
<div class="btn btn_default h32 b2"><div class="img img2"></div>上传</div> </div>
<div class="uploadbox" v-if="isupload">
<div>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="fileList">
<div class="wj wj1"></div>上传文件
</el-upload>
</div>
<div>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-remove="fileRemove"
:on-change="fileChang"
multiple
:limit="3"
:on-exceed="handleExceed"
ref="uploadFile"
:file-list="fileList">
<div class="wj wj2"></div>上传文件夹
</el-upload>
</div>
</div> </div>
<div class="document"> <div class="document">
<el-table <el-table
...@@ -49,6 +78,18 @@ ...@@ -49,6 +78,18 @@
sortable sortable
width=""> width="">
</el-table-column> </el-table-column>
<el-table-column
prop=""
label=""
align="right"
width="">
<template slot-scope="scope">
<div class="hoverbtn">
<div class="xz">下载</div>
<div class="sc">删除</div>
</div>
</template>
</el-table-column>
</el-table> </el-table>
<div class="tables"> <div class="tables">
<div class="bottems"> <div class="bottems">
...@@ -115,6 +156,7 @@ ...@@ -115,6 +156,7 @@
name: 'zlwd', name: 'zlwd',
data(){ data(){
return{ return{
isupload:false,
dialogVisible:false, dialogVisible:false,
textarea:"", textarea:"",
nowedit:-1,//当前正在编辑的文本 nowedit:-1,//当前正在编辑的文本
...@@ -138,10 +180,23 @@ ...@@ -138,10 +180,23 @@
name: '王小虎', name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄' address: '上海市普陀区金沙江路 1516 弄'
} }
] ],
fileList:[],//上传的文件
} }
}, },
mounted(){
this.$refs.uploadFile.$children[0].$refs.input.webkitdirectory = true;
},
methods:{ methods:{
//上传文件夹
fileChang(file, fileList, name) {
this.form.instFilePics = fileList;
},
fileRemove(file, fileList, name) {
this.form.instFilePics = fileList
},
//翻页 //翻页
handleCurrentChange(val) { handleCurrentChange(val) {
console.log(`当前页: ${val}`); console.log(`当前页: ${val}`);
...@@ -162,15 +217,56 @@ ...@@ -162,15 +217,56 @@
width: 102px; width: 102px;
} }
.img.img1{
margin-right: 4px;
background: url('../../../../../src/assets/images/project/add_2.png')no-repeat center center;
}
.img.img2{ .img.img2{
margin-right: 4px; margin-right: 4px;
background: url('../../../../../src/assets/images/upload.png')no-repeat center center; transform: rotateX(180deg);
background: url('../../../../../src/assets/images/import.png')no-repeat center center;
} }
.box-card{ .box-card{
position: relative; position: relative;
} }
.uploadbox{
position: absolute;
width: 124px;
height: 73px;
background: #FFFFFF;
box-shadow: 0px 0px 4px 0px rgba(0,0,0,0.08);
border-radius: 2px;
border: 1px solid #F0F0F0;
right: 16px;
top: 53px;
z-index: 2;
>div{
line-height: 35px;
height: 36px;
color: rgba(35, 35, 35, 0.80);
font-size: 14px;
.wj{
float: left;
margin: 10px 4px 10px 16px;
width: 16px;
height: 16px;
&.wj1{
background: url("../../../../assets/images/project/wj_1.png") top center;
background-size: 100%;
}
&.wj2{
background: url("../../../../assets/images/project/wj_3.png") top center;
background-size: 100%;
}
}
&:hover{
color: #0081FF;
background: #F4F6F9;
.wj1{
background: url("../../../../assets/images/project/wj_2.png") top center;
background-size: 100%;
}
.wj2{
background: url("../../../../assets/images/project/wj_4.png") top center;
background-size: 100%;
}
}
}
}
</style> </style>
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<div class="contets"> <div class="contets">
<div class="det-con"> <div class="det-con">
<span>项目类型:</span> <span>项目类型:</span>
<span>轨道交通</span> <span><el-select><option label="aaa" value="888"></option></el-select></span>
</div> </div>
<div class="det-con"> <div class="det-con">
<span>项目类别:</span> <span>项目类别:</span>
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
<!--联系人--> <!--联系人-->
<lxr v-if="thistag == 'lxr'"></lxr> <lxr v-if="thistag == 'lxr'"></lxr>
<!--跟进记录--> <!--跟进记录-->
<gjjl v-if="thistag == 'gjjl'"></gjjl> <gjjl v-if="thistag == 'gjjl'" types="gjjl"></gjjl>
<!--工作待办--> <!--工作待办-->
<gzdb v-if="thistag == 'gzdb'"></gzdb> <gzdb v-if="thistag == 'gzdb'"></gzdb>
<!--资料文档--> <!--资料文档-->
...@@ -132,9 +132,6 @@ ...@@ -132,9 +132,6 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.app-container{
padding: 0;
}
.head{ .head{
.titles{ .titles{
line-height: 31px; line-height: 31px;
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
<div class="app-container"> <div class="app-container">
<el-card class="box-card noborder"> <el-card class="box-card noborder">
<div class="btns"> <div class="btns">
<div class="btn btn_default h28"><div class="img img1"></div>新建项目商机</div> <div class="btn btn_default h28" @click="showNew"><div class="img img1"></div>新建项目商机</div>
<div class="btn btn_primary h28"><div class="img img2"></div>批量导</div> <div class="btn btn_primary h28"><div class="img img2"></div>批量导</div>
</div> </div>
<el-tabs v-model="activeName" @tab-click="handleClick" class="tabpane w100"> <el-tabs v-model="activeName" @tab-click="handleClick" class="tabpane w100">
<el-tab-pane label="我参与的项目" name="first"></el-tab-pane> <el-tab-pane label="我参与的项目" name="first"></el-tab-pane>
...@@ -82,6 +82,63 @@ ...@@ -82,6 +82,63 @@
</div> </div>
</div> </div>
</div> </div>
<el-dialog
class="popups"
:visible.sync="dialogVisible"
width="464px">
<div class="poptitle">
<img src="@/assets/images/economies/icon.png">
<span>新建商机</span>
</div>
<div class="popform i">
<div class="row">
<span class="left"><i>*</i>项目名称:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="row">
<span class="left"><i>*</i>业主单位:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="row">
<span class="left">项目阶段:</span>
<el-select placeholder="请选择">
<el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option>
</el-select>
</div>
<div class="row">
<span class="left">项目类型:</span>
<el-select placeholder="请选择">
<el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option>
</el-select>
</div>
<div class="row">
<span class="left">项目类别:</span>
<el-select placeholder="请选择">
<el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option>
</el-select>
</div>
<div class="row">
<span class="left">投资估算:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="row">
<span class="left">可见范围:</span>
<el-select placeholder="请选择">
<el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option>
</el-select>
</div>
<div class="popbot">
<div class="wordprimary">前往商机雷达寻找项目线索></div>
<div class="btn btn_cancel h32" @click="cancel">取消</div>
<div class="btn btn_primary h32">新建商机</div>
</div>
</div>
</el-dialog>
</el-card> </el-card>
</div> </div>
</template> </template>
...@@ -292,13 +349,21 @@ export default { ...@@ -292,13 +349,21 @@ export default {
value: 'jiaohu', value: 'jiaohu',
label: '组件交互文档' label: '组件交互文档'
}] }]
}] }],
dialogVisible:false,
} }
}, },
created() { created() {
}, },
methods: { methods: {
//新建项目
showNew(){
this.dialogVisible = true
},
cancel(){
this.dialogVisible = false
},
toDetail(){ toDetail(){
let Id = '111' let Id = '111'
this.$router.push({ path: '/project/projectList/detail', query: Id }); this.$router.push({ path: '/project/projectList/detail', query: Id });
...@@ -331,10 +396,6 @@ export default { ...@@ -331,10 +396,6 @@ export default {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.app-container{
padding: 0;
}
.noborder{ .noborder{
position: relative; position: relative;
} }
...@@ -484,21 +545,6 @@ export default { ...@@ -484,21 +545,6 @@ export default {
} }
.det-tips{ .det-tips{
padding: 8px 0 ; padding: 8px 0 ;
.tips{
display: inline-block;
padding: 4px 8px;
border-radius: 2px;
font-size: 12px;
margin-right: 8px;
&.tip1{
background-color: #E4F3FD;
color: #41A1FD;
}
&.tip2{
background-color: #F3F3FF;
color: #8491E8;
}
}
} }
.det-contets{ .det-contets{
padding: 4px 0 16px; padding: 4px 0 16px;
...@@ -536,4 +582,15 @@ export default { ...@@ -536,4 +582,15 @@ export default {
height: 20px; height: 20px;
} }
} }
.popbot{
.wordprimary{
padding-right: 26px;
float: left;
margin-top: 6px;
}
.btn_primary{
padding: 0;
}
}
</style> </style>
This diff is collapsed.
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
</template> </template>
<script> <script>
import debtProject from "./components/debtProject/index.vue"; import debtProject from "./components/debtProject/index.vue";
import "@/assets/styles/public.css";
export default { export default {
name: 'radar', name: 'radar',
components: { debtProject }, components: { debtProject },
...@@ -87,7 +88,7 @@ ...@@ -87,7 +88,7 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import "~@/assets/styles/public.scss";
.app-container { .app-container {
margin: 12px 24px; margin: 12px 24px;
padding: 0; padding: 0;
...@@ -116,7 +117,7 @@ ...@@ -116,7 +117,7 @@
.app-container .combined-title .title-right { .app-container .combined-title .title-right {
display: flex; display: flex;
width: 1044px; width: 100%;
position: relative; position: relative;
height: 40px; height: 40px;
} }
...@@ -150,7 +151,7 @@ ...@@ -150,7 +151,7 @@
height: 1px; height: 1px;
background-color: #EEEEEE; background-color: #EEEEEE;
position: absolute; position: absolute;
bottom: 0px; bottom: -1px;
left: 0; left: 0;
z-index: 1; z-index: 1;
} }
...@@ -168,7 +169,7 @@ ...@@ -168,7 +169,7 @@
.tab div { .tab div {
cursor: pointer; cursor: pointer;
color: #666666; color: #666666;
font-size: 14px; font-size: 16px;
text-align: center; text-align: center;
margin-right: 32px; margin-right: 32px;
line-height: 40px; line-height: 40px;
......
...@@ -38,7 +38,7 @@ public class CustomerUser implements Serializable { ...@@ -38,7 +38,7 @@ public class CustomerUser implements Serializable {
* 创建时间 * 创建时间
*/ */
@TableField(fill = FieldFill.INSERT) @TableField(fill = FieldFill.INSERT)
private Date careteTime; private Date createTime;
/** /**
* 修改时间 * 修改时间
*/ */
......
...@@ -94,7 +94,7 @@ public class BusinessBrowseVo { ...@@ -94,7 +94,7 @@ public class BusinessBrowseVo {
private Integer backlogCount; private Integer backlogCount;
/** /**
* 相关企业统计 * 资料文档统计
*/ */
private Integer relateCompanyCount; private Integer relateCompanyCount;
......
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