Commit 1db9440a authored by danfuman's avatar danfuman

Merge branch 'dev20230707'

parents 34146c04 3eabf10c
...@@ -4,6 +4,7 @@ import com.dsk.common.core.controller.BaseController; ...@@ -4,6 +4,7 @@ import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.system.domain.business.BusinessBacklog; import com.dsk.system.domain.business.BusinessBacklog;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.domain.business.dto.BusinessBacklogListDto;
import com.dsk.system.service.IBusinessBacklogService; import com.dsk.system.service.IBusinessBacklogService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -31,10 +32,10 @@ public class BusinessBacklogController extends BaseController ...@@ -31,10 +32,10 @@ public class BusinessBacklogController extends BaseController
*/ */
// @PreAuthorize("@ss.hasPermi('system:backlog:list')") // @PreAuthorize("@ss.hasPermi('system:backlog:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(BusinessBacklog businessBacklog) public TableDataInfo list(BusinessBacklogListDto dto)
{ {
startPage(); startPage();
return getDataTable(businessBacklogService.selectBusinessBacklogList(businessBacklog)); return getDataTable(businessBacklogService.selectBusinessBacklogList(dto));
} }
/** /**
......
package com.dsk.web.controller.business; package com.dsk.web.controller.business;
import com.dsk.common.config.RuoYiConfig; import com.dsk.common.config.ShuZhiHuaConfig;
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.BusinessFileVo; import com.dsk.common.core.domain.entity.BusinessFileVo;
...@@ -62,7 +62,7 @@ public class BusinessFileController extends BaseController { ...@@ -62,7 +62,7 @@ public class BusinessFileController extends BaseController {
public TableDataInfo getAllFiles(BusinessIdDto filePath) { public TableDataInfo getAllFiles(BusinessIdDto filePath) {
startPage(); startPage();
List<BusinessFileVo> allFiles; List<BusinessFileVo> allFiles;
if(StringUtils.isNumeric(filePath.getFilePath())) filePath.setFilePath(RuoYiConfig.getProfile() + filePath.getFilePath()); if(StringUtils.isNumeric(filePath.getFilePath())) filePath.setFilePath(ShuZhiHuaConfig.getProfile() + filePath.getFilePath());
allFiles = FileUtils.getAllFiles(filePath.getFilePath()); allFiles = FileUtils.getAllFiles(filePath.getFilePath());
//模糊查询文件 //模糊查询文件
if(StringUtils.isNotEmpty(filePath.getKeyword())){ if(StringUtils.isNotEmpty(filePath.getKeyword())){
...@@ -87,7 +87,7 @@ public class BusinessFileController extends BaseController { ...@@ -87,7 +87,7 @@ public class BusinessFileController extends BaseController {
String filename = file.getOriginalFilename(); String filename = file.getOriginalFilename();
String businessFileName = request.getHeader("FilePath"); String businessFileName = request.getHeader("FilePath");
// 上传文件路径 // 上传文件路径
String filePath = RuoYiConfig.getUploadPath() + businessFileName + "/"; String filePath = ShuZhiHuaConfig.getUploadPath() + businessFileName + "/";
//校验是否上传同名文件 //校验是否上传同名文件
File newFile = new File(filePath); File newFile = new File(filePath);
......
...@@ -52,8 +52,7 @@ public class BusinessInfoController extends BaseController ...@@ -52,8 +52,7 @@ public class BusinessInfoController extends BaseController
public TableDataInfo list(BusinessListDto dto) public TableDataInfo list(BusinessListDto dto)
{ {
startPage(); startPage();
List<BusinessListVo> list = businessInfoService.selectBusinessInfoList(dto); return getDataTable(businessInfoService.selectBusinessInfoList(dto));
return getDataTable(list);
} }
/** /**
......
...@@ -12,7 +12,7 @@ import org.springframework.util.FastByteArrayOutputStream; ...@@ -12,7 +12,7 @@ import org.springframework.util.FastByteArrayOutputStream;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.google.code.kaptcha.Producer; import com.google.code.kaptcha.Producer;
import com.dsk.common.config.RuoYiConfig; import com.dsk.common.config.ShuZhiHuaConfig;
import com.dsk.common.constant.CacheConstants; import com.dsk.common.constant.CacheConstants;
import com.dsk.common.constant.Constants; import com.dsk.common.constant.Constants;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
...@@ -62,7 +62,7 @@ public class CaptchaController ...@@ -62,7 +62,7 @@ public class CaptchaController
BufferedImage image = null; BufferedImage image = null;
// 生成验证码 // 生成验证码
String captchaType = RuoYiConfig.getCaptchaType(); String captchaType = ShuZhiHuaConfig.getCaptchaType();
if ("math".equals(captchaType)) if ("math".equals(captchaType))
{ {
String capText = captchaProducerMath.createText(); String capText = captchaProducerMath.createText();
......
...@@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.PostMapping; ...@@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import com.dsk.common.config.RuoYiConfig; import com.dsk.common.config.ShuZhiHuaConfig;
import com.dsk.common.constant.Constants; import com.dsk.common.constant.Constants;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.utils.StringUtils; import com.dsk.common.utils.StringUtils;
...@@ -53,7 +53,7 @@ public class CommonController ...@@ -53,7 +53,7 @@ public class CommonController
throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName)); throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName));
} }
String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1); String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
String filePath = RuoYiConfig.getDownloadPath() + fileName; String filePath = ShuZhiHuaConfig.getDownloadPath() + fileName;
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
FileUtils.setAttachmentResponseHeader(response, realFileName); FileUtils.setAttachmentResponseHeader(response, realFileName);
...@@ -78,7 +78,7 @@ public class CommonController ...@@ -78,7 +78,7 @@ public class CommonController
try try
{ {
// 上传文件路径 // 上传文件路径
String filePath = RuoYiConfig.getUploadPath(); String filePath = ShuZhiHuaConfig.getUploadPath();
// 上传并返回新文件名称 // 上传并返回新文件名称
String fileName = FileUploadUtils.upload(filePath, file); String fileName = FileUploadUtils.upload(filePath, file);
String url = serverConfig.getUrl() + fileName; String url = serverConfig.getUrl() + fileName;
...@@ -104,7 +104,7 @@ public class CommonController ...@@ -104,7 +104,7 @@ public class CommonController
try try
{ {
// 上传文件路径 // 上传文件路径
String filePath = RuoYiConfig.getUploadPath(); String filePath = ShuZhiHuaConfig.getUploadPath();
List<String> urls = new ArrayList<String>(); List<String> urls = new ArrayList<String>();
List<String> fileNames = new ArrayList<String>(); List<String> fileNames = new ArrayList<String>();
List<String> newFileNames = new ArrayList<String>(); List<String> newFileNames = new ArrayList<String>();
...@@ -146,7 +146,7 @@ public class CommonController ...@@ -146,7 +146,7 @@ public class CommonController
throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource)); throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource));
} }
// 本地资源路径 // 本地资源路径
String localPath = RuoYiConfig.getProfile(); String localPath = ShuZhiHuaConfig.getProfile();
// 数据库资源地址 // 数据库资源地址
String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX); String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);
// 下载名称 // 下载名称
......
...@@ -28,7 +28,7 @@ public class ContactInfoController extends BaseController { ...@@ -28,7 +28,7 @@ public class ContactInfoController extends BaseController {
/** /**
* 联系人列表 * 联系人列表
*/ */
// @PreAuthorize("@ss.hasPermi('contact:list')") // @PreAuthorize("@ss.hasPermi('contact:info:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo selectPageList(ContactInfoSearchDto dto){ public TableDataInfo selectPageList(ContactInfoSearchDto dto){
startPage(); startPage();
...@@ -47,7 +47,7 @@ public class ContactInfoController extends BaseController { ...@@ -47,7 +47,7 @@ public class ContactInfoController extends BaseController {
/** /**
* 添加用户联系人 * 添加用户联系人
*/ */
// @PreAuthorize("@ss.hasPermi('contact:add')") // @PreAuthorize("@ss.hasPermi('contact:info:add')")
@PostMapping() @PostMapping()
@RepeatSubmit() @RepeatSubmit()
public AjaxResult add(@RequestBody ContactInfo baen){ public AjaxResult add(@RequestBody ContactInfo baen){
...@@ -57,7 +57,7 @@ public class ContactInfoController extends BaseController { ...@@ -57,7 +57,7 @@ public class ContactInfoController extends BaseController {
/** /**
* 编辑用户联系人 * 编辑用户联系人
*/ */
// @PreAuthorize("@ss.hasPermi('contact:edit')") // @PreAuthorize("@ss.hasPermi('contact:info:edit')")
@PutMapping() @PutMapping()
@RepeatSubmit() @RepeatSubmit()
public AjaxResult edit(@RequestBody ContactInfo baen){ public AjaxResult edit(@RequestBody ContactInfo baen){
...@@ -67,7 +67,7 @@ public class ContactInfoController extends BaseController { ...@@ -67,7 +67,7 @@ public class ContactInfoController extends BaseController {
/** /**
* 删除用户联系人 * 删除用户联系人
*/ */
// @PreAuthorize("@ss.hasPermi('contact:del')") // @PreAuthorize("@ss.hasPermi('contact:info:del')")
@DeleteMapping("/{id}") @DeleteMapping("/{id}")
@RepeatSubmit() @RepeatSubmit()
public AjaxResult del(@PathVariable("id") Long id){ public AjaxResult del(@PathVariable("id") Long id){
......
package com.dsk.web.controller.customer; package com.dsk.web.controller.customer;
import cn.hutool.core.bean.BeanException; import cn.hutool.core.bean.BeanException;
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.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;
...@@ -14,7 +11,6 @@ import com.dsk.common.utils.poi.ExcelUtil; ...@@ -14,7 +11,6 @@ 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.searchService.BusinessOpportunityRadarService;
import com.dsk.system.service.ICustomerService; import com.dsk.system.service.ICustomerService;
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;
...@@ -39,8 +35,6 @@ public class CustomerController extends BaseController { ...@@ -39,8 +35,6 @@ public class CustomerController extends BaseController {
@Autowired @Autowired
private ICustomerService baseService; private ICustomerService baseService;
// @Autowired
// private BusinessOpportunityRadarService opportunityRadarService;
/** /**
* 查询客户列表 * 查询客户列表
...@@ -128,21 +122,6 @@ public class CustomerController extends BaseController { ...@@ -128,21 +122,6 @@ public class CustomerController extends BaseController {
continue; continue;
} }
try { 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"));
// }
baseService.add(customer); baseService.add(customer);
successCount++; successCount++;
} catch (Exception e) { } catch (Exception e) {
......
...@@ -28,6 +28,13 @@ public class EnterpriseBussinessController { ...@@ -28,6 +28,13 @@ public class EnterpriseBussinessController {
@Autowired @Autowired
EnterpriseBussinessService enterpriseBussinessService; EnterpriseBussinessService enterpriseBussinessService;
@ApiOperation(value = "客户-下拉选项(openApi)")
@RequestMapping(value = "/customSelect", method = RequestMethod.GET)
public R customSelect() throws Exception {
return enterpriseBussinessService.customSelect();
}
@ApiOperation(value = "客户信息列表(openApi)") @ApiOperation(value = "客户信息列表(openApi)")
@RequestMapping(value = "/clientPage", method = RequestMethod.POST) @RequestMapping(value = "/clientPage", method = RequestMethod.POST)
public TableDataInfo clientPage(@RequestBody @Valid EnterpriseBussinessClientPageBody paramMap) throws Exception { public TableDataInfo clientPage(@RequestBody @Valid EnterpriseBussinessClientPageBody paramMap) throws Exception {
......
...@@ -72,17 +72,53 @@ public class MarketAnalysisController extends BaseController { ...@@ -72,17 +72,53 @@ public class MarketAnalysisController extends BaseController {
return marketAnalysisService.bidMoneyGroupByProjectType(object); return marketAnalysisService.bidMoneyGroupByProjectType(object);
} }
/*
* 全国各地区中标统计TOP10
*/
@RequestMapping("/countBidGroupByProvince")
public AjaxResult countBidGroupByProvince(@RequestBody JSONObject object) {
return marketAnalysisService.countBidGroupByProvince(object);
}
//央企数字化经营系统 土地交易
@RequestMapping("/countLandMarketByType")
public AjaxResult countLandMarketByType(@RequestBody JSONObject object){
return marketAnalysisService.countLandMarketByType(object);
}
//央企数字化经营系统 全国土地交易项目地区
@RequestMapping("/countLandMarketByProvince")
public AjaxResult countLandMarketByProvince(@RequestBody JSONObject object){
return marketAnalysisService.countLandMarketByProvince(object);
}
//央企数字化经营系统 全国土地交易项目地区
@RequestMapping("/countLandMarketByYear")
public AjaxResult countLandMarketByYear(){
return marketAnalysisService.countLandMarketByYear();
}
//央企数字化经营系统 全国公招项目统计
@RequestMapping("/countNewsBidByYear")
public AjaxResult countNewsBidByYear(){
return marketAnalysisService.countNewsBidByYear();
}
//央企数字化经营系统 招标公告 全国各地区项目统计TOP10
@RequestMapping("/countNewsBidByProvince")
public AjaxResult countNewsBidByProvince(@RequestBody JSONObject object){
return marketAnalysisService.countNewsBidByProvince(object);
}
//央企数字化经营系统 招标公告 月度统计
@RequestMapping("/countNewsBidByMonth")
public AjaxResult countNewsBidByMonth(@RequestBody JSONObject object){
return marketAnalysisService.countNewsBidByMonth(object);
}
/* /*
* 标数量按省份分组 * 标数量按省份分组
*/ */
@RequestMapping("/countGroupByProvince") @RequestMapping("/countGroupByProvince")
public AjaxResult countGroupByProvince(@RequestBody JSONObject object) { public AjaxResult countGroupByProvince(@RequestBody 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.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);
// }
//}
...@@ -3,7 +3,7 @@ package com.dsk.web.controller.system; ...@@ -3,7 +3,7 @@ package com.dsk.web.controller.system;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.dsk.common.config.RuoYiConfig; import com.dsk.common.config.ShuZhiHuaConfig;
import com.dsk.common.utils.StringUtils; import com.dsk.common.utils.StringUtils;
/** /**
...@@ -16,7 +16,7 @@ public class SysIndexController ...@@ -16,7 +16,7 @@ public class SysIndexController
{ {
/** 系统基础配置 */ /** 系统基础配置 */
@Autowired @Autowired
private RuoYiConfig ruoyiConfig; private ShuZhiHuaConfig shuZhiHuaConfig;
/** /**
* 访问首页,提示语 * 访问首页,提示语
...@@ -24,6 +24,6 @@ public class SysIndexController ...@@ -24,6 +24,6 @@ public class SysIndexController
@RequestMapping("/") @RequestMapping("/")
public String index() public String index()
{ {
return StringUtils.format("欢迎使用{}后台管理框架,当前版本:v{},请通过前端地址访问。", ruoyiConfig.getName(), ruoyiConfig.getVersion()); return StringUtils.format("欢迎使用{}后台管理框架,当前版本:v{},请通过前端地址访问。", shuZhiHuaConfig.getName(), shuZhiHuaConfig.getVersion());
} }
} }
...@@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import com.dsk.common.annotation.Log; import com.dsk.common.annotation.Log;
import com.dsk.common.config.RuoYiConfig; import com.dsk.common.config.ShuZhiHuaConfig;
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.SysUser; import com.dsk.common.core.domain.entity.SysUser;
...@@ -125,7 +125,7 @@ public class SysProfileController extends BaseController ...@@ -125,7 +125,7 @@ public class SysProfileController extends BaseController
if (!file.isEmpty()) if (!file.isEmpty())
{ {
LoginUser loginUser = getLoginUser(); LoginUser loginUser = getLoginUser();
String avatar = FileUploadUtils.upload(RuoYiConfig.getAvatarPath(), file, MimeTypeUtils.IMAGE_EXTENSION); String avatar = FileUploadUtils.upload(ShuZhiHuaConfig.getAvatarPath(), file, MimeTypeUtils.IMAGE_EXTENSION);
if (userService.updateUserAvatar(loginUser.getUsername(), avatar)) if (userService.updateUserAvatar(loginUser.getUsername(), avatar))
{ {
AjaxResult ajax = AjaxResult.success(); AjaxResult ajax = AjaxResult.success();
......
...@@ -6,7 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -6,7 +6,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import com.dsk.common.config.RuoYiConfig; import com.dsk.common.config.ShuZhiHuaConfig;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.models.auth.In; import io.swagger.models.auth.In;
import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.ApiInfoBuilder;
...@@ -32,7 +32,7 @@ public class SwaggerConfig ...@@ -32,7 +32,7 @@ public class SwaggerConfig
{ {
/** 系统基础配置 */ /** 系统基础配置 */
@Autowired @Autowired
private RuoYiConfig ruoyiConfig; private ShuZhiHuaConfig shuZhiHuaConfig;
/** 是否开启swagger */ /** 是否开启swagger */
@Value("${swagger.enabled}") @Value("${swagger.enabled}")
...@@ -58,7 +58,7 @@ public class SwaggerConfig ...@@ -58,7 +58,7 @@ public class SwaggerConfig
// 扫描所有有注解的api,用这种方式更灵活 // 扫描所有有注解的api,用这种方式更灵活
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
// 扫描指定包中的swagger注解 // 扫描指定包中的swagger注解
// .apis(RequestHandlerSelectors.basePackage("com.ruoyi.project.tool.swagger")) // .apis(RequestHandlerSelectors.basePackage("com.dsk.project.tool.swagger"))
// 扫描所有 .apis(RequestHandlerSelectors.any()) // 扫描所有 .apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any()) .paths(PathSelectors.any())
.build() .build()
...@@ -117,9 +117,9 @@ public class SwaggerConfig ...@@ -117,9 +117,9 @@ public class SwaggerConfig
// 描述 // 描述
.description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...") .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...")
// 作者信息 // 作者信息
.contact(new Contact(ruoyiConfig.getName(), null, null)) .contact(new Contact(shuZhiHuaConfig.getName(), null, null))
// 版本 // 版本
.version("版本号:" + ruoyiConfig.getVersion()) .version("版本号:" + shuZhiHuaConfig.getVersion())
.build(); .build();
} }
} }
# 项目相关配置 # 项目相关配置
ruoyi: shuzhihua:
# 名称 # 名称
name: RuoYi name: ShuZhiHua
# 版本 # 版本
version: 3.8.5 version: 3.8.5
# 版权年份 # 版权年份
copyrightYear: 2023 copyrightYear: 2023
# 实例演示开关 # 实例演示开关
demoEnabled: true demoEnabled: true
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/server/dsk-operate-sys/uploadPath) # 文件路径 示例( Windows配置D:/dsk/uploadPath,Linux配置 /home/server/dsk-operate-sys/uploadPath)
# profile: D:/dsk-operate-sys/uploadPath/ # profile: D:/dsk-operate-sys/uploadPath/
profile: /home/server/dsk-operate-sys/uploadPath/ profile: /home/server/dsk-operate-sys/uploadPath/
# 获取ip地址开关 # 获取ip地址开关
...@@ -37,7 +37,7 @@ server: ...@@ -37,7 +37,7 @@ server:
# 日志配置 # 日志配置
logging: logging:
level: level:
com.ruoyi: debug com.dsk: debug
org.springframework: warn org.springframework: warn
# 用户配置 # 用户配置
...@@ -97,7 +97,7 @@ spring: ...@@ -97,7 +97,7 @@ spring:
allow: allow:
url-pattern: /druid/* url-pattern: /druid/*
# 控制台管理用户名和密码 # 控制台管理用户名和密码
login-username: ruoyi login-username: dskadmin
login-password: 123456 login-password: 123456
filter: filter:
stat: stat:
......
# 项目相关配置 # 项目相关配置
ruoyi: shuzhihua:
# 名称 # 名称
name: RuoYi name: ShuZhiHua
# 版本 # 版本
version: 3.8.5 version: 3.8.5
# 版权年份 # 版权年份
copyrightYear: 2023 copyrightYear: 2023
# 实例演示开关 # 实例演示开关
demoEnabled: true demoEnabled: true
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/server/dsk-operate-sys/uploadPath) # 文件路径 示例( Windows配置D:/dsk/uploadPath,Linux配置 /home/server/dsk-operate-sys/uploadPath)
# profile: D:/dsk-operate-sys/uploadPath/ # profile: D:/dsk-operate-sys/uploadPath/
profile: /home/server/dsk-operate-sys/uploadPath/ profile: /home/server/dsk-operate-sys/uploadPath/
# 获取ip地址开关 # 获取ip地址开关
...@@ -37,7 +37,7 @@ server: ...@@ -37,7 +37,7 @@ server:
# 日志配置 # 日志配置
logging: logging:
level: level:
com.ruoyi: debug com.dsk: info
org.springframework: warn org.springframework: warn
# 用户配置 # 用户配置
...@@ -97,7 +97,7 @@ spring: ...@@ -97,7 +97,7 @@ spring:
allow: allow:
url-pattern: /druid/* url-pattern: /druid/*
# 控制台管理用户名和密码 # 控制台管理用户名和密码
login-username: ruoyi login-username: dskadmin
login-password: 123456 login-password: 123456
filter: filter:
stat: stat:
......
# 项目相关配置 # 项目相关配置
ruoyi: shuzhihua:
# 名称 # 名称
name: RuoYi name: ShuZhiHua
# 版本 # 版本
version: 3.8.5 version: 3.8.5
# 版权年份 # 版权年份
copyrightYear: 2023 copyrightYear: 2023
# 实例演示开关 # 实例演示开关
demoEnabled: true demoEnabled: true
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/server/dsk-operate-sys/uploadPath) # 文件路径 示例( Windows配置D:/dsk/uploadPath,Linux配置 /home/server/dsk-operate-sys/uploadPath)
# profile: D:/dsk-operate-sys/uploadPath/ # profile: D:/dsk-operate-sys/uploadPath/
profile: /home/server/dsk-operate-sys/uploadPath/ profile: /home/server/dsk-operate-sys/uploadPath/
# 获取ip地址开关 # 获取ip地址开关
...@@ -37,7 +37,7 @@ server: ...@@ -37,7 +37,7 @@ server:
# 日志配置 # 日志配置
logging: logging:
level: level:
com.ruoyi: debug com.dsk: debug
org.springframework: warn org.springframework: warn
# 用户配置 # 用户配置
...@@ -97,7 +97,7 @@ spring: ...@@ -97,7 +97,7 @@ spring:
allow: allow:
url-pattern: /druid/* url-pattern: /druid/*
# 控制台管理用户名和密码 # 控制台管理用户名和密码
login-username: ruoyi login-username: dskadmin
login-password: 123456 login-password: 123456
filter: filter:
stat: stat:
......
Application Version: ${ruoyi.version} Application Version: ${shuzhihua.version}
Spring Boot Version: ${spring-boot.version} Spring Boot Version: ${spring-boot.version}
...@@ -9,8 +9,8 @@ import org.springframework.stereotype.Component; ...@@ -9,8 +9,8 @@ import org.springframework.stereotype.Component;
* @author dsk * @author dsk
*/ */
@Component @Component
@ConfigurationProperties(prefix = "ruoyi") @ConfigurationProperties(prefix = "shuzhihua")
public class RuoYiConfig public class ShuZhiHuaConfig
{ {
/** 项目名称 */ /** 项目名称 */
private String name; private String name;
...@@ -80,7 +80,7 @@ public class RuoYiConfig ...@@ -80,7 +80,7 @@ public class RuoYiConfig
public void setProfile(String profile) public void setProfile(String profile)
{ {
RuoYiConfig.profile = profile; ShuZhiHuaConfig.profile = profile;
} }
public static boolean isAddressEnabled() public static boolean isAddressEnabled()
...@@ -90,7 +90,7 @@ public class RuoYiConfig ...@@ -90,7 +90,7 @@ public class RuoYiConfig
public void setAddressEnabled(boolean addressEnabled) public void setAddressEnabled(boolean addressEnabled)
{ {
RuoYiConfig.addressEnabled = addressEnabled; ShuZhiHuaConfig.addressEnabled = addressEnabled;
} }
public static String getCaptchaType() { public static String getCaptchaType() {
...@@ -98,7 +98,7 @@ public class RuoYiConfig ...@@ -98,7 +98,7 @@ public class RuoYiConfig
} }
public void setCaptchaType(String captchaType) { public void setCaptchaType(String captchaType) {
RuoYiConfig.captchaType = captchaType; ShuZhiHuaConfig.captchaType = captchaType;
} }
/** /**
......
...@@ -58,5 +58,11 @@ public class CacheConstants ...@@ -58,5 +58,11 @@ public class CacheConstants
public static final String DATA_FINANCIAL = "data:financial"; public static final String DATA_FINANCIAL = "data:financial";
/**
* 全国经济大全-默认
*/
public static final String DATA_ECONOMIC = "data:economic";
} }
...@@ -132,11 +132,11 @@ public class Constants ...@@ -132,11 +132,11 @@ public class Constants
/** /**
* 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加) * 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加)
*/ */
public static final String[] JOB_WHITELIST_STR = { "com.ruoyi" }; public static final String[] JOB_WHITELIST_STR = { "com.dsk" };
/** /**
* 定时任务违规的字符 * 定时任务违规的字符
*/ */
public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml", public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
"org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.common.config" }; "org.springframework", "org.apache", "com.dsk.common.utils.file", "com.dsk.common.config" };
} }
package com.dsk.common.dtos;
import lombok.Data;
import java.util.Objects;
/**
* @ClassName UrbanInvestmentPlatformSubjectLevelDto
* @Description 信用评级
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class UrbanInvestmentPlatformSubjectLevelDto {
/**
* 企业Id
*/
private Long companyId;
/**
* 主体评级
*/
private String bratingSubjectLevel;
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
UrbanInvestmentPlatformSubjectLevelDto that = (UrbanInvestmentPlatformSubjectLevelDto) o;
return Objects.equals(companyId, that.companyId);
}
@Override
public int hashCode() {
return Objects.hash(companyId);
}
}
...@@ -612,4 +612,9 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils ...@@ -612,4 +612,9 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
} }
return sb.toString(); return sb.toString();
} }
//字符串标红
public static String markInRed(String oldStr, String str) {
return oldStr.replace(str, "<font color='#FF204E'>" + str + "</font>");
}
} }
...@@ -13,7 +13,7 @@ public class FileTypeUtils ...@@ -13,7 +13,7 @@ public class FileTypeUtils
/** /**
* 获取文件类型 * 获取文件类型
* <p> * <p>
* 例如: ruoyi.txt, 返回: txt * 例如: dsk.txt, 返回: txt
* *
* @param file 文件名 * @param file 文件名
* @return 后缀(不含".") * @return 后缀(不含".")
...@@ -30,7 +30,7 @@ public class FileTypeUtils ...@@ -30,7 +30,7 @@ public class FileTypeUtils
/** /**
* 获取文件类型 * 获取文件类型
* <p> * <p>
* 例如: ruoyi.txt, 返回: txt * 例如: dsk.txt, 返回: txt
* *
* @param fileName 文件名 * @param fileName 文件名
* @return 后缀(不含".") * @return 后缀(不含".")
......
package com.dsk.common.utils.file; package com.dsk.common.utils.file;
import com.dsk.common.config.RuoYiConfig; import com.dsk.common.config.ShuZhiHuaConfig;
import com.dsk.common.constant.Constants; import com.dsk.common.constant.Constants;
import com.dsk.common.exception.file.FileNameLengthLimitExceededException; import com.dsk.common.exception.file.FileNameLengthLimitExceededException;
import com.dsk.common.exception.file.FileSizeLimitExceededException; import com.dsk.common.exception.file.FileSizeLimitExceededException;
...@@ -36,7 +36,7 @@ public class FileUploadUtils ...@@ -36,7 +36,7 @@ public class FileUploadUtils
/** /**
* 默认上传的地址 * 默认上传的地址
*/ */
private static String defaultBaseDir = RuoYiConfig.getProfile(); private static String defaultBaseDir = ShuZhiHuaConfig.getProfile();
public static void setDefaultBaseDir(String defaultBaseDir) public static void setDefaultBaseDir(String defaultBaseDir)
{ {
...@@ -145,7 +145,7 @@ public class FileUploadUtils ...@@ -145,7 +145,7 @@ public class FileUploadUtils
public static final String getPathFileName(String uploadDir, String fileName) throws IOException public static final String getPathFileName(String uploadDir, String fileName) throws IOException
{ {
int dirLastIndex = RuoYiConfig.getProfile().length() + 1; int dirLastIndex = ShuZhiHuaConfig.getProfile().length() + 1;
String currentDir = StringUtils.substring(uploadDir, dirLastIndex); String currentDir = StringUtils.substring(uploadDir, dirLastIndex);
return Constants.RESOURCE_PREFIX + "/" + currentDir + "/" + fileName; return Constants.RESOURCE_PREFIX + "/" + currentDir + "/" + fileName;
} }
......
package com.dsk.common.utils.file; package com.dsk.common.utils.file;
import com.dsk.common.config.RuoYiConfig; import com.dsk.common.config.ShuZhiHuaConfig;
import com.dsk.common.core.domain.entity.BusinessFileVo; import com.dsk.common.core.domain.entity.BusinessFileVo;
import com.dsk.common.exception.base.BaseException; import com.dsk.common.exception.base.BaseException;
import com.dsk.common.utils.DateUtils; import com.dsk.common.utils.DateUtils;
...@@ -127,7 +127,7 @@ public class FileUtils ...@@ -127,7 +127,7 @@ public class FileUtils
*/ */
public static String writeImportBytes(byte[] data) throws IOException public static String writeImportBytes(byte[] data) throws IOException
{ {
return writeBytes(data, RuoYiConfig.getImportPath()); return writeBytes(data, ShuZhiHuaConfig.getImportPath());
} }
/** /**
...@@ -584,7 +584,7 @@ public class FileUtils ...@@ -584,7 +584,7 @@ public class FileUtils
} }
/** /**
* 获取文件名称 /profile/upload/2022/04/16/ruoyi.png -- ruoyi.png * 获取文件名称 /profile/upload/2022/04/16/dsk.png -- dsk.png
* *
* @param fileName 路径名称 * @param fileName 路径名称
* @return 没有文件路径的名称 * @return 没有文件路径的名称
...@@ -602,7 +602,7 @@ public class FileUtils ...@@ -602,7 +602,7 @@ public class FileUtils
} }
/** /**
* 获取不带后缀文件名称 /profile/upload/2022/04/16/ruoyi.png -- ruoyi * 获取不带后缀文件名称 /profile/upload/2022/04/16/dsk.png -- dsk
* *
* @param fileName 路径名称 * @param fileName 路径名称
* @return 没有文件路径和后缀的名称 * @return 没有文件路径和后缀的名称
......
...@@ -12,7 +12,7 @@ import com.dsk.common.utils.StringUtils; ...@@ -12,7 +12,7 @@ import com.dsk.common.utils.StringUtils;
import org.apache.poi.util.IOUtils; import org.apache.poi.util.IOUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.dsk.common.config.RuoYiConfig; import com.dsk.common.config.ShuZhiHuaConfig;
/** /**
* 图片处理工具类 * 图片处理工具类
...@@ -80,7 +80,7 @@ public class ImageUtils ...@@ -80,7 +80,7 @@ public class ImageUtils
else else
{ {
// 本机地址 // 本机地址
String localPath = RuoYiConfig.getProfile(); String localPath = ShuZhiHuaConfig.getProfile();
String downloadPath = localPath + StringUtils.substringAfter(url, Constants.RESOURCE_PREFIX); String downloadPath = localPath + StringUtils.substringAfter(url, Constants.RESOURCE_PREFIX);
in = new FileInputStream(downloadPath); in = new FileInputStream(downloadPath);
} }
......
...@@ -4,7 +4,7 @@ import org.slf4j.Logger; ...@@ -4,7 +4,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.config.RuoYiConfig; import com.dsk.common.config.ShuZhiHuaConfig;
import com.dsk.common.constant.Constants; import com.dsk.common.constant.Constants;
import com.dsk.common.utils.StringUtils; import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.http.HttpUtils; import com.dsk.common.utils.http.HttpUtils;
...@@ -31,7 +31,7 @@ public class AddressUtils ...@@ -31,7 +31,7 @@ public class AddressUtils
{ {
return "内网IP"; return "内网IP";
} }
if (RuoYiConfig.isAddressEnabled()) if (ShuZhiHuaConfig.isAddressEnabled())
{ {
try try
{ {
......
...@@ -76,7 +76,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; ...@@ -76,7 +76,7 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker; import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.dsk.common.config.RuoYiConfig; import com.dsk.common.config.ShuZhiHuaConfig;
import com.dsk.common.exception.UtilException; import com.dsk.common.exception.UtilException;
import com.dsk.common.utils.StringUtils; import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.file.FileTypeUtils; import com.dsk.common.utils.file.FileTypeUtils;
...@@ -1341,7 +1341,7 @@ public class ExcelUtil<T> ...@@ -1341,7 +1341,7 @@ public class ExcelUtil<T>
*/ */
public String getAbsoluteFile(String filename) public String getAbsoluteFile(String filename)
{ {
String downloadPath = RuoYiConfig.getDownloadPath() + filename; String downloadPath = ShuZhiHuaConfig.getDownloadPath() + filename;
File desc = new File(downloadPath); File desc = new File(downloadPath);
if (!desc.getParentFile().exists()) if (!desc.getParentFile().exists())
{ {
......
...@@ -11,7 +11,7 @@ import org.springframework.web.filter.CorsFilter; ...@@ -11,7 +11,7 @@ import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import com.dsk.common.config.RuoYiConfig; import com.dsk.common.config.ShuZhiHuaConfig;
import com.dsk.common.constant.Constants; import com.dsk.common.constant.Constants;
import com.dsk.framework.interceptor.RepeatSubmitInterceptor; import com.dsk.framework.interceptor.RepeatSubmitInterceptor;
...@@ -31,7 +31,7 @@ public class ResourcesConfig implements WebMvcConfigurer ...@@ -31,7 +31,7 @@ public class ResourcesConfig implements WebMvcConfigurer
{ {
/** 本地文件上传路径 */ /** 本地文件上传路径 */
registry.addResourceHandler(Constants.RESOURCE_PREFIX + "/**") registry.addResourceHandler(Constants.RESOURCE_PREFIX + "/**")
.addResourceLocations("file:" + RuoYiConfig.getProfile() + "/"); .addResourceLocations("file:" + ShuZhiHuaConfig.getProfile() + "/");
/** swagger配置 */ /** swagger配置 */
registry.addResourceHandler("/swagger-ui/**") registry.addResourceHandler("/swagger-ui/**")
......
...@@ -10,7 +10,7 @@ import com.dsk.common.utils.StringUtils; ...@@ -10,7 +10,7 @@ import com.dsk.common.utils.StringUtils;
import com.dsk.framework.security.context.PermissionContextHolder; import com.dsk.framework.security.context.PermissionContextHolder;
/** /**
* RuoYi首创 自定义权限实现,ss取自SpringSecurity首字母 * 自定义权限实现,ss取自SpringSecurity首字母
* *
* @author dsk * @author dsk
*/ */
......
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
"nprogress": "0.2.0", "nprogress": "0.2.0",
"quill": "1.3.7", "quill": "1.3.7",
"screenfull": "5.0.2", "screenfull": "5.0.2",
"sortablejs": "1.10.2", "sortablejs": "^1.15.0",
"vue": "2.6.12", "vue": "2.6.12",
"vue-count-to": "1.0.13", "vue-count-to": "1.0.13",
"vue-cropper": "0.5.5", "vue-cropper": "0.5.5",
......
...@@ -51,6 +51,65 @@ export function getYear() { ...@@ -51,6 +51,65 @@ export function getYear() {
}) })
} }
//全国商机项目分析-全国土地交易项目
export function countLandMarketByType(param) {
return request({
url: '/marketAnalysis/countLandMarketByType',
method: 'POST',
data: param
})
}
//全国商机项目分析-全国土地交易项目地区TOP10
export function countLandMarketByProvince(param) {
return request({
url: '/marketAnalysis/countLandMarketByProvince',
method: 'POST',
data: param
})
}
//全国商机项目分析-全国土地交易项目年份统计
export function countLandMarketByYear() {
return request({
url: '/marketAnalysis/countLandMarketByYear',
method: 'POST',
})
}
//全国商机项目分析-全国各地区招标统计TOP10
export function countNewsBidByProvince(param) {
return request({
url: '/marketAnalysis/countNewsBidByProvince',
method: 'POST',
data: param
})
}
//全国商机项目分析-全国公招项目统计
export function countNewsBidByYear() {
return request({
url: '/marketAnalysis/countNewsBidByYear',
method: 'POST',
})
}
//全国商机项目分析-全国各年度招标月份统计
export function countNewsBidByMonth(param) {
return request({
url: '/marketAnalysis/countNewsBidByMonth',
method: 'POST',
data: param
})
}
//全国商机项目分析-全国土地交易项目年份统计
export function countBidGroupByProvince(param) {
return request({
url: '/marketAnalysis/countBidGroupByProvince',
method: 'POST',
data: param
})
}
//全国建筑企业概览-资质等级按照行业、等级类型分组 //全国建筑企业概览-资质等级按照行业、等级类型分组
export function certGroupByMajorAndLevel() { export function certGroupByMajorAndLevel() {
......
...@@ -65,7 +65,8 @@ export function removeLabel(param) { ...@@ -65,7 +65,8 @@ export function removeLabel(param) {
//查询项目联系人 //查询项目联系人
export function getLXR(param) { export function getLXR(param) {
return request({ return request({
url: '/business/contacts/list', // url: '/business/contacts/list',
url: '/contact/info/list',
method: 'GET', method: 'GET',
params:param params:param
}) })
...@@ -73,8 +74,9 @@ export function getLXR(param) { ...@@ -73,8 +74,9 @@ export function getLXR(param) {
//修改项目联系人 //修改项目联系人
export function editLXR(param) { export function editLXR(param) {
return request({ return request({
url: '/business/contacts/edit', // url: '/business/contacts/edit',
method: 'POST', url: '/contact/info',
method: 'PUT',
data:param data:param
}) })
} }
...@@ -82,12 +84,21 @@ export function editLXR(param) { ...@@ -82,12 +84,21 @@ export function editLXR(param) {
//新增项目联系人 //新增项目联系人
export function addLXR(param) { export function addLXR(param) {
return request({ return request({
url: '/business/contacts/add', // url: '/business/contacts/add',
url: '/contact/info',
method: 'POST', method: 'POST',
data:param data:param
}) })
} }
//删除项目联系人
export function delLXR(param) {
return request({
url: '/contact/info/'+param,
method: 'DELETE',
})
}
//跟进记录 //跟进记录
export function getGJJL(param) { export function getGJJL(param) {
return request({ return request({
......
...@@ -364,7 +364,10 @@ ul, li { ...@@ -364,7 +364,10 @@ ul, li {
background: #DCEBFF; background: #DCEBFF;
} }
.el-table__fixed{ .el-table__fixed{
bottom:0 !important; //bottom:0 !important;
.el-table__body{
padding-bottom:16px;
}
tr:nth-child(2n){ tr:nth-child(2n){
background-color: #F8FBFF; background-color: #F8FBFF;
} }
...@@ -394,7 +397,7 @@ ul, li { ...@@ -394,7 +397,7 @@ ul, li {
} }
} }
} }
} }
.el-table__body tr.hover-row > td.el-table__cell{ .el-table__body tr.hover-row > td.el-table__cell{
background-color: #DCEBFF; background-color: #DCEBFF;
......
...@@ -1179,6 +1179,25 @@ ...@@ -1179,6 +1179,25 @@
} }
.tables{ .tables{
.el-table__body-wrapper{
&::-webkit-scrollbar {
width: 16px; //竖轴宽度
height: 16px; //横轴宽度
}
&::-webkit-scrollbar-track {
background-color: #F3F4F5;
border-radius: 0;
}
&::-webkit-scrollbar-thumb {
background-color: rgba(98,110,126,0.2);
border: 4px solid #F3F4F5;
border-radius: 10px;
}
&::-webkit-scrollbar-corner {
background: #F3F4F5;
/*border-left: 1px solid #E0EAF2;*/
}
}
::-webkit-scrollbar-track-piece { ::-webkit-scrollbar-track-piece {
//滚动条凹槽的颜色,还可以设置边框属性 //滚动条凹槽的颜色,还可以设置边框属性
background-color: #F3F4F5; background-color: #F3F4F5;
...@@ -1209,8 +1228,8 @@ ...@@ -1209,8 +1228,8 @@
line-height: 34px !important; line-height: 34px !important;
} }
.el-table__fixed { .tables .el-table__fixed {
height: auto !important; // height: auto !important;
bottom: 17px !important; bottom: 17px !important;
//box-shadow: 4px 0 9px -5px rgba(0, 0, 0, 0.12); //box-shadow: 4px 0 9px -5px rgba(0, 0, 0, 0.12);
//-webkit-box-shadow: 4px 0 9px -5px rgba(0, 0, 0, 0.12); //-webkit-box-shadow: 4px 0 9px -5px rgba(0, 0, 0, 0.12);
...@@ -1244,3 +1263,10 @@ ...@@ -1244,3 +1263,10 @@
overflow-y: clip; overflow-y: clip;
} }
} }
.tables{
.el-table__fixed {
.el-table__body {
padding-bottom: 16px;
}
}
}
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<div class="flex-box avatar-wrapper"> <div class="flex-box avatar-wrapper">
<img v-if="avatar" class="pic-avatar" :src="avatar"> <img v-if="avatar" class="pic-avatar" :src="avatar">
<span v-else class="user-avatar">{{ name&&name.slice(0, 1).toUpperCase() }}</span> <span v-else class="user-avatar">{{ name&&name.slice(0, 1).toUpperCase() }}</span>
{{ name }} {{ name.length>10?name.slice(0, 10)+'...':name}}
</div> </div>
<el-dropdown-menu slot="dropdown" class="user-dropdown"> <el-dropdown-menu slot="dropdown" class="user-dropdown">
<router-link to="/user/profile"> <router-link to="/user/profile">
......
...@@ -384,14 +384,14 @@ export default { ...@@ -384,14 +384,14 @@ export default {
} }
} }
.alltags{ .alltags{
position: absolute; position: fixed;
align-items: center; align-items: center;
border-radius: 9px; border-radius: 9px;
height: 17px; height: 17px;
justify-content: center; justify-content: center;
width: 36px; width: 36px;
right: -130px; right: 10px;
bottom: 0px; top: 37px;
cursor: pointer; cursor: pointer;
text-align: center; text-align: center;
&:hover{ &:hover{
......
...@@ -74,6 +74,19 @@ export const constantRoutes = [ ...@@ -74,6 +74,19 @@ export const constantRoutes = [
} }
] ]
}, },
{
path: '',
component: Layout,
redirect: 'urban',
children: [
{
path: '/macro/urban',
component: () => import('@/views/macro/urban'),
name: 'Urban',
meta: { title: '城投平台', icon: 'macro' }
}
]
},
{ {
path: '/user', path: '/user',
component: Layout, component: Layout,
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
</div> </div>
</div> </div>
<skeleton v-if="isSkeleton"></skeleton> <skeleton v-if="isSkeleton"></skeleton>
<el-table v-if="!isSkeleton&&tableData.total > 0" class="fixed-table" <el-table v-show="!isSkeleton&&tableData.total > 0" class="fixed-table" max-height="640" ref="thistables"
:data="tableData.rows" :data="tableData.rows"
stripe border stripe border
style="width: 100%"> style="width: 100%">
...@@ -46,12 +46,12 @@ ...@@ -46,12 +46,12 @@
width="316"> width="316">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="ps1"> <div class="ps1">
<div class="wordprimary ps2" @click="toDetail(scope.row,'')">{{scope.row.companyName}}</div> <div class="wordprimary ps2" @click="toDetail(scope.row,'business')" v-html="scope.row.companyName"></div>
<div class="ps3"> <div class="ps3">
<el-tooltip class="item" effect="dark" content="写跟进" placement="top"> <el-tooltip class="item" effect="dark" content="写跟进" placement="top" transition="" :open-delay="450">
<div @click="toDetail(scope.row,'gjjl')"><img class="i" src="@/assets/images/project/edit_1.png"><img class="o" src="@/assets/images/project/edit_11.png"></div> <div @click="toDetail(scope.row,'gjjl')"><img class="i" src="@/assets/images/project/edit_1.png"><img class="o" src="@/assets/images/project/edit_11.png"></div>
</el-tooltip> </el-tooltip>
<el-tooltip class="item" effect="dark" content="编辑信息" placement="top"> <el-tooltip class="item" effect="dark" content="编辑信息" placement="top" transition="" :open-delay="450">
<div @click="toDetail(scope.row,'business')"><img class="i" src="@/assets/images/project/edit_2.png"><img class="o" src="@/assets/images/project/edit_22.png"></div> <div @click="toDetail(scope.row,'business')"><img class="i" src="@/assets/images/project/edit_2.png"><img class="o" src="@/assets/images/project/edit_22.png"></div>
</el-tooltip> </el-tooltip>
</div> </div>
...@@ -390,9 +390,9 @@ ...@@ -390,9 +390,9 @@
let customerId = row.customerId let customerId = row.customerId
let companyId = row.companyId let companyId = row.companyId
let path = type let path = type
if(type == "" && companyId == null){ // if(type == "" && companyId == null){
path = 'business' // path = 'business'
} // }
this.$router.push({path:'/enterprise/'+encodeStr(companyId),query:{customerId:customerId,path:path}}) this.$router.push({path:'/enterprise/'+encodeStr(companyId),query:{customerId:customerId,path:path}})
}, },
clearname(value){ clearname(value){
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
</div> </div>
</div> </div>
<skeleton v-if="isSkeleton"></skeleton> <skeleton v-if="isSkeleton"></skeleton>
<el-table v-if="!isSkeleton&&tableData.total > 0" class="fixed-table" <el-table v-if="!isSkeleton&&tableData.total > 0" class="fixed-table" max-height="640"
:data="tableData.rows" :data="tableData.rows"
stripe border stripe border
style="width: 100%"> style="width: 100%">
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
width="316"> width="316">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="ps1"> <div class="ps1">
<div class="wordprimary ps2" @click="toDetail(scope.row,'')">{{scope.row.companyName}}</div> <div class="wordprimary ps2" @click="toDetail(scope.row,'business')" v-html="scope.row.companyName"></div>
<div class="ps3"> <div class="ps3">
<el-tooltip class="item" effect="dark" content="重新认领" placement="top"> <el-tooltip class="item" effect="dark" content="重新认领" placement="top">
<div @click="toRL(scope.row)"><img class="i" src="@/assets/images/project/khrl1.png"><img class="o" src="@/assets/images/project/khrl2.png"></div> <div @click="toRL(scope.row)"><img class="i" src="@/assets/images/project/khrl1.png"><img class="o" src="@/assets/images/project/khrl2.png"></div>
...@@ -308,14 +308,14 @@ export default { ...@@ -308,14 +308,14 @@ export default {
let customerId = row.customerId let customerId = row.customerId
let companyId = row.companyId let companyId = row.companyId
let path = type let path = type
if(type == "" && companyId == null){ // if(type == "" && companyId == null){
path = 'business' // path = 'business'
} // }
this.$router.push({path:'/enterprise/'+encodeStr(companyId),query:{customerId:customerId,path:path}}) this.$router.push({path:'/enterprise/'+encodeStr(companyId),query:{customerId:customerId,path:path}})
}, },
//认领客户 //认领客户
async toRL(row){ async toRL(row){
this.RLcompanyName = row.companyName this.RLcompanyName = row.companyName.replace(/<[^>]+>/g, '')
}, },
async RL(){ async RL(){
let res = await historyClaim(this.RLcompanyName) let res = await historyClaim(this.RLcompanyName)
...@@ -377,6 +377,7 @@ export default { ...@@ -377,6 +377,7 @@ export default {
color: #3D3D3D; color: #3D3D3D;
font-weight: 400; font-weight: 400;
position: relative; position: relative;
line-height: 32px;
&::after{ &::after{
content: ' '; content: ' ';
width: 2px; width: 2px;
......
...@@ -280,6 +280,7 @@ export default { ...@@ -280,6 +280,7 @@ export default {
} }
} }
} }
this.defaultRoute = JSON.parse(JSON.stringify(this.sideRoute))
} }
} }
}, },
......
<template> <template>
<div class="Tables"> <div class="Tables">
<div class="table-item"> <div class="table-item">
<el-table v-if="tableDataTotal>0" class="fixed-table" <el-table v-if="tableDataTotal>0" class="fixed-table" max-height="640"
v-loading="tableLoading" v-loading="tableLoading"
:data="tableData" :data="tableData"
element-loading-text="Loading" element-loading-text="Loading"
......
<template>
<el-skeleton animated>
<template slot="template">
<el-skeleton-item variant="text" style="width: 60%;"/>
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 60%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
</template>
</el-skeleton>
</template>
<script>
export default {
name: 'skeleton'
}
</script>
<style lang="scss" scoped>
.el-skeleton__item{
height: 20px;
border-radius: 0;
margin: 9px 0;
background: #f0f0f0;
}
</style>
...@@ -8,8 +8,9 @@ ...@@ -8,8 +8,9 @@
:isExcel="true" :isExcel="true"
@handle-search="handleSearch" @handle-search="handleSearch"
/> />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables
v-else
:indexFixed="true" :indexFixed="true"
:defaultSort="defaultSort" :defaultSort="defaultSort"
:tableLoading="tableLoading" :tableLoading="tableLoading"
...@@ -81,11 +82,13 @@ export default { ...@@ -81,11 +82,13 @@ export default {
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
let res = await oftenAgencyPage(param) let res = await oftenAgencyPage(param)
this.tableLoading = false this.tableLoading = false
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
this.tableData = res.rows.map((item)=>{ this.tableData = res.rows.map((item)=>{
item.projectInfo = typeof item.projectInfo == 'string' ? JSON.parse(item.projectInfo) : item.projectInfo item.projectInfo = typeof item.projectInfo == 'string' ? JSON.parse(item.projectInfo) : item.projectInfo
return item return item
......
...@@ -8,8 +8,9 @@ ...@@ -8,8 +8,9 @@
:isExcel="true" :isExcel="true"
@handle-search="handleSearch" @handle-search="handleSearch"
/> />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables
v-else
:indexFixed="true" :indexFixed="true"
:tableLoading="tableLoading" :tableLoading="tableLoading"
:tableData="tableData" :tableData="tableData"
...@@ -70,11 +71,13 @@ export default { ...@@ -70,11 +71,13 @@ export default {
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
let res = await tenderPage(param) let res = await tenderPage(param)
this.tableLoading = false this.tableLoading = false
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total
......
...@@ -8,8 +8,9 @@ ...@@ -8,8 +8,9 @@
:isExcel="true" :isExcel="true"
@handle-search="handleSearch" @handle-search="handleSearch"
/> />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables
v-else
:indexFixed="true" :indexFixed="true"
:defaultSort="defaultSort" :defaultSort="defaultSort"
:tableLoading="tableLoading" :tableLoading="tableLoading"
...@@ -83,11 +84,13 @@ export default { ...@@ -83,11 +84,13 @@ export default {
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
let res = await clientPage(param) let res = await clientPage(param)
this.tableLoading = false this.tableLoading = false
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows
if(this.tableData&&this.tableData.length>0){ if(this.tableData&&this.tableData.length>0){
this.tableData.forEach(item => { this.tableData.forEach(item => {
......
...@@ -8,8 +8,9 @@ ...@@ -8,8 +8,9 @@
:isExcel="true" :isExcel="true"
@handle-search="handleSearch" @handle-search="handleSearch"
/> />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables
v-else
:indexFixed="true" :indexFixed="true"
:defaultSort="defaultSort" :defaultSort="defaultSort"
:tableLoading="tableLoading" :tableLoading="tableLoading"
...@@ -93,11 +94,13 @@ export default { ...@@ -93,11 +94,13 @@ export default {
}, },
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
let res = await historySendPage(param) let res = await historySendPage(param)
this.tableLoading = false this.tableLoading = false
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total
......
...@@ -8,8 +8,9 @@ ...@@ -8,8 +8,9 @@
:isExcel="true" :isExcel="true"
@handle-search="handleSearch" @handle-search="handleSearch"
/> />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables
v-else
:indexFixed="true" :indexFixed="true"
:defaultSort="defaultSort" :defaultSort="defaultSort"
:tableLoading="tableLoading" :tableLoading="tableLoading"
...@@ -83,11 +84,13 @@ export default { ...@@ -83,11 +84,13 @@ export default {
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
let res = await supplierPage(param) let res = await supplierPage(param)
this.tableLoading = false this.tableLoading = false
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows
if(this.tableData&&this.tableData.length>0){ if(this.tableData&&this.tableData.length>0){
this.tableData.forEach(item => { this.tableData.forEach(item => {
......
...@@ -2,7 +2,9 @@ ...@@ -2,7 +2,9 @@
<div class="app-container part-container"> <div class="app-container part-container">
<div class="financial-header"> <div class="financial-header">
<div class="common-title">财务简析</div> <div class="common-title">财务简析</div>
<div class="flex-box header-box"> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class="flex-box header-box" v-else>
<div class="header-item">总资产<div class="header-item-amount"><template v-if="financialDetail.totalAssets"><span>{{saveFixed(financialDetail.totalAssets)}}</span>亿元</template><template v-else>--</template></div><img src="@/assets/images/detail/financial/financial_header01_ico.png"></div> <div class="header-item">总资产<div class="header-item-amount"><template v-if="financialDetail.totalAssets"><span>{{saveFixed(financialDetail.totalAssets)}}</span>亿元</template><template v-else>--</template></div><img src="@/assets/images/detail/financial/financial_header01_ico.png"></div>
<div class="header-item">净资产<div class="header-item-amount"><template v-if="financialDetail.belongNetAssets"><span>{{saveFixed(financialDetail.belongNetAssets)}}</span>亿元</template><template v-else>--</template></div><img src="@/assets/images/detail/financial/financial_header02_ico.png"></div> <div class="header-item">净资产<div class="header-item-amount"><template v-if="financialDetail.belongNetAssets"><span>{{saveFixed(financialDetail.belongNetAssets)}}</span>亿元</template><template v-else>--</template></div><img src="@/assets/images/detail/financial/financial_header02_ico.png"></div>
<div class="header-item">营业收入<div class="header-item-amount"><template v-if="financialDetail.operatingIncome"><span>{{saveFixed(financialDetail.operatingIncome)}}</span>亿元</template><template v-else>--</template></div><img src="@/assets/images/detail/financial/financial_header03_ico.png"></div> <div class="header-item">营业收入<div class="header-item-amount"><template v-if="financialDetail.operatingIncome"><span>{{saveFixed(financialDetail.operatingIncome)}}</span>亿元</template><template v-else>--</template></div><img src="@/assets/images/detail/financial/financial_header03_ico.png"></div>
...@@ -11,7 +13,9 @@ ...@@ -11,7 +13,9 @@
</div> </div>
<div class="financial-zcqk"> <div class="financial-zcqk">
<div class="common-title">资产情况</div> <div class="common-title">资产情况</div>
<ul class="zcqk-list"> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<ul class="zcqk-list" v-else>
<li v-for="(item, index) in zcqkList" :key="index" :style="zcqkList.length==1?'border-right: 0;':''"> <li v-for="(item, index) in zcqkList" :key="index" :style="zcqkList.length==1?'border-right: 0;':''">
<div class="zcqk-list-box" :style="(parity(zcqkList) && index==zcqkList.length-2) || (index == zcqkList.length-1)?'border-bottom: 0':''"> <div class="zcqk-list-box" :style="(parity(zcqkList) && index==zcqkList.length-2) || (index == zcqkList.length-1)?'border-bottom: 0':''">
<div class="flex-box zcqk-list-line"><span class="flex-box"><img :src="item.ico">{{item.name}}</span><span v-if="item.amount"><i>{{saveFixed(item.amount)}}</i>{{item.unit}}</span><span v-else>--</span></div> <div class="flex-box zcqk-list-line"><span class="flex-box"><img :src="item.ico">{{item.name}}</span><span v-if="item.amount"><i>{{saveFixed(item.amount)}}</i>{{item.unit}}</span><span v-else>--</span></div>
...@@ -22,7 +26,9 @@ ...@@ -22,7 +26,9 @@
</div> </div>
<div class="financial-ylnl"> <div class="financial-ylnl">
<div class="common-title">盈利能力</div> <div class="common-title">盈利能力</div>
<ul class="flex-box ylnl-list"> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<ul class="flex-box ylnl-list" v-else>
<li v-for="(item, index) in ylnlList" :key="index" :style="index===0?'border-left: 0;':''"> <li v-for="(item, index) in ylnlList" :key="index" :style="index===0?'border-left: 0;':''">
<div class="ylnl-amount"><template v-if="item.amount"><span>{{saveFixed(item.amount)}}</span>{{item.unit}}</template><template v-else>--</template></div> <div class="ylnl-amount"><template v-if="item.amount"><span>{{saveFixed(item.amount)}}</span>{{item.unit}}</template><template v-else>--</template></div>
<div class="ylnl-title">{{item.name}}</div> <div class="ylnl-title">{{item.name}}</div>
...@@ -31,7 +37,9 @@ ...@@ -31,7 +37,9 @@
</div> </div>
<div class="financial-zwqk"> <div class="financial-zwqk">
<div class="common-title">负债情况及偿债能力</div> <div class="common-title">负债情况及偿债能力</div>
<div class="flex-box zwqk-box"> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class="flex-box zwqk-box" v-else>
<div class="zwqk-info"> <div class="zwqk-info">
<div class="zwqk-title">总负债</div> <div class="zwqk-title">总负债</div>
<div class="zwqk-amount"><template v-if="financialDetail.totalLiabilities"><span>{{saveFixed(financialDetail.totalLiabilities)}}</span>亿元</template><template v-else><span>--</span></template></div> <div class="zwqk-amount"><template v-if="financialDetail.totalLiabilities"><span>{{saveFixed(financialDetail.totalLiabilities)}}</span>亿元</template><template v-else><span>--</span></template></div>
...@@ -53,7 +61,9 @@ ...@@ -53,7 +61,9 @@
</div> </div>
<div class="financial-zcqk"> <div class="financial-zcqk">
<div class="common-title">资金情况</div> <div class="common-title">资金情况</div>
<ul class="zcqk-list"> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<ul class="zcqk-list" v-else>
<li v-for="(item, index) in zjqkList" :key="index" :style="zjqkList.length==1?'border-right: 0;':''"> <li v-for="(item, index) in zjqkList" :key="index" :style="zjqkList.length==1?'border-right: 0;':''">
<div class="zcqk-list-box" :style="(parity(zjqkList) && index==zjqkList.length-2) || (index == zjqkList.length-1)?'border-bottom: 0':''"> <div class="zcqk-list-box" :style="(parity(zjqkList) && index==zjqkList.length-2) || (index == zjqkList.length-1)?'border-bottom: 0':''">
<div class="flex-box zcqk-list-line"><span class="flex-box"><img :src="item.ico">{{item.name}}</span><span v-if="item.amount"><i>{{saveFixed(item.amount)}}</i>{{item.unit}}</span></div> <div class="flex-box zcqk-list-line"><span class="flex-box"><img :src="item.ico">{{item.name}}</span><span v-if="item.amount"><i>{{saveFixed(item.amount)}}</i>{{item.unit}}</span></div>
...@@ -69,15 +79,17 @@ ...@@ -69,15 +79,17 @@
import {saveFixed} from "@/assets/js/common" import {saveFixed} from "@/assets/js/common"
import { financial } from '@/api/detail/party-a/financial' import { financial } from '@/api/detail/party-a/financial'
import * as echarts from 'echarts' import * as echarts from 'echarts'
import skeleton from '@/views/project/projectList/component/skeleton'
import NoData from '../component/noData' import NoData from '../component/noData'
export default { export default {
name: 'Financial', name: 'Financial',
props: ['companyId'], props: ['companyId'],
components: { components: {
NoData NoData,skeleton
}, },
data() { data() {
return { return {
isSkeleton:true,
saveFixed, saveFixed,
financialDetail: {}, financialDetail: {},
// 资产情况 // 资产情况
...@@ -138,10 +150,12 @@ export default { ...@@ -138,10 +150,12 @@ export default {
}, },
methods: { methods: {
async handleQuery() { async handleQuery() {
this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true
let res = await financial({cid:this.companyId}) let res = await financial({cid:this.companyId})
this.tableLoading = false this.tableLoading = false
if(res.code==200 && res.data){ if(res.code==200 && res.data){
this.isSkeleton = false;
this.financialDetail = res.data this.financialDetail = res.data
//资产情况 //资产情况
let { totalAssets, belongNetAssets, monetaryFunds, accountsReceivable, landAssets, otherReceivable, restrictedAssets, receivableFromGovRatio, govSubsidy } = this.financialDetail let { totalAssets, belongNetAssets, monetaryFunds, accountsReceivable, landAssets, otherReceivable, restrictedAssets, receivableFromGovRatio, govSubsidy } = this.financialDetail
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<div id="partBox" v-if="companyId"> <div id="partBox" v-if="companyId">
<template v-if="isCompany"> <template v-if="isCompany">
<!-- 企业概览 --> <!-- 企业概览 -->
<Overview v-if="currentPath.pathName=='overview'" :company-id="companyId" :companyInfo="companyInfo" /> <Overview v-if="currentPath.pathName=='overview'" :company-id="companyId" :isSkeleton="isSkeleton" :companyInfo="companyInfo" />
<Businfo v-if="currentPath.pathName=='businfo'" :company-id="companyId" /> <Businfo v-if="currentPath.pathName=='businfo'" :company-id="companyId" />
<Holderinfo v-if="currentPath.pathName=='holderinfo'" :company-id="companyId" /> <Holderinfo v-if="currentPath.pathName=='holderinfo'" :company-id="companyId" />
<Execuinfo v-if="currentPath.pathName=='execuinfo'" :company-id="companyId" /> <Execuinfo v-if="currentPath.pathName=='execuinfo'" :company-id="companyId" />
...@@ -150,6 +150,7 @@ export default { ...@@ -150,6 +150,7 @@ export default {
}, },
data() { data() {
return { return {
isSkeleton:true,
companyInfo: {}, companyInfo: {},
customerInfo: {}, customerInfo: {},
companyId: '', //企业Id(测试默认3068) companyId: '', //企业Id(测试默认3068)
...@@ -250,8 +251,10 @@ export default { ...@@ -250,8 +251,10 @@ export default {
} }
}, },
async handleQuery() { async handleQuery() {
this.isSkeleton = true;
let res = await infoHeader({companyId:this.companyId}) let res = await infoHeader({companyId:this.companyId})
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
this.companyInfo = res.data || {} this.companyInfo = res.data || {}
let data = { let data = {
pageNum: 1, pageNum: 1,
......
import {encodeStr} from "@/assets/js/common" import {encodeStr} from "@/assets/js/common"
import HeadForm from "../component/HeadForm" import HeadForm from "../component/HeadForm"
import Tables from "../component/Tables" import Tables from "../component/Tables"
import skeleton from '@/views/project/projectList/component/skeleton'
export default { export default {
components: { components: {
HeadForm, HeadForm,
Tables Tables,
skeleton
}, },
data() { data() {
return { return {
isSkeleton:true,
encodeStr encodeStr
} }
}, },
......
...@@ -7,8 +7,9 @@ ...@@ -7,8 +7,9 @@
:total="tableDataTotal" :total="tableDataTotal"
@handle-search="handleSearch" @handle-search="handleSearch"
/> />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables
v-else
:indexFixed="true" :indexFixed="true"
:tableLoading="tableLoading" :tableLoading="tableLoading"
:tableData="tableData" :tableData="tableData"
...@@ -33,15 +34,18 @@ ...@@ -33,15 +34,18 @@
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
import skeleton from '@/views/project/projectList/component/skeleton'
import {creditXzxkPage} from '@/api/detail/party-a/opport' import {creditXzxkPage} from '@/api/detail/party-a/opport'
export default { export default {
name: 'Administrative', name: 'Administrative',
props: ['companyId'], props: ['companyId'],
mixins: [mixin], mixins: [mixin],
components: { components: {
skeleton
}, },
data() { data() {
return { return {
isSkeleton:true,
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
pageNum: 1, pageNum: 1,
...@@ -79,11 +83,13 @@ export default { ...@@ -79,11 +83,13 @@ export default {
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
let res = await creditXzxkPage(param) let res = await creditXzxkPage(param)
this.tableLoading = false this.tableLoading = false
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
if(res.rows&&res.rows.length>0){ if(res.rows&&res.rows.length>0){
res.rows.forEach(item => { res.rows.forEach(item => {
item.smallContent = item.content.replace(/<.*?>/ig,"") item.smallContent = item.content.replace(/<.*?>/ig,"")
......
...@@ -9,8 +9,9 @@ ...@@ -9,8 +9,9 @@
:isExcel="true" :isExcel="true"
@handle-search="handleSearch" @handle-search="handleSearch"
/> />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables
v-else
:indexFixed="true" :indexFixed="true"
:defaultSort="defaultSort" :defaultSort="defaultSort"
:tableLoading="tableLoading" :tableLoading="tableLoading"
...@@ -35,15 +36,18 @@ ...@@ -35,15 +36,18 @@
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
import skeleton from '@/views/project/projectList/component/skeleton'
import {bidNoticeArea, bidNoticeTenderStage, bidNoticePage} from '@/api/detail/party-a/opport' import {bidNoticeArea, bidNoticeTenderStage, bidNoticePage} from '@/api/detail/party-a/opport'
export default { export default {
name: 'Announcement', name: 'Announcement',
props: ['companyId'], props: ['companyId'],
mixins: [mixin], mixins: [mixin],
components: { components: {
skeleton
}, },
data() { data() {
return { return {
isSkeleton:true,
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
sort: 3, sort: 3,
...@@ -119,11 +123,13 @@ export default { ...@@ -119,11 +123,13 @@ export default {
} }
}, },
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true
let param = this.getAreaList(params || this.queryParams) let param = this.getAreaList(params || this.queryParams)
let res = await bidNoticePage(param) let res = await bidNoticePage(param)
this.tableLoading = false this.tableLoading = false
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total
......
...@@ -8,8 +8,9 @@ ...@@ -8,8 +8,9 @@
@handle-search="handleSearch" @handle-search="handleSearch"
:total="tableDataTotal" :total="tableDataTotal"
/> />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables
v-else
:indexFixed="true" :indexFixed="true"
:defaultSort="defaultSort" :defaultSort="defaultSort"
:tableLoading="tableLoading" :tableLoading="tableLoading"
...@@ -35,14 +36,17 @@ ...@@ -35,14 +36,17 @@
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
import {bidPlanPage,bidPlanProjectType} from '@/api/detail/party-a/opport' import {bidPlanPage,bidPlanProjectType} from '@/api/detail/party-a/opport'
import skeleton from '@/views/project/projectList/component/skeleton'
export default { export default {
name: 'Biddingplan', name: 'Biddingplan',
props: ['companyId'], props: ['companyId'],
mixins: [mixin], mixins: [mixin],
components: { components: {
skeleton
}, },
data() { data() {
return { return {
isSkeleton:true,
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
sort: 3, sort: 3,
...@@ -88,11 +92,13 @@ export default { ...@@ -88,11 +92,13 @@ export default {
} }
}, },
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
let res = await bidPlanPage(param) let res = await bidPlanPage(param)
this.tableLoading = false this.tableLoading = false
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total
......
...@@ -8,8 +8,9 @@ ...@@ -8,8 +8,9 @@
:isExcel="true" :isExcel="true"
@handle-search="handleSearch" @handle-search="handleSearch"
/> />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables
v-else
:indexFixed="true" :indexFixed="true"
:defaultSort="defaultSort" :defaultSort="defaultSort"
:tableLoading="tableLoading" :tableLoading="tableLoading"
...@@ -32,14 +33,17 @@ ...@@ -32,14 +33,17 @@
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
import {specialDebtProjectPage} from '@/api/detail/party-a/opport' import {specialDebtProjectPage} from '@/api/detail/party-a/opport'
import skeleton from '@/views/project/projectList/component/skeleton'
export default { export default {
name: 'Bond', name: 'Bond',
props: ['companyId'], props: ['companyId'],
mixins: [mixin], mixins: [mixin],
components: { components: {
skeleton
}, },
data() { data() {
return { return {
isSkeleton:true,
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
sort: 1, sort: 1,
...@@ -69,11 +73,13 @@ export default { ...@@ -69,11 +73,13 @@ export default {
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
let res = await specialDebtProjectPage(param) let res = await specialDebtProjectPage(param)
this.tableLoading = false this.tableLoading = false
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total
......
...@@ -8,8 +8,9 @@ ...@@ -8,8 +8,9 @@
:isExcel="true" :isExcel="true"
@handle-search="handleSearch" @handle-search="handleSearch"
/> />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables
v-else
:indexFixed="true" :indexFixed="true"
:defaultSort="defaultSort" :defaultSort="defaultSort"
:tableLoading="tableLoading" :tableLoading="tableLoading"
...@@ -32,14 +33,17 @@ ...@@ -32,14 +33,17 @@
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
import {landUse, landTransactionPage} from '@/api/detail/party-a/opport' import {landUse, landTransactionPage} from '@/api/detail/party-a/opport'
import skeleton from '@/views/project/projectList/component/skeleton'
export default { export default {
name: 'Landtransaction', name: 'Landtransaction',
props: ['companyId'], props: ['companyId'],
mixins: [mixin], mixins: [mixin],
components: { components: {
skeleton
}, },
data() { data() {
return { return {
isSkeleton:true,
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
sort: 3, sort: 3,
...@@ -86,11 +90,13 @@ export default { ...@@ -86,11 +90,13 @@ export default {
} }
}, },
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
let res = await landTransactionPage(param) let res = await landTransactionPage(param)
this.tableLoading = false this.tableLoading = false
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows
if(this.tableData.length>0){ if(this.tableData.length>0){
this.tableData.map(item=>{ this.tableData.map(item=>{
......
...@@ -8,8 +8,9 @@ ...@@ -8,8 +8,9 @@
:isExcel="true" :isExcel="true"
@handle-search="handleSearch" @handle-search="handleSearch"
/> />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables
v-else
:indexFixed="true" :indexFixed="true"
:defaultSort="defaultSort" :defaultSort="defaultSort"
:tableLoading="tableLoading" :tableLoading="tableLoading"
...@@ -35,11 +36,13 @@ ...@@ -35,11 +36,13 @@
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
import { approvalProjectPage } from '@/api/detail/party-a/opport' import { approvalProjectPage } from '@/api/detail/party-a/opport'
import skeleton from '@/views/project/projectList/component/skeleton'
export default { export default {
name: 'Proposed', name: 'Proposed',
props: ['companyId'], props: ['companyId'],
mixins: [mixin], mixins: [mixin],
components: { components: {
skeleton
}, },
data() { data() {
return { return {
...@@ -66,7 +69,8 @@ export default { ...@@ -66,7 +69,8 @@ export default {
//列表 //列表
tableLoading:false, tableLoading:false,
tableData:[], tableData:[],
tableDataTotal:0 tableDataTotal:0,
isSkeleton:true,
} }
}, },
computed: { computed: {
...@@ -76,11 +80,13 @@ export default { ...@@ -76,11 +80,13 @@ export default {
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
let res = await approvalProjectPage(param) let res = await approvalProjectPage(param)
this.tableLoading = false this.tableLoading = false
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total
......
...@@ -8,8 +8,9 @@ ...@@ -8,8 +8,9 @@
:isExcel="true" :isExcel="true"
@handle-search="handleSearch" @handle-search="handleSearch"
/> />
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<tables <tables
v-else
:indexFixed="true" :indexFixed="true"
:tableLoading="tableLoading" :tableLoading="tableLoading"
:tableData="tableData" :tableData="tableData"
...@@ -40,12 +41,14 @@ ...@@ -40,12 +41,14 @@
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
import skeleton from '@/views/project/projectList/component/skeleton'
import { bidNoticeProProjectType, bidNoticeProProjectPurposes, bidNoticeProAssessmentWay, bidNoticeProPage } from '@/api/detail/party-a/opport' import { bidNoticeProProjectType, bidNoticeProProjectPurposes, bidNoticeProAssessmentWay, bidNoticeProPage } from '@/api/detail/party-a/opport'
export default { export default {
name: 'Tencent', name: 'Tencent',
props: ['companyId'], props: ['companyId'],
mixins: [mixin], mixins: [mixin],
components: { components: {
skeleton
}, },
data() { data() {
return { return {
...@@ -86,7 +89,8 @@ export default { ...@@ -86,7 +89,8 @@ export default {
//列表 //列表
tableLoading:false, tableLoading:false,
tableData:[], tableData:[],
tableDataTotal:0 tableDataTotal:0,
isSkeleton:true,
} }
}, },
computed: { computed: {
...@@ -125,11 +129,13 @@ export default { ...@@ -125,11 +129,13 @@ export default {
} }
}, },
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
let res = await bidNoticeProPage(param) let res = await bidNoticeProPage(param)
this.tableLoading = false this.tableLoading = false
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows
if(this.tableData&&this.tableData.length>0){ if(this.tableData&&this.tableData.length>0){
this.tableData.forEach(item => { this.tableData.forEach(item => {
......
<template> <template>
<div class="app-container detail-container"> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class="app-container detail-container" v-else>
<head-form <head-form
title="分支机构" title="分支机构"
:form-data="formData" :form-data="formData"
...@@ -68,6 +69,7 @@ export default { ...@@ -68,6 +69,7 @@ export default {
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
if(param.hasBid=='noLimit'){ if(param.hasBid=='noLimit'){
...@@ -76,6 +78,7 @@ export default { ...@@ -76,6 +78,7 @@ export default {
let res = await affiliates(param) let res = await affiliates(param)
this.tableLoading = false this.tableLoading = false
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total
......
<template xmlns="http://www.w3.org/1999/html"> <template xmlns="http://www.w3.org/1999/html">
<div class="app-container detail-container"> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class="app-container detail-container" v-else>
<el-tabs v-model="activeName" @tab-click="handleClick" class="detail-tab"> <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="first"></el-tab-pane>
<el-tab-pane label="工商变更" :disabled="tableDataTotal>0" name="second"></el-tab-pane> <el-tab-pane label="工商变更" :disabled="tableDataTotal>0" name="second"></el-tab-pane>
...@@ -104,11 +105,13 @@ export default { ...@@ -104,11 +105,13 @@ export default {
this.handleQuery() this.handleQuery()
}, },
async handleQuery() { async handleQuery() {
this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true
let param = this.baseParams; let param = this.baseParams;
let res = await icInfo(param); let res = await icInfo(param);
this.tableLoading = false this.tableLoading = false
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
this.forInfo = res.data this.forInfo = res.data
} }
}, },
......
...@@ -2,7 +2,8 @@ ...@@ -2,7 +2,8 @@
<div class="flex-box app-container part-container"> <div class="flex-box app-container part-container">
<div class="bid-zbph"> <div class="bid-zbph">
<div class="common-title">招标偏好</div> <div class="common-title">招标偏好</div>
<template v-if="dataAll.totalCount||dataAll.lastYearCount||dataAll.bidAmount||this.dtdata.length>0"> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<template v-if="(dataAll.totalCount||dataAll.lastYearCount||dataAll.bidAmount||this.dtdata.length>0)&& !isSkeleton">
<div class="flex-box zbph-item"> <div class="flex-box zbph-item">
<div>历史招标总数 <div>历史招标总数
<el-popover <el-popover
...@@ -45,9 +46,10 @@ ...@@ -45,9 +46,10 @@
</div> </div>
<div class="bid-ywwl"> <div class="bid-ywwl">
<div class="common-title">业务往来供应商TOP5</div> <div class="common-title">业务往来供应商TOP5</div>
<skeleton style="margin-left:16px;" v-if="isSkeleton1"></skeleton>
<div class="table-item"> <div class="table-item">
<el-table <el-table
v-if="tableData.length>0" v-if="tableData.length>0&& !isSkeleton1"
:data="tableData" :data="tableData"
style="width: 100%" style="width: 100%"
> >
...@@ -96,15 +98,18 @@ import {encodeStr} from "@/assets/js/common" ...@@ -96,15 +98,18 @@ import {encodeStr} from "@/assets/js/common"
import {bidDataGroup, supplierPage} from '@/api/detail/party-a/overview' import {bidDataGroup, supplierPage} from '@/api/detail/party-a/overview'
import * as echarts from 'echarts' import * as echarts from 'echarts'
import NoData from '../../component/noData' import NoData from '../../component/noData'
import skeleton from '@/views/project/projectList/component/skeleton'
export default { export default {
name: 'Bidding', name: 'Bidding',
props: ['companyId'], props: ['companyId'],
components: { components: {
NoData NoData,skeleton
}, },
data() { data() {
return { return {
encodeStr, encodeStr,
isSkeleton:true,
isSkeleton1:true,
datatype:'1',//切换类型 datatype:'1',//切换类型
dataAll: {}, dataAll: {},
dtdata:[],//数据 dtdata:[],//数据
...@@ -121,8 +126,10 @@ export default { ...@@ -121,8 +126,10 @@ export default {
}, },
methods: { methods: {
async handleBid(){ async handleBid(){
this.isSkeleton = true;
let res = await bidDataGroup({cid: this.companyId, spanId: this.datatype}) let res = await bidDataGroup({cid: this.companyId, spanId: this.datatype})
if(res.code==200 && res.data){ if(res.code==200 && res.data){
this.isSkeleton = false;
let {totalCount, lastYearCount, bidAmount} = res.data let {totalCount, lastYearCount, bidAmount} = res.data
this.dataAll = {totalCount, lastYearCount, bidAmount} this.dataAll = {totalCount, lastYearCount, bidAmount}
this.dtdata=res.data.groupCount.map(item=>{ this.dtdata=res.data.groupCount.map(item=>{
...@@ -139,8 +146,10 @@ export default { ...@@ -139,8 +146,10 @@ export default {
} }
}, },
async handleSupplier() { async handleSupplier() {
this.isSkeleton1 = true;
let res = await supplierPage({cid: this.companyId, sort: 1, pageNum: 1, pageSize: 5}) let res = await supplierPage({cid: this.companyId, sort: 1, pageNum: 1, pageSize: 5})
if(res.code==200){ if(res.code==200){
this.isSkeleton1 = false;
this.tableData = res.rows this.tableData = res.rows
this.tableData.forEach((item, index) => { this.tableData.forEach((item, index) => {
item.amount = item.amount?parseFloat(item.amount.toFixed(6)):0 item.amount = item.amount?parseFloat(item.amount.toFixed(6)):0
......
...@@ -5,7 +5,8 @@ ...@@ -5,7 +5,8 @@
<el-tab-pane label="按金额" name="0"></el-tab-pane> <el-tab-pane label="按金额" name="0"></el-tab-pane>
<el-tab-pane label="按项目" name="1"></el-tab-pane> <el-tab-pane label="按项目" name="1"></el-tab-pane>
</el-tabs> </el-tabs>
<div class="flex-box clue-box"> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class="flex-box clue-box" v-else>
<div class="clue-echarts" v-if="viewData.length>0"><div id="echartsClue" style="width: 100%;height:300px; margin: 0 auto;"></div></div> <div class="clue-echarts" v-if="viewData.length>0"><div id="echartsClue" style="width: 100%;height:300px; margin: 0 auto;"></div></div>
<div class="table-item" v-if="viewData.length>0"> <div class="table-item" v-if="viewData.length>0">
...@@ -43,6 +44,7 @@ ...@@ -43,6 +44,7 @@
</template> </template>
<script> <script>
import skeleton from '@/views/project/projectList/component/skeleton'
import {projectTenderDataGroup} from '@/api/detail/party-a/overview' import {projectTenderDataGroup} from '@/api/detail/party-a/overview'
import * as echarts from 'echarts' import * as echarts from 'echarts'
import {changePath} from "@/assets/js/common" import {changePath} from "@/assets/js/common"
...@@ -51,11 +53,12 @@ export default { ...@@ -51,11 +53,12 @@ export default {
name: 'Busclue', name: 'Busclue',
props: ['companyId', 'statistic'], props: ['companyId', 'statistic'],
components: { components: {
NoData NoData,skeleton
}, },
data() { data() {
return { return {
viewData:[], viewData:[],
isSkeleton:true,
activeIndex:0, activeIndex:0,
typeList:[ typeList:[
{name: '土地交易', pathName: 'landtransaction', ico: require("@/assets/images/detail/overview/clue_ico1.png"), count: 0, category:'global', field:'landInfo', dis_ico: require("@/assets/images/detail/overview/clue_dis_ico1.png")}, {name: '土地交易', pathName: 'landtransaction', ico: require("@/assets/images/detail/overview/clue_ico1.png"), count: 0, category:'global', field:'landInfo', dis_ico: require("@/assets/images/detail/overview/clue_dis_ico1.png")},
...@@ -75,8 +78,10 @@ export default { ...@@ -75,8 +78,10 @@ export default {
}, },
methods: { methods: {
async handleQuery(){ async handleQuery(){
this.isSkeleton = true;
let res = await projectTenderDataGroup({cid: this.companyId, type: this.activeIndex}) let res = await projectTenderDataGroup({cid: this.companyId, type: this.activeIndex})
if(res.code==200 && res.data){ if(res.code==200 && res.data){
this.isSkeleton = false;
let data = res.data, totalVal = data.map(item => item.value).reduce((prev, cur) => prev + cur) let data = res.data, totalVal = data.map(item => item.value).reduce((prev, cur) => prev + cur)
this.viewData = data.map(item => { this.viewData = data.map(item => {
let it = {name:item.name, value:item.value, percent:parseFloat(Number(Number(item.value)/Number(totalVal)*100).toFixed(2))} let it = {name:item.name, value:item.value, percent:parseFloat(Number(Number(item.value)/Number(totalVal)*100).toFixed(2))}
......
...@@ -12,7 +12,8 @@ ...@@ -12,7 +12,8 @@
<el-tab-pane label="总资产" name="2"></el-tab-pane> <el-tab-pane label="总资产" name="2"></el-tab-pane>
<el-tab-pane label="净资产" name="3"></el-tab-pane> <el-tab-pane label="净资产" name="3"></el-tab-pane>
</el-tabs> </el-tabs>
<div class="flex-box finance-box"> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class="flex-box finance-box" v-else>
<div class="finance-echarts" v-if="viewData.length>0"><div id="echartsFinance" style="width: 100%;height:300px; margin: 0 auto;"></div></div> <div class="finance-echarts" v-if="viewData.length>0"><div id="echartsFinance" style="width: 100%;height:300px; margin: 0 auto;"></div></div>
<div class="finance-no-data" v-else> <div class="finance-no-data" v-else>
<no-data /> <no-data />
...@@ -61,6 +62,7 @@ ...@@ -61,6 +62,7 @@
</template> </template>
<script> <script>
import skeleton from '@/views/project/projectList/component/skeleton'
import {financialData} from '@/api/detail/party-a/overview' import {financialData} from '@/api/detail/party-a/overview'
import * as echarts from 'echarts' import * as echarts from 'echarts'
import NoData from '../../component/noData' import NoData from '../../component/noData'
...@@ -68,11 +70,12 @@ export default { ...@@ -68,11 +70,12 @@ export default {
name: 'Finance', name: 'Finance',
props: ['companyId'], props: ['companyId'],
components: { components: {
NoData NoData,skeleton
}, },
data() { data() {
return { return {
viewData:[], viewData:[],
isSkeleton:true,
activeIndex:0, activeIndex:0,
vals:['operatingIncome','netProfit','totalAssets','netAssets'], vals:['operatingIncome','netProfit','totalAssets','netAssets'],
names:['营业收入(亿)','净利润(亿)','总资产(亿)','净资产(亿)'], names:['营业收入(亿)','净利润(亿)','总资产(亿)','净资产(亿)'],
...@@ -85,8 +88,10 @@ export default { ...@@ -85,8 +88,10 @@ export default {
}, },
methods: { methods: {
async handleQuery(val){ async handleQuery(val){
this.isSkeleton = true;
let res = await financialData({cid: this.companyId}) let res = await financialData({cid: this.companyId})
if(res.code==200 && res.data){ if(res.code==200 && res.data){
this.isSkeleton = false;
this.viewData = res.data this.viewData = res.data
if(this.viewData.length>0){ if(this.viewData.length>0){
this.$nextTick(() => { this.$nextTick(() => {
......
...@@ -66,7 +66,7 @@ ...@@ -66,7 +66,7 @@
</div> </div>
</div> </div>
<div class="company-menu"> <div class="company-menu">
<el-button v-if="companyInfo.claimStatus==1" @click="cancelClaimClick()" class="hasClaim"><i class="el-ico-claim" alt="已认领" title="已认领"></i> 已认领</el-button> <el-button v-if="companyInfo.claimStatus==0" @click="cancelClaimClick()" class="hasClaim"><i class="el-ico-claim" alt="已认领" title="已认领"></i> 已认领</el-button>
<el-button @click="handleClaim" v-else class="claim" v-loading="claimLoading"><i class="el-ico-claim" alt="认领客户" title="认领客户"></i> 认领客户</el-button> <el-button @click="handleClaim" v-else class="claim" v-loading="claimLoading"><i class="el-ico-claim" alt="认领客户" title="认领客户"></i> 认领客户</el-button>
</div> </div>
...@@ -231,7 +231,7 @@ export default { ...@@ -231,7 +231,7 @@ export default {
this.claimLoading = false this.claimLoading = false
if(res.code==200){ if(res.code==200){
this.dialogVisible=true this.dialogVisible=true
this.companyInfo.claimStatus = 1 this.companyInfo.claimStatus = 0
this.customerId = res.data.customerId this.customerId = res.data.customerId
} }
}else{ }else{
...@@ -252,7 +252,7 @@ export default { ...@@ -252,7 +252,7 @@ export default {
let res = await api.historyClaim(this.companyInfo.companyName) let res = await api.historyClaim(this.companyInfo.companyName)
if(res.code==200){ if(res.code==200){
this.dialogVisible2 = false; this.dialogVisible2 = false;
this.companyInfo.claimStatus = 1 this.companyInfo.claimStatus = 0
}else{ }else{
this.$message.error(res.msg) this.$message.error(res.msg)
} }
...@@ -261,7 +261,7 @@ export default { ...@@ -261,7 +261,7 @@ export default {
let res = await api.cancelClaim(this.companyInfo.companyName) let res = await api.cancelClaim(this.companyInfo.companyName)
if(res.code==200){ if(res.code==200){
this.dialogVisible1 = false; this.dialogVisible1 = false;
this.companyInfo.claimStatus = 0 this.companyInfo.claimStatus = 1
}else{ }else{
this.$message.error(res.msg) this.$message.error(res.msg)
} }
......
<template> <template>
<div class="app-container operations-container"> <div class="app-container operations-container">
<div class="common-title">公司经营</div> <div class="common-title">公司经营</div>
<div class="part-swiper" v-if="operList.length>0"> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class="part-swiper" v-if="operList.length>0&&!isSkeleton">
<div class="swiper-containers swiper-oper" :style="operList.length<=6?'margin-left:0px; width: 100%;':''"> <div class="swiper-containers swiper-oper" :style="operList.length<=6?'margin-left:0px; width: 100%;':''">
<ul class="swiper-wrapper"> <ul class="swiper-wrapper">
<li class="swiper-slide" v-for="(item, index) in operList" :key="index"> <li class="swiper-slide" v-for="(item, index) in operList" :key="index">
...@@ -18,7 +19,7 @@ ...@@ -18,7 +19,7 @@
<div class="swiper-button-prev swiper-oper-prev" slot="button-prev" style="left: 0;"><i class="el-icon-arrow-left"></i></div> <div class="swiper-button-prev swiper-oper-prev" slot="button-prev" style="left: 0;"><i class="el-icon-arrow-left"></i></div>
<div class="swiper-button-next swiper-oper-next" slot="button-next" style="right: 0"><i class="el-icon-arrow-right"></i></div> <div class="swiper-button-next swiper-oper-next" slot="button-next" style="right: 0"><i class="el-icon-arrow-right"></i></div>
</div> </div>
<div class="part-swiper" v-else> <div class="part-swiper" v-if="operList.length==0&&!isSkeleton">
<no-data /> <no-data />
</div> </div>
<div class="flex-box operations-list"> <div class="flex-box operations-list">
...@@ -33,17 +34,19 @@ ...@@ -33,17 +34,19 @@
<script> <script>
import {bondCreditRating} from '@/api/detail/party-a/overview' import {bondCreditRating} from '@/api/detail/party-a/overview'
var Swiper = require('@/assets/lib/swiper/swiper-bundle.min.js') var Swiper = require('@/assets/lib/swiper/swiper-bundle.min.js')
import skeleton from '@/views/project/projectList/component/skeleton'
import "@/assets/lib/swiper/swiper-bundle.css" import "@/assets/lib/swiper/swiper-bundle.css"
import NoData from '../../component/noData' import NoData from '../../component/noData'
export default { export default {
name: 'Overview', name: 'Overview',
props: ['companyId', 'financial'], props: ['companyId', 'financial'],
components: { components: {
NoData NoData,skeleton
}, },
data() { data() {
return { return {
operList: [], operList: [],
isSkeleton:true,
gsjyList: [ gsjyList: [
{ name: '总资产', ico: require('@/assets/images/detail/overview/gsjy_ico1.png'), amount: ''}, { name: '总资产', ico: require('@/assets/images/detail/overview/gsjy_ico1.png'), amount: ''},
{ name: '净资产', ico: require('@/assets/images/detail/overview/gsjy_ico2.png'), amount: ''}, { name: '净资产', ico: require('@/assets/images/detail/overview/gsjy_ico2.png'), amount: ''},
...@@ -71,8 +74,10 @@ export default { ...@@ -71,8 +74,10 @@ export default {
}) })
}, },
async handleQuery() { async handleQuery() {
this.isSkeleton = true;
let res = await bondCreditRating({cid: this.companyId}) let res = await bondCreditRating({cid: this.companyId})
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
this.operList = res.data || [] this.operList = res.data || []
this.$nextTick(() => { this.$nextTick(() => {
this.companySwiper() this.companySwiper()
......
...@@ -6,7 +6,8 @@ ...@@ -6,7 +6,8 @@
<el-tab-pane label="对外投资" :disabled="shipTotal<1" 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-tab-pane label="分支机构" :disabled="affiliatesTotal<1" name="third"></el-tab-pane>
</el-tabs> </el-tabs>
<div class="table-item"> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class="table-item" v-else>
<div class="rela-person" v-show="activeName=='first'">实际控制人:{{financial&&financial.actualController || '--'}}</div> <div class="rela-person" v-show="activeName=='first'">实际控制人:{{financial&&financial.actualController || '--'}}</div>
<el-table :data="holderData" border style="width: 100%" v-show="activeName=='first'"> <el-table :data="holderData" border style="width: 100%" v-show="activeName=='first'">
<el-table-column label="序号" width="55" align="left" fixed> <el-table-column label="序号" width="55" align="left" fixed>
...@@ -103,14 +104,16 @@ ...@@ -103,14 +104,16 @@
import {encodeStr, changePath} from "@/assets/js/common" import {encodeStr, changePath} from "@/assets/js/common"
import {bestStockPage, investment,affiliates} from '@/api/detail/party-a/overview' import {bestStockPage, investment,affiliates} from '@/api/detail/party-a/overview'
import NoData from '../../component/noData' import NoData from '../../component/noData'
import skeleton from '@/views/project/projectList/component/skeleton'
export default { export default {
name: 'Relationship', name: 'Relationship',
props: ['companyId', 'financial'], props: ['companyId', 'financial'],
components: { components: {
NoData NoData,skeleton
}, },
data() { data() {
return { return {
isSkeleton:true,
encodeStr, encodeStr,
activeName:'first', activeName:'first',
//表格数据 //表格数据
...@@ -147,8 +150,10 @@ export default { ...@@ -147,8 +150,10 @@ export default {
}, },
methods: { methods: {
async handleQuery(){ async handleQuery(){
this.isSkeleton = true;
let res = await bestStockPage(this.holderParams) let res = await bestStockPage(this.holderParams)
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
if(res.rows&&res.rows.length>0){ if(res.rows&&res.rows.length>0){
res.rows.forEach(item => { res.rows.forEach(item => {
item.stockPercent?item.stockPercent = parseFloat(Number(item.stockPercent*100).toFixed(4))+'%':'' item.stockPercent?item.stockPercent = parseFloat(Number(item.stockPercent*100).toFixed(4))+'%':''
......
<template> <template>
<div class="app-container rela-container"> <div class="app-container rela-container">
<div class="common-title">高管</div> <div class="common-title">高管</div>
<div class="table-item"> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class="table-item" v-else>
<el-table <el-table
v-if="tableData.length>0" v-if="tableData.length>0"
:data="tableData" :data="tableData"
...@@ -36,12 +37,13 @@ ...@@ -36,12 +37,13 @@
<script> <script>
import {keymembers} from "@/api/detail/party-a/overview" import {keymembers} from "@/api/detail/party-a/overview"
import NoData from '../../component/noData' import NoData from '../../component/noData'
import skeleton from '@/views/project/projectList/component/skeleton'
export default { export default {
name: 'Senior', name: 'Senior',
props: ['companyId'], props: ['companyId'],
data() { data() {
return { return {
isSkeleton:true,
queryParams: { queryParams: {
cid: this.companyId, cid: this.companyId,
pageNum: 1, pageNum: 1,
...@@ -52,7 +54,7 @@ export default { ...@@ -52,7 +54,7 @@ export default {
} }
}, },
components: { components: {
NoData NoData,skeleton
}, },
created() { created() {
this.handleQuery() this.handleQuery()
...@@ -61,8 +63,10 @@ export default { ...@@ -61,8 +63,10 @@ export default {
}, },
methods: { methods: {
async handleQuery(){ async handleQuery(){
this.isSkeleton = true;
let res = await keymembers(this.queryParams) let res = await keymembers(this.queryParams)
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
let tempRows = [] let tempRows = []
if(res.rows&&res.rows.length>0){ if(res.rows&&res.rows.length>0){
let arrLength = res.rows.length%2==0?(res.rows.length/2):(Math.floor(res.rows.length/2)+1) let arrLength = res.rows.length%2==0?(res.rows.length/2):(Math.floor(res.rows.length/2)+1)
......
<template> <template>
<div class="flex-box app-container part-container"> <div class="flex-box app-container part-container">
<div class="tender-list" ref="zbggScroll" @scroll="scrollbottom()"> <div class="tender-list" ref="zbggScroll" @scroll="scrollbottom()">
<div class="common-title">招标公告</div> <div class="common-title">招标公告</div>
<template v-if="zbggList.length>0"> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<template v-if="zbggList.length>0&&!isSkeleton">
<div class="tender-item" v-for="(item, index) in zbggList" :key="index"> <div class="tender-item" v-for="(item, index) in zbggList" :key="index">
<div class="flex-box tender-title"><div class="text-cl2" :title="item.projectName"><router-link :to="'/radar/Notice/details/'+item.bid" tag="a" class="a-link">{{item.projectName}}</router-link></div><span :class="item.projectCategory=='项目动态'?'style2':item.tag=='招投标'?'style4':'style1'" v-if="item.projectCategory">{{item.projectCategory}}</span></div> <div class="flex-box tender-title"><div class="text-cl2" :title="item.projectName"><router-link :to="'/radar/Notice/details/'+item.bid" tag="a" class="a-link">{{item.projectName}}</router-link></div><span :class="item.projectCategory=='项目动态'?'style2':item.tag=='招投标'?'style4':'style1'" v-if="item.projectCategory">{{item.projectCategory}}</span></div>
<span class="tender-time"><span @click="handleUrl(item.url)" style="cursor: pointer;">{{item.dataSource}}</span> {{item.issueTime}}</span> <span class="tender-time"><span @click="handleUrl(item.url)" style="cursor: pointer;">{{item.dataSource}}</span> {{item.issueTime}}</span>
</div> </div>
</template> </template>
<div class="tender-no-data" v-else> <div class="tender-no-data" v-if="zbggList.length==0&&!isSkeleton">
<no-data /> <no-data />
</div> </div>
</div> </div>
<div class="tender-list" ref="trendScroll" @scroll="scrollbottom(true)"> <div class="tender-list" ref="trendScroll" @scroll="scrollbottom(true)" >
<div class="common-title">企业动态</div> <div class="common-title">企业动态</div>
<template v-if="trendList.length>0"> <skeleton style="margin-left:16px;" v-if="isSkeleton1"></skeleton>
<template v-if="trendList.length>0&&!isSkeleton1">
<div class="tender-item" v-for="(item, index) in trendList" :key="index"> <div class="tender-item" v-for="(item, index) in trendList" :key="index">
<div class="flex-box tender-title"><div class="text-cl2" :title="tendTitle(item.details)">{{tendTitle(item.details)}}</div><span :class="item.parentDimension=='新增分支机构'?'style2':item.parentDimension=='新增施工工法'?'style3':'style1'">{{item.parentDimension}}</span></div> <div class="flex-box tender-title"><div class="text-cl2" :title="tendTitle(item.details)">{{tendTitle(item.details)}}</div><span :class="item.parentDimension=='新增分支机构'?'style2':item.parentDimension=='新增施工工法'?'style3':'style1'">{{item.parentDimension}}</span></div>
<span class="tender-time">{{item.createTime}}</span> <span class="tender-time">{{item.createTime}}</span>
</div> </div>
</template> </template>
<div class="tender-no-data" v-else> <div class="tender-no-data" v-if="trendList.length==0&&!isSkeleton1">
<no-data /> <no-data />
</div> </div>
</div> </div>
...@@ -30,14 +33,17 @@ ...@@ -30,14 +33,17 @@
<script> <script>
import {bidNoticePage, dynamicPage} from "@/api/detail/party-a/overview" import {bidNoticePage, dynamicPage} from "@/api/detail/party-a/overview"
import NoData from '../../component/noData' import NoData from '../../component/noData'
import skeleton from '@/views/project/projectList/component/skeleton'
export default { export default {
name: 'Tender', name: 'Tender',
props: ['companyId'], props: ['companyId'],
components: { components: {
NoData NoData,skeleton
}, },
data() { data() {
return { return {
isSkeleton:true,
isSkeleton1:true,
zbggParams: { zbggParams: {
cid: this.companyId, cid: this.companyId,
sort: 3, sort: 3,
...@@ -81,15 +87,19 @@ export default { ...@@ -81,15 +87,19 @@ export default {
}, },
methods: { methods: {
async handleQuery() { async handleQuery() {
this.isSkeleton = true;
this.isSkeleton1 = true;
let [notice, namic] = await Promise.all([ let [notice, namic] = await Promise.all([
bidNoticePage(this.zbggParams), bidNoticePage(this.zbggParams),
dynamicPage(this.trendParams) dynamicPage(this.trendParams)
]) ])
if(notice.code==200){ if(notice.code==200){
this.isSkeleton = false;
this.zbggList = notice.rows; this.zbggList = notice.rows;
this.zbggTotal = notice.total; this.zbggTotal = notice.total;
} }
if(namic.code==200){ if(namic.code==200){
this.isSkeleton1 = false;
this.trendList = namic.rows; this.trendList = namic.rows;
this.trendTotal = namic.total; this.trendTotal = namic.total;
} }
......
<template> <template>
<div class="app-container detail-container"> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class="app-container detail-container" v-else>
<head-form <head-form
title="高管信息" title="高管信息"
:form-data="formData" :form-data="formData"
...@@ -66,11 +67,13 @@ export default { ...@@ -66,11 +67,13 @@ export default {
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
let res = await keymembers(param) let res = await keymembers(param)
this.tableLoading = false this.tableLoading = false
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
let tempRows = [] let tempRows = []
if(res.rows&&res.rows.length>0){ if(res.rows&&res.rows.length>0){
let arrLength = res.rows.length%2==0?(res.rows.length/2):(Math.floor(res.rows.length/2)+1) let arrLength = res.rows.length%2==0?(res.rows.length/2):(Math.floor(res.rows.length/2)+1)
......
<template> <template>
<div class="app-container detail-container"> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class="app-container detail-container" v-else>
<head-form <head-form
title="" title=""
:form-data="formData" :form-data="formData"
...@@ -78,12 +79,14 @@ export default { ...@@ -78,12 +79,14 @@ export default {
this.handleQuery() this.handleQuery()
}, },
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
param.isHistory = this.activeName == 'first' ? 0 : 1 param.isHistory = this.activeName == 'first' ? 0 : 1
let res = await bestStockPage(param) let res = await bestStockPage(param)
this.tableLoading = false this.tableLoading = false
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total
......
<template> <template>
<div class="app-container detail-container"> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class="app-container detail-container" v-else>
<head-form <head-form
title="对外投资" title="对外投资"
:form-data="formData" :form-data="formData"
...@@ -97,11 +98,13 @@ export default { ...@@ -97,11 +98,13 @@ export default {
}, },
methods: { methods: {
async handleQuery(params) { async handleQuery(params) {
this.isSkeleton = true;
this.tableLoading = true this.tableLoading = true
let param = params?params:this.queryParams let param = params?params:this.queryParams
let res = await investment(param) let res = await investment(param)
this.tableLoading = false this.tableLoading = false
if(res.code==200){ if(res.code==200){
this.isSkeleton = false;
this.tableData = res.rows this.tableData = res.rows
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total
......
<template> <template>
<div class="app-container part-container"> <div class="app-container part-container">
<div class="view-content"><Infoheader :companyId="companyId" :companyInfo="companyInfo" :statistic="statistic" /></div><!-- 企业信息 --> <div class="view-content"><skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton><Infoheader v-else :companyId="companyId" :companyInfo="companyInfo" :statistic="statistic" /></div><!-- 企业信息 -->
<div class="view-content"><Operations :companyId="companyId" :financial="financial" /></div><!-- 公司经营 --> <div class="view-content"><Operations :companyId="companyId" :financial="financial" /></div><!-- 公司经营 -->
<div class="view-content"><Bidding :companyId="companyId" /></div><!--招标偏好、业务往来--> <div class="view-content"><Bidding :companyId="companyId" /></div><!--招标偏好、业务往来-->
<div class="view-content"><Busclue :companyId="companyId" :statistic="statistic" /></div><!--商机线索--> <div class="view-content"><Busclue :companyId="companyId" :statistic="statistic" /></div><!--商机线索-->
...@@ -23,10 +23,11 @@ import Finance from './component/finance' ...@@ -23,10 +23,11 @@ import Finance from './component/finance'
import Relationship from './component/relationship' import Relationship from './component/relationship'
import Senior from './component/senior' import Senior from './component/senior'
import Risk from './component/risk' import Risk from './component/risk'
import skeleton from '@/views/project/projectList/component/skeleton'
import Tender from "./component/tender" import Tender from "./component/tender"
export default { export default {
name: 'Overview', name: 'Overview',
props: ['companyId', 'companyInfo'], props: ['companyId', 'companyInfo','isSkeleton'],
components: { components: {
Infoheader, Infoheader,
Operations, Operations,
...@@ -36,6 +37,7 @@ export default { ...@@ -36,6 +37,7 @@ export default {
Senior, Senior,
Risk, Risk,
Finance, Finance,
skeleton,
Tender Tender
}, },
data() { data() {
......
...@@ -8,9 +8,9 @@ ...@@ -8,9 +8,9 @@
:isExcel="true" :isExcel="true"
@handle-search="handleSearch" @handle-search="handleSearch"
/> />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables
:tableLoading="tableLoading" v-if="!isSkeleton"
:tableData="tableData" :tableData="tableData"
:forData="forData" :forData="forData"
:tableDataTotal="tableDataTotal" :tableDataTotal="tableDataTotal"
...@@ -27,11 +27,12 @@ import { ...@@ -27,11 +27,12 @@ import {
abnormalYears abnormalYears
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation'
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
import skeleton from '../component/skeleton'
export default { export default {
name: 'BusinessAnomaly', name: 'BusinessAnomaly',
mixins: [mixin], mixins: [mixin],
components: { components: {
skeleton
}, },
props: ['companyId'], props: ['companyId'],
data() { data() {
...@@ -56,6 +57,7 @@ export default { ...@@ -56,6 +57,7 @@ export default {
tableLoading:false, tableLoading:false,
tableData:[], tableData:[],
tableDataTotal:0, tableDataTotal:0,
isSkeleton:true
} }
}, },
created() { created() {
...@@ -68,11 +70,11 @@ export default { ...@@ -68,11 +70,11 @@ export default {
methods: { methods: {
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams
this.tableLoading = true this.isSkeleton = true
abnormalPage(data).then(res => { abnormalPage(data).then(res => {
this.tableData = res.rows this.tableData = res.rows
this.tableDataTotal = res.total this.tableDataTotal = res.total
this.tableLoading = false this.isSkeleton = false
}) })
}, },
years(){ years(){
......
...@@ -8,9 +8,9 @@ ...@@ -8,9 +8,9 @@
:isExcel="true" :isExcel="true"
@handle-search="handleSearch" @handle-search="handleSearch"
/> />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables
:tableLoading="tableLoading" v-if="!isSkeleton"
:tableData="tableData" :tableData="tableData"
:forData="forData" :forData="forData"
:tableDataTotal="tableDataTotal" :tableDataTotal="tableDataTotal"
...@@ -29,11 +29,12 @@ import { ...@@ -29,11 +29,12 @@ import {
noticesCaseReason noticesCaseReason
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation'
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
import skeleton from '../component/skeleton'
export default { export default {
name: 'CourtNotice', name: 'CourtNotice',
mixins: [mixin], mixins: [mixin],
components: { components: {
skeleton
}, },
props: ['companyId'], props: ['companyId'],
data() { data() {
...@@ -60,6 +61,7 @@ export default { ...@@ -60,6 +61,7 @@ export default {
tableLoading:false, tableLoading:false,
tableData:[], tableData:[],
tableDataTotal:0, tableDataTotal:0,
isSkeleton:true
} }
}, },
created() { created() {
...@@ -74,11 +76,11 @@ export default { ...@@ -74,11 +76,11 @@ export default {
methods: { methods: {
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams
this.tableLoading = true this.isSkeleton = true
noticesPage(data).then(res => { noticesPage(data).then(res => {
this.tableData = res.rows this.tableData = res.rows
this.tableDataTotal = res.total this.tableDataTotal = res.total
this.tableLoading = false this.isSkeleton = false
}) })
}, },
// 公告 // 公告
......
...@@ -8,10 +8,10 @@ ...@@ -8,10 +8,10 @@
:isExcel="false" :isExcel="false"
@handle-search="handleSearch" @handle-search="handleSearch"
/> />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables
v-if="!isSkeleton"
:index-fixed="true" :index-fixed="true"
:tableLoading="tableLoading"
:tableData="tableData" :tableData="tableData"
:forData="forData" :forData="forData"
:tableDataTotal="tableDataTotal" :tableDataTotal="tableDataTotal"
...@@ -27,11 +27,12 @@ import { ...@@ -27,11 +27,12 @@ import {
executedPage executedPage
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation'
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
import skeleton from '../component/skeleton'
export default { export default {
name: 'Dishonesty', name: 'Dishonesty',
mixins: [mixin], mixins: [mixin],
components: { components: {
skeleton
}, },
props: ['companyId'], props: ['companyId'],
data() { data() {
...@@ -56,6 +57,7 @@ export default { ...@@ -56,6 +57,7 @@ export default {
tableLoading:false, tableLoading:false,
tableData:[], tableData:[],
tableDataTotal:0, tableDataTotal:0,
isSkeleton:true
} }
}, },
created() { created() {
...@@ -67,11 +69,11 @@ export default { ...@@ -67,11 +69,11 @@ export default {
methods: { methods: {
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams
this.tableLoading = true this.isSkeleton = true
executedPage(data).then(res => { executedPage(data).then(res => {
this.tableData = res.rows this.tableData = res.rows
this.tableDataTotal = res.total this.tableDataTotal = res.total
this.tableLoading = false this.isSkeleton = false
}) })
} }
} }
......
...@@ -8,9 +8,9 @@ ...@@ -8,9 +8,9 @@
:isExcel="false" :isExcel="false"
@handle-search="handleSearch" @handle-search="handleSearch"
/> />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables
:tableLoading="tableLoading" v-if="!isSkeleton"
:tableData="tableData" :tableData="tableData"
:forData="forData" :forData="forData"
:tableDataTotal="tableDataTotal" :tableDataTotal="tableDataTotal"
...@@ -26,11 +26,12 @@ import { ...@@ -26,11 +26,12 @@ import {
executedPersonsPage executedPersonsPage
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation'
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
import skeleton from '../component/skeleton'
export default { export default {
name: 'IfThePerson', name: 'IfThePerson',
mixins: [mixin], mixins: [mixin],
components: { components: {
skeleton
}, },
props: ['companyId'], props: ['companyId'],
data() { data() {
...@@ -53,6 +54,7 @@ export default { ...@@ -53,6 +54,7 @@ export default {
tableLoading:false, tableLoading:false,
tableData:[], tableData:[],
tableDataTotal:0, tableDataTotal:0,
isSkeleton:true
} }
}, },
created() { created() {
...@@ -64,11 +66,11 @@ export default { ...@@ -64,11 +66,11 @@ export default {
methods: { methods: {
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams
this.tableLoading = true this.isSkeleton = true
executedPersonsPage(data).then(res => { executedPersonsPage(data).then(res => {
this.tableData = res.rows this.tableData = res.rows
this.tableDataTotal = res.total this.tableDataTotal = res.total
this.tableLoading = false this.isSkeleton = false
}) })
} }
} }
......
...@@ -8,9 +8,9 @@ ...@@ -8,9 +8,9 @@
:isExcel="false" :isExcel="false"
@handle-search="handleSearch" @handle-search="handleSearch"
/> />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables
:tableLoading="tableLoading" v-if="!isSkeleton"
:tableData="tableData" :tableData="tableData"
:forData="forData" :forData="forData"
:tableDataTotal="tableDataTotal" :tableDataTotal="tableDataTotal"
...@@ -35,11 +35,12 @@ import { ...@@ -35,11 +35,12 @@ import {
lawsuitsRole lawsuitsRole
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation'
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
import skeleton from '../component/skeleton'
export default { export default {
name: 'Judgment', name: 'Judgment',
mixins: [mixin], mixins: [mixin],
components: { components: {
skeleton
}, },
props: ['companyId'], props: ['companyId'],
data() { data() {
...@@ -68,6 +69,7 @@ export default { ...@@ -68,6 +69,7 @@ export default {
tableLoading:false, tableLoading:false,
tableData:[], tableData:[],
tableDataTotal:0, tableDataTotal:0,
isSkeleton:true
} }
}, },
created() { created() {
...@@ -81,14 +83,14 @@ export default { ...@@ -81,14 +83,14 @@ export default {
methods: { methods: {
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams
this.tableLoading = true this.isSkeleton = true
lawsuitsPage(data).then(res => { lawsuitsPage(data).then(res => {
this.tableData = res.rows this.tableData = res.rows
for (var i=0;i<this.tableData.length;i++){ for (var i=0;i<this.tableData.length;i++){
this.tableData[i].relatedCompanies = JSON.parse(this.tableData[i].relatedCompanies) this.tableData[i].relatedCompanies = JSON.parse(this.tableData[i].relatedCompanies)
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total
this.tableLoading = false this.isSkeleton = false
}) })
}, },
lawsuitsCauseActions(){ lawsuitsCauseActions(){
......
...@@ -8,10 +8,10 @@ ...@@ -8,10 +8,10 @@
:isExcel="false" :isExcel="false"
@handle-search="handleSearch" @handle-search="handleSearch"
/> />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables
:index-fixed="true" :index-fixed="true"
:tableLoading="tableLoading" v-if="!isSkeleton"
:tableData="tableData" :tableData="tableData"
:forData="forData" :forData="forData"
:tableDataTotal="tableDataTotal" :tableDataTotal="tableDataTotal"
...@@ -35,11 +35,12 @@ import { ...@@ -35,11 +35,12 @@ import {
kaitingPureRole kaitingPureRole
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation'
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
import skeleton from '../component/skeleton'
export default { export default {
name: 'OpenacourtsessionNotice', name: 'OpenacourtsessionNotice',
mixins: [mixin], mixins: [mixin],
components: { components: {
skeleton
}, },
props: ['companyId'], props: ['companyId'],
data() { data() {
...@@ -71,6 +72,7 @@ export default { ...@@ -71,6 +72,7 @@ export default {
tableLoading:false, tableLoading:false,
tableData:[], tableData:[],
tableDataTotal:0, tableDataTotal:0,
isSkeleton:true
} }
}, },
created() { created() {
...@@ -88,14 +90,14 @@ export default { ...@@ -88,14 +90,14 @@ export default {
}, },
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams
this.tableLoading = true this.isSkeleton = true
kaitingPage(data).then(res => { kaitingPage(data).then(res => {
this.tableData = res.rows this.tableData = res.rows
for (var i=0;i<this.tableData.length;i++){ for (var i=0;i<this.tableData.length;i++){
this.tableData[i].relatedCompanies = JSON.parse(this.tableData[i].relatedCompanies) this.tableData[i].relatedCompanies = JSON.parse(this.tableData[i].relatedCompanies)
} }
this.tableDataTotal = res.total this.tableDataTotal = res.total
this.tableLoading = false this.isSkeleton = false
}) })
}, },
kaitingCauseActions(){ kaitingCauseActions(){
......
...@@ -8,10 +8,10 @@ ...@@ -8,10 +8,10 @@
:isExcel="true" :isExcel="true"
@handle-search="handleSearch" @handle-search="handleSearch"
/> />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables
v-if="!isSkeleton"
:indexFixed="true" :indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData" :tableData="tableData"
:forData="forData" :forData="forData"
:tableDataTotal="tableDataTotal" :tableDataTotal="tableDataTotal"
...@@ -35,11 +35,12 @@ import { ...@@ -35,11 +35,12 @@ import {
penalizePage, penalizePage,
penalizeReasonType penalizeReasonType
} from '@/api/detail/party-a/riskInformation' } from '@/api/detail/party-a/riskInformation'
import skeleton from '../component/skeleton'
export default { export default {
name: 'Punish', name: 'Punish',
mixins: [mixin], mixins: [mixin],
components: { components: {
skeleton
}, },
props: ['companyId'], props: ['companyId'],
data() { data() {
...@@ -66,6 +67,7 @@ export default { ...@@ -66,6 +67,7 @@ export default {
tableData:[], tableData:[],
tableDataTotal:0, tableDataTotal:0,
showList:[], showList:[],
isSkeleton:true
} }
}, },
created() { created() {
...@@ -78,11 +80,11 @@ export default { ...@@ -78,11 +80,11 @@ export default {
methods: { methods: {
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams
this.tableLoading = true this.isSkeleton = true
penalizePage(data).then((res) => { penalizePage(data).then((res) => {
this.tableData = res.rows this.tableData = res.rows
this.tableDataTotal = res.total this.tableDataTotal = res.total
this.tableLoading = false this.isSkeleton = false
}) })
}, },
penalizeReasonTypeData(){ penalizeReasonTypeData(){
......
...@@ -8,8 +8,9 @@ ...@@ -8,8 +8,9 @@
:isExcel="true" :isExcel="true"
@handle-search="handleSearch" @handle-search="handleSearch"
/> />
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables
v-if="!isSkeleton"
:tableLoading="tableLoading" :tableLoading="tableLoading"
:tableData="tableData" :tableData="tableData"
:forData="forData" :forData="forData"
...@@ -32,11 +33,12 @@ import { ...@@ -32,11 +33,12 @@ import {
landUse landUse
} from '@/api/detail/party-a/urbanLnvestment' } from '@/api/detail/party-a/urbanLnvestment'
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
import skeleton from '../component/skeleton'
export default { export default {
name: 'landAcquisition', name: 'landAcquisition',
mixins: [mixin], mixins: [mixin],
components: { components: {
skeleton
}, },
props: ['companyId'], props: ['companyId'],
data() { data() {
...@@ -66,6 +68,7 @@ export default { ...@@ -66,6 +68,7 @@ export default {
tableLoading:false, tableLoading:false,
tableData:[], tableData:[],
tableDataTotal:0, tableDataTotal:0,
isSkeleton:true
} }
}, },
created() { created() {
...@@ -78,11 +81,11 @@ export default { ...@@ -78,11 +81,11 @@ export default {
methods: { methods: {
handleQuery(params) { handleQuery(params) {
let data = params ? params : this.queryParams let data = params ? params : this.queryParams
this.tableLoading = true this.isSkeleton = true
landTransactionPage(data).then(res=>{ landTransactionPage(data).then(res=>{
this.tableData = res.rows this.tableData = res.rows
this.tableDataTotal = res.total this.tableDataTotal = res.total
this.tableLoading = false this.isSkeleton = false
}) })
}, },
//土地用途 //土地用途
......
...@@ -6,7 +6,8 @@ ...@@ -6,7 +6,8 @@
</div> </div>
<div class="params-dw"><img src="@/assets/images/addree.png" />{{ addressList }}</div> <div class="params-dw"><img src="@/assets/images/addree.png" />{{ addressList }}</div>
</div> </div>
<div class="table-item"> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="table-item" v-if="!isSkeleton">
<el-table <el-table
:tableLoading="tableLoading" :tableLoading="tableLoading"
:data="getValues" :data="getValues"
...@@ -29,13 +30,14 @@ ...@@ -29,13 +30,14 @@
<script> <script>
import dataRegion from '@/assets/json/dataRegion' import dataRegion from '@/assets/json/dataRegion'
import skeleton from '../component/skeleton'
import { import {
regionalEconomy regionalEconomy
} from '@/api/detail/party-a/urbanLnvestment' } from '@/api/detail/party-a/urbanLnvestment'
export default { export default {
name: 'regionalEconomies', name: 'regionalEconomies',
components: { components: {
skeleton
}, },
props: ['companyId','companyInfo'], props: ['companyId','companyInfo'],
data() { data() {
...@@ -209,7 +211,8 @@ export default { ...@@ -209,7 +211,8 @@ export default {
label: '债务率-宽口径(%)', label: '债务率-宽口径(%)',
}, },
], ],
tableLoading: true tableLoading: true,
isSkeleton:true
} }
}, },
created() { created() {
...@@ -228,11 +231,11 @@ export default { ...@@ -228,11 +231,11 @@ export default {
methods: { methods: {
//地区 //地区
regionalEconomys() { regionalEconomys() {
this.tableLoading = true this.isSkeleton = true
if(this.companyInfo){ if(this.companyInfo){
regionalEconomy(this.params).then(res => { regionalEconomy(this.params).then(res => {
this.tableData = res.data this.tableData = res.data
this.tableLoading = false this.isSkeleton = false
}) })
this.dataRegion(this.companyInfo.provinceId, this.companyInfo.cityId) this.dataRegion(this.companyInfo.provinceId, this.companyInfo.cityId)
} }
......
...@@ -87,8 +87,9 @@ ...@@ -87,8 +87,9 @@
</div> </div>
</template> </template>
</head-form> </head-form>
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<tables <tables
v-if="!isSkeleton"
:tableLoading="tableLoading" :tableLoading="tableLoading"
:tableData="tableData" :tableData="tableData"
:forData="forData" :forData="forData"
...@@ -118,6 +119,7 @@ ...@@ -118,6 +119,7 @@
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
import skeleton from '../component/skeleton'
import dataRegion from '@/assets/json/dataRegion' import dataRegion from '@/assets/json/dataRegion'
import { import {
urbanInvestmentPage, urbanInvestmentPage,
...@@ -127,7 +129,7 @@ export default { ...@@ -127,7 +129,7 @@ export default {
name: 'SameRegion', name: 'SameRegion',
mixins: [mixin], mixins: [mixin],
components: { components: {
skeleton
}, },
props: ['companyId', 'companyInfo'], props: ['companyId', 'companyInfo'],
data() { data() {
...@@ -200,6 +202,7 @@ export default { ...@@ -200,6 +202,7 @@ export default {
tableLoading:false, tableLoading:false,
tableData:[], tableData:[],
tableDataTotal:0, tableDataTotal:0,
isSkeleton:true
} }
}, },
watch:{ watch:{
...@@ -338,12 +341,12 @@ export default { ...@@ -338,12 +341,12 @@ export default {
}, },
handleQuery(params){ handleQuery(params){
this.tableLoading = true this.isSkeleton = true
let data = params ? params : this.queryParams let data = params ? params : this.queryParams
urbanInvestmentPage(data).then(res => { urbanInvestmentPage(data).then(res => {
this.tableData = res.data.list this.tableData = res.data.list
this.tableDataTotal = res.data.totalCount this.tableDataTotal = res.data.totalCount
this.tableLoading = false this.isSkeleton = false
}) })
}, },
//排序 //排序
......
...@@ -145,7 +145,7 @@ ...@@ -145,7 +145,7 @@
<skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton> <skeleton style="margin-left:16px;" v-if="isSkeleton"></skeleton>
<div class=" table-item-jf" v-if="!isSkeleton&&tableData.length>0"> <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 :data="tableData" :header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}" max-height="640" class="table-item1 fixed-table" border highlight-current-row>
<el-table-column type="index" label="序号" fixed width="60"> <el-table-column type="index" label="序号" fixed width="60">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{(pageNum - 1) *20 + scope.$index + 1}}</span> <span>{{(pageNum - 1) *20 + scope.$index + 1}}</span>
...@@ -156,13 +156,13 @@ ...@@ -156,13 +156,13 @@
<div class="renling"> <div class="renling">
<router-link :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a" class="list-titel-a" v-html="scope.row.companyName" ></router-link> <router-link :to="`/enterprise/${encodeStr(scope.row.companyId)}`" tag="a" class="list-titel-a" v-html="scope.row.companyName" ></router-link>
<div class="renling-btn" @click="claimbtn(scope.row)" > <div class="renling-btn" @click="claimbtn(scope.row)" >
<p v-if="scope.row.claimStatus" class="renling-img-true"> <p v-if="scope.row.claimStatus==0" class="renling-img-true">
</p> </p>
<p v-else class="renling-img-false"> <p v-else class="renling-img-false">
</p> </p>
<span v-if="scope.row.claimStatus" @click="cancelClaim(scope.row.companyName)" class="renling-hui"> <span v-if="scope.row.claimStatus==0" @click="cancelClaim(scope.row.companyName)" class="renling-hui">
已认领 已认领
</span> </span>
<span v-else class="renling-hei"> <span v-else class="renling-hei">
...@@ -480,6 +480,13 @@ ...@@ -480,6 +480,13 @@
<span class="dialog-footer-btn2" @click="dialogVisible1 = false">关闭</span> <span class="dialog-footer-btn2" @click="dialogVisible1 = false">关闭</span>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog :visible.sync="dialogVisible2" custom-class='dialog-renlin' title="重新认领" width="260px" :show-close="false">
<div>再次认领将会恢复客户数据</div>
<div slot="footer" class="dialog-footer">
<span class="dialog-footer-btn1" type="primary" @click="handleHistoryClaim()">确认</span>
<span class="dialog-footer-btn2" @click="dialogVisible2 = false">关闭</span>
</div>
</el-dialog>
</div> </div>
</template> </template>
...@@ -504,6 +511,7 @@ export default { ...@@ -504,6 +511,7 @@ export default {
value: "id", value: "id",
}, },
pageSize: 20, pageSize: 20,
dialogVisible2:false,
jskBidQueryDto: { jskBidQueryDto: {
provinceIds: [], provinceIds: [],
cityIds: [], cityIds: [],
...@@ -796,9 +804,18 @@ export default { ...@@ -796,9 +804,18 @@ export default {
this.pageFlag = true; this.pageFlag = true;
}); });
}, },
async handleHistoryClaim(){
let res = await api.historyClaim(this.companyName)
if(res.code==200){
this.dialogVisible2 = false;
this.search();
}else{
this.$message.error(res.msg)
}
},
claimbtn(item){ claimbtn(item){
if(item.claimStatus){ if(item.claimStatus==1){
return ; return this.dialogVisible2=true;
} }
this.companyId=item.companyId; this.companyId=item.companyId;
var info={}; var info={};
......
...@@ -422,7 +422,6 @@ export default { ...@@ -422,7 +422,6 @@ export default {
cbxmzs:'193', cbxmzs:'193',
cbxmzje:'123', cbxmzje:'123',
}, },
], ],
gjjlData:[ gjjlData:[
{ {
...@@ -672,7 +671,6 @@ export default { ...@@ -672,7 +671,6 @@ export default {
global: false global: false
} }
}, },
}, },
{ {
data: this.jyfxData1.map(item => item.dcjzje), data: this.jyfxData1.map(item => item.dcjzje),
......
...@@ -108,6 +108,9 @@ ...@@ -108,6 +108,9 @@
export default { export default {
name: 'comparison', name: 'comparison',
props:['dataQuery','provinceId'], props:['dataQuery','provinceId'],
components: {
},
data() { data() {
return { return {
queryParams: { queryParams: {
...@@ -292,7 +295,8 @@ export default { ...@@ -292,7 +295,8 @@ export default {
regionData:[], regionData:[],
compareList:[{},{},{},{},{}], compareList:[{},{},{},{},{}],
fixed: false, fixed: false,
StyWidth:null StyWidth:null,
isSkeleton:true
} }
}, },
watch: { watch: {
......
<template> <template>
<div class="regionalEconomy"> <div class="regionalEconomy">
<div class="content"> <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div v-if="!isSkeleton" class="content">
<div class="flex-box query-box"> <div class="flex-box query-box">
<div class="flex-box query-params"> <div class="flex-box query-params">
<span class="common-title">经济数据</span> <span class="common-title">经济数据</span>
...@@ -35,12 +36,12 @@ ...@@ -35,12 +36,12 @@
</el-table-column> </el-table-column>
<el-table-column prop="gdp" label="GDP(亿元)" sortable width="120" :formatter="formatStatus"/> <el-table-column prop="gdp" label="GDP(亿元)" sortable width="120" :formatter="formatStatus"/>
<el-table-column prop="gdpGrowth" label="GDP增速" sortable width="100" :formatter="formatStatus"/> <el-table-column prop="gdpGrowth" label="GDP增速(%)" sortable width="100" :formatter="formatStatus"/>
<el-table-column prop="gdpPerCapita" label="人均GDP(元)" sortable width="130" :formatter="formatStatus"/> <el-table-column prop="gdpPerCapita" label="人均GDP(元)" sortable width="130" :formatter="formatStatus"/>
<el-table-column prop="population" label="人口(万人)" sortable width="120" :formatter="formatStatus"/> <el-table-column prop="population" label="人口(万人)" sortable width="120" :formatter="formatStatus"/>
<el-table-column prop="fixedInvestment" label="固定资产投资 (亿元) " sortable width="200" :formatter="formatStatus"/> <el-table-column prop="fixedInvestment" label="固定资产投资 (亿元) " sortable width="200" :formatter="formatStatus"/>
<el-table-column prop="gbr" label="一般公共预算收入(亿元)" sortable width="200" :formatter="formatStatus"/> <el-table-column prop="gbr" label="一般公共预算收入(亿元)" sortable width="200" :formatter="formatStatus"/>
<el-table-column prop="gbe" label="一般公共预算支出(亿 元)" sortable width="200" :formatter="formatStatus"/> <el-table-column prop="gbe" label="一般公共预算支出(亿元)" sortable width="200" :formatter="formatStatus"/>
<el-table-column prop="govFundIncome" label="政府性基金收入(亿元)" sortable width="200" :formatter="formatStatus"/> <el-table-column prop="govFundIncome" label="政府性基金收入(亿元)" sortable width="200" :formatter="formatStatus"/>
<el-table-column prop="govDebtBalance" label="地方政府债务余额(亿元)" sortable width="200" :formatter="formatStatus"/> <el-table-column prop="govDebtBalance" label="地方政府债务余额(亿元)" sortable width="200" :formatter="formatStatus"/>
<el-table-column prop="uipInterestBearingDebt" label="城投平台有息债务(亿元)" sortable width="200" :formatter="formatStatus"/> <el-table-column prop="uipInterestBearingDebt" label="城投平台有息债务(亿元)" sortable width="200" :formatter="formatStatus"/>
...@@ -52,15 +53,18 @@ ...@@ -52,15 +53,18 @@
<el-pagination background :current-page="pageIndex" :page-size="pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" /> <el-pagination background :current-page="pageIndex" :page-size="pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { nationalPage,getYears } from '@/api/macro/macro' import { nationalPage,getYears } from '@/api/macro/macro'
import skeleton from '../../component/skeleton'
export default { export default {
name: 'localEconomy', name: 'localEconomy',
props:['dataQuery','provinceId'], props:['dataQuery','provinceId'],
components: {
skeleton
},
data() { data() {
return { return {
queryParams: { queryParams: {
...@@ -74,7 +78,8 @@ export default { ...@@ -74,7 +78,8 @@ export default {
pageSize: 20, pageSize: 20,
tableDataTotal: 0, tableDataTotal: 0,
show_page:true, show_page:true,
MaxPage:500 MaxPage:500,
isSkeleton:true
} }
}, },
watch: { watch: {
...@@ -95,6 +100,7 @@ export default { ...@@ -95,6 +100,7 @@ export default {
}, },
methods: { methods: {
getData(){ getData(){
this.isSkeleton = true
const params = { pageNum: this.pageIndex, pageSize: this.pageSize, year: this.queryParams.year,type:2 } const params = { pageNum: this.pageIndex, pageSize: this.pageSize, year: this.queryParams.year,type:2 }
if(this.queryParams.field){ if(this.queryParams.field){
params.field=this.queryParams.field params.field=this.queryParams.field
...@@ -113,6 +119,7 @@ export default { ...@@ -113,6 +119,7 @@ export default {
} }
// params.provinceIds=[this.dataQuery.provinceId] // params.provinceIds=[this.dataQuery.provinceId]
nationalPage(params).then(res => { nationalPage(params).then(res => {
this.isSkeleton = false
this.tableData = res.data.list this.tableData = res.data.list
this.tableDataTotal = res.data.totalCount this.tableDataTotal = res.data.totalCount
}) })
......
...@@ -173,7 +173,7 @@ export default { ...@@ -173,7 +173,7 @@ export default {
} }
} }
location(params).then(res => { location(params).then(res => {
console.log(res.data) // console.log(res.data)
}) })
} }
} }
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
element-loading-text="Loading" element-loading-text="Loading"
border border
fit fit
height="640"
@sort-change="sortChange" @sort-change="sortChange"
highlight-current-row highlight-current-row
v-if="tableDataTotal > 0 && !isSkeleton" v-if="tableDataTotal > 0 && !isSkeleton"
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
element-loading-text="Loading" element-loading-text="Loading"
@sort-change="sortChange" @sort-change="sortChange"
border border
height="640"
highlight-current-row highlight-current-row
v-if="tableDataTotal > 0 && !isSkeleton" v-if="tableDataTotal > 0 && !isSkeleton"
:default-sort = "{prop: 'gdp', order: 'descending'}" :default-sort = "{prop: 'gdp', order: 'descending'}"
...@@ -153,22 +154,12 @@ ...@@ -153,22 +154,12 @@
this.getYears() this.getYears()
}, },
mounted() { mounted() {
// window.addEventListener("scroll",this.scrolling)
}, },
beforeDestroy() { beforeDestroy() {
// window.removeEventListener("scroll", this.scrolling);
}, },
methods: { methods: {
scrolling() {
// let el = document.getElementsByClassName("el-table__fixed-header-wrapper")[0]
// let scrollTop =window.pageYOffset ||document.documentElement.scrollTop ||document.body.scrollTop;
// if (scrollTop>138){
// let top = scrollTop-138
// el.style.top = top+'px'
// }else{
// el.style.top = 0
// }
},
getYears(){ getYears(){
getYears({}).then(res => { getYears({}).then(res => {
this.yearOptions=res.data.reverse(); this.yearOptions=res.data.reverse();
......
<template>
<div class="shangji">
<div class="tabs">
<span :class="index === 0 ? 'color' : ''" @click="handleClick(0)">土地交易</span>
<span :class="index === 1 ? 'color' : ''" @click="handleClick(1)">招标公告</span>
</div>
<Tdjy v-if="index === 0"></Tdjy>
<Zhaobiao v-if="index === 1"></Zhaobiao>
</div>
</template>
<script>
import * as echarts from 'echarts';
import { countGroupByMonth,countGroupByProvince,getYear } from '@/api/macro/macro'
import Tdjy from './tdjy'
import Zhaobiao from './zhaobiao'
export default {
name: 'NationalEconomies',
components: {
Tdjy,Zhaobiao
},
data() {
return {
index:0,
}
},
created() {
},
methods: {
handleClick(key){
this.index=key
},
}
}
</script>
<style lang="scss" scoped>
.shangji{
.tabs{
.color{
background: linear-gradient(136deg, #3181FA 0%, #1371FD 100%);
box-shadow: 0px 0px 1px 0px rgba(49,129,250,0.4471);
color:#ffffff;
}
span{
display: inline-block;
width: 88px;
height: 32px;
line-height: 32px;
background: #FFFFFF;
box-shadow: 0px 0px 1px 0px rgba(49,129,250,0.4471);
border-radius: 2px;
border: 1px solid #0081FF;
color: #0081FF;
font-size: 14px;
text-align: center;
margin: 12px 16px 12px 0;
cursor: pointer;
}
}
}
</style>
This diff is collapsed.
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