Commit dbc75fa1 authored by MyName's avatar MyName
parents 5df1e280 5b7e1a75
...@@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -69,17 +70,6 @@ public class BusinessFileController extends BaseController { ...@@ -69,17 +70,6 @@ public class BusinessFileController extends BaseController {
return getDataTable(allFiles); return getDataTable(allFiles);
} }
/* *//**
* 上传文件及文件夹
* @param url
* @param folderPath
* @return
*//*
@GetMapping("/upload/{url}/{folderPath}")
public AjaxResult uploadFolder(@PathVariable("url") String url,@PathVariable("folderPath") String folderPath) throws IOException {
return toAjax(FileUtils.uploadFolder(url, LOCALPATH + folderPath));
}*/
/** /**
* 上传文件及文件夹 * 上传文件及文件夹
* @param file 文件流 * @param file 文件流
...@@ -87,7 +77,7 @@ public class BusinessFileController extends BaseController { ...@@ -87,7 +77,7 @@ public class BusinessFileController extends BaseController {
* @return * @return
*/ */
@PostMapping("/upload") @PostMapping("/upload")
public AjaxResult uploadFolder(@RequestPart("file") MultipartFile file,HttpServletRequest request){ public AjaxResult uploadFolder(@RequestPart("file") MultipartFile file, HttpServletRequest request){
try { try {
String businessFileName = request.getHeader("FilePath"); String businessFileName = request.getHeader("FilePath");
// 上传文件路径 // 上传文件路径
...@@ -96,7 +86,7 @@ public class BusinessFileController extends BaseController { ...@@ -96,7 +86,7 @@ public class BusinessFileController extends BaseController {
String fileName = FileUploadUtils.upload(filePath, file); String fileName = FileUploadUtils.upload(filePath, file);
String url = serverConfig.getUrl() + fileName; String url = serverConfig.getUrl() + fileName;
AjaxResult ajax = AjaxResult.success(); AjaxResult ajax = AjaxResult.success();
ajax.put("url", url); ajax.put("url", fileName);
return ajax; return ajax;
} catch (IOException e) { } catch (IOException e) {
return AjaxResult.error(e.getMessage()); return AjaxResult.error(e.getMessage());
...@@ -105,12 +95,11 @@ public class BusinessFileController extends BaseController { ...@@ -105,12 +95,11 @@ public class BusinessFileController extends BaseController {
/** /**
* 下载文件 * 下载文件
* @param url * @param filePath 要下载的文件路径
* @param targetFolder * @param response 返回的响应
* @return
*/ */
@GetMapping("/download/{url}/{targetFolder}") @PostMapping("/download")
public AjaxResult downloadFolder(@PathVariable("url") String url,@PathVariable("targetFolder") String targetFolder) throws IOException { public void downloadFolder(@RequestBody BusinessIdDto filePath, HttpServletResponse response) {
return toAjax(FileUtils.downloadFolder(url, targetFolder)); FileUtils.downloadByFilePath(filePath.getFilePath(),response);
} }
} }
...@@ -123,4 +123,10 @@ public class EnterpriseController { ...@@ -123,4 +123,10 @@ public class EnterpriseController {
return enterpriseService.remark(vo); return enterpriseService.remark(vo);
} }
@ApiOperation(value = "企业主体信用评级")
@PostMapping(value = "bondCreditRating")
public R remark(@RequestBody @Valid EnterpriseBondCreditRatingBody vo) throws Exception {
return enterpriseService.bondCreditRating(vo);
}
} }
package com.dsk.web.controller.search.macroMarket; package com.dsk.web.controller.search.macroMarket;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.dtos.ComposeQueryDto; import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.system.service.RegionalEnterprisesService; import com.dsk.system.service.RegionalEnterprisesService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -24,7 +24,7 @@ public class RegionalEnterprisesController { ...@@ -24,7 +24,7 @@ public class RegionalEnterprisesController {
private RegionalEnterprisesService regionalEnterprisesService; private RegionalEnterprisesService regionalEnterprisesService;
@PostMapping("regional/page") @PostMapping("regional/page")
public AjaxResult page(@RequestBody ComposeQueryDto compose) { public TableDataInfo page(@RequestBody ComposeQueryDto compose) throws Exception{
return regionalEnterprisesService.page(compose); return regionalEnterprisesService.page(compose);
} }
} }
package com.dsk.common.core.domain.model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode(callSuper = false)
public class EnterpriseBondCreditRatingBody
{
/**
* 企业id
*/
@NotNull(message = "企业id不能为空")
private Integer cid;
}
...@@ -18,5 +18,6 @@ public class EnterpriseStatisticBody ...@@ -18,5 +18,6 @@ public class EnterpriseStatisticBody
*/ */
@NotNull(message = "企业id不能为空") @NotNull(message = "企业id不能为空")
private Integer companyId; private Integer companyId;
private Boolean isFy = false;
} }
...@@ -12,6 +12,11 @@ import lombok.Data; ...@@ -12,6 +12,11 @@ import lombok.Data;
@Data @Data
public class SpecialPurposeBondsDto { public class SpecialPurposeBondsDto {
/**
* 省Id
*/
private Integer provinceId;
/** /**
* 项目类型 * 项目类型
*/ */
......
...@@ -12,4 +12,8 @@ import lombok.Data; ...@@ -12,4 +12,8 @@ import lombok.Data;
*/ */
@Data @Data
public class SpecialPurposeBondsPageDto extends BasePage { public class SpecialPurposeBondsPageDto extends BasePage {
/**
* 省Id
*/
private Integer provinceId;
} }
...@@ -4,6 +4,7 @@ import com.dsk.common.config.RuoYiConfig; ...@@ -4,6 +4,7 @@ import com.dsk.common.config.RuoYiConfig;
import com.dsk.common.core.domain.entity.BusinessFileVo; import com.dsk.common.core.domain.entity.BusinessFileVo;
import com.dsk.common.exception.base.BaseException; import com.dsk.common.exception.base.BaseException;
import com.dsk.common.utils.DateUtils; import com.dsk.common.utils.DateUtils;
import com.dsk.common.utils.ServletUtils;
import com.dsk.common.utils.StringUtils; import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.uuid.IdUtils; import com.dsk.common.utils.uuid.IdUtils;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -29,8 +30,6 @@ import java.nio.charset.StandardCharsets; ...@@ -29,8 +30,6 @@ import java.nio.charset.StandardCharsets;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
/** /**
* 文件处理工具类 * 文件处理工具类
...@@ -313,46 +312,95 @@ public class FileUtils ...@@ -313,46 +312,95 @@ public class FileUtils
} }
/** /**
* 下载文件 * 根据文件路径下载文件
* @param url 要下载的文件链接 * @param filePath 要下载的文件路径
* @param targetFolder 目标文件 * @param response 返回的响应
*/
public static void downloadByFilePath(String filePath, HttpServletResponse response) {
try {
// path是指想要下载的文件的路径
File file = new File(filePath);
// log.info(file.getPath());
if (!file.exists()) throw new BaseException("文件不存在!");
// 获取文件名
String filename = file.getName();
// log.info("文件名: "+filename);
// 获取文件后缀名
// String ext = filename.substring(filename.lastIndexOf(".") + 1).toLowerCase();
// log.info("文件后缀名:" + ext);
// 将文件写入输入流
FileInputStream fileInputStream = new FileInputStream(file);
InputStream fis = new BufferedInputStream(fileInputStream);
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
// 清空response
response.reset();
// 设置response的Header
response.setCharacterEncoding("UTF-8");
//文件类型
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
//文件名称
response.addHeader("Download-filename", URLEncoder.encode(filename, "UTF-8"));
// 告知浏览器文件的大小
response.addHeader("Content-Length", "" + file.length());
OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
outputStream.write(buffer);
fis.close();
outputStream.flush();
} catch (IOException ex) {
ex.printStackTrace();
}
}
/**
* 根据文件url下载文件
* @param filePath 要下载的文件链接
* @param response 响应体
* @return * @return
* @throws IOException * @throws IOException
*/ */
public static boolean downloadFolder(String url, String targetFolder) throws IOException { public static void downloadByUrl(String filePath, HttpServletResponse response){
URL downloadUrl = new URL(url); // String fileUrl = request.getParameter("fileUrl"); // 获取文件链接
HttpURLConnection connection = (HttpURLConnection) downloadUrl.openConnection();
connection.setRequestMethod("GET");
connection.connect();
if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
throw new RuntimeException("下载文件夹失败: " + connection.getResponseMessage());
}
try (ZipInputStream zipInputStream = new ZipInputStream(connection.getInputStream())) {
ZipEntry entry;
while ((entry = zipInputStream.getNextEntry()) != null) {
String entryName = entry.getName();
if (StringUtils.isBlank(entryName)) {
continue;
}
File entryFile = new File(targetFolder, entryName); try {
if (entry.isDirectory()) { URL url = new URL(filePath);
entryFile.mkdirs(); HttpURLConnection connection = (HttpURLConnection) url.openConnection();
} else { connection.setRequestMethod("GET");
File parent = entryFile.getParentFile();
if (!parent.exists()) { // 设置响应头,告诉浏览器下载文件
parent.mkdirs(); String contentType = connection.getContentType(); // 获取文件类型
} response.setContentType(contentType);
String filename = extractFilenameFromUrl(filePath); // 从链接中提取文件名
try (FileOutputStream outputStream = new FileOutputStream(entryFile)) { response.setHeader("Content-Disposition", "attachment; filename=" + filename + "");
IOUtils.copy(zipInputStream, outputStream);
} // 将文件流写入响应输出流
} InputStream inputStream = connection.getInputStream();
byte[] buffer = new byte[4096];
int bytesRead = -1;
while ((bytesRead = inputStream.read(buffer)) != -1) {
response.getOutputStream().write(buffer, 0, bytesRead);
} }
inputStream.close();
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
} }
return true; }
// 从文件链接中提取文件名
public static String extractFilenameFromUrl(String url) {
int slashIndex = url.lastIndexOf('/');
int dotIndex = url.lastIndexOf('.');
if (dotIndex == -1 || dotIndex < slashIndex) {
return "download";
}
return url.substring(slashIndex + 1);
} }
/** /**
...@@ -568,4 +616,17 @@ public class FileUtils ...@@ -568,4 +616,17 @@ public class FileUtils
String baseName = FilenameUtils.getBaseName(fileName); String baseName = FilenameUtils.getBaseName(fileName);
return baseName; return baseName;
} }
/**
* 获取本地服务的域名,端口
* @return
*/
public static String getUrl()
{
HttpServletRequest request = ServletUtils.getRequest();
StringBuffer url = request.getRequestURL();
String contextPath = request.getServletContext().getContextPath();
return url.delete(url.length() - request.getRequestURI().length(), url.length()).append(contextPath).toString();
}
} }
...@@ -111,7 +111,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter ...@@ -111,7 +111,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
// 过滤请求 // 过滤请求
.authorizeRequests() .authorizeRequests()
// 对于登录login 注册register 验证码captchaImage 允许匿名访问 // 对于登录login 注册register 验证码captchaImage 允许匿名访问
.antMatchers("/login", "/register", "/captchaImage","/economic/**","/enterprises/**","/specialPurposeBonds/**","/urbanInvestment/**","/enterprise/**").permitAll() .antMatchers("/login", "/register", "/captchaImage").permitAll()
// 静态资源,可匿名访问 // 静态资源,可匿名访问
.antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll()
.antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll()
......
...@@ -40,6 +40,16 @@ function changeStr(str, index, changeStr) { ...@@ -40,6 +40,16 @@ function changeStr(str, index, changeStr) {
return str.substr(0, index) + changeStr + str.substr(index + changeStr.length) return str.substr(0, index) + changeStr + str.substr(index + changeStr.length)
} }
//甲方详情子页面互跳
function changePath(that, pathName){
try {
that.$parent.showPartPage({pathName})
} catch {
that.$parent.$parent.showPartPage({pathName})
}
}
export { export {
encodeStr encodeStr,
changePath
} }
...@@ -89,34 +89,51 @@ export const constantRoutes = [ ...@@ -89,34 +89,51 @@ export const constantRoutes = [
] ]
}, },
{ {
path: '/party', path: '/enterprise',
component: Layout, component: Layout,
hidden: true, hidden: true,
name: 'Party', name: 'Enterprise',
redirect: 'noredirect', redirect: 'noredirect',
children: [ children: [
{ {
path: 'party-a', path: '/enterprise/:id',
component: () => import('@/views/detail/party-a/index'), component: () => import('@/views/detail/party-a/index'),
name: 'PartyA', name: 'PartyA',
meta: { title: '甲方详情' }, meta: { title: '甲方详情' },
}, }
]
},
{
path: '/company',
component: Layout,
hidden: true,
name: 'Company',
redirect: 'noredirect',
children: [
{ {
path: 'party-b', path: '/company/:id',
component: () => import('@/views/detail/party-b/index'), component: () => import('@/views/detail/party-b/index'),
name: 'PartyB', name: 'PartyB',
meta: { title: '已方详情' } meta: { title: '已方详情' }
}, }
]
},
{
path: '/structure',
component: Layout,
hidden: true,
redirect: 'noredirect',
children: [
{ {
path: 'structure', path: 'graph',
component: () => import('@/views/detail/structure/index'), component: () => import('@/views/detail/structure/index'),
name: 'Structure', name: 'Graph',
meta: { title: '企业链图' } meta: { title: '企业链图' }
} }
] ]
}, },
{ {
path: '/financingDetails', path: '/financing',
component: Layout, component: Layout,
hidden: true, hidden: true,
redirect: 'noredirect', redirect: 'noredirect',
...@@ -125,7 +142,7 @@ export const constantRoutes = [ ...@@ -125,7 +142,7 @@ export const constantRoutes = [
path: '/macro/financing/details/:id(\\d+)', path: '/macro/financing/details/:id(\\d+)',
component: () => import('@/views/macro/financing/details'), component: () => import('@/views/macro/financing/details'),
name: 'financingDetails', name: 'financingDetails',
meta: { title: '区域专项债详情'} meta: { title: '区域专项债详情',icon: ''}
} }
] ]
}, },
......
...@@ -4,36 +4,27 @@ ...@@ -4,36 +4,27 @@
<el-breadcrumb separator="/"> <el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ path: '/enterpriseData' }">企业数据</el-breadcrumb-item> <el-breadcrumb-item :to="{ path: '/enterpriseData' }">企业数据</el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: '/enterpriseData?tag=1' }">查企业</el-breadcrumb-item> <el-breadcrumb-item :to="{ path: '/enterpriseData?tag=1' }">查企业</el-breadcrumb-item>
<el-breadcrumb-item>中铁一建</el-breadcrumb-item> <el-breadcrumb-item>{{companyInfo.simpleName || companyInfo.companyName || '--'}}</el-breadcrumb-item>
</el-breadcrumb> </el-breadcrumb>
</div> </div>
<div class="flex-box part-header"> <div class="flex-box part-header">
<img class="header-logo" src="@/assets/images/avatar.png"> <img class="header-logo" :src="companyInfo.logoUrl || require('@/assets/images/detail/company_logo.png')">
中交第二航务工程局有限公司 {{companyInfo.companyName || '--'}}
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { infoHeader } from '@/api/detail/party-a/index'
export default { export default {
name: 'Header', name: 'Header',
props: ['companyId'], props: ['companyId', 'companyInfo'],
data() { data() {
return { return {
enterprise: {}
} }
}, },
created() { created() {
this.getInfoHeader()
}, },
methods: { methods: {
async getInfoHeader(){
let { data } = await infoHeader({companyId:this.companyId})
if( data.code == 200){
this.enterprise = data.data
}
}
} }
} }
</script> </script>
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
</el-input> </el-input>
<el-menu <el-menu
:default-active="routeIndex" :default-active="routeIndex"
:unique-opened="true"
class="detail-menu" class="detail-menu"
@open="handleOpen"> @open="handleOpen">
<template v-for="(item, index) in sideRoute"> <template v-for="(item, index) in sideRoute">
...@@ -119,7 +120,7 @@ export default { ...@@ -119,7 +120,7 @@ export default {
break break
}else if(sideArr[i].children){ }else if(sideArr[i].children){
for(let j=0; j< sideArr[i].children.length ; j++){ for(let j=0; j< sideArr[i].children.length ; j++){
if(sideArr[i].children.pathName == this.pathName){ if(sideArr[i].children[j].pathName == this.pathName){
idx = i+'-'+j idx = i+'-'+j
break break
} }
......
<template> <template>
<div class="app-container part-container"> <div class="app-container part-container">
<Header :company-id="companyId" v-if="companyId" /> <Header :company-id="companyId" :companyInfo="companyInfo" v-if="companyId" />
<div class="flex-box part-main"> <div class="flex-box part-main">
<div class="part-left"> <div class="part-left">
<side-bar @currentPath="showPartPage" :pathName="currentPath.pathName" :partBoxHeight="partBoxHeight" :customerId="customerId" /> <side-bar @currentPath="showPartPage" :pathName="currentPath.pathName" :partBoxHeight="partBoxHeight" :customerId="customerId" />
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<div class="part-right"> <div class="part-right">
<div id="partBox" v-if="companyId"> <div id="partBox" v-if="companyId">
<!-- 企业概览 --> <!-- 企业概览 -->
<Overview v-if="currentPath.pathName=='overview'" :company-id="companyId" /> <Overview v-if="currentPath.pathName=='overview'" :company-id="companyId" :companyInfo="companyInfo" />
<Businfo v-if="currentPath.pathName=='businfo'" :company-id="companyId" /> <Businfo v-if="currentPath.pathName=='businfo'" :company-id="companyId" />
<Holderinfo v-if="currentPath.pathName=='holderinfo'" :company-id="companyId" /> <Holderinfo v-if="currentPath.pathName=='holderinfo'" :company-id="companyId" />
<Execuinfo v-if="currentPath.pathName=='execuinfo'" :company-id="companyId" /> <Execuinfo v-if="currentPath.pathName=='execuinfo'" :company-id="companyId" />
...@@ -142,7 +142,7 @@ export default { ...@@ -142,7 +142,7 @@ export default {
data() { data() {
return { return {
companyInfo: {}, companyInfo: {},
companyId: 10361319, //企业Id(测试默认3068) companyId: '', //企业Id(测试默认3068)
customerId: '', //企业Id(测试默认'a00d582a6041f32c16aac804e4924736') customerId: '', //企业Id(测试默认'a00d582a6041f32c16aac804e4924736')
currentPath: { currentPath: {
pathName: 'overview' //默认展示页 pathName: 'overview' //默认展示页
...@@ -151,9 +151,9 @@ export default { ...@@ -151,9 +151,9 @@ export default {
} }
}, },
created() { created() {
if (this.$route.query.companyId) { // 获取companyId if (this.$route.params.id) { // 获取companyId
let id = this.$route.query.companyId let companyId = this.$route.params.id
this.getCompanyId(id) this.getCompanyId(companyId)
} }
if (this.$route.query.path) { // 获取跳转对应板块 if (this.$route.query.path) { // 获取跳转对应板块
this.currentPath.pathName = this.$route.query.path this.currentPath.pathName = this.$route.query.path
...@@ -163,12 +163,6 @@ export default { ...@@ -163,12 +163,6 @@ export default {
} }
}, },
mounted() { mounted() {
const _this = this, erd = elementResizeDetectorMaker(), partBox = document.getElementById("partBox")
erd.listenTo(partBox, element => {
_this.$nextTick(() => {
_this.partBoxHeight = partBox.offsetHeight
})
})
}, },
methods: { methods: {
showPartPage(e){ showPartPage(e){
...@@ -176,9 +170,12 @@ export default { ...@@ -176,9 +170,12 @@ export default {
}, },
// 解密 // 解密
async getCompanyId(companyId){ async getCompanyId(companyId){
let { data } = await idRemark({companyId}) let { data } = await idRemark({mark:companyId})
if( data.code == 200){ if( data ){
this.companyId = data.data this.companyId = data
this.$nextTick(() => {
this.listenSider()
})
this.handleQuery() this.handleQuery()
} }
}, },
...@@ -187,6 +184,12 @@ export default { ...@@ -187,6 +184,12 @@ export default {
if(res.code==200){ if(res.code==200){
this.companyInfo = res.data this.companyInfo = res.data
} }
},
listenSider(){
const _this = this, erd = elementResizeDetectorMaker(), partBox = document.getElementById("partBox")
erd.listenTo(partBox, element => {
_this.partBoxHeight = partBox.offsetHeight
})
} }
} }
} }
...@@ -206,5 +209,6 @@ export default { ...@@ -206,5 +209,6 @@ export default {
.part-right{ .part-right{
min-width: 1088px; min-width: 1088px;
width: 100%; width: 100%;
background: #FFFFFF;
} }
</style> </style>
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
</el-popover> </el-popover>
</div> </div>
<span style="float: left;" :class="!labelArr.includes(companyInfo.businessStatus)?'label-bg1':'label-bg3'" v-if="companyInfo.businessStatus">{{companyInfo.businessStatus}}</span> <span style="float: left;" :class="!labelArr.includes(companyInfo.businessStatus)?'label-bg1':'label-bg3'" v-if="companyInfo.businessStatus">{{companyInfo.businessStatus}}</span>
<span style="float: left;" :class="item.state===0?'label-bg2':'label-bg3'" v-for="(item, index) in labelList" :key="index">{{item.labelName}}</span> <!-- <span style="float: left;" :class="item.state===0?'label-bg2':'label-bg3'" v-for="(item, index) in labelList" :key="index">{{item.labelName}}</span>
<template v-if="enterpriseLabel.length > 0"> <template v-if="enterpriseLabel.length > 0">
<template v-for="(item,index) in enterpriseLabel"> <template v-for="(item,index) in enterpriseLabel">
<template v-if="item.children.length > 0"> <template v-if="item.children.length > 0">
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
<span v-else class="enterpriseLabel-span" :style="{'background':item.bgColor,'color':item.fontColor,'cursor':item.linkUri ? 'pointer' : ''}">{{item.labelName}}</span> <span v-else class="enterpriseLabel-span" :style="{'background':item.bgColor,'color':item.fontColor,'cursor':item.linkUri ? 'pointer' : ''}">{{item.labelName}}</span>
</template> </template>
</template> </template>
</template> </template>-->
</div> </div>
</div> </div>
</div> </div>
...@@ -71,22 +71,22 @@ ...@@ -71,22 +71,22 @@
<div class="company-info"> <div class="company-info">
<div class="info-item flex-box"> <div class="info-item flex-box">
<div class="item"><label>法定代表人:</label><span>{{companyInfo.corporatePerson || ''}}</span></div> <div class="flex-box item"><label>法定代表人:</label><span class="text-cl1">{{companyInfo.corporatePerson || ''}}</span></div>
<div class="item"><label>注册资本:</label><span>{{companyInfo.regCapital || '--'}}</span></div> <div class="flex-box item"><label>注册资本:</label><span class="text-cl1">{{companyInfo.regCapital || '--'}}</span></div>
<div class="item"><label>统一社会信用代码:</label><span>{{companyInfo.creditCode || ''}}</span></div> <div class="flex-box item"><label>统一社会信用代码:</label><span class="text-cl1">{{companyInfo.creditCode || ''}}</span></div>
</div> </div>
<div class="info-item flex-box"> <div class="info-item flex-box">
<div class="item"><label>成立日期:</label><span>{{companyInfo.regCapital || '--'}}</span></div> <div class="flex-box item"><label>成立日期:</label><span class="text-cl1">{{companyInfo.registeredDate || '--'}}</span></div>
<div class="item"><label>类型:</label><span>{{companyInfo.regCapital || '--'}}</span></div> <div class="flex-box item"><label>类型:</label><span class="text-cl1">{{companyInfo.econKind || '--'}}</span></div>
<div class="item"><label>企业邮箱:</label><span>{{companyInfo.regCapital || '--'}}</span></div> <div class="flex-box item"><label>注册地址:</label><span class="text-cl1">{{companyInfo.addressDetail || '--'}}</span></div>
<!-- <div class="item"><label>企业邮箱:</label><span>{{companyInfo.regCapital || '&#45;&#45;'}}</span></div>-->
</div> </div>
<div class="info-item flex-box"> <div class="info-item flex-box">
<div class="item"><label>官网:</label><span>{{companyInfo.regCapital || '--'}}</span></div> <!-- <div class="item"><label>官网:</label><span>{{companyInfo.regCapital || '&#45;&#45;'}}</span></div>-->
<div class="item"><label>注册地址:</label><span>{{companyInfo.regCapital || '--'}}</span></div> <div class="flex-box item item-line"><label>通信地址:</label><span class="text-cl1">{{companyInfo.addressDetail || '--'}}</span></div>
<div class="item"><label>通信地址:</label><span>{{companyInfo.regCapital || '--'}}</span></div>
</div> </div>
<div class="info-item flex-box" > <div class="info-item flex-box" >
<div class="item flex-box item-line" > <div class="flex-box item item-line" >
<span ref="companyQybj" class="text-cl1" :class="showMore&&showState?'item-all':'item-more'"> <span ref="companyQybj" class="text-cl1" :class="showMore&&showState?'item-all':'item-more'">
<label>企业背景:</label>{{companyInfo.introduction || ''}} <label>企业背景:</label>{{companyInfo.introduction || ''}}
</span> </span>
...@@ -125,58 +125,25 @@ ...@@ -125,58 +125,25 @@
</template> </template>
<script> <script>
import { statistic } from '@/api/detail/party-a/overview'
import { changePath } from '@/assets/js/common'
var Swiper = require('@/assets/lib/swiper/swiper-bundle.min.js') var Swiper = require('@/assets/lib/swiper/swiper-bundle.min.js')
import "@/assets/lib/swiper/swiper-bundle.css" import "@/assets/lib/swiper/swiper-bundle.css"
import { encodeStr } from '@/assets/js/common.js'
export default { export default {
name: 'Infoheader', name: 'Infoheader',
props: ['companyId', 'companyInfo'],
data() { data() {
return { return {
companyInfo: {
"historyNames": [
{
"name": "",
"value": "中国建筑第八工程局"
}
],
"eid": "a4465fc3-ef1d-470b-834e-3af1975a5692",
"regCapital": "1521800万元人民币",
"registeredDate": "1998-09-29",
"companyName": "中国建筑第八工程局有限公司",
"provinceIdsArea": "310000,360000,500000,450000,420000,320000,370000,330000,510000,150000,610000,230000,460000,210000,440000,130000,120000,630000,430000,410000,350000,340000,650000,640000,140000,540000,520000,530000,620000,110000,220000",
"econKind": "有限责任公司(非自然人投资或控股的法人独资)",
"cityId": 310100,
"addressDetail": "中国(上海)自由贸易试验区世纪大道1568号27层",
"creditCode": "9131000063126503X1",
"metaTime": "2023-05-13",
"contact": {
"cellphone": 266,
"telephone": 158,
"phoneNumber": "0310-8083960"
},
"corporatePerson": "李永明",
"views": 32303,
"introduction": "中国建筑第八工程局有限公司成立于1998-09-29,法定代表人为李永明,注册资本为1521800万元,统一社会信用代码为9131000063126503X1,企业地址位于中国(上海)自由贸易试验区世纪大道1568号27层,经营范围包含房屋建筑、公路、铁路、市政公用、港口与航道、水利水电各类别工程的咨询、设计、施工、总承包和项目管理,化工石油工程,电力工程,基础工程,装饰工程,工业筑炉,城市轨道交通工程,园林绿化工程,线路、管道、设备的安装,混凝土预制构件及制品,非标制作,建筑材料生产、销售,建筑设备销售,建筑机械租赁,房地产开发,自有房屋租赁,物业管理,从事建筑领域内的技术转让、技术咨询、技术服务,企业管理咨询,商务信息咨询,经营各类商品和技术的进出口,但国家限定公司经营或禁止进出口的商品及技术除外。【依法须经批准的项目,经相关部门批准后方可开展经营活动】。该公司目前的经营状态为存续(在营、开业、在册)。企业联系方式为:0310-8083960。",
"businessDateFrom": "1998-09-29",
"isHighTech": 1,
"businessScope": "房屋建筑、公路、铁路、市政公用、港口与航道、水利水电各类别工程的咨询、设计、施工、总承包和项目管理,化工石油工程,电力工程,基础工程,装饰工程,工业筑炉,城市轨道交通工程,园林绿化工程,线路、管道、设备的安装,混凝土预制构件及制品,非标制作,建筑材料生产、销售,建筑设备销售,建筑机械租赁,房地产开发,自有房屋租赁,物业管理,从事建筑领域内的技术转让、技术咨询、技术服务,企业管理咨询,商务信息咨询,经营各类商品和技术的进出口,但国家限定公司经营或禁止进出口的商品及技术除外。【依法须经批准的项目,经相关部门批准后方可开展经营活动】",
"businessStatus": "存续(在营、开业、在册)",
"isFy": false,
"provinceId": 310000,
"logoUrl": "https://qxb-logo-url.oss-cn-hangzhou.aliyuncs.com/OriginalUrl/2cae9ba958e78d719c43fd0f7e4fa514.jpg",
"companyId": 6034,
"simpleName": "中建八局",
"provinceName": "上海"
},
labelList: [], //企业标签 labelList: [], //企业标签
claimLoading: false, claimLoading: false,
ifClaim: false, //是否认领 ifClaim: false, //是否认领
showMore: false, showMore: false,
showState: false, showState: false,
statistic: {},
graphList: [ graphList: [
{id: 1, name:'业务往来', intro:[{id: 101, name:'客户', val:44},{id: 102, name:'供应商', val:55}], ico:require('@/assets/images/detail/overview/company_ywwl.png')}, {id: 1, name:'业务往来', intro:[{id: 101, name:'客户', val:0, category:'global', field:'customer'},{id: 102, name:'供应商', val:0, category:'global', field:'supplier'}], ico:require('@/assets/images/detail/overview/company_ywwl.png')},
{id: 2, name:'商机线索', intro:[{id: 201, name:'专项债项目', val:66},{id: 202, name:'招标计划', val:66}], ico:require('@/assets/images/detail/overview/company_sjxs.png')}, {id: 2, name:'商机线索', intro:[{id: 201, name:'专项债项目', val:0, category:'xxx', field:'yy'},{id: 202, name:'招标计划', val:0, category:'xxx', field:'zz'}], ico:require('@/assets/images/detail/overview/company_sjxs.png')},
{id: 3, name:'城投拿地', intro:[{id: 301, name:'土地交易', val:2},{id: 302, name:'行政许可', val:0}], ico:require('@/assets/images/detail/overview/company_ctnd.png')}, {id: 3, name:'城投拿地', intro:[{id: 301, name:'土地交易', val:0, category:'global', field:'landInfo'},{id: 302, name:'行政许可', val:0, category:'business', field:'adminLicensing'}], ico:require('@/assets/images/detail/overview/company_ctnd.png')},
{id: 4, name:'对外投资', intro:[{id: 401, name:'企业经营实力展现'}], ico:require('@/assets/images/detail/overview/company_dwtz.png')}, {id: 4, name:'对外投资', intro:[{id: 401, name:'企业经营实力展现'}], ico:require('@/assets/images/detail/overview/company_dwtz.png')},
{id: 5, name:'股权穿透', intro:[{id: 501, name:'瞬息掌握企业关系'}], ico:require('@/assets/images/detail/overview/company_gqct.png')}, {id: 5, name:'股权穿透', intro:[{id: 501, name:'瞬息掌握企业关系'}], ico:require('@/assets/images/detail/overview/company_gqct.png')},
{id: 6, name:'企业架构', intro:[{id: 601, name:'企业架构关联图'}], ico:require('@/assets/images/detail/overview/company_qyjg.png')}, {id: 6, name:'企业架构', intro:[{id: 601, name:'企业架构关联图'}], ico:require('@/assets/images/detail/overview/company_qyjg.png')},
...@@ -184,272 +151,17 @@ export default { ...@@ -184,272 +151,17 @@ export default {
], //企业链图 ], //企业链图
//风险扫描 //风险扫描
labelArr:['失信联合惩戒企业','司法纠纷','注销'], //负向经营状态 labelArr:['失信联合惩戒企业','司法纠纷','注销'], //负向经营状态
enterpriseLabel:[ enterpriseLabel:[],//企业标签
{
"labelCode": "4_1_",
"labelName": "严重行政处罚",
"companyId": 6034,
"num": 1,
"pcode": "4_",
"level": 2,
"isLeaf": 1,
"orderNum": 1,
"bgColor": "#FFF3F3",
"fontColor": "#FD5757",
"remark": "严重行政处罚,是指有关行政部门处以企业暂停投标资格、暂停承揽新业务的行政处罚。原因包括但不限于企业存在围标串标、克扣或拖欠劳动者报酬、出现重大安全事故等异常行为导致企业无法承揽工程项目,产生重大经营风险",
"children": [],
"linkUri": "/credit?type=0"
},
{
"labelCode": "2_2_1_",
"labelName": "施工特级资质",
"num": 3,
"pcode": "2_2_",
"level": 3,
"isLeaf": 0,
"orderNum": 6,
"bgColor": "#E4F3FD",
"fontColor": "#41A1FD",
"linkBizId": 209,
"children": [
{
"labelCode": "2_2_1_1_",
"labelName": "建筑工程特级",
"companyId": 6034,
"num": 1,
"pcode": "2_2_1_",
"level": 4,
"isLeaf": 1,
"orderNum": 6,
"bgColor": "#E4F3FD",
"fontColor": "#41A1FD",
"linkBizId": 209,
"children": [],
"linkUri": "?type=0"
},
{
"labelCode": "2_2_1_2_",
"labelName": "公路工程特级",
"companyId": 6034,
"num": 1,
"pcode": "2_2_1_",
"level": 4,
"isLeaf": 1,
"orderNum": 7,
"bgColor": "#E4F3FD",
"fontColor": "#41A1FD",
"linkBizId": 209,
"children": [],
"linkUri": "?type=0"
},
{
"labelCode": "2_2_1_10_",
"labelName": "市政公用工程特级",
"companyId": 6034,
"num": 1,
"pcode": "2_2_1_",
"level": 4,
"isLeaf": 1,
"orderNum": 15,
"bgColor": "#E4F3FD",
"fontColor": "#41A1FD",
"linkBizId": 209,
"children": [],
"linkUri": "?type=0"
}
],
"linkUri": "?type=0"
},
{
"labelCode": "3_2_1_",
"labelName": "高新技术企业",
"companyId": 6034,
"num": 1,
"pcode": "3_2_",
"level": 3,
"isLeaf": 1,
"orderNum": 67,
"bgColor": "#FFF7EC",
"fontColor": "#BFA061",
"remark": "高新技术企业指在国家颁布的《国家重点支持的高新技术领域》范围内,持续进行研究开发与技术成果转化,形成企业核心自主知识产权,并以此为基础开展经营活动的居民企业,是知识密集、技术密集的经济实体。",
"children": []
},
{
"labelCode": "3_2_4_",
"labelName": "省级企业技术中心",
"companyId": 6034,
"num": 1,
"pcode": "3_2_",
"level": 3,
"isLeaf": 1,
"orderNum": 70,
"bgColor": "#FFF7EC",
"fontColor": "#BFA061",
"remark": "企业技术中心是指企业根据市场竞争需要设立的技术研发与创新机构,负责制定企业技术创新规划、开展产业技术研发、创造运用知识产权、建立技术标准体系、凝聚培养创新人才、构建协同创新网络、推进技术创新全过程实施。",
"children": []
},
{
"labelCode": "3_1_1_1_",
"labelName": "国家级荣誉奖项",
"num": 8,
"pcode": "3_1_1_",
"level": 4,
"isLeaf": 0,
"orderNum": 76,
"bgColor": "#FFF7EC",
"fontColor": "#BFA061",
"children": [
{
"labelCode": "3_1_1_1_1_",
"labelName": "鲁班奖",
"companyId": 6034,
"num": 1,
"pcode": "3_1_1_1_",
"level": 5,
"isLeaf": 1,
"orderNum": 76,
"bgColor": "#FFF7EC",
"fontColor": "#BFA061",
"children": [],
"linkUri": "/behavior?type=0"
},
{
"labelCode": "3_1_1_1_2_",
"labelName": "国家优质工程奖",
"companyId": 6034,
"num": 1,
"pcode": "3_1_1_1_",
"level": 5,
"isLeaf": 1,
"orderNum": 77,
"bgColor": "#FFF7EC",
"fontColor": "#BFA061",
"children": [],
"linkUri": "/behavior?type=0"
},
{
"labelCode": "3_1_1_1_3_",
"labelName": "詹天佑奖",
"companyId": 6034,
"num": 1,
"pcode": "3_1_1_1_",
"level": 5,
"isLeaf": 1,
"orderNum": 78,
"bgColor": "#FFF7EC",
"fontColor": "#BFA061",
"children": [],
"linkUri": "/behavior?type=0"
},
{
"labelCode": "3_1_1_1_4_",
"labelName": "建筑装饰优质工程奖",
"companyId": 6034,
"num": 1,
"pcode": "3_1_1_1_",
"level": 5,
"isLeaf": 1,
"orderNum": 79,
"bgColor": "#FFF7EC",
"fontColor": "#BFA061",
"children": [],
"linkUri": "/behavior?type=0"
},
{
"labelCode": "3_1_1_1_5_",
"labelName": "绿色建筑创新奖",
"companyId": 6034,
"num": 1,
"pcode": "3_1_1_1_",
"level": 5,
"isLeaf": 1,
"orderNum": 80,
"bgColor": "#FFF7EC",
"fontColor": "#BFA061",
"children": [],
"linkUri": "/behavior?type=0"
},
{
"labelCode": "3_1_1_1_6_",
"labelName": "钢结构金奖",
"companyId": 6034,
"num": 1,
"pcode": "3_1_1_1_",
"level": 5,
"isLeaf": 1,
"orderNum": 81,
"bgColor": "#FFF7EC",
"fontColor": "#BFA061",
"children": [],
"linkUri": "/behavior?type=0"
},
{
"labelCode": "3_1_1_1_8_",
"labelName": "市政金杯示范工程",
"companyId": 6034,
"num": 1,
"pcode": "3_1_1_1_",
"level": 5,
"isLeaf": 1,
"orderNum": 83,
"bgColor": "#FFF7EC",
"fontColor": "#BFA061",
"children": [],
"linkUri": "/behavior?type=0"
},
{
"labelCode": "3_1_2_1_1_",
"labelName": "华夏建设科学技术奖",
"companyId": 6034,
"num": 1,
"pcode": "3_1_1_1_",
"level": 5,
"isLeaf": 0,
"orderNum": 112,
"bgColor": "#FFF7EC",
"fontColor": "#BFA061",
"children": [],
"linkUri": "/behavior?type=0"
}
],
"linkUri": "/behavior?type=0"
},
{
"labelCode": "1_1_1_",
"labelName": "长三角",
"companyId": 6034,
"num": 1,
"pcode": "1_1_",
"level": 3,
"isLeaf": 1,
"orderNum": 113,
"bgColor": "#F3F3FF",
"fontColor": "#8491E8",
"children": []
},
{
"labelCode": "1_1_5_",
"labelName": "华东",
"companyId": 6034,
"num": 1,
"pcode": "1_1_",
"level": 3,
"isLeaf": 1,
"orderNum": 113,
"bgColor": "#F3F3FF",
"fontColor": "#8491E8",
"children": []
}
],//企业标签
} }
}, },
created() { created() {
this.getCompanyInfo() this.getCompanyInfo() //处理曾用名
this.handleStatistic() //企业背景是否收起
}, },
mounted() { mounted() {
this.handleWidth()
this.getClaimStatus() //获取企业认领状态 this.getClaimStatus() //获取企业认领状态
this.companySwiper() this.companySwiper() //swiper滚动板块
this.handleWidth() //企业背景是否收起
}, },
methods: { methods: {
//认领 //认领
...@@ -480,24 +192,46 @@ export default { ...@@ -480,24 +192,46 @@ export default {
this.companyInfo.historyNames = JSON.parse(this.companyInfo.historyNames) this.companyInfo.historyNames = JSON.parse(this.companyInfo.historyNames)
} }
}, },
async handleStatistic() {
let res = await statistic({companyId:this.companyId})
if(res.code==200){
this.statistic = res.data
this.graphList.forEach((item, index) => {
if(item.intro){
item.intro.forEach((it, idx) => {
if(it.category || it.field){
it.val = this.getStatistic(it.category, it.field)
}
})
}
})
}
},
getStatistic(category, field) {
return this.statistic[category][field] || 0
},
//获取认领状态 //获取认领状态
async getClaimStatus(){ async getClaimStatus(){
this.ifClaim = false this.ifClaim = false
}, },
handleWidth(){ handleWidth(){
this.showMore = this.$refs.companyQybj.scrollWidth - this.$refs.companyQybj.clientWidth if(this.companyInfo.introduction){
this.$nextTick(() => {
this.showMore = this.$refs.companyQybj.scrollWidth - this.$refs.companyQybj.clientWidth
})
}
}, },
handleDetail(){ handleDetail(){
this.showState = !this.showState this.showState = !this.showState
}, },
jumpToLt(item){ jumpToLt(item){
this.$router.push({ path: '/party/structure', query: {eid:this.companyInfo.eid, typeId:item.id} }) this.$router.push({ path: '/structure/graph', query: {eid:this.companyInfo.eid, typeId:item.id} })
}, },
//swiper项点击 //swiper项点击
handleGraph(item,it){ handleGraph(item,it){
switch (item.id) { switch (item.id) {
case 4: case 4:
console.log('jump') changePath(this, 'overseas')
break break
case 5: case 5:
this.jumpToLt(item) this.jumpToLt(item)
...@@ -506,31 +240,36 @@ export default { ...@@ -506,31 +240,36 @@ export default {
this.jumpToLt(item) this.jumpToLt(item)
break break
case 7: case 7:
console.log('jump') changePath(this, 'businfo')
break break
} }
}, },
//swiper子项点击 //swiper子项点击
handleGraphChild(item, it){ handleGraphChild(item, it){
if(it.id==101 && it.val){ if(it.id==101 && it.val){
console.log('jump') changePath(this, 'custom')
} }
if(it.id==102 && it.val){ if(it.id==102 && it.val){
console.log('jump') changePath(this, 'supplier')
} }
if(it.id==201 && it.val){ if(it.id==201 && it.val){
console.log('jump') changePath(this, 'bond')
} }
if(it.id==202 && it.val){ if(it.id==202 && it.val){
console.log('jump') changePath(this, 'biddingplan')
} }
if(it.id==301 && it.val){ if(it.id==301 && it.val){
console.log('jump') changePath(this, 'landtransaction')
} }
if(it.id==302 && it.val){ if(it.id==302 && it.val){
console.log('jump') changePath(this, 'administrative')
} }
} }
},
watch: {
companyInfo(newVal, oldVal) {
this.handleWidth()
}
} }
} }
</script> </script>
...@@ -814,10 +553,10 @@ export default { ...@@ -814,10 +553,10 @@ export default {
font-size: 14px; font-size: 14px;
color: #333333; color: #333333;
&:first-child{ &:first-child{
width: 210px; width: 280px;
} }
&:nth-child(2){ &:nth-child(2){
width: 250px; width: 350px;
} }
&.item-line{ &.item-line{
width: 100%; width: 100%;
......
<template> <template>
<div class="app-container part-container"> <div class="app-container part-container">
<div class="view-content"><Infoheader /></div><!-- 企业信息 --> <div class="view-content"><Infoheader :companyId="companyId" :companyInfo="companyInfo" /></div><!-- 企业信息 -->
<div class="view-content"><Operations /></div><!-- 公司经营 --> <div class="view-content"><Operations /></div><!-- 公司经营 -->
<div class="view-content"><Bidding /></div><!--招标偏好、业务往来--> <div class="view-content"><Bidding /></div><!--招标偏好、业务往来-->
<div class="view-content"><Busclue /></div><!--商机线索--> <div class="view-content"><Busclue /></div><!--商机线索-->
...@@ -22,7 +22,7 @@ import Risk from './component/risk' ...@@ -22,7 +22,7 @@ import Risk from './component/risk'
import Tender from "./component/tender" import Tender from "./component/tender"
export default { export default {
name: 'Overview', name: 'Overview',
props: ['companyId'], props: ['companyId', 'companyInfo'],
components: { components: {
Infoheader, Infoheader,
Operations, Operations,
......
...@@ -19,9 +19,9 @@ export default { ...@@ -19,9 +19,9 @@ export default {
} }
}, },
created() { created() {
if (this.$route.query.companyId) { // 获取companyId if (this.$route.params.id) { // 获取companyId
this.loading = true this.loading = true
this.src = `https://pre-plug.jiansheku.com/enterprise/${this.$route.query.companyId}?secretId=${this.secretId}` this.src = `https://pre-plug.jiansheku.com/enterprise/${this.$route.params.id}?secretId=${this.secretId}`
} }
}, },
mounted() { mounted() {
......
...@@ -32,7 +32,7 @@ export default { ...@@ -32,7 +32,7 @@ export default {
}, },
data() { data() {
return { return {
activeName: 'four', activeName: 'first',
dataQuery:{}, dataQuery:{},
province:'' province:''
} }
......
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
// import LocalEnterprises from './component/localEnterprises' // import LocalEnterprises from './component/localEnterprises'
// import Offsite from './component/offsite' // import Offsite from './component/offsite'
import aptitudeCode from '@/assets/json/aptitudeCode' import aptitudeCode from '@/assets/json/aptitudeCode'
import { countGroupByMonth,countGroupByProvince,getYear } from '@/api/macro/macro' import { enterprise } from '@/api/macro/macro'
export default { export default {
name: 'Enterprises', name: 'Enterprises',
// components: {LocalEnterprises,Offsite}, // components: {LocalEnterprises,Offsite},
......
...@@ -11,15 +11,16 @@ ...@@ -11,15 +11,16 @@
:data="tableData" :data="tableData"
element-loading-text="Loading" element-loading-text="Loading"
border border
show-summary
height="360" height="360"
fit fit
@sort-change="sortChange" @sort-change="sortChange"
highlight-current-row highlight-current-row
> >
<el-table-column prop="name" label="项目类型" width="150" /> <el-table-column prop="name" label="项目类型" width="150" />
<el-table-column prop="value" label="项目个数" sortable="custom" width="140" /> <el-table-column prop="number" label="项目个数" sortable="custom" width="140" />
<el-table-column prop="totalInvestment" label="投资额(亿元)" sortable="custom" width="140" /> <el-table-column prop="value" label="投资额(亿元)" sortable="custom" width="140" />
<el-table-column prop="proportion" label="比例" width="140" sortable="custom" /> <el-table-column prop="proportion" label="比例(%)" width="140" sortable="custom" />
</el-table> </el-table>
</div> </div>
</div> </div>
...@@ -37,6 +38,7 @@ ...@@ -37,6 +38,7 @@
v-loading="tableLoading" v-loading="tableLoading"
:data="listData" :data="listData"
element-loading-text="Loading" element-loading-text="Loading"
@sort-change="sortChange1"
border border
fit fit
highlight-current-row highlight-current-row
...@@ -49,10 +51,10 @@ ...@@ -49,10 +51,10 @@
<router-link :to="'/macro/financing/details/'+ scope.row.id" tag="a" class="a-link">{{ scope.row.projectName}}</router-link> <router-link :to="'/macro/financing/details/'+ scope.row.id" tag="a" class="a-link">{{ scope.row.projectName}}</router-link>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="projectTotalInvestment" label="项目总投资(亿)" sortable width="155" /> <el-table-column prop="projectTotalInvestment" label="项目总投资(亿)" sortable="custom" width="155" />
<el-table-column prop="projectCapital" label="项目资本金(亿)" sortable width="155" /> <el-table-column prop="projectCapital" label="项目资本金(亿)" sortable="custom" width="155" />
<el-table-column prop="econData007" label="项目收益倍数(倍)" width="150" /> <el-table-column prop="econData007" label="项目收益倍数(倍)" sortable="custom" width="150" />
<el-table-column prop="zxz" label="专项债金额(亿)" width="150" /> <el-table-column prop="zxz" label="专项债金额(亿)" sortable="custom" width="150" />
<el-table-column prop="specialCapital" label="专项债用作资本金(亿)" width="170" /> <el-table-column prop="specialCapital" label="专项债用作资本金(亿)" width="170" />
<el-table-column prop="projectEntity" label="项目主体"> <el-table-column prop="projectEntity" label="项目主体">
<!--<template slot-scope="scope">--> <!--<template slot-scope="scope">-->
...@@ -126,8 +128,9 @@ export default { ...@@ -126,8 +128,9 @@ export default {
for(var i=0;i<res.data.length;i++){ for(var i=0;i<res.data.length;i++){
var obj={}; var obj={};
obj.name=res.data[i].projectType; obj.name=res.data[i].projectType;
obj.value=res.data[i].count; obj.value=res.data[i].totalInvestment;
obj.totalInvestment=res.data[i].totalInvestment; obj.number=res.data[i].count;
// obj.totalInvestment=res.data[i].totalInvestment;
obj.proportion=res.data[i].proportion; obj.proportion=res.data[i].proportion;
list.push(obj) list.push(obj)
} }
...@@ -140,8 +143,6 @@ export default { ...@@ -140,8 +143,6 @@ export default {
for(let i=0; i<10; i++){ for(let i=0; i<10; i++){
data.push(arr[i]) data.push(arr[i])
} }
console.log(arr)
console.log(data)
this.initChart(data) this.initChart(data)
}) })
}, },
...@@ -156,8 +157,8 @@ export default { ...@@ -156,8 +157,8 @@ export default {
formatter: function (params) { formatter: function (params) {
var result = '' var result = ''
result+='<h3 style="color: #232226;padding: 0 0 5px 0;margin: 0;">'+ params.data.name +'</h3>' result+='<h3 style="color: #232226;padding: 0 0 5px 0;margin: 0;">'+ params.data.name +'</h3>'
result+='<p style="color: rgba(35,35,35,0.8);padding: 0;margin: 0;">'+ params.data.value +'个</p>' result+='<p style="color: rgba(35,35,35,0.8);padding: 0;margin: 0;">'+ params.data.number +'个</p>'
result+='<p style="color: rgba(35,35,35,0.8);padding: 0;margin: 0;">'+ params.data.totalInvestment +'亿元</p>' result+='<p style="color: rgba(35,35,35,0.8);padding: 0;margin: 0;">'+ params.data.value +'亿元</p>'
result+='<p style="color: rgba(35,35,35,0.8);padding: 0;margin: 0;">'+ params.data.proportion +'%</p>' result+='<p style="color: rgba(35,35,35,0.8);padding: 0;margin: 0;">'+ params.data.proportion +'%</p>'
return result; return result;
}, },
...@@ -189,8 +190,10 @@ export default { ...@@ -189,8 +190,10 @@ export default {
myChart.setOption(option); myChart.setOption(option);
}, },
sortChange({ column, prop, order }){ sortChange({ column, prop, order }){
if(prop === 'value'){ if(prop === 'number'){
this.queryParams.field = 'count' this.queryParams.field = 'count'
}else if(prop === 'value'){
this.queryParams.field = 'totalInvestment '
}else { }else {
this.queryParams.field = prop this.queryParams.field = prop
} }
...@@ -233,6 +236,19 @@ export default { ...@@ -233,6 +236,19 @@ export default {
this.pageIndex = val this.pageIndex = val
this.getData() this.getData()
}, },
sortChange1({ column, prop, order }){
this.tableParams.field = prop;
if(column.order === "ascending"){
this.tableParams.order = 'asc'
}else if(column.order === "descending"){
this.tableParams.order = 'desc'
}else {
this.tableParams.order=''
this.tableParams.field=''
}
this.pageIndex=1;
this.getData()
},
} }
} }
</script> </script>
......
...@@ -11,12 +11,6 @@ import java.util.List; ...@@ -11,12 +11,6 @@ import java.util.List;
**/ **/
@Data @Data
public class BusinessListDto { public class BusinessListDto {
/**
* 拜访方式
*/
private String visitWay;
/** /**
* 项目名称 * 项目名称
*/ */
......
...@@ -121,9 +121,14 @@ public class BusinessBrowseVo { ...@@ -121,9 +121,14 @@ public class BusinessBrowseVo {
private Integer backlogCount; private Integer backlogCount;
/** /**
* 资料文档统计 * 相关企业统计
*/ */
private Integer relateCompanyCount; private Integer relateCompanyCount;
/**
* 资料文档统计
*/
private Integer fileCount;
} }
...@@ -193,4 +193,9 @@ public class EnterpriseService { ...@@ -193,4 +193,9 @@ public class EnterpriseService {
public R remark(EnterpriseRemarkBody vo) throws Exception { public R remark(EnterpriseRemarkBody vo) throws Exception {
return R.ok(EncodeIdUtil.avDecode(EncodeIdUtil.binaryToUnicode(vo.mark))); return R.ok(EncodeIdUtil.avDecode(EncodeIdUtil.binaryToUnicode(vo.mark)));
} }
public R bondCreditRating(EnterpriseBondCreditRatingBody body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterprise/bondCreditRating", BeanUtil.beanToMap(body, false, false));
return BeanUtil.toBean(map, R.class);
}
} }
...@@ -3,6 +3,7 @@ package com.dsk.system.mapper; ...@@ -3,6 +3,7 @@ package com.dsk.system.mapper;
import com.dsk.common.core.domain.entity.BusinessFollowRecord; import com.dsk.common.core.domain.entity.BusinessFollowRecord;
import com.dsk.system.domain.BusinessIdDto; import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.BusinessListDto; import com.dsk.system.domain.BusinessListDto;
import com.dsk.system.domain.vo.BusinessListVo;
import java.util.List; import java.util.List;
...@@ -20,7 +21,7 @@ public interface BusinessFollowRecordMapper ...@@ -20,7 +21,7 @@ public interface BusinessFollowRecordMapper
* @param userId * @param userId
* @return * @return
*/ */
List<String> selectRelateProject (Integer userId); List<BusinessListVo> selectRelateProject (Integer userId);
/** /**
* 查询关联业主企业 * 查询关联业主企业
......
...@@ -3,6 +3,7 @@ package com.dsk.system.service; ...@@ -3,6 +3,7 @@ package com.dsk.system.service;
import com.dsk.common.core.domain.entity.BusinessFollowRecord; import com.dsk.common.core.domain.entity.BusinessFollowRecord;
import com.dsk.system.domain.BusinessIdDto; import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.BusinessListDto; import com.dsk.system.domain.BusinessListDto;
import com.dsk.system.domain.vo.BusinessListVo;
import java.util.List; import java.util.List;
...@@ -59,7 +60,7 @@ public interface IBusinessFollowRecordService ...@@ -59,7 +60,7 @@ public interface IBusinessFollowRecordService
* @param userId * @param userId
* @return * @return
*/ */
List<String> selectRelateProject (Integer userId); List<BusinessListVo> selectRelateProject (Integer userId);
/** /**
* 查询关联业主企业 * 查询关联业主企业
......
package com.dsk.system.service; package com.dsk.system.service;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.dtos.ComposeQueryDto; import com.dsk.common.dtos.ComposeQueryDto;
/** /**
...@@ -19,5 +19,5 @@ public interface RegionalEnterprisesService { ...@@ -19,5 +19,5 @@ public interface RegionalEnterprisesService {
*@Author: Dgm *@Author: Dgm
*@date: 2023/5/18 10:25 *@date: 2023/5/18 10:25
*/ */
AjaxResult page(ComposeQueryDto compose); TableDataInfo page(ComposeQueryDto compose) throws Exception;
} }
package com.dsk.system.service.impl; package com.dsk.system.service.impl;
import com.dsk.common.core.domain.entity.BusinessFollowRecord; import com.dsk.common.core.domain.entity.BusinessFollowRecord;
import com.dsk.common.exception.base.BaseException;
import com.dsk.common.utils.DateUtils; import com.dsk.common.utils.DateUtils;
import com.dsk.common.utils.SecurityUtils;
import com.dsk.system.domain.BusinessIdDto; import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.domain.BusinessListDto; import com.dsk.system.domain.BusinessListDto;
import com.dsk.system.domain.vo.BusinessListVo;
import com.dsk.system.mapper.BusinessFollowRecordMapper; import com.dsk.system.mapper.BusinessFollowRecordMapper;
import com.dsk.system.service.IBusinessFollowRecordService; import com.dsk.system.service.IBusinessFollowRecordService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -45,11 +48,11 @@ public class BusinessFollowRecordServiceImpl implements IBusinessFollowRecordSer ...@@ -45,11 +48,11 @@ public class BusinessFollowRecordServiceImpl implements IBusinessFollowRecordSer
@Override @Override
public List<BusinessFollowRecord> allFollow(BusinessListDto dto) { public List<BusinessFollowRecord> allFollow(BusinessListDto dto) {
//userId不传值,就查询全部门项目 //userId不传值,就查询全部门项目
// if (dto.getUserId() == null) { if (dto.getUserId() == null) {
// Long deptId = SecurityUtils.getLoginUser().getDeptId(); Long deptId = SecurityUtils.getLoginUser().getDeptId();
// if (deptId == null) throw new BaseException("请登录"); if (deptId == null) throw new BaseException("请登录");
// dto.setDeptId(deptId.intValue()); dto.setDeptId(deptId.intValue());
// } }
return businessFollowRecordMapper.allFollow(dto); return businessFollowRecordMapper.allFollow(dto);
} }
...@@ -72,7 +75,7 @@ public class BusinessFollowRecordServiceImpl implements IBusinessFollowRecordSer ...@@ -72,7 +75,7 @@ public class BusinessFollowRecordServiceImpl implements IBusinessFollowRecordSer
} }
@Override @Override
public List<String> selectRelateProject(Integer userId) { public List<BusinessListVo> selectRelateProject(Integer userId) {
return businessFollowRecordMapper.selectRelateProject(userId); return businessFollowRecordMapper.selectRelateProject(userId);
} }
......
...@@ -80,11 +80,11 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService { ...@@ -80,11 +80,11 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
@Override @Override
public List<BusinessListVo> selectBusinessInfoList(BusinessListDto dto) { public List<BusinessListVo> selectBusinessInfoList(BusinessListDto dto) {
//userId不传值,就查询全部门项目 //userId不传值,就查询全部门项目
// if (dto.getUserId() == null) { if (dto.getUserId() == null) {
// Long deptId = SecurityUtils.getLoginUser().getDeptId(); Long deptId = SecurityUtils.getLoginUser().getDeptId();
// if (deptId == null) throw new BaseException("请登录"); if (deptId == null) throw new BaseException("请登录");
// dto.setDeptId(deptId.intValue()); dto.setDeptId(deptId.intValue());
// } }
return businessInfoMapper.selectBusinessInfoList(dto); return businessInfoMapper.selectBusinessInfoList(dto);
} }
...@@ -105,7 +105,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService { ...@@ -105,7 +105,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
businessBrowseVo.setFollowRecordCount(total.getFollowRecordCount()); businessBrowseVo.setFollowRecordCount(total.getFollowRecordCount());
businessBrowseVo.setRelateCompanyCount(total.getRelateCompanyCount()); businessBrowseVo.setRelateCompanyCount(total.getRelateCompanyCount());
//资料文档统计 //资料文档统计
businessBrowseVo.setRelateCompanyCount(FileUtils.getAllFileNames(RuoYiConfig.getProfile()+businessId).size()); businessBrowseVo.setFileCount(FileUtils.getAllFileNames(RuoYiConfig.getProfile()+businessId).size());
return businessBrowseVo; return businessBrowseVo;
} }
......
package com.dsk.system.service.impl; package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.dtos.ComposeQueryDto; import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.common.utils.DskOpenApiUtil; import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.system.service.RegionalEnterprisesService; import com.dsk.system.service.RegionalEnterprisesService;
...@@ -24,8 +24,8 @@ public class RegionalEnterprisesServiceImpl implements RegionalEnterprisesServic ...@@ -24,8 +24,8 @@ public class RegionalEnterprisesServiceImpl implements RegionalEnterprisesServic
private DskOpenApiUtil dskOpenApiUtil; private DskOpenApiUtil dskOpenApiUtil;
@Override @Override
public AjaxResult page(ComposeQueryDto compose) { public TableDataInfo page(ComposeQueryDto compose) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/page", BeanUtil.beanToMap(compose, false, false)); Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/page", BeanUtil.beanToMap(compose, false, false));
return BeanUtil.toBean(map, AjaxResult.class); return dskOpenApiUtil.responsePage(map);
} }
} }
...@@ -75,29 +75,20 @@ ...@@ -75,29 +75,20 @@
<if test="deptId != null"> <if test="deptId != null">
and u.dept_id = #{deptId} and u.dept_id = #{deptId}
</if> </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> </where>
ORDER BY f.creat_time DESC ORDER BY f.creat_time DESC
</select> </select>
<select id="selectRelateProject" resultType="java.lang.String"> <select id="selectRelateProject" resultType="com.dsk.system.domain.vo.BusinessListVo">
select i.project_name select i.id,i.project_name as projectName
from business_info i from business_info i
left join business_follow_record f on f.business_id = i.id left join business_user u on u.business_id = i.id
where f.user_id = #{userId} where u.user_id = #{userId}
</select> </select>
<select id="selectRelateCompany" resultType="java.lang.String"> <select id="selectRelateCompany" resultType="java.lang.String">
select i.construction_unit select i.construction_unit
from business_info i from business_info i
left join business_follow_record f on f.business_id = i.id left join business_user u on u.business_id = i.id
where f.user_id = #{userId} where u.user_id = #{userId}
</select> </select>
<insert id="insertBusinessFollowRecord" parameterType="com.dsk.common.core.domain.entity.BusinessFollowRecord" useGeneratedKeys="true" <insert id="insertBusinessFollowRecord" parameterType="com.dsk.common.core.domain.entity.BusinessFollowRecord" useGeneratedKeys="true"
......
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