Commit d2045fee authored by caixingbing's avatar caixingbing
parents 3d34a012 609878a7
...@@ -33,7 +33,7 @@ public class BusinessBacklogController extends BaseController ...@@ -33,7 +33,7 @@ public class BusinessBacklogController extends BaseController
*/ */
// @PreAuthorize("@ss.hasPermi('system:backlog:list')") // @PreAuthorize("@ss.hasPermi('system:backlog:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(@RequestBody(required=false) BusinessBacklog businessBacklog) public TableDataInfo list(BusinessBacklog businessBacklog)
{ {
startPage(); startPage();
List<BusinessBacklog> list = businessBacklogService.selectBusinessBacklogList(businessBacklog); List<BusinessBacklog> list = businessBacklogService.selectBusinessBacklogList(businessBacklog);
......
...@@ -28,7 +28,7 @@ public class BusinessContactsController extends BaseController ...@@ -28,7 +28,7 @@ public class BusinessContactsController extends BaseController
*/ */
// @PreAuthorize("@ss.hasPermi('system:contacts:list')") // @PreAuthorize("@ss.hasPermi('system:contacts:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(@RequestBody(required=false) BusinessContacts businessContacts) public TableDataInfo list(BusinessContacts businessContacts)
{ {
startPage(); startPage();
List<BusinessContacts> list = businessContactsService.selectBusinessContactsList(businessContacts); List<BusinessContacts> list = businessContactsService.selectBusinessContactsList(businessContacts);
......
...@@ -3,7 +3,9 @@ package com.dsk.web.controller.business; ...@@ -3,7 +3,9 @@ package com.dsk.web.controller.business;
import com.dsk.common.config.RuoYiConfig; import com.dsk.common.config.RuoYiConfig;
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.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.file.FileUploadUtils; import com.dsk.common.utils.file.FileUploadUtils;
import com.dsk.common.utils.file.FileUtils; import com.dsk.common.utils.file.FileUtils;
import com.dsk.framework.config.ServerConfig; import com.dsk.framework.config.ServerConfig;
...@@ -16,6 +18,7 @@ import org.springframework.web.multipart.MultipartFile; ...@@ -16,6 +18,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* @author lxl * @author lxl
...@@ -35,17 +38,17 @@ public class BusinessFileController extends BaseController { ...@@ -35,17 +38,17 @@ public class BusinessFileController extends BaseController {
*/ */
// @PreAuthorize("@ss.hasPermi('system:file:add')") // @PreAuthorize("@ss.hasPermi('system:file:add')")
// @Log(title = "项目资料文档", businessType = BusinessType.INSERT) // @Log(title = "项目资料文档", businessType = BusinessType.INSERT)
@GetMapping("/new/{filePath}") @PostMapping("/new")
public AjaxResult newFolder(@PathVariable String filePath) { public AjaxResult newFolder(@RequestBody(required=false) BusinessIdDto filePath) {
return FileUtils.newFolder(RuoYiConfig.getProfile() + filePath) ? AjaxResult.success() : AjaxResult.error(); return FileUtils.newFolder(filePath.getFilePath()) ? AjaxResult.success() : AjaxResult.error();
} }
/** /**
* 删除某个文件或整个文件夹 * 删除某个文件或整个文件夹
*/ */
@PostMapping("/remove") @PostMapping("/remove")
public AjaxResult removeFile(@RequestBody(required=false) BusinessIdDto folderPath) { public AjaxResult removeFile(@RequestBody(required=false) BusinessIdDto filePath) {
return FileUtils.delFolder(RuoYiConfig.getProfile() + folderPath.getFolderPath()) ? AjaxResult.success() : AjaxResult.error(); return FileUtils.delFolder(filePath.getFilePath()) ? AjaxResult.success() : AjaxResult.error();
} }
/** /**
...@@ -53,9 +56,16 @@ public class BusinessFileController extends BaseController { ...@@ -53,9 +56,16 @@ public class BusinessFileController extends BaseController {
* 获取文件夹中所有文件 * 获取文件夹中所有文件
*/ */
@GetMapping(value = "/list") @GetMapping(value = "/list")
public TableDataInfo getAllFiles(@RequestBody(required=false) BusinessIdDto folderPath) { public TableDataInfo getAllFiles(BusinessIdDto filePath) {
startPage(); startPage();
List<String> allFiles = FileUtils.getAllFiles(RuoYiConfig.getProfile() + folderPath.getFolderPath()); List<BusinessFileVo> allFiles;
if(StringUtils.isNumeric(filePath.getFilePath())) filePath.setFilePath(RuoYiConfig.getProfile() + filePath.getFilePath());
allFiles = FileUtils.getAllFiles(filePath.getFilePath());
//模糊查询文件
if(StringUtils.isNotEmpty(filePath.getKeyword())){
List<BusinessFileVo> allFileName = FileUtils.getAllFileNames(filePath.getFilePath());
allFiles = allFileName.stream().filter(p -> p.getFilePath().contains(filePath.getKeyword())).collect(Collectors.toList());
}
return getDataTable(allFiles); return getDataTable(allFiles);
} }
...@@ -76,20 +86,18 @@ public class BusinessFileController extends BaseController { ...@@ -76,20 +86,18 @@ public class BusinessFileController extends BaseController {
* @param request 请求头参数 * @param request 请求头参数
* @return * @return
*/ */
@PostMapping("/upload/") @PostMapping("/upload")
public AjaxResult uploadFolder(@RequestPart("file") MultipartFile file, HttpServletRequest request){ public AjaxResult uploadFolder(@RequestPart("file") MultipartFile file,HttpServletRequest request){
try { try {
String businessFileName = request.getParameter("filePath"); // String businessFileName = request.getHeader("FilePath");
String businessFileName = "10";
// 上传文件路径 // 上传文件路径
String filePath = RuoYiConfig.getUploadPath()+businessFileName; String filePath = RuoYiConfig.getUploadPath()+businessFileName+"/";
// 上传并返回新文件名称 // 上传并返回文件全路径
String fileName = FileUploadUtils.upload(filePath, file); String fileName = FileUploadUtils.upload(filePath, file);
String url = serverConfig.getUrl() + fileName; String url = serverConfig.getUrl() + fileName;
AjaxResult ajax = AjaxResult.success(); AjaxResult ajax = AjaxResult.success();
ajax.put("url", url); ajax.put("url", url);
ajax.put("fileName", fileName);
ajax.put("newFileName", FileUtils.getName(fileName));
ajax.put("originalFilename", file.getOriginalFilename());
return ajax; return ajax;
} catch (IOException e) { } catch (IOException e) {
return AjaxResult.error(e.getMessage()); return AjaxResult.error(e.getMessage());
......
...@@ -5,6 +5,7 @@ import com.dsk.common.core.domain.AjaxResult; ...@@ -5,6 +5,7 @@ import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessFollowRecord; import com.dsk.common.core.domain.entity.BusinessFollowRecord;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.domain.BusinessIdDto; import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.BusinessListDto;
import com.dsk.system.service.IBusinessFollowRecordService; import com.dsk.system.service.IBusinessFollowRecordService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -24,16 +25,7 @@ public class BusinessFollowRecordController extends BaseController ...@@ -24,16 +25,7 @@ public class BusinessFollowRecordController extends BaseController
@Autowired @Autowired
private IBusinessFollowRecordService businessFollowRecordService; private IBusinessFollowRecordService businessFollowRecordService;
/**
* 根据项目id查询项目跟进记录
*/
// @PreAuthorize("@ss.hasPermi('system:record:list')")
// @GetMapping("/list/{businessId}")
// public TableDataInfo list(@PathVariable("businessId") Integer businessId)
// {
// startPage();
// return getDataTable(businessFollowRecordService.selectBusinessFollowRecordList(businessId));
// }
/** /**
* 新增项目跟进记录 * 新增项目跟进记录
...@@ -51,7 +43,7 @@ public class BusinessFollowRecordController extends BaseController ...@@ -51,7 +43,7 @@ public class BusinessFollowRecordController extends BaseController
*/ */
// @PreAuthorize("@ss.hasPermi('system:record:list')") // @PreAuthorize("@ss.hasPermi('system:record:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(@RequestBody(required=false) BusinessIdDto businessId) public TableDataInfo list(BusinessIdDto businessId)
{ {
startPage(); startPage();
List<BusinessFollowRecord> list = businessFollowRecordService.selectBusinessFollowRecordList(businessId); List<BusinessFollowRecord> list = businessFollowRecordService.selectBusinessFollowRecordList(businessId);
...@@ -69,6 +61,18 @@ public class BusinessFollowRecordController extends BaseController ...@@ -69,6 +61,18 @@ public class BusinessFollowRecordController extends BaseController
return toAjax(businessFollowRecordService.deleteBusinessFollowRecordByIds(ids)); return toAjax(businessFollowRecordService.deleteBusinessFollowRecordByIds(ids));
} }
/**
* 分页查询跟进动态
*/
// @PreAuthorize("@ss.hasPermi('system:record:list')")
@GetMapping("all/list")
public TableDataInfo allFollow(BusinessListDto dto)
{
startPage();
List<BusinessFollowRecord> list = businessFollowRecordService.allFollow(dto);
return getDataTable(list);
}
// /** // /**
// * 导出项目跟进记录列表 // * 导出项目跟进记录列表
// */ // */
...@@ -101,6 +105,17 @@ public class BusinessFollowRecordController extends BaseController ...@@ -101,6 +105,17 @@ public class BusinessFollowRecordController extends BaseController
// public AjaxResult edit(@RequestBody BusinessFollowRecord businessFollowRecord) // public AjaxResult edit(@RequestBody BusinessFollowRecord businessFollowRecord)
// { // {
// return toAjax(businessFollowRecordService.updateBusinessFollowRecord(businessFollowRecord)); // return toAjax(businessFollowRecordService.updateBusinessFollowRecord(businessFollowRecord));
// }
// /**
// * 根据项目id查询项目跟进记录
// */
// @PreAuthorize("@ss.hasPermi('system:record:list')")
// @GetMapping("/list/{businessId}")
// public TableDataInfo list(@PathVariable("businessId") Integer businessId)
// {
// startPage();
// return getDataTable(businessFollowRecordService.selectBusinessFollowRecordList(businessId));
// } // }
} }
...@@ -45,11 +45,11 @@ public class BusinessInfoController extends BaseController ...@@ -45,11 +45,11 @@ public class BusinessInfoController extends BaseController
} }
/** /**
* 查询项目列表 * 分页查询项目列表
*/ */
// @PreAuthorize("@ss.hasPermi('system:business:list')") // @PreAuthorize("@ss.hasPermi('system:business:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(@RequestBody(required=false) BusinessListDto dto) public TableDataInfo list(BusinessListDto dto)
{ {
startPage(); startPage();
List<BusinessListVo> list = businessInfoService.selectBusinessInfoList(dto); List<BusinessListVo> list = businessInfoService.selectBusinessInfoList(dto);
......
...@@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
/** /**
* 项目关联单位Controller * 项目相关企业Controller
* *
* @author lxl * @author lxl
* @date 2023-05-17 * @date 2023-05-17
...@@ -25,7 +25,7 @@ public class BusinessRelateCompanyController extends BaseController ...@@ -25,7 +25,7 @@ public class BusinessRelateCompanyController extends BaseController
private IBusinessRelateCompanyService businessRelateCompanyService; private IBusinessRelateCompanyService businessRelateCompanyService;
/** /**
* 查询关联单位角色 * 查询相关企业角色
*/ */
@PostMapping("/role/list") @PostMapping("/role/list")
public AjaxResult companyRoleList(@RequestBody BusinessIdDto dto){ public AjaxResult companyRoleList(@RequestBody BusinessIdDto dto){
...@@ -33,11 +33,11 @@ public class BusinessRelateCompanyController extends BaseController ...@@ -33,11 +33,11 @@ public class BusinessRelateCompanyController extends BaseController
} }
/** /**
* 查询项目关联单位列表 * 查询项目相关企业列表
*/ */
// @PreAuthorize("@ss.hasPermi('system:company:list')") // @PreAuthorize("@ss.hasPermi('system:company:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(@RequestBody(required=false) BusinessRelateCompany businessRelateCompany) public TableDataInfo list(BusinessRelateCompany businessRelateCompany)
{ {
startPage(); startPage();
List<BusinessRelateCompany> list = businessRelateCompanyService.selectBusinessRelateCompanyList(businessRelateCompany); List<BusinessRelateCompany> list = businessRelateCompanyService.selectBusinessRelateCompanyList(businessRelateCompany);
...@@ -66,6 +66,17 @@ public class BusinessRelateCompanyController extends BaseController ...@@ -66,6 +66,17 @@ public class BusinessRelateCompanyController extends BaseController
return toAjax(businessRelateCompanyService.updateBusinessRelateCompany(businessRelateCompany)); return toAjax(businessRelateCompanyService.updateBusinessRelateCompany(businessRelateCompany));
} }
/**
* 删除项目关联单位
*/
// @PreAuthorize("@ss.hasPermi('system:company:remove')")
// @Log(title = "项目关联单位", businessType = BusinessType.DELETE)
@DeleteMapping("/remove/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(businessRelateCompanyService.deleteBusinessRelateCompanyByIds(ids));
}
// /** // /**
// * 导出项目关联单位列表 // * 导出项目关联单位列表
// */ // */
...@@ -89,15 +100,4 @@ public class BusinessRelateCompanyController extends BaseController ...@@ -89,15 +100,4 @@ public class BusinessRelateCompanyController extends BaseController
// return success(businessRelateCompanyService.selectBusinessRelateCompanyById(id)); // return success(businessRelateCompanyService.selectBusinessRelateCompanyById(id));
// } // }
//
// /**
// * 删除项目关联单位
// */
// @PreAuthorize("@ss.hasPermi('system:company:remove')")
// @Log(title = "项目关联单位", businessType = BusinessType.DELETE)
// @DeleteMapping("/{ids}")
// public AjaxResult remove(@PathVariable Long[] ids)
// {
// return toAjax(businessRelateCompanyService.deleteBusinessRelateCompanyByIds(ids));
// }
} }
package com.dsk.web.controller.search.controller; package com.dsk.web.controller.search.controller;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
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.page.TableDataInfo;
import com.dsk.common.dtos.ComposeQueryDto; import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.web.controller.search.service.MarketAnalysisService; import com.dsk.web.controller.search.service.MarketAnalysisService;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
...@@ -9,6 +11,9 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -9,6 +11,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
/** /**
...@@ -18,7 +23,7 @@ import javax.annotation.Resource; ...@@ -18,7 +23,7 @@ import javax.annotation.Resource;
*/ */
@RequestMapping("/marketAnalysis") @RequestMapping("/marketAnalysis")
@RestController @RestController
public class MarketAnalysisController { public class MarketAnalysisController extends BaseController {
@Resource @Resource
...@@ -46,9 +51,8 @@ public class MarketAnalysisController { ...@@ -46,9 +51,8 @@ public class MarketAnalysisController {
/* /*
* 资质等级按照大类、省份、等级类型分组 * 资质等级按照大类、省份、等级类型分组
*/ */
@RequestMapping("/certGroupByCategoryProvinceLevel") @RequestMapping("/certGroupByMajorProvinceLevel")
public AjaxResult certGroupByCategoryProvinceLevel() { public AjaxResult certGroupByMajorProvinceLevel() {
return marketAnalysisService.certGroupByMajorProvinceLevel(); return marketAnalysisService.certGroupByMajorProvinceLevel();
} }
...@@ -86,11 +90,23 @@ public class MarketAnalysisController { ...@@ -86,11 +90,23 @@ public class MarketAnalysisController {
return marketAnalysisService.countGroupByProvince(object); return marketAnalysisService.countGroupByProvince(object);
} }
@RequestMapping("/getYear")
public TableDataInfo getYear(){
List<Integer> list = new ArrayList<>();
Calendar calendar = Calendar.getInstance();
int nowYear = calendar.get(Calendar.YEAR);
list.add(nowYear);
for (int i = 1; i < 5; i++) {
list.add(nowYear-i);
}
return getDataTable(list);
}
/* /*
* 中标数量按月份分组 * 中标数量按月份分组
*/ */
@RequestMapping("/countGroupByMonth") @RequestMapping("/countGroupByMonth")
public AjaxResult countGroupByMonth() { public AjaxResult countGroupByMonth(@RequestBody JSONObject object) {
return marketAnalysisService.countGroupByMonth(); return marketAnalysisService.countGroupByMonth(object);
} }
} }
...@@ -19,7 +19,7 @@ public interface MarketAnalysisService { ...@@ -19,7 +19,7 @@ public interface MarketAnalysisService {
AjaxResult countGroupByProvince(JSONObject object); AjaxResult countGroupByProvince(JSONObject object);
AjaxResult countGroupByMonth(); AjaxResult countGroupByMonth(JSONObject object);
AjaxResult bidMoneyGroupByProjectType(JSONObject object); AjaxResult bidMoneyGroupByProjectType(JSONObject object);
......
...@@ -62,8 +62,8 @@ public class MarketAnalysisServiceImpl implements MarketAnalysisService { ...@@ -62,8 +62,8 @@ public class MarketAnalysisServiceImpl implements MarketAnalysisService {
} }
@Override @Override
public AjaxResult countGroupByMonth() { public AjaxResult countGroupByMonth(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countGroupByMonth", null); Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countGroupByMonth", object);
return BeanUtil.toBean(map, AjaxResult.class); return BeanUtil.toBean(map, AjaxResult.class);
} }
} }
...@@ -130,6 +130,6 @@ public class RuoYiConfig ...@@ -130,6 +130,6 @@ public class RuoYiConfig
*/ */
public static String getUploadPath() public static String getUploadPath()
{ {
return getProfile() + "/upload"; return getProfile();
} }
} }
package com.dsk.common.core.domain.entity; package com.dsk.common.core.domain.entity;
import java.util.Date; import com.dsk.common.annotation.Excel;
import com.dsk.common.core.domain.BaseEntity; import com.dsk.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.dsk.common.annotation.Excel;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle; import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
/** /**
* 项目跟进记录对象 business_follow_record * 项目跟进记录对象 business_follow_record
* *
...@@ -18,6 +18,16 @@ public class BusinessFollowRecord extends BaseEntity ...@@ -18,6 +18,16 @@ public class BusinessFollowRecord extends BaseEntity
{ {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* 项目名称
*/
private String projectName;
/**
* 业主单位
*/
private String ownerCompany;
/** $column.columnComment */ /** $column.columnComment */
private Integer id; private Integer id;
...@@ -64,6 +74,22 @@ public class BusinessFollowRecord extends BaseEntity ...@@ -64,6 +74,22 @@ public class BusinessFollowRecord extends BaseEntity
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date creatTime; private Date creatTime;
public String getProjectName() {
return projectName;
}
public void setProjectName(String projectName) {
this.projectName = projectName;
}
public String getOwnerCompany() {
return ownerCompany;
}
public void setOwnerCompany(String ownerCompany) {
this.ownerCompany = ownerCompany;
}
public String getNickName() { public String getNickName() {
return nickName; return nickName;
} }
...@@ -177,6 +203,8 @@ public class BusinessFollowRecord extends BaseEntity ...@@ -177,6 +203,8 @@ public class BusinessFollowRecord extends BaseEntity
.append("visitWay", getVisitWay()) .append("visitWay", getVisitWay())
.append("creatTime", getCreatTime()) .append("creatTime", getCreatTime())
.append("updateTime", getUpdateTime()) .append("updateTime", getUpdateTime())
.append("projectName", getProjectName())
.append("ownerCompany(", getOwnerCompany())
.toString(); .toString();
} }
} }
...@@ -32,5 +32,15 @@ public class EnterpriseCreditLawsuitsPageBody extends BasePage { ...@@ -32,5 +32,15 @@ public class EnterpriseCreditLawsuitsPageBody extends BasePage {
*/ */
private String keys; private String keys;
/**
* 开始时间(年月日)
*/
private String dateFrom;
/**
* 截止时间(年月日)
*/
private String dateTo;
} }
...@@ -27,7 +27,7 @@ public class EnterpriseProjectBidNoticePageBody extends BasePage { ...@@ -27,7 +27,7 @@ public class EnterpriseProjectBidNoticePageBody extends BasePage {
/** /**
* 类型 * 类型
*/ */
private String tenderStage; private List<String> tenderStage;
/* /*
* 1金额倒序,2金额正序,3时间倒序,4时间正序 * 1金额倒序,2金额正序,3时间倒序,4时间正序
......
package com.dsk.common.utils.file; package com.dsk.common.utils.file;
import java.io.File; import com.dsk.common.config.RuoYiConfig;
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Objects;
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;
import com.dsk.common.exception.file.InvalidExtensionException; import com.dsk.common.exception.file.InvalidExtensionException;
import com.dsk.common.utils.DateUtils; import com.dsk.common.utils.DateUtils;
import com.dsk.common.utils.StringUtils; import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.uuid.Seq;
import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.FilenameUtils;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import com.dsk.common.config.RuoYiConfig;
import com.dsk.common.utils.uuid.Seq; import java.io.File;
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Objects;
/** /**
* 文件上传工具类 * 文件上传工具类
...@@ -111,11 +111,13 @@ public class FileUploadUtils ...@@ -111,11 +111,13 @@ public class FileUploadUtils
assertAllowed(file, allowedExtension); assertAllowed(file, allowedExtension);
String fileName = extractFilename(file); // String fileName = extractFilename(file);
String absPath = getAbsoluteFile(baseDir, fileName).getAbsolutePath(); // String absPath = getAbsoluteFile(baseDir, fileName).getAbsolutePath();
String absPath = getAbsoluteFile(baseDir, file.getOriginalFilename()).getAbsolutePath();
file.transferTo(Paths.get(absPath)); file.transferTo(Paths.get(absPath));
return getPathFileName(baseDir, fileName); // return getPathFileName(baseDir, fileName);
return baseDir+file.getOriginalFilename();
} }
/** /**
......
package com.dsk.common.utils.file; package com.dsk.common.utils.file;
import com.dsk.common.config.RuoYiConfig; import com.dsk.common.config.RuoYiConfig;
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;
import com.dsk.common.utils.StringUtils; import com.dsk.common.utils.StringUtils;
...@@ -25,6 +26,7 @@ import java.net.HttpURLConnection; ...@@ -25,6 +26,7 @@ import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.net.URLEncoder; import java.net.URLEncoder;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
...@@ -40,11 +42,6 @@ public class FileUtils ...@@ -40,11 +42,6 @@ public class FileUtils
{ {
public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+"; public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+";
public static void main(String[] args) {
System.out.println(RuoYiConfig.getProfile());
}
/** /**
* 检查目录是否存在,如果不存在,则创建目录,如果创建失败则返回false * 检查目录是否存在,如果不存在,则创建目录,如果创建失败则返回false
* *
...@@ -251,8 +248,8 @@ public class FileUtils ...@@ -251,8 +248,8 @@ public class FileUtils
* @param filePath 全路径 * @param filePath 全路径
* @return * @return
*/ */
public static List<String> getAllFiles(String filePath) { public static List<BusinessFileVo> getAllFiles(String filePath) {
List<String> fileList = new ArrayList<String>(); List<BusinessFileVo> fileList = new ArrayList<>();
File file = new File(filePath); File file = new File(filePath);
if (!file.exists()) { if (!file.exists()) {
...@@ -269,11 +266,11 @@ public class FileUtils ...@@ -269,11 +266,11 @@ public class FileUtils
for (File directory : files) { for (File directory : files) {
// 如果是文件夹则递归调用此方法 // 如果是文件夹则递归调用此方法
if (directory.isDirectory()) { if (directory.isDirectory()) {
fileList.add(directory.getPath()); fileList.add(new BusinessFileVo(directory.getPath(),new SimpleDateFormat("yyyy-MM-dd").format(directory.lastModified())));
getAllFiles(directory.getPath()); getAllFiles(directory.getPath());
} else { } else {
// 如果是文件则直接输出路径 // 如果是文件则直接输出路径
fileList.add(directory.getPath()); fileList.add(new BusinessFileVo(directory.getPath(),new SimpleDateFormat("yyyy-MM-dd").format(directory.lastModified())));
} }
} }
return fileList; return fileList;
...@@ -287,8 +284,8 @@ public class FileUtils ...@@ -287,8 +284,8 @@ public class FileUtils
* @param path 文件夹路径 * @param path 文件夹路径
* @return List<File> * @return List<File>
*/ */
public static List<File> getAllFileNames(String path) { public static List<BusinessFileVo> getAllFileNames(String path) {
List<File> fileList = new ArrayList<File>(); List<BusinessFileVo> fileList = new ArrayList<>();
File file = new File(path); File file = new File(path);
if (!file.exists()) { if (!file.exists()) {
return fileList; return fileList;
...@@ -305,10 +302,10 @@ public class FileUtils ...@@ -305,10 +302,10 @@ public class FileUtils
tempFile = new File(path + File.separator + fileName); tempFile = new File(path + File.separator + fileName);
} }
if (tempFile.isFile()) { if (tempFile.isFile()) {
fileList.add(tempFile); fileList.add(new BusinessFileVo(tempFile.getPath(),new SimpleDateFormat("yyyy-MM-dd").format(tempFile.lastModified())));
} }
if (tempFile.isDirectory()) { if (tempFile.isDirectory()) {
List<File> allFiles = getAllFileNames(tempFile.getAbsolutePath()); List<BusinessFileVo> allFiles = getAllFileNames(tempFile.getAbsolutePath());
fileList.addAll(allFiles); fileList.addAll(allFiles);
} }
} }
......
...@@ -64,7 +64,7 @@ public class SysLoginService ...@@ -64,7 +64,7 @@ public class SysLoginService
public String login(String username, String password, String code, String uuid) public String login(String username, String password, String code, String uuid)
{ {
// 验证码校验 // 验证码校验
// validateCaptcha(username, code, uuid); validateCaptcha(username, code, uuid);
// 登录前置校验 // 登录前置校验
loginPreCheck(username, password); loginPreCheck(username, password);
// 用户验证 // 用户验证
......
import request from '@/utils/request'
// 资质json数据
let aptitudeCode= function aptitudeCode(param) {
return request({
url: 'https://files.jiansheku.com/file/json/common/aptitudeCode.json',
method: 'get',
})
}
// 人员json数据
let personCert= function personCert(param) {
return request({
url: 'https://files.jiansheku.com/file/json/common/personCert.json',
method: 'get',
})
}
// 备案网站
let searchDic= function searchDic(param) {
return request({
url: 'https://files.jiansheku.com/file/json/common/searchDic.json',
method: 'get',
})
}
// 备案网站
let regionWebList= function regionWebList(param) {
return request({
url: '/nationzj/enterprice/regionWebList',
method: 'get',
})
}
export default {aptitudeCode,personCert,searchDic,regionWebList}
\ No newline at end of file
import request from '@/utils/request'
//全国经济大全列表
export function nationalPage(param) {
return request({
url: '/economic/national/nationalPage',
method: 'POST',
data: param
})
}
//全国经济大全详情
export function getNationalDetails(param) {
return request({
url: '/economic/details',
method: 'POST',
data: param
})
}
//获取年份-下拉
export function getYears(param) {
return request({
url: '/economic/years/list',
method: 'POST',
data: param
})
}
//全国按月招标统计
export function countGroupByMonth(param) {
return request({
url: '/marketAnalysis/countGroupByMonth',
method: 'POST',
data: param
})
}
//按属地统计招标数量
export function countGroupByProvince(param) {
return request({
url: '/marketAnalysis/countGroupByProvince',
method: 'POST',
data: param
})
}
//获取年份-下拉
export function getYear() {
return request({
url: '/marketAnalysis/getYear',
method: 'POST',
})
}
//全国建筑企业概览-资质等级按照行业、等级类型分组
export function certGroupByMajorAndLevel() {
return request({
url: '/marketAnalysis/certGroupByMajorAndLevel',
method: 'POST',
})
}
//全国建筑企业地区分布-资质等级按照行业、省份、等级类型分组
export function certGroupByMajorProvinceLevel() {
return request({
url: '/marketAnalysis/certGroupByMajorProvinceLevel',
method: 'POST',
})
}
//全国建筑企业备案分布-各省份备案企业统计
export function areaGroupByProvince() {
return request({
url: '/marketAnalysis/areaGroupByProvince',
method: 'POST',
})
}
//区域经济
//地区经济-统计
export function regional(param) {
return request({
url: '/economic/statistics/regional',
method: 'POST',
data: param
})
}
//地区经济-主要指标列表
export function regionalList(param) {
return request({
url: '/economic/regional/list',
method: 'POST',
data: param
})
}
...@@ -158,3 +158,28 @@ export function addXGQY(param) { ...@@ -158,3 +158,28 @@ export function addXGQY(param) {
data:param data:param
}) })
} }
//删除相关企业
export function delXGQY(param) {
return request({
url: '/business/company/remove/'+param,
method: 'DELETE',
})
}
//查询资料文档
export function getZLWD(param) {
return request({
url: '/business/file/list',
method: 'GET',
params:param
})
}
//删除资料文档
export function delZLWD(param) {
return request({
url: '/business/file/remove',
method: 'POST',
data:param
})
}
import request from '@/utils/request'
// 导入客户列表
let importData= function importData(param) {
return request({
url: '/customer/importData',
method: 'POST',
data: param
})
}
export default {importData}
\ No newline at end of file
[
{
"name":"建筑业企业资质",
"id":"209",
"list":[
{
"name":"特级",
"id":"209V1",
"parentId":209
},
{
"name":"一级",
"id":"209V10",
"parentId":209
},
{
"name":"二级",
"id":"209V11",
"parentId":209
},
{
"name":"三级",
"id":"209V12",
"parentId":209
},
{
"name":"一级及以上",
"id":"209V1-209V10",
"parentId":"209"
},
{
"name":"二级及以上",
"id":"209V1-209V10-209V11",
"parentId":"209"
},
{
"name":"三级及以上",
"id":"209V1-209V10-209V11-209V12",
"parentId":"209"
},
{
"name":"不分等级",
"id":"209V8",
"parentId":209
}
],
"parentId":0
},
{
"name":"工程勘察",
"id":"211",
"list":[
{
"name":"甲级",
"id":"211V2",
"parentId":211
},
{
"name":"乙级",
"id":"211V5",
"parentId":211
},
{
"name":"丙级",
"id":"211V6",
"parentId":211
},
{
"name":"乙级及以上",
"id":"211V2-211V5",
"parentId":"211"
},
{
"name":"丙级及以上",
"id":"211V2-211V5-211V6",
"parentId":"211"
},
{
"name":"不分等级",
"id":"211V8",
"parentId":211
}
],
"parentId":0
},
{
"name":"工程设计",
"id":"213",
"list":[
{
"name":"甲级",
"id":"213V2",
"parentId":213
},
{
"name":"甲(Ⅰ)级",
"id":"213V3",
"parentId":213
},
{
"name":"甲(Ⅱ)级",
"id":"213V4",
"parentId":213
},
{
"name":"乙级",
"id":"213V5",
"parentId":213
},
{
"name":"丙级",
"id":"213V6",
"parentId":213
},
{
"name":"丁级",
"id":"213V7",
"parentId":213
},
{
"name":"甲(Ⅰ)级及以上",
"id":"213V2-213V3",
"parentId":"213"
},
{
"name":"甲(Ⅱ)级及以上",
"id":"213V2-213V3-213V4",
"parentId":"213"
},
{
"name":"乙级及以上",
"id":"213V2-213V3-213V4-213V5",
"parentId":"213"
},
{
"name":"丙级及以上",
"id":"213V2-213V3-213V4-213V5-213V6",
"parentId":"213"
},
{
"name":"丁级及以上",
"id":"213V2-213V3-213V4-213V5-213V6-213V7",
"parentId":"213"
}
],
"parentId":0
},
{
"name":"工程监理",
"id":"215",
"list":[
{
"name":"甲级",
"id":"215V2",
"parentId":215
},
{
"name":"乙级",
"id":"215V5",
"parentId":215
},
{
"name":"丙级",
"id":"215V6",
"parentId":215
},
{
"name":"乙级及以上",
"id":"215V2-215V5",
"parentId":"215"
},
{
"name":"丙级及以上",
"id":"215V2-215V5-215V6",
"parentId":"215"
},
{
"name":"不分等级",
"id":"215V8",
"parentId":215
}
],
"parentId":0
},
{
"name":"设计施工一体化企业资质",
"id":"219",
"list":[
{
"name":"一级",
"id":"219V10",
"parentId":219
},
{
"name":"二级",
"id":"219V11",
"parentId":219
},
{
"name":"三级",
"id":"219V12",
"parentId":219
},
{
"name":"二级及以上",
"id":"219V10-219V11",
"parentId":"219"
},
{
"name":"三级及以上",
"id":"219V10-219V11-219V12",
"parentId":"219"
}
],
"parentId":0
},
{
"name":"造价咨询企业资质",
"id":"221",
"list":[
{
"name":"甲级",
"id":"221V2",
"parentId":221
},
{
"name":"乙级",
"id":"221V5",
"parentId":221
},
{
"name":"乙级及以上",
"id":"221V2-221V5",
"parentId":"221"
},
{
"name":"未定级",
"id":"221V38",
"parentId":221
}
],
"parentId":0
},
{
"name":"工程招标代理",
"id":"245",
"list":[
{
"name":"甲级",
"id":"245V2",
"parentId":245
},
{
"name":"乙级",
"id":"245V5",
"parentId":245
},
{
"name":"乙级及以上",
"id":"245V2-245V5",
"parentId":"245"
},
{
"name":"暂定级",
"id":"245V37",
"parentId":245
}
],
"parentId":0
},
{
"name":"展览工程",
"id":"1817",
"list":[
{
"name":"一级",
"id":"1817V10",
"parentId":1817
},
{
"name":"二级",
"id":"1817V11",
"parentId":1817
},
{
"name":"三级",
"id":"1817V12",
"parentId":1817
},
{
"name":"二级及以上",
"id":"1817V10-1817V11",
"parentId":"1817"
},
{
"name":"三级及以上",
"id":"1817V10-1817V11-1817V12",
"parentId":"1817"
}
],
"parentId":0
},
{
"name":"文物保护资质",
"id":"1819",
"list":[
{
"name":"甲级",
"id":"1819V2",
"parentId":1819
},
{
"name":"乙级",
"id":"1819V5",
"parentId":1819
},
{
"name":"丙级",
"id":"1819V6",
"parentId":1819
},
{
"name":"一级",
"id":"1819V10",
"parentId":1819
},
{
"name":"二级",
"id":"1819V11",
"parentId":1819
},
{
"name":"三级",
"id":"1819V12",
"parentId":1819
},
{
"name":"乙级及以上",
"id":"1819V2-1819V5",
"parentId":"1819"
},
{
"name":"丙级及以上",
"id":"1819V2-1819V5-1819V6",
"parentId":"1819"
},
{
"name":"一级及以上",
"id":"1819V2-1819V5-1819V6-1819V10",
"parentId":"1819"
},
{
"name":"二级及以上",
"id":"1819V2-1819V5-1819V6-1819V10-1819V11",
"parentId":"1819"
},
{
"name":"三级及以上",
"id":"1819V2-1819V5-1819V6-1819V10-1819V11-1819V12",
"parentId":"1819"
}
],
"parentId":0
},
{
"name":"电力业务许可证",
"id":"1821",
"list":[
{
"name":"不分等级",
"id":"1821V8",
"parentId":1821
}
],
"parentId":0
},
{
"name":"承装(修、试)电力设施许可证",
"id":"1823",
"list":[
{
"name":"一级",
"id":"1823V10",
"parentId":1823
},
{
"name":"二级",
"id":"1823V11",
"parentId":1823
},
{
"name":"三级",
"id":"1823V12",
"parentId":1823
},
{
"name":"四级",
"id":"1823V13",
"parentId":1823
},
{
"name":"五级",
"id":"1823V14",
"parentId":1823
},
{
"name":"二级及以上",
"id":"1823V10-1823V11",
"parentId":"1823"
},
{
"name":"三级及以上",
"id":"1823V10-1823V11-1823V12",
"parentId":"1823"
},
{
"name":"四级及以上",
"id":"1823V10-1823V11-1823V12-1823V13",
"parentId":"1823"
},
{
"name":"五级及以上",
"id":"1823V10-1823V11-1823V12-1823V13-1823V14",
"parentId":"1823"
}
],
"parentId":0
},
{
"name":"地质灾害治理工程",
"id":"1827",
"list":[
{
"name":"甲级",
"id":"1827V2",
"parentId":1827
},
{
"name":"乙级",
"id":"1827V5",
"parentId":1827
},
{
"name":"丙级",
"id":"1827V6",
"parentId":1827
},
{
"name":"乙级及以上",
"id":"1827V2-1827V5",
"parentId":"1827"
},
{
"name":"丙级及以上",
"id":"1827V2-1827V5-1827V6",
"parentId":"1827"
}
],
"parentId":0
},
{
"name":"消防技术服务机构",
"id":"1831",
"list":[
{
"name":"不分等级",
"id":"1831V8",
"parentId":1831
}
],
"parentId":0
},
{
"name":"安防工程资质",
"id":"1879",
"list":[
{
"name":"一级",
"id":"1879V10",
"parentId":1879
},
{
"name":"二级",
"id":"1879V11",
"parentId":1879
},
{
"name":"三级",
"id":"1879V12",
"parentId":1879
},
{
"name":"四级",
"id":"1879V13",
"parentId":1879
},
{
"name":"二级及以上",
"id":"1879V10-1879V11",
"parentId":"1879"
},
{
"name":"三级及以上",
"id":"1879V10-1879V11-1879V12",
"parentId":"1879"
},
{
"name":"四级及以上",
"id":"1879V10-1879V11-1879V12-1879V13",
"parentId":"1879"
},
{
"name":"暂定级",
"id":"1879V37",
"parentId":1879
}
],
"parentId":0
},
{
"name":"信息系统集成及服务",
"id":"1889",
"list":[
{
"name":"一级",
"id":"1889V10",
"parentId":1889
},
{
"name":"二级",
"id":"1889V11",
"parentId":1889
},
{
"name":"三级",
"id":"1889V12",
"parentId":1889
},
{
"name":"四级",
"id":"1889V13",
"parentId":1889
},
{
"name":"二级及以上",
"id":"1889V10-1889V11",
"parentId":"1889"
},
{
"name":"三级及以上",
"id":"1889V10-1889V11-1889V12",
"parentId":"1889"
},
{
"name":"四级及以上",
"id":"1889V10-1889V11-1889V12-1889V13",
"parentId":"1889"
}
],
"parentId":0
},
{
"name":"特种设备安装改造维修许可",
"id":"1921",
"list":[
{
"name":"一级",
"id":"1921V10",
"parentId":1921
},
{
"name":"二级",
"id":"1921V11",
"parentId":1921
},
{
"name":"三级",
"id":"1921V12",
"parentId":1921
},
{
"name":"GCD级",
"id":"1921V29",
"parentId":1921
},
{
"name":"二级及以上",
"id":"1921V10-1921V11",
"parentId":"1921"
},
{
"name":"三级及以上",
"id":"1921V10-1921V11-1921V12",
"parentId":"1921"
},
{
"name":"GCD级及以上",
"id":"1921V10-1921V11-1921V12-1921V29",
"parentId":"1921"
}
],
"parentId":0
},
{
"name":"爆破从业单位资质",
"id":"1951",
"list":[
{
"name":"二级",
"id":"1951V11",
"parentId":1951
},
{
"name":"三级",
"id":"1951V12",
"parentId":1951
},
{
"name":"四级",
"id":"1951V13",
"parentId":1951
},
{
"name":"三级及以上",
"id":"1951V11-1951V12",
"parentId":"1951"
},
{
"name":"四级及以上",
"id":"1951V11-1951V12-1951V13",
"parentId":"1951"
},
{
"name":"一级 ",
"id":"1951V10",
"parentId":1951
}
],
"parentId":0
},
{
"name":"城乡规划编制资质",
"id":"2003",
"list":[
{
"name":"甲级",
"id":"2003V2",
"parentId":2003
},
{
"name":"乙级",
"id":"2003V5",
"parentId":2003
},
{
"name":"丙级",
"id":"2003V6",
"parentId":2003
},
{
"name":"乙级及以上",
"id":"2003V2-2003V5",
"parentId":"2003"
},
{
"name":"丙级及以上",
"id":"2003V2-2003V5-2003V6",
"parentId":"2003"
}
],
"parentId":0
},
{
"name":"水文、水资源调查评价资质",
"id":"2009",
"list":[
{
"name":"甲级",
"id":"2009V2",
"parentId":2009
},
{
"name":"乙级",
"id":"2009V5",
"parentId":2009
},
{
"name":"乙级及以上",
"id":"2009V2-2009V5",
"parentId":"2009"
}
],
"parentId":0
},
{
"name":"测绘资质",
"id":"2041",
"list":[
{
"name":"甲级",
"id":"2041V2",
"parentId":2041
},
{
"name":"乙级",
"id":"2041V5",
"parentId":2041
},
{
"name":"丙级",
"id":"2041V6",
"parentId":2041
},
{
"name":"丁级",
"id":"2041V7",
"parentId":2041
},
{
"name":"乙级及以上",
"id":"2041V2-2041V5",
"parentId":"2041"
},
{
"name":"丙级及以上",
"id":"2041V2-2041V5-2041V6",
"parentId":"2041"
},
{
"name":"丁级及以上",
"id":"2041V2-2041V5-2041V6-2041V7",
"parentId":"2041"
}
],
"parentId":0
},
{
"name":"施工劳务资质",
"id":"2163",
"list":[
{
"name":"不分等级",
"id":"2163V8",
"parentId":2163
}
],
"parentId":0
},
{
"name":"工程咨询资信单位资质",
"id":"2859",
"list":[
{
"name":"甲级",
"id":"2859V2",
"parentId":2859
},
{
"name":"乙级",
"id":"2859V5",
"parentId":2859
},
{
"name":"预乙级",
"id":"2859V32",
"parentId":2859
},
{
"name":"丙级",
"id":"2859V6",
"parentId":2859
},
{
"name":"乙级及以上",
"id":"2859V2-2859V5",
"parentId":"2859"
},
{
"name":"预乙级及以上",
"id":"2859V2-2859V5-2859V32",
"parentId":"2859"
},
{
"name":"丙级及以上",
"id":"2859V2-2859V5-2859V32-2859V6",
"parentId":"2859"
}
],
"parentId":0
},
{
"name":"itss信息技术服务标准",
"id":"3115",
"list":[
{
"name":"一级",
"id":"3115V10",
"parentId":3115
},
{
"name":"二级",
"id":"3115V11",
"parentId":3115
},
{
"name":"三级",
"id":"3115V12",
"parentId":3115
},
{
"name":"四级",
"id":"3115V13",
"parentId":3115
},
{
"name":"五级",
"id":"3115V14",
"parentId":3115
},
{
"name":"二级及以上",
"id":"3115V10-3115V11",
"parentId":"3115"
},
{
"name":"三级及以上",
"id":"3115V10-3115V11-3115V12",
"parentId":"3115"
},
{
"name":"四级及以上",
"id":"3115V10-3115V11-3115V12-3115V13",
"parentId":"3115"
},
{
"name":"五级及以上",
"id":"3115V10-3115V11-3115V12-3115V13-3115V14",
"parentId":"3115"
},
{
"name":"ITSS-ZX",
"id":"3115V31",
"parentId":3115
},
{
"name":"提高级",
"id":"3115V35",
"parentId":3115
},
{
"name":"标准级",
"id":"3115V39",
"parentId":3115
},
{
"name":"通用要求",
"id":"3115V40",
"parentId":3115
}
],
"parentId":0
},
{
"name":"房地产开发资质",
"id":"3167",
"list":[
{
"name":"一级",
"id":"3167V10",
"parentId":3167
},
{
"name":"二级",
"id":"3167V11",
"parentId":3167
},
{
"name":"三级",
"id":"3167V12",
"parentId":3167
},
{
"name":"四级",
"id":"3167V13",
"parentId":3167
},
{
"name":"六级",
"id":"3167V15",
"parentId":3167
},
{
"name":"二级及以上",
"id":"3167V10-3167V11",
"parentId":"3167"
},
{
"name":"三级及以上",
"id":"3167V10-3167V11-3167V12",
"parentId":"3167"
},
{
"name":"四级及以上",
"id":"3167V10-3167V11-3167V12-3167V13",
"parentId":"3167"
},
{
"name":"六级及以上",
"id":"3167V10-3167V11-3167V12-3167V13-3167V15",
"parentId":"3167"
},
{
"name":"暂定级",
"id":"3167V37",
"parentId":3167
}
],
"parentId":0
},
{
"name":"房地产估价机构资质",
"id":"3174",
"list":[
{
"name":"一级",
"id":"3174V10",
"parentId":3174
},
{
"name":"二级",
"id":"3174V11",
"parentId":3174
},
{
"name":"三级",
"id":"3174V12",
"parentId":3174
},
{
"name":"二级及以上",
"id":"3174V10-3174V11",
"parentId":"3174"
},
{
"name":"三级及以上",
"id":"3174V10-3174V11-3174V12",
"parentId":"3174"
},
{
"name":"无等级",
"id":"3174V36",
"parentId":3174
}
],
"parentId":0
},
{
"name":"公路水运工程试验检测机构",
"id":"3188",
"list":[
{
"name":"甲级",
"id":"3188V2",
"parentId":3188
},
{
"name":"乙级",
"id":"3188V5",
"parentId":3188
},
{
"name":"丙级",
"id":"3188V6",
"parentId":3188
},
{
"name":"乙级及以上",
"id":"3188V2-3188V5",
"parentId":"3188"
},
{
"name":"丙级及以上",
"id":"3188V2-3188V5-3188V6",
"parentId":"3188"
},
{
"name":"不分等级",
"id":"3188V8",
"parentId":3188
}
],
"parentId":0
},
{
"name":"地质勘查资质",
"id":"3305",
"list":[
{
"name":"甲级",
"id":"3305V2",
"parentId":3305
},
{
"name":"乙级",
"id":"3305V5",
"parentId":3305
},
{
"name":"丙级",
"id":"3305V6",
"parentId":3305
},
{
"name":"乙级及以上",
"id":"3305V2-3305V5",
"parentId":"3305"
},
{
"name":"丙级及以上",
"id":"3305V2-3305V5-3305V6",
"parentId":"3305"
}
],
"parentId":0
},
{
"name":"公路养护从业资格",
"id":"3477",
"list":[
{
"name":"甲级",
"id":"3477V2",
"parentId":3477
},
{
"name":"乙级",
"id":"3477V5",
"parentId":3477
},
{
"name":"乙级及以上",
"id":"3477V2-3477V5",
"parentId":"3477"
},
{
"name":"不分等级",
"id":"3477V8",
"parentId":3477
}
],
"parentId":0
},
{
"name":"工程质量检测资质",
"id":"3508",
"list":[
{
"name":"不分等级",
"id":"3508V8",
"parentId":3508
}
],
"parentId":0
},
{
"name":"博物馆陈列展览资质",
"id":"3662",
"list":[
{
"name":"甲级",
"id":"3662V2",
"parentId":3662
},
{
"name":"乙级",
"id":"3662V5",
"parentId":3662
},
{
"name":"丙级",
"id":"3662V6",
"parentId":3662
},
{
"name":"一级",
"id":"3662V10",
"parentId":3662
},
{
"name":"二级",
"id":"3662V11",
"parentId":3662
},
{
"name":"三级",
"id":"3662V12",
"parentId":3662
},
{
"name":"乙级及以上",
"id":"3662V2-3662V5",
"parentId":"3662"
},
{
"name":"丙级及以上",
"id":"3662V2-3662V5-3662V6",
"parentId":"3662"
},
{
"name":"一级及以上",
"id":"3662V2-3662V5-3662V6-3662V10",
"parentId":"3662"
},
{
"name":"二级及以上",
"id":"3662V2-3662V5-3662V6-3662V10-3662V11",
"parentId":"3662"
},
{
"name":"三级及以上",
"id":"3662V2-3662V5-3662V6-3662V10-3662V11-3662V12",
"parentId":"3662"
}
],
"parentId":0
},
{
"name":"重庆园林绿化资质",
"id":"3881",
"list":[
{
"name":"甲级",
"id":"3881V2",
"parentId":3881
},
{
"name":"乙级",
"id":"3881V5",
"parentId":3881
},
{
"name":"丙级",
"id":"3881V6",
"parentId":3881
},
{
"name":"贰级",
"id":"3881V33",
"parentId":3881
},
{
"name":"叁级",
"id":"3881V34",
"parentId":3881
},
{
"name":"乙级及以上",
"id":"3881V2-3881V5",
"parentId":"3881"
},
{
"name":"丙级及以上",
"id":"3881V2-3881V5-3881V6",
"parentId":"3881"
},
{
"name":"贰级及以上",
"id":"3881V2-3881V5-3881V6-3881V33",
"parentId":"3881"
},
{
"name":"叁级及以上",
"id":"3881V2-3881V5-3881V6-3881V33-3881V34",
"parentId":"3881"
}
],
"parentId":0
}
]
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
[
{
"value": "住建部人员资格",
"label": "住建部人员资格",
"children": [{
"value": "一级注册建造师",
"label": "一级注册建造师",
"children": [{
"value": "不限专业",
"label": "不限专业"
}, {
"value": "建筑工程",
"label": "建筑工程"
}, {
"value": "市政公用工程",
"label": "市政公用工程"
}, {
"value": "公路工程",
"label": "公路工程"
}, {
"value": "水利水电工程",
"label": "水利水电工程"
}, {
"value": "机电工程",
"label": "机电工程"
}, {
"value": "民航机场工程",
"label": "民航机场工程"
}, {
"value": "港口与航道工程",
"label": "港口与航道工程"
}, {
"value": "通信与广电工程",
"label": "通信与广电工程"
}, {
"value": "铁路工程",
"label": "铁路工程"
}, {
"value": "矿业工程",
"label": "矿业工程"
}]
},
{
"value": "二级注册建造师",
"label": "二级注册建造师",
"children": [{
"value": "不限专业",
"label": "不限专业"
}, {
"value": "建筑工程",
"label": "建筑工程"
}, {
"value": "市政公用工程",
"label": "市政公用工程"
}, {
"value": "公路工程",
"label": "公路工程"
}, {
"value": "水利水电工程",
"label": "水利水电工程"
}, {
"value": "机电工程",
"label": "机电工程"
}, {
"value": "矿业工程",
"label": "矿业工程"
}]
},
{
"value": "二级及以上注册建造师",
"label": "二级及以上注册建造师",
"children": [{
"value": "不限专业",
"label": "不限专业"
}, {
"value": "建筑工程",
"label": "建筑工程"
}, {
"value": "市政公用工程",
"label": "市政公用工程"
}, {
"value": "公路工程",
"label": "公路工程"
}, {
"value": "水利水电工程",
"label": "水利水电工程"
}, {
"value": "机电工程",
"label": "机电工程"
}, {
"value": "矿业工程",
"label": "矿业工程"
}]
},
{
"value": "一级注册建筑师",
"label": "一级注册建筑师",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "二级注册建筑师",
"label": "二级注册建筑师",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "二级及以上注册建筑师",
"label": "二级及以上注册建筑师",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "一级注册结构工程师",
"label": "一级注册结构工程师",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "二级注册结构工程师",
"label": "二级注册结构工程师",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "二级及以上注册结构工程师",
"label": "二级及以上注册结构工程师",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "注册土木工程师(岩土)",
"label": "注册土木工程师(岩土)",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "注册电气工程师(供配电)",
"label": "注册电气工程师(供配电)",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "注册电气工程师(发输变电)",
"label": "注册电气工程师(发输变电)",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "注册公用设备工程师(给水排水)",
"label": "注册公用设备工程师(给水排水)",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "注册公用设备工程师(暖通空调)",
"label": "注册公用设备工程师(暖通空调)",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "注册公用设备工程师(动力)",
"label": "注册公用设备工程师(动力)",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "注册监理工程师",
"label": "注册监理工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
},
{
"value": "房屋建筑工程",
"label": "房屋建筑工程"
}, {
"value": "市政公用工程",
"label": "市政公用工程"
}, {
"value": "水利水电工程",
"label": "水利水电工程"
}, {
"value": "公路工程",
"label": "公路工程"
}, {
"value": "电力工程",
"label": "电力工程"
}, {
"value": "机电安装工程",
"label": "机电安装工程"
}, {
"value": "铁路工程",
"label": "铁路工程"
}, {
"value": "通信工程",
"label": "通信工程"
}, {
"value": "化工石油工程",
"label": "化工石油工程"
}, {
"value": "矿山工程",
"label": "矿山工程"
}, {
"value": "冶炼工程",
"label": "冶炼工程"
}, {
"value": "航天航空工程",
"label": "航天航空工程"
}, {
"value": "港口与航道工程",
"label": "港口与航道工程"
}
]
},
{
"value": "一级注册造价工程师",
"label": "一级注册造价工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
},
{
"value": "土建",
"label": "土建"
}, {
"value": "安装",
"label": "安装"
}
]
},
{
"value": "二级注册造价工程师",
"label": "二级注册造价工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
},
{
"value": "土建",
"label": "土建"
}, {
"value": "安装",
"label": "安装"
}
]
},
{
"value": "二级及以上注册造价工程师",
"label": "二级及以上注册造价工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
},
{
"value": "土建",
"label": "土建"
}, {
"value": "安装",
"label": "安装"
}
]
},
{
"value": "注册化工工程师",
"label": "注册化工工程师",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
}
]
},
{
"value": "建筑工程三类人员",
"label": "建筑工程三类人员",
"children": [{
"value": "A类",
"label": "A类"
},
{
"value": "B类",
"label": "B类"
},
{
"value": "C类",
"label": "C类"
}
]
}, {
"value": "交通运输工程三类人员",
"label": "交通运输工程三类人员",
"children": [{
"value": "A类",
"label": "A类"
},
{
"value": "B类",
"label": "B类"
},
{
"value": "C类",
"label": "C类"
}
]
},
{
"value": "水利工程三类人员",
"label": "水利工程三类人员",
"children": [{
"value": "A类",
"label": "A类"
},
{
"value": "B类",
"label": "B类"
},
{
"value": "C类",
"label": "C类"
}
]
},
{
"value": "建筑施工现场管理人员",
"label": "建筑施工现场管理人员",
"children": [{
"value": "施工员",
"label": "施工员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}, {
"value": "土建",
"label": "土建"
}, {
"value": "市政",
"label": "市政"
}, {
"value": "装饰",
"label": "装饰"
}, {
"value": "安装",
"label": "安装"
}]
}, {
"value": "安全员",
"label": "安全员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "资料员",
"label": "资料员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "材料员",
"label": "材料员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "造价员",
"label": "造价员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}, {
"value": "土建",
"label": "土建"
}, {
"value": "市政",
"label": "市政"
}, {
"value": "装饰",
"label": "装饰"
}, {
"value": "安装",
"label": "安装"
}]
}, {
"value": "劳务员",
"label": "劳务员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "标准员",
"label": "标准员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "机械员",
"label": "机械员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "测量员",
"label": "测量员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "预算员",
"label": "预算员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}, {
"value": "土建",
"label": "土建"
}, {
"value": "市政",
"label": "市政"
}, {
"value": "装饰",
"label": "装饰"
}, {
"value": "安装",
"label": "安装"
}]
}, {
"value": "质量(检)员",
"label": "质量(检)员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}, {
"value": "土建",
"label": "土建"
}, {
"value": "水暖",
"label": "水暖"
}, {
"value": "市政",
"label": "市政"
}, {
"value": "装饰",
"label": "装饰"
}, {
"value": "电气",
"label": "电气"
}]
}, {
"value": "监理员",
"label": "监理员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "见证员",
"label": "见证员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "试验员",
"label": "试验员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "统计员",
"label": "统计员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "取样员",
"label": "取样员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "劳资员",
"label": "劳资员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "计划员",
"label": "计划员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}]
}, {
"value": "职称人员",
"label": "职称人员",
"children": [{
"value": "正高级工程师",
"label": "正高级工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
}, {
"value": "建筑工程类",
"label": "建筑工程类"
}, {
"value": "市政公用工程类",
"label": "市政公用工程类"
}, {
"value": "公路工程类",
"label": "公路工程类"
}, {
"value": "铁路工程类",
"label": "铁路工程类"
}, {
"value": "港口与航道类",
"label": "港口与航道类"
}, {
"value": "水利水电类",
"label": "水利水电类"
}, {
"value": "电力工程类",
"label": "电力工程类"
}, {
"value": "矿山工程类",
"label": "矿山工程类"
}, {
"value": "冶金工程类",
"label": "冶金工程类"
}, {
"value": "石油化工类",
"label": "石油化工类"
}, {
"value": "通信工程类",
"label": "通信工程类"
}, {
"value": "机电工程类",
"label": "机电工程类"
}, {
"value": "地基与基础",
"label": "地基与基础"
}, {
"value": "电子与智能化工程类",
"label": "电子与智能化工程类"
}, {
"value": "消防工程类",
"label": "消防工程类"
}, {
"value": "建筑装修装饰工程类",
"label": "建筑装修装饰工程类"
}, {
"value": "城市及道路照明工程类",
"label": "城市及道路照明工程类"
}, {
"value": "环保工程类",
"label": "环保工程类"
}, {
"value": "管道工程类",
"label": "管道工程类"
}, {
"value": "机场场道工程类",
"label": "机场场道工程类"
}, {
"value": "其它工程类",
"label": "其它工程类"
}, {
"value": "经济专业",
"label": "经济专业"
}, {
"value": "会计专业",
"label": "会计专业"
}, {
"value": "统计专业",
"label": "统计专业"
}, {
"value": "审计专业",
"label": "审计专业"
}]
}, {
"value": "高级工程师",
"label": "高级工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
}, {
"value": "建筑工程类",
"label": "建筑工程类"
}, {
"value": "市政公用工程类",
"label": "市政公用工程类"
}, {
"value": "公路工程类",
"label": "公路工程类"
}, {
"value": "铁路工程类",
"label": "铁路工程类"
}, {
"value": "港口与航道类",
"label": "港口与航道类"
}, {
"value": "水利水电类",
"label": "水利水电类"
}, {
"value": "电力工程类",
"label": "电力工程类"
}, {
"value": "矿山工程类",
"label": "矿山工程类"
}, {
"value": "冶金工程类",
"label": "冶金工程类"
}, {
"value": "石油化工类",
"label": "石油化工类"
}, {
"value": "通信工程类",
"label": "通信工程类"
}, {
"value": "机电工程类",
"label": "机电工程类"
}, {
"value": "地基与基础",
"label": "地基与基础"
}, {
"value": "电子与智能化工程类",
"label": "电子与智能化工程类"
}, {
"value": "消防工程类",
"label": "消防工程类"
}, {
"value": "建筑装修装饰工程类",
"label": "建筑装修装饰工程类"
}, {
"value": "城市及道路照明工程类",
"label": "城市及道路照明工程类"
}, {
"value": "环保工程类",
"label": "环保工程类"
}, {
"value": "管道工程类",
"label": "管道工程类"
}, {
"value": "机场场道工程类",
"label": "机场场道工程类"
}, {
"value": "其它工程类",
"label": "其它工程类"
}, {
"value": "经济专业",
"label": "经济专业"
}, {
"value": "会计专业",
"label": "会计专业"
}, {
"value": "统计专业",
"label": "统计专业"
}, {
"value": "审计专业",
"label": "审计专业"
}]
}, {
"value": "高级及以上工程师",
"label": "高级及以上工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
}, {
"value": "建筑工程类",
"label": "建筑工程类"
}, {
"value": "市政公用工程类",
"label": "市政公用工程类"
}, {
"value": "公路工程类",
"label": "公路工程类"
}, {
"value": "铁路工程类",
"label": "铁路工程类"
}, {
"value": "港口与航道类",
"label": "港口与航道类"
}, {
"value": "水利水电类",
"label": "水利水电类"
}, {
"value": "电力工程类",
"label": "电力工程类"
}, {
"value": "矿山工程类",
"label": "矿山工程类"
}, {
"value": "冶金工程类",
"label": "冶金工程类"
}, {
"value": "石油化工类",
"label": "石油化工类"
}, {
"value": "通信工程类",
"label": "通信工程类"
}, {
"value": "机电工程类",
"label": "机电工程类"
}, {
"value": "地基与基础",
"label": "地基与基础"
}, {
"value": "电子与智能化工程类",
"label": "电子与智能化工程类"
}, {
"value": "消防工程类",
"label": "消防工程类"
}, {
"value": "建筑装修装饰工程类",
"label": "建筑装修装饰工程类"
}, {
"value": "城市及道路照明工程类",
"label": "城市及道路照明工程类"
}, {
"value": "环保工程类",
"label": "环保工程类"
}, {
"value": "管道工程类",
"label": "管道工程类"
}, {
"value": "机场场道工程类",
"label": "机场场道工程类"
}, {
"value": "其它工程类",
"label": "其它工程类"
}, {
"value": "经济专业",
"label": "经济专业"
}, {
"value": "会计专业",
"label": "会计专业"
}, {
"value": "统计专业",
"label": "统计专业"
}, {
"value": "审计专业",
"label": "审计专业"
}]
}, {
"value": "中级工程师",
"label": "中级工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
}, {
"value": "建筑工程类",
"label": "建筑工程类"
}, {
"value": "市政公用工程类",
"label": "市政公用工程类"
}, {
"value": "公路工程类",
"label": "公路工程类"
}, {
"value": "铁路工程类",
"label": "铁路工程类"
}, {
"value": "港口与航道类",
"label": "港口与航道类"
}, {
"value": "水利水电类",
"label": "水利水电类"
}, {
"value": "电力工程类",
"label": "电力工程类"
}, {
"value": "矿山工程类",
"label": "矿山工程类"
}, {
"value": "冶金工程类",
"label": "冶金工程类"
}, {
"value": "石油化工类",
"label": "石油化工类"
}, {
"value": "通信工程类",
"label": "通信工程类"
}, {
"value": "机电工程类",
"label": "机电工程类"
}, {
"value": "地基与基础",
"label": "地基与基础"
}, {
"value": "电子与智能化工程类",
"label": "电子与智能化工程类"
}, {
"value": "消防工程类",
"label": "消防工程类"
}, {
"value": "建筑装修装饰工程类",
"label": "建筑装修装饰工程类"
}, {
"value": "城市及道路照明工程类",
"label": "城市及道路照明工程类"
}, {
"value": "环保工程类",
"label": "环保工程类"
}, {
"value": "管道工程类",
"label": "管道工程类"
}, {
"value": "机场场道工程类",
"label": "机场场道工程类"
}, {
"value": "其它工程类",
"label": "其它工程类"
}, {
"value": "经济专业",
"label": "经济专业"
}, {
"value": "会计专业",
"label": "会计专业"
}, {
"value": "统计专业",
"label": "统计专业"
}, {
"value": "审计专业",
"label": "审计专业"
}]
}, {
"value": "中级及以上工程师",
"label": "中级及以上工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
}, {
"value": "建筑工程类",
"label": "建筑工程类"
}, {
"value": "市政公用工程类",
"label": "市政公用工程类"
}, {
"value": "公路工程类",
"label": "公路工程类"
}, {
"value": "铁路工程类",
"label": "铁路工程类"
}, {
"value": "港口与航道类",
"label": "港口与航道类"
}, {
"value": "水利水电类",
"label": "水利水电类"
}, {
"value": "电力工程类",
"label": "电力工程类"
}, {
"value": "矿山工程类",
"label": "矿山工程类"
}, {
"value": "冶金工程类",
"label": "冶金工程类"
}, {
"value": "石油化工类",
"label": "石油化工类"
}, {
"value": "通信工程类",
"label": "通信工程类"
}, {
"value": "机电工程类",
"label": "机电工程类"
}, {
"value": "地基与基础",
"label": "地基与基础"
}, {
"value": "电子与智能化工程类",
"label": "电子与智能化工程类"
}, {
"value": "消防工程类",
"label": "消防工程类"
}, {
"value": "建筑装修装饰工程类",
"label": "建筑装修装饰工程类"
}, {
"value": "城市及道路照明工程类",
"label": "城市及道路照明工程类"
}, {
"value": "环保工程类",
"label": "环保工程类"
}, {
"value": "管道工程类",
"label": "管道工程类"
}, {
"value": "机场场道工程类",
"label": "机场场道工程类"
}, {
"value": "其它工程类",
"label": "其它工程类"
}, {
"value": "经济专业",
"label": "经济专业"
}, {
"value": "会计专业",
"label": "会计专业"
}, {
"value": "统计专业",
"label": "统计专业"
}, {
"value": "审计专业",
"label": "审计专业"
}]
}, {
"value": "助理级工程师",
"label": "助理级工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
}, {
"value": "建筑工程类",
"label": "建筑工程类"
}, {
"value": "市政公用工程类",
"label": "市政公用工程类"
}, {
"value": "公路工程类",
"label": "公路工程类"
}, {
"value": "铁路工程类",
"label": "铁路工程类"
}, {
"value": "港口与航道类",
"label": "港口与航道类"
}, {
"value": "水利水电类",
"label": "水利水电类"
}, {
"value": "电力工程类",
"label": "电力工程类"
}, {
"value": "矿山工程类",
"label": "矿山工程类"
}, {
"value": "冶金工程类",
"label": "冶金工程类"
}, {
"value": "石油化工类",
"label": "石油化工类"
}, {
"value": "通信工程类",
"label": "通信工程类"
}, {
"value": "机电工程类",
"label": "机电工程类"
}, {
"value": "地基与基础",
"label": "地基与基础"
}, {
"value": "电子与智能化工程类",
"label": "电子与智能化工程类"
}, {
"value": "消防工程类",
"label": "消防工程类"
}, {
"value": "建筑装修装饰工程类",
"label": "建筑装修装饰工程类"
}, {
"value": "城市及道路照明工程类",
"label": "城市及道路照明工程类"
}, {
"value": "环保工程类",
"label": "环保工程类"
}, {
"value": "管道工程类",
"label": "管道工程类"
}, {
"value": "机场场道工程类",
"label": "机场场道工程类"
}, {
"value": "其它工程类",
"label": "其它工程类"
}, {
"value": "经济专业",
"label": "经济专业"
}, {
"value": "会计专业",
"label": "会计专业"
}, {
"value": "统计专业",
"label": "统计专业"
}, {
"value": "审计专业",
"label": "审计专业"
}]
}, {
"value": "助理级及以上工程师",
"label": "助理级及以上工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
}, {
"value": "建筑工程类",
"label": "建筑工程类"
}, {
"value": "市政公用工程类",
"label": "市政公用工程类"
}, {
"value": "公路工程类",
"label": "公路工程类"
}, {
"value": "铁路工程类",
"label": "铁路工程类"
}, {
"value": "港口与航道类",
"label": "港口与航道类"
}, {
"value": "水利水电类",
"label": "水利水电类"
}, {
"value": "电力工程类",
"label": "电力工程类"
}, {
"value": "矿山工程类",
"label": "矿山工程类"
}, {
"value": "冶金工程类",
"label": "冶金工程类"
}, {
"value": "石油化工类",
"label": "石油化工类"
}, {
"value": "通信工程类",
"label": "通信工程类"
}, {
"value": "机电工程类",
"label": "机电工程类"
}, {
"value": "地基与基础",
"label": "地基与基础"
}, {
"value": "电子与智能化工程类",
"label": "电子与智能化工程类"
}, {
"value": "消防工程类",
"label": "消防工程类"
}, {
"value": "建筑装修装饰工程类",
"label": "建筑装修装饰工程类"
}, {
"value": "城市及道路照明工程类",
"label": "城市及道路照明工程类"
}, {
"value": "环保工程类",
"label": "环保工程类"
}, {
"value": "管道工程类",
"label": "管道工程类"
}, {
"value": "机场场道工程类",
"label": "机场场道工程类"
}, {
"value": "其它工程类",
"label": "其它工程类"
}, {
"value": "经济专业",
"label": "经济专业"
}, {
"value": "会计专业",
"label": "会计专业"
}, {
"value": "统计专业",
"label": "统计专业"
}, {
"value": "审计专业",
"label": "审计专业"
}]
}, {
"value": "员级工程师",
"label": "员级工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
}, {
"value": "建筑工程类",
"label": "建筑工程类"
}, {
"value": "市政公用工程类",
"label": "市政公用工程类"
}, {
"value": "公路工程类",
"label": "公路工程类"
}, {
"value": "铁路工程类",
"label": "铁路工程类"
}, {
"value": "港口与航道类",
"label": "港口与航道类"
}, {
"value": "水利水电类",
"label": "水利水电类"
}, {
"value": "电力工程类",
"label": "电力工程类"
}, {
"value": "矿山工程类",
"label": "矿山工程类"
}, {
"value": "冶金工程类",
"label": "冶金工程类"
}, {
"value": "石油化工类",
"label": "石油化工类"
}, {
"value": "通信工程类",
"label": "通信工程类"
}, {
"value": "机电工程类",
"label": "机电工程类"
}, {
"value": "地基与基础",
"label": "地基与基础"
}, {
"value": "电子与智能化工程类",
"label": "电子与智能化工程类"
}, {
"value": "消防工程类",
"label": "消防工程类"
}, {
"value": "建筑装修装饰工程类",
"label": "建筑装修装饰工程类"
}, {
"value": "城市及道路照明工程类",
"label": "城市及道路照明工程类"
}, {
"value": "环保工程类",
"label": "环保工程类"
}, {
"value": "管道工程类",
"label": "管道工程类"
}, {
"value": "机场场道工程类",
"label": "机场场道工程类"
}, {
"value": "其它工程类",
"label": "其它工程类"
}, {
"value": "经济专业",
"label": "经济专业"
}, {
"value": "会计专业",
"label": "会计专业"
}, {
"value": "统计专业",
"label": "统计专业"
}, {
"value": "审计专业",
"label": "审计专业"
}]
}, {
"value": "员级及以上工程师",
"label": "员级及以上工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
}, {
"value": "建筑工程类",
"label": "建筑工程类"
}, {
"value": "市政公用工程类",
"label": "市政公用工程类"
}, {
"value": "公路工程类",
"label": "公路工程类"
}, {
"value": "铁路工程类",
"label": "铁路工程类"
}, {
"value": "港口与航道类",
"label": "港口与航道类"
}, {
"value": "水利水电类",
"label": "水利水电类"
}, {
"value": "电力工程类",
"label": "电力工程类"
}, {
"value": "矿山工程类",
"label": "矿山工程类"
}, {
"value": "冶金工程类",
"label": "冶金工程类"
}, {
"value": "石油化工类",
"label": "石油化工类"
}, {
"value": "通信工程类",
"label": "通信工程类"
}, {
"value": "机电工程类",
"label": "机电工程类"
}, {
"value": "地基与基础",
"label": "地基与基础"
}, {
"value": "电子与智能化工程类",
"label": "电子与智能化工程类"
}, {
"value": "消防工程类",
"label": "消防工程类"
}, {
"value": "建筑装修装饰工程类",
"label": "建筑装修装饰工程类"
}, {
"value": "城市及道路照明工程类",
"label": "城市及道路照明工程类"
}, {
"value": "环保工程类",
"label": "环保工程类"
}, {
"value": "管道工程类",
"label": "管道工程类"
}, {
"value": "机场场道工程类",
"label": "机场场道工程类"
}, {
"value": "其它工程类",
"label": "其它工程类"
}, {
"value": "经济专业",
"label": "经济专业"
}, {
"value": "会计专业",
"label": "会计专业"
}, {
"value": "统计专业",
"label": "统计专业"
}, {
"value": "审计专业",
"label": "审计专业"
}]
}]
},
{
"value": "文物保护从业人员",
"label": "文物保护从业人员",
"children": [{
"value": "责任设计师",
"label": "责任设计师",
"children": [{
"value": "不限专业",
"label": "不限专业"
},
{
"value": "古建筑",
"label": "古建筑"
},
{
"value": "保护规划",
"label": "保护规划"
},
{
"value": "近现代重要史迹及代表性建筑",
"label": "近现代重要史迹及代表性建筑"
},
{
"value": "古文化遗址古墓葬",
"label": "古文化遗址古墓葬"
},
{
"value": "石窟寺和石刻",
"label": "石窟寺和石刻"
},
{
"value": "壁画",
"label": "壁画"
}
]
},
{
"value": "责任工程师",
"label": "责任工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
},
{
"value": "古建筑",
"label": "古建筑"
},
{
"value": "保护规划",
"label": "保护规划"
},
{
"value": "近现代重要史迹及代表性建筑",
"label": "近现代重要史迹及代表性建筑"
},
{
"value": "古文化遗址古墓葬",
"label": "古文化遗址古墓葬"
},
{
"value": "石窟寺和石刻",
"label": "石窟寺和石刻"
},
{
"value": "壁画",
"label": "壁画"
}
]
}
]
},
{
"value": "消防技术类人员",
"label": "消防技术类人员",
"children": [{
"value": "三级消防设施操作员",
"label": "三级消防设施操作员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
},
{
"value": "四级消防设施操作员",
"label": "四级消防设施操作员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
},
{
"value": "四级及以上消防设施操作员",
"label": "四级及以上消防设施操作员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
},
{
"value": "五级消防设施操作员",
"label": "五级消防设施操作员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
},
{
"value": "五级及以上消防设施操作员",
"label": "五级及以上消防设施操作员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}
]
},
{
"value": "信息系统集成项目经理",
"label": "信息系统集成项目经理",
"children": [
{
"value": "项目经理",
"label": "项目经理"
},
{
"value": "运维项目经理",
"label": "运维项目经理"
},
{
"value": "高级项目经理",
"label": "高级项目经理"
},
{
"value": "高级运维项目经理",
"label": "高级运维项目经理"
}
]
},
{
"value": "注册安全工程师",
"label": "注册安全工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
},
{
"value": "化工安全",
"label": "化工安全"
},
{
"value": "建筑施工安全",
"label": "建筑施工安全"
},
{
"value": "煤矿安全",
"label": "煤矿安全"
},
{
"value": "道路运输安全",
"label": "道路运输安全"
},
{
"value": "金属冶炼安全",
"label": "金属冶炼安全"
},
{
"value": "金属非金属矿山安全",
"label": "金属非金属矿山安全"
},
{
"value": "非煤矿矿山安全",
"label": "非煤矿矿山安全"
},
{
"value": "危险物品安全(危险化学品)",
"label": "危险物品安全(危险化学品)"
},
{
"value": "危险物品安全(民用爆破器材)",
"label": "危险物品安全(民用爆破器材)"
},
{
"value": "危险物品安全(烟花爆竹)",
"label": "危险物品安全(烟花爆竹)"
},
{
"value": "其他安全",
"label": "其他安全"
},
{
"value": "其他安全(交通)",
"label": "其他安全(交通)"
},
{
"value": "其他安全(其他)",
"label": "其他安全(其他)"
},
{
"value": "其他安全(军工)",
"label": "其他安全(军工)"
},
{
"value": "其他安全(农业)",
"label": "其他安全(农业)"
},
{
"value": "其他安全(林业)",
"label": "其他安全(林业)"
},
{
"value": "其他安全(民航)",
"label": "其他安全(民航)"
},
{
"value": "其他安全(水利)",
"label": "其他安全(水利)"
},
{
"value": "其他安全(消防)",
"label": "其他安全(消防)"
},
{
"value": "其他安全(特种设备)",
"label": "其他安全(特种设备)"
},
{
"value": "其他安全(电信)",
"label": "其他安全(电信)"
},
{
"value": "其他安全(电力)",
"label": "其他安全(电力)"
},
{
"value": "其他安全(铁路)",
"label": "其他安全(铁路)"
}
]
},
{
"value": "设备监理师",
"label": "设备监理师",
"children": [
{
"value": "注册设备监理师",
"label": "注册设备监理师",
"children": [
{
"value": "不分专业",
"label": "不分专业"
}
]
},
{
"value": "高级设备监理师",
"label": "高级设备监理师",
"children": [
{
"value": "不分专业",
"label": "不分专业"
}
]
},
{
"value": "专业设备监理师",
"label": "专业设备监理师",
"children": [
{
"value": "不分专业",
"label": "不分专业"
}
]
},
{
"value": "助理设备监理师",
"label": "助理设备监理师",
"children": [
{
"value": "不分专业",
"label": "不分专业"
}
]
}
]
},
{
"value": "注册消防工程师",
"label": "注册消防工程师",
"children": [{
"value": "一级注册消防工程师",
"label": "一级注册消防工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
},
{
"value": "技术负责人",
"label": "技术负责人"
},
{
"value": "项目负责人",
"label": "项目负责人"
},
{
"value": "消防安全管理人",
"label": "消防安全管理人"
}
]
}, {
"value": "二级注册消防工程师",
"label": "二级注册消防工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
},
{
"value": "技术负责人",
"label": "技术负责人"
},
{
"value": "项目负责人",
"label": "项目负责人"
},
{
"value": "消防安全管理人",
"label": "消防安全管理人"
}
]
}, {
"value": "二级及以上注册消防工程师",
"label": "二级及以上注册消防工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
},
{
"value": "技术负责人",
"label": "技术负责人"
},
{
"value": "项目负责人",
"label": "项目负责人"
},
{
"value": "消防安全管理人",
"label": "消防安全管理人"
}
]
}]
},
{
"value": "环境影响评价工程师",
"label": "环境影响评价工程师",
"children": [{
"value": "环境影响评价工程师",
"label": "环境影响评价工程师"
}]
},
{
"value": "房地产估价师",
"label": "房地产估价师",
"children": [{
"value": "房地产估价师",
"label": "房地产估价师"
}]
},
{
"value": "安全评价师",
"label": "安全评价师",
"children": [{
"value": "一级安全评价师",
"label": "一级安全评价师",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "二级安全评价师",
"label": "二级安全评价师",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "二级及以上安全评价师",
"label": "二级及以上安全评价师",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "三级安全评价师",
"label": "三级安全评价师",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "三级及以上安全评价师",
"label": "三级及以上安全评价师",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}]
},
{
"value": "注册测绘师",
"label": "注册测绘师",
"children": [{
"value": "注册测绘师",
"label": "注册测绘师"
}]
},
{
"value": "注册城乡规划师",
"label": "注册城乡规划师",
"children": [{
"value": "注册城乡规划师",
"label": "注册城乡规划师"
}]
},
{
"value": "咨询工程师",
"label": "咨询工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
},
{
"value": "建筑",
"label": "建筑"
},
{
"value": "市政公用工程",
"label": "市政公用工程"
},
{
"value": "公路",
"label": "公路"
},
{
"value": "水利水电",
"label": "水利水电"
},
{
"value": "工程勘察",
"label": "工程勘察"
},
{
"value": "农业、林业",
"label": "农业、林业"
},
{
"value": "轻工、纺织",
"label": "轻工、纺织"
},
{
"value": "铁路、城市轨道交通",
"label": "铁路、城市轨道交通"
},
{
"value": "冶金(含钢铁、有色冶金)",
"label": "冶金(含钢铁、有色冶金)"
},
{
"value": "水运含港口河海工程",
"label": "水运含港口河海工程"
},
{
"value": "生态建设和环境工程",
"label": "生态建设和环境工程"
},
{
"value": "水文地质、工程测量、岩土工程",
"label": "水文地质、工程测量、岩土工程"
},
{
"value": "石化、化工、医药",
"label": "石化、化工、医药"
},
{
"value": "电力(含火电、水电、核电、新能源)",
"label": "电力(含火电、水电、核电、新能源)"
},
{
"value": "电子、信息工程(含通信、广电、信息化)",
"label": "电子、信息工程(含通信、广电、信息化)"
},
{
"value": "机械 含智能制造",
"label": "机械 含智能制造"
},
{
"value": "其他",
"label": "其他"
}
]
},
{
"value": "水利建设市场监管平台备案人员",
"label": "水利建设市场监管平台备案人员",
"children": [{
"value": "注册人员",
"label": "注册人员",
"children": [{
"value": "一级注册建造师",
"label": "一级注册建造师",
"children": [{
"value": "不限专业",
"label": "不限专业"
},
{
"value": "市政公用工程",
"label": "市政公用工程"
},
{
"value": "建筑工程",
"label": "建筑工程"
},
{
"value": "机电工程",
"label": "机电工程"
},
{
"value": "公路工程",
"label": "公路工程"
},
{
"value": "民航机场工程",
"label": "民航机场工程"
},
{
"value": "水利水电工程",
"label": "水利水电工程"
},
{
"value": "港口与航道工程",
"label": "港口与航道工程"
},
{
"value": "矿业工程",
"label": "矿业工程"
},
{
"value": "矿山工程",
"label": "矿山工程"
},
{
"value": "通信与广电工程",
"label": "通信与广电工程"
},
{
"value": "铁路工程",
"label": "铁路工程"
}
]
},
{
"value": "二级注册建造师",
"label": "二级注册建造师",
"children": [{
"value": "不限专业",
"label": "不限专业"
},
{
"value": "市政公用工程",
"label": "市政公用工程"
},
{
"value": "建筑工程",
"label": "建筑工程"
},
{
"value": "机电工程",
"label": "机电工程"
},
{
"value": "公路工程",
"label": "公路工程"
},
{
"value": "民航机场工程",
"label": "民航机场工程"
},
{
"value": "水利水电工程",
"label": "水利水电工程"
},
{
"value": "港口与航道工程",
"label": "港口与航道工程"
},
{
"value": "矿业工程",
"label": "矿业工程"
},
{
"value": "矿山工程",
"label": "矿山工程"
},
{
"value": "通信与广电工程",
"label": "通信与广电工程"
},
{
"value": "铁路工程",
"label": "铁路工程"
}
]
},
{
"value": "二级及以上注册建造师",
"label": "二级及以上注册建造师",
"children": [{
"value": "不限专业",
"label": "不限专业"
},
{
"value": "市政公用工程",
"label": "市政公用工程"
},
{
"value": "建筑工程",
"label": "建筑工程"
},
{
"value": "机电工程",
"label": "机电工程"
},
{
"value": "公路工程",
"label": "公路工程"
},
{
"value": "民航机场工程",
"label": "民航机场工程"
},
{
"value": "水利水电工程",
"label": "水利水电工程"
},
{
"value": "港口与航道工程",
"label": "港口与航道工程"
},
{
"value": "矿业工程",
"label": "矿业工程"
},
{
"value": "矿山工程",
"label": "矿山工程"
},
{
"value": "通信与广电工程",
"label": "通信与广电工程"
},
{
"value": "铁路工程",
"label": "铁路工程"
}
]
},
{
"value": "一级注册建筑师",
"label": "一级注册建筑师",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "二级注册建筑师",
"label": "二级注册建筑师",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "二级及以上注册建筑师",
"label": "二级及以上注册建筑师",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "一级注册结构工程师",
"label": "一级注册结构工程师",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "二级注册结构工程师",
"label": "二级注册结构工程师",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "二级及以上注册结构工程师",
"label": "二级及以上注册结构工程师",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "造价工程师",
"label": "造价工程师",
"children": [{
"value": "水利",
"label": "水利"
}]
},
{
"value": "注册公用设备工程师(动力)",
"label": "注册公用设备工程师(动力)",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "注册公用设备工程师(暖通空调)",
"label": "注册公用设备工程师(暖通空调)",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "注册公用设备工程师(给水排水)",
"label": "注册公用设备工程师(给水排水)",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "注册土木工程师(岩土)",
"label": "注册土木工程师(岩土)",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "注册土木工程师(水利水电)",
"label": "注册土木工程师(水利水电)",
"children": [{
"value": "不限专业",
"label": "不限专业"
},
{
"value": "工程移民",
"label": "工程移民"
}, {
"value": "工程规划",
"label": "工程规划"
}, {
"value": "水土保持",
"label": "水土保持"
}, {
"value": "水工地质",
"label": "水工地质"
}, {
"value": "水工结构",
"label": "水工结构"
}
]
},
{
"value": "注册安全工程师",
"label": "注册安全工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
},
{
"value": "化工安全",
"label": "化工安全"
},
{
"value": "建筑施工安全",
"label": "建筑施工安全"
},
{
"value": "煤矿安全",
"label": "煤矿安全"
},
{
"value": "道路运输安全",
"label": "道路运输安全"
},
{
"value": "金属冶炼安全",
"label": "金属冶炼安全"
},
{
"value": "金属非金属矿山安全",
"label": "金属非金属矿山安全"
},
{
"value": "非煤矿矿山安全",
"label": "非煤矿矿山安全"
},
{
"value": "危险物品安全(危险化学品)",
"label": "危险物品安全(危险化学品)"
},
{
"value": "危险物品安全(民用爆破器材)",
"label": "危险物品安全(民用爆破器材)"
},
{
"value": "危险物品安全(烟花爆竹)",
"label": "危险物品安全(烟花爆竹)"
},
{
"value": "其他安全",
"label": "其他安全"
},
{
"value": "其他安全(交通)",
"label": "其他安全(交通)"
},
{
"value": "其他安全(其他)",
"label": "其他安全(其他)"
},
{
"value": "其他安全(军工)",
"label": "其他安全(军工)"
},
{
"value": "其他安全(农业)",
"label": "其他安全(农业)"
},
{
"value": "其他安全(林业)",
"label": "其他安全(林业)"
},
{
"value": "其他安全(民航)",
"label": "其他安全(民航)"
},
{
"value": "其他安全(水利)",
"label": "其他安全(水利)"
},
{
"value": "其他安全(消防)",
"label": "其他安全(消防)"
},
{
"value": "其他安全(特种设备)",
"label": "其他安全(特种设备)"
},
{
"value": "其他安全(电信)",
"label": "其他安全(电信)"
},
{
"value": "其他安全(电力)",
"label": "其他安全(电力)"
},
{
"value": "其他安全(铁路)",
"label": "其他安全(铁路)"
}
]
},
{
"value": "注册电气工程师(供配电)",
"label": "注册电气工程师(供配电)",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
},
{
"value": "注册电气工程师(发输变电)",
"label": "注册电气工程师(发输变电)",
"children": [{
"value": "不分专业",
"label": "不分专业"
}]
}
]
},
{
"value": "监理工程师",
"label": "监理工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
},
{
"value": "建筑工程三类人员",
"label": "建筑工程三类人员",
"children": [{
"value": "A类",
"label": "A类"
},
{
"value": "B类",
"label": "B类"
},
{
"value": "C类",
"label": "C类"
}
]
},
{
"value": "水利工程三类人员",
"label": "水利工程三类人员",
"children": [{
"value": "A类",
"label": "A类"
},
{
"value": "B类",
"label": "B类"
},
{
"value": "C类",
"label": "C类"
}
]
},
{
"value": "交通运输工程三类人员",
"label": "交通运输工程三类人员",
"children": [{
"value": "A类",
"label": "A类"
},
{
"value": "B类",
"label": "B类"
},
{
"value": "C类",
"label": "C类"
}
]
},
{
"value": "建筑施工现场管理人员",
"label": "建筑施工现场管理人员",
"children": [{
"value": "资料员",
"label": "资料员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "造价员",
"label": "造价员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "质量检测员",
"label": "质量检测员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}, {
"value": "不分专业",
"label": "不分专业"
}, {
"value": "岩土工程",
"label": "岩土工程"
}, {
"value": "机械电气",
"label": "机械电气"
}, {
"value": "混凝土工程",
"label": "混凝土工程"
}, {
"value": "量测",
"label": "量测"
}, {
"value": "金属结构",
"label": "金属结构"
}]
}, {
"value": "质检员",
"label": "质检员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "监理员",
"label": "监理员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}]
}
]
},
{
"value": "全国水利建设市场信用信息平台备案人员",
"label": "全国水利建设市场信用信息平台备案人员",
"children": [{
"value": "注册人员",
"label": "注册人员",
"children": [{
"value": "一级注册建造师",
"label": "一级注册建造师",
"children": [{
"value": "不限专业",
"label": "不限专业"
},
{
"value": "市政公用工程",
"label": "市政公用工程"
},
{
"value": "建筑工程",
"label": "建筑工程"
},
{
"value": "机电工程",
"label": "机电工程"
},
{
"value": "公路工程",
"label": "公路工程"
},
{
"value": "民航机场工程",
"label": "民航机场工程"
},
{
"value": "水利水电工程",
"label": "水利水电工程"
},
{
"value": "港口与航道工程",
"label": "港口与航道工程"
},
{
"value": "矿业工程",
"label": "矿业工程"
},
{
"value": "矿山工程",
"label": "矿山工程"
},
{
"value": "通信与广电工程",
"label": "通信与广电工程"
},
{
"value": "铁路工程",
"label": "铁路工程"
}
]
},
{
"value": "二级注册建造师",
"label": "二级注册建造师",
"children": [{
"value": "不限专业",
"label": "不限专业"
},
{
"value": "市政公用工程",
"label": "市政公用工程"
},
{
"value": "建筑工程",
"label": "建筑工程"
},
{
"value": "机电工程",
"label": "机电工程"
},
{
"value": "公路工程",
"label": "公路工程"
},
{
"value": "民航机场工程",
"label": "民航机场工程"
},
{
"value": "水利水电工程",
"label": "水利水电工程"
},
{
"value": "港口与航道工程",
"label": "港口与航道工程"
},
{
"value": "矿业工程",
"label": "矿业工程"
},
{
"value": "矿山工程",
"label": "矿山工程"
},
{
"value": "通信与广电工程",
"label": "通信与广电工程"
},
{
"value": "铁路工程",
"label": "铁路工程"
}
]
},
{
"value": "二级及以上注册建造师",
"label": "二级及以上注册建造师",
"children": [{
"value": "不限专业",
"label": "不限专业"
},
{
"value": "市政公用工程",
"label": "市政公用工程"
},
{
"value": "建筑工程",
"label": "建筑工程"
},
{
"value": "机电工程",
"label": "机电工程"
},
{
"value": "公路工程",
"label": "公路工程"
},
{
"value": "民航机场工程",
"label": "民航机场工程"
},
{
"value": "水利水电工程",
"label": "水利水电工程"
},
{
"value": "港口与航道工程",
"label": "港口与航道工程"
},
{
"value": "矿业工程",
"label": "矿业工程"
},
{
"value": "矿山工程",
"label": "矿山工程"
},
{
"value": "通信与广电工程",
"label": "通信与广电工程"
},
{
"value": "铁路工程",
"label": "铁路工程"
}
]
}
]
},
{
"value": "监理工程师",
"label": "监理工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
},
{
"value": "总监理工程师",
"label": "总监理工程师",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
},
{
"value": "建筑工程三类人员",
"label": "建筑工程三类人员",
"children": [{
"value": "A类",
"label": "A类"
},
{
"value": "B类",
"label": "B类"
},
{
"value": "C类",
"label": "C类"
}
]
},
{
"value": "水利工程三类人员",
"label": "水利工程三类人员",
"children": [{
"value": "A类",
"label": "A类"
},
{
"value": "B类",
"label": "B类"
},
{
"value": "C类",
"label": "C类"
}
]
},
{
"value": "交通运输工程三类人员",
"label": "交通运输工程三类人员",
"children": [{
"value": "A类",
"label": "A类"
},
{
"value": "B类",
"label": "B类"
},
{
"value": "C类",
"label": "C类"
}
]
},
{
"value": "建筑施工现场管理人员",
"label": "建筑施工现场管理人员",
"children": [{
"value": "资料员",
"label": "资料员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "监理员",
"label": "监理员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "材料员",
"label": "材料员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "施工员",
"label": "施工员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}, {
"value": "质量检测员",
"label": "质量检测员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}, {
"value": "不分专业",
"label": "不分专业"
}, {
"value": "岩土工程",
"label": "岩土工程"
}, {
"value": "机械电气",
"label": "机械电气"
}, {
"value": "混凝土工程",
"label": "混凝土工程"
}, {
"value": "量测",
"label": "量测"
}, {
"value": "金属结构",
"label": "金属结构"
}]
}, {
"value": "质检员",
"label": "质检员",
"children": [{
"value": "不限专业",
"label": "不限专业"
}]
}]
}
]
}
]
...@@ -656,6 +656,7 @@ ...@@ -656,6 +656,7 @@
background: #F6F9FD; background: #F6F9FD;
border-radius: 6px; border-radius: 6px;
padding: 24px; padding: 24px;
border: 1px solid #F6F9FD;
//box-sizing: content-box; //box-sizing: content-box;
box-sizing: border-box; box-sizing: border-box;
>div{ >div{
...@@ -676,7 +677,6 @@ ...@@ -676,7 +677,6 @@
} }
} }
.rec_detail:hover{ .rec_detail:hover{
.operate{ .operate{
display: block; display: block;
......
...@@ -507,4 +507,188 @@ select { ...@@ -507,4 +507,188 @@ select {
.viewlist-el-popover .pup_list_export li .lowerRate_imgzhc { .viewlist-el-popover .pup_list_export li .lowerRate_imgzhc {
width: 39px; width: 39px;
height: 14px; height: 14px;
} }
\ No newline at end of file
.content_item_ckquery .item_ckquery_list {
display: flex;
}
.content_item_ckquery .item_ckquery_list .el-input__icon {
position: relative;
top: 1px;
}
.content_item_ckquery .item_ckquery_distance {
margin-top: 8px;
}
.ckquery_list_right {
width: 716px;
}
.content_item_ckquery .item_ckquery_btn {
display: inline-block;
border-radius: 2px 2px 2px 2px;
cursor: pointer;
text-align: center;
color: #ffffff;
margin-left: 8px;
margin-right: 32px;
width: 115px;
height: 34px;
line-height: 34px;
border: 1px solid #0081FF;
font-weight: 400;
color: #0081FF;
}
.content_item_ckquery .item_ckquery_btn:hover {
background: #0074E5;
color: #fff;
}
.content_item_ckquery .el-radio__label {
margin-left: 0px;
padding-left: 4px;
margin-right: 24px;
}
.content_item_list {
line-height: 34px;
}
.content_item_zizi .el-radio__label {
margin-right: 0;
}
.content_item_zizi .el-cascader-node>.el-radio {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 40px;
opacity: 0;
}
.select-list {
color: #666;
line-height: 24px;
font-size: 14px;
padding: 0;
user-select: none;
min-width: 100px;
max-width: 380px;
max-height: 400px;
overflow: auto;
box-shadow: none;
border-radius: 0;
background-color: #fff;
padding: 6px 0px;
}
.select-radio::-webkit-scrollbar-thumb {
background-color: #b9b9b9 !important;
border-radius: 6px !important;
}
.select-radio::-webkit-scrollbar {
width: 6px !important;
height: 6px !important;
}
.select-radio::-webkit-scrollbar-track {
background: #fff !important;
}
.select-radio::-webkit-scrollbar-corner {
background: #fff !important;
}
.select-list li {
cursor: pointer;
display: block;
padding: 0;
}
.select-list li:hover {
color: #0381fa;
background: #f2f7ff;
}
.select-list li .el-icon--right {
float: right;
margin-top: 4px;
}
.select-list .el-dropdown-menu__item{
padding: 0;
}
.select-list .el-dropdown-menu__item :hover{
color: #0381fa;
background: #f2f7ff;
}
.select-list .select-list-li {
text-align: left;
padding: 0px 16px;
line-height: 32px;
position: relative;
}
.select-list-li .ivu-date-picker .ivu-select-dropdown {
/* position: absolute;
top: 0;
left: 0;
width: 96px;
opacity: 0; */
left: 120px !important;
z-index: 1000;
}
.ivu-select-dropdown {
z-index: 9000;
}
.select-list-li-span {
width: 96px;
}
.select-list .active {
color: #0381fa;
background: #f2f7ff;
}
.select-list .active .el-radio__label {
color: #0381fa;
}
.select-list-left {
border-left: 1px solid #ccc;
margin-left: 2px;
}
.select-list .el-radio {
display: block;
line-height: 36px;
margin: 0;
}
.select-list .el-radio .el-radio__label {
padding-left: 16px;
padding-right: 16px;
display: block;
margin: 0;
}
.select-list .el-radio .el-radio__label:hover {
/* color: #0381fa;
background: #f2f7ff; */
}
.select-list .el-radio__input.is-checked+.el-radio__label {
background: #f2f7ff;
}
.select-list .el-radio__input {
display: none;
}
...@@ -24,8 +24,8 @@ ...@@ -24,8 +24,8 @@
left: 0; left: 0;
z-index: 1001; z-index: 1001;
// overflow: hidden; // overflow: hidden;
-webkit-box-shadow: 2px 0 6px rgba(0,21,41,.35); // -webkit-box-shadow: 2px 0 6px rgba(0,21,41,.35);
box-shadow: 2px 0 6px rgba(0,21,41,.35); // box-shadow: 2px 0 6px rgba(0,21,41,.35);
//展开、收起箭头 //展开、收起箭头
.side-expand{ .side-expand{
position: absolute; position: absolute;
......
...@@ -42,7 +42,7 @@ export default { ...@@ -42,7 +42,7 @@ export default {
.hasTagsView { .hasTagsView {
.app-main { .app-main {
/* 84 = navbar + tags-view = 50 + 34 */ /* 84 = navbar + tags-view = 50 + 34 */
min-height: calc(100vh - 84px); min-height: calc(100vh - 56px);
background: #F5F5F5; background: #F5F5F5;
} }
......
...@@ -173,7 +173,7 @@ ...@@ -173,7 +173,7 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="bottems" v-if="tableData.total>0"> <div class="bottems" v-if="tableData.total>searchParam.pageSize">
<el-pagination <el-pagination
background background
:page-size="searchParam.pageSize" :page-size="searchParam.pageSize"
......
...@@ -99,7 +99,7 @@ ...@@ -99,7 +99,7 @@
<div class="trendcon">{{item.text}}</div> <div class="trendcon">{{item.text}}</div>
<div class="time">{{item.time}}</div> <div class="time">{{item.time}}</div>
</div> </div>
<div class="tables" style="width: 100%"> <div class="tables" style="width: 100%" v-if="datalist.length>10">
<div class="bottems"> <div class="bottems">
<el-pagination <el-pagination
background background
...@@ -236,7 +236,7 @@ export default { ...@@ -236,7 +236,7 @@ export default {
{ {
name: '', name: '',
type: 'bar', type: 'bar',
barWidth: '20%', barWidth: '12px',
data: [100, 152, 200, 334, 390, 330, 220,256,178], data: [100, 152, 200, 334, 390, 330, 220,256,178],
itemStyle:{ itemStyle:{
normal: { normal: {
...@@ -280,7 +280,7 @@ export default { ...@@ -280,7 +280,7 @@ export default {
{ {
name: '', name: '',
type: 'bar', type: 'bar',
barWidth: '20%', barWidth: '12px',
data: [110, 112, 190, 234, 310, 350, 220,276,198], data: [110, 112, 190, 234, 310, 350, 220,276,198],
itemStyle:{ itemStyle:{
normal:{ normal:{
...@@ -551,6 +551,12 @@ export default { ...@@ -551,6 +551,12 @@ export default {
line-height: 18px; line-height: 18px;
padding-bottom: 16px; padding-bottom: 16px;
} }
&:last-child{
.trendcon{
border: none;
}
}
.time{ .time{
position: absolute; position: absolute;
right: 16px; right: 16px;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -865,7 +865,7 @@ export default { ...@@ -865,7 +865,7 @@ export default {
type: 'value', type: 'value',
}, },
grid: { grid: {
left: '16%', left: '20%',
top: 20, top: 20,
right: 20, right: 20,
bottom: 60, bottom: 60,
...@@ -972,6 +972,7 @@ export default { ...@@ -972,6 +972,7 @@ export default {
.title{ .title{
font-size: 12px; font-size: 12px;
color: #3D3D3D; color: #3D3D3D;
border-bottom: 0;
} }
.number{ .number{
font-weight: bold; font-weight: bold;
...@@ -1473,6 +1474,7 @@ export default { ...@@ -1473,6 +1474,7 @@ export default {
.item{ .item{
border-bottom: 1px solid #EEEEEE; border-bottom: 1px solid #EEEEEE;
padding: 10px 0; padding: 10px 0;
cursor: pointer;
h3{ h3{
font-weight: 400; font-weight: 400;
color: rgba(35,35,35,0.8); color: rgba(35,35,35,0.8);
...@@ -1494,6 +1496,11 @@ export default { ...@@ -1494,6 +1496,11 @@ export default {
} }
} }
} }
.item:hover{
h3{
color:#0081FF;
}
}
.item:last-child{ .item:last-child{
border-bottom: 0; border-bottom: 0;
} }
...@@ -1509,6 +1516,7 @@ export default { ...@@ -1509,6 +1516,7 @@ export default {
.item{ .item{
border-bottom: 1px solid #EEEEEE; border-bottom: 1px solid #EEEEEE;
padding: 10px 0; padding: 10px 0;
cursor: pointer;
h3{ h3{
font-weight: 400; font-weight: 400;
color: rgba(35,35,35,0.8); color: rgba(35,35,35,0.8);
...@@ -1530,6 +1538,11 @@ export default { ...@@ -1530,6 +1538,11 @@ export default {
} }
} }
} }
.item:hover{
h3{
color:#0081FF;
}
}
.item:last-child{ .item:last-child{
border-bottom: 0; border-bottom: 0;
} }
......
...@@ -159,13 +159,13 @@ export default { ...@@ -159,13 +159,13 @@ export default {
<style rel="stylesheet/scss" lang="scss"> <style rel="stylesheet/scss" lang="scss">
.login { .login {
/*display: flex;*/
justify-content: center;
align-items: center; align-items: center;
height: 100%; height: 100%;
background-image: url("../assets/images/login_bg.png"); background-image: url("../assets/images/login_bg.png");
background-size: cover; background-size: cover;
overflow-y: hidden; overflow-y: hidden;
display: flex;
justify-content: center;
.content{ .content{
width: 1320px; width: 1320px;
margin: 0 auto; margin: 0 auto;
......
...@@ -5,8 +5,8 @@ ...@@ -5,8 +5,8 @@
<span class="common-title">指标</span> <span class="common-title">指标</span>
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small"> <el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item prop="year"> <el-form-item prop="year">
<el-select v-model="queryParams.year" filterable multiple collapse-tags class="form-content-width" placeholder="请选择"> <el-select v-model="queryParams.year" filterable class="form-content-width" placeholder="请选择">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.name" :value="item.value" /> <el-option v-for="(item, index) in yearOptions" :key="index" :label="item.year" :value="item.year" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -20,57 +20,62 @@ ...@@ -20,57 +20,62 @@
<div class="table-title"> <div class="table-title">
<span class="title">指标</span> <span class="title">指标</span>
<span class="title"> <span class="title">
<span class="address" v-if="value1">{{addressValue1}}<i class="el-icon-circle-close" @click="handleDelete(1)"></i></span> <span class="address" v-if="value1Flag">{{addressValue1}}<i class="el-icon-circle-close" @click="handleDelete(1)"></i></span>
<el-cascader <el-cascader
v-else v-else
ref="address1" ref="address1"
:options="addressList" :options="addressList"
:props="props" :props="props"
v-model="value1" v-model="value1"
@visible-change="handleVisibleChange($event,1)"
@change="handleChange(1)" @change="handleChange(1)"
placeholder="添加地区"></el-cascader> placeholder="添加地区"></el-cascader>
</span> </span>
<span class="title"> <span class="title">
<span class="address" v-if="value2">{{addressValue2}}<i class="el-icon-circle-close" @click="handleDelete(2)"></i></span> <span class="address" v-if="value2Flag">{{addressValue2}}<i class="el-icon-circle-close" @click="handleDelete(2)"></i></span>
<el-cascader <el-cascader
v-else v-else
ref="address2" ref="address2"
:options="addressList" :options="addressList"
:props="props" :props="props"
v-model="value2" v-model="value2"
@visible-change="handleVisibleChange($event,2)"
@change="handleChange(2)" @change="handleChange(2)"
placeholder="添加地区"></el-cascader> placeholder="添加地区"></el-cascader>
</span> </span>
<span class="title"> <span class="title">
<span class="address" v-if="value3">{{addressValue3}}<i class="el-icon-circle-close" @click="handleDelete(3)"></i></span> <span class="address" v-if="value3Flag">{{addressValue3}}<i class="el-icon-circle-close" @click="handleDelete(3)"></i></span>
<el-cascader <el-cascader
v-else v-else
ref="address3" ref="address3"
:options="addressList" :options="addressList"
:props="props" :props="props"
v-model="value3" v-model="value3"
@visible-change="handleVisibleChange($event,3)"
@change="handleChange(3)" @change="handleChange(3)"
placeholder="添加地区"></el-cascader> placeholder="添加地区"></el-cascader>
</span> </span>
<span class="title"> <span class="title">
<span class="address" v-if="value4">{{addressValue4}}<i class="el-icon-circle-close" @click="handleDelete(4)"></i></span> <span class="address" v-if="value4Flag">{{addressValue4}}<i class="el-icon-circle-close" @click="handleDelete(4)"></i></span>
<el-cascader <el-cascader
v-else v-else
ref="address2" ref="address4"
:options="addressList" :options="addressList"
:props="props" :props="props"
v-model="value4" v-model="value4"
@visible-change="handleVisibleChange($event,4)"
@change="handleChange(4)" @change="handleChange(4)"
placeholder="添加地区"></el-cascader> placeholder="添加地区"></el-cascader>
</span> </span>
<span class="title"> <span class="title">
<span class="address" v-if="value5">{{addressValue5}}<i class="el-icon-circle-close" @click="handleDelete(5)"></i></span> <span class="address" v-if="value5Flag">{{addressValue5}}<i class="el-icon-circle-close" @click="handleDelete(5)"></i></span>
<el-cascader <el-cascader
v-else v-else
ref="address5" ref="address5"
:options="addressList" :options="addressList"
:props="props" :props="props"
v-model="value5" v-model="value5"
@visible-change="handleVisibleChange($event,5)"
@change="handleChange(5)" @change="handleChange(5)"
placeholder="添加地区"></el-cascader> placeholder="添加地区"></el-cascader>
</span> </span>
...@@ -95,51 +100,30 @@ ...@@ -95,51 +100,30 @@
<script> <script>
import dataRegion from '@/assets/json/dataRegion' import dataRegion from '@/assets/json/dataRegion'
import { nationalPage,getYears } from '@/api/macro/macro'
export default { export default {
name: 'comparison', name: 'comparison',
props:{
dataQuery:{}
},
data() { data() {
return { return {
queryParams: { queryParams: {
year: '', year: '',
}, },
yearOptions: [ yearOptions: [],
{ name: '2023年', value: '2023' },
{ name: '2022年', value: '2022' },
{ name: '2021年', value: '2021' },
],
tableData: [ tableData: [
{ {index:0},
zb:'', {index:1},
gdp:'129,118.58', {index:2},
gdpzs:'124,369.67', {index:3},
rjgdp:'134,369.67', {index:4},
},
{
zb:"",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
{
zb:"",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
{
zb:"",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
{
zb:"",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
], ],
headers: [ headers: [
{
prop: 'year',
label: '指标',
},
{ {
prop: 'name', prop: 'name',
label: '经济', label: '经济',
...@@ -149,148 +133,149 @@ export default { ...@@ -149,148 +133,149 @@ export default {
label: 'GDP(亿元)', label: 'GDP(亿元)',
}, },
{ {
prop: 'gdpzs', prop: 'gdpAddValue',
label: 'GDP增速', label: 'GDP增速',
}, },
{ {
prop: 'rjgdp', prop: 'gdpPerCapita',
label: '人均GDP(元)', label: '人均GDP(元)',
}, },
{ {
prop: 'rjgdp', prop: 'piAddValue',
label: '第一产业增加值(亿元)', label: '第一产业增加值(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'siAddValue',
label: '第二产业增加值(亿元)', label: '第二产业增加值(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'tiAddValue',
label: '第三产业增加值(亿元)', label: '第三产业增加值(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'population',
label: '人口(万人)', label: '人口(万人)',
}, },
{ {
prop: 'rjgdp', prop: 'industryAddValue',
label: '工业增加值(亿元)', label: '工业增加值(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'industryTotalValue',
label: '工业总产值(亿元)', label: '工业总产值(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'realEstateInvestment',
label: '房地产开发投资(亿元)', label: '房地产开发投资(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'eximTotalValue',
label: '进出口总额(亿美元)', label: '进出口总额(亿美元)',
}, },
{ {
prop: 'rjgdp', prop: 'trscg',
label: '社会消费品零售总额(亿元)', label: '社会消费品零售总额(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'urbanPcdi',
label: '城镇居民人均可支配收入(元)', label: '城镇居民人均可支配收入(元)',
}, },
{ {
prop: 'cz', prop: 'name',
label: '财政', label: '财政',
}, },
{ {
prop: 'rjgdp', prop: 'gbr',
label: '一般公共预算收入(亿元)', label: '一般公共预算收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'gbrGrowth',
label: '般公共预算收入增速', label: '般公共预算收入增速',
}, },
{ {
prop: 'rjgdp', prop: 'taxIncome',
label: '税收收入(亿元)', label: '税收收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'transferIncome',
label: '转移性收入(亿元)', label: '转移性收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'superiorSubsidyIncome',
label: '上级补助收入(亿元)', label: '上级补助收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'gbe',
label: '一般公共预算支出(亿元)', label: '一般公共预算支出(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'govFundIncome',
label: '政府性基金收入(亿元)', label: '政府性基金收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'landTransferIncome',
label: '土地出让收入(亿元)', label: '土地出让收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'govFundExpenditure',
label: '政府性基金支出(亿元)', label: '政府性基金支出(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'soecoi',
label: '国有资本经营收入(亿元)', label: '国有资本经营收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'soecoe',
label: '国有资本经营支出(亿元)', label: '国有资本经营支出(亿元)',
}, },
{ {
prop: 'zw', prop: 'name',
label: '债务', label: '债务',
}, },
{ {
prop: 'rjgdp', prop: 'govDebtBalance',
label: '地方政府债务余额(亿元)', label: '地方政府债务余额(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'generalDebtBalance',
label: '一般债余额(亿元)', label: '一般债余额(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'specialDebtBalance',
label: '专项债余额(亿元)', label: '专项债余额(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'govDebtLimit',
label: '地方政府债务限额(亿元)', label: '地方政府债务限额(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'uipInterestBearingDebt',
label: '城投平台有息债务(亿元)', label: '城投平台有息债务(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'fiscalSelfSufficiencyRate',
label: '财政自给率', label: '财政自给率',
}, },
{ {
prop: 'rjgdp', prop: 'govDebtToGdpRate',
label: '负债率', label: '负债率',
}, },
{ {
prop: 'rjgdp', prop: 'govDebtToGdpRateWild',
label: '负债率-宽口径', label: '负债率-宽口径',
}, },
{ {
prop: 'rjgdp', prop: 'govDebtRate',
label: '债务率', label: '债务率',
}, },
{ {
prop: 'rjgdp', prop: 'govDebtRateWild',
label: '债务率-宽口径', label: '债务率-宽口径',
}, },
], ],
props: { props: {
value: 'id', value: 'id',
checkStrictly: true
}, },
addressList: [], addressList: [],
value1:'', value1:'',
...@@ -303,10 +288,20 @@ export default { ...@@ -303,10 +288,20 @@ export default {
addressValue3:'', addressValue3:'',
addressValue4:'', addressValue4:'',
addressValue5:'', addressValue5:'',
value1Flag:false,
value2Flag:false,
value3Flag:false,
value4Flag:false,
value5Flag:false,
} }
}, },
created() { created() {
this.dataRegion() this.dataRegion();
// this.getData();
getYears({}).then(res => {
this.yearOptions=res.data.reverse();
this.queryParams.year = this.yearOptions[0].year;
})
}, },
computed: { computed: {
getHeaders() { getHeaders() {
...@@ -319,6 +314,12 @@ export default { ...@@ -319,6 +314,12 @@ export default {
} }
}, },
methods: { methods: {
getData(params){
nationalPage(params).then(res => {
console.log(res.data)
// this.tableData = res.data.list
})
},
//地区 //地区
async dataRegion() { async dataRegion() {
// await axios.post("https://files.jiansheku.com/file/json/common/dataRegion.json", {}, { // await axios.post("https://files.jiansheku.com/file/json/common/dataRegion.json", {}, {
...@@ -372,6 +373,28 @@ export default { ...@@ -372,6 +373,28 @@ export default {
} }
this.addressList = str; this.addressList = str;
}, },
handleVisibleChange(flag,index){
if(!flag){
switch (index) {
case 1:
this.value1Flag=true
break;
case 2:
this.value2Flag=true
break;
case 3:
this.value3Flag=true
break;
case 4:
this.value4Flag=true
break;
case 5:
this.value5Flag=true
break;
}
}
},
handleChange(index) { handleChange(index) {
let arr = ''; let arr = '';
switch (index) { switch (index) {
...@@ -411,31 +434,51 @@ export default { ...@@ -411,31 +434,51 @@ export default {
break; break;
} }
} }
const params = { pageNum: this.pageIndex, pageSize: this.pageSize, year: this.queryParams.year,type:3 }
let provinceCode = [],cityCode = [],countyCode = [];
for (var i in arr) {
if (arr[i].parent) {
if (!arr[i].parent.checked) {
arr[i].hasChildren && cityCode.push(arr[i].value);
!arr[i].hasChildren && countyCode.push(arr[i].value);
}
} else {
provinceCode.push(arr[i].value)
}
}
if(provinceCode.length > 0){
params.provinceIds=provinceCode
}
if(cityCode.length > 0){
params.cityIds=cityCode
}
if(countyCode.length > 0){
params.areaIds=countyCode
}
this.getData(params)
}, },
handleDelete(index){ handleDelete(index){
switch (index) { switch (index) {
case 1: case 1:
this.addressValue1=''; this.addressValue1='';
this.value1='';
break; break;
case 2: case 2:
this.addressValue2=''; this.addressValue2='';
this.value2='';
break; break;
case 3: case 3:
this.addressValue3=''; this.addressValue3='';
this.value3='';
break; break;
case 4: case 4:
this.addressValue4=''; this.addressValue4='';
this.value4='';
break; break;
case 5: case 5:
this.addressValue5=''; this.addressValue5='';
this.value5='';
break; break;
} }
} },
} }
} }
</script> </script>
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small"> <el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item prop="year"> <el-form-item prop="year">
<el-select v-model="queryParams.year" filterable class="form-content-width" placeholder="请选择年度"> <el-select v-model="queryParams.year" filterable class="form-content-width" placeholder="请选择年度">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.name" :value="item.value" /> <el-option v-for="(item, index) in yearOptions" :key="index" :label="item.year" :value="item.year" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -48,19 +48,19 @@ ...@@ -48,19 +48,19 @@
<script> <script>
import * as echarts from 'echarts'; import * as echarts from 'echarts';
import { nationalPage,getYears } from '@/api/macro/macro'
export default { export default {
name: 'industrialStructure', name: 'industrialStructure',
props:{
dataQuery:{}
},
data() { data() {
return { return {
queryParams: { queryParams: {
year: '', year: '',
address: '' address: ''
}, },
yearOptions: [ yearOptions: [],
{ name: '2023年', value: '2023' },
{ name: '2022年', value: '2022' },
{ name: '2021年', value: '2021' },
],
tableData:[ tableData:[
{ {
type:'房建工程', type:'房建工程',
...@@ -104,6 +104,10 @@ export default { ...@@ -104,6 +104,10 @@ export default {
} }
}, },
created() { created() {
getYears({}).then(res => {
this.yearOptions=res.data.reverse();
this.queryParams.year = this.yearOptions[0].year;
})
this.$nextTick(()=>{ this.$nextTick(()=>{
this.initChart() this.initChart()
}) })
......
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
<span class="common-title">经济数据</span> <span class="common-title">经济数据</span>
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small"> <el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item prop="year"> <el-form-item prop="year">
<el-select v-model="queryParams.year" filterable class="form-content-width" placeholder="请选择年度"> <el-select v-model="queryParams.year" filterable class="form-content-width" placeholder="请选择年度" @change="getData">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.name" :value="item.value" /> <el-option v-for="(item, index) in yearOptions" :key="index" :label="item.year" :value="item.year" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -22,49 +22,46 @@ ...@@ -22,49 +22,46 @@
:data="tableData" :data="tableData"
border border
highlight-current-row highlight-current-row
@sort-change="sortChange"
> >
<el-table-column prop="area" label="下辖区" width="100" /> <el-table-column prop="province" label="下辖区" width="100" :formatter="formatStatus"/>
<el-table-column prop="tz" label="GDP(亿元)" sortable width="120" /> <el-table-column prop="gdp" label="GDP(亿元)" sortable width="120" :formatter="formatStatus"/>
<el-table-column prop="tz" label="GDP增速" sortable width="100" /> <el-table-column prop="gdpGrowth" label="GDP增速" sortable width="100" :formatter="formatStatus"/>
<el-table-column prop="tz" label="人均GDP(元)" sortable width="130" /> <el-table-column prop="gdpPerCapita" label="人均GDP(元)" sortable width="130" :formatter="formatStatus"/>
<el-table-column prop="tz" label="人口(万人)" sortable width="120" /> <el-table-column prop="population" label="人口(万人)" sortable width="120" :formatter="formatStatus"/>
<el-table-column prop="tz" label="固定资产投资 (亿元) " sortable width="170" /> <el-table-column prop="fixedInvestment" label="固定资产投资 (亿元) " sortable width="170" :formatter="formatStatus"/>
<el-table-column prop="tz" label="一般公共预算收入(亿元)" sortable width="160" /> <el-table-column prop="gbr" label="一般公共预算收入(亿元)" sortable width="180" :formatter="formatStatus"/>
<el-table-column prop="tz" label="一般公共预算支持(亿 元)" sortable width="160" /> <el-table-column prop="gbe" label="一般公共预算支出(亿 元)" sortable width="190" :formatter="formatStatus"/>
<el-table-column prop="tz" label="政府性基金收入(亿元)" sortable width="160" /> <el-table-column prop="govFundIncome" label="政府性基金收入(亿元)" sortable width="180" :formatter="formatStatus"/>
<el-table-column prop="zxzzj" label="地方政府债务余额(亿元)" sortable width="160" /> <el-table-column prop="govDebtBalance" label="地方政府债务余额(亿元)" sortable width="180" :formatter="formatStatus"/>
<el-table-column prop="zxzzj" label="城投平台有息债务(亿元)" sortable width="160" /> <el-table-column prop="uipInterestBearingDebt" label="城投平台有息债务(亿元)" sortable width="180" :formatter="formatStatus"/>
<el-table-column prop="zxzzj" label="财政自给率" sortable width="120"/> <el-table-column prop="fiscalSelfSufficiencyRate" label="财政自给率" sortable width="120":formatter="formatStatus"/>
<el-table-column prop="zxzzj" label="债务率-宽口径" sortable width="130"/> <el-table-column prop="govDebtRateWild" label="债务率-宽口径" sortable width="130" :formatter="formatStatus"/>
</el-table> </el-table>
</div> </div>
<div class="pagination-box">
<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>
</template> </template>
<script> <script>
import { nationalPage,getYears } from '@/api/macro/macro'
export default { export default {
name: 'localEconomy', name: 'localEconomy',
props:{
dataQuery:{}
},
data() { data() {
return { return {
queryParams: { queryParams: {
year: '', year: '',
address: '' address: ''
}, },
yearOptions: [ yearOptions: [],
{ name: '2023年', value: '2023' }, tableData:[],
{ name: '2022年', value: '2022' },
{ name: '2021年', value: '2021' },
],
tableData:[
{
dataId:'1',
area:'重庆',
tz:'100',
zxzzj:'200'
}
],
tableLoading: false, tableLoading: false,
pageIndex: 1, pageIndex: 1,
pageSize: 10, pageSize: 10,
...@@ -72,11 +69,52 @@ export default { ...@@ -72,11 +69,52 @@ export default {
} }
}, },
created() { created() {
this.getData();
getYears({}).then(res => {
this.yearOptions=res.data.reverse();
})
}, },
methods: { methods: {
handleClick() { getData(){
const params = { pageNum: this.pageIndex, pageSize: this.pageSize, year: this.queryParams.year,type:2 }
} if(this.queryParams.field){
params.field=this.queryParams.field
}
if(this.queryParams.order){
params.order=this.queryParams.order
}
nationalPage(params).then(res => {
this.tableData = res.data.list
this.tableDataTotal = res.data.totalCount
})
},
// 重置页数
handleSizeChange(val) {
this.pageIndex = 1
this.pageSize = val
this.getData()
},
// 跳转指定页数
handleCurrentChange(val) {
this.pageIndex = val
this.getData()
},
formatStatus: function(row, column, cellValue) {
return cellValue? cellValue : '-'
},
sortChange({ column, prop, order }){
this.queryParams.field = prop
if(column.order === "ascending"){
this.queryParams.order = 'asc'
}else if(column.order === "descending"){
this.queryParams.order = 'desc'
}else {
this.queryParams.order=''
this.queryParams.field=''
}
this.pageIndex = 1;
this.getData()
},
} }
} }
</script> </script>
......
...@@ -60,11 +60,13 @@ ...@@ -60,11 +60,13 @@
:data="getValues" :data="getValues"
:show-header="false" :show-header="false"
border border
:cell-style="rowStyle"
> >
<el-table-column <el-table-column
v-for="(item, index) in getHeaders" v-for="(item, index) in getHeaders"
:key="index" :key="index"
:prop="item" :prop="item"
:formatter="formatStatus"
> >
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -75,46 +77,19 @@ ...@@ -75,46 +77,19 @@
<script> <script>
import * as echarts from 'echarts'; import * as echarts from 'echarts';
import { regional,regionalList } from '@/api/macro/macro'
export default { export default {
name: 'regionalEconomy', name: 'regionalEconomy',
props:{
dataQuery:{}
},
data() { data() {
return { return {
activeName: 'first', activeName: 'first',
tableData: [ tableData: [],
{
zb:"2022年",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
{
zb:"2021年",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
{
zb:"2020年",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
{
zb:"2019年",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
{
zb:"2018年",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
],
headers: [ headers: [
{ {
prop: 'zb', prop: 'year',
label: '指标', label: '指标',
}, },
{ {
...@@ -126,143 +101,143 @@ export default { ...@@ -126,143 +101,143 @@ export default {
label: 'GDP(亿元)', label: 'GDP(亿元)',
}, },
{ {
prop: 'gdpzs', prop: 'gdpAddValue',
label: 'GDP增速', label: 'GDP增速',
}, },
{ {
prop: 'rjgdp', prop: 'gdpPerCapita',
label: '人均GDP(元)', label: '人均GDP(元)',
}, },
{ {
prop: 'rjgdp', prop: 'piAddValue',
label: '第一产业增加值(亿元)', label: '第一产业增加值(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'siAddValue',
label: '第二产业增加值(亿元)', label: '第二产业增加值(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'tiAddValue',
label: '第三产业增加值(亿元)', label: '第三产业增加值(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'population',
label: '人口(万人)', label: '人口(万人)',
}, },
{ {
prop: 'rjgdp', prop: 'industryAddValue',
label: '工业增加值(亿元)', label: '工业增加值(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'industryTotalValue',
label: '工业总产值(亿元)', label: '工业总产值(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'realEstateInvestment',
label: '房地产开发投资(亿元)', label: '房地产开发投资(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'eximTotalValue',
label: '进出口总额(亿美元)', label: '进出口总额(亿美元)',
}, },
{ {
prop: 'rjgdp', prop: 'trscg',
label: '社会消费品零售总额(亿元)', label: '社会消费品零售总额(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'urbanPcdi',
label: '城镇居民人均可支配收入(元)', label: '城镇居民人均可支配收入(元)',
}, },
{ {
prop: 'cz', prop: 'name',
label: '财政', label: '财政',
}, },
{ {
prop: 'rjgdp', prop: 'gbr',
label: '一般公共预算收入(亿元)', label: '一般公共预算收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'gbrGrowth',
label: '般公共预算收入增速', label: '般公共预算收入增速',
}, },
{ {
prop: 'rjgdp', prop: 'taxIncome',
label: '税收收入(亿元)', label: '税收收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'transferIncome',
label: '转移性收入(亿元)', label: '转移性收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'superiorSubsidyIncome',
label: '上级补助收入(亿元)', label: '上级补助收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'gbe',
label: '一般公共预算支出(亿元)', label: '一般公共预算支出(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'govFundIncome',
label: '政府性基金收入(亿元)', label: '政府性基金收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'landTransferIncome',
label: '土地出让收入(亿元)', label: '土地出让收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'govFundExpenditure',
label: '政府性基金支出(亿元)', label: '政府性基金支出(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'soecoi',
label: '国有资本经营收入(亿元)', label: '国有资本经营收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'soecoe',
label: '国有资本经营支出(亿元)', label: '国有资本经营支出(亿元)',
}, },
{ {
prop: 'zw', prop: 'name',
label: '债务', label: '债务',
}, },
{ {
prop: 'rjgdp', prop: 'govDebtBalance',
label: '地方政府债务余额(亿元)', label: '地方政府债务余额(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'generalDebtBalance',
label: '一般债余额(亿元)', label: '一般债余额(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'specialDebtBalance',
label: '专项债余额(亿元)', label: '专项债余额(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'govDebtLimit',
label: '地方政府债务限额(亿元)', label: '地方政府债务限额(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'uipInterestBearingDebt',
label: '城投平台有息债务(亿元)', label: '城投平台有息债务(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'fiscalSelfSufficiencyRate',
label: '财政自给率', label: '财政自给率',
}, },
{ {
prop: 'rjgdp', prop: 'govDebtToGdpRate',
label: '负债率', label: '负债率',
}, },
{ {
prop: 'rjgdp', prop: 'govDebtToGdpRateWild',
label: '负债率-宽口径', label: '负债率-宽口径',
}, },
{ {
prop: 'rjgdp', prop: 'govDebtRate',
label: '债务率', label: '债务率',
}, },
{ {
prop: 'rjgdp', prop: 'govDebtRateWild',
label: '债务率-宽口径', label: '债务率-宽口径',
}, },
], ],
...@@ -275,6 +250,8 @@ export default { ...@@ -275,6 +250,8 @@ export default {
} }
}, },
created() { created() {
console.log(this.dataQuery)
this.getData()
this.$nextTick(()=>{ this.$nextTick(()=>{
this.initChart() this.initChart()
this.initChart1() this.initChart1()
...@@ -294,6 +271,21 @@ export default { ...@@ -294,6 +271,21 @@ export default {
} }
}, },
methods: { methods: {
getData(){
let params={}
if(this.dataQuery.id){
params.id=this.dataQuery.id
}
if(this.dataQuery.provinceId){
params.provinceId=this.dataQuery.provinceId
}
regional(params).then(res => {
console.log(res.data)
})
regionalList(params).then(res => {
this.tableData=res.data;
})
},
initChart() { initChart() {
let myChart = echarts.init(document.getElementById("echartsGDP")) let myChart = echarts.init(document.getElementById("echartsGDP"))
let option ={ let option ={
...@@ -591,6 +583,22 @@ export default { ...@@ -591,6 +583,22 @@ export default {
} }
myChartYE.setOption(option); myChartYE.setOption(option);
}, },
formatStatus: function(row, column, cellValue) {
if(row.title === '经济'||row.title === '财政'||row.title === '债务'){
return cellValue
}else {
return cellValue? cellValue : '-'
}
},
rowStyle(row){
if (row.row.title === '经济'||row.row.title === '财政'||row.row.title === '债务'){
return {
// background: '#FAF5EB',
color:'#232323',
fontWeight: 'bold'
}
}
}
} }
} }
</script> </script>
......
...@@ -9,10 +9,10 @@ ...@@ -9,10 +9,10 @@
</el-tabs> </el-tabs>
<div class="location"><i class="el-icon-location"></i>重庆市</div> <div class="location"><i class="el-icon-location"></i>重庆市</div>
</div> </div>
<RegionalEconomy v-if="activeName === 'first'"></RegionalEconomy> <RegionalEconomy v-if="activeName === 'first'" :dataQuery="dataQuery"></RegionalEconomy>
<LocalEconomy v-if="activeName === 'second'"></LocalEconomy> <LocalEconomy v-if="activeName === 'second'" :dataQuery="dataQuery"></LocalEconomy>
<IndustrialStructure v-if="activeName === 'third'"></IndustrialStructure> <IndustrialStructure v-if="activeName === 'third'" :dataQuery="dataQuery"></IndustrialStructure>
<Comparison v-if="activeName === 'four'"></Comparison> <Comparison v-if="activeName === 'four'" :dataQuery="dataQuery"></Comparison>
</div> </div>
</template> </template>
...@@ -31,10 +31,12 @@ export default { ...@@ -31,10 +31,12 @@ export default {
}, },
data() { data() {
return { return {
activeName: 'first' activeName: 'third',
dataQuery:{}
} }
}, },
created() { created() {
this.dataQuery=this.$route.query
// let name = sessionStorage.getItem('currentTab') // let name = sessionStorage.getItem('currentTab')
// if (name != "undefined" && name){ // if (name != "undefined" && name){
// this.activeName = name; // this.activeName = name;
......
...@@ -6,39 +6,18 @@ ...@@ -6,39 +6,18 @@
size="50%" size="50%"
> >
<div slot="title" class="ndmx-title"><img src="@/assets/images/economies/icon.png" class="icon">年度明细</div> <div slot="title" class="ndmx-title"><img src="@/assets/images/economies/icon.png" class="icon">年度明细</div>
<!--<div class="content">-->
<!--<div class="main-title">-->
<!--<span class="label-200">指标</span>-->
<!--<span>2022年</span>-->
<!--<span>2021年</span>-->
<!--<span>2020年</span>-->
<!--<span>2019年</span>-->
<!--<span>2018年</span>-->
<!--</div>-->
<!--<div class="main-list">-->
<!--<div class="item">-->
<!--<h3></h3>-->
<!--<div class="item-cont">-->
<!--<span>指标</span>-->
<!--<span>2022年</span>-->
<!--<span>2021年</span>-->
<!--<span>2020年</span>-->
<!--<span>2019年</span>-->
<!--<span>2018年</span>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<div class="table-item"> <div class="table-item">
<el-table <el-table
:data="getValues" :data="getValues"
:show-header="false" :show-header="false"
border border
:cell-style="rowStyle"
> >
<el-table-column <el-table-column
v-for="(item, index) in getHeaders" v-for="(item, index) in getHeaders"
:key="index" :key="index"
:prop="item" :prop="item"
:formatter="formatStatus"
> >
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -48,6 +27,7 @@ ...@@ -48,6 +27,7 @@
</template> </template>
<script> <script>
import { getNationalDetails } from '@/api/macro/macro'
export default { export default {
name: '', name: '',
components: { components: {
...@@ -57,29 +37,10 @@ export default { ...@@ -57,29 +37,10 @@ export default {
data() { data() {
return { return {
dialogVisible: false, dialogVisible: false,
tableData: [ tableData: [],
{
zb:"2022年",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
{
zb:"2021年",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
{
zb:"2020年",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
],
headers: [ headers: [
{ {
prop: 'zb', prop: 'year',
label: '指标', label: '指标',
}, },
{ {
...@@ -91,13 +52,173 @@ export default { ...@@ -91,13 +52,173 @@ export default {
label: 'GDP(亿元)', label: 'GDP(亿元)',
}, },
{ {
prop: 'gdpzs', prop: 'gdpGrowth',
label: 'GDP增速', label: 'GDP增速',
}, },
{ {
prop: 'rjgdp', prop: 'gdpPerCapita',
label: '人均GDP(元)', label: '人均GDP(元)',
}, },
{
prop: 'piAddValue',
label: '第一产业增加值(亿元)',
},
{
prop: 'siAddValue',
label: '第二产业增加值(亿元)',
},
{
prop: 'tiAddValue',
label: '第三产业增加值(亿元)',
},
{
prop: 'name',
label: '人口',
},
{
prop: 'population',
label: '人口(万人)',
},
{
prop: 'name',
label: '一般公共预算收入',
},
{
prop: 'gbr',
label: '一般公共预算收入(亿元)',
},
{
prop: 'gbrGrowth',
label: '一般公共预算收入增速(%)',
},
{
prop: 'taxIncome',
label: '一般公共预算收入:税收收入(亿元)',
},
{
prop: 'gbe',
label: '一般公共预算支出(亿元)',
},
{
prop: 'name',
label: '政府性基金收支',
},
{
prop: 'govFundIncome',
label: '政府性基金收入(亿元)',
},
{
prop: 'landTransferIncome',
label: '政府性基金收入:土地出让收入(亿元)',
},
{
prop: 'govFundExpenditure',
label: '政府性基金支出(亿元)',
},
{
prop: 'name',
label: '国有资本预算收支',
},
{
prop: 'soecoi',
label: '国有资本经营收入(亿元)',
},
{
prop: 'soecoe',
label: '国有资本经营支出(亿元)',
},
{
prop: 'name',
label: '综合财力',
},
{
prop: 'fiscalSelfSufficiencyRate',
label: '财政自给率(%)',
},
{
prop: 'name',
label: '地方政府债务',
},
{
prop: 'govDebtBalance',
label: '地方政府债务余额(亿元)',
},
{
prop: 'generalDebtBalance',
label: '一般债余额(亿元)',
},
{
prop: 'specialDebtBalance',
label: '专项债余额(亿元)',
},
{
prop: 'govDebtLimit',
label: '地方政府债务限额(亿元)',
},
{
prop: 'uipInterestBearingDebt',
label: '城投平台有息债务(亿元)',
},
{
prop: 'govDebtToGdpRate',
label: '负债率(%)',
},
{
prop: 'govDebtToGdpRateWild',
label: '负债率(宽口径)(%)',
},
{
prop: 'govDebtRate',
label: '债务率(%)',
},
{
prop: 'name',
label: '工业',
},
{
prop: 'industryAddValue',
label: '工业增加值(亿元)',
},
{
prop: 'industryTotalValue',
label: '工业总产值(亿元)',
},
{
prop: 'name',
label: '投资与房地产',
},
{
prop: 'fixedInvestment',
label: '固定资产投资(亿元)',
},
{
prop: 'name',
label: '对外贸易',
},
{
prop: 'eximTotalValue',
label: '进出口总额(亿美元)',
},
{
prop: 'name',
label: '消费、收入和存贷款',
},
{
prop: 'trscg',
label: '社会消费品零售总额(亿元)',
},
{
prop: 'urbanPcdi',
label: '城镇居民人均可支配收入(元)',
},
// {
// prop: 'name',
// label: '金融机构存款余额(本外币)(亿元)',
// },
// {
// prop: 'name',
// label: '金融机构贷款余额(本外币)(亿元)',
// },
], ],
} }
}, },
...@@ -122,7 +243,30 @@ export default { ...@@ -122,7 +243,30 @@ export default {
}, },
// 获取明细 // 获取明细
async getDetail(row) { async getDetail(row) {
this.dialogVisible = true console.log(row)
getNationalDetails({id:row.id}).then(res => {
console.log(res.data)
this.tableData=res.data;
this.dialogVisible = true;
})
},
formatStatus: function(row, column, cellValue) {
if(row.title === '国民经济核算'||row.title === '人口'||row.title === '一般公共预算收入'||row.title === '政府性基金收支'||row.title === '国有资本预算收支'
||row.title === '综合财力'||row.title === '地方政府债务'||row.title === '工业'||row.title === '投资与房地产'||row.title === '对外贸易'||row.title === '消费、收入和存贷款'){
return cellValue
}else {
return cellValue? cellValue : '-'
}
},
rowStyle(row){
if (row.row.title === "国民经济核算"||row.row.title === "人口"||row.row.title === "一般公共预算收入"||row.row.title === "政府性基金收支"||row.row.title === "国有资本预算收支"
||row.row.title === '综合财力'||row.row.title === '地方政府债务'||row.row.title === '工业'||row.row.title === '投资与房地产'||row.row.title === '对外贸易'||row.row.title === '消费、收入和存贷款'){
return {
background: '#FAF5EB',
color:'#F38600',
fontWeight: 'bold'
}
}
} }
} }
} }
......
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
<span class="common-title">全国经济大全</span> <span class="common-title">全国经济大全</span>
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small"> <el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item prop="year"> <el-form-item prop="year">
<el-select v-model="queryParams.year" filterable multiple collapse-tags class="form-content-width" placeholder="请选择年度" @change="querySubmit"> <el-select v-model="queryParams.year" filterable class="form-content-width" placeholder="请选择年度" @change="querySubmit">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.name" :value="item.value" /> <el-option v-for="(item, index) in yearOptions" :key="index" :label="item.year" :value="item.year" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item prop="area"> <el-form-item prop="area">
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
</el-form> </el-form>
</div> </div>
<div class="flex-box query-ability"> <div class="flex-box query-ability">
<span class="flex-box"><img src="@/assets/images/ability_vs.png">地区经济对比</span> <router-link to="/macro/economies" tag="a" class="a-link"><span class="flex-box"><img src="@/assets/images/ability_vs.png">地区经济对比</span></router-link>
<span class="flex-box"><img src="@/assets/images/ability_excel.png">导出EXCEL</span> <span class="flex-box"><img src="@/assets/images/ability_excel.png">导出EXCEL</span>
</div> </div>
</div> </div>
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
v-loading="tableLoading" v-loading="tableLoading"
:data="tableData" :data="tableData"
element-loading-text="Loading" element-loading-text="Loading"
@sort-change="sortChange"
border border
fit fit
highlight-current-row highlight-current-row
...@@ -42,37 +43,34 @@ ...@@ -42,37 +43,34 @@
</el-table-column> </el-table-column>
<el-table-column label="地区" min-width="70" align="left" fixed> <el-table-column label="地区" min-width="70" align="left" fixed>
<template slot-scope="scope"> <template slot-scope="scope">
<router-link to="" tag="a" class="a-link">{{ scope.row.address || '广东省' }}</router-link> <router-link :to="{path:'/macro/economies',query:{id:scope.row.id,provinceId:scope.row.provinceId}}" tag="a" class="a-link">{{ scope.row.province}}</router-link>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="年度明细" prop="dataId" width="90" align="left" fixed> <el-table-column label="年度明细" prop="id" width="90" align="center" fixed>
<template slot-scope="scope"> <template slot-scope="scope">
<img src="@/assets/images/icon_detailed.png" class="icon-detailed" @click="handleDetail(scope.row)"> <img src="@/assets/images/icon_detailed.png" class="icon-detailed" @click="handleDetail(scope.row)">
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="GDP(元)" prop="dataId" sortable min-width="115" align="right" /> <el-table-column label="GDP(元)" prop="gdp" :formatter="formatStatus" sortable="custom" min-width="115" align="right"></el-table-column>
<el-table-column label="GDP增速" prop="cgrdm" sortable min-width="100" align="right" /> <el-table-column label="GDP增速" prop="gdpGrowth" :formatter="formatStatus" sortable="custom" min-width="100" align="right"></el-table-column>
<el-table-column label="人均GDP(元)" prop="cgrssqy" sortable width="125" align="right" /> <el-table-column label="人均GDP(元)" prop="gdpPerCapita" :formatter="formatStatus" sortable="custom" width="125" align="right"></el-table-column>
<el-table-column label="人口(万人)" prop="cgrssqy" sortable width="120" align="right" /> <el-table-column label="人口(万人)" prop="population" :formatter="formatStatus" sortable="custom" width="120" align="right"></el-table-column>
<el-table-column label="一般公共预算收入 (亿元)" prop="cgrzyhy" sortable width="170" align="right" /> <el-table-column label="一般公共预算收入 (亿元)" prop="gbr" sortable="custom" width="170" align="right"></el-table-column>
<el-table-column label="一般公共预算收入增速(%)" prop="cgzzxs" sortable min-width="140" align="right" /> <el-table-column label="一般公共预算收入增速(%)" prop="gbrGrowth" :formatter="formatStatus" sortable="custom" min-width="140" align="right"></el-table-column>
<el-table-column label="一般公共预算支出(亿元)" prop="cgfs" sortable width="140" align="left" /> <el-table-column label="一般公共预算收入:税收收入" prop="taxIncome" :formatter="formatStatus" sortable="custom" min-width="140" align="right"></el-table-column>
<el-table-column label="政府性基金收入(亿元)" width="140" sortable align="left"> <el-table-column label="一般公共预算支出(亿元)" prop="gbe" :formatter="formatStatus" sortable="custom" width="140" align="left"></el-table-column>
<template slot-scope="scope"> <el-table-column label="政府性基金收入(亿元)" width="140" prop="govFundIncome" :formatter="formatStatus" sortable="custom" align="left"></el-table-column>
<router-link to="/purchaserDetail" target="_blank" tag="a" class="a-link">{{ scope.row.zbwj }}</router-link> <el-table-column label="政府性基金收入:土地出让收入(亿元)" prop="landTransferIncome" sortable="custom" width="150" align="left"></el-table-column>
</template> <el-table-column label="政府性基金支出(亿元)" prop="govFundExpenditure" :formatter="formatStatus" width="170" sortable="custom" align="left"></el-table-column>
</el-table-column> <el-table-column label="国有资产经营收入(亿元)" prop="soecoi" width="160" :formatter="formatStatus" align="left"></el-table-column>
<el-table-column label="政府性基金收入:土地出让收入(亿元)" prop="cgfs" sortable width="150" align="left" /> <el-table-column label="国有资产经营支出(亿元)" prop="soecoe" width="160" :formatter="formatStatus" align="left"></el-table-column>
<el-table-column label="政府性基金支出(亿元)" prop="cgfs" width="170" sortable align="left" /> <el-table-column label="固定资产投资(亿元)" prop="fixedInvestment" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="国有资产经营收入(亿元)" prop="cgfs" width="160" align="left" /> <el-table-column label="财政自给率(%)" prop="fiscalSelfSufficiencyRate" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="国有资产经营支出(亿元)" prop="cgfs" width="160" align="left" /> <el-table-column label="地方政府债务余额(亿元)" prop="govDebtBalance" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="固定资产投资(亿元)" prop="cgfs" width="160" align="left" /> <el-table-column label="一般债余额(亿元)" prop="generalDebtBalance" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="财政自给率(%)" prop="cgfs" width="160" align="left" /> <el-table-column label="专项债余额(亿元)" prop="specialDebtBalance" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="地方政府债务余额(亿元)" prop="cgfs" width="160" align="left" /> <el-table-column label="地方政府债务限额(亿元)" prop="govDebtLimit" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="一般债余额(亿元)" prop="cgfs" width="160" align="left" /> <el-table-column label="城投平台有息债务(亿元)" prop="uipInterestBearingDebt" :formatter="formatStatus" width="160" align="left" >
<el-table-column label="专项债余额(亿元)" prop="cgfs" width="160" align="left" />
<el-table-column label="地方政府债务限额(亿元)" prop="cgfs" width="160" align="left" />
<el-table-column label="城投平台有息债务(亿元)" prop="cgfs" width="160" align="left" >
<template slot="header" slot-scope="scope"> <template slot="header" slot-scope="scope">
<span>城投平台有息债务(亿元) <span>城投平台有息债务(亿元)
<el-tooltip popper-class="tips" effect="light" content="城投平台有息债务是该地区行政区划下所有的城投公司的短期债务与长期债务合计。其中,短期债务=短期借款+一年内到期的非流动负债+应付短期债券,长期债务=长期借款+应付长期债券。" placement="top"> <el-tooltip popper-class="tips" effect="light" content="城投平台有息债务是该地区行政区划下所有的城投公司的短期债务与长期债务合计。其中,短期债务=短期借款+一年内到期的非流动负债+应付短期债券,长期债务=长期借款+应付长期债券。" placement="top">
...@@ -81,22 +79,25 @@ ...@@ -81,22 +79,25 @@
</span> </span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="负债率(%)" prop="cgfs" width="160" align="left" /> <el-table-column label="负债率(%)" prop="govDebtToGdpRate" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="负债率(宽口径)(%)" prop="cgfs" width="160" align="left" /> <el-table-column label="负债率(宽口径)(%)" prop="govDebtToGdpRateWild" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="债务率(%)" prop="cgfs" width="160" align="left" /> <el-table-column label="债务率(%)" prop="govDebtRate" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="债务率(宽口径)(%)" prop="cgfs" width="160" align="left" /> <el-table-column label="债务率(宽口径)(%)" prop="govDebtRateWild" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="金融机构存款余额(本外币)(亿元)" prop="cgfs" width="160" align="left" /> <!--<el-table-column label="金融机构存款余额(本外币)(亿元)" prop="cgfs" width="160" align="left" />-->
<el-table-column label="金融机构贷款余额(本外币)(亿元)" prop="cgfs" width="160" align="left" /> <!--<el-table-column label="金融机构贷款余额(本外币)(亿元)" prop="cgfs" width="160" align="left" />-->
<el-table-column label="第一产业增加值(亿元)" prop="cgfs" width="160" align="left" /> <el-table-column label="第一产业增加值(亿元)" prop="piAddValue" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="第二产业增加值(亿元)" prop="cgfs" width="160" align="left" /> <el-table-column label="第二产业增加值(亿元)" prop="siAddValue" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="第三产业增加值(亿元)" prop="cgfs" width="160" align="left" /> <el-table-column label="第三产业增加值(亿元)" prop="tiAddValue" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="工业增加值(亿元)" prop="cgfs" width="160" align="left" /> <el-table-column label="工业增加值(亿元)" prop="industryAddValue" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="工业总产值(亿元)" prop="cgfs" width="160" align="left" /> <el-table-column label="工业总产值(亿元)" prop="industryTotalValue" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="进出口总额(亿美元)" prop="cgfs" width="160" align="left" /> <el-table-column label="进出口总额(亿美元)" prop="eximTotalValue" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="社会消费品零售总额(亿元)" prop="cgfs" width="160" align="left" /> <el-table-column label="社会消费品零售总额(亿元)" prop="trscg" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="城镇居民人均可支配收入(元)" prop="cgfs" width="160" align="left" /> <el-table-column label="城镇居民人均可支配收入(元)" prop="urbanPcdi" :formatter="formatStatus" width="160" align="left"></el-table-column>
</el-table> </el-table>
</div> </div>
<!--<template slot-scope="scope">-->
<!--<router-link to="/purchaserDetail" target="_blank" tag="a" class="a-link">{{ scope.row.zbwj }}</router-link>-->
<!--</template>-->
<div class="pagination-box"> <div class="pagination-box">
<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>
...@@ -106,7 +107,7 @@ ...@@ -106,7 +107,7 @@
</template> </template>
<script> <script>
import { browsedIndexPage } from '@/api/nationalEconomies' import { nationalPage,getYears } from '@/api/macro/macro'
import dataRegion from '@/assets/json/dataRegion' import dataRegion from '@/assets/json/dataRegion'
import economiesDetail from './economies-detail' import economiesDetail from './economies-detail'
import axios from 'axios' import axios from 'axios'
...@@ -118,26 +119,16 @@ ...@@ -118,26 +119,16 @@
data() { data() {
return { return {
queryParams: { queryParams: {
year: '', year:'',
address: '' address: ''
}, },
yearOptions: [ yearOptions: [],
{ name: '2023年', value: '2023' },
{ name: '2022年', value: '2022' },
{ name: '2021年', value: '2021' },
],
props: { props: {
value: 'id', value: 'id',
multiple: true, multiple: true,
}, },
addressList: [], addressList: [],
tableData: [ tableData: [],
{
dataId:'1',
cgrssqy:'100',
cgfs:'200'
}
],
tableLoading: false, tableLoading: false,
pageIndex: 1, pageIndex: 1,
pageSize: 10, pageSize: 10,
...@@ -147,8 +138,14 @@ ...@@ -147,8 +138,14 @@
created() { created() {
this.querySubmit() this.querySubmit()
this.dataRegion() this.dataRegion()
this.getYears()
}, },
methods: { methods: {
getYears(){
getYears({}).then(res => {
this.yearOptions=res.data.reverse();
})
},
//地区 //地区
async dataRegion() { async dataRegion() {
// await axios.post("https://files.jiansheku.com/file/json/common/dataRegion.json", {}, { // await axios.post("https://files.jiansheku.com/file/json/common/dataRegion.json", {}, {
...@@ -205,8 +202,7 @@ ...@@ -205,8 +202,7 @@
// 查询提交 // 查询提交
async querySubmit() { async querySubmit() {
// this.tableLoading = true // this.tableLoading = true
const params = { pageIndex: this.pageIndex, pageSize: this.pageSize, browsedType: 1 } const params = { pageNum: this.pageIndex, pageSize: this.pageSize, year: this.queryParams.year,type:1 }
if(this.queryParams.address){ if(this.queryParams.address){
let arr = this.$refs.address.getCheckedNodes(); let arr = this.$refs.address.getCheckedNodes();
let provinceCode = [],cityCode = [],countyCode = []; let provinceCode = [],cityCode = [],countyCode = [];
...@@ -221,25 +217,31 @@ ...@@ -221,25 +217,31 @@
} }
} }
if(provinceCode.length > 0){ if(provinceCode.length > 0){
params.procinceId=provinceCode.join(',') params.provinceIds=provinceCode
} }
if(cityCode.length > 0){ if(cityCode.length > 0){
params.cityId=cityCode.join(',') params.cityIds=cityCode
} }
if(countyCode.length > 0){ if(countyCode.length > 0){
params.districtId=countyCode.join(',') params.areaIds=countyCode
} }
} }
console.log(params)
// browsedIndexPage(params).then(res => { if(this.queryParams.field){
// this.tableData = res.data.list params.field=this.queryParams.field
// this.tableDataTotal = res.data.totalCount }
// }) if(this.queryParams.order){
// // 延迟关闭加载效果 params.order=this.queryParams.order
// setTimeout(() => { }
// this.tableLoading = false
// }, 200) nationalPage(params).then(res => {
this.tableData = res.data.list
this.tableDataTotal = res.data.totalCount
})
// 延迟关闭加载效果
setTimeout(() => {
this.tableLoading = false
}, 200)
}, },
// 明细 // 明细
handleDetail(row) { handleDetail(row) {
...@@ -256,6 +258,22 @@ ...@@ -256,6 +258,22 @@
this.pageIndex = val this.pageIndex = val
this.querySubmit() this.querySubmit()
}, },
formatStatus: function(row, column, cellValue) {
return cellValue? cellValue : '-'
},
sortChange({ column, prop, order }){
this.queryParams.field = prop
if(column.order === "ascending"){
this.queryParams.order = 'asc'
}else if(column.order === "descending"){
this.queryParams.order = 'desc'
}else {
this.queryParams.order=''
this.queryParams.field=''
}
this.pageIndex = 1;
this.querySubmit()
},
} }
} }
</script> </script>
......
...@@ -6,17 +6,55 @@ ...@@ -6,17 +6,55 @@
<span class="common-title">近五年全国招标数量</span> <span class="common-title">近五年全国招标数量</span>
</div> </div>
</div> </div>
<div class="text">近五年全国项目招标数量达到10,610,000个,招标数量前五的地区分别是广东(38251个)、江苏(36812个)、山东(32615个)、浙江(26341个)、河南(21621个)。</div> <div class="text">{{value}}全国项目招标数量达到{{totalCount}}万个,招标数量前五的地区分别是
{{tableData[0].type}}{{tableData[0].count}}个)、{{tableData[1].type}}{{tableData[1].count}}个)、{{tableData[2].type}}{{tableData[2].count}}个)、{{tableData[3].type}}{{tableData[3].count}}个)、{{tableData[4].type}}{{tableData[4].count}}个)。</div>
<div class="main1"> <div class="main1">
<div id="zb-echarts" style="height: 250px"></div> <div id="zb-echarts" style="height: 250px"></div>
<p class="tips"><i class="el-icon-info"></i>数据来源大司空建筑大数据平台,统计范围为近5年全国公开的招标项目,未公开的不含在内</p> <p class="tips"><i class="el-icon-info"></i>数据来源大司空建筑大数据平台,统计范围为{{value}}全国公开的招标项目,未公开的不含在内</p>
</div> </div>
<div class="main2"> <div class="main2">
<div class="flex-box query-box head"> <div class="flex-box query-box head">
<span>近五年全国招标总数<span class="number">10,610,000 </span></span> <span>{{value}}全国招标总数<span class="number"> {{totalCount}} </span>万个</span>
<!--<el-select v-model="year" filterable multiple collapse-tags class="form-content-width" placeholder="请选择">--> <div class="select-popper" style="position: relative;">
<!--<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.name" :value="item.value" />--> <el-dropdown
<!--</el-select>--> @command="handleDate"
trigger="click"
ref="punishDateShowPopper"
:hide-on-click="false"
>
<span class="el-dropdown-link" :class="punishDateValue ? 'color_text' : ''">{{punishDateValue}}<i class="el-icon-caret-bottom"></i></span>
<div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item
v-for="(item, i) in yearOptions"
:class=" punishDateValue && punishDateValue == item.value? 'color_text': ''"
:key="i"
:command="item.value"
>
<div @mouseenter="hidePoper">{{ item.label }}</div>
</el-dropdown-item>
<el-dropdown-item command="自定义" style="padding: 0; text-indent: 20px">
<div @mouseenter="mouseenter">
<span :class="punishDateValue == '自定义' ? 'color_text' : ''">自定义<i class="el-icon-arrow-right"></i></span>
<el-date-picker
v-if="punishDateShowPopper"
@change="changepunishDate"
class="land_date_picker"
v-model="punishDate"
ref="datePicker"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</div>
</el-dropdown-item>
</el-dropdown-menu>
</div>
</el-dropdown>
</div>
</div> </div>
<div class="table-item"> <div class="table-item">
<el-table <el-table
...@@ -29,9 +67,9 @@ ...@@ -29,9 +67,9 @@
<el-table-column label="序号" width="50" align="left"> <el-table-column label="序号" width="50" align="left">
<template slot-scope="scope">{{ scope.$index + 1 }}</template> <template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="area" label="地区"/> <el-table-column prop="type" label="地区"/>
<el-table-column prop="number" sortable label="招标数量"/> <el-table-column prop="count" sortable label="招标数量"/>
<el-table-column prop="zb" sortable label="占比"/> <el-table-column prop="rate" sortable label="占比"/>
</el-table> </el-table>
</div> </div>
</div> </div>
...@@ -42,26 +80,33 @@ ...@@ -42,26 +80,33 @@
<span class="common-title">全国招标项目概览</span> <span class="common-title">全国招标项目概览</span>
</div> </div>
</div> </div>
<div class="text">通过对近五年全国招标数据进行分析,发现该企业主要集中在3月(230个)、6月(209个)进行招标。</div> <div class="text">通过对近五年全国招标数据进行分析,发现该企业主要集中在{{dataSort[0].label}}({{dataSort[0].count}}个)、{{dataSort[1].label}}({{dataSort[1].count}}个)进行招标。</div>
<div class="main1"> <div class="main1">
<div id="gl-echarts" style="height: 250px"></div> <div id="gl-echarts" style="height: 250px"></div>
<p class="tips"><i class="el-icon-info"></i>数据来源大司空建筑大数据平台,统计范围为近五年全国公开的招标项目,未公开的不含在内</p> <p class="tips"><i class="el-icon-info"></i>数据来源大司空建筑大数据平台,统计范围为近五年全国公开的招标项目,未公开的不含在内</p>
</div> </div>
<div class="table-item"> <div class="main2">
<el-table <div class="selectYear">
:data="tableData1" <el-select v-model="year" filterable class="form-content-width" placeholder="请选择" @change="changeValue()">
border <el-option v-for="(item, index) in yearData" :key="index" :label="item" :value="item" />
height="430" </el-select>
fit </div>
highlight-current-row <div class="table-item">
> <el-table
<el-table-column label="序号" width="50" align="left"> :data="tableData1"
<template slot-scope="scope">{{ scope.$index + 1 }}</template> border
</el-table-column> height="430"
<el-table-column prop="area" label="月份"/> fit
<el-table-column prop="number" sortable label="招标数量"/> highlight-current-row
<el-table-column prop="zb" sortable label="占比"/> >
</el-table> <el-table-column label="序号" width="50" align="left">
<template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column>
<el-table-column prop="label" label="月份"/>
<el-table-column prop="count" sortable label="招标数量"/>
<el-table-column prop="rate" sortable label="占比"/>
</el-table>
</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -69,15 +114,16 @@ ...@@ -69,15 +114,16 @@
<script> <script>
import * as echarts from 'echarts'; import * as echarts from 'echarts';
import { countGroupByMonth,countGroupByProvince,getYear } from '@/api/macro/macro'
export default { export default {
name: 'NationalEconomies', name: 'NationalEconomies',
data() { data() {
return { return {
year:'', year:'',
yearOptions: [ yearOptions: [
{ name: '2023年', value: '2023' }, { label: '近五年', value: '近五年' },
{ name: '2022年', value: '2022' }, { label: '近三年', value: '近三年' },
{ name: '2021年', value: '2021' }, { label: '近一年', value: '近一年' },
], ],
zbData:['广东','江苏','山东','浙江','河南','安徽','河北','四川','湖北','江西','甘肃','重庆','福建','云南','北京','湖南','山西'], zbData:['广东','江苏','山东','浙江','河南','安徽','河北','四川','湖北','江西','甘肃','重庆','福建','云南','北京','湖南','山西'],
zbData1:[123,156,236,426,412,231,96,105,210,420,213,86,120,230,150,132,196], zbData1:[123,156,236,426,412,231,96,105,210,420,213,86,120,230,150,132,196],
...@@ -138,79 +184,57 @@ export default { ...@@ -138,79 +184,57 @@ export default {
zb:'0.34%' zb:'0.34%'
}, },
], ],
glData:['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'], tableData1:[],
glData1:[503,156,132,186,203,143,189,301,211,195,132,176], dataSort:[
tableData1:[
{
area:'1月',
number:'123',
zb:'0.19%'
},
{
area:'2月',
number:'156',
zb:'0.29%'
},
{
area:'3月',
number:'236',
zb:'0.34%'
},
{
area:'4月',
number:'426',
zb:'0.34%'
},
{
area:'5月',
number:'412',
zb:'0.34%'
},
{
area:'6月',
number:'231',
zb:'0.34%'
},
{
area:'7月',
number:'96',
zb:'0.34%'
},
{
area:'8月',
number:'105',
zb:'0.34%'
},
{
area:'9月',
number:'210',
zb:'0.34%'
},
{ {
area:'10月', label:'',
number:'420', count:''
zb:'0.34%'
}, },
{ {
area:'11月', label:'',
number:'213', count:''
zb:'0.34%'
},
{
area:'12月',
number:'213',
zb:'0.34%'
}, },
], ],
totalCount:'',
punishDateValue: "请选择",
value:'近五年',
punishDateShowPopper: false,
punishDate: "",
yearData:[]
} }
}, },
created() { created() {
let params={}
this.getDataByProvince(params)
this.getDataByMonth(params)
this.$nextTick(()=>{ this.$nextTick(()=>{
this.initChart() // this.initChart()
this.initChart1() // this.initChart1()
})
getYear().then(res => {
this.yearData=res.rows;
}) })
}, },
methods: { methods: {
getDataByProvince(params){
countGroupByProvince(params).then(res => {
this.tableData=res.data.provinceDate;
this.totalCount=res.data.totalCount;
this.initChart()
})
},
getDataByMonth(params){
countGroupByMonth(params).then(res => {
this.tableData1=res.data;
let companyValue1 = JSON.parse(JSON.stringify(this.tableData1))
let arr = this.tableData1.sort((a, b) => {
return b.count - a.count
})
this.tableData1 = JSON.parse(JSON.stringify(companyValue1))
this.dataSort=arr;
this.initChart1()
})
},
initChart() { initChart() {
let myChart = echarts.init(document.getElementById("zb-echarts")) let myChart = echarts.init(document.getElementById("zb-echarts"))
let option = { let option = {
...@@ -223,27 +247,33 @@ export default { ...@@ -223,27 +247,33 @@ export default {
grid: { grid: {
left: '5', left: '5',
right: '5', right: '5',
top: '10', top: '15',
bottom: '10', bottom: '10',
containLabel: true containLabel: true
}, },
xAxis: { xAxis: {
type: 'category', type: 'category',
data: this.zbData data: this.tableData.map(item => item.type),
axisLabel: {
show: true,
// "interval": 0,
"rotate": 40 //X轴倾斜度
},
}, },
yAxis: { yAxis: {
type: 'value' type: 'value',
}, },
series: [ series: [
{ {
data: this.zbData1, data: this.tableData.map(item => item.count),
type: 'bar', type: 'bar',
barWidth: 16,
itemStyle: { itemStyle: {
normal: { normal: {
barBorderRadius: [4, 4, 0, 0], barBorderRadius: [4, 4, 0, 0],
color: '#165DFF', color: '#165DFF',
label: { label: {
show: true, //开启显示 show: false, //开启显示
position: 'top', //在上方显示 position: 'top', //在上方显示
textStyle: { //数值样式 textStyle: { //数值样式
color: '#165DFF', color: '#165DFF',
...@@ -263,7 +293,7 @@ export default { ...@@ -263,7 +293,7 @@ export default {
}, },
initChart1() { initChart1() {
let myChart = echarts.init(document.getElementById("gl-echarts")) let myChart = echarts.init(document.getElementById("gl-echarts"))
let dataList=this.glData1; let dataList=this.tableData1;
let option = { let option = {
tooltip: { tooltip: {
trigger: 'axis', //坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用 trigger: 'axis', //坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用
...@@ -280,20 +310,14 @@ export default { ...@@ -280,20 +310,14 @@ export default {
}, },
xAxis: { xAxis: {
type: 'category', type: 'category',
data: this.glData data: this.tableData1.map(item => item.label),
}, },
yAxis: { yAxis: {
type: 'value' type: 'value'
}, },
series: [ series: [
{ {
data: this.glData1, data: this.tableData1.map(item => item.count),
// markPoint:{
// data:[
// {type:'max',name:'最大值'},
// {type:'min',name:'最小值'},
// ]
// },
type: 'bar', type: 'bar',
barWidth: 20, barWidth: 20,
itemStyle: { itemStyle: {
...@@ -306,15 +330,15 @@ export default { ...@@ -306,15 +330,15 @@ export default {
//定义一个变量 保存柱形图数据 因为sort方法排序会改变原数组 使用JSON方法深拷贝 将原数值暂存 //定义一个变量 保存柱形图数据 因为sort方法排序会改变原数组 使用JSON方法深拷贝 将原数值暂存
let companyValue1 = JSON.parse(JSON.stringify(dataList)) let companyValue1 = JSON.parse(JSON.stringify(dataList))
let arr = dataList.sort((a, b) => { let arr = dataList.sort((a, b) => {
return b - a return b.count - a.count
}) })
//将原数组数据赋值回去 保持数据不变 //将原数组数据赋值回去 保持数据不变
dataList = JSON.parse(JSON.stringify(companyValue1)) dataList = JSON.parse(JSON.stringify(companyValue1))
//遍历数据 将原数组和排序后的数组比较 //遍历数据 将原数组和排序后的数组比较
dataList.map(i => { dataList.map(i => {
if (i == arr[0]) { if (i.count == arr[0].count) {
colorList.push('#F39F35') colorList.push('#F39F35')
} else if (i == arr[1]) { } else if (i.count == arr[1].count) {
colorList.push('#6675A5') colorList.push('#6675A5')
}else{ }else{
colorList.push('#2ECFCF') colorList.push('#2ECFCF')
...@@ -322,7 +346,7 @@ export default { ...@@ -322,7 +346,7 @@ export default {
}) })
//返回一个存储着颜色的数组根据数据index顺序渲染到页面 //返回一个存储着颜色的数组根据数据index顺序渲染到页面
return colorList[params.dataIndex] return colorList[params.dataIndex]
} },
}, },
} }
} }
...@@ -330,11 +354,97 @@ export default { ...@@ -330,11 +354,97 @@ export default {
}; };
myChart.setOption(option); myChart.setOption(option);
}, },
handleDate(command) {
if (command && command != "自定义") {
this.punishDateValue = command;
this.$refs.punishDateShowPopper.hide();
this.value = command;
let mydate=new Date();
var startTime, endTime, Year, Month, Day,startyear
Year = mydate.getFullYear();
Month = mydate.getMonth() + 1;
Day = mydate.getDate();
Month = Month < 10 ? '0' + Month : Month
Day = Day < 10 ? '0' + Day : Day
switch (command) {
case "近五年":
startyear=mydate.getFullYear()-5;
startTime = startyear + "-" + Month + "-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "近三年":
startyear=mydate.getFullYear()-3;
startTime = startyear + "-" + Month + "-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "近一年":
startyear=mydate.getFullYear()-1;
startTime = startyear + "-" + Month + "-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
}
let params={
startDate:startTime,
endDate:endTime
}
this.getDataByProvince(params)
} else if (command == "自定义") {
this.$refs.datePicker.pickerVisible = true;
} else {
this.$refs.punishDateShowPopper.hide();
this.punishDateValue = "";
this.punishDate = "";
}
},
changepunishDate() {
if (this.punishDate) {
this.punishDateValue = "自定义";
this.value = this.punishDate[0] +' - '+this.punishDate[1];
let params={
startDate:this.punishDate[0],
endDate:this.punishDate[1]
}
this.getDataByProvince(params)
}
},
hidePoper() {
if (this.$refs.datePicker) {
this.$refs.datePicker.pickerVisible = false;
}
},
mouseenter() {
this.punishDateShowPopper = true;
if(this.punishDateValue=='自定义'){
this.$nextTick(() => {
// this.$refs.datePicker.focus()
this.$refs.datePicker.pickerVisible = true;
});
}
},
changeValue(){
this.getDataByMonth({year:this.year})
}
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.land_date_picker{
position: absolute!important;
visibility: hidden;
left: -645px;
top: 145px;
}
::v-deep .el-popper .popper__arrow, .el-popper .popper__arrow::after{
display: none;
}
.color_text{
background: #F3F4F5;
border-radius: 4px;
color: #0081FF;
}
.zhaobiao{ .zhaobiao{
.zb-content{ .zb-content{
background: #ffffff; background: #ffffff;
...@@ -385,6 +495,20 @@ export default { ...@@ -385,6 +495,20 @@ export default {
line-height: 32px; line-height: 32px;
} }
} }
.el-dropdown-link{
width: 96px;
height: 32px;
display: inline-block;
line-height: 32px;
text-align: center;
background: #FFFFFF;
border-radius: 4px;
border: 1px solid #D9D9D9;
cursor: pointer;
i{
margin-left: 8px;
}
}
} }
} }
.table-item{ .table-item{
...@@ -392,7 +516,24 @@ export default { ...@@ -392,7 +516,24 @@ export default {
} }
} }
.content2{ .content2{
.table-item{ .main2{
.selectYear{
height: 32px;
float: right;
margin-bottom:16px;
}
::v-deep .el-select{
width: 100px;
height: 32px;
.el-input{
width: 100%;
height: 32px;
}
.el-input__inner{
height: 32px !important;
line-height: 32px;
}
}
margin-top: 32px; margin-top: 32px;
} }
} }
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<div class="main1"> <div class="main1">
<div style="height: 300px;"> <div style="height: 300px;">
<div class="left"> <div class="left">
<div class="item" v-for="(item,index) in typeList" :class="typeIndex === index ? 'color':''" @click="handleClick(1,index)">{{item}}<i></i></div> <div class="item" v-for="(item,index) in glData" :class="typeIndex === index ? 'color':''" @click="handleClick(1,index)">{{item.major}}<i></i></div>
</div> </div>
<div class="right"> <div class="right">
<div id="gl-echarts" style="height: 260px;background: #ffffff;"></div> <div id="gl-echarts" style="height: 260px;background: #ffffff;"></div>
...@@ -19,12 +19,12 @@ ...@@ -19,12 +19,12 @@
<p class="tips"><i class="el-icon-info"></i>数据来源大司空建筑大数据平台,统计范围为有效期内资质,未公开不包含在内</p> <p class="tips"><i class="el-icon-info"></i>数据来源大司空建筑大数据平台,统计范围为有效期内资质,未公开不包含在内</p>
</div> </div>
<div class="main2"> <div class="main2">
<div class="flex-box query-box head"> <!--<div class="flex-box query-box head">-->
<span>近五年全国招标总数<span class="number">10,610,000 </span></span> <!--<span>近五年全国招标总数<span class="number">10,610,000 </span></span>-->
<!--<el-select v-model="year" filterable multiple collapse-tags class="form-content-width" placeholder="请选择">--> <!--<el-select v-model="year" filterable multiple collapse-tags class="form-content-width" placeholder="请选择">-->
<!--<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.name" :value="item.value" />--> <!--<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.name" :value="item.value" />-->
<!--</el-select>--> <!--</el-select>-->
</div> <!--</div>-->
<div class="table-item"> <div class="table-item">
<el-table <el-table
:data="zzTableData" :data="zzTableData"
...@@ -35,22 +35,23 @@ ...@@ -35,22 +35,23 @@
<el-table-column label="序号" width="50" align="left"> <el-table-column label="序号" width="50" align="left">
<template slot-scope="scope">{{ scope.$index + 1 }}</template> <template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="name" label="资质类型"/> <el-table-column prop="major" label="资质类型"/>
<el-table-column label="特级" align="center"> <el-table-column label="特级" align="center">
<el-table-column prop="number" label="数量(个)"/> <el-table-column prop="tjCount" label="数量(个)"/>
<el-table-column prop="zb" label="占比(%)"/> <el-table-column prop="tjRate" label="占比(%)"/>
</el-table-column> </el-table-column>
<el-table-column label="一级" align="center"> <el-table-column label="一级" align="center">
<el-table-column prop="number" label="数量(个)"/> <el-table-column prop="oneCount" label="数量(个)"/>
<el-table-column prop="zb" label="占比(%)"/> <el-table-column prop="oneRate" label="占比(%)"/>
</el-table-column> </el-table-column>
<el-table-column label="二级"> <el-table-column label="二级">
<el-table-column prop="number" label="数量(个)"/> <el-table-column prop="twoCount" label="数量(个)"/>
<el-table-column prop="zb" label="占比(%)"/> <el-table-column prop="twoRate" label="占比(%)"/>
</el-table-column> </el-table-column>
<el-table-column label="三级"> <el-table-column label="三级">
<el-table-column prop="number" label="数量(个)"/> <el-table-column prop="threeCount" label="数量(个)"/>
<el-table-column prop="zb" label="占比(%)"/> <el-table-column prop="threeRate" label="占比(%)"/>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
...@@ -64,14 +65,14 @@ ...@@ -64,14 +65,14 @@
</div> </div>
<div class="main1"> <div class="main1">
<div class="tabs"> <div class="tabs">
<div class="item" v-for="(item,index) in typeList" :class="qydqIndex === index ? 'color':''" @click="handleClick(2,index)">{{item}}<i></i></div> <div class="item" v-for="(item,index) in dqData" :class="qydqIndex === index ? 'color':''" @click="handleClick(2,index)">{{item.major}}<i></i></div>
</div> </div>
<div id="jzqy-echarts" style="height: 250px"></div> <div id="jzqy-echarts" style="height: 250px"></div>
<p class="tips"><i class="el-icon-info"></i>数据来源大司空建筑大数据平台,统计范围为有效期内资质,未公开不包含在内</p> <p class="tips"><i class="el-icon-info"></i>数据来源大司空建筑大数据平台,统计范围为有效期内资质,未公开不包含在内</p>
</div> </div>
<div class="table-item"> <div class="table-item">
<el-table <el-table
:data="tableData" :data="jzdqData"
border border
height="470" height="470"
fit fit
...@@ -80,22 +81,22 @@ ...@@ -80,22 +81,22 @@
<el-table-column label="序号" width="50" align="left"> <el-table-column label="序号" width="50" align="left">
<template slot-scope="scope">{{ scope.$index + 1 }}</template> <template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="area" label="地区"/> <el-table-column prop="province" label="地区"/>
<el-table-column label="特级" align="center"> <el-table-column label="特级" align="center">
<el-table-column prop="number" label="数量(个)"/> <el-table-column prop="tjCount" label="数量(个)"/>
<el-table-column prop="zb" label="占比(%)"/> <el-table-column prop="tjRate" label="占比(%)"/>
</el-table-column> </el-table-column>
<el-table-column label="一级" align="center"> <el-table-column label="一级" align="center">
<el-table-column prop="number" label="数量(个)"/> <el-table-column prop="oneCount" label="数量(个)"/>
<el-table-column prop="zb" label="占比(%)"/> <el-table-column prop="oneRate" label="占比(%)"/>
</el-table-column> </el-table-column>
<el-table-column label="二级"> <el-table-column label="二级">
<el-table-column prop="number" label="数量(个)"/> <el-table-column prop="twoCount" label="数量(个)"/>
<el-table-column prop="zb" label="占比(%)"/> <el-table-column prop="twoRate" label="占比(%)"/>
</el-table-column> </el-table-column>
<el-table-column label="三级"> <el-table-column label="三级">
<el-table-column prop="number" label="数量(个)"/> <el-table-column prop="threeCount" label="数量(个)"/>
<el-table-column prop="zb" label="占比(%)"/> <el-table-column prop="threeRate" label="占比(%)"/>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
...@@ -113,7 +114,7 @@ ...@@ -113,7 +114,7 @@
</div> </div>
<div class="table-item"> <div class="table-item">
<el-table <el-table
:data="tableData" :data="zbData"
border border
height="430" height="430"
fit fit
...@@ -122,9 +123,9 @@ ...@@ -122,9 +123,9 @@
<el-table-column label="序号" width="50" align="left"> <el-table-column label="序号" width="50" align="left">
<template slot-scope="scope">{{ scope.$index + 1 }}</template> <template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column> </el-table-column>
<el-table-column prop="area" label="地区"/> <el-table-column prop="province" label="地区"/>
<el-table-column prop="number" label="企业异地备案数量(个)"/> <el-table-column prop="count" label="企业异地备案数量(个)"/>
<el-table-column prop="zb" label="占比"/> <!--<el-table-column prop="zb" label="占比"/>-->
</el-table> </el-table>
</div> </div>
</div> </div>
...@@ -133,19 +134,12 @@ ...@@ -133,19 +134,12 @@
<script> <script>
import * as echarts from 'echarts'; import * as echarts from 'echarts';
import { certGroupByMajorAndLevel,certGroupByMajorProvinceLevel,areaGroupByProvince } from '@/api/macro/macro'
export default { export default {
name: 'NationalEconomies', name: 'NationalEconomies',
data() { data() {
return { return {
year:'', tableData:[
yearOptions: [
{ name: '2023年', value: '2023' },
{ name: '2022年', value: '2022' },
{ name: '2021年', value: '2021' },
],
glData:['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],
glData1:[103,156,132,186,203,143,189,301,211,195,132,176],
tableData1:[
{ {
area:'1月', area:'1月',
number:'123', number:'123',
...@@ -208,127 +202,175 @@ export default { ...@@ -208,127 +202,175 @@ export default {
}, },
], ],
typeList:['建筑工程企业','市政工程企业','公路工程企业','水利水电工程企业'],
typeIndex:0, typeIndex:0,
jzglData:['特级','一级','二级','三级'], glData:[],
jzglData1:[103,156,132,186], jzglData:[],
zzTableData:[ zzTableData:[],
tableOption:[
{ {
name:'建筑工程施工总承包', label:'资质类型',
number:'123', prop:'major'
zb:'0.19%'
}, },
{ {
name:'市政工程施工总承包', label: '特级',
number:'123', prop: 'levelValue',
zb:'0.19%' child:[
}, {
{ label: '数量(个)',
name:'公路工程施工总承包', prop: 'count'
number:'123', },
zb:'0.19%' {
}, label: '占比(%)',
{ prop: 'rate'
name:'水利水电工程施工总承包', },
number:'123', ]
zb:'0.19%'
},
],
qydqIndex:0,
zbData:['广东','江苏','山东','浙江','河南','安徽','河北','四川','湖北','江西','甘肃','重庆','福建','云南','北京','湖南','山西'],
zbData1:[123,156,236,426,412,231,96,105,210,420,213,86,120,230,150,132,196],
tableData:[
{
area:'广东',
number:'123',
zb:'0.19%'
},
{
area:'江苏',
number:'156',
zb:'0.29%'
},
{
area:'山东',
number:'236',
zb:'0.34%'
},
{
area:'浙江',
number:'426',
zb:'0.34%'
},
{
area:'河南',
number:'412',
zb:'0.34%'
},
{
area:'安徽',
number:'231',
zb:'0.34%'
},
{
area:'河北',
number:'96',
zb:'0.34%'
},
{
area:'四川',
number:'105',
zb:'0.34%'
}, },
{ {
area:'湖北', label: '一级',
number:'210', prop: 'levelValue',
zb:'0.34%' child:[
{
label: '数量(个)',
prop: 'count'
},
{
label: '占比(%)',
prop: 'rate'
},
]
}, },
{ {
area:'江西', label: '二级',
number:'420', prop: 'levelValue',
zb:'0.34%' child:[
{
label: '数量(个)',
prop: 'count'
},
{
label: '占比(%)',
prop: 'rate'
},
]
}, },
{ {
area:'甘肃', label: '三级',
number:'213', prop: 'levelValue',
zb:'0.34%' child:[
{
label: '数量(个)',
prop: 'count'
},
{
label: '占比(%)',
prop: 'rate'
},
]
}, },
], ],
dqData:[],
qydqIndex:0,
zbData:[],
jzdqData:[]
} }
}, },
created() { created() {
this.$nextTick(()=>{ this.getData()
this.initChart()
this.initChart1()
this.initChart2()
})
}, },
methods: { methods: {
getData(){
//全国建筑企业概览
certGroupByMajorAndLevel().then(res => {
this.glData=res.data;
this.jzglData=this.glData[0].levelList.reverse();
let list=[];
for (let i=0; i<res.data.length; i++){
let item={};
item.major=res.data[i].major;
for (let j=0; j<res.data[i].levelList.length; j++){
if(res.data[i].levelList[j].levelValue === '特级'){
item.tjCount=res.data[i].levelList[j].count;
item.tjRate=res.data[i].levelList[j].rate;
}
if(res.data[i].levelList[j].levelValue === '一级'){
item.oneCount=res.data[i].levelList[j].count;
item.oneRate=res.data[i].levelList[j].rate;
}
if(res.data[i].levelList[j].levelValue === '二级'){
item.twoCount=res.data[i].levelList[j].count;
item.twoRate=res.data[i].levelList[j].rate;
}
if(res.data[i].levelList[j].levelValue === '三级'){
item.threeCount=res.data[i].levelList[j].count;
item.threeRate=res.data[i].levelList[j].rate;
}
}
// item.levelList=res.data[i].levelList.reverse();
list.push(item)
}
this.zzTableData=list
this.initChart()
})
certGroupByMajorProvinceLevel().then(res => {
this.dqData=res.data;
let data=this.dqData[0].province;
let list=[];
for(let i=0; i<data.length; i++){
let item={};
item.province=data[i].province;
for (let j=0; j<data[i].levelList.length; j++){
if(data[i].levelList[j].levelValue === '特级'){
item.tjCount=data[i].levelList[j].count;
item.tjRate=data[i].levelList[j].rate;
}
if(data[i].levelList[j].levelValue === '一级'){
item.oneCount=data[i].levelList[j].count;
item.oneRate=data[i].levelList[j].rate;
}
if(data[i].levelList[j].levelValue === '二级'){
item.twoCount=data[i].levelList[j].count;
item.twoRate=data[i].levelList[j].rate;
}
if(data[i].levelList[j].levelValue === '三级'){
item.threeCount=data[i].levelList[j].count;
item.threeRate=data[i].levelList[j].rate;
}
}
list.push(item)
}
this.jzdqData=list
this.initChart1()
})
areaGroupByProvince().then(res => {
this.zbData=res.data;
this.initChart2()
})
},
initChart() { initChart() {
let myChart = echarts.init(document.getElementById("gl-echarts")) let myChart = echarts.init(document.getElementById("gl-echarts"))
let option ={ let option ={
tooltip: { tooltip: {
show:false // show:false
}, },
xAxis: { xAxis: {
type: 'category', type: 'category',
boundaryGap: false, boundaryGap: false,
data: this.jzglData, data: this.jzglData.map(item => item.levelValue),
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
}, },
grid: { grid: {
top:40, top:40,
left:50, left:70,
right:40, right:40,
bottom:40, bottom:40,
}, },
series: [ series: [
{ {
data: this.jzglData1, data: this.jzglData.map(item => item.count),
type: 'line', type: 'line',
smooth: true, smooth: true,
emphasis: { emphasis: {
...@@ -363,77 +405,192 @@ export default { ...@@ -363,77 +405,192 @@ export default {
}, },
initChart1() { initChart1() {
let myChart = echarts.init(document.getElementById("jzqy-echarts")) let myChart = echarts.init(document.getElementById("jzqy-echarts"))
let option = { let option ={
legend: {
x:'right',
padding:[0,120,0,0],
},
tooltip: { tooltip: {
trigger: 'axis', //坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用 trigger: 'axis',
axisPointer: {// 坐标轴指示器,坐标轴触发有效 axisPointer: {
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' type: 'line',
label: {
backgroundColor: '#FFFFFF'
}
} }
}, },
grid: {
left: '5',
right: '5',
top: '20',
bottom: '10',
containLabel: true
},
xAxis: { xAxis: {
type: 'category', type: 'category',
data: this.zbData boundaryGap: false,
data: this.jzdqData.map(item => item.province),
}, },
yAxis: { yAxis: {
type: 'value' type: 'value',
},
grid: {
top:35,
left:60,
right:30,
bottom:20,
}, },
series: [ series: [
{ {
data: this.zbData1, data: this.jzdqData.map(item => item.tjCount),
type: 'bar', name:'特级',
itemStyle: { type: 'line',
normal: { smooth: true,
barBorderRadius: [4, 4, 0, 0], emphasis: {
color: '#165DFF', disabled: true,
label: { focus: 'none'
show: true, //开启显示 },
position: 'top', //在上方显示 //设置折线颜色和粗细
textStyle: { //数值样式 lineStyle: {
color: '#165DFF', width: 2,
fontSize: 16 color: "#0081FF",
} },
} itemStyle:{
}, color: "#4E8EFF",
// 移入当前的柱状图时改变颜色 },
emphasis: { //设置面积区域为渐变效果
color: '#3384FF', areaStyle: {
} opacity:0.8,
} color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
} {
offset: 0.2,
color: "#DFEAFF",
},
{
offset: 1,
color: "#5895FF",
},
]),
},
},
{
data: this.jzdqData.map(item => item.oneCount),
name:'一级',
type: 'line',
smooth: true,
emphasis: {
disabled: true,
focus: 'none'
},
//设置折线颜色和粗细
lineStyle: {
width: 2,
color: "#FA6C6C",
},
itemStyle:{
color: "#FA6C6C",
},
//设置面积区域为渐变效果
areaStyle: {
opacity:0.8,
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
{
offset: 0.1,
color: "#FDF8F5",
},
{
offset: 1,
color: "#FCD7C8",
},
]),
},
},
{
data: this.jzdqData.map(item => item.twoCount),
name:'二级',
type: 'line',
smooth: true,
emphasis: {
disabled: true,
focus: 'none'
},
//设置折线颜色和粗细
lineStyle: {
width: 2,
color: "#8077F2",
},
itemStyle:{
color: "#8077F2",
},
//设置面积区域为渐变效果
areaStyle: {
opacity:0.8,
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
{
offset: 0.1,
color: "#ECE8FF",
},
{
offset: 1,
color: "#BCC0FF",
},
]),
},
},
{
data: this.jzdqData.map(item => item.threeCount),
name:'三级',
type: 'line',
smooth: true,
emphasis: {
disabled: true,
focus: 'none'
},
//设置折线颜色和粗细
lineStyle: {
width: 2,
color: "#FA936C",
},
itemStyle:{
color: "#FA936C",
},
//设置面积区域为渐变效果
areaStyle: {
opacity:0.8,
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
{
offset: 0.1,
color: "#FEFBFA",
},
{
offset: 1,
color: "#FCD7C8",
},
]),
},
},
] ]
}; }
myChart.clear();
myChart.setOption(option); myChart.setOption(option);
}, },
initChart2() { initChart2() {
let myChart = echarts.init(document.getElementById("ba-echarts")) let myChart = echarts.init(document.getElementById("ba-echarts"))
let option ={ let option ={
tooltip: { tooltip: {
show:false // show:false
}, },
legend:{},
xAxis: { xAxis: {
type: 'category', type: 'category',
boundaryGap: false, boundaryGap: false,
data: this.zbData, data: this.zbData.map(item => item.province),
}, },
yAxis: { yAxis: {
type: 'value', type: 'value',
}, },
grid: { grid: {
top:20, top:20,
left:30, left:65,
right:20, right:30,
bottom:20, bottom:20,
}, },
series: [ series: [
{ {
data: this.zbData1, data: this.zbData.map(item => item.count),
type: 'line', type: 'line',
smooth: true, smooth: true,
emphasis: { emphasis: {
...@@ -469,11 +626,42 @@ export default { ...@@ -469,11 +626,42 @@ export default {
handleClick(type,index){ handleClick(type,index){
if(type === 1){ if(type === 1){
this.typeIndex=index; this.typeIndex=index;
this.jzglData=this.glData[index].levelList.reverse();
this.initChart()
} }
if(type === 2){ if(type === 2){
this.qydqIndex=index; this.qydqIndex=index;
} let data=this.dqData[index].province;
let list=[];
for(let i=0; i<data.length; i++){
let item={};
item.province=data[i].province;
for (let j=0; j<data[i].levelList.length; j++){
if(data[i].levelList[j].levelValue === '特级'){
item.tjCount=data[i].levelList[j].count;
item.tjRate=data[i].levelList[j].rate;
}
if(data[i].levelList[j].levelValue === '一级'){
item.oneCount=data[i].levelList[j].count;
item.oneRate=data[i].levelList[j].rate;
}
if(data[i].levelList[j].levelValue === '二级'){
item.twoCount=data[i].levelList[j].count;
item.twoRate=data[i].levelList[j].rate;
}
if(data[i].levelList[j].levelValue === '三级'){
item.threeCount=data[i].levelList[j].count;
item.threeRate=data[i].levelList[j].rate;
}
}
list.push(item)
}
this.jzdqData=list;
this.$nextTick(()=>{
this.initChart1()
})
}
}, },
} }
} }
......
...@@ -323,8 +323,8 @@ export default { ...@@ -323,8 +323,8 @@ export default {
// trigger: 'axis' // trigger: 'axis'
}, },
legend: { legend: {
right: '151px', left: '12px',
top:"0px", top:"15px",
data: ['成交金额', '储备项目', '跟进动态'] data: ['成交金额', '储备项目', '跟进动态']
}, },
series: [ series: [
...@@ -513,12 +513,12 @@ export default { ...@@ -513,12 +513,12 @@ export default {
} }
} }
.chart-bot{ .chart-bot{
height: 354px; height: auto;
margin-bottom: 12px; margin-bottom: 12px;
.left{ .left{
float: left; float: left;
width: 353px; width: 353px;
height: 100%; height: 354px;
background: url("../../../assets/images/project/glbj.png")no-repeat top center; background: url("../../../assets/images/project/glbj.png")no-repeat top center;
background-size: 100% 100%; background-size: 100% 100%;
color: #FFFFFF; color: #FFFFFF;
...@@ -569,11 +569,11 @@ export default { ...@@ -569,11 +569,11 @@ export default {
} }
.right{ .right{
float: right; float: right;
height: 100%; height: auto;
width: calc(100% - 369px); width: calc(100% - 369px);
.records{ .records{
margin-top: -17px; margin-top: -17px;
height: 327px; height: 627px;
overflow-y: auto; overflow-y: auto;
width: 100%; width: 100%;
padding-right: 47px; padding-right: 47px;
...@@ -621,6 +621,7 @@ export default { ...@@ -621,6 +621,7 @@ export default {
.chart2{ .chart2{
width: 100%; width: 100%;
padding: 0 0 0 16px;
height: 285px; height: 285px;
margin-top: -20px; margin-top: -20px;
} }
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
<el-option v-for="(item,index) in projectCategory" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option> <el-option v-for="(item,index) in projectCategory" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="投资估算:" class="row"> <el-form-item label="投资估算(万元):" class="row">
<el-input type="text" placeholder="请输入金额" @input="number" v-model="queryParam.investmentAmount"></el-input> <el-input type="text" placeholder="请输入金额" @input="number" v-model="queryParam.investmentAmount"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="可见范围:" class="row"> <el-form-item label="可见范围:" class="row">
......
...@@ -4,10 +4,8 @@ ...@@ -4,10 +4,8 @@
<el-card class="box-card noborder"> <el-card class="box-card noborder">
<div class="cardtitles">相关企业</div> <div class="cardtitles">相关企业</div>
<div class="searchbtns"> <div class="searchbtns">
<el-select class="select" placeholder="企业类型"> <el-select class="select" placeholder="企业类型" v-model="searchParam.companyType" @change="handleCurrentChange(1)">
<el-select placeholder="请选择" v-model="searchParam.companyType"> <el-option v-for="(item,index) in companytype" :label="item.dictLabel" :value="item.dictValue"></el-option>
<el-option v-for="(item,index) in companytype" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</el-select> </el-select>
<div class="searchInput"> <div class="searchInput">
<el-input type="text" placeholder="输入关键词查询" v-model="searchParam.companyName"></el-input> <el-input type="text" placeholder="输入关键词查询" v-model="searchParam.companyName"></el-input>
...@@ -15,7 +13,7 @@ ...@@ -15,7 +13,7 @@
</div> </div>
<div class="btn btn_primary h32 b3" @click="opennew"><div class="img img1"></div>添加相关企业</div> <div class="btn btn_primary h32 b3" @click="opennew"><div class="img img1"></div>添加相关企业</div>
</div> </div>
<div class="document"> <div class="document tables">
<el-table <el-table
:data="tableData.rows" :data="tableData.rows"
style="width: 100%" style="width: 100%"
...@@ -59,23 +57,29 @@ ...@@ -59,23 +57,29 @@
width=""> width="">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="hoverbtn"> <div class="hoverbtn">
<div class="sc" @click="delQY(scope.row.id)">删除</div> <div class="sc" @click="ondel = scope.row.id">删除</div>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="delform" v-if="ondel != -1">
<div class="tables" v-if="tableData.total > searchParam.pageSize"> <div class="words">是否将企业删除</div>
<div class="bottems"> <div>
<el-pagination <div class="btnsmall btn_primary h28" @click="delQY()">确定</div>
background <div class="btnsmall btn_cancel h28" @click="ondel = -1">取消</div>
:page-size="searchParam.pageSize" </div>
:current-page="searchParam.pageNum"
@current-change="handleCurrentChange"
layout="prev, pager, next"
:total="tableData.total">
</el-pagination>
</div> </div>
<div class="tables" v-if="tableData.total > searchParam.pageSize">
<div class="bottems" v-if="ondel != -1">
<el-pagination
background
:page-size="searchParam.pageSize"
:current-page="searchParam.pageNum"
@current-change="handleCurrentChange"
layout="prev, pager, next"
:total="tableData.total">
</el-pagination>
</div>
</div> </div>
</div> </div>
<el-dialog <el-dialog
...@@ -131,7 +135,7 @@ ...@@ -131,7 +135,7 @@
<script> <script>
import "@/assets/styles/project.scss" import "@/assets/styles/project.scss"
import {getXGQY,addXGQY} from '@/api/project/project' import {getXGQY,addXGQY,delXGQY} from '@/api/project/project'
import {getDictType} from '@/api/main' import {getDictType} from '@/api/main'
export default { export default {
name: 'xgqy', name: 'xgqy',
...@@ -186,6 +190,7 @@ ...@@ -186,6 +190,7 @@
companyType:"", companyType:"",
companyName:'', companyName:'',
}, },
ondel:-1,
} }
}, },
created(){ created(){
...@@ -198,10 +203,18 @@ ...@@ -198,10 +203,18 @@
getDictType('company_role').then(result=>{ getDictType('company_role').then(result=>{
this.companyrole = result.code == 200 ? result.data:[] this.companyrole = result.code == 200 ? result.data:[]
}) })
this.getlist()
}, },
methods:{ methods:{
delQY(id){ delQY(){
let id = this.ondel
delXGQY(id).then(res=>{
if(res.code == 200){
this.$message.success('删除成功')
this.ondel = -1
this.getlist()
}
})
}, },
addqy(){ addqy(){
addXGQY(this.queryParam).then(res=>{ addXGQY(this.queryParam).then(res=>{
...@@ -215,7 +228,8 @@ ...@@ -215,7 +228,8 @@
}, },
getlist(){ getlist(){
getXGQY(this.searchParam).then(result=>{ getXGQY(this.searchParam).then(result=>{
this.tableData = result.data console.log(result)
this.tableData = result
}) })
}, },
//翻页 //翻页
...@@ -274,4 +288,8 @@ ...@@ -274,4 +288,8 @@
.box-card{ .box-card{
position: relative; position: relative;
} }
.delform{
position: fixed; left:50%; top:50%; transform:translate(-50%,-50%)
}
</style> </style>
...@@ -6,74 +6,76 @@ ...@@ -6,74 +6,76 @@
<div class="searchbtns"> <div class="searchbtns">
<div class="searchInput"> <div class="searchInput">
<el-input type="text" placeholder="输入关键词查询"></el-input> <el-input type="text" placeholder="输入关键词查询"></el-input>
<div class="btn">搜索</div> <div class="btn" @click="handleCurrentChange(1)">搜索</div>
</div> </div>
<div class="btn btn_primary h32 b2" @click="isupload=true"><div class="img img2"></div>上传</div> <div class="btn btn_primary h32 b2" @click="getUP"><div class="img img2"></div>上传</div>
</div> </div>
<div class="filepath" v-if="filename"><font @click="getall">全部</font> / <span> <img class="img" src="@/assets/images/folder.png">{{filename}}</span></div>
<div class="uploadbox" v-if="isupload"> <div class="uploadbox" v-if="isupload">
<div> <div>
<el-upload <el-upload
class="upload-demo" class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/" :action="action"
:on-preview="handlePreview" :on-change="handleFileListChange"
:on-remove="handleRemove" :multiple="false"
:before-remove="beforeRemove" ref="upload"
multiple :file-list="fileList"
:limit="3" accept=".word,.pdf.excel,.xlsx"
:on-exceed="handleExceed" :headers="headers"
:file-list="fileList"> :show-file-list="false"
:on-success="onSuccess">
<div class="wj wj1"></div>上传文件 <div class="wj wj1"></div>上传文件
</el-upload> </el-upload>
</div> </div>
<div> <div>
<el-upload <el-upload
class="upload-demo" class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/" :action="action"
:on-remove="fileRemove" :on-change="handleFileListChange"
:on-change="fileChang" :multiple="false"
multiple :on-success="onSuccess1"
:limit="3"
:on-exceed="handleExceed"
ref="uploadFile" ref="uploadFile"
:headers="headers"
:show-file-list="false"
:file-list="fileList"> :file-list="fileList">
<div class="wj wj2"></div>上传文件夹 <div class="wj wj2"></div>上传文件夹
</el-upload> </el-upload>
</div> </div>
</div> </div>
<div class="document"> <div class="document tables">
<el-table <el-table
:data="tableData" :data="fileDatas.rows"
style="width: 100%" style="width: 100%"
> >
<template slot="empty"> <template slot="empty">
<div class="empty"> <div class="empty">
<img src="@/assets/images/project/empty.png"> <img src="@/assets/images/project/empty.png">
<div class="p1">暂无数据展示</div> <div class="p1">暂无数据展示</div>
<div class="p2">抱歉,你还未添加相关数据,快去添加</div> <div class="p2">抱歉,你还未添加相关数据,快去上传</div>
<div class="btn btn_primary h36 w102" @click="opennew">新增联系人</div> <div class="btn btn_primary h36 w102" @click="getUP">上传文档</div>
</div> </div>
</template> </template>
<el-table-column <el-table-column
prop="date" prop="name"
label="文件名称" label="文件名称"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<div> <div @click="getFile(scope.row)">
<img class="img" src="@/assets/images/folder.png"> <img v-if="scope.row.type == 'file'" class="img" src="@/assets/images/folder.png">
<!--<img class="img" src="@/assets/images/word.png">--> <img v-if="scope.row.type == 'word'" class="img" src="@/assets/images/word.png">
<!--<img class="img" src="@/assets/images/pdf.png">--> <img v-if="scope.row.type == 'pdf'" class="img" src="@/assets/images/pdf.png">
<!--<img class="img" src="@/assets/images/excel_1.png">--> <img v-if="scope.row.type == 'excel'" class="img" src="@/assets/images/excel_1.png">
<span>集团投标常用资料</span> <span>{{scope.row.name}}</span>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<!--<el-table-column-->
<!--prop="name"-->
<!--label="创建人"-->
<!--&gt;-->
<!--</el-table-column>-->
<el-table-column <el-table-column
prop="name" prop="creatTime"
label="创建人"
>
</el-table-column>
<el-table-column
prop="name"
label="更新时间" label="更新时间"
sortable sortable
width=""> width="">
...@@ -85,121 +87,146 @@ ...@@ -85,121 +87,146 @@
width=""> width="">
<template slot-scope="scope"> <template slot-scope="scope">
<div class="hoverbtn"> <div class="hoverbtn">
<div class="xz">下载</div> <div class="xz" @click="downnlod(scope.row)">下载</div>
<div class="sc">删除</div> <div class="sc" @click="del(scope.row.filePath)">删除</div>
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="tables"> <div class="tables" v-if="fileDatas.total>param.pagesize">
<div class="bottems"> <div class="bottems">
<el-pagination <el-pagination
background background
:page-size="20" :page-size="param.pagesize"
:current-page="1" :current-page="param.pageNum"
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
layout="prev, pager, next" layout="prev, pager, next"
:total="1000"> :total="fileDatas.total">
</el-pagination> </el-pagination>
</div> </div>
</div> </div>
</div> </div>
<el-dialog
class="popups"
:visible.sync="dialogVisible"
width="464px">
<div class="poptitle">
<img src="@/assets/images/economies/icon.png">
<span>重庆市轨道交通3号线二期工程4标段施工总承包</span>
</div>
<div class="popform">
<div class="row">
<span class="left">联系人姓名:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="row">
<span class="left">联系人角色:</span>
<el-select placeholder="请选择">
<el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option>
</el-select>
</div>
<div class="row">
<span class="left">联系人职位:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="row">
<span class="left">联系人公司/机关:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="row">
<span class="left">内部维护人:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="row">
<span class="left">联系方式:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="popbot">
<div class="btn btn_cancel h32" @click="cancel">返回</div>
<div class="btn btn_primary h32">保存</div>
</div>
</div>
</el-dialog>
</el-card> </el-card>
</div> </div>
</template> </template>
<script> <script>
import "@/assets/styles/project.scss" import "@/assets/styles/project.scss"
import { getToken } from "@/utils/auth";
import { getZLWD ,delZLWD} from "@/api/project/project";
export default { export default {
name: 'zlwd', name: 'zlwd',
data(){ data(){
return{ return{
isupload:false, isupload:false,
dialogVisible:false,
textarea:"", textarea:"",
nowedit:-1,//当前正在编辑的文本 //上传
tipslit:[],//项目标签 action:process.env.VUE_APP_BASE_API + '/business/file/upload',
tipsvalue:"",//标签填写内容 fileList: [],
tableData: [ headers: {
{ Authorization: "Bearer " + getToken(),
date: '2016-05-02', filePath:this.$route.query.id,
name: '王小虎', },
address: '上海市普陀区金沙江路 1518 弄' param:{
}, { pageNum:1,
date: '2016-05-04', pagesize:20,
name: '王小虎', filePath:this.$route.query.id,
address: '上海市普陀区金沙江路 1517 弄' },
}, { fileDatas:[],
date: '2016-05-01', filename:'',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄'
}, {
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄'
}
],
fileList:[],//上传的文件
} }
}, },
mounted(){ created(){
this.$refs.uploadFile.$children[0].$refs.input.webkitdirectory = true; this.getList()
// console.log(this.$ref)
}, },
methods:{ methods:{
//上传文件夹 getall(){
fileChang(file, fileList, name) { this.param.filePath = this.$route.query.id
this.form.instFilePics = fileList; this.filename=''
this.headers.filePath = this.$route.query.id
this.handleCurrentChange(1)
}, },
fileRemove(file, fileList, name) { getList(){
this.form.instFilePics = fileList getZLWD(this.param).then(res=>{
this.fileDatas = res
if(this.fileDatas.rows!=null && this.fileDatas .length>0){
this.fileDatas.forEach(item=>{
let names = item.filePath.split('\\')
item.name = names[names.length-1]
let types = item.name.split('.')
item.type = types.length>1?types[1]:'file'
})
}
})
}, },
getFile(row){
if(row.type == 'file'){
this.filename = row.name
this.headers.filePath = this.$route.query.id+'\\'+row.name
this.param.filePath = row.filePath
this.handleCurrentChange(1)
}else{
return false
}
},
getUP(){
this.isupload=true
this.$nextTick(() => {
this.$refs.uploadFile.$children[0].$refs.input.webkitdirectory = true
})
},
downnlod(row){
let a = document.createElement("a");
a.setAttribute("href", row.filePath);
a.setAttribute("download", row.name);
document.body.appendChild(a);
a.click();
},
del(path){
delZLWD(path).then(res=>{
if(res.code == 200){
this.$message.success('删除成功!')
this.handleCurrentChange(1)
}
})
},
handleFileListChange(file, fileList) {
if (fileList.length > 0) {
this.fileList = [fileList[fileList.length - 1]];
}
},
onSuccess(res, file, fileList) {
if(res.code == 200 ){
this.$refs["upload"].submit();
let _this = this
setTimeout(function() {
_this.getList()
_this.isupload = false
},3000)
}
else
this.$message.error({message:res.msg,showClose:true})
},
onSuccess1(res, file, fileList) {
if(res.code == 200 ){
this.$refs["uploadFile"].submit();
let _this = this
setTimeout(function() {
_this.getList()
_this.isupload = false
},3000)
}
else
this.$message.error({message:res.msg,showClose:true})
},
//翻页 //翻页
handleCurrentChange(val) { handleCurrentChange(val) {
console.log(`当前页: ${val}`); this.param.pageNum(1)
this.getList()
}, },
cancel(){ cancel(){
this.dialogVisible = false this.dialogVisible = false
...@@ -213,6 +240,25 @@ ...@@ -213,6 +240,25 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.filepath{
font-size: 12px;
height: 30px;
line-height: 16px;
padding-left: 24px;
>font{
opacity: 0.4;
}
>span{
position: relative;
padding-left: 23px;
}
.img{
position: absolute;
top: -3px;
width: 20px;
left: 0;
}
}
.w102{ .w102{
width: 102px; width: 102px;
} }
......
...@@ -197,16 +197,22 @@ ...@@ -197,16 +197,22 @@
this.thisindex = result.data.projectStage this.thisindex = result.data.projectStage
let list = [] let list = []
let txt = '' let txt = ''
if(result.data.provinceId){ if(result.data.provinceId != ""){
list.push(result.data.provinceId) list.push(result.data.provinceId)
txt += result.data.provinceName
} }
if(result.data.cityId){ if(result.data.cityId){
list.push(result.data.cityId) list.push(result.data.cityId)
txt += '/'+result.data.cityName
} }
if(result.data.districtId){ if(result.data.districtId){
list.push(result.data.districtId) list.push(result.data.districtId)
}
if(result.data.provinceName){
txt += result.data.provinceName
}
if(result.data.cityName){
txt += '/'+result.data.cityName
}
if(result.data.districtName){
txt += '/'+result.data.districtName txt += '/'+result.data.districtName
} }
this.address = list.length>0?list:"待添加" this.address = list.length>0?list:"待添加"
...@@ -279,6 +285,14 @@ ...@@ -279,6 +285,14 @@
handleChange(value) { handleChange(value) {
var labelString = this.$refs.myCascader.getCheckedNodes()[0].pathLabels; var labelString = this.$refs.myCascader.getCheckedNodes()[0].pathLabels;
let param = {
provinceId:null,
provinceName:null,
cityId:null,
cityName:null,
districtId:null,
districtName:null,
}
let txt = '' let txt = ''
labelString.forEach((item,index)=>{ labelString.forEach((item,index)=>{
let str = '' let str = ''
...@@ -286,13 +300,17 @@ ...@@ -286,13 +300,17 @@
str = '/' str = '/'
} }
txt += str + item txt += str + item
if(index == 0){
param.provinceName = item
}
if(index == 1){
param.cityName = item
}
if(index == 2){
param.districtName = item
}
}) })
this.addresstxt = txt this.addresstxt = txt
let param = {
provinceId:null,
cityId:null,
districtId:null
}
value.forEach((item,index)=>{ value.forEach((item,index)=>{
if(index == 0){ if(index == 0){
param.provinceId = parseInt(item) param.provinceId = parseInt(item)
......
...@@ -113,7 +113,7 @@ ...@@ -113,7 +113,7 @@
</div> </div>
<div class="datalist"> <div class="datalist">
<div class="datali" v-for="(item,index) in datalist"> <div class="datali" v-for="(item,index) in datalist">
<div class="det-title" @click="toDetail(item.id)">{{item.projectName}}<span v-if="activeName!='first'" class="people"><i>A</i>四川-李丽 <font color="#FA8A00" v-if="activeName!='first'">正在跟进</font></span></div> <div class="det-title" @click="toDetail(item.id)">{{item.projectName}}<span v-if="activeName!='first'" class="people"><i>{{item.nickName1}}</i>{{item.nickName}} <font color="#FA8A00" v-if="activeName!='first'">正在跟进</font></span></div>
<div class="det-tips"><span class="tips tip1" v-if="item.label">{{item.label}}</span><span v-if="item.address" class="tips tip2">{{item.address}}</span></div> <div class="det-tips"><span class="tips tip1" v-if="item.label">{{item.label}}</span><span v-if="item.address" class="tips tip2">{{item.address}}</span></div>
<div class="det-contets"> <div class="det-contets">
<div class="det-con"> <div class="det-con">
...@@ -133,7 +133,7 @@ ...@@ -133,7 +133,7 @@
<span class="wordprimary">{{item.ownerCompany}}</span> <span class="wordprimary">{{item.ownerCompany}}</span>
</div> </div>
</div> </div>
<el-divider></el-divider> <el-divider v-if="index != datalist.length-1"></el-divider>
<div class="operates" v-if="activeName=='first'"> <div class="operates" v-if="activeName=='first'">
<div class="i1"><img src="@/assets/images/follow.png">跟进</div> <div class="i1"><img src="@/assets/images/follow.png">跟进</div>
<div class="i2"><img src="@/assets/images/edit.png">编辑</div> <div class="i2"><img src="@/assets/images/edit.png">编辑</div>
...@@ -294,6 +294,7 @@ export default { ...@@ -294,6 +294,7 @@ export default {
if(item.districtName != ""&& item.districtName != null) if(item.districtName != ""&& item.districtName != null)
str += '-' +item.districtName str += '-' +item.districtName
item.address = str item.address = str
item.nickName1 = item.nickName?item.nickName.slice(0,1):''
}) })
} }
}) })
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<el-input class="ename_input" <el-input class="ename_input"
placeholder="请输入项目名称关键字" v-model="ename" @input="enamebtn('ename',ename)"></el-input> placeholder="请输入项目名称关键字" v-model="ename" @input="enamebtn('ename',ename)"></el-input>
<template v-if="ename"> <template v-if="ename">
<span v-for=" (item,k) in enameQueryTypeList" :key="k"> <span v-for=" (item,k) in enameQueryTypeList" :key="k" style="margin-right: 24px;">
<el-radio v-model="enameQueryType" :label="item.key">{{item.value}}</el-radio> <el-radio v-model="enameQueryType" :label="item.key">{{item.value}}</el-radio>
</span> </span>
</template> </template>
......
...@@ -23,5 +23,10 @@ public class BusinessIdDto { ...@@ -23,5 +23,10 @@ public class BusinessIdDto {
/** /**
* 文件路径 * 文件路径
*/ */
private String folderPath; private String filePath;
/**
* 文件搜索关键字
*/
private String keyword;
} }
...@@ -12,6 +12,11 @@ import java.util.List; ...@@ -12,6 +12,11 @@ import java.util.List;
@Data @Data
public class BusinessListDto { public class BusinessListDto {
/**
* 拜访方式
*/
private String visitWay;
/** /**
* 项目名称 * 项目名称
*/ */
...@@ -23,7 +28,7 @@ public class BusinessListDto { ...@@ -23,7 +28,7 @@ public class BusinessListDto {
private Integer userId; private Integer userId;
/** /**
* 企业id * 部门id
*/ */
private Integer deptId; private Integer deptId;
...@@ -45,7 +50,7 @@ public class BusinessListDto { ...@@ -45,7 +50,7 @@ public class BusinessListDto {
/** /**
* 项目类型 * 项目类型
*/ */
private String projectType; private List<String> projectType;
/** /**
* 投资估算 * 投资估算
...@@ -55,7 +60,7 @@ public class BusinessListDto { ...@@ -55,7 +60,7 @@ public class BusinessListDto {
/** /**
* 项目阶段 * 项目阶段
*/ */
private String projectStage; private List<String> projectStage;
/** /**
* 最小金额 * 最小金额
......
package com.dsk.system.domain.vo; package com.dsk.system.domain.vo;
import com.dsk.common.annotation.Excel;
import com.dsk.common.core.domain.entity.BusinessRelateCompany;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
...@@ -20,7 +18,7 @@ public class BusinessBrowseVo { ...@@ -20,7 +18,7 @@ public class BusinessBrowseVo {
private String projectName; private String projectName;
/** /**
* 项目名称 * 0 仅自己可见,1 他人可见
*/ */
private Integer isPrivate; private Integer isPrivate;
......
...@@ -63,4 +63,9 @@ public class BusinessListVo { ...@@ -63,4 +63,9 @@ public class BusinessListVo {
* 项目标签 * 项目标签
*/ */
private String label; private String label;
/**
* 项目类型
*/
private String projectType;
} }
...@@ -120,15 +120,11 @@ public class EnterpriseProjectService { ...@@ -120,15 +120,11 @@ public class EnterpriseProjectService {
return BeanUtil.toBean(map, R.class); return BeanUtil.toBean(map, R.class);
} }
// HashMap<String, Object> contentParam = new HashMap<>(); HashMap<String, Object> contentParam = new HashMap<>();
// contentParam.put("data_type", "bid_plan"); contentParam.put("data_type", "bid_plan");
// contentParam.put("filter_type", 2); contentParam.put("filter_type", 2);
// contentParam.put("strategy_id", contentId); contentParam.put("strategy_id", contentId);
HashMap<String, Object> param = new HashMap<>(); Map<String, Object> contentMap = dskOpenApiUtil.requestBody("/mongocontent/v1/cjb/mongo_content", BeanUtil.beanToMap(contentParam, false, false));
param.put("data_type", "kaibiao");
param.put("filter_type", 2);
param.put("strategy_id", "647477d52ba0e4cb1410c7f6");
Map<String, Object> contentMap = dskOpenApiUtil.requestBody("/mongocontent/v1/cjb/mongo_content", BeanUtil.beanToMap(param, false, false));
Map contentData = MapUtils.getMap(contentMap, "data", null); Map contentData = MapUtils.getMap(contentMap, "data", null);
......
...@@ -2,6 +2,7 @@ package com.dsk.system.mapper; ...@@ -2,6 +2,7 @@ package com.dsk.system.mapper;
import com.dsk.common.core.domain.entity.BusinessFollowRecord; import com.dsk.common.core.domain.entity.BusinessFollowRecord;
import com.dsk.system.domain.BusinessIdDto; import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.BusinessListDto;
import java.util.List; import java.util.List;
...@@ -68,4 +69,12 @@ public interface BusinessFollowRecordMapper ...@@ -68,4 +69,12 @@ public interface BusinessFollowRecordMapper
* @return 结果 * @return 结果
*/ */
public int deleteBusinessFollowRecordByIds(Long[] ids); public int deleteBusinessFollowRecordByIds(Long[] ids);
/**
* 分页查询跟进动态
*
* @param dto
* @return
*/
List<BusinessFollowRecord> allFollow(BusinessListDto dto);
} }
...@@ -2,6 +2,7 @@ package com.dsk.system.service; ...@@ -2,6 +2,7 @@ package com.dsk.system.service;
import com.dsk.common.core.domain.entity.BusinessFollowRecord; import com.dsk.common.core.domain.entity.BusinessFollowRecord;
import com.dsk.system.domain.BusinessIdDto; import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.BusinessListDto;
import java.util.List; import java.util.List;
...@@ -29,6 +30,14 @@ public interface IBusinessFollowRecordService ...@@ -29,6 +30,14 @@ public interface IBusinessFollowRecordService
*/ */
public List<BusinessFollowRecord> selectBusinessFollowRecordList(BusinessIdDto businessId); public List<BusinessFollowRecord> selectBusinessFollowRecordList(BusinessIdDto businessId);
/**
* 分页查询跟进动态
*
* @param dto
* @return
*/
List<BusinessFollowRecord> allFollow(BusinessListDto dto);
/** /**
* 分页查询项目跟进记录列表 * 分页查询项目跟进记录列表
* *
......
package com.dsk.system.service.impl; package com.dsk.system.service.impl;
import java.util.List;
import com.dsk.common.core.domain.entity.BusinessFollowRecord; import com.dsk.common.core.domain.entity.BusinessFollowRecord;
import com.dsk.common.utils.DateUtils; import com.dsk.common.utils.DateUtils;
import com.dsk.system.domain.BusinessIdDto; import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.BusinessListDto;
import com.dsk.system.mapper.BusinessFollowRecordMapper; import com.dsk.system.mapper.BusinessFollowRecordMapper;
import com.dsk.system.service.IBusinessFollowRecordService; import com.dsk.system.service.IBusinessFollowRecordService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/** /**
* 项目跟进记录Service业务层处理 * 项目跟进记录Service业务层处理
* *
...@@ -41,6 +42,17 @@ public class BusinessFollowRecordServiceImpl implements IBusinessFollowRecordSer ...@@ -41,6 +42,17 @@ public class BusinessFollowRecordServiceImpl implements IBusinessFollowRecordSer
return businessFollowRecordMapper.selectBusinessFollowRecordList(businessId); return businessFollowRecordMapper.selectBusinessFollowRecordList(businessId);
} }
@Override
public List<BusinessFollowRecord> allFollow(BusinessListDto dto) {
//userId不传值,就查询全部门项目
// if (dto.getUserId() == null) {
// Long deptId = SecurityUtils.getLoginUser().getDeptId();
// if (deptId == null) throw new BaseException("请登录");
// dto.setDeptId(deptId.intValue());
// }
return businessFollowRecordMapper.allFollow(dto);
}
@Override @Override
public List<BusinessFollowRecord> businessFollowRecordPaging(BusinessFollowRecord businessFollowRecord) { public List<BusinessFollowRecord> businessFollowRecordPaging(BusinessFollowRecord businessFollowRecord) {
return businessFollowRecordMapper.businessFollowRecordPaging(businessFollowRecord); return businessFollowRecordMapper.businessFollowRecordPaging(businessFollowRecord);
......
package com.dsk.system.service.impl; package com.dsk.system.service.impl;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsk.common.config.RuoYiConfig; import com.dsk.common.config.RuoYiConfig;
import com.dsk.common.constant.HttpStatus; import com.dsk.common.constant.HttpStatus;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessInfo; import com.dsk.common.core.domain.entity.BusinessInfo;
import com.dsk.common.core.domain.entity.BusinessLabel; import com.dsk.common.core.domain.entity.BusinessLabel;
import com.dsk.common.core.domain.entity.BusinessRelateCompany;
import com.dsk.common.core.domain.entity.BusinessUser; import com.dsk.common.core.domain.entity.BusinessUser;
import com.dsk.common.exception.base.BaseException; import com.dsk.common.exception.base.BaseException;
import com.dsk.common.utils.CheckUtils; import com.dsk.common.utils.CheckUtils;
...@@ -21,8 +13,8 @@ import com.dsk.common.utils.DateUtils; ...@@ -21,8 +13,8 @@ import com.dsk.common.utils.DateUtils;
import com.dsk.common.utils.SecurityUtils; import com.dsk.common.utils.SecurityUtils;
import com.dsk.common.utils.StringUtils; import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.file.FileUtils; import com.dsk.common.utils.file.FileUtils;
import com.dsk.system.domain.BusinessExcelDto;
import com.dsk.system.domain.BusinessAddDto; import com.dsk.system.domain.BusinessAddDto;
import com.dsk.system.domain.BusinessExcelDto;
import com.dsk.system.domain.BusinessListDto; import com.dsk.system.domain.BusinessListDto;
import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto; import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto;
import com.dsk.system.domain.customer.vo.CustomerBusinessListVo; import com.dsk.system.domain.customer.vo.CustomerBusinessListVo;
...@@ -34,13 +26,14 @@ import com.dsk.system.mapper.BusinessRelateCompanyMapper; ...@@ -34,13 +26,14 @@ import com.dsk.system.mapper.BusinessRelateCompanyMapper;
import com.dsk.system.mapper.BusinessUserMapper; import com.dsk.system.mapper.BusinessUserMapper;
import com.dsk.system.service.IBusinessInfoService; import com.dsk.system.service.IBusinessInfoService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import lombok.val;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
/** /**
* 项目详情Service业务层处理 * 项目详情Service业务层处理
...@@ -86,6 +79,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService { ...@@ -86,6 +79,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
*/ */
@Override @Override
public List<BusinessListVo> selectBusinessInfoList(BusinessListDto dto) { public List<BusinessListVo> selectBusinessInfoList(BusinessListDto dto) {
//userId不传值,就查询全部门项目
// if (dto.getUserId() == null) { // if (dto.getUserId() == null) {
// Long deptId = SecurityUtils.getLoginUser().getDeptId(); // Long deptId = SecurityUtils.getLoginUser().getDeptId();
// if (deptId == null) throw new BaseException("请登录"); // if (deptId == null) throw new BaseException("请登录");
......
...@@ -58,7 +58,34 @@ ...@@ -58,7 +58,34 @@
<if test="visitWay != null and visitWay != ''">and f.visit_way = #{visitWay}</if> <if test="visitWay != null and visitWay != ''">and f.visit_way = #{visitWay}</if>
<if test="creatTime != null ">and f.creat_time = #{creatTime}</if> <if test="creatTime != null ">and f.creat_time = #{creatTime}</if>
</where> </where>
ORDER BY create_time DESC ORDER BY creat_time DESC
</select>
<select id="allFollow" resultType="com.dsk.common.core.domain.entity.BusinessFollowRecord">
select f.*,
i.project_name as projectName,
i.construction_unit as ownerCompany,
u.nick_name as nickName
from business_follow_record f
left join business_info i on i.id = f.business_id
left join sys_user u on f.user_id = u.user_id
<where>
<if test="userId != null">
and f.user_id = #{userId}
</if>
<if test="deptId != null">
and u.dept_id = #{deptId}
</if>
<if test="projectName != null and projectName != ''">
and i.project_name = #{projectName}
</if>
<if test="ownerCompany != null and ownerCompany != ''">
and i.construction_unit = #{ownerCompany}
</if>
<if test="visitWay != null and visitWay != ''">
and f.visit_way = #{visitWay}
</if>
</where>
ORDER BY f.creat_time DESC
</select> </select>
<insert id="insertBusinessFollowRecord" parameterType="com.dsk.common.core.domain.entity.BusinessFollowRecord" useGeneratedKeys="true" <insert id="insertBusinessFollowRecord" parameterType="com.dsk.common.core.domain.entity.BusinessFollowRecord" useGeneratedKeys="true"
......
...@@ -86,23 +86,26 @@ ...@@ -86,23 +86,26 @@
SELECT SELECT
i.id, i.id,
i.project_name projectName, i.project_name projectName,
i.project_type projectType,
i.province_name provinceName, i.province_name provinceName,
i.city_name cityName, i.city_name cityName,
i.district_name districtName, i.district_name districtName,
i.investment_amount investmentAmount, i.investment_amount investmentAmount,
GROUP_CONCAT(DISTINCT r.company_name) ownerCompany, i.construction_unit ownerCompany,
MAX(f.creat_time) followTime, MAX(f.creat_time) followTime,
u.nick_name nickName, u.nick_name nickName,
GROUP_CONCAT(DISTINCT l.label) label GROUP_CONCAT(DISTINCT l.label) label
FROM business_info i FROM business_info i
LEFT JOIN business_follow_record f on f.business_id = i.id LEFT JOIN business_follow_record f on f.business_id = i.id
LEFT JOIN (SELECT business_id,company_name FROM business_relate_company WHERE company_role LIKE '%业主%' ) r on r.business_id = i.id
LEFT JOIN business_label l on l.business_id = i.id LEFT JOIN business_label l on l.business_id = i.id
LEFT JOIN business_user bu on bu.business_id = i.id LEFT JOIN business_user bu on bu.business_id = i.id
LEFT JOIN sys_user u on u.user_id = f.user_id LEFT JOIN sys_user u on u.user_id = f.user_id
<where> <where>
<if test="projectType != null and projectType != ''"> <if test="projectType != null and projectType != ''">
and i.project_type = #{projectType} and i.project_type in
<foreach collection="projectType" item="projectType" open="(" separator="," close=")">
#{projectType}
</foreach>
</if> </if>
<if test="minAmount != null and minAmount != '' and maxAmount != minAmount"> <if test="minAmount != null and minAmount != '' and maxAmount != minAmount">
and i.investment_amount &gt;= #{minAmount} and i.investment_amount &gt;= #{minAmount}
...@@ -114,13 +117,16 @@ ...@@ -114,13 +117,16 @@
and i.investment_amount = #{minAmount} and i.investment_amount = #{minAmount}
</if> </if>
<if test="projectStage != null and projectStage != ''"> <if test="projectStage != null and projectStage != ''">
and i.project_stage = #{projectStage} and i.project_stage in
<foreach collection="projectStage" item="projectStage" open="(" separator="," close=")">
#{projectStage}
</foreach>
</if> </if>
<if test="projectName != null and projectName != ''"> <if test="projectName != null and projectName != ''">
and i.project_name like concat('%',#{projectName},'%') and i.project_name like concat('%',#{projectName},'%')
</if> </if>
<if test="ownerCompany != null and ownerCompany != ''"> <if test="ownerCompany != null and ownerCompany != ''">
or r.company_name like concat('%',#{ownerCompany},'%') or i.construction_unit like concat('%',#{ownerCompany},'%')
</if> </if>
<if test="userId != null"> <if test="userId != null">
and bu.user_id = #{userId} and bu.user_id = #{userId}
......
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