Commit d2045fee authored by caixingbing's avatar caixingbing
parents 3d34a012 609878a7
......@@ -33,7 +33,7 @@ public class BusinessBacklogController extends BaseController
*/
// @PreAuthorize("@ss.hasPermi('system:backlog:list')")
@GetMapping("/list")
public TableDataInfo list(@RequestBody(required=false) BusinessBacklog businessBacklog)
public TableDataInfo list(BusinessBacklog businessBacklog)
{
startPage();
List<BusinessBacklog> list = businessBacklogService.selectBusinessBacklogList(businessBacklog);
......
......@@ -28,7 +28,7 @@ public class BusinessContactsController extends BaseController
*/
// @PreAuthorize("@ss.hasPermi('system:contacts:list')")
@GetMapping("/list")
public TableDataInfo list(@RequestBody(required=false) BusinessContacts businessContacts)
public TableDataInfo list(BusinessContacts businessContacts)
{
startPage();
List<BusinessContacts> list = businessContactsService.selectBusinessContactsList(businessContacts);
......
......@@ -3,7 +3,9 @@ package com.dsk.web.controller.business;
import com.dsk.common.config.RuoYiConfig;
import com.dsk.common.core.controller.BaseController;
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.utils.StringUtils;
import com.dsk.common.utils.file.FileUploadUtils;
import com.dsk.common.utils.file.FileUtils;
import com.dsk.framework.config.ServerConfig;
......@@ -16,6 +18,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author lxl
......@@ -35,17 +38,17 @@ public class BusinessFileController extends BaseController {
*/
// @PreAuthorize("@ss.hasPermi('system:file:add')")
// @Log(title = "项目资料文档", businessType = BusinessType.INSERT)
@GetMapping("/new/{filePath}")
public AjaxResult newFolder(@PathVariable String filePath) {
return FileUtils.newFolder(RuoYiConfig.getProfile() + filePath) ? AjaxResult.success() : AjaxResult.error();
@PostMapping("/new")
public AjaxResult newFolder(@RequestBody(required=false) BusinessIdDto filePath) {
return FileUtils.newFolder(filePath.getFilePath()) ? AjaxResult.success() : AjaxResult.error();
}
/**
* 删除某个文件或整个文件夹
*/
@PostMapping("/remove")
public AjaxResult removeFile(@RequestBody(required=false) BusinessIdDto folderPath) {
return FileUtils.delFolder(RuoYiConfig.getProfile() + folderPath.getFolderPath()) ? AjaxResult.success() : AjaxResult.error();
public AjaxResult removeFile(@RequestBody(required=false) BusinessIdDto filePath) {
return FileUtils.delFolder(filePath.getFilePath()) ? AjaxResult.success() : AjaxResult.error();
}
/**
......@@ -53,9 +56,16 @@ public class BusinessFileController extends BaseController {
* 获取文件夹中所有文件
*/
@GetMapping(value = "/list")
public TableDataInfo getAllFiles(@RequestBody(required=false) BusinessIdDto folderPath) {
public TableDataInfo getAllFiles(BusinessIdDto filePath) {
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);
}
......@@ -76,20 +86,18 @@ public class BusinessFileController extends BaseController {
* @param request 请求头参数
* @return
*/
@PostMapping("/upload/")
public AjaxResult uploadFolder(@RequestPart("file") MultipartFile file, HttpServletRequest request){
@PostMapping("/upload")
public AjaxResult uploadFolder(@RequestPart("file") MultipartFile file,HttpServletRequest request){
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 url = serverConfig.getUrl() + fileName;
AjaxResult ajax = AjaxResult.success();
ajax.put("url", url);
ajax.put("fileName", fileName);
ajax.put("newFileName", FileUtils.getName(fileName));
ajax.put("originalFilename", file.getOriginalFilename());
return ajax;
} catch (IOException e) {
return AjaxResult.error(e.getMessage());
......
......@@ -5,6 +5,7 @@ import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessFollowRecord;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.BusinessListDto;
import com.dsk.system.service.IBusinessFollowRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......@@ -24,16 +25,7 @@ public class BusinessFollowRecordController extends BaseController
@Autowired
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
*/
// @PreAuthorize("@ss.hasPermi('system:record:list')")
@GetMapping("/list")
public TableDataInfo list(@RequestBody(required=false) BusinessIdDto businessId)
public TableDataInfo list(BusinessIdDto businessId)
{
startPage();
List<BusinessFollowRecord> list = businessFollowRecordService.selectBusinessFollowRecordList(businessId);
......@@ -69,6 +61,18 @@ public class BusinessFollowRecordController extends BaseController
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
// public AjaxResult edit(@RequestBody BusinessFollowRecord 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
}
/**
* 查询项目列表
* 分页查询项目列表
*/
// @PreAuthorize("@ss.hasPermi('system:business:list')")
@GetMapping("/list")
public TableDataInfo list(@RequestBody(required=false) BusinessListDto dto)
public TableDataInfo list(BusinessListDto dto)
{
startPage();
List<BusinessListVo> list = businessInfoService.selectBusinessInfoList(dto);
......
......@@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 项目关联单位Controller
* 项目相关企业Controller
*
* @author lxl
* @date 2023-05-17
......@@ -25,7 +25,7 @@ public class BusinessRelateCompanyController extends BaseController
private IBusinessRelateCompanyService businessRelateCompanyService;
/**
* 查询关联单位角色
* 查询相关企业角色
*/
@PostMapping("/role/list")
public AjaxResult companyRoleList(@RequestBody BusinessIdDto dto){
......@@ -33,11 +33,11 @@ public class BusinessRelateCompanyController extends BaseController
}
/**
* 查询项目关联单位列表
* 查询项目相关企业列表
*/
// @PreAuthorize("@ss.hasPermi('system:company:list')")
@GetMapping("/list")
public TableDataInfo list(@RequestBody(required=false) BusinessRelateCompany businessRelateCompany)
public TableDataInfo list(BusinessRelateCompany businessRelateCompany)
{
startPage();
List<BusinessRelateCompany> list = businessRelateCompanyService.selectBusinessRelateCompanyList(businessRelateCompany);
......@@ -66,6 +66,17 @@ public class BusinessRelateCompanyController extends BaseController
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
// 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;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.web.controller.search.service.MarketAnalysisService;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -9,6 +11,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
/**
......@@ -18,7 +23,7 @@ import javax.annotation.Resource;
*/
@RequestMapping("/marketAnalysis")
@RestController
public class MarketAnalysisController {
public class MarketAnalysisController extends BaseController {
@Resource
......@@ -46,9 +51,8 @@ public class MarketAnalysisController {
/*
* 资质等级按照大类、省份、等级类型分组
*/
@RequestMapping("/certGroupByCategoryProvinceLevel")
public AjaxResult certGroupByCategoryProvinceLevel() {
@RequestMapping("/certGroupByMajorProvinceLevel")
public AjaxResult certGroupByMajorProvinceLevel() {
return marketAnalysisService.certGroupByMajorProvinceLevel();
}
......@@ -86,11 +90,23 @@ public class MarketAnalysisController {
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")
public AjaxResult countGroupByMonth() {
return marketAnalysisService.countGroupByMonth();
public AjaxResult countGroupByMonth(@RequestBody JSONObject object) {
return marketAnalysisService.countGroupByMonth(object);
}
}
......@@ -19,7 +19,7 @@ public interface MarketAnalysisService {
AjaxResult countGroupByProvince(JSONObject object);
AjaxResult countGroupByMonth();
AjaxResult countGroupByMonth(JSONObject object);
AjaxResult bidMoneyGroupByProjectType(JSONObject object);
......
......@@ -62,8 +62,8 @@ public class MarketAnalysisServiceImpl implements MarketAnalysisService {
}
@Override
public AjaxResult countGroupByMonth() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countGroupByMonth", null);
public AjaxResult countGroupByMonth(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countGroupByMonth", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
}
......@@ -130,6 +130,6 @@ public class RuoYiConfig
*/
public static String getUploadPath()
{
return getProfile() + "/upload";
return getProfile();
}
}
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.fasterxml.jackson.annotation.JsonFormat;
import com.dsk.common.annotation.Excel;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.Date;
/**
* 项目跟进记录对象 business_follow_record
*
......@@ -18,6 +18,16 @@ public class BusinessFollowRecord extends BaseEntity
{
private static final long serialVersionUID = 1L;
/**
* 项目名称
*/
private String projectName;
/**
* 业主单位
*/
private String ownerCompany;
/** $column.columnComment */
private Integer id;
......@@ -64,6 +74,22 @@ public class BusinessFollowRecord extends BaseEntity
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
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() {
return nickName;
}
......@@ -177,6 +203,8 @@ public class BusinessFollowRecord extends BaseEntity
.append("visitWay", getVisitWay())
.append("creatTime", getCreatTime())
.append("updateTime", getUpdateTime())
.append("projectName", getProjectName())
.append("ownerCompany(", getOwnerCompany())
.toString();
}
}
......@@ -32,5 +32,15 @@ public class EnterpriseCreditLawsuitsPageBody extends BasePage {
*/
private String keys;
/**
* 开始时间(年月日)
*/
private String dateFrom;
/**
* 截止时间(年月日)
*/
private String dateTo;
}
......@@ -27,7 +27,7 @@ public class EnterpriseProjectBidNoticePageBody extends BasePage {
/**
* 类型
*/
private String tenderStage;
private List<String> tenderStage;
/*
* 1金额倒序,2金额正序,3时间倒序,4时间正序
......
package com.dsk.common.utils.file;
import java.io.File;
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Objects;
import com.dsk.common.config.RuoYiConfig;
import com.dsk.common.constant.Constants;
import com.dsk.common.exception.file.FileNameLengthLimitExceededException;
import com.dsk.common.exception.file.FileSizeLimitExceededException;
import com.dsk.common.exception.file.InvalidExtensionException;
import com.dsk.common.utils.DateUtils;
import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.uuid.Seq;
import org.apache.commons.io.FilenameUtils;
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
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));
return getPathFileName(baseDir, fileName);
// return getPathFileName(baseDir, fileName);
return baseDir+file.getOriginalFilename();
}
/**
......
package com.dsk.common.utils.file;
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.utils.DateUtils;
import com.dsk.common.utils.StringUtils;
......@@ -25,6 +26,7 @@ import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
......@@ -40,11 +42,6 @@ public class FileUtils
{
public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+";
public static void main(String[] args) {
System.out.println(RuoYiConfig.getProfile());
}
/**
* 检查目录是否存在,如果不存在,则创建目录,如果创建失败则返回false
*
......@@ -251,8 +248,8 @@ public class FileUtils
* @param filePath 全路径
* @return
*/
public static List<String> getAllFiles(String filePath) {
List<String> fileList = new ArrayList<String>();
public static List<BusinessFileVo> getAllFiles(String filePath) {
List<BusinessFileVo> fileList = new ArrayList<>();
File file = new File(filePath);
if (!file.exists()) {
......@@ -269,11 +266,11 @@ public class FileUtils
for (File directory : files) {
// 如果是文件夹则递归调用此方法
if (directory.isDirectory()) {
fileList.add(directory.getPath());
fileList.add(new BusinessFileVo(directory.getPath(),new SimpleDateFormat("yyyy-MM-dd").format(directory.lastModified())));
getAllFiles(directory.getPath());
} else {
// 如果是文件则直接输出路径
fileList.add(directory.getPath());
fileList.add(new BusinessFileVo(directory.getPath(),new SimpleDateFormat("yyyy-MM-dd").format(directory.lastModified())));
}
}
return fileList;
......@@ -287,8 +284,8 @@ public class FileUtils
* @param path 文件夹路径
* @return List<File>
*/
public static List<File> getAllFileNames(String path) {
List<File> fileList = new ArrayList<File>();
public static List<BusinessFileVo> getAllFileNames(String path) {
List<BusinessFileVo> fileList = new ArrayList<>();
File file = new File(path);
if (!file.exists()) {
return fileList;
......@@ -305,10 +302,10 @@ public class FileUtils
tempFile = new File(path + File.separator + fileName);
}
if (tempFile.isFile()) {
fileList.add(tempFile);
fileList.add(new BusinessFileVo(tempFile.getPath(),new SimpleDateFormat("yyyy-MM-dd").format(tempFile.lastModified())));
}
if (tempFile.isDirectory()) {
List<File> allFiles = getAllFileNames(tempFile.getAbsolutePath());
List<BusinessFileVo> allFiles = getAllFileNames(tempFile.getAbsolutePath());
fileList.addAll(allFiles);
}
}
......
......@@ -64,7 +64,7 @@ public class SysLoginService
public String login(String username, String password, String code, String uuid)
{
// 验证码校验
// validateCaptcha(username, code, uuid);
validateCaptcha(username, code, uuid);
// 登录前置校验
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) {
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 @@
background: #F6F9FD;
border-radius: 6px;
padding: 24px;
border: 1px solid #F6F9FD;
//box-sizing: content-box;
box-sizing: border-box;
>div{
......@@ -676,7 +677,6 @@
}
}
.rec_detail:hover{
.operate{
display: block;
......
......@@ -508,3 +508,187 @@ select {
width: 39px;
height: 14px;
}
.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 @@
left: 0;
z-index: 1001;
// overflow: hidden;
-webkit-box-shadow: 2px 0 6px rgba(0,21,41,.35);
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);
//展开、收起箭头
.side-expand{
position: absolute;
......
......@@ -42,7 +42,7 @@ export default {
.hasTagsView {
.app-main {
/* 84 = navbar + tags-view = 50 + 34 */
min-height: calc(100vh - 84px);
min-height: calc(100vh - 56px);
background: #F5F5F5;
}
......
......@@ -173,7 +173,7 @@
</template>
</el-table-column>
</el-table>
<div class="bottems" v-if="tableData.total>0">
<div class="bottems" v-if="tableData.total>searchParam.pageSize">
<el-pagination
background
:page-size="searchParam.pageSize"
......
......@@ -99,7 +99,7 @@
<div class="trendcon">{{item.text}}</div>
<div class="time">{{item.time}}</div>
</div>
<div class="tables" style="width: 100%">
<div class="tables" style="width: 100%" v-if="datalist.length>10">
<div class="bottems">
<el-pagination
background
......@@ -236,7 +236,7 @@ export default {
{
name: '',
type: 'bar',
barWidth: '20%',
barWidth: '12px',
data: [100, 152, 200, 334, 390, 330, 220,256,178],
itemStyle:{
normal: {
......@@ -280,7 +280,7 @@ export default {
{
name: '',
type: 'bar',
barWidth: '20%',
barWidth: '12px',
data: [110, 112, 190, 234, 310, 350, 220,276,198],
itemStyle:{
normal:{
......@@ -551,6 +551,12 @@ export default {
line-height: 18px;
padding-bottom: 16px;
}
&:last-child{
.trendcon{
border: none;
}
}
.time{
position: absolute;
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 {
type: 'value',
},
grid: {
left: '16%',
left: '20%',
top: 20,
right: 20,
bottom: 60,
......@@ -972,6 +972,7 @@ export default {
.title{
font-size: 12px;
color: #3D3D3D;
border-bottom: 0;
}
.number{
font-weight: bold;
......@@ -1473,6 +1474,7 @@ export default {
.item{
border-bottom: 1px solid #EEEEEE;
padding: 10px 0;
cursor: pointer;
h3{
font-weight: 400;
color: rgba(35,35,35,0.8);
......@@ -1494,6 +1496,11 @@ export default {
}
}
}
.item:hover{
h3{
color:#0081FF;
}
}
.item:last-child{
border-bottom: 0;
}
......@@ -1509,6 +1516,7 @@ export default {
.item{
border-bottom: 1px solid #EEEEEE;
padding: 10px 0;
cursor: pointer;
h3{
font-weight: 400;
color: rgba(35,35,35,0.8);
......@@ -1530,6 +1538,11 @@ export default {
}
}
}
.item:hover{
h3{
color:#0081FF;
}
}
.item:last-child{
border-bottom: 0;
}
......
......@@ -159,13 +159,13 @@ export default {
<style rel="stylesheet/scss" lang="scss">
.login {
/*display: flex;*/
justify-content: center;
align-items: center;
height: 100%;
background-image: url("../assets/images/login_bg.png");
background-size: cover;
overflow-y: hidden;
display: flex;
justify-content: center;
.content{
width: 1320px;
margin: 0 auto;
......
......@@ -5,8 +5,8 @@
<span class="common-title">指标</span>
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item prop="year">
<el-select v-model="queryParams.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-select v-model="queryParams.year" filterable class="form-content-width" placeholder="请选择">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.year" :value="item.year" />
</el-select>
</el-form-item>
</el-form>
......@@ -20,57 +20,62 @@
<div class="table-title">
<span class="title">指标</span>
<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
v-else
ref="address1"
:options="addressList"
:props="props"
v-model="value1"
@visible-change="handleVisibleChange($event,1)"
@change="handleChange(1)"
placeholder="添加地区"></el-cascader>
</span>
<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
v-else
ref="address2"
:options="addressList"
:props="props"
v-model="value2"
@visible-change="handleVisibleChange($event,2)"
@change="handleChange(2)"
placeholder="添加地区"></el-cascader>
</span>
<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
v-else
ref="address3"
:options="addressList"
:props="props"
v-model="value3"
@visible-change="handleVisibleChange($event,3)"
@change="handleChange(3)"
placeholder="添加地区"></el-cascader>
</span>
<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
v-else
ref="address2"
ref="address4"
:options="addressList"
:props="props"
v-model="value4"
@visible-change="handleVisibleChange($event,4)"
@change="handleChange(4)"
placeholder="添加地区"></el-cascader>
</span>
<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
v-else
ref="address5"
:options="addressList"
:props="props"
v-model="value5"
@visible-change="handleVisibleChange($event,5)"
@change="handleChange(5)"
placeholder="添加地区"></el-cascader>
</span>
......@@ -95,51 +100,30 @@
<script>
import dataRegion from '@/assets/json/dataRegion'
import { nationalPage,getYears } from '@/api/macro/macro'
export default {
name: 'comparison',
props:{
dataQuery:{}
},
data() {
return {
queryParams: {
year: '',
},
yearOptions: [
{ name: '2023年', value: '2023' },
{ name: '2022年', value: '2022' },
{ name: '2021年', value: '2021' },
],
yearOptions: [],
tableData: [
{
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',
},
{
zb:"",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
{index:0},
{index:1},
{index:2},
{index:3},
{index:4},
],
headers: [
{
prop: 'year',
label: '指标',
},
{
prop: 'name',
label: '经济',
......@@ -149,148 +133,149 @@ export default {
label: 'GDP(亿元)',
},
{
prop: 'gdpzs',
prop: 'gdpAddValue',
label: 'GDP增速',
},
{
prop: 'rjgdp',
prop: 'gdpPerCapita',
label: '人均GDP(元)',
},
{
prop: 'rjgdp',
prop: 'piAddValue',
label: '第一产业增加值(亿元)',
},
{
prop: 'rjgdp',
prop: 'siAddValue',
label: '第二产业增加值(亿元)',
},
{
prop: 'rjgdp',
prop: 'tiAddValue',
label: '第三产业增加值(亿元)',
},
{
prop: 'rjgdp',
prop: 'population',
label: '人口(万人)',
},
{
prop: 'rjgdp',
prop: 'industryAddValue',
label: '工业增加值(亿元)',
},
{
prop: 'rjgdp',
prop: 'industryTotalValue',
label: '工业总产值(亿元)',
},
{
prop: 'rjgdp',
prop: 'realEstateInvestment',
label: '房地产开发投资(亿元)',
},
{
prop: 'rjgdp',
prop: 'eximTotalValue',
label: '进出口总额(亿美元)',
},
{
prop: 'rjgdp',
prop: 'trscg',
label: '社会消费品零售总额(亿元)',
},
{
prop: 'rjgdp',
prop: 'urbanPcdi',
label: '城镇居民人均可支配收入(元)',
},
{
prop: 'cz',
prop: 'name',
label: '财政',
},
{
prop: 'rjgdp',
prop: 'gbr',
label: '一般公共预算收入(亿元)',
},
{
prop: 'rjgdp',
prop: 'gbrGrowth',
label: '般公共预算收入增速',
},
{
prop: 'rjgdp',
prop: 'taxIncome',
label: '税收收入(亿元)',
},
{
prop: 'rjgdp',
prop: 'transferIncome',
label: '转移性收入(亿元)',
},
{
prop: 'rjgdp',
prop: 'superiorSubsidyIncome',
label: '上级补助收入(亿元)',
},
{
prop: 'rjgdp',
prop: 'gbe',
label: '一般公共预算支出(亿元)',
},
{
prop: 'rjgdp',
prop: 'govFundIncome',
label: '政府性基金收入(亿元)',
},
{
prop: 'rjgdp',
prop: 'landTransferIncome',
label: '土地出让收入(亿元)',
},
{
prop: 'rjgdp',
prop: 'govFundExpenditure',
label: '政府性基金支出(亿元)',
},
{
prop: 'rjgdp',
prop: 'soecoi',
label: '国有资本经营收入(亿元)',
},
{
prop: 'rjgdp',
prop: 'soecoe',
label: '国有资本经营支出(亿元)',
},
{
prop: 'zw',
prop: 'name',
label: '债务',
},
{
prop: 'rjgdp',
prop: 'govDebtBalance',
label: '地方政府债务余额(亿元)',
},
{
prop: 'rjgdp',
prop: 'generalDebtBalance',
label: '一般债余额(亿元)',
},
{
prop: 'rjgdp',
prop: 'specialDebtBalance',
label: '专项债余额(亿元)',
},
{
prop: 'rjgdp',
prop: 'govDebtLimit',
label: '地方政府债务限额(亿元)',
},
{
prop: 'rjgdp',
prop: 'uipInterestBearingDebt',
label: '城投平台有息债务(亿元)',
},
{
prop: 'rjgdp',
prop: 'fiscalSelfSufficiencyRate',
label: '财政自给率',
},
{
prop: 'rjgdp',
prop: 'govDebtToGdpRate',
label: '负债率',
},
{
prop: 'rjgdp',
prop: 'govDebtToGdpRateWild',
label: '负债率-宽口径',
},
{
prop: 'rjgdp',
prop: 'govDebtRate',
label: '债务率',
},
{
prop: 'rjgdp',
prop: 'govDebtRateWild',
label: '债务率-宽口径',
},
],
props: {
value: 'id',
checkStrictly: true
},
addressList: [],
value1:'',
......@@ -303,10 +288,20 @@ export default {
addressValue3:'',
addressValue4:'',
addressValue5:'',
value1Flag:false,
value2Flag:false,
value3Flag:false,
value4Flag:false,
value5Flag:false,
}
},
created() {
this.dataRegion()
this.dataRegion();
// this.getData();
getYears({}).then(res => {
this.yearOptions=res.data.reverse();
this.queryParams.year = this.yearOptions[0].year;
})
},
computed: {
getHeaders() {
......@@ -319,6 +314,12 @@ export default {
}
},
methods: {
getData(params){
nationalPage(params).then(res => {
console.log(res.data)
// this.tableData = res.data.list
})
},
//地区
async dataRegion() {
// await axios.post("https://files.jiansheku.com/file/json/common/dataRegion.json", {}, {
......@@ -372,6 +373,28 @@ export default {
}
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) {
let arr = '';
switch (index) {
......@@ -411,31 +434,51 @@ export default {
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){
switch (index) {
case 1:
this.addressValue1='';
this.value1='';
break;
case 2:
this.addressValue2='';
this.value2='';
break;
case 3:
this.addressValue3='';
this.value3='';
break;
case 4:
this.addressValue4='';
this.value4='';
break;
case 5:
this.addressValue5='';
this.value5='';
break;
}
}
},
}
}
</script>
......
......@@ -6,7 +6,7 @@
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item prop="year">
<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-form-item>
</el-form>
......@@ -48,19 +48,19 @@
<script>
import * as echarts from 'echarts';
import { nationalPage,getYears } from '@/api/macro/macro'
export default {
name: 'industrialStructure',
props:{
dataQuery:{}
},
data() {
return {
queryParams: {
year: '',
address: ''
},
yearOptions: [
{ name: '2023年', value: '2023' },
{ name: '2022年', value: '2022' },
{ name: '2021年', value: '2021' },
],
yearOptions: [],
tableData:[
{
type:'房建工程',
......@@ -104,6 +104,10 @@ export default {
}
},
created() {
getYears({}).then(res => {
this.yearOptions=res.data.reverse();
this.queryParams.year = this.yearOptions[0].year;
})
this.$nextTick(()=>{
this.initChart()
})
......
......@@ -6,8 +6,8 @@
<span class="common-title">经济数据</span>
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item prop="year">
<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-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.year" :value="item.year" />
</el-select>
</el-form-item>
</el-form>
......@@ -22,49 +22,46 @@
:data="tableData"
border
highlight-current-row
@sort-change="sortChange"
>
<el-table-column prop="area" label="下辖区" width="100" />
<el-table-column prop="tz" label="GDP(亿元)" sortable width="120" />
<el-table-column prop="tz" label="GDP增速" sortable width="100" />
<el-table-column prop="tz" label="人均GDP(元)" sortable width="130" />
<el-table-column prop="tz" label="人口(万人)" sortable width="120" />
<el-table-column prop="tz" label="固定资产投资 (亿元) " sortable width="170" />
<el-table-column prop="tz" label="一般公共预算收入(亿元)" sortable width="160" />
<el-table-column prop="tz" label="一般公共预算支持(亿 元)" sortable width="160" />
<el-table-column prop="tz" label="政府性基金收入(亿元)" sortable width="160" />
<el-table-column prop="zxzzj" label="地方政府债务余额(亿元)" sortable width="160" />
<el-table-column prop="zxzzj" label="城投平台有息债务(亿元)" sortable width="160" />
<el-table-column prop="zxzzj" label="财政自给率" sortable width="120"/>
<el-table-column prop="zxzzj" label="债务率-宽口径" sortable width="130"/>
<el-table-column prop="province" label="下辖区" width="100" :formatter="formatStatus"/>
<el-table-column prop="gdp" label="GDP(亿元)" sortable width="120" :formatter="formatStatus"/>
<el-table-column prop="gdpGrowth" label="GDP增速" sortable width="100" :formatter="formatStatus"/>
<el-table-column prop="gdpPerCapita" label="人均GDP(元)" sortable width="130" :formatter="formatStatus"/>
<el-table-column prop="population" label="人口(万人)" sortable width="120" :formatter="formatStatus"/>
<el-table-column prop="fixedInvestment" label="固定资产投资 (亿元) " sortable width="170" :formatter="formatStatus"/>
<el-table-column prop="gbr" label="一般公共预算收入(亿元)" sortable width="180" :formatter="formatStatus"/>
<el-table-column prop="gbe" label="一般公共预算支出(亿 元)" sortable width="190" :formatter="formatStatus"/>
<el-table-column prop="govFundIncome" label="政府性基金收入(亿元)" sortable width="180" :formatter="formatStatus"/>
<el-table-column prop="govDebtBalance" label="地方政府债务余额(亿元)" sortable width="180" :formatter="formatStatus"/>
<el-table-column prop="uipInterestBearingDebt" label="城投平台有息债务(亿元)" sortable width="180" :formatter="formatStatus"/>
<el-table-column prop="fiscalSelfSufficiencyRate" label="财政自给率" sortable width="120":formatter="formatStatus"/>
<el-table-column prop="govDebtRateWild" label="债务率-宽口径" sortable width="130" :formatter="formatStatus"/>
</el-table>
</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>
</template>
<script>
import { nationalPage,getYears } from '@/api/macro/macro'
export default {
name: 'localEconomy',
props:{
dataQuery:{}
},
data() {
return {
queryParams: {
year: '',
address: ''
},
yearOptions: [
{ name: '2023年', value: '2023' },
{ name: '2022年', value: '2022' },
{ name: '2021年', value: '2021' },
],
tableData:[
{
dataId:'1',
area:'重庆',
tz:'100',
zxzzj:'200'
}
],
yearOptions: [],
tableData:[],
tableLoading: false,
pageIndex: 1,
pageSize: 10,
......@@ -72,11 +69,52 @@ export default {
}
},
created() {
this.getData();
getYears({}).then(res => {
this.yearOptions=res.data.reverse();
})
},
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>
......
......@@ -60,11 +60,13 @@
:data="getValues"
:show-header="false"
border
:cell-style="rowStyle"
>
<el-table-column
v-for="(item, index) in getHeaders"
:key="index"
:prop="item"
:formatter="formatStatus"
>
</el-table-column>
</el-table>
......@@ -75,46 +77,19 @@
<script>
import * as echarts from 'echarts';
import { regional,regionalList } from '@/api/macro/macro'
export default {
name: 'regionalEconomy',
props:{
dataQuery:{}
},
data() {
return {
activeName: 'first',
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',
},
],
tableData: [],
headers: [
{
prop: 'zb',
prop: 'year',
label: '指标',
},
{
......@@ -126,143 +101,143 @@ export default {
label: 'GDP(亿元)',
},
{
prop: 'gdpzs',
prop: 'gdpAddValue',
label: 'GDP增速',
},
{
prop: 'rjgdp',
prop: 'gdpPerCapita',
label: '人均GDP(元)',
},
{
prop: 'rjgdp',
prop: 'piAddValue',
label: '第一产业增加值(亿元)',
},
{
prop: 'rjgdp',
prop: 'siAddValue',
label: '第二产业增加值(亿元)',
},
{
prop: 'rjgdp',
prop: 'tiAddValue',
label: '第三产业增加值(亿元)',
},
{
prop: 'rjgdp',
prop: 'population',
label: '人口(万人)',
},
{
prop: 'rjgdp',
prop: 'industryAddValue',
label: '工业增加值(亿元)',
},
{
prop: 'rjgdp',
prop: 'industryTotalValue',
label: '工业总产值(亿元)',
},
{
prop: 'rjgdp',
prop: 'realEstateInvestment',
label: '房地产开发投资(亿元)',
},
{
prop: 'rjgdp',
prop: 'eximTotalValue',
label: '进出口总额(亿美元)',
},
{
prop: 'rjgdp',
prop: 'trscg',
label: '社会消费品零售总额(亿元)',
},
{
prop: 'rjgdp',
prop: 'urbanPcdi',
label: '城镇居民人均可支配收入(元)',
},
{
prop: 'cz',
prop: 'name',
label: '财政',
},
{
prop: 'rjgdp',
prop: 'gbr',
label: '一般公共预算收入(亿元)',
},
{
prop: 'rjgdp',
prop: 'gbrGrowth',
label: '般公共预算收入增速',
},
{
prop: 'rjgdp',
prop: 'taxIncome',
label: '税收收入(亿元)',
},
{
prop: 'rjgdp',
prop: 'transferIncome',
label: '转移性收入(亿元)',
},
{
prop: 'rjgdp',
prop: 'superiorSubsidyIncome',
label: '上级补助收入(亿元)',
},
{
prop: 'rjgdp',
prop: 'gbe',
label: '一般公共预算支出(亿元)',
},
{
prop: 'rjgdp',
prop: 'govFundIncome',
label: '政府性基金收入(亿元)',
},
{
prop: 'rjgdp',
prop: 'landTransferIncome',
label: '土地出让收入(亿元)',
},
{
prop: 'rjgdp',
prop: 'govFundExpenditure',
label: '政府性基金支出(亿元)',
},
{
prop: 'rjgdp',
prop: 'soecoi',
label: '国有资本经营收入(亿元)',
},
{
prop: 'rjgdp',
prop: 'soecoe',
label: '国有资本经营支出(亿元)',
},
{
prop: 'zw',
prop: 'name',
label: '债务',
},
{
prop: 'rjgdp',
prop: 'govDebtBalance',
label: '地方政府债务余额(亿元)',
},
{
prop: 'rjgdp',
prop: 'generalDebtBalance',
label: '一般债余额(亿元)',
},
{
prop: 'rjgdp',
prop: 'specialDebtBalance',
label: '专项债余额(亿元)',
},
{
prop: 'rjgdp',
prop: 'govDebtLimit',
label: '地方政府债务限额(亿元)',
},
{
prop: 'rjgdp',
prop: 'uipInterestBearingDebt',
label: '城投平台有息债务(亿元)',
},
{
prop: 'rjgdp',
prop: 'fiscalSelfSufficiencyRate',
label: '财政自给率',
},
{
prop: 'rjgdp',
prop: 'govDebtToGdpRate',
label: '负债率',
},
{
prop: 'rjgdp',
prop: 'govDebtToGdpRateWild',
label: '负债率-宽口径',
},
{
prop: 'rjgdp',
prop: 'govDebtRate',
label: '债务率',
},
{
prop: 'rjgdp',
prop: 'govDebtRateWild',
label: '债务率-宽口径',
},
],
......@@ -275,6 +250,8 @@ export default {
}
},
created() {
console.log(this.dataQuery)
this.getData()
this.$nextTick(()=>{
this.initChart()
this.initChart1()
......@@ -294,6 +271,21 @@ export default {
}
},
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() {
let myChart = echarts.init(document.getElementById("echartsGDP"))
let option ={
......@@ -591,6 +583,22 @@ export default {
}
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>
......
......@@ -9,10 +9,10 @@
</el-tabs>
<div class="location"><i class="el-icon-location"></i>重庆市</div>
</div>
<RegionalEconomy v-if="activeName === 'first'"></RegionalEconomy>
<LocalEconomy v-if="activeName === 'second'"></LocalEconomy>
<IndustrialStructure v-if="activeName === 'third'"></IndustrialStructure>
<Comparison v-if="activeName === 'four'"></Comparison>
<RegionalEconomy v-if="activeName === 'first'" :dataQuery="dataQuery"></RegionalEconomy>
<LocalEconomy v-if="activeName === 'second'" :dataQuery="dataQuery"></LocalEconomy>
<IndustrialStructure v-if="activeName === 'third'" :dataQuery="dataQuery"></IndustrialStructure>
<Comparison v-if="activeName === 'four'" :dataQuery="dataQuery"></Comparison>
</div>
</template>
......@@ -31,10 +31,12 @@ export default {
},
data() {
return {
activeName: 'first'
activeName: 'third',
dataQuery:{}
}
},
created() {
this.dataQuery=this.$route.query
// let name = sessionStorage.getItem('currentTab')
// if (name != "undefined" && name){
// this.activeName = name;
......
......@@ -6,39 +6,18 @@
size="50%"
>
<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">
<el-table
:data="getValues"
:show-header="false"
border
:cell-style="rowStyle"
>
<el-table-column
v-for="(item, index) in getHeaders"
:key="index"
:prop="item"
:formatter="formatStatus"
>
</el-table-column>
</el-table>
......@@ -48,6 +27,7 @@
</template>
<script>
import { getNationalDetails } from '@/api/macro/macro'
export default {
name: '',
components: {
......@@ -57,29 +37,10 @@ export default {
data() {
return {
dialogVisible: false,
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',
},
],
tableData: [],
headers: [
{
prop: 'zb',
prop: 'year',
label: '指标',
},
{
......@@ -91,13 +52,173 @@ export default {
label: 'GDP(亿元)',
},
{
prop: 'gdpzs',
prop: 'gdpGrowth',
label: 'GDP增速',
},
{
prop: 'rjgdp',
prop: 'gdpPerCapita',
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 {
},
// 获取明细
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 @@
<span class="common-title">全国经济大全</span>
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item prop="year">
<el-select v-model="queryParams.year" filterable multiple collapse-tags class="form-content-width" placeholder="请选择年度" @change="querySubmit">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.name" :value="item.value" />
<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.year" :value="item.year" />
</el-select>
</el-form-item>
<el-form-item prop="area">
......@@ -24,7 +24,7 @@
</el-form>
</div>
<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>
</div>
</div>
......@@ -33,6 +33,7 @@
v-loading="tableLoading"
:data="tableData"
element-loading-text="Loading"
@sort-change="sortChange"
border
fit
highlight-current-row
......@@ -42,37 +43,34 @@
</el-table-column>
<el-table-column label="地区" min-width="70" align="left" fixed>
<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>
</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">
<img src="@/assets/images/icon_detailed.png" class="icon-detailed" @click="handleDetail(scope.row)">
</template>
</el-table-column>
<el-table-column label="GDP(元)" prop="dataId" sortable min-width="115" align="right" />
<el-table-column label="GDP增速" prop="cgrdm" sortable min-width="100" align="right" />
<el-table-column label="人均GDP(元)" prop="cgrssqy" sortable width="125" align="right" />
<el-table-column label="人口(万人)" prop="cgrssqy" sortable width="120" align="right" />
<el-table-column label="一般公共预算收入 (亿元)" prop="cgrzyhy" sortable width="170" align="right" />
<el-table-column label="一般公共预算收入增速(%)" prop="cgzzxs" sortable min-width="140" align="right" />
<el-table-column label="一般公共预算支出(亿元)" prop="cgfs" sortable width="140" align="left" />
<el-table-column label="政府性基金收入(亿元)" width="140" sortable align="left">
<template slot-scope="scope">
<router-link to="/purchaserDetail" target="_blank" tag="a" class="a-link">{{ scope.row.zbwj }}</router-link>
</template>
</el-table-column>
<el-table-column label="政府性基金收入:土地出让收入(亿元)" prop="cgfs" sortable width="150" align="left" />
<el-table-column label="政府性基金支出(亿元)" prop="cgfs" width="170" sortable 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="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="GDP(元)" prop="gdp" :formatter="formatStatus" sortable="custom" min-width="115" align="right"></el-table-column>
<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="gdpPerCapita" :formatter="formatStatus" sortable="custom" width="125" align="right"></el-table-column>
<el-table-column label="人口(万人)" prop="population" :formatter="formatStatus" sortable="custom" width="120" align="right"></el-table-column>
<el-table-column label="一般公共预算收入 (亿元)" prop="gbr" sortable="custom" width="170" align="right"></el-table-column>
<el-table-column label="一般公共预算收入增速(%)" prop="gbrGrowth" :formatter="formatStatus" sortable="custom" min-width="140" align="right"></el-table-column>
<el-table-column label="一般公共预算收入:税收收入" prop="taxIncome" :formatter="formatStatus" sortable="custom" min-width="140" align="right"></el-table-column>
<el-table-column label="一般公共预算支出(亿元)" prop="gbe" :formatter="formatStatus" sortable="custom" width="140" align="left"></el-table-column>
<el-table-column label="政府性基金收入(亿元)" width="140" prop="govFundIncome" :formatter="formatStatus" sortable="custom" align="left"></el-table-column>
<el-table-column label="政府性基金收入:土地出让收入(亿元)" prop="landTransferIncome" sortable="custom" width="150" align="left"></el-table-column>
<el-table-column label="政府性基金支出(亿元)" prop="govFundExpenditure" :formatter="formatStatus" width="170" sortable="custom" align="left"></el-table-column>
<el-table-column label="国有资产经营收入(亿元)" prop="soecoi" width="160" :formatter="formatStatus" align="left"></el-table-column>
<el-table-column label="国有资产经营支出(亿元)" prop="soecoe" width="160" :formatter="formatStatus" align="left"></el-table-column>
<el-table-column label="固定资产投资(亿元)" prop="fixedInvestment" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="财政自给率(%)" prop="fiscalSelfSufficiencyRate" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="地方政府债务余额(亿元)" prop="govDebtBalance" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="一般债余额(亿元)" prop="generalDebtBalance" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="专项债余额(亿元)" prop="specialDebtBalance" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="地方政府债务限额(亿元)" prop="govDebtLimit" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="城投平台有息债务(亿元)" prop="uipInterestBearingDebt" :formatter="formatStatus" width="160" align="left" >
<template slot="header" slot-scope="scope">
<span>城投平台有息债务(亿元)
<el-tooltip popper-class="tips" effect="light" content="城投平台有息债务是该地区行政区划下所有的城投公司的短期债务与长期债务合计。其中,短期债务=短期借款+一年内到期的非流动负债+应付短期债券,长期债务=长期借款+应付长期债券。" placement="top">
......@@ -81,22 +79,25 @@
</span>
</template>
</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="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="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="govDebtToGdpRate" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="负债率(宽口径)(%)" prop="govDebtToGdpRateWild" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="债务率(%)" prop="govDebtRate" :formatter="formatStatus" width="160" align="left"></el-table-column>
<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="piAddValue" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="第二产业增加值(亿元)" prop="siAddValue" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="第三产业增加值(亿元)" prop="tiAddValue" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="工业增加值(亿元)" prop="industryAddValue" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="工业总产值(亿元)" prop="industryTotalValue" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="进出口总额(亿美元)" prop="eximTotalValue" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="社会消费品零售总额(亿元)" prop="trscg" :formatter="formatStatus" width="160" align="left"></el-table-column>
<el-table-column label="城镇居民人均可支配收入(元)" prop="urbanPcdi" :formatter="formatStatus" width="160" align="left"></el-table-column>
</el-table>
</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">
<el-pagination background :current-page="pageIndex" :page-size="pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div>
......@@ -106,7 +107,7 @@
</template>
<script>
import { browsedIndexPage } from '@/api/nationalEconomies'
import { nationalPage,getYears } from '@/api/macro/macro'
import dataRegion from '@/assets/json/dataRegion'
import economiesDetail from './economies-detail'
import axios from 'axios'
......@@ -118,26 +119,16 @@
data() {
return {
queryParams: {
year: '',
year:'',
address: ''
},
yearOptions: [
{ name: '2023年', value: '2023' },
{ name: '2022年', value: '2022' },
{ name: '2021年', value: '2021' },
],
yearOptions: [],
props: {
value: 'id',
multiple: true,
},
addressList: [],
tableData: [
{
dataId:'1',
cgrssqy:'100',
cgfs:'200'
}
],
tableData: [],
tableLoading: false,
pageIndex: 1,
pageSize: 10,
......@@ -147,8 +138,14 @@
created() {
this.querySubmit()
this.dataRegion()
this.getYears()
},
methods: {
getYears(){
getYears({}).then(res => {
this.yearOptions=res.data.reverse();
})
},
//地区
async dataRegion() {
// await axios.post("https://files.jiansheku.com/file/json/common/dataRegion.json", {}, {
......@@ -205,8 +202,7 @@
// 查询提交
async querySubmit() {
// 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){
let arr = this.$refs.address.getCheckedNodes();
let provinceCode = [],cityCode = [],countyCode = [];
......@@ -221,25 +217,31 @@
}
}
if(provinceCode.length > 0){
params.procinceId=provinceCode.join(',')
params.provinceIds=provinceCode
}
if(cityCode.length > 0){
params.cityId=cityCode.join(',')
params.cityIds=cityCode
}
if(countyCode.length > 0){
params.districtId=countyCode.join(',')
params.areaIds=countyCode
}
}
console.log(params)
// browsedIndexPage(params).then(res => {
// this.tableData = res.data.list
// this.tableDataTotal = res.data.totalCount
// })
// // 延迟关闭加载效果
// setTimeout(() => {
// this.tableLoading = false
// }, 200)
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
})
// 延迟关闭加载效果
setTimeout(() => {
this.tableLoading = false
}, 200)
},
// 明细
handleDetail(row) {
......@@ -256,6 +258,22 @@
this.pageIndex = val
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>
......
......@@ -6,17 +6,55 @@
<span class="common-title">近五年全国招标数量</span>
</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 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 class="main2">
<div class="flex-box query-box head">
<span>近五年全国招标总数<span class="number">10,610,000 </span></span>
<!--<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-select>-->
<span>{{value}}全国招标总数<span class="number"> {{totalCount}} </span>万个</span>
<div class="select-popper" style="position: relative;">
<el-dropdown
@command="handleDate"
trigger="click"
ref="punishDateShowPopper"
:hide-on-click="false"
>
<span class="el-dropdown-link" :class="punishDateValue ? 'color_text' : ''">{{punishDateValue}}<i class="el-icon-caret-bottom"></i></span>
<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 class="table-item">
<el-table
......@@ -29,9 +67,9 @@
<el-table-column label="序号" width="50" align="left">
<template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column>
<el-table-column prop="area" label="地区"/>
<el-table-column prop="number" sortable label="招标数量"/>
<el-table-column prop="zb" sortable label="占比"/>
<el-table-column prop="type" label="地区"/>
<el-table-column prop="count" sortable label="招标数量"/>
<el-table-column prop="rate" sortable label="占比"/>
</el-table>
</div>
</div>
......@@ -42,11 +80,17 @@
<span class="common-title">全国招标项目概览</span>
</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 id="gl-echarts" style="height: 250px"></div>
<p class="tips"><i class="el-icon-info"></i>数据来源大司空建筑大数据平台,统计范围为近五年全国公开的招标项目,未公开的不含在内</p>
</div>
<div class="main2">
<div class="selectYear">
<el-select v-model="year" filterable class="form-content-width" placeholder="请选择" @change="changeValue()">
<el-option v-for="(item, index) in yearData" :key="index" :label="item" :value="item" />
</el-select>
</div>
<div class="table-item">
<el-table
:data="tableData1"
......@@ -58,26 +102,28 @@
<el-table-column label="序号" width="50" align="left">
<template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column>
<el-table-column prop="area" label="月份"/>
<el-table-column prop="number" sortable label="招标数量"/>
<el-table-column prop="zb" sortable label="占比"/>
<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>
</template>
<script>
import * as echarts from 'echarts';
import { countGroupByMonth,countGroupByProvince,getYear } from '@/api/macro/macro'
export default {
name: 'NationalEconomies',
data() {
return {
year:'',
yearOptions: [
{ name: '2023年', value: '2023' },
{ name: '2022年', value: '2022' },
{ name: '2021年', value: '2021' },
{ label: '近五年', value: '近五年' },
{ label: '近三年', value: '近三年' },
{ label: '近一年', value: '近一年' },
],
zbData:['广东','江苏','山东','浙江','河南','安徽','河北','四川','湖北','江西','甘肃','重庆','福建','云南','北京','湖南','山西'],
zbData1:[123,156,236,426,412,231,96,105,210,420,213,86,120,230,150,132,196],
......@@ -138,79 +184,57 @@ export default {
zb:'0.34%'
},
],
glData:['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'],
glData1:[503,156,132,186,203,143,189,301,211,195,132,176],
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月',
number:'420',
zb:'0.34%'
},
tableData1:[],
dataSort:[
{
area:'11月',
number:'213',
zb:'0.34%'
label:'',
count:''
},
{
area:'12月',
number:'213',
zb:'0.34%'
label:'',
count:''
},
],
totalCount:'',
punishDateValue: "请选择",
value:'近五年',
punishDateShowPopper: false,
punishDate: "",
yearData:[]
}
},
created() {
let params={}
this.getDataByProvince(params)
this.getDataByMonth(params)
this.$nextTick(()=>{
// this.initChart()
// this.initChart1()
})
getYear().then(res => {
this.yearData=res.rows;
})
},
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()
})
},
methods: {
initChart() {
let myChart = echarts.init(document.getElementById("zb-echarts"))
let option = {
......@@ -223,27 +247,33 @@ export default {
grid: {
left: '5',
right: '5',
top: '10',
top: '15',
bottom: '10',
containLabel: true
},
xAxis: {
type: 'category',
data: this.zbData
data: this.tableData.map(item => item.type),
axisLabel: {
show: true,
// "interval": 0,
"rotate": 40 //X轴倾斜度
},
},
yAxis: {
type: 'value'
type: 'value',
},
series: [
{
data: this.zbData1,
data: this.tableData.map(item => item.count),
type: 'bar',
barWidth: 16,
itemStyle: {
normal: {
barBorderRadius: [4, 4, 0, 0],
color: '#165DFF',
label: {
show: true, //开启显示
show: false, //开启显示
position: 'top', //在上方显示
textStyle: { //数值样式
color: '#165DFF',
......@@ -263,7 +293,7 @@ export default {
},
initChart1() {
let myChart = echarts.init(document.getElementById("gl-echarts"))
let dataList=this.glData1;
let dataList=this.tableData1;
let option = {
tooltip: {
trigger: 'axis', //坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用
......@@ -280,20 +310,14 @@ export default {
},
xAxis: {
type: 'category',
data: this.glData
data: this.tableData1.map(item => item.label),
},
yAxis: {
type: 'value'
},
series: [
{
data: this.glData1,
// markPoint:{
// data:[
// {type:'max',name:'最大值'},
// {type:'min',name:'最小值'},
// ]
// },
data: this.tableData1.map(item => item.count),
type: 'bar',
barWidth: 20,
itemStyle: {
......@@ -306,15 +330,15 @@ export default {
//定义一个变量 保存柱形图数据 因为sort方法排序会改变原数组 使用JSON方法深拷贝 将原数值暂存
let companyValue1 = JSON.parse(JSON.stringify(dataList))
let arr = dataList.sort((a, b) => {
return b - a
return b.count - a.count
})
//将原数组数据赋值回去 保持数据不变
dataList = JSON.parse(JSON.stringify(companyValue1))
//遍历数据 将原数组和排序后的数组比较
dataList.map(i => {
if (i == arr[0]) {
if (i.count == arr[0].count) {
colorList.push('#F39F35')
} else if (i == arr[1]) {
} else if (i.count == arr[1].count) {
colorList.push('#6675A5')
}else{
colorList.push('#2ECFCF')
......@@ -322,7 +346,7 @@ export default {
})
//返回一个存储着颜色的数组根据数据index顺序渲染到页面
return colorList[params.dataIndex]
}
},
},
}
}
......@@ -330,11 +354,97 @@ export default {
};
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>
<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{
.zb-content{
background: #ffffff;
......@@ -385,6 +495,20 @@ export default {
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{
......@@ -392,7 +516,24 @@ export default {
}
}
.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;
}
}
......
......@@ -10,7 +10,7 @@
<div class="main1">
<div style="height: 300px;">
<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 class="right">
<div id="gl-echarts" style="height: 260px;background: #ffffff;"></div>
......@@ -19,12 +19,12 @@
<p class="tips"><i class="el-icon-info"></i>数据来源大司空建筑大数据平台,统计范围为有效期内资质,未公开不包含在内</p>
</div>
<div class="main2">
<div class="flex-box query-box head">
<span>近五年全国招标总数<span class="number">10,610,000 </span></span>
<!--<div class="flex-box query-box head">-->
<!--<span>近五年全国招标总数<span class="number">10,610,000 </span></span>-->
<!--<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-select>-->
</div>
<!--</div>-->
<div class="table-item">
<el-table
:data="zzTableData"
......@@ -35,22 +35,23 @@
<el-table-column label="序号" width="50" align="left">
<template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column>
<el-table-column prop="name" label="资质类型"/>
<el-table-column prop="major" label="资质类型"/>
<el-table-column label="特级" align="center">
<el-table-column prop="number" label="数量(个)"/>
<el-table-column prop="zb" label="占比(%)"/>
<el-table-column prop="tjCount" label="数量(个)"/>
<el-table-column prop="tjRate" label="占比(%)"/>
</el-table-column>
<el-table-column label="一级" align="center">
<el-table-column prop="number" label="数量(个)"/>
<el-table-column prop="zb" label="占比(%)"/>
<el-table-column prop="oneCount" label="数量(个)"/>
<el-table-column prop="oneRate" label="占比(%)"/>
</el-table-column>
<el-table-column label="二级">
<el-table-column prop="number" label="数量(个)"/>
<el-table-column prop="zb" label="占比(%)"/>
<el-table-column prop="twoCount" label="数量(个)"/>
<el-table-column prop="twoRate" label="占比(%)"/>
</el-table-column>
<el-table-column label="三级">
<el-table-column prop="number" label="数量(个)"/>
<el-table-column prop="zb" label="占比(%)"/>
<el-table-column prop="threeCount" label="数量(个)"/>
<el-table-column prop="threeRate" label="占比(%)"/>
</el-table-column>
</el-table>
</div>
......@@ -64,14 +65,14 @@
</div>
<div class="main1">
<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 id="jzqy-echarts" style="height: 250px"></div>
<p class="tips"><i class="el-icon-info"></i>数据来源大司空建筑大数据平台,统计范围为有效期内资质,未公开不包含在内</p>
</div>
<div class="table-item">
<el-table
:data="tableData"
:data="jzdqData"
border
height="470"
fit
......@@ -80,22 +81,22 @@
<el-table-column label="序号" width="50" align="left">
<template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column>
<el-table-column prop="area" label="地区"/>
<el-table-column prop="province" label="地区"/>
<el-table-column label="特级" align="center">
<el-table-column prop="number" label="数量(个)"/>
<el-table-column prop="zb" label="占比(%)"/>
<el-table-column prop="tjCount" label="数量(个)"/>
<el-table-column prop="tjRate" label="占比(%)"/>
</el-table-column>
<el-table-column label="一级" align="center">
<el-table-column prop="number" label="数量(个)"/>
<el-table-column prop="zb" label="占比(%)"/>
<el-table-column prop="oneCount" label="数量(个)"/>
<el-table-column prop="oneRate" label="占比(%)"/>
</el-table-column>
<el-table-column label="二级">
<el-table-column prop="number" label="数量(个)"/>
<el-table-column prop="zb" label="占比(%)"/>
<el-table-column prop="twoCount" label="数量(个)"/>
<el-table-column prop="twoRate" label="占比(%)"/>
</el-table-column>
<el-table-column label="三级">
<el-table-column prop="number" label="数量(个)"/>
<el-table-column prop="zb" label="占比(%)"/>
<el-table-column prop="threeCount" label="数量(个)"/>
<el-table-column prop="threeRate" label="占比(%)"/>
</el-table-column>
</el-table>
</div>
......@@ -113,7 +114,7 @@
</div>
<div class="table-item">
<el-table
:data="tableData"
:data="zbData"
border
height="430"
fit
......@@ -122,9 +123,9 @@
<el-table-column label="序号" width="50" align="left">
<template slot-scope="scope">{{ scope.$index + 1 }}</template>
</el-table-column>
<el-table-column prop="area" label="地区"/>
<el-table-column prop="number" label="企业异地备案数量(个)"/>
<el-table-column prop="zb" label="占比"/>
<el-table-column prop="province" label="地区"/>
<el-table-column prop="count" label="企业异地备案数量(个)"/>
<!--<el-table-column prop="zb" label="占比"/>-->
</el-table>
</div>
</div>
......@@ -133,19 +134,12 @@
<script>
import * as echarts from 'echarts';
import { certGroupByMajorAndLevel,certGroupByMajorProvinceLevel,areaGroupByProvince } from '@/api/macro/macro'
export default {
name: 'NationalEconomies',
data() {
return {
year:'',
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:[
tableData:[
{
area:'1月',
number:'123',
......@@ -208,127 +202,175 @@ export default {
},
],
typeList:['建筑工程企业','市政工程企业','公路工程企业','水利水电工程企业'],
typeIndex:0,
jzglData:['特级','一级','二级','三级'],
jzglData1:[103,156,132,186],
zzTableData:[
glData:[],
jzglData:[],
zzTableData:[],
tableOption:[
{
name:'建筑工程施工总承包',
number:'123',
zb:'0.19%'
label:'资质类型',
prop:'major'
},
{
name:'市政工程施工总承包',
number:'123',
zb:'0.19%'
},
label: '特级',
prop: 'levelValue',
child:[
{
name:'公路工程施工总承包',
number:'123',
zb:'0.19%'
label: '数量(个)',
prop: 'count'
},
{
name:'水利水电工程施工总承包',
number:'123',
zb:'0.19%'
label: '占比(%)',
prop: 'rate'
},
],
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%'
},
label: '一级',
prop: 'levelValue',
child:[
{
area:'山东',
number:'236',
zb:'0.34%'
label: '数量(个)',
prop: 'count'
},
{
area:'浙江',
number:'426',
zb:'0.34%'
label: '占比(%)',
prop: 'rate'
},
{
area:'河南',
number:'412',
zb:'0.34%'
]
},
{
area:'安徽',
number:'231',
zb:'0.34%'
},
label: '二级',
prop: 'levelValue',
child:[
{
area:'河北',
number:'96',
zb:'0.34%'
label: '数量(个)',
prop: 'count'
},
{
area:'四川',
number:'105',
zb:'0.34%'
label: '占比(%)',
prop: 'rate'
},
{
area:'湖北',
number:'210',
zb:'0.34%'
]
},
{
area:'江西',
number:'420',
zb:'0.34%'
label: '三级',
prop: 'levelValue',
child:[
{
label: '数量(个)',
prop: 'count'
},
{
area:'甘肃',
number:'213',
zb:'0.34%'
label: '占比(%)',
prop: 'rate'
},
]
},
],
dqData:[],
qydqIndex:0,
zbData:[],
jzdqData:[]
}
},
created() {
this.$nextTick(()=>{
this.getData()
},
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()
})
},
methods: {
initChart() {
let myChart = echarts.init(document.getElementById("gl-echarts"))
let option ={
tooltip: {
show:false
// show:false
},
xAxis: {
type: 'category',
boundaryGap: false,
data: this.jzglData,
data: this.jzglData.map(item => item.levelValue),
},
yAxis: {
type: 'value',
},
grid: {
top:40,
left:50,
left:70,
right:40,
bottom:40,
},
series: [
{
data: this.jzglData1,
data: this.jzglData.map(item => item.count),
type: 'line',
smooth: true,
emphasis: {
......@@ -363,77 +405,192 @@ export default {
},
initChart1() {
let myChart = echarts.init(document.getElementById("jzqy-echarts"))
let option = {
let option ={
legend: {
x:'right',
padding:[0,120,0,0],
},
tooltip: {
trigger: 'axis', //坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用
axisPointer: {// 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
trigger: 'axis',
axisPointer: {
type: 'line',
label: {
backgroundColor: '#FFFFFF'
}
}
},
grid: {
left: '5',
right: '5',
top: '20',
bottom: '10',
containLabel: true
},
xAxis: {
type: 'category',
data: this.zbData
boundaryGap: false,
data: this.jzdqData.map(item => item.province),
},
yAxis: {
type: 'value'
type: 'value',
},
grid: {
top:35,
left:60,
right:30,
bottom:20,
},
series: [
{
data: this.zbData1,
type: 'bar',
itemStyle: {
normal: {
barBorderRadius: [4, 4, 0, 0],
color: '#165DFF',
label: {
show: true, //开启显示
position: 'top', //在上方显示
textStyle: { //数值样式
color: '#165DFF',
fontSize: 16
}
}
data: this.jzdqData.map(item => item.tjCount),
name:'特级',
type: 'line',
smooth: true,
emphasis: {
disabled: true,
focus: 'none'
},
//设置折线颜色和粗细
lineStyle: {
width: 2,
color: "#0081FF",
},
itemStyle:{
color: "#4E8EFF",
},
// 移入当前的柱状图时改变颜色
//设置面积区域为渐变效果
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: {
color: '#3384FF',
}
}
}
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);
},
initChart2() {
let myChart = echarts.init(document.getElementById("ba-echarts"))
let option ={
tooltip: {
show:false
// show:false
},
legend:{},
xAxis: {
type: 'category',
boundaryGap: false,
data: this.zbData,
data: this.zbData.map(item => item.province),
},
yAxis: {
type: 'value',
},
grid: {
top:20,
left:30,
right:20,
left:65,
right:30,
bottom:20,
},
series: [
{
data: this.zbData1,
data: this.zbData.map(item => item.count),
type: 'line',
smooth: true,
emphasis: {
......@@ -469,11 +626,42 @@ export default {
handleClick(type,index){
if(type === 1){
this.typeIndex=index;
this.jzglData=this.glData[index].levelList.reverse();
this.initChart()
}
if(type === 2){
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 {
// trigger: 'axis'
},
legend: {
right: '151px',
top:"0px",
left: '12px',
top:"15px",
data: ['成交金额', '储备项目', '跟进动态']
},
series: [
......@@ -513,12 +513,12 @@ export default {
}
}
.chart-bot{
height: 354px;
height: auto;
margin-bottom: 12px;
.left{
float: left;
width: 353px;
height: 100%;
height: 354px;
background: url("../../../assets/images/project/glbj.png")no-repeat top center;
background-size: 100% 100%;
color: #FFFFFF;
......@@ -569,11 +569,11 @@ export default {
}
.right{
float: right;
height: 100%;
height: auto;
width: calc(100% - 369px);
.records{
margin-top: -17px;
height: 327px;
height: 627px;
overflow-y: auto;
width: 100%;
padding-right: 47px;
......@@ -621,6 +621,7 @@ export default {
.chart2{
width: 100%;
padding: 0 0 0 16px;
height: 285px;
margin-top: -20px;
}
......
......@@ -34,7 +34,7 @@
<el-option v-for="(item,index) in projectCategory" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</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-form-item>
<el-form-item label="可见范围:" class="row">
......
......@@ -4,18 +4,16 @@
<el-card class="box-card noborder">
<div class="cardtitles">相关企业</div>
<div class="searchbtns">
<el-select class="select" placeholder="企业类型">
<el-select placeholder="请选择" v-model="searchParam.companyType">
<el-select class="select" placeholder="企业类型" v-model="searchParam.companyType" @change="handleCurrentChange(1)">
<el-option v-for="(item,index) in companytype" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</el-select>
<div class="searchInput">
<el-input type="text" placeholder="输入关键词查询" v-model="searchParam.companyName"></el-input>
<div class="btn" @click="handleCurrentChange(1)">搜索</div>
</div>
<div class="btn btn_primary h32 b3" @click="opennew"><div class="img img1"></div>添加相关企业</div>
</div>
<div class="document">
<div class="document tables">
<el-table
:data="tableData.rows"
style="width: 100%"
......@@ -59,14 +57,20 @@
width="">
<template slot-scope="scope">
<div class="hoverbtn">
<div class="sc" @click="delQY(scope.row.id)">删除</div>
<div class="sc" @click="ondel = scope.row.id">删除</div>
</div>
</template>
</el-table-column>
</el-table>
<div class="delform" v-if="ondel != -1">
<div class="words">是否将企业删除</div>
<div>
<div class="btnsmall btn_primary h28" @click="delQY()">确定</div>
<div class="btnsmall btn_cancel h28" @click="ondel = -1">取消</div>
</div>
</div>
<div class="tables" v-if="tableData.total > searchParam.pageSize">
<div class="bottems">
<div class="bottems" v-if="ondel != -1">
<el-pagination
background
:page-size="searchParam.pageSize"
......@@ -131,7 +135,7 @@
<script>
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'
export default {
name: 'xgqy',
......@@ -186,6 +190,7 @@
companyType:"",
companyName:'',
},
ondel:-1,
}
},
created(){
......@@ -198,10 +203,18 @@
getDictType('company_role').then(result=>{
this.companyrole = result.code == 200 ? result.data:[]
})
this.getlist()
},
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(){
addXGQY(this.queryParam).then(res=>{
......@@ -215,7 +228,8 @@
},
getlist(){
getXGQY(this.searchParam).then(result=>{
this.tableData = result.data
console.log(result)
this.tableData = result
})
},
//翻页
......@@ -274,4 +288,8 @@
.box-card{
position: relative;
}
.delform{
position: fixed; left:50%; top:50%; transform:translate(-50%,-50%)
}
</style>
......@@ -6,74 +6,76 @@
<div class="searchbtns">
<div class="searchInput">
<el-input type="text" placeholder="输入关键词查询"></el-input>
<div class="btn">搜索</div>
<div class="btn" @click="handleCurrentChange(1)">搜索</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 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>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="fileList">
:action="action"
:on-change="handleFileListChange"
:multiple="false"
ref="upload"
:file-list="fileList"
accept=".word,.pdf.excel,.xlsx"
:headers="headers"
:show-file-list="false"
:on-success="onSuccess">
<div class="wj wj1"></div>上传文件
</el-upload>
</div>
<div>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-remove="fileRemove"
:on-change="fileChang"
multiple
:limit="3"
:on-exceed="handleExceed"
:action="action"
:on-change="handleFileListChange"
:multiple="false"
:on-success="onSuccess1"
ref="uploadFile"
:headers="headers"
:show-file-list="false"
:file-list="fileList">
<div class="wj wj2"></div>上传文件夹
</el-upload>
</div>
</div>
<div class="document">
<div class="document tables">
<el-table
:data="tableData"
:data="fileDatas.rows"
style="width: 100%"
>
<template slot="empty">
<div class="empty">
<img src="@/assets/images/project/empty.png">
<div class="p1">暂无数据展示</div>
<div class="p2">抱歉,你还未添加相关数据,快去添加</div>
<div class="btn btn_primary h36 w102" @click="opennew">新增联系人</div>
<div class="p2">抱歉,你还未添加相关数据,快去上传</div>
<div class="btn btn_primary h36 w102" @click="getUP">上传文档</div>
</div>
</template>
<el-table-column
prop="date"
prop="name"
label="文件名称"
>
<template slot-scope="scope">
<div>
<img class="img" src="@/assets/images/folder.png">
<!--<img class="img" src="@/assets/images/word.png">-->
<!--<img class="img" src="@/assets/images/pdf.png">-->
<!--<img class="img" src="@/assets/images/excel_1.png">-->
<span>集团投标常用资料</span>
<div @click="getFile(scope.row)">
<img v-if="scope.row.type == 'file'" class="img" src="@/assets/images/folder.png">
<img v-if="scope.row.type == 'word'" class="img" src="@/assets/images/word.png">
<img v-if="scope.row.type == 'pdf'" class="img" src="@/assets/images/pdf.png">
<img v-if="scope.row.type == 'excel'" class="img" src="@/assets/images/excel_1.png">
<span>{{scope.row.name}}</span>
</div>
</template>
</el-table-column>
<!--<el-table-column-->
<!--prop="name"-->
<!--label="创建人"-->
<!--&gt;-->
<!--</el-table-column>-->
<el-table-column
prop="name"
label="创建人"
>
</el-table-column>
<el-table-column
prop="name"
prop="creatTime"
label="更新时间"
sortable
width="">
......@@ -85,121 +87,146 @@
width="">
<template slot-scope="scope">
<div class="hoverbtn">
<div class="xz">下载</div>
<div class="sc">删除</div>
<div class="xz" @click="downnlod(scope.row)">下载</div>
<div class="sc" @click="del(scope.row.filePath)">删除</div>
</div>
</template>
</el-table-column>
</el-table>
<div class="tables">
<div class="tables" v-if="fileDatas.total>param.pagesize">
<div class="bottems">
<el-pagination
background
:page-size="20"
:current-page="1"
:page-size="param.pagesize"
:current-page="param.pageNum"
@current-change="handleCurrentChange"
layout="prev, pager, next"
:total="1000">
:total="fileDatas.total">
</el-pagination>
</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>
</div>
</template>
<script>
import "@/assets/styles/project.scss"
import { getToken } from "@/utils/auth";
import { getZLWD ,delZLWD} from "@/api/project/project";
export default {
name: 'zlwd',
data(){
return{
isupload:false,
dialogVisible:false,
textarea:"",
nowedit:-1,//当前正在编辑的文本
tipslit:[],//项目标签
tipsvalue:"",//标签填写内容
tableData: [
{
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄'
}, {
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1517 弄'
}, {
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄'
}, {
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄'
}
],
fileList:[],//上传的文件
//上传
action:process.env.VUE_APP_BASE_API + '/business/file/upload',
fileList: [],
headers: {
Authorization: "Bearer " + getToken(),
filePath:this.$route.query.id,
},
param:{
pageNum:1,
pagesize:20,
filePath:this.$route.query.id,
},
fileDatas:[],
filename:'',
}
},
mounted(){
this.$refs.uploadFile.$children[0].$refs.input.webkitdirectory = true;
created(){
this.getList()
// console.log(this.$ref)
},
methods:{
//上传文件夹
fileChang(file, fileList, name) {
this.form.instFilePics = fileList;
getall(){
this.param.filePath = this.$route.query.id
this.filename=''
this.headers.filePath = this.$route.query.id
this.handleCurrentChange(1)
},
fileRemove(file, fileList, name) {
this.form.instFilePics = fileList
getList(){
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) {
console.log(`当前页: ${val}`);
this.param.pageNum(1)
this.getList()
},
cancel(){
this.dialogVisible = false
......@@ -213,6 +240,25 @@
</script>
<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{
width: 102px;
}
......
......@@ -197,16 +197,22 @@
this.thisindex = result.data.projectStage
let list = []
let txt = ''
if(result.data.provinceId){
if(result.data.provinceId != ""){
list.push(result.data.provinceId)
txt += result.data.provinceName
}
if(result.data.cityId){
list.push(result.data.cityId)
txt += '/'+result.data.cityName
}
if(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
}
this.address = list.length>0?list:"待添加"
......@@ -279,6 +285,14 @@
handleChange(value) {
var labelString = this.$refs.myCascader.getCheckedNodes()[0].pathLabels;
let param = {
provinceId:null,
provinceName:null,
cityId:null,
cityName:null,
districtId:null,
districtName:null,
}
let txt = ''
labelString.forEach((item,index)=>{
let str = ''
......@@ -286,13 +300,17 @@
str = '/'
}
txt += str + item
if(index == 0){
param.provinceName = item
}
if(index == 1){
param.cityName = item
}
if(index == 2){
param.districtName = item
}
})
this.addresstxt = txt
let param = {
provinceId:null,
cityId:null,
districtId:null
}
value.forEach((item,index)=>{
if(index == 0){
param.provinceId = parseInt(item)
......
......@@ -113,7 +113,7 @@
</div>
<div class="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-contets">
<div class="det-con">
......@@ -133,7 +133,7 @@
<span class="wordprimary">{{item.ownerCompany}}</span>
</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="i1"><img src="@/assets/images/follow.png">跟进</div>
<div class="i2"><img src="@/assets/images/edit.png">编辑</div>
......@@ -294,6 +294,7 @@ export default {
if(item.districtName != ""&& item.districtName != null)
str += '-' +item.districtName
item.address = str
item.nickName1 = item.nickName?item.nickName.slice(0,1):''
})
}
})
......
......@@ -7,7 +7,7 @@
<el-input class="ename_input"
placeholder="请输入项目名称关键字" v-model="ename" @input="enamebtn('ename',ename)"></el-input>
<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>
</span>
</template>
......
......@@ -23,5 +23,10 @@ public class BusinessIdDto {
/**
* 文件路径
*/
private String folderPath;
private String filePath;
/**
* 文件搜索关键字
*/
private String keyword;
}
......@@ -12,6 +12,11 @@ import java.util.List;
@Data
public class BusinessListDto {
/**
* 拜访方式
*/
private String visitWay;
/**
* 项目名称
*/
......@@ -23,7 +28,7 @@ public class BusinessListDto {
private Integer userId;
/**
* 企业id
* 部门id
*/
private Integer deptId;
......@@ -45,7 +50,7 @@ public class BusinessListDto {
/**
* 项目类型
*/
private String projectType;
private List<String> projectType;
/**
* 投资估算
......@@ -55,7 +60,7 @@ public class BusinessListDto {
/**
* 项目阶段
*/
private String projectStage;
private List<String> projectStage;
/**
* 最小金额
......
package com.dsk.system.domain.vo;
import com.dsk.common.annotation.Excel;
import com.dsk.common.core.domain.entity.BusinessRelateCompany;
import lombok.Data;
import java.util.List;
......@@ -20,7 +18,7 @@ public class BusinessBrowseVo {
private String projectName;
/**
* 项目名称
* 0 仅自己可见,1 他人可见
*/
private Integer isPrivate;
......
......@@ -63,4 +63,9 @@ public class BusinessListVo {
* 项目标签
*/
private String label;
/**
* 项目类型
*/
private String projectType;
}
......@@ -120,15 +120,11 @@ public class EnterpriseProjectService {
return BeanUtil.toBean(map, R.class);
}
// HashMap<String, Object> contentParam = new HashMap<>();
// contentParam.put("data_type", "bid_plan");
// contentParam.put("filter_type", 2);
// contentParam.put("strategy_id", contentId);
HashMap<String, Object> param = new HashMap<>();
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));
HashMap<String, Object> contentParam = new HashMap<>();
contentParam.put("data_type", "bid_plan");
contentParam.put("filter_type", 2);
contentParam.put("strategy_id", contentId);
Map<String, Object> contentMap = dskOpenApiUtil.requestBody("/mongocontent/v1/cjb/mongo_content", BeanUtil.beanToMap(contentParam, false, false));
Map contentData = MapUtils.getMap(contentMap, "data", null);
......
......@@ -2,6 +2,7 @@ package com.dsk.system.mapper;
import com.dsk.common.core.domain.entity.BusinessFollowRecord;
import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.BusinessListDto;
import java.util.List;
......@@ -68,4 +69,12 @@ public interface BusinessFollowRecordMapper
* @return 结果
*/
public int deleteBusinessFollowRecordByIds(Long[] ids);
/**
* 分页查询跟进动态
*
* @param dto
* @return
*/
List<BusinessFollowRecord> allFollow(BusinessListDto dto);
}
......@@ -2,6 +2,7 @@ package com.dsk.system.service;
import com.dsk.common.core.domain.entity.BusinessFollowRecord;
import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.BusinessListDto;
import java.util.List;
......@@ -29,6 +30,14 @@ public interface IBusinessFollowRecordService
*/
public List<BusinessFollowRecord> selectBusinessFollowRecordList(BusinessIdDto businessId);
/**
* 分页查询跟进动态
*
* @param dto
* @return
*/
List<BusinessFollowRecord> allFollow(BusinessListDto dto);
/**
* 分页查询项目跟进记录列表
*
......
package com.dsk.system.service.impl;
import java.util.List;
import com.dsk.common.core.domain.entity.BusinessFollowRecord;
import com.dsk.common.utils.DateUtils;
import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.BusinessListDto;
import com.dsk.system.mapper.BusinessFollowRecordMapper;
import com.dsk.system.service.IBusinessFollowRecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 项目跟进记录Service业务层处理
*
......@@ -41,6 +42,17 @@ public class BusinessFollowRecordServiceImpl implements IBusinessFollowRecordSer
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
public List<BusinessFollowRecord> businessFollowRecordPaging(BusinessFollowRecord businessFollowRecord) {
return businessFollowRecordMapper.businessFollowRecordPaging(businessFollowRecord);
......
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.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.constant.HttpStatus;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessInfo;
import com.dsk.common.core.domain.entity.BusinessLabel;
import com.dsk.common.core.domain.entity.BusinessRelateCompany;
import com.dsk.common.core.domain.entity.BusinessUser;
import com.dsk.common.exception.base.BaseException;
import com.dsk.common.utils.CheckUtils;
......@@ -21,8 +13,8 @@ import com.dsk.common.utils.DateUtils;
import com.dsk.common.utils.SecurityUtils;
import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.file.FileUtils;
import com.dsk.system.domain.BusinessExcelDto;
import com.dsk.system.domain.BusinessAddDto;
import com.dsk.system.domain.BusinessExcelDto;
import com.dsk.system.domain.BusinessListDto;
import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto;
import com.dsk.system.domain.customer.vo.CustomerBusinessListVo;
......@@ -34,13 +26,14 @@ import com.dsk.system.mapper.BusinessRelateCompanyMapper;
import com.dsk.system.mapper.BusinessUserMapper;
import com.dsk.system.service.IBusinessInfoService;
import lombok.extern.slf4j.Slf4j;
import lombok.val;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 项目详情Service业务层处理
......@@ -86,6 +79,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
*/
@Override
public List<BusinessListVo> selectBusinessInfoList(BusinessListDto dto) {
//userId不传值,就查询全部门项目
// if (dto.getUserId() == null) {
// Long deptId = SecurityUtils.getLoginUser().getDeptId();
// if (deptId == null) throw new BaseException("请登录");
......
......@@ -58,7 +58,34 @@
<if test="visitWay != null and visitWay != ''">and f.visit_way = #{visitWay}</if>
<if test="creatTime != null ">and f.creat_time = #{creatTime}</if>
</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>
<insert id="insertBusinessFollowRecord" parameterType="com.dsk.common.core.domain.entity.BusinessFollowRecord" useGeneratedKeys="true"
......
......@@ -86,23 +86,26 @@
SELECT
i.id,
i.project_name projectName,
i.project_type projectType,
i.province_name provinceName,
i.city_name cityName,
i.district_name districtName,
i.investment_amount investmentAmount,
GROUP_CONCAT(DISTINCT r.company_name) ownerCompany,
i.construction_unit ownerCompany,
MAX(f.creat_time) followTime,
u.nick_name nickName,
GROUP_CONCAT(DISTINCT l.label) label
FROM business_info i
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_user bu on bu.business_id = i.id
LEFT JOIN sys_user u on u.user_id = f.user_id
<where>
<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 test="minAmount != null and minAmount != '' and maxAmount != minAmount">
and i.investment_amount &gt;= #{minAmount}
......@@ -114,13 +117,16 @@
and i.investment_amount = #{minAmount}
</if>
<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 test="projectName != null and projectName != ''">
and i.project_name like concat('%',#{projectName},'%')
</if>
<if test="ownerCompany != null and ownerCompany != ''">
or r.company_name like concat('%',#{ownerCompany},'%')
or i.construction_unit like concat('%',#{ownerCompany},'%')
</if>
<if test="userId != null">
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