Commit 4734e3c6 authored by dengguangman's avatar dengguangman

Merge remote-tracking branch 'origin/master'

parents 3091daf9 6306f4e5
...@@ -46,7 +46,7 @@ public class BusinessBacklogController extends BaseController ...@@ -46,7 +46,7 @@ public class BusinessBacklogController extends BaseController
*/ */
// @PreAuthorize("@ss.hasPermi('system:backlog:list')") // @PreAuthorize("@ss.hasPermi('system:backlog:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(@RequestBody BusinessBacklog businessBacklog) public TableDataInfo list(@RequestBody(required=false) BusinessBacklog businessBacklog)
{ {
startPage(); startPage();
List<BusinessBacklog> list = businessBacklogService.selectBusinessBacklogList(businessBacklog); List<BusinessBacklog> list = businessBacklogService.selectBusinessBacklogList(businessBacklog);
......
...@@ -40,7 +40,7 @@ public class BusinessContactsController extends BaseController ...@@ -40,7 +40,7 @@ public class BusinessContactsController extends BaseController
*/ */
// @PreAuthorize("@ss.hasPermi('system:contacts:list')") // @PreAuthorize("@ss.hasPermi('system:contacts:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(@RequestBody BusinessContacts businessContacts) public TableDataInfo list(@RequestBody(required=false) BusinessContacts businessContacts)
{ {
startPage(); startPage();
List<BusinessContacts> list = businessContactsService.selectBusinessContactsList(businessContacts); List<BusinessContacts> list = businessContactsService.selectBusinessContactsList(businessContacts);
......
...@@ -17,6 +17,10 @@ import com.dsk.common.core.controller.BaseController; ...@@ -17,6 +17,10 @@ import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.enums.BusinessType; import com.dsk.common.enums.BusinessType;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/** /**
* 项目详情Controller * 项目详情Controller
...@@ -31,11 +35,17 @@ public class BusinessInfoController extends BaseController ...@@ -31,11 +35,17 @@ public class BusinessInfoController extends BaseController
@Autowired @Autowired
private IBusinessInfoService businessInfoService; private IBusinessInfoService businessInfoService;
/**
* 项目批量导入
*/
@PostMapping("/upload")
public AjaxResult batchUpload(@RequestParam(value="file",required = false) MultipartFile file, HttpServletRequest request, HttpServletResponse response){
return businessInfoService.batchUpload(file,response);
}
/** /**
* 查询所有项目名称(支持模糊查询) * 查询所有项目名称(支持模糊查询)
*/ */
// @PreAuthorize("@ss.hasPermi('system:info:list')")
@PostMapping("/query/project") @PostMapping("/query/project")
public AjaxResult queryprojectName(@RequestBody BusinessListDto dto){ public AjaxResult queryprojectName(@RequestBody BusinessListDto dto){
return AjaxResult.success(businessInfoService.selectProjectName(dto)); return AjaxResult.success(businessInfoService.selectProjectName(dto));
...@@ -44,9 +54,9 @@ public class BusinessInfoController extends BaseController ...@@ -44,9 +54,9 @@ public class BusinessInfoController extends BaseController
/** /**
* 查询项目列表 * 查询项目列表
*/ */
// @PreAuthorize("@ss.hasPermi('system:info:list')") // @PreAuthorize("@ss.hasPermi('system:business:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(@RequestBody BusinessListDto dto) public TableDataInfo list(@RequestBody(required=false) BusinessListDto dto)
{ {
startPage(); startPage();
List<BusinessListVo> list = businessInfoService.selectBusinessInfoList(dto); List<BusinessListVo> list = businessInfoService.selectBusinessInfoList(dto);
...@@ -56,7 +66,7 @@ public class BusinessInfoController extends BaseController ...@@ -56,7 +66,7 @@ public class BusinessInfoController extends BaseController
/** /**
* 查询项目速览 * 查询项目速览
*/ */
// @PreAuthorize("@ss.hasPermi('system:info:list')") // @PreAuthorize("@ss.hasPermi('system:business:query')")
@GetMapping("/browse/{businessId}") @GetMapping("/browse/{businessId}")
public AjaxResult browse(@PathVariable Integer id) public AjaxResult browse(@PathVariable Integer id)
{ {
...@@ -66,7 +76,7 @@ public class BusinessInfoController extends BaseController ...@@ -66,7 +76,7 @@ public class BusinessInfoController extends BaseController
/** /**
* 获取项目建设内容 * 获取项目建设内容
*/ */
// @PreAuthorize("@ss.hasPermi('system:info:query')") // @PreAuthorize("@ss.hasPermi('system:business:query')")
@GetMapping(value = "/construction/{id}") @GetMapping(value = "/construction/{id}")
public AjaxResult getConstruction(@PathVariable("id") Integer id) public AjaxResult getConstruction(@PathVariable("id") Integer id)
{ {
...@@ -76,8 +86,8 @@ public class BusinessInfoController extends BaseController ...@@ -76,8 +86,8 @@ public class BusinessInfoController extends BaseController
/** /**
* 删除项目列表 * 删除项目列表
*/ */
// @PreAuthorize("@ss.hasPermi('system:info:remove')") // @PreAuthorize("@ss.hasPermi('system:business:remove')")
// @Log(title = "项目详情", businessType = BusinessType.DELETE) @Log(title = "项目管理", businessType = BusinessType.DELETE)
@DeleteMapping("/remove/{ids}") @DeleteMapping("/remove/{ids}")
public AjaxResult remove(@PathVariable(value = "ids",required=false) Long[] ids) public AjaxResult remove(@PathVariable(value = "ids",required=false) Long[] ids)
{ {
...@@ -87,8 +97,8 @@ public class BusinessInfoController extends BaseController ...@@ -87,8 +97,8 @@ public class BusinessInfoController extends BaseController
/** /**
* 新增项目详情 * 新增项目详情
*/ */
// @PreAuthorize("@ss.hasPermi('system:info:add')") // @PreAuthorize("@ss.hasPermi('system:business:add')")
// @Log(title = "项目详情", businessType = BusinessType.INSERT) @Log(title = "项目管理", businessType = BusinessType.INSERT)
@PostMapping("/add") @PostMapping("/add")
public AjaxResult add(@RequestBody BusinessAddDto dto) public AjaxResult add(@RequestBody BusinessAddDto dto)
{ {
...@@ -98,8 +108,8 @@ public class BusinessInfoController extends BaseController ...@@ -98,8 +108,8 @@ public class BusinessInfoController extends BaseController
/** /**
* 修改项目详情 * 修改项目详情
*/ */
// @PreAuthorize("@ss.hasPermi('system:info:edit')") // @PreAuthorize("@ss.hasPermi('system:business:edit')")
// @Log(title = "项目详情", businessType = BusinessType.UPDATE) @Log(title = "项目管理", businessType = BusinessType.UPDATE)
@PostMapping("/edit") @PostMapping("/edit")
public AjaxResult edit(@RequestBody BusinessInfo businessInfo) public AjaxResult edit(@RequestBody BusinessInfo businessInfo)
{ {
......
...@@ -49,7 +49,7 @@ public class BusinessRelateCompanyController extends BaseController ...@@ -49,7 +49,7 @@ public class BusinessRelateCompanyController extends BaseController
*/ */
// @PreAuthorize("@ss.hasPermi('system:company:list')") // @PreAuthorize("@ss.hasPermi('system:company:list')")
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(BusinessRelateCompany businessRelateCompany) public TableDataInfo list(@RequestBody(required=false) BusinessRelateCompany businessRelateCompany)
{ {
startPage(); startPage();
List<BusinessRelateCompany> list = businessRelateCompanyService.selectBusinessRelateCompanyList(businessRelateCompany); List<BusinessRelateCompany> list = businessRelateCompanyService.selectBusinessRelateCompanyList(businessRelateCompany);
......
package com.dsk.web.controller.customer; package com.dsk.web.controller.customer;
import cn.hutool.core.bean.BeanException;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.http.HttpException; import cn.hutool.http.HttpException;
...@@ -15,6 +16,7 @@ import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto; ...@@ -15,6 +16,7 @@ import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto;
import com.dsk.system.domain.customer.dto.CustomerSearchDto; import com.dsk.system.domain.customer.dto.CustomerSearchDto;
import com.dsk.system.service.ICustomerService; import com.dsk.system.service.ICustomerService;
import com.dsk.web.controller.search.service.BusinessOpportunityRadarService; import com.dsk.web.controller.search.service.BusinessOpportunityRadarService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
...@@ -66,6 +68,17 @@ public class CustomerController extends BaseController { ...@@ -66,6 +68,17 @@ public class CustomerController extends BaseController {
@PostMapping() @PostMapping()
@RepeatSubmit @RepeatSubmit
public AjaxResult add(@RequestBody Customer customer) { public AjaxResult add(@RequestBody Customer customer) {
if (ObjectUtils.isEmpty(customer.getCompanyName())) throw new BeanException("企业名称不能为空");
if (ObjectUtils.isEmpty(customer.getCompanyId())) {
try {
Map<String, Object> map = opportunityRadarService.enterpriseByName(customer.getCompanyName());
if (!ObjectUtils.isEmpty(map.get("data"))) {
customer.setCompanyId(MapUtil.getInt(BeanUtil.beanToMap(map.get("data")), "jskEid"));
}
} catch (Exception e) {
logger.debug("获取企业id错误!error:{}", e.getMessage());
}
}
return AjaxResult.success(baseService.add(customer)); return AjaxResult.success(baseService.add(customer));
} }
......
...@@ -45,12 +45,6 @@ public class EnterpriseController { ...@@ -45,12 +45,6 @@ public class EnterpriseController {
return enterpriseService.bidDataGroup(vo); return enterpriseService.bidDataGroup(vo);
} }
@ApiOperation(value = "供应商列表(建设库)")
@PostMapping(value = "supplierPage")
public R supplierPage(@RequestBody @Valid EnterpriseSupplierPageBody vo) throws Exception {
return enterpriseService.supplierPage(vo);
}
@ApiOperation(value = "甲方业绩数据(openApi)") @ApiOperation(value = "甲方业绩数据(openApi)")
@PostMapping(value = "projectTenderDataGroup") @PostMapping(value = "projectTenderDataGroup")
public R projectTenderDataGroup(@RequestBody @Valid EnterpriseProjectTenderDataGroupBody vo) throws Exception { public R projectTenderDataGroup(@RequestBody @Valid EnterpriseProjectTenderDataGroupBody vo) throws Exception {
...@@ -75,30 +69,6 @@ public class EnterpriseController { ...@@ -75,30 +69,6 @@ public class EnterpriseController {
return enterpriseService.affiliates(vo); return enterpriseService.affiliates(vo);
} }
@ApiOperation(value = "招标公告列表(建设库)")
@PostMapping(value = "bidNoticePage")
public R bidNoticePage(@RequestBody @Valid EnterpriseBidNoticePageBody vo) throws Exception {
return enterpriseService.bidNoticePage(vo);
}
@ApiOperation(value = "招标公告省份(建设库)")
@PostMapping(value = "bidNoticeProvince")
public R bidNoticeProvince(@RequestBody @Valid EnterpriseBidNoticePageBody vo) throws Exception {
return enterpriseService.bidNoticeProvince(vo);
}
@ApiOperation(value = "招标公告信息类型(建设库)")
@PostMapping(value = "bidNoticeTenderStage")
public R bidNoticeTenderStage(@RequestBody @Valid EnterpriseBidNoticePageBody vo) throws Exception {
return enterpriseService.bidNoticeTenderStage(vo);
}
@ApiOperation(value = "招标公告详情(建设库)")
@PostMapping(value = "bidNoticeDeatil")
public R bidNoticeDeatil(@RequestBody @Valid EnterpriseBidNoticeDetailBody vo) throws Exception {
return enterpriseService.bidNoticeDeatil(vo);
}
@ApiOperation(value = "企业动态列表(建设库)") @ApiOperation(value = "企业动态列表(建设库)")
@PostMapping(value = "dynamicPage") @PostMapping(value = "dynamicPage")
public TableDataInfo dynamicPage(@RequestBody @Valid EnterpriseDynamicPageBody vo) throws Exception { public TableDataInfo dynamicPage(@RequestBody @Valid EnterpriseDynamicPageBody vo) throws Exception {
...@@ -129,4 +99,10 @@ public class EnterpriseController { ...@@ -129,4 +99,10 @@ public class EnterpriseController {
return enterpriseService.bestStockPage(vo); return enterpriseService.bestStockPage(vo);
} }
@ApiOperation(value = "财务简析(openApi)")
@PostMapping(value = "financial")
public R financial(@RequestBody @Valid EnterpriseFinancialBody vo) throws Exception {
return enterpriseService.financial(vo);
}
} }
...@@ -26,7 +26,7 @@ public class CompanySearchController { ...@@ -26,7 +26,7 @@ public class CompanySearchController {
*/ */
@RequestMapping("/index") @RequestMapping("/index")
public AjaxResult landMarketPage(@RequestBody ComposeQueryDto compose) { public AjaxResult landMarketPage(@RequestBody ComposeQueryDto compose) {
return opportunityRadarService.enterprisePage(compose); return opportunityRadarService.enterpriseIndex(compose);
} }
/* /*
...@@ -36,4 +36,12 @@ public class CompanySearchController { ...@@ -36,4 +36,12 @@ public class CompanySearchController {
public AjaxResult findByName(@PathVariable String keyword) { public AjaxResult findByName(@PathVariable String keyword) {
return opportunityRadarService.enterpriseByName(keyword); return opportunityRadarService.enterpriseByName(keyword);
} }
/*
* 完全匹配企业名称
*/
@GetMapping("/page")
public AjaxResult page(@RequestBody ComposeQueryDto compose) {
return opportunityRadarService.enterprisePage(compose);
}
} }
...@@ -18,10 +18,12 @@ public interface BusinessOpportunityRadarService { ...@@ -18,10 +18,12 @@ public interface BusinessOpportunityRadarService {
AjaxResult landMarketPage(ComposeQueryDto compose); AjaxResult landMarketPage(ComposeQueryDto compose);
AjaxResult establishmentPage(ComposeQueryDto compose); AjaxResult establishmentPage(ComposeQueryDto compose);
AjaxResult enterprisePage(ComposeQueryDto compose); AjaxResult enterpriseIndex(ComposeQueryDto compose);
AjaxResult enterpriseByName(String keyword); AjaxResult enterpriseByName(String keyword);
AjaxResult enterprisePage(ComposeQueryDto compose);
AjaxResult bondProjectPage(ComposeQueryDto compose); AjaxResult bondProjectPage(ComposeQueryDto compose);
AjaxResult jskBidPlanPage(ComposeQueryDto compose); AjaxResult jskBidPlanPage(ComposeQueryDto compose);
......
...@@ -51,11 +51,18 @@ public class BusinessOpportunityRadarServiceImpl implements BusinessOpportunityR ...@@ -51,11 +51,18 @@ public class BusinessOpportunityRadarServiceImpl implements BusinessOpportunityR
} }
@Override @Override
public AjaxResult enterprisePage(ComposeQueryDto compose) { public AjaxResult enterpriseIndex(ComposeQueryDto compose) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/index", BeanUtil.beanToMap(compose, false, false)); Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/index", BeanUtil.beanToMap(compose, false, false));
return BeanUtil.toBean(map, AjaxResult.class); return BeanUtil.toBean(map, AjaxResult.class);
} }
@Override
public AjaxResult enterprisePage(ComposeQueryDto compose) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/enterprice/page", BeanUtil.beanToMap(compose, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override @Override
public AjaxResult enterpriseByName(String keyword){ public AjaxResult enterpriseByName(String keyword){
Map<String,Object> params = new HashMap<>(); Map<String,Object> params = new HashMap<>();
......
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 EnterpriseFinancialBody
{
/**
* 企业id
*/
@NotNull(message = "企业id不能为空")
private Integer cid;
}
...@@ -32,7 +32,8 @@ public class DskOpenApiUtil { ...@@ -32,7 +32,8 @@ public class DskOpenApiUtil {
} }
public Map<String,Object> requestBodyLocal(String path, Map<String, Object> bodyMap){ public Map<String,Object> requestBodyLocal(String path, Map<String, Object> bodyMap){
return JSONUtil.toBean(HttpUtil.post("http://127.0.0.1:8766"+path, JSONUtil.toJsonStr(bodyMap)), JSONConfig.create().setIgnoreNullValue(true), Map.class); String post = HttpUtil.post("http://127.0.0.1:8766" + path, JSONUtil.toJsonStr(bodyMap));
return CommonUtils.assertAsMap(CommonUtils.parseJSON(post));
} }
public Map<String,Object> requestBodyWithHeader(String path, Map<String, Object> bodyMap, Map<String, String> headerMap){ public Map<String,Object> requestBodyWithHeader(String path, Map<String, Object> bodyMap, Map<String, String> headerMap){
......
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
"highlight.js": "9.18.5", "highlight.js": "9.18.5",
"js-beautify": "1.13.0", "js-beautify": "1.13.0",
"js-cookie": "3.0.1", "js-cookie": "3.0.1",
"js-md5": "^0.7.3",
"jsencrypt": "3.0.0-rc.1", "jsencrypt": "3.0.0-rc.1",
"nprogress": "0.2.0", "nprogress": "0.2.0",
"quill": "1.3.7", "quill": "1.3.7",
......
import request from '@/utils/request'
// 合作情况列表
export function getList(data) {
return request({
url: '/customer/business/list',
method: 'get',
params:data
})
}
// 客户详情
export function customerInfo(data) {
return request({
url: '/customer/'+data,
method: 'get'
})
}
// 编辑客户
export function customerUpdate(data) {
return request({
url: '/customer/',
method: 'put',
data: data
})
}
// 模糊查询项目名称
export function queryProject(data) {
return request({
url: '/business/info/query/project',
method: 'post',
data
})
}
...@@ -17,3 +17,4 @@ export function addChain(data) { ...@@ -17,3 +17,4 @@ export function addChain(data) {
data:data data:data
}) })
} }
...@@ -8,7 +8,6 @@ export function penalizePage(data) { ...@@ -8,7 +8,6 @@ export function penalizePage(data) {
data:data data:data
}) })
} }
// 行政处罚类型 // 行政处罚类型
export function penalizeReasonType(data) { export function penalizeReasonType(data) {
return request({ return request({
...@@ -17,3 +16,22 @@ export function penalizeReasonType(data) { ...@@ -17,3 +16,22 @@ export function penalizeReasonType(data) {
data:data data:data
}) })
} }
// 经营异常列表
export function abnormalPage(data) {
return request({
url: '/enterpriseCredit/abnormalPage',
method: 'post',
data:data
})
}
// 经营异常年份
export function abnormalYears(data) {
return request({
url: '/enterpriseCredit/abnormalYears',
method: 'post',
data:data
})
}
import request from '@/utils/request'
// 土地交易用途
export function landUse(data) {
return request({
url: '/enterpriseProject/landUse',
method: 'post',
data
})
}
// 土地交易列表
export function landTransactionPage(data) {
return request({
url: '/enterpriseProject/landTransactionPage',
method: 'post',
data
})
}
// 区域经济
export function regionalEconomy(data) {
return request({
url: '/economic/regional/list',
method: 'post',
data
})
}
// 同地区城投
export function urbanInvestmentPage(data) {
return request({
url: '/urbanInvestment/page',
method: 'post',
data
})
}
...@@ -82,12 +82,6 @@ ...@@ -82,12 +82,6 @@
&:hover{ &:hover{
background: #F3F4F5; background: #F3F4F5;
} }
.txt{
padding-left: 8px;
opacity: 0.4;
display: inline-block;
width: 100%;
}
.el-input{ .el-input{
margin-right: 8px; margin-right: 8px;
.el-input__inner{ .el-input__inner{
...@@ -100,67 +94,100 @@ ...@@ -100,67 +94,100 @@
text-indent: 8px; text-indent: 8px;
} }
} }
.el-date-editor--date{
.el-input__prefix{
display: none;
}
}
&.i{
.el-input{
.el-input__inner{
width: 100px;
}
}
}
}
.txt{
padding-left: 8px;
color: rgba(35,35,35,0.4);
display: inline-block;
width: 100%;
} }
width: 438px; width: 438px;
&.i{ &.i{
width: auto; width: auto;
} }
.tipinput{ .inputime{
display: inline-block; display: inline-block;
margin-top: 1px; width: 184px;
width: calc(100% - 116px); height: 28px;
.el-input{ border-radius: 2px;
float: left; line-height: 28px;
margin-right: 8px; cursor: pointer;
width: 70px; >span{
margin-bottom: 10px; padding-left: 8px;
.el-input__inner{
width: 70px;
height: 24px;
background: #F3F4F5;
border-radius: 2px;
padding: 0;
text-indent: 14px;
border: 0;
}
} }
.addbtn{ .el-icon-caret-bottom{
float: left; color: rgba(35,35,32,0.4);
width: 20px; margin-left: 4px;
height: 20px;
background: url("../../assets/images/project/add.png") no-repeat center center;
background-size: 100%;
display: inline-block;
margin-left: 8px;
margin-top: 2px;
&:hover{
background: url("../../assets/images/project/add_1.png") no-repeat center center;
}
} }
.tips{ }
float: left; }
height: 24px; }
line-height: 24px; .tipinput{
padding: 0 14px; display: inline-block;
font-size: 14px; margin-top: 1px;
color: #0081FF; width: calc(100% - 116px);
background: #E4F3FD; .el-input{
margin-right: 8px; float: left;
margin-bottom: 5px; margin-right: 8px;
img{ width: 70px;
margin-left: 8px; margin-bottom: 10px;
margin-top: 4px; .el-input__inner{
float: right; width: 70px;
width: 16px; height: 24px;
display: none; background: #F3F4F5;
cursor: pointer; border-radius: 2px;
} padding: 0;
&:hover{ text-indent: 14px;
background: #DCEAF3; border: 0;
img{ }
display: block; }
} .addbtn{
} float: left;
width: 20px;
height: 20px;
background: url("../../assets/images/project/add.png") no-repeat center center;
background-size: 100%;
display: inline-block;
margin-left: 8px;
margin-top: 2px;
&:hover{
background: url("../../assets/images/project/add_1.png") no-repeat center center;
}
}
.tips{
float: left;
height: 24px;
line-height: 24px;
padding: 0 14px;
font-size: 14px;
color: #0081FF;
background: #E4F3FD;
margin-right: 8px;
margin-bottom: 5px;
img{
margin-left: 8px;
margin-top: 4px;
float: right;
width: 16px;
display: none;
cursor: pointer;
}
&:hover{
background: #DCEAF3;
img{
display: block;
} }
} }
} }
...@@ -543,7 +570,7 @@ ...@@ -543,7 +570,7 @@
.el-input__prefix{ .el-input__prefix{
left: 8px; left: 8px;
top: 4px; top: -2px;
} }
.el-input__suffix{ .el-input__suffix{
height: 32px; height: 32px;
...@@ -673,6 +700,15 @@ ...@@ -673,6 +700,15 @@
text-align: center; text-align: center;
display: inline-block; display: inline-block;
margin-left: 10px; margin-left: 10px;
&.on{
background: #FF3C3C;
color: #FF3C3C;
}
&:hover{
border: 1px solid #FF3C3C;
color: #FF3C3C;
background: #FFEBEB;
}
} }
} }
.tasklist{ .tasklist{
...@@ -701,6 +737,21 @@ ...@@ -701,6 +737,21 @@
border-radius: 4px; border-radius: 4px;
right: 16px; right: 16px;
top: 30px; top: 30px;
padding: 8px 12px;
line-height: 16px;
box-sizing: border-box;
&.on{
background: #D3F0E8;
.color_text{
color: #0CBC6D;
}
}
.select-popper{
margin: 0;
}
.el-icon-caret-bottom{
color:rgba(35,35,35,0.4) ;
}
} }
} }
} }
......
...@@ -306,7 +306,7 @@ select { ...@@ -306,7 +306,7 @@ select {
.el-dropdown-land .el-icon-caret-bottom { .el-dropdown-land .el-icon-caret-bottom {
color: #333333; color: #333333;
margin-left: 4px; margin-left: 2px;
} }
.land_date_picker { .land_date_picker {
......
...@@ -106,6 +106,12 @@ export const constantRoutes = [ ...@@ -106,6 +106,12 @@ export const constantRoutes = [
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: () => import('@/views/detail/structure/index'),
name: 'Structure',
meta: { title: '企业链图' }
} }
] ]
}, },
...@@ -150,6 +156,20 @@ export const constantRoutes = [ ...@@ -150,6 +156,20 @@ export const constantRoutes = [
meta: { title: '土地交易详情', icon: 'radar' } meta: { title: '土地交易详情', icon: 'radar' }
} }
] ]
},
{
path: '/Establishment',
component: Layout,
hidden: true,
redirect: 'noredirect',
children: [
{
path: '/radar/Establishment/details/:id(\\d+)',
component: () => import('@/views/radar/Establishment/details'),
name: 'EstablishmentDetails',
meta: { title: '拟建项目详情', icon: 'radar' }
}
]
} }
] ]
......
<template> <template>
<div id="detailPart" class="detail-container" :style="sideHeight?'height:'+sideHeight+'px':''"> <div id="detailPart" class="sides-container" :style="sideHeight?'height:'+sideHeight+'px':''">
<el-input <el-input
placeholder="搜索" placeholder="搜索"
class="side-input" class="side-input"
...@@ -134,7 +134,7 @@ export default { ...@@ -134,7 +134,7 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
#app{ #app{
.detail-container{ .sides-container{
width: 144px; width: 144px;
min-height: calc(100vh - 170px); min-height: calc(100vh - 170px);
padding-bottom: 20px; padding-bottom: 20px;
......
...@@ -21,7 +21,6 @@ ...@@ -21,7 +21,6 @@
</el-table-column> </el-table-column>
<template v-for="item in forData"> <template v-for="item in forData">
<el-table-column <el-table-column
v-if="item.slot"
:label="item.label" :label="item.label"
:prop="item.prop" :prop="item.prop"
:width="item.width" :width="item.width"
...@@ -29,23 +28,21 @@ ...@@ -29,23 +28,21 @@
:fixed="item.fixed" :fixed="item.fixed"
:sortable="item.sortable" :sortable="item.sortable"
:resizable="false"> :resizable="false">
<template v-if="item.slotHeader" slot="header">
<slot :name="item.slotName"></slot>
</template>
<template slot-scope="scope"> <template slot-scope="scope">
<slot :name="item.prop" :row="item" :index="scope.$index" :data="scope.row.punishReason"></slot> <slot v-if="item.slot" :name="item.prop" :row="scope.row" :index="scope.$index" :data="item"></slot>
<span v-else>
{{ scope.row[item.prop] }}
</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column
v-else
:label="item.label"
:prop="item.prop"
:width="item.width"
align="left"
:fixed="item.fixed"
:sortable="item.sortable"
:resizable="false" />
</template> </template>
</el-table> </el-table>
</div> </div>
<div class="pagination-box"> <div class="pagination-box" v-if="paging">
<el-pagination background :current-page="queryParams.pageNum" :page-size="queryParams.pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" /> <el-pagination background :current-page="queryParams.pageNum" :page-size="queryParams.pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
</div> </div>
</div> </div>
...@@ -83,6 +80,10 @@ export default { ...@@ -83,6 +80,10 @@ export default {
type: Object, type: Object,
default: {} default: {}
}, },
paging: {
type: Boolean,
default: true
},
}, },
data() { data() {
return { return {
...@@ -104,5 +105,7 @@ export default { ...@@ -104,5 +105,7 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
::v-deep .el-table__body tr.current-row > td.el-table__cell{
background-color: #ffffff;
}
</style> </style>
...@@ -2,7 +2,6 @@ ...@@ -2,7 +2,6 @@
<div class="cooperate"> <div class="cooperate">
<template v-if="ifEmpty"> <template v-if="ifEmpty">
<head-form <head-form
:form-data="formData" :form-data="formData"
:query-params="queryParams" :query-params="queryParams"
...@@ -25,7 +24,14 @@ ...@@ -25,7 +24,14 @@
:tableDataTotal="tableDataTotal" :tableDataTotal="tableDataTotal"
:queryParams="queryParams" :queryParams="queryParams"
@handle-current-change="handleCurrentChange" @handle-current-change="handleCurrentChange"
/> >
<template slot="projcetName" slot-scope="scope">
{{scope}}
<!-- <router-link :to="'' + scope.row.dictId" class="link-type">-->
<!-- <span>{{ scope.row.dictType }}</span>-->
<!-- </router-link>-->
</template>
</tables>
</template> </template>
<template v-else> <template v-else>
...@@ -37,10 +43,10 @@ ...@@ -37,10 +43,10 @@
</div> </div>
</template> </template>
<!-- 弹窗添加合作情况 --> <!-- 弹窗关联项目 -->
<el-drawer <el-drawer
title="添加合作情况" title="添加合作情况"
size="53%" size="40%"
:visible.sync="drawer" :visible.sync="drawer"
:direction="direction" :direction="direction"
:with-header="false" :with-header="false"
...@@ -49,81 +55,62 @@ ...@@ -49,81 +55,62 @@
<div class="addhzqk_top"> <div class="addhzqk_top">
<div class="addhzqk_top_t"> <div class="addhzqk_top_t">
<div class="top_t_h1"> <div class="top_t_h1">
<img src="@/assets/images/economies/icon.png" />重庆轨道交通(集团)有限公司 <img src="@/assets/images/economies/icon.png" />{{ info.companyName }}
</div> </div>
<div class="top_t_close"><i class="el-icon-close" @click="handleClose"></i></div> <div class="top_t_close"><i class="el-icon-close" @click="handleClose"></i></div>
</div> </div>
<div class="addhzqk_top_d"> <div class="addhzqk_top_d">
<div class="top_d_item"> <div class="top_d_item">
法定代表人:<span>王志</span> 法定代表人:<span>{{ info.legalPerson }}</span>
</div> </div>
<div class="top_d_item"> <div class="top_d_item">
注册资本:<span>356889.88</span> 注册资本:<span>{{ info.registerCapital }}</span>
</div> </div>
<div class="top_d_item"> <div class="top_d_item">
注册地址:<span>重庆市渝北区财富大道19号1幢(财富三号A栋6楼1、2#-1)</span> 注册地址:<span>{{ info.registerAddress }}</span>
</div> </div>
</div> </div>
</div> </div>
<div class="addhzqk_from"> <div class="addhzqk_from">
<el-form ref="queryForm" :model="queryParams" size="small" label-width="126px"> <el-form :model="addParam" :rules="rules" ref="addParam" size="small" label-width="126px">
<el-form-item label="项目名称:"> <el-form-item label="项目名称:" prop="projectName">
<el-input v-model="queryParams.name" placeholder="请输入项目名称"></el-input> <el-input v-model="addParam.projectName" placeholder="请输入项目名称" @input="getCompany1"></el-input>
<div class="resultlist" v-if="showlist1">
<div v-for="(item,index) in companData1" @click="selCompany1(item)"><span v-html="item"></span></div>
</div>
</el-form-item>
<el-form-item label="业主单位:" prop="ownerCompany">
<el-input v-model="addParam.ownerCompany" placeholder="请输入业主单位" @input="getCompany"></el-input>
<div class="resultlist" v-if="showlist">
<div v-for="(item,index) in companData" @click="selCompany(item)"><span v-html="item.name"></span></div>
</div>
</el-form-item>
<el-form-item label="项目阶段:" prop="projectStage">
<el-select v-model="addParam.projectStage" style="width: 100%" class="form-content-width" placeholder="请选择项目状态">
<el-option v-for="(item, index) in projectStage" :key="index" :label="item.dictLabel" :value="item.dictValue" />
</el-select>
</el-form-item> </el-form-item>
<el-row> <el-form-item label="项目类型:" prop="projectType">
<el-col :span="12"> <el-select v-model="addParam.projectType" style="width: 100%" class="form-content-width" placeholder="请选择项目阶段">
<el-form-item label="项目状态:"> <el-option v-for="(item, index) in projectType" :key="index" :label="item.dictLabel" :value="item.dictValue" />
<el-select v-model="queryParams.status" style="width: 100%" clearable class="form-content-width" placeholder="请选择项目状态"> </el-select>
<el-option v-for="(item, index) in statusOptions" :key="index" :label="item.name" :value="item.value" /> </el-form-item>
</el-select> <el-form-item label="项目类别:" prop="projectCategory">
</el-form-item> <el-select v-model="addParam.projectCategory" style="width: 100%" class="form-content-width" placeholder="请选择项目阶段">
</el-col> <el-option v-for="(item, index) in projectCategory" :key="index" :label="item.dictLabel" :value="item.dictValue" />
<el-col :span="12"> </el-select>
<el-form-item label="项目阶段:"> </el-form-item>
<el-select v-model="queryParams.stage" style="width: 100%" clearable class="form-content-width" placeholder="请选择项目阶段"> <el-form-item label="投资估算(万):" prop="investmentAmount">
<el-option v-for="(item, index) in stageOptions" :key="index" :label="item.name" :value="item.value" /> <el-input v-model="addParam.investmentAmount" placeholder="请输入投资估算" @input="number"></el-input>
</el-select> </el-form-item>
</el-form-item> <el-form-item label="可见范围:" prop="isPrivate">
</el-col> <el-select v-model="addParam.isPrivate" style="width: 100%" class="form-content-width" placeholder="请选择">
</el-row> <el-option v-for="(item, index) in isPrivate" :key="index" :label="item.name" :value="item.value" />
<el-row> </el-select>
<el-col :span="12">
<el-form-item label="投资金额(万元):">
<el-input v-model="queryParams.name" placeholder="请输入投资金额"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="关键决策人:">
<el-input v-model="queryParams.name" placeholder="请输入关键决策人名称"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="关键决策人电话:">
<el-input v-model="queryParams.name" placeholder="请输入关键决策人电话"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="竞争对手:">
<el-input v-model="queryParams.name" placeholder="请输入竞争对手名称"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="建设内容:">
<el-input v-model="queryParams.key"
type="textarea"
:autosize="{ minRows: 8, maxRows: 8}"
maxlength="500"
show-word-limit
placeholder="请输入建设内容">
</el-input>
</el-form-item> </el-form-item>
<el-form-item style="text-align: right;"> <el-form-item style="text-align: right;">
<el-button @click="handleClose">关闭</el-button> <el-button @click="handleClose">关闭</el-button>
<el-button type="primary">保存内容</el-button> <el-button type="primary" @click="submitForm">添加</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -136,6 +123,13 @@ ...@@ -136,6 +123,13 @@
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
import {getEnterprise,getDictType,} from '@/api/main'
import {
getList,
customerInfo,
queryProject
} from '@/api/detail/party-a/cooperate'
import {addProject} from '@/api/project/project'
export default { export default {
name: 'Cooperate', name: 'Cooperate',
mixins: [mixin], mixins: [mixin],
...@@ -144,70 +138,211 @@ export default { ...@@ -144,70 +138,211 @@ export default {
}, },
data() { data() {
return { return {
ifEmpty:true, ifEmpty:false,
queryParams: { queryParams: {
cid: 6034, customerId: 'f25219e73249eea0d9fddc5c7f04f97f',
pageNum: 1, pageNum: 1,
pageSize: 10 pageSize: 10
}, },
forData: [ forData: [
{label: '项目名称', prop: 'punishReason'}, {label: '项目名称', prop: 'projcetName'},
{label: '项目阶段', prop: 'punishBegin', width: '120'}, {label: '项目阶段', prop: 'projectStage', width: '120'},
{label: '投资金额(万元)', prop: 'punishResult', width: '140'}, {label: '投资金额(万元)', prop: 'investmentAmount', width: '140'},
{label: '项目状态', prop: 'fileNum', width: '90'} {label: '项目状态', prop: 'status', width: '90'}
], ],
formData: [ formData: [
{ type: 1, fieldName: 'penalizeReasonType', value: '', placeholder: '项目阶段', { type: 1, fieldName: 'projectStage', value: '', placeholder: '项目阶段', options: []},
options: [ { type: 1, fieldName: 'status', value: '', placeholder: '项目状态', options: []},
{ name: '项目阶段', value: '1' }, { type: 3, fieldName: 'keys', value: '', placeholder: '输入企业名称查询'},
{ name: '项目阶段', value: '2' },
{ name: '项目阶段', value: '3' },
{ name: '项目阶段', value: '4' }
]
},
{ type: 1, fieldName: 'penalizeReasonType', value: '', placeholder: '项目状态',
options: [
{ name: '项目状态', value: '1' },
{ name: '项目状态', value: '2' },
{ name: '项目状态', value: '3' },
{ name: '项目状态', value: '4' }
]
},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入企业名称查询', options: []},
], ],
stageOptions:[], stageOptions:[],
statusOptions:[], statusOptions:[],
//列表 //列表
tableLoading:false, tableLoading:false,
tableData:[], tableData:[],
pageIndex:1,
pageSize:10,
tableDataTotal:0, tableDataTotal:0,
//弹窗 //弹窗-关联项目
drawer: false, drawer: false,
direction: 'rtl', direction: 'rtl',
//业主单位
showlist:false,
companData:[],
//项目名称
showlist1:false,
companData1:[],
//弹窗-添加项目
dialogVisible: true,
addParam: {
userId:'',
projectName:'',
companyId:'',
ownerCompany:'',
projectStage:'',
projectCategory:'',
investmentAmount:'',
isPrivate:0,
customerId:'',
},
rules: {
projectName: [
{ required: true, message: '请输入项目名称', trigger: 'blur' },
],
ownerCompany: [
{ required: true, message: '请输入业主单位', trigger: 'blur' },
],
},
projectStage:[], //项目阶段
projectType:[], //项目类型
projectCategory:[], //项目类别
isPrivate:[
{
value: 0,
name: '仅自己可见'
},
{
value: 1,
name: '他人可见'
}
],//可见访问
//客户详情
info: {}
} }
}, },
created() { created() {
this.list()
this.customerInfos()
//项目阶段
this.handleOptions('project_stage_type',0)
//项目状态
this.handleOptions('project_status_type',1)
//项目阶段
getDictType('project_stage_type').then(result=>{
this.projectStage = result.code == 200 ? result.data:[]
})
//项目类型
getDictType('project_type').then(result=>{
this.projectType = result.code == 200 ? result.data:[]
})
//项目类别
getDictType('project_category').then(result=>{
this.projectCategory = result.code == 200 ? result.data:[]
})
}, },
computed: { computed: {
}, },
methods: { methods: {
resetQuery() { handleQuery(params) {
this.list(params)
}, },
//分页 // 列表
handleCurrentChange(e){ list(params){
let data = params ? params : this.queryParams
this.tableLoading = true
getList(data).then(res=>{
if(res.code == 200){
if(res.rows.length >0){
this.ifEmpty = true
}
this.tableData = res.rows
this.tableDataTotal = res.total
this.tableLoading = false
}
})
}, },
handleSizeChange(e){ // 客户详情
customerInfos(){
customerInfo(this.queryParams.customerId).then(res=>{
this.info = res.data
})
}, },
//弹窗
handleClose(done) { //弹窗-添加项目
handleClose(formName) {
this.$refs.addParam.resetFields();
this.drawer = false this.drawer = false
this.showlist = false
this.showlist1 = false
},
submitForm(){
this.$refs.addParam.validate((valid) => {
if (valid) {
this.addParam.customerId = this.queryParams.customerId
this.addParam.companyId = this.info.companyId
this.addParam.userId = this.info.userId
console.log(this.addParam)
addProject(this.addParam).then(result=>{
if(result.code == 200){
this.$message.success('添加成功!')
this.handleCurrentChange(1)
this.handleClose()
}else{
this.$message.error(result.msg)
}
})
}
});
},
//获取项目名称
getCompany1(value){
if (value.length>=2){
let param = {
projectName:value,
// page:{
// limit:20,
// page:1
// }
}
queryProject(JSON.stringify(param)).then(result=>{
if(result.code != 200)
return
this.showlist1 = true
this.companData1 = result.data
})
}
},
selCompany1(item){
this.addParam.projectName = item
this.showlist1 = false
},
//获取业主单位
getCompany(value){
if (value.length>=2){
let param = {
keyword:value,
page:{
limit:20,
page:1
}
}
getEnterprise(JSON.stringify(param)).then(result=>{
if(result.code != 200)
return
this.showlist = true
this.companData = result.data.list
})
}
},
selCompany(item){
this.addParam.ownerCompany = item.name.replace(/<[^>]+>/g, '')
this.showlist = false
},
// 处理条件下拉
handleOptions(name,index){
getDictType(name).then(res=>{
if(res.code == 200 && res.data){
for(var i=0;i<res.data.length;i++){
this.formData[index].options.push({
name:res.data[i].dictLabel,
value:res.data[i].dictValue
})
}
}
})
},
//输入数字
number(value){
this.addParam.investmentAmount = value.replace(/^\D*(\d*(?:\.\d{0,2})?).*$/g, '$1')//输入2位小数
} }
} }
} }
...@@ -223,6 +358,18 @@ export default { ...@@ -223,6 +358,18 @@ export default {
::v-deep .el-form-item{ ::v-deep .el-form-item{
margin-right: 8px !important; margin-right: 8px !important;
} }
.resultlist{
position: absolute;
width: 100%;
max-height: 218px;
background: #FFFFFF;
-webkit-box-shadow: 0px 4px 10px 0px rgba(0, 0, 0, 0.1);
box-shadow: 0px 4px 10px 0px rgba(0, 0, 0, 0.1);
overflow: auto;
z-index: 2;
text-indent: 13px;
cursor: pointer;
}
.cooperate-name{ .cooperate-name{
::v-deep .el-form-item__content{ ::v-deep .el-form-item__content{
display: flex; display: flex;
......
...@@ -33,44 +33,36 @@ ...@@ -33,44 +33,36 @@
<!-- 弹窗添加联系人 --> <!-- 弹窗添加联系人 -->
<el-dialog <el-dialog
class="popups" class="popups1"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
:before-close="cancel"
width="464px"> width="464px">
<div class="poptitle"> <div class="poptitle">
<img src="@/assets/images/economies/icon.png"> <img src="@/assets/images/economies/icon.png">
<span>重庆市轨道交通3号线二期工程4标段施工总承包</span> <span>重庆市轨道交通3号线二期工程4标段施工总承包</span>
</div> </div>
<el-form class="popform" label-width="137px"> <el-form :model="addRorm" :rules="addRules" ref="addRorm" class="popform" label-width="75px">
<div class="row"> <el-form-item label="姓名:" prop="name">
<span class="left">联系人姓名:</span> <el-input v-model="addRorm.name" placeholder="请输入"></el-input>
<el-input type="text" placeholder="请输入"></el-input> </el-form-item>
</div> <el-form-item label="角色:" prop="role">
<div class="row"> <el-input v-model="addRorm.role" placeholder="请输入"></el-input>
<span class="left">联系人角色:</span> </el-form-item>
<el-select placeholder="请选择"> <el-form-item label="职位:" prop="workUnit">
<el-option label="cccc" value="11"></el-option> <el-input v-model="addRorm.workUnit" placeholder="请输入"></el-input>
<el-option label="cccc" value="121"></el-option> </el-form-item>
</el-select> <el-form-item label="公司/机关:" prop="position">
</div> <el-input v-model="addRorm.position" placeholder="请输入"></el-input>
<div class="row"> </el-form-item>
<span class="left">联系人职位:</span> <el-form-item label="联系方式:" prop="contactInformation">
<el-input type="text" placeholder="请输入"></el-input> <el-input v-model="addRorm.contactInformation" placeholder="请输入"></el-input>
</div> </el-form-item>
<div class="row"> <el-form-item label="备注:" prop="remark">
<span class="left">联系人公司/机关:</span> <el-input v-model="addRorm.remark" placeholder="请输入"></el-input>
<el-input type="text" placeholder="请输入"></el-input> </el-form-item>
</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="popbot">
<div class="btn btn_cancel h32" @click="cancel">返回</div> <div class="btn btn_cancel h32" @click="cancel">返回</div>
<div class="btn btn_primary h32">保存</div> <div class="btn btn_primary h32" @click="add">保存</div>
</div> </div>
</el-form> </el-form>
</el-dialog> </el-dialog>
...@@ -79,11 +71,11 @@ ...@@ -79,11 +71,11 @@
</template> </template>
<script> <script>
import Tables from "../component/Tables"
import { import {
getList, getList,
addChain addChain
} from '@/api/decisionMaking/decisionMaking' } from '@/api/detail/party-a/decisionMaking'
import Tables from "../component/Tables"
export default { export default {
name: 'DecisionMaking', name: 'DecisionMaking',
components: { components: {
...@@ -91,29 +83,41 @@ export default { ...@@ -91,29 +83,41 @@ export default {
}, },
data() { data() {
return { return {
ifEmpty:true, ifEmpty:false,
queryParams:{ queryParams:{
customerId:null, customerId:'f25219e73249eea0d9fddc5c7f04f97f',
pageNum:1, pageNum:1,
pageSize:10, pageSize:10,
}, },
forData: [ forData: [
{label: '姓名', prop: 'punishReason', width: '124'}, {label: '姓名', prop: 'name', width: '124'},
{label: '角色', prop: 'punishBegin', width: '110'}, {label: '角色', prop: 'role', width: '110'},
{label: '公司/机关', prop: 'punishResult', width: '268'}, {label: '公司/机关', prop: 'position', width: '268'},
{label: '职位', prop: 'fileNum', width: '110'}, {label: '职位', prop: 'workUnit', width: '110'},
{label: '联系方式', prop: 'cgrdm', width: '105'}, {label: '联系方式', prop: 'contactInformation', width: '105'},
{label: '内部维护人', prop: 'office', width: '88'}, {label: '内部维护人', prop: 'updateBy', width: '88'},
{label: '备注', prop: 'dataId'}, {label: '备注', prop: 'remark'},
], ],
addRorm: {
customerId:'f25219e73249eea0d9fddc5c7f04f97f',
name:'',
role:'',
workUnit:'',
position:'',
contactInformation:'',
remark:'',
},
addRules:{
name: [
{ required: true, message: '请输入姓名', trigger: 'blur' },
],
},
stageOptions:[], stageOptions:[],
statusOptions:[], statusOptions:[],
//列表 //列表
tableLoading:false, tableLoading:false,
tableData:[], tableData:[],
pageIndex:1, tableDataTotal:0,
pageSize:10,
tableDataTotal:50,
//弹窗 //弹窗
dialogVisible: false, dialogVisible: false,
} }
...@@ -126,21 +130,46 @@ export default { ...@@ -126,21 +130,46 @@ export default {
}, },
methods: { methods: {
list(){ list(){
this.tableLoading = true
getList(this.queryParams).then((res) => { getList(this.queryParams).then((res) => {
console.log(res) if(res.code == 200){
if(res.rows.length >0){
this.tableData = res.rows
this.tableDataTotal = res.total
this.ifEmpty = true
}
this.tableLoading = false
}
}) })
},
resetQuery() {
}, },
//分页 //分页
handleCurrentChange(e){ handleCurrentChange(e){
console.log(e) this.queryParams.pageNum = e
this.list()
}, },
handleSizeChange(e){ add(){
this.$refs.addRorm.validate((valid) => {
if (valid) {
addChain(this.addRorm).then((res) => {
if(res.data){
this.$message({
message: '新增成功',
type: 'success'
});
this.cancel()
this.list()
}else{
this.$message({
message: res.msg,
type: 'error'
});
}
})
}
});
}, },
cancel(){ cancel(){
this.$refs.addRorm.resetFields();
this.dialogVisible = false this.dialogVisible = false
}, },
//打开新建窗口 //打开新建窗口
...@@ -159,7 +188,12 @@ export default { ...@@ -159,7 +188,12 @@ export default {
border: 1px solid #EFEFEF; border: 1px solid #EFEFEF;
} }
::v-deep .el-form-item{ ::v-deep .el-form-item{
margin-right: 8px !important; margin-bottom: 16px;
}
::v-deep .el-input__inner{
border-radius: 2px 0 2px 0;
height: 32px;
line-height: 32px;
} }
.cooperate-name{ .cooperate-name{
::v-deep .el-form-item__content{ ::v-deep .el-form-item__content{
...@@ -175,10 +209,7 @@ export default { ...@@ -175,10 +209,7 @@ export default {
cursor: pointer; cursor: pointer;
} }
} }
::v-deep .el-input__inner{
border-right: 0;
border-radius: 2px 0 2px 0;
}
} }
.query-add{ .query-add{
button{ button{
...@@ -231,7 +262,7 @@ export default { ...@@ -231,7 +262,7 @@ export default {
margin-top: 10px; margin-top: 10px;
} }
// 弹窗 // 弹窗
.popups{ .popups1{
.poptitle { .poptitle {
line-height: 48px; line-height: 48px;
border-bottom: 1px solid #E1E1E1; border-bottom: 1px solid #E1E1E1;
...@@ -257,8 +288,14 @@ export default { ...@@ -257,8 +288,14 @@ export default {
text-overflow: ellipsis; text-overflow: ellipsis;
} }
} }
::v-deep .el-dialog__body{
padding: 24px 24px 18px;
}
.popform { .popform {
padding-top: 24px; padding-top: 14px;
::v-deep .el-form-item__label{
padding:0;
}
.row { .row {
padding-bottom: 16px; padding-bottom: 16px;
.left { .left {
......
...@@ -8,11 +8,11 @@ ...@@ -8,11 +8,11 @@
<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'" /> <Overview v-if="currentPath.pathName=='overview'" />
<Businfo v-if="currentPath.pathName=='businfo'" /> <Businfo v-if="currentPath.pathName=='businfo'" :company-id="companyId" />
<Holderinfo v-if="currentPath.pathName=='holderinfo'" /> <Holderinfo v-if="currentPath.pathName=='holderinfo'" :company-id="companyId" />
<Execuinfo v-if="currentPath.pathName=='execuinfo'" /> <Execuinfo v-if="currentPath.pathName=='execuinfo'" :company-id="companyId" />
<Overseas v-if="currentPath.pathName=='overseas'" /> <Overseas v-if="currentPath.pathName=='overseas'" :company-id="companyId" />
<Branch v-if="currentPath.pathName=='branch'" /> <Branch v-if="currentPath.pathName=='branch'" :company-id="companyId" />
<Financial v-if="currentPath.pathName=='financial'" :company-id="companyId" /> <Financial v-if="currentPath.pathName=='financial'" :company-id="companyId" />
<Business v-if="currentPath.pathName=='business'" /> <Business v-if="currentPath.pathName=='business'" />
<!-- 投诚分析 --> <!-- 投诚分析 -->
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
<!-- 决策链条 --> <!-- 决策链条 -->
<DecisionMaking v-if="currentPath.pathName=='decisionMaking'" /> <DecisionMaking v-if="currentPath.pathName=='decisionMaking'" />
<!-- 跟进记录 --> <!-- 跟进记录 -->
<Gjjl v-if="currentPath.pathName=='gjjl'" /> <Gjjl v-if="currentPath.pathName=='gjjl'" types="gjdt" />
</div> </div>
</div> </div>
</div> </div>
......
<template> <template>
<div class="app-container part-container"> <div class="app-container detail-container">
企业速览 <head-form
title="分支机构"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<tables
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="inReason" slot-scope="scope">
<div>{{scope.row.inReason}}</div>
<div class="tags" v-if="scope.row.tag">
<span class="tag style1">{{scope.row.tag}}</span>
<span class="tag style1">{{scope.row.tag}}</span>
</div>
</template>
</tables>
</div> </div>
</template> </template>
<script> <script>
import mixin from '../mixins/mixin'
export default { export default {
name: 'Overview', name: 'Branch',
mixins: [mixin],
data() { data() {
return { return {
queryParams: {
cid: 6034,
pageNum: 1,
pageSize: 10
},
forData: [
{label: '被投资企业名称', prop: 'inReason', slot: true},
{label: '负责人', prop: 'inDate'},
{label: '成立日期', prop: 'department'}
],
formData: [
{ type: 1, fieldName: 'zbgg', value: '', placeholder: '招标公告',
options: [
{ name: '招标公告类别1', value: '1' },
{ name: '招标公告类别2', value: '2' },
{ name: '招标公告类别3', value: '3' },
{ name: '招标公告类别4', value: '4' }
]
}
],
//列表
tableLoading:false,
tableData:[],
pageIndex:1,
pageSize:10,
tableDataTotal:0,
} }
}, },
created() { created() {
this.dataRegion()
}, },
methods: { methods: {
async dataRegion() {
this.tableData = [
{id:1, inReason:'达萨法达萨法', inDate:'000',tag:'aaa'},
{id:2, inReason:'达萨法达萨法', inDate:'111'},
{id:3, inReason:'达萨法达萨法', inDate:'222'},
{id:4, inReason:'达萨法达萨法', inDate:'333'}
] //测试
},
handleQuery(params) {
console.log(params)
}
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.part-container{ .detail-container{
margin: 0; margin: 0;
padding: 0; padding: 16px;
background: #FFFFFF;
.tags{
.tag{
display: inline-block;
border-radius: 2px;
padding: 1px 7px;
margin: 4px 8px 0 0;
&.style1{
background: #E4F3FD;
color: #41A1FD;
}
}
}
} }
</style> </style>
<template> <template>
<div class="app-container part-container"> <div class="app-container detail-container">
企业速览 <el-tabs v-model="activeName" @tab-click="handleClick" class="detail-tab">
<el-tab-pane label="工商信息" name="first"></el-tab-pane>
<el-tab-pane label="工商变更" name="second"></el-tab-pane>
</el-tabs>
<div class="businfo-box" v-if="activeName=='first'">
<p>
<label class="label">企业名称</label>
<span>{{forInfo.companyName || '--'}}</span>
<label class="label">社会信用代码</label>
<span>{{forInfo.companyName || '--'}}</span>
</p>
<p>
<label class="label">法定代表人</label>
<span>{{forInfo.companyName || '--'}}</span>
<label class="label">登记状态</label>
<span>{{forInfo.companyName || '--'}}</span>
</p>
<p>
<label class="label">成立日期</label>
<span>{{forInfo.companyName || '--'}}</span>
<label class="label">注册资本</label>
<span>{{forInfo.companyName || '--'}}</span>
</p>
<p>
<label class="label">实缴资本</label>
<span>{{forInfo.companyName || '--'}}</span>
<label class="label">核准日期</label>
<span>{{forInfo.companyName || '--'}}</span>
</p>
<p>
<label class="label">组织机构代码</label>
<span>{{forInfo.companyName || '--'}}</span>
<label class="label">工商注册号</label>
<span>{{forInfo.companyName || '--'}}</span>
</p>
<p>
<label class="label">纳税人识别号</label>
<span>{{forInfo.companyName || '--'}}</span>
<label class="label">企业类型</label>
<span>{{forInfo.companyName || '--'}}</span>
</p>
<p>
<label class="label">营业期限</label>
<span>{{forInfo.companyName || '--'}}</span>
<label class="label">纳税人资质</label>
<span>{{forInfo.companyName || '--'}}</span>
</p>
<p>
<label class="label">所属地区</label>
<span>{{forInfo.companyName || '--'}}</span>
<label class="label">登记机关</label>
<span>{{forInfo.companyName || '--'}}</span>
</p>
<p>
<label class="label">人员规模</label>
<span>{{forInfo.companyName || '--'}}</span>
<label class="label">参保人数</label>
<span>{{forInfo.companyName || '--'}}</span>
</p>
<p>
<label class="label">经营范围</label>
<span class="span-one">{{forInfo.companyName || '--'}}</span>
</p>
</div>
<tables
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:queryParams="queryParams"
:paging="false"
v-if="activeName=='second'"
/>
</div> </div>
</template> </template>
<script> <script>
import mixin from '../mixins/mixin'
export default { export default {
name: 'Overview', name: 'Businfo',
props: ['companyId'],
mixins: [mixin],
data() { data() {
return { return {
activeName: 'first',
queryParams: {
cid: 6034,
pageNum: 1,
pageSize: 10
},
forInfo: {},
forData: [
{label: '变更日期', prop: 'inReason', width: '90', slot: true},
{label: '变更事项', prop: 'inDate'},
{label: '变更前', prop: 'department'},
{label: '变更后', prop: 'department'}
],
//列表
tableLoading:false,
tableData:[]
} }
}, },
created() { created() {
this.handleData()
}, },
methods: { methods: {
handleClick(){
this.handleData()
},
async handleData() {
this.tableData = [
{id:1, inReason:'达萨法达萨法', inDate:'000',tag:'aaa'},
{id:2, inReason:'达萨法达萨法', inDate:'111'},
{id:3, inReason:'达萨法达萨法', inDate:'222'},
{id:4, inReason:'达萨法达萨法', inDate:'333'}
] //测试
},
handleQuery(params) {
console.log(params)
}
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.part-container{ .detail-container{
margin: 0; margin: 0;
padding: 0; padding: 16px;
background: #FFFFFF;
.detail-tab{
margin: 0 0 0 -16px;
::v-deep .el-tabs__nav-wrap::after{
display: none;
}
::v-deep .el-tabs__item{
font-size: 16px;
height: 30px;
line-height: 30px;
padding: 0 16px;
&.is-active{
font-weight: bold;
}
}
} }
.businfo-box {
border-top: 1px solid #E6E9F0;
p {
display: flex;
align-items: center;
margin: 0;
border-left: 1px solid #E6E9F0;
border-bottom: 1px solid #E6E9F0;
.label {
width: 10%;
font-weight: 400;
line-height: 40px;
font-size: 12px;
height: 40px;
background: #F0F3FA;
padding-left: 12px;
}
span {
width: 40%;
color: #000;
height: 40px;
line-height: 40px;
padding-left: 12px;
font-size: 12px;
}
.span-one {
width: 90%;
}
}
}
}
</style> </style>
<template>
<div class="app-container info-container">
<div class="company-box">
<div class="company-nav flex-box">
<div class="company-left">
<img :src="companyInfo.logoUrl" :alt="companyInfo.companyName" :title="companyInfo.companyName" v-if="companyInfo.logoUrl">
<span
:class="companyInfo.nameSimple&&companyInfo.nameSimple.length<3?'conenctLogo textOne bg'+companyInfo.nameSimple.length:'conenctLogo textTwo bg'+companyInfo.nameSimple.length"
v-else-if="companyInfo.nameSimple"
v-html="companyInfo.nameSimple"></span>
<img :src="require('@/assets/images/detail/overview/logo@2x.png')" :alt="companyInfo.companyName" :title="companyInfo.companyName" v-else>
</div>
<div class="company-title">
<div class="company-name">
{{companyInfo.companyName || ''}}
</div>
<div class="company-tag">
<div style="float: left;margin-top: 8px;" class="company-history" v-if="companyInfo.historyNames && companyInfo.historyNames.length>0">
<el-popover
placement="bottom-start"
popper-class="enterpriseLabel-item"
trigger="hover">
<el-button slot="reference">曾用名 <i class="el-icon-caret-bottom"></i></el-button>
<ul class="history-item">
<li v-for="(item, index) in companyInfo.historyNames" :key="index">{{item.value}}</li>
</ul>
</el-popover>
</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="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-for="(item,index) in enterpriseLabel">
<template v-if="item.children.length > 0">
<div class="enterpriseLabel-highTech company-highTech">
<el-popover
width="280"
placement="bottom-start"
popper-class="enterpriseLabel-item"
trigger="hover">
<el-button slot="reference" :style="'background:'+item.bgColor+';color:'+item.fontColor+';border:1px solid '+item.bgColor+';margin: 0;'">{{item.labelName}} <span>{{ item.children.length }}</span><i class="el-icon-arrow-right"></i></el-button>
<p class="highTech-item">
<span v-for="(v,i) in item.children" class="enterpriseLabel-children-span" :style="v.linkUri ? 'cursor:pointer;' : ''">{{ v.labelName }}</span>
</p>
</el-popover>
</div>
</template>
<template v-else>
<template v-if="item.remark">
<div class="enterpriseLabel-highTech company-highTech">
<el-popover
width="280"
placement="bottom-start"
popper-class="enterpriseLabel-item"
trigger="hover">
<el-button slot="reference" :style="'background:'+item.bgColor+';color:'+item.fontColor+';border:1px solid '+item.bgColor+';margin: 0;'">{{item.labelName}} <i class="el-icon-arrow-down"></i></el-button>
<p class="highTech-item" style="margin-bottom: 8px">{{item.remark}}</p>
</el-popover>
</div>
</template>
<span v-else class="enterpriseLabel-span" :style="{'background':item.bgColor,'color':item.fontColor,'cursor':item.linkUri ? 'pointer' : ''}">{{item.labelName}}</span>
</template>
</template>
</template>
</div>
</div>
</div>
<div class="company-menu">
<el-button @click="handleClaim" v-if="ifClaim" class="hasClaim" v-loading="claimLoading"><i class="el-ico-claim" alt="已认领" title="已认领"></i> 已认领</el-button>
<el-button @click="handleClaim" v-else class="claim" v-loading="claimLoading"><i class="el-ico-claim" alt="认领客户" title="认领客户"></i> 认领客户</el-button>
</div>
<div class="company-info">
<div class="info-item flex-box">
<div class="item"><label>法定代表人:</label><span>{{companyInfo.corporatePerson || ''}}</span></div>
<div class="item"><label>注册资本:</label><span>{{companyInfo.regCapital || '--'}}</span></div>
<div class="item"><label>统一社会信用代码:</label><span>{{companyInfo.creditCode || ''}}</span></div>
</div>
<div class="info-item flex-box">
<div class="item"><label>成立日期:</label><span>{{companyInfo.regCapital || '--'}}</span></div>
<div class="item"><label>类型:</label><span>{{companyInfo.regCapital || '--'}}</span></div>
<div class="item"><label>企业邮箱:</label><span>{{companyInfo.regCapital || '--'}}</span></div>
</div>
<div class="info-item flex-box">
<div class="item"><label>官网:</label><span>{{companyInfo.regCapital || '--'}}</span></div>
<div class="item"><label>注册地址:</label><span>{{companyInfo.regCapital || '--'}}</span></div>
<div class="item"><label>通信地址:</label><span>{{companyInfo.regCapital || '--'}}</span></div>
</div>
<div class="info-item flex-box" >
<div class="item flex-box item-line" >
<span ref="companyQybj" class="text-cl1" :class="showMore&&showState?'item-all':'item-more'">
<label>企业背景:</label>{{companyInfo.introduction || ''}}
</span>
<span class="item-link ml-4" v-if="companyInfo.introduction&&showMore" @click="handleDetail">{{showState?'收起':'展开'}}</span>
</div>
</div>
</div>
<div class="company-swiper">
<div class="swiper-containers swiper-info" :style="graphList.length<=6?'margin-left:0px; width: 100%;':''">
<ul class="swiper-wrapper">
<template v-for="(item, index) in graphList" >
<li class="swiper-slide" :key="index">
<div class="flex-box" @click="handleGraph(item)">
<img :src="`${item.ico}`" :alt="item.name" :title="item.name" class="swiper-img">
<div class="swiper-item">
<span class="swiper-name">
{{item.name}}
</span>
<template v-for="(it, idx) in item.intro">
<div :key="idx" @click.stop="handleGraphChild(item, it)">
<span v-html="it.name"></span> <i :class="[idx!=item.intro.length-1?'num':'']" :style="it.val>0?'':{color: '#999999',cursor: 'not-allowed'}">{{it.val}}</i>
</div>
</template>
</div>
</div>
</li>
</template>
</ul>
</div>
<div class="swiper-button-prev swiper-info-prev" slot="button-prev" style="left: 0;"><i class="el-icon-arrow-left"></i></div>
<div class="swiper-button-next swiper-info-next" slot="button-next" style="right: 0"><i class="el-icon-arrow-right"></i></div>
</div>
<!-- 分条件:滚动与不滚动 -->
</div>
</div>
</template>
<script>
var Swiper = require('@/assets/lib/swiper/swiper-bundle.min.js')
import "@/assets/lib/swiper/swiper-bundle.css"
import { encodeStr } from '@/assets/js/common.js'
export default {
name: 'Infoheader',
data() {
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: [], //企业标签
claimLoading: false,
ifClaim: false, //是否认领
showMore: false,
showState: false,
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: 2, name:'商机线索', intro:[{id: 201, name:'专项债项目', val:66},{id: 202, name:'招标计划', val:66}], 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: 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: 6, name:'企业架构', intro:[{id: 601, name:'企业架构关联图'}], ico:require('@/assets/images/detail/overview/company_qyjg.png')},
{id: 7, name:'工商信息', intro:[{id: 701, name:'企业基础工商登记信息'}], ico:require('@/assets/images/detail/overview/company_gsxx.png')}
], //企业链图
//风险扫描
labelArr:['失信联合惩戒企业','司法纠纷','注销'], //负向经营状态
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() {
this.getCompanyInfo()
},
mounted() {
this.handleWidth()
this.getClaimStatus() //获取企业认领状态
this.companySwiper()
},
methods: {
//认领
async handleClaim(){
let _this = this
_this.claimLoading = true
setTimeout(function (){
_this.claimLoading = false
_this.$confirm(`认领成功,是否完善客户信息`, '提示', {
type: 'warning'
}).then(async () => {
console.log('操作跳转!')
})
}, 1000)
},
companySwiper(){
new Swiper('.swiper-info', {
slidesPerView: 6,
// 设置点击箭头
navigation: {
nextEl: '.swiper-info-next',
prevEl: '.swiper-info-prev',
}
})
},
getCompanyInfo(){
if(this.companyInfo.historyNames && typeof this.companyInfo.historyNames=='string'){ //曾用名
this.companyInfo.historyNames = JSON.parse(this.companyInfo.historyNames)
}
},
//获取认领状态
async getClaimStatus(){
this.ifClaim = false
},
handleWidth(){
this.showMore = this.$refs.companyQybj.scrollWidth - this.$refs.companyQybj.clientWidth
},
handleDetail(){
this.showState = !this.showState
},
jumpToLt(item){
this.$router.push({ path: '/party/structure', query: {eid:this.companyInfo.eid, typeId:item.id} })
},
//swiper项点击
handleGraph(item,it){
switch (item.id) {
case 4:
console.log('jump')
break
case 5:
this.jumpToLt(item)
break
case 6:
this.jumpToLt(item)
break
case 7:
console.log('jump')
break
}
},
//swiper子项点击
handleGraphChild(item, it){
if(it.id==101 && it.val){
console.log('jump')
}
if(it.id==102 && it.val){
console.log('jump')
}
if(it.id==201 && it.val){
console.log('jump')
}
if(it.id==202 && it.val){
console.log('jump')
}
if(it.id==301 && it.val){
console.log('jump')
}
if(it.id==302 && it.val){
console.log('jump')
}
}
}
}
</script>
<style lang="scss" scoped>
.info-container{
margin: 0;
padding: 24px 16px;
background: #FFFFFF;
.company-swiper{
position: relative;
.swiper-info{
width: calc(100% - 38px);
height: 56px;
margin-top: 13px;
margin-left: 25px;
overflow: hidden;
.swiper-slide{
&.swiper-disn{
display: none;
}
>div{
min-width: 242px;
height: 100%;
padding: 7px 4px 9px 0;
cursor: pointer;
align-items: normal;
.swiper-item{
.swiper-name{
display: block;
font-size: 14px;
color: #232323;
}
div{
display: inline-block;
font-size: 12px;
padding-top: 3px;
span{
color: #232323;
}
i{
font-style: normal;
color: #0081FF;
&.num{
margin-right: 8px;
}
}
}
}
.swiper-img{
width: 40px;
height: 40px;
margin-right: 6px;
}
}
}
}
.swiper-info-prev, .swiper-info-next{
width: 16px;
height: 40px;
background: #F0F5FC;
top: 8px;
margin-top: 0;
&.swiper-button-disabled{
opacity: 1;
color:#AAAAAA;
background: #F5F5F5;
}
i{
color: #AAAAAA;
}
&:hover i{
color:#667199;
}
&:after{
content: "";
}
}
}
.company-box{
width: 100%;
position: relative;
.company-nav{
align-items: normal;
.company-left{
width: 64px;
height: 64px;
margin-right: 12px;
flex-shrink: 0;
img{
width: 100%;
height: 100%;
border-radius: 4px;
overflow: hidden;
}
.conenctLogo{
width: 100%;
height: 100%;
color: #FFFFFF;
border-radius: 4px;
overflow: hidden;
text-align: center;
display: block;
&.textOne{
font-size: 18px;
line-height: 64px;
}
&.textTwo{
font-size: 18px;
padding: 9px 10px;
line-height: 24px;
}
&.bg1{
background: #99BE81;
}
&.bg2{
background: #76B4D4;
}
&.bg3{
background: #7A91D9;
}
&.bg4{
background: #8F8DD2;
}
&.bg5{
background: #C4A89F;
}
}
p{
font-size: 12px;
color: #999999;
text-align: center;
margin-top: 7px;
}
}
.company-title{
.company-name{
font-size: 20px;
color: #000000;
font-weight: bold;
margin-right: 100px;
}
.company-tag{
overflow: hidden;
font-size: 12px;
padding: 2px 0 10px 0;
.company-history, .company-highTech{
display: inline-block;
height: 22px;
background: #EFEFEF;
border-radius: 2px;
margin-right: 8px;
margin-left: 0;
button{
height: 22px;
line-height: 22px;
font-size: 12px;
padding: 0 8px;
background: #EFEFEF;
color: #838383;
border: 1px solid #EFEFEF;
border-radius: 2px;
}
}
.company-highTech{
button{
background: #DFEAFE;
color: #0065F9;
}
}
.enterpriseLabel-highTech{
background: #ffffff;
margin-top: 8px;
margin-right: 8px;
float: left;
}
>span{
display: inline-block;
height: 22px;
line-height: 22px;
padding: 0 8px;
border-radius: 2px;
margin-right: 8px;
margin-top: 8px;
&:last-child{
margin-right: 0;
}
}
.enterpriseLabel-span{
display: inline-block;
height: 22px;
line-height: 22px;
padding: 0 8px;
border-radius: 2px;
margin-right: 8px;
margin-top: 8px;
float: left;
}
.label-bg1{
background: #ECF6E7;
color: #54BC7E;
}
.label-bg2{
background: #DFEAFE;
color: #0065F9;
}
.label-bg3{
background: #fbf2f1;
color: #fa5640;
}
}
}
}
.company-menu{
position: absolute;
right: 0;
top: 0;
font-size: 14px;
.claim{
border: 1px solid #0081FF;
border-radius: 2px;
color:#0081FF;
background: #FFFFFF;
.el-ico-claim{
background: url("~@/assets/images/detail/overview/company_rl.png") no-repeat;
background-size: 16px 16px;
}
}
.claim:hover{
border: 1px solid #006AD1;
border-radius: 2px;
color:#006AD1;
background: #FFFFFF;
.el-ico-claim{
background: url("~@/assets/images/detail/overview/company_hrl.png") no-repeat;
background-size: 16px 16px;
}
}
.hasClaim{
border: 1px solid rgba(0,129,255,0.5);
border-radius: 2px;
color:rgba(0,129,255,0.5);
background: #FFFFFF;
.el-ico-claim{
background: url("~@/assets/images/detail/overview/company_yrl.png") no-repeat;
background-size: 16px 16px;
}
}
button {
padding: 6px 11px;
position: relative;
i{
display: inline-block;
width: 16px;
height: 16px;
margin-bottom: -2px;
}
}
}
.company-info{
background: #F5F9FE;
border-radius: 2px;
padding: 12px 10px 12px 16px;
.info-item{
margin-bottom: 12px;
&:last-child{
margin-bottom: 0;
}
.item-link{
color: #0081FF;
cursor: pointer;
font-size: 12px;
line-height: 20px;
&:hover{
color: #0069D0;
text-decoration: none;
}
}
.item{
font-size: 14px;
color: #333333;
&:first-child{
width: 210px;
}
&:nth-child(2){
width: 250px;
}
&.item-line{
width: 100%;
align-items: flex-end;
.item-all{
width: calc(100% - 50px);
text-overflow: initial;
white-space: initial;
overflow: initial;
}
.item-more{
width: calc(100% - 50px);
}
}
label{
color: #666666;
flex-shrink: 0;
}
span{
display: inline-block;
}
}
}
}
}
.history-item{
padding: 8px 8px;
li{
font-size: 12px;
color: #333333;
padding: 2px 0;
}
}
.enterpriseLabel-item{
padding: 0;
//width: 100%;
max-width: 276px;
margin-top: 8px !important;
}
.highTech-item{
padding: 10px 12px 0;
font-size: 12px;
color: #333333;
.enterpriseLabel-children-span{
display: inline-block;
padding-right: 8px;
margin-right: 8px;
margin-bottom: 8px;
border-right: 1px solid #E1E1E1;
//cursor:pointer;
}
.enterpriseLabel-children-span:last-child{
padding-right: 0;
margin-right: 0;
border-right: 0;
}
}
.ml-4{
margin-left: 4px;
}
}
</style>
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="app-container operations-container"> <div class="app-container operations-container">
<div class="common-title">公司经营</div> <div class="common-title">公司经营</div>
<div class="part-swiper"> <div class="part-swiper">
<div class="swiper-containers"> <div class="swiper-containers swiper-oper" :style="operList.length<=6?'margin-left:0px; width: 100%;':''">
<ul class="swiper-wrapper"> <ul class="swiper-wrapper">
<li class="swiper-slide" v-for="(item, index) in operList" :key="index"> <li class="swiper-slide" v-for="(item, index) in operList" :key="index">
<div class="swiper-div"> <div class="swiper-div">
...@@ -15,8 +15,8 @@ ...@@ -15,8 +15,8 @@
</li> </li>
</ul> </ul>
</div> </div>
<div class="swiper-button-prev" slot="button-prev" style="left: 0;"><i class="el-icon-arrow-left"></i></div> <div class="swiper-button-prev swiper-oper-prev" slot="button-prev" style="left: 0;"><i class="el-icon-arrow-left"></i></div>
<div class="swiper-button-next" slot="button-next" style="right: 0"><i class="el-icon-arrow-right"></i></div> <div class="swiper-button-next swiper-oper-next" slot="button-next" style="right: 0"><i class="el-icon-arrow-right"></i></div>
</div> </div>
<div class="flex-box operations-list"> <div class="flex-box operations-list">
<div class="list-item" v-for="(item, index) in gsjyList" :key="index"> <div class="list-item" v-for="(item, index) in gsjyList" :key="index">
...@@ -35,7 +35,6 @@ export default { ...@@ -35,7 +35,6 @@ export default {
data() { data() {
return { return {
operList: [ operList: [
{name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'},
{name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'}, {name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'},
{name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'}, {name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'},
{name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'}, {name:'债务信用评级', rate:'中国标普信用', range:'AA', year:'2021'},
...@@ -57,12 +56,12 @@ export default { ...@@ -57,12 +56,12 @@ export default {
}, },
methods: { methods: {
companySwiper(){ companySwiper(){
new Swiper('.swiper-containers', { new Swiper('.swiper-oper', {
slidesPerView: 4, slidesPerView: 6,
// 设置点击箭头 // 设置点击箭头
navigation: { navigation: {
nextEl: '.swiper-button-next', nextEl: '.swiper-oper-next',
prevEl: '.swiper-button-prev', prevEl: '.swiper-oper-prev',
} }
}) })
} }
...@@ -78,7 +77,7 @@ export default { ...@@ -78,7 +77,7 @@ export default {
.part-swiper{ .part-swiper{
position: relative; position: relative;
margin-top: 16px; margin-top: 16px;
.swiper-containers{ .swiper-oper{
width: calc(100% - 38px); width: calc(100% - 38px);
height: 96px; height: 96px;
margin-top: 8px; margin-top: 8px;
...@@ -117,7 +116,7 @@ export default { ...@@ -117,7 +116,7 @@ export default {
} }
} }
} }
.swiper-button-prev, .swiper-button-next{ .swiper-oper-prev, .swiper-oper-next{
width: 16px; width: 16px;
height: 96px; height: 96px;
background: #F0F5FC; background: #F0F5FC;
......
<template> <template>
<div class="app-container part-container"> <div class="app-container detail-container">
企业速览 <head-form
title="高管信息"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
/>
<tables
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:queryParams="queryParams"
:paging="false"
/>
</div> </div>
</template> </template>
<script> <script>
import mixin from '../mixins/mixin'
export default { export default {
name: 'Overview', name: 'Execuinfo',
props: ['companyId'],
mixins: [mixin],
data() { data() {
return { return {
queryParams: {
cid: 6034,
pageNum: 1,
pageSize: 10
},
forData: [
{label: '姓名', prop: 'inDate'},
{label: '职位', prop: 'department'}
],
formData: [],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
} }
}, },
created() { created() {
this.handleData()
}, },
methods: { methods: {
async handleData() {
this.tableData = [
{id:1, inReason:'达萨法达萨法', inDate:'000',tag:'aaa'},
{id:2, inReason:'达萨法达萨法', inDate:'111'},
{id:3, inReason:'达萨法达萨法', inDate:'222'},
{id:4, inReason:'达萨法达萨法', inDate:'333'}
] //测试
},
handleQuery(params) {
console.log(params)
}
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.part-container{ .detail-container{
margin: 0; margin: 0;
padding: 0; padding: 16px;
} background: #FFFFFF;
}
</style> </style>
<template> <template>
<div class="app-container part-container"> <div class="app-container detail-container">
企业速览 <head-form
title=""
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
/>
<el-tabs v-model="activeName" @tab-click="handleClick" class="detail-tab">
<el-tab-pane label="股东信息" name="first"></el-tab-pane>
<el-tab-pane label="历史股东" name="second"></el-tab-pane>
</el-tabs>
<tables
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="inReason" slot-scope="scope">
<div>{{scope.row.inReason}}</div>
<div class="tags" v-if="scope.row.tag">
<span class="tag style1">{{scope.row.tag}}</span>
<span class="tag style1">{{scope.row.tag}}</span>
</div>
</template>
</tables>
</div> </div>
</template> </template>
<script> <script>
import mixin from '../mixins/mixin'
export default { export default {
name: 'Overview', name: 'Holderinfo',
props: ['companyId'],
mixins: [mixin],
data() { data() {
return { return {
activeName: 'first',
queryParams: {
cid: 6034,
pageNum: 1,
pageSize: 10
},
forData: [
{label: '发起人/股东', prop: 'inReason', slot: true},
{label: '持股比例', prop: 'inDate'},
{label: '认缴出资(万)', prop: 'department'},
{label: '实缴出资额', prop: 'department'},
{label: '认缴出资额', prop: 'department'},
{label: '参股日期', prop: 'department', width: '150'}
],
formData: [],
//列表
tableLoading:false,
tableData:[],
pageIndex:1,
pageSize:10,
tableDataTotal:0,
} }
}, },
created() { created() {
this.handleData()
}, },
methods: { methods: {
handleClick(){
this.handleData()
},
async handleData() {
this.tableData = [
{id:1, inReason:'达萨法达萨法', inDate:'000',tag:'aaa'},
{id:2, inReason:'达萨法达萨法', inDate:'111'},
{id:3, inReason:'达萨法达萨法', inDate:'222'},
{id:4, inReason:'达萨法达萨法', inDate:'333'}
] //测试
},
handleQuery(params) {
console.log(params)
}
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.part-container{ .detail-container{
margin: 0; margin: 0;
padding: 0; padding: 16px;
background: #FFFFFF;
.detail-tab{
margin: -34px 0 0 -16px;
::v-deep .el-tabs__nav-wrap::after{
display: none;
}
::v-deep .el-tabs__item{
font-size: 16px;
height: 30px;
line-height: 30px;
padding: 0 16px;
&.is-active{
font-weight: bold;
}
}
} }
.tags{
.tag{
display: inline-block;
border-radius: 2px;
padding: 1px 7px;
margin: 4px 8px 0 0;
&.style1{
background: #E4F3FD;
color: #41A1FD;
}
}
}
}
</style> </style>
<template> <template>
<div class="app-container part-container"> <div class="app-container detail-container">
企业速览 <head-form
title="对外投资"
:form-data="formData"
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<tables
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="gqzb">
<div class="tab-header">股权占比 <el-popover
placement="top-start"
width="280"
trigger="hover">
<div>
控股67%:绝对控制权67%,相当于100%的权力,修改公司章程/分立、合并、变更主营项目、重大决策<br />
控股51%:相对控制权51%,控制线,绝对控制公司<br />
控股34%:安全控制权,一票否决权</div>
<img src="@/assets/images/detail/overview/zbph_question.png" slot="reference">
</el-popover></div>
</template>
<template slot="inReason" slot-scope="scope">
<div>{{scope.row.inReason}}</div>
<div class="tags" v-if="scope.row.tag">
<span class="tag style1">{{scope.row.tag}}</span>
<span class="tag style1">{{scope.row.tag}}</span>
</div>
</template>
</tables>
</div> </div>
</template> </template>
<script> <script>
import mixin from '../mixins/mixin'
export default { export default {
name: 'Overview', name: 'Overseas',
props: ['companyId'],
mixins: [mixin],
data() { data() {
return { return {
queryParams: {
cid: 6034,
pageNum: 1,
pageSize: 10
},
forData: [
{label: '被投资企业名称', prop: 'inReason', slot: true},
{label: '法定代表人', prop: 'inDate'},
{label: '注册资本(万元)', prop: 'department'},
{label: '成立日期', prop: 'department'},
{label: '股权占比', prop: 'department', slotHeader: true, slotName: 'gqzb'},
{label: '认缴出资额(万元)', prop: 'department'}
],
formData: [
{ type: 1, fieldName: 'zbgg', value: '', placeholder: '招标公告',
options: [
{ name: '招标公告类别1', value: '1' },
{ name: '招标公告类别2', value: '2' },
{ name: '招标公告类别3', value: '3' },
{ name: '招标公告类别4', value: '4' }
]
},
{ type: 1, fieldName: 'gqzb', value: '', placeholder: '股权占比',
options: [
{ name: '股权占比类别1', value: '1' },
{ name: '股权占比类别2', value: '2' },
{ name: '股权占比类别3', value: '3' },
{ name: '股权占比类别4', value: '4' }
]
}
],
//列表
tableLoading:false,
tableData:[],
pageIndex:1,
pageSize:10,
tableDataTotal:0,
} }
}, },
created() { created() {
this.handleData()
}, },
methods: { methods: {
async handleData() {
this.tableData = [
{id:1, inReason:'达萨法达萨法', inDate:'000',tag:'aaa'},
{id:2, inReason:'达萨法达萨法', inDate:'111'},
{id:3, inReason:'达萨法达萨法', inDate:'222'},
{id:4, inReason:'达萨法达萨法', inDate:'333'}
] //测试
},
handleQuery(params) {
console.log(params)
}
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.part-container{ .detail-container{
margin: 0; margin: 0;
padding: 0; padding: 16px;
background: #FFFFFF;
.tab-header{
img{
margin-bottom: -3px;
width: 14px;
height: 14px;
cursor: pointer;
}
} }
.tags{
.tag{
display: inline-block;
border-radius: 2px;
padding: 1px 7px;
margin: 4px 8px 0 0;
&.style1{
background: #E4F3FD;
color: #41A1FD;
}
}
}
}
</style> </style>
<template> <template>
<div class="app-container part-container"> <div class="app-container part-container">
企业速览 <div class="view-content"><Infoheader /></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><!--商机线索-->
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
</template> </template>
<script> <script>
import Infoheader from "./component/infoheader"
import Operations from "./component/operations" import Operations from "./component/operations"
import Bidding from "./component/bidding" import Bidding from "./component/bidding"
import Busclue from './component/busclue' import Busclue from './component/busclue'
...@@ -23,6 +24,7 @@ export default { ...@@ -23,6 +24,7 @@ export default {
name: 'Overview', name: 'Overview',
props: ['companyId'], props: ['companyId'],
components: { components: {
Infoheader,
Operations, Operations,
Bidding, Bidding,
Busclue, Busclue,
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<div class="params-item"> <div class="params-item">
<div class="flex-box item-flex"> <div class="flex-box item-flex">
<el-input <el-input
v-model="queryParams.key" v-model="queryParams.businessCharacteristic"
@focus="nowedit = 1" @focus="nowedit = 1"
placeholder="请输入商务条件特点" placeholder="请输入商务条件特点"
class="textarea" class="textarea"
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
</el-input> </el-input>
<div class="flex btns" v-if="nowedit === 1"> <div class="flex btns" v-if="nowedit === 1">
<div class="flex"> <div class="flex">
<div class="btnsmall btn_primary">确定</div> <div class="btnsmall btn_primary" @click="update('businessCharacteristic')">确定</div>
<div class="cancels " @click="nowedit = 0" style="">取消</div> <div class="cancels " @click="nowedit = 0" style="">取消</div>
</div> </div>
</div> </div>
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
<div class="params-item"> <div class="params-item">
<div class="flex-box item-flex"> <div class="flex-box item-flex">
<el-input <el-input
v-model="queryParams.key" v-model="queryParams.decisionChain"
@focus="nowedit = 2" @focus="nowedit = 2"
placeholder="请输入决策链条" placeholder="请输入决策链条"
class="textarea" class="textarea"
...@@ -50,7 +50,7 @@ ...@@ -50,7 +50,7 @@
</el-input> </el-input>
<div class="flex btns" v-if="nowedit === 2"> <div class="flex btns" v-if="nowedit === 2">
<div class="flex"> <div class="flex">
<div class="btnsmall btn_primary">确定</div> <div class="btnsmall btn_primary" @click="update('decisionChain')">确定</div>
<div class="cancels " @click="nowedit = 0" style="">取消</div> <div class="cancels " @click="nowedit = 0" style="">取消</div>
</div> </div>
</div> </div>
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
<div class="params-item"> <div class="params-item">
<div class="flex-box item-flex"> <div class="flex-box item-flex">
<el-input <el-input
v-model="queryParams.key" v-model="queryParams.bidCharacteristic"
@focus="nowedit = 3" @focus="nowedit = 3"
placeholder="请输入招投标流程特点" placeholder="请输入招投标流程特点"
class="textarea" class="textarea"
...@@ -79,7 +79,7 @@ ...@@ -79,7 +79,7 @@
</el-input> </el-input>
<div class="flex btns" v-if="nowedit === 3"> <div class="flex btns" v-if="nowedit === 3">
<div class="flex"> <div class="flex">
<div class="btnsmall btn_primary">确定</div> <div class="btnsmall btn_primary" @click="update('bidCharacteristic')">确定</div>
<div class="cancels " @click="nowedit = 0" style="">取消</div> <div class="cancels " @click="nowedit = 0" style="">取消</div>
</div> </div>
</div> </div>
...@@ -97,7 +97,7 @@ ...@@ -97,7 +97,7 @@
<div class="params-item"> <div class="params-item">
<div class="flex-box item-flex"> <div class="flex-box item-flex">
<el-input <el-input
v-model="queryParams.key" v-model="queryParams.performanceCharacteristic"
@focus="nowedit = 4" @focus="nowedit = 4"
placeholder="请输入履约阶段特点" placeholder="请输入履约阶段特点"
class="textarea" class="textarea"
...@@ -108,7 +108,36 @@ ...@@ -108,7 +108,36 @@
</el-input> </el-input>
<div class="flex btns" v-if="nowedit === 4"> <div class="flex btns" v-if="nowedit === 4">
<div class="flex"> <div class="flex">
<div class="btnsmall btn_primary">确定</div> <div class="btnsmall btn_primary" @click="update('performanceCharacteristic')">确定</div>
<div class="cancels " @click="nowedit = 0" style="">取消</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="preference-item">
<div class="flex-box query-box">
<div class="flex-box query-params">
<span class="common-title">其它管理体系特点</span>
</div>
</div>
<div class="query-params">
<div class="params-item">
<div class="flex-box item-flex">
<el-input
v-model="queryParams.otherMsCharacteistic"
@focus="nowedit = 5"
placeholder="请输入履约阶段特点"
class="textarea"
type="textarea"
:autosize="autosize"
maxlength="500"
:show-word-limit="true">
</el-input>
<div class="flex btns" v-if="nowedit === 5">
<div class="flex">
<div class="btnsmall btn_primary" @click="update('otherMsCharacteistic')">确定</div>
<div class="cancels " @click="nowedit = 0" style="">取消</div> <div class="cancels " @click="nowedit = 0" style="">取消</div>
</div> </div>
</div> </div>
...@@ -122,6 +151,10 @@ ...@@ -122,6 +151,10 @@
</template> </template>
<script> <script>
import {
customerInfo,
customerUpdate
} from '@/api/detail/party-a/cooperate'
export default { export default {
name: 'Preference', name: 'Preference',
components: { components: {
...@@ -133,21 +166,47 @@ export default { ...@@ -133,21 +166,47 @@ export default {
minRows: 8, minRows: 8,
maxRows: 8 maxRows: 8
}, },
customerId: 'f25219e73249eea0d9fddc5c7f04f97f',
queryParams:{ queryParams:{
customerId: '',
businessCharacteristic: '',
decisionChain: '',
bidCharacteristic: '',
performanceCharacteristic: '',
otherMsCharacteistic: '',
}, },
key:'', key:'',
nowedit: 0 nowedit: 0
} }
}, },
created() { created() {
this.customerInfos()
}, },
computed: { computed: {
}, },
methods: { methods: {
// 客户详情
customerInfos(){
customerInfo(this.customerId).then(res=>{
this.queryParams = res.data
})
},
// 编辑客户
update(name){
let data = {
customerId: this.customerId,
[name]: this.queryParams[name],
}
customerUpdate(data).then(res=>{
if(res.data){
this.$message.success(res.msg)
this.nowedit = 0
}else{
this.$message.error(res.msg)
}
})
}
} }
} }
</script> </script>
......
...@@ -22,6 +22,10 @@ ...@@ -22,6 +22,10 @@
</template> </template>
<script> <script>
import {
abnormalPage,
abnormalYears
} from '@/api/detail/party-a/riskInformation'
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
export default { export default {
name: 'BusinessAnomaly', name: 'BusinessAnomaly',
...@@ -45,14 +49,7 @@ export default { ...@@ -45,14 +49,7 @@ export default {
{label: '做出决定机关(移除)', prop: 'outDepartment', width: '264'} {label: '做出决定机关(移除)', prop: 'outDepartment', width: '264'}
], ],
formData: [ formData: [
{ type: 1, fieldName: 'years', value: '', placeholder: '列入时间', { type: 1, fieldName: 'years', value: '', placeholder: '列入时间', options: []}
options: [
{ name: '处罚类别1', value: '1' },
{ name: '处罚类别2', value: '2' },
{ name: '处罚类别3', value: '3' },
{ name: '处罚类别4', value: '4' }
]
}
], ],
//列表 //列表
tableLoading:false, tableLoading:false,
...@@ -63,26 +60,18 @@ export default { ...@@ -63,26 +60,18 @@ export default {
} }
}, },
created() { created() {
this.dataRegion() this.handleQuery()
}, },
computed: { computed: {
}, },
methods: { methods: {
async dataRegion() {
// await axios.post("https://files.jiansheku.com/file/json/common/dataRegion.json", {}, {
// headers: {
// 'Content-Type': 'application/json'
// }
// }).then(res => {
// if (res.data.code == 200) {
// console.log(res.data.data)
// }
// })
},
handleQuery(params) { handleQuery(params) {
console.log(params) let data = params ? params : this.queryParams
} abnormalPage(data).then(res => {
})
},
} }
} }
</script> </script>
......
...@@ -19,9 +19,9 @@ ...@@ -19,9 +19,9 @@
@handle-current-change="handleCurrentChange" @handle-current-change="handleCurrentChange"
> >
<template slot="punishReason" slot-scope="scope"> <template slot="punishReason" slot-scope="scope">
<span :class="[isOverHiddenFlag(scope.row.width, showList, scope.index, 0, scope.data)?'cell-span':'']" :style="{'-webkit-line-clamp': 5}"> <span :class="[isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.punishReason)?'cell-span':'']" :style="{'-webkit-line-clamp': 5}">
{{ scope.data }} {{ scope.row.punishReason }}
<span v-if="isOverHiddenFlag(scope.row.width, showList, scope.index, 0, scope.data)" @click="changeShowAll(scope.index, 0)">...<span style="color: #0081FF;">更多</span></span> <span v-if="isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.punishReason)" @click="changeShowAll(scope.index, 0)">...<span style="color: #0081FF;">更多</span></span>
</span> </span>
</template> </template>
</tables> </tables>
...@@ -34,7 +34,7 @@ import mixin from '../mixins/mixin' ...@@ -34,7 +34,7 @@ import mixin from '../mixins/mixin'
import { import {
penalizePage, penalizePage,
penalizeReasonType penalizeReasonType
} from '@/api/riskInformation/punish' } from '@/api/detail/party-a/riskInformation'
export default { export default {
name: 'Punish', name: 'Punish',
mixins: [mixin], mixins: [mixin],
...@@ -44,7 +44,7 @@ export default { ...@@ -44,7 +44,7 @@ export default {
data() { data() {
return { return {
queryParams: { queryParams: {
cid: 6034, cid: 382724726,
pageNum: 1, pageNum: 1,
pageSize: 10 pageSize: 10
}, },
...@@ -58,14 +58,7 @@ export default { ...@@ -58,14 +58,7 @@ export default {
{label: '处罚结束日期', prop: 'dataId', width: '100'}, {label: '处罚结束日期', prop: 'dataId', width: '100'},
], ],
formData: [ formData: [
{ type: 1, fieldName: 'penalizeReasonType', value: '', placeholder: '处罚类别', { type: 1, fieldName: 'penalizeReasonType', value: '', placeholder: '处罚类别', options: []},
options: [
{ name: '处罚类别1', value: '1' },
{ name: '处罚类别2', value: '2' },
{ name: '处罚类别3', value: '3' },
{ name: '处罚类别4', value: '4' }
]
},
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词', options: []}, { type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词', options: []},
], ],
//列表 //列表
...@@ -86,20 +79,20 @@ export default { ...@@ -86,20 +79,20 @@ export default {
} }
}, },
created() { created() {
this.dataRegion() this.getList()
this.penalizeReasonTypeData() this.penalizeReasonTypeData()
}, },
computed: { computed: {
}, },
methods: { methods: {
async dataRegion() { getList() {
penalizePage(this.queryParams).then((res) => { penalizePage(this.queryParams).then((res) => {
console.log(res) console.log(res.data.rows)
}) })
}, },
penalizeReasonTypeData(){ penalizeReasonTypeData(){
penalizeReasonType({cid:6034}).then((res) => { penalizeReasonType({cid:this.queryParams.cid}).then((res) => {
console.log(res) console.log(res)
}) })
}, },
...@@ -136,9 +129,7 @@ export default { ...@@ -136,9 +129,7 @@ export default {
::v-deep .el-form-item{ ::v-deep .el-form-item{
margin-right: 8px !important; margin-right: 8px !important;
} }
::v-deep .el-table__body tr.current-row > td.el-table__cell{
background-color: #ffffff;
}
.query-box{ .query-box{
margin: 10px 0 20px; margin: 10px 0 20px;
} }
......
...@@ -22,6 +22,10 @@ ...@@ -22,6 +22,10 @@
</template> </template>
<script> <script>
import {
landTransactionPage,
landUse
} from '@/api/detail/party-a/urbanLnvestment'
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
export default { export default {
name: 'landAcquisition', name: 'landAcquisition',
...@@ -32,7 +36,8 @@ export default { ...@@ -32,7 +36,8 @@ export default {
data() { data() {
return { return {
queryParams: { queryParams: {
cid: 6034, cid: 3068,
sort: 3,
pageNum: 1, pageNum: 1,
pageSize: 10 pageSize: 10
}, },
...@@ -48,54 +53,40 @@ export default { ...@@ -48,54 +53,40 @@ export default {
{label: '签订日期', prop: 'dataId', width: '120'} {label: '签订日期', prop: 'dataId', width: '120'}
], ],
formData: [ formData: [
{ type: 4, fieldName: 'penalizeReasonType', value: [], placeholder: '土地用途', { type: 4, fieldName: 'landUse', value: [], placeholder: '土地用途', options: []},
options: [
{ name: '处罚类别1', value: '1' },
{ name: '处罚类别2', value: '2' },
{ name: '处罚类别3', value: '3' },
{ name: '处罚类别4', value: '4' }
]
},
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词', options: []}, { type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词', options: []},
], ],
//列表 //列表
tableLoading:false, tableLoading:false,
tableData:[], tableData:[],
pageIndex:1,
pageSize:10,
tableDataTotal:0, tableDataTotal:0,
} }
}, },
created() { created() {
this.dataRegion() this.getList()
this.getlandUse()
}, },
computed: { computed: {
}, },
methods: { methods: {
async dataRegion() { getList() {
// await axios.post("https://files.jiansheku.com/file/json/common/dataRegion.json", {}, { this.tableLoading = true
// headers: { landTransactionPage(this.queryParams).then(res=>{
// 'Content-Type': 'application/json' this.tableData = res.data
// } this.tableDataTotal = res.data.total
// }).then(res => { this.tableLoading = false
// if (res.data.code == 200) { })
// console.log(res.data.data)
// }
// })
}, },
handleQuery() { handleQuery(params) {
console.log(params)
},
resetQuery() {
}, },
//分页 //土地用途
handleCurrentChange(e){ getlandUse(){
landUse({cid: this.queryParams.cid}).then(res=>{
}, console.log(res)
handleSizeChange(e){ // this.formData[0].options = res.data
})
} }
} }
} }
......
...@@ -24,6 +24,9 @@ ...@@ -24,6 +24,9 @@
</template> </template>
<script> <script>
import {
regionalEconomy
} from '@/api/detail/party-a/urbanLnvestment'
export default { export default {
name: 'regionalEconomies', name: 'regionalEconomies',
components: { components: {
...@@ -31,47 +34,14 @@ export default { ...@@ -31,47 +34,14 @@ export default {
}, },
data() { data() {
return { return {
tableData: [ params: {
{ provinceId: 500000,
zb:"2023年", cityId: 500100
gdp:'129,118.58', },
gdpzs:'124,369.67', tableData: [],
rjgdp:'134,369.67',
},
{
zb:"2022年",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
{
zb:"2021年",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
{
zb:"2020年",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
{
zb:"2019年",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
{
zb:"2018年",
gdp:'129,118.58',
gdpzs:'124,369.67',
rjgdp:'134,369.67',
},
],
headers: [ headers: [
{ {
prop: 'zb', prop: 'year',
label: '指标', label: '指标',
}, },
{ {
...@@ -83,51 +53,51 @@ export default { ...@@ -83,51 +53,51 @@ export default {
label: 'GDP(亿元)', label: 'GDP(亿元)',
}, },
{ {
prop: 'gdpzs', prop: 'gdpGrowth',
label: 'GDP增速', label: 'GDP增速',
}, },
{ {
prop: 'rjgdp', prop: 'gdpPerCapita',
label: '人均GDP(元)', label: '人均GDP(元)',
}, },
{ {
prop: 'rjgdp', prop: 'piAddValue',
label: '第一产业增加值(亿元)', label: '第一产业增加值(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'siAddValue',
label: '第二产业增加值(亿元)', label: '第二产业增加值(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'tiAddValue',
label: '第三产业增加值(亿元)', label: '第三产业增加值(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'population',
label: '人口(万人)', label: '人口(万人)',
}, },
{ {
prop: 'rjgdp', prop: 'industryAddValue',
label: '工业增加值(亿元)', label: '工业增加值(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'industryTotalValue',
label: '工业总产值(亿元)', label: '工业总产值(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'realEstateInvestment',
label: '房地产开发投资(亿元)', label: '房地产开发投资(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'eximTotalValue',
label: '进出口总额(亿美元)', label: '进出口总额(亿美元)',
}, },
{ {
prop: 'rjgdp', prop: 'trscg',
label: '社会消费品零售总额(亿元)', label: '社会消费品零售总额(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'urbanPcdi',
label: '城镇居民人均可支配收入(元)', label: '城镇居民人均可支配收入(元)',
}, },
{ {
...@@ -135,47 +105,47 @@ export default { ...@@ -135,47 +105,47 @@ export default {
label: '财政', label: '财政',
}, },
{ {
prop: 'rjgdp', prop: 'gbr',
label: '一般公共预算收入(亿元)', label: '一般公共预算收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'gbrGrowth',
label: '般公共预算收入增速', label: '般公共预算收入增速',
}, },
{ {
prop: 'rjgdp', prop: 'taxIncome',
label: '税收收入(亿元)', label: '税收收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'transferIncome',
label: '转移性收入(亿元)', label: '转移性收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'superiorSubsidyIncome',
label: '上级补助收入(亿元)', label: '上级补助收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'gbe',
label: '一般公共预算支出(亿元)', label: '一般公共预算支出(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'govFundIncome',
label: '政府性基金收入(亿元)', label: '政府性基金收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'landTransferIncome',
label: '土地出让收入(亿元)', label: '土地出让收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'govFundExpenditure',
label: '政府性基金支出(亿元)', label: '政府性基金支出(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'soecoi',
label: '国有资本经营收入(亿元)', label: '国有资本经营收入(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'soecoe',
label: '国有资本经营支出(亿元)', label: '国有资本经营支出(亿元)',
}, },
{ {
...@@ -183,49 +153,50 @@ export default { ...@@ -183,49 +153,50 @@ export default {
label: '债务', label: '债务',
}, },
{ {
prop: 'rjgdp', prop: 'govDebtBalance',
label: '地方政府债务余额(亿元)', label: '地方政府债务余额(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'generalDebtBalance',
label: '一般债余额(亿元)', label: '一般债余额(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'specialDebtBalance',
label: '专项债余额(亿元)', label: '专项债余额(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'govDebtLimit',
label: '地方政府债务限额(亿元)', label: '地方政府债务限额(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'uipInterestBearingDebt',
label: '城投平台有息债务(亿元)', label: '城投平台有息债务(亿元)',
}, },
{ {
prop: 'rjgdp', prop: 'fiscalSelfSufficiencyRate',
label: '财政自给率', label: '财政自给率',
}, },
{ {
prop: 'rjgdp', prop: 'govDebtToGdpRate',
label: '负债率', label: '负债率',
}, },
{ {
prop: 'rjgdp', prop: 'govDebtToGdpRateWild',
label: '负债率-宽口径', label: '负债率-宽口径',
}, },
{ {
prop: 'rjgdp', prop: 'govDebtRate',
label: '债务率', label: '债务率',
}, },
{ {
prop: 'rjgdp', prop: 'govDebtRateWild',
label: '债务率-宽口径', label: '债务率-宽口径',
}, },
], ],
} }
}, },
created() { created() {
console.log(11)
this.dataRegion() this.dataRegion()
}, },
computed: { computed: {
...@@ -240,16 +211,10 @@ export default { ...@@ -240,16 +211,10 @@ export default {
}, },
methods: { methods: {
//地区 //地区
async dataRegion() { dataRegion() {
// await axios.post("https://files.jiansheku.com/file/json/common/dataRegion.json", {}, { regionalEconomy(this.params).then(res => {
// headers: { this.tableData = res.data
// 'Content-Type': 'application/json' })
// }
// }).then(res => {
// if (res.data.code == 200) {
// console.log(res.data.data)
// }
// })
}, },
} }
} }
......
...@@ -17,7 +17,11 @@ ...@@ -17,7 +17,11 @@
:queryParams="queryParams" :queryParams="queryParams"
@handle-current-change="handleCurrentChange" @handle-current-change="handleCurrentChange"
@sort-change="sortChange" @sort-change="sortChange"
/> >
<template slot="companyName" slot-scope="data">
<router-link :to="''+ data.row.companyId" style="color: #0081FF">{{ data.row.companyName }}</router-link>
</template>
</tables>
</div> </div>
</template> </template>
...@@ -25,6 +29,9 @@ ...@@ -25,6 +29,9 @@
<script> <script>
import mixin from '../mixins/mixin' import mixin from '../mixins/mixin'
import dataRegion from '@/assets/json/dataRegion' import dataRegion from '@/assets/json/dataRegion'
import {
urbanInvestmentPage
} from '@/api/detail/party-a/urbanLnvestment'
export default { export default {
name: 'SameRegion', name: 'SameRegion',
mixins: [mixin], mixins: [mixin],
...@@ -34,21 +41,36 @@ export default { ...@@ -34,21 +41,36 @@ export default {
data() { data() {
return { return {
queryParams: { queryParams: {
cid: 6034, provinceId: 500000,
cityId: 500100,
pageNum: 1, pageNum: 1,
pageSize: 10 pageSize: 15
}, },
forData: [ forData: [
{label: '企业名称', prop: 'punishReason'}, {label: '企业名称', prop: 'companyName', width: '369', slot: true},
{label: '成员层级', prop: 'punishBegin', width: '120'}, {label: '区域', prop: 'area', width: '100'},
{label: '法定代表人', prop: 'punishResult', width: '120'}, {label: '主体评级', prop: 'bratingSubjectLevel', width: '110'},
{label: '注册资本', prop: 'fileNum', width: '120', sortable:true}, {label: '债劵余额(亿元)', prop: 'bondBalance', width: '130'},
{label: '成立日期', prop: 'cgrdm', width: '120', sortable:true}, {label: '行政级别', prop: 'uipExecutiveLevel', width: '120'},
{label: '实控人控股', prop: 'office', width: '130', sortable:true}, {label: '股东背景', prop: 'shareholderBg', width: '120'},
{label: '行业类型', prop: 'dataId', width: '120'}, {label: '股权关系', prop: 'equityRelationship', width: '120'},
{label: '所属省', prop: 'dataId', width: '120'}, {label: '平台重要性', prop: 'platformImportance', width: '120'},
{label: '所属市', prop: 'dataId', width: '120'}, {label: '城投业务类型', prop: 'uipBusinessType', width: '120'},
{label: '所属区/县', prop: 'dataId', width: '120'} {label: '实控人', prop: 'actualController', width: '280'},
{label: '最新报告期', prop: 'latestReportPeriod', width: '120'},
{label: '总资产(亿元)', prop: 'totalAssets', width: '120'},
{label: '归母净资产(亿元)', prop: 'belongNetAssets', width: '140'},
{label: '货币资金(亿元)', prop: 'monetaryFunds', width: '130'},
{label: '土地资产(亿元)', prop: 'landAssets', width: '130'},
{label: '受限资产(亿元)', prop: 'restrictedAssets', width: '130'},
{label: '应收账款(亿元)', prop: 'accountsReceivable', width: '130'},
{label: '其他应收款(亿元)', prop: 'otherReceivable', width: '140'},
{label: '公益性&准公益性主营占比(%)', prop: 'econData001', width: '200'},
{label: '应收类款项来自政府占比(%)', prop: 'receivableFromGovRatio', width: '200'},
{label: '政府补助(亿元)', prop: 'govSubsidy', width: '130'},
{label: '专项应付款(亿元)', prop: 'specialPayable', width: '140'},
{label: '营业收入(亿元)', prop: 'operatingIncome', width: '130'},
{label: '所属开发区', prop: 'developmentZone', width: '120'}
], ],
formData: [ formData: [
{ type: 1, fieldName: 'penalizeReasonType', value: '', placeholder: '筛选', { type: 1, fieldName: 'penalizeReasonType', value: '', placeholder: '筛选',
...@@ -68,13 +90,13 @@ export default { ...@@ -68,13 +90,13 @@ export default {
} }
}, },
created() { created() {
this.dataRegion() this.handleQuery()
}, },
computed: { computed: {
}, },
methods: { methods: {
async dataRegion() { dataRegion() {
// await axios.post("https://files.jiansheku.com/file/json/common/dataRegion.json", {}, { // await axios.post("https://files.jiansheku.com/file/json/common/dataRegion.json", {}, {
// headers: { // headers: {
// 'Content-Type': 'application/json' // 'Content-Type': 'application/json'
...@@ -126,18 +148,14 @@ export default { ...@@ -126,18 +148,14 @@ export default {
} }
this.addressList = str; this.addressList = str;
}, },
handleQuery() { handleQuery(params){
this.tableLoading = true
}, let data = params ? params : this.queryParams
resetQuery() { urbanInvestmentPage(data).then(res => {
this.tableData = res.data.list
}, this.tableDataTotal = res.data.totalCount
//分页 this.tableLoading = false
handleCurrentChange(e){ })
},
handleSizeChange(e){
} }
} }
} }
......
...@@ -15,13 +15,13 @@ export default { ...@@ -15,13 +15,13 @@ export default {
loading: false, // 是否加载中 loading: false, // 是否加载中
iframeHight: window.innerHeight, // iframe高度 iframeHight: window.innerHeight, // iframe高度
scrollTop: 0, // 滚动条距离内部页面顶部距离 scrollTop: 0, // 滚动条距离内部页面顶部距离
token: this.$store.getters.token // 需要携带的token secretid: '' // 需要携带的sdkId
} }
}, },
created() { created() {
if (this.$route.query.companyId) { // 获取companyId if (this.$route.query.companyId) { // 获取companyId
this.loading = true this.loading = true
this.src = `https://pre-plug.jiansheku.com/enterprise/${this.$route.query.companyId}?token=${this.token}` this.src = `https://pre-plug.jiansheku.com/enterprise/${this.$route.query.companyId}?secretid=${this.secretid}`
} }
}, },
mounted() { mounted() {
......
<template>
<div class="app-container">
<iframe :src="strucUrl" scrolling="no" frameborder="0" :style="{ width: '100%', height: strucHeight + 'px' }" v-if="strucUrl"></iframe>
</div>
</template>
<script>
import { getToken } from '@/utils/auth'
import md5 from 'js-md5'
export default {
name: 'Structure',
data() {
return {
BASE_LT: 'https://b-plugin.qixin.com/third-login?tenant=dsk&returnUrl=/standalone-charts',
eid: '',
strucHeight: 0,
strucUrl: '',
token: getToken()
}
},
created() {
if(this.$route.query.eid){
if(this.$route.query.typeId==5){
this.strucUrl = this.BASE_LT+'/structure?eid='+this.$route.query.eid+'&name='+this.token+'&pas='+md5(this.token)
}else if(this.$route.query.typeId==6){
this.strucUrl = this.BASE_LT+'/relationship?eid='+this.$route.query.eid+'&name='+this.token+'&pas='+md5(this.token)
}
}
},
mounted(){
this.getIframeHeight()
},
methods: {
//iframe高度
getIframeHeight(){
this.strucHeight = document.body.clientHeight
},
}
}
</script>
<style lang="scss" scoped>
</style>
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
</div> </div>
</div> </div>
<el-divider></el-divider> <el-divider></el-divider>
<div class="cardtitles i">储备项目类</div> <div class="cardtitles i">储备项目类</div>
<div class="gzlist"> <div class="gzlist">
<div> <div>
<img src="@/assets/images/project/EPC.png"> <img src="@/assets/images/project/EPC.png">
......
...@@ -28,16 +28,36 @@ ...@@ -28,16 +28,36 @@
</div> </div>
</div> </div>
</div> </div>
<div class="tasktitle"><strong>我的任务</strong><span>4条已逾期</span></div> <div class="tasktitle"><strong>我的任务</strong><span>4条已逾期</span><!--<span class="on">4条已逾期</span>--></div>
<div class="tasklist"> <div class="tasklist">
<div class="task_name">周二拜访交通局李主任</div> <div class="task_name">周二拜访交通局李主任</div>
<div class="task_con"><span>发起时间:2023-01-24</span><span>关联客户:<font class="wordprimary">重庆市交通局</font></span><span>完成时间:2023-0.-03</span></div> <div class="task_con"><span>发起时间:2023-01-24</span><span>关联客户:<font class="wordprimary">重庆市交通局</font></span><span>完成时间:2023-0.-03</span></div>
<div class="select">未完成</div> <div class="select" :class="{'on':status == 1}">
<div class="select-popper">
<span class="color_text">
{{status == 0?"未完成":"已完成"}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select placeholder="请选择" v-model="status" class="select-multiple">
<el-option label="未完成" value="0"></el-option>
<el-option label="已完成" value="1"></el-option>
</el-select>
</div></div>
</div> </div>
<div class="tasklist"> <div class="tasklist">
<div class="task_name">周二拜访交通局李主任</div> <div class="task_name">周二拜访交通局李主任</div>
<div class="task_con"><span>发起时间:2023-01-24</span><span>关联客户:<font class="wordprimary">重庆市交通局</font></span><span>完成时间:2023-0.-03</span></div> <div class="task_con"><span>发起时间:2023-01-24</span><span>关联客户:<font class="wordprimary">重庆市交通局</font></span><span>完成时间:2023-0.-03</span></div>
<div class="select">未完成</div> <div class="select" :class="{'on':status == 1}">
<div class="select-popper">
<span class="color_text">
{{status == 0?"未完成":"已完成"}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select placeholder="请选择" v-model="status" class="select-multiple">
<el-option label="未完成" value="0"></el-option>
<el-option label="已完成" value="1"></el-option>
</el-select>
</div></div>
</div> </div>
</div> </div>
</el-card> </el-card>
...@@ -46,12 +66,14 @@ ...@@ -46,12 +66,14 @@
<script> <script>
import "@/assets/styles/project.scss" import "@/assets/styles/project.scss"
import "@/assets/styles/public.css"
export default { export default {
name: 'gjjl', name: 'gjjl',
data(){ data(){
return{ return{
isEdit:false, isEdit:false,
value:'' value:'',
status:0,
} }
}, },
methods:{ methods:{
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<span>总投资额(万元) :</span> <span>总投资额(万元) :</span>
<div class="inputxt"> <div class="inputxt">
<div class="flex" v-if="nowedit == 1"> <div class="flex" v-if="nowedit == 1">
<el-input placeholder="待添加"></el-input> <el-input placeholder="待添加" v-model="money" @input="number"></el-input>
<div class="flex"> <div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div> <div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div> <div class="cancels h28" @click="nowedit = -1" style="">取消</div>
...@@ -48,8 +48,46 @@ ...@@ -48,8 +48,46 @@
</div> </div>
<div class="con i"> <div class="con i">
<span>计划招标 :</span> <span>计划招标 :</span>
<div class="inputxt"> <div class="inputime">
<span class="txt">待添加</span> <div class="flex" style="opacity: 0;height: 0">
<el-date-picker v-if="nowedit == 11" showWordLimit="true"
v-model="value1"
type="date"
value-format="yyyy-MM-dd"
placeholder="待添加" @change="nowedit = -1">
</el-date-picker>
</div>
<span :class="{'txt':!value1}" @click="nowedit = 11">{{value1||"待添加"}}<i class="el-icon-caret-bottom"></i></span>
</div>
</div>
</div>
<div class="row">
<div class="con">
<span>计划开工 :</span>
<div class="inputime">
<div class="flex" style="opacity: 0;height: 0">
<el-date-picker v-if="nowedit == 12" showWordLimit="true"
v-model="value1"
type="date"
value-format="yyyy-MM-dd"
placeholder="待添加" @change="nowedit = -1">
</el-date-picker>
</div>
<span :class="{'txt':!value1}" @click="nowedit = 12">{{value1||"待添加"}}<i class="el-icon-caret-bottom"></i></span>
</div>
</div>
<div class="con i">
<span>计划竣工 :</span>
<div class="inputime">
<div class="flex" style="opacity: 0;height: 0">
<el-date-picker v-if="nowedit == 13" showWordLimit="true"
v-model="value1"
type="date"
value-format="yyyy-MM-dd"
placeholder="待添加" @change="nowedit = -1">
</el-date-picker>
</div>
<span :class="{'txt':!value1}" @click="nowedit = 13">{{value1||"待添加"}}<i class="el-icon-caret-bottom"></i></span>
</div> </div>
</div> </div>
</div> </div>
...@@ -86,8 +124,16 @@ ...@@ -86,8 +124,16 @@
</div> </div>
<div class="con i"> <div class="con i">
<span>开标时间 :</span> <span>开标时间 :</span>
<div class="inputxt"> <div class="inputime">
<span class="txt">待添加</span> <div class="flex" style="opacity: 0;height: 0">
<el-date-picker v-if="nowedit == 14" showWordLimit="true"
v-model="value1"
type="date"
value-format="yyyy-MM-dd"
placeholder="待添加" @change="nowedit = -1">
</el-date-picker>
</div>
<span :class="{'txt':!value1}" @click="nowedit = 14">{{value1||"待添加"}}<i class="el-icon-caret-bottom"></i></span>
</div> </div>
</div> </div>
</div> </div>
...@@ -160,9 +206,23 @@ ...@@ -160,9 +206,23 @@
return{ return{
textarea:"", textarea:"",
nowedit:-1,//当前正在编辑的文本 nowedit:-1,//当前正在编辑的文本
value1:'',
money:'',
} }
}, },
watch:{
// nowedit(oldvalue,newvalue){
// if (newvalue == 13){
// this.$ref.newvalue13.=true
// }
// }
},
methods:{ methods:{
//输入数字
number(value){
console.log(value)
this.money = value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')//输入6位小数
},
} }
} }
</script> </script>
......
...@@ -80,33 +80,27 @@ ...@@ -80,33 +80,27 @@
<span>重庆市轨道交通3号线二期工程4标段施工总承包</span> <span>重庆市轨道交通3号线二期工程4标段施工总承包</span>
</div> </div>
<el-form class="popform" label-width="137px"> <el-form class="popform" label-width="137px">
<div class="row"> <el-form-item label="联系人姓名:" class="row">
<span class="left">联系人姓名:</span>
<el-input type="text" placeholder="请输入"></el-input> <el-input type="text" placeholder="请输入"></el-input>
</div> </el-form-item>
<div class="row"> <el-form-item label="联系人角色:" class="row">
<span class="left">联系人角色:</span>
<el-select placeholder="请选择"> <el-select placeholder="请选择">
<el-option label="cccc" value="11"></el-option> <el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option> <el-option label="cccc" value="121"></el-option>
</el-select> </el-select>
</div> </el-form-item>
<div class="row"> <el-form-item label="联系人职位:" class="row">
<span class="left">联系人职位:</span>
<el-input type="text" placeholder="请输入"></el-input> <el-input type="text" placeholder="请输入"></el-input>
</div> </el-form-item>
<div class="row"> <el-form-item label="联系人公司/机关:" class="row">
<span class="left">联系人公司/机关:</span>
<el-input type="text" placeholder="请输入"></el-input> <el-input type="text" placeholder="请输入"></el-input>
</div> </el-form-item>
<div class="row"> <el-form-item label="内部维护人:" class="row">
<span class="left">内部维护人:</span>
<el-input type="text" placeholder="请输入"></el-input> <el-input type="text" placeholder="请输入"></el-input>
</div> </el-form-item>
<div class="row"> <el-form-item label="联系方式:" class="row">
<span class="left">联系方式:</span>
<el-input type="text" placeholder="请输入"></el-input> <el-input type="text" placeholder="请输入"></el-input>
</div> </el-form-item>
<div class="popbot"> <div class="popbot">
<div class="btn btn_cancel h32" @click="cancel">返回</div> <div class="btn btn_cancel h32" @click="cancel">返回</div>
<div class="btn btn_primary h32">保存</div> <div class="btn btn_primary h32">保存</div>
......
...@@ -104,43 +104,37 @@ ...@@ -104,43 +104,37 @@
<img src="@/assets/images/economies/icon.png"> <img src="@/assets/images/economies/icon.png">
<span>新建相关企业-{{types==1?"业主单位":""}}{{types==2?"合作伙伴":""}}{{types==3?"竞争对手":""}}</span> <span>新建相关企业-{{types==1?"业主单位":""}}{{types==2?"合作伙伴":""}}{{types==3?"竞争对手":""}}</span>
</div> </div>
<el-form class="popform i" label-width="85px"> <el-form class="popform i" label-width="85px" :rules="rules" ref="ruleForm" >
<div class="row"> <el-form-item label="企业名称:" prop="projectName" class="row">
<span class="left"><i>*</i>企业名称:</span>
<el-input type="text" placeholder="请输入"></el-input> <el-input type="text" placeholder="请输入"></el-input>
</div> </el-form-item>
<div class="row" v-if="types == 1"> <el-form-item v-if="types == 1" label="对接深度:" class="row">
<span class="left">对接深度:</span>
<el-select placeholder="请选择"> <el-select placeholder="请选择">
<el-option label="cccc" value="11"></el-option> <el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option> <el-option label="cccc" value="121"></el-option>
</el-select> </el-select>
</div> </el-form-item>
<div class="row" v-if="types == 2"> <el-form-item v-if="types == 2" label="合作阶段:" class="row">
<span class="left">合作阶段:</span>
<el-select placeholder="请选择"> <el-select placeholder="请选择">
<el-option label="cccc" value="11"></el-option> <el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option> <el-option label="cccc" value="121"></el-option>
</el-select> </el-select>
</div> </el-form-item>
<div class="row" v-if="types == 3"> <el-form-item v-if="types == 3" label="竞争力度:" prop="projectName" class="row">
<span class="left">竞争力度:</span>
<el-select placeholder="请选择"> <el-select placeholder="请选择">
<el-option label="cccc" value="11"></el-option> <el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option> <el-option label="cccc" value="121"></el-option>
</el-select> </el-select>
</div> </el-form-item>
<div class="row"> <el-form-item label="企业角色:" prop="projectName" class="row">
<span class="left">企业角色:</span>
<el-select placeholder="请选择"> <el-select placeholder="请选择">
<el-option label="cccc" value="11"></el-option> <el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option> <el-option label="cccc" value="121"></el-option>
</el-select> </el-select>
</div> </el-form-item>
<div class="row"> <el-form-item label="负责人:" class="row">
<span class="left">负责人:</span>
<el-input type="text" placeholder="请输入"></el-input> <el-input type="text" placeholder="请输入"></el-input>
</div> </el-form-item>
<div class="popbot"> <div class="popbot">
<div class="btn btn_cancel h32" @click="cancel">返回</div> <div class="btn btn_cancel h32" @click="cancel">返回</div>
<div class="btn btn_primary h32">添加</div> <div class="btn btn_primary h32">添加</div>
...@@ -182,7 +176,12 @@ ...@@ -182,7 +176,12 @@
name: '王小虎', name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄' address: '上海市普陀区金沙江路 1516 弄'
} }
] ],
rules:{
projectName:[{ required: true, message: '请输入非空格字符!', trigger: 'blur' },],
ownerCompany:[{ required: true, message: '请输入非空格字符!', trigger: 'blur' },],
},
} }
}, },
methods:{ methods:{
......
...@@ -20,7 +20,16 @@ ...@@ -20,7 +20,16 @@
</div> </div>
<div class="con i"> <div class="con i">
<span>项目阶段 :</span> <span>项目阶段 :</span>
<div class="inputxt"><span class="txt">待添加</span></div>
<div class="select-popper " >
<span class="color_text" :class="{'txt':xmjd == '待添加'}">
{{xmjd}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="xmjd" class="select-multiple" placeholder="请选择">
<el-option v-for="(item,index) in projectStage" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</div>
</div> </div>
</div> </div>
<div class="row"> <div class="row">
...@@ -159,6 +168,7 @@ ...@@ -159,6 +168,7 @@
<script> <script>
import "@/assets/styles/project.scss" import "@/assets/styles/project.scss"
import {getDictType,} from '@/api/main'
export default { export default {
name: 'xmsl', name: 'xmsl',
data(){ data(){
...@@ -166,8 +176,17 @@ ...@@ -166,8 +176,17 @@
nowedit:-1,//当前正在编辑的文本 nowedit:-1,//当前正在编辑的文本
tipslit:[],//项目标签 tipslit:[],//项目标签
tipsvalue:"",//标签填写内容 tipsvalue:"",//标签填写内容
xmjd:'待添加',
projectStage:[],//项目阶段
} }
}, },
created(){
//项目阶段
getDictType('project_stage_type').then(result=>{
this.projectStage = result.code == 200 ? result.data:[]
})
},
methods:{ methods:{
//验证电话号码 //验证电话号码
isphone(value){ isphone(value){
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
</div> </div>
<div class="app-container"> <div class="app-container">
<el-card class="box-card noborder pad16 overflows"> <el-card class="box-card noborder pad16 overflows">
<div class="head"> <div class="head baseinfo">
<div class="titles"> <div class="titles">
<img src="@/assets/images/project/headimg.png" class="headimg"> <img src="@/assets/images/project/headimg.png" class="headimg">
<strong class="text">重庆市轨道交通3号线二期工程4标段施工总承包</strong> <strong class="text">重庆市轨道交通3号线二期工程4标段施工总承包</strong>
...@@ -15,31 +15,68 @@ ...@@ -15,31 +15,68 @@
<img v-if="islock == true" src="@/assets/images/project/lock.png"> <img v-if="islock == true" src="@/assets/images/project/lock.png">
<img v-else src="@/assets/images/project/lockopen.png"> <img v-else src="@/assets/images/project/lockopen.png">
仅自己可见 仅自己可见
<div class="delform"> <!--<div class="delform">-->
<div class="words">{{islock==true?"是否将项目权限修改为他人可见?":"是否将项目权限修改为仅自己可见?"}}</div> <!--<div class="words">{{islock==true?"是否将项目权限修改为他人可见?":"是否将项目权限修改为仅自己可见?"}}</div>-->
<div> <!--<div>-->
<div class="btnsmall btn_primary h28">确定</div> <!--<div class="btnsmall btn_primary h28">确定</div>-->
<div class="btnsmall btn_cancel h28">取消</div> <!--<div class="btnsmall btn_cancel h28">取消</div>-->
</div> <!--</div>-->
</div> <!--</div>-->
</div> </div>
</div> </div>
<div class="contets"> <div class="contets row">
<div class="det-con"> <div class="det-con">
<span>项目类型:</span> <span>项目类型:</span>
<span><el-select><option label="aaa" value="888"></option></el-select></span> <div class="select-popper" >
<span class="color_text" :class="{'txt':xmlx == '请选择'}">
{{xmlx}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="xmlx" class="select-multiple" placeholder="请选择">
<el-option v-for="(item,index) in projectType" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</div>
</div> </div>
<div class="det-con"> <div class="det-con">
<span>项目类别:</span> <span>项目类别:</span>
<span>城市轨道交通</span> <span>
<div class="select-popper" >
<span class="color_text" :class="{'txt':xmlb == '请选择'}">
{{xmlb}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="xmlb" class="select-multiple" placeholder="请选择">
<el-option v-for="(item,index) in projectCategory" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</div>
</span>
</div> </div>
<div class="det-con"> <div class="det-con con" >
<span>投资估算(万元):</span> <span>投资估算(万元):</span>
<span>21</span> <div class="inputxt i" :class="{'nomar':nowedit != 3}">
<div class="flex" v-if="nowedit == 3">
<el-input placeholder="待添加" @input="number"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 3">待添加</span>
</div>
</div> </div>
<div class="det-con"> <div class="det-con">
<span>建设地点:</span> <span>建设地点:</span>
<span>重庆市-渝中区</span>
<div class="select-popper">
<span :class="{ color_text:address != 'address'}">
{{address}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-cascader class="cascader-region select-location"
ref="myCascader" :props="props"
:options="addressList"
@change="handleChange"></el-cascader>
</div>
</div> </div>
<div class="det-con"> <div class="det-con">
<span>商务团队:</span> <span>商务团队:</span>
...@@ -47,11 +84,11 @@ ...@@ -47,11 +84,11 @@
</div> </div>
</div> </div>
<div class="schedule"> <div class="schedule">
<div class="child" v-for="(item,index) in schedulelist" @mouseover="hover(index)" @mouseleave="hover(-1)" @click="choose(index)"> <div class="child" v-for="(item,index) in projectStage" @mouseover="hover(index)" @mouseleave="hover(-1)" @click="choose(index,item.dictValue)">
<img v-if="index == lastindex" src="@/assets/images/project/pro_2.png"> <img v-if="index == lastindex" src="@/assets/images/project/pro_2.png">
<img v-else-if="index == thisindex" src="@/assets/images/project/pro_3.png"> <img v-else-if="index == thisindex" src="@/assets/images/project/pro_3.png">
<img v-else src="@/assets/images/project/pro_1.png"> <img v-else src="@/assets/images/project/pro_1.png">
<span :class="{'now':index == thisindex}">{{item}}</span> <span :class="{'now':index == thisindex}">{{item.dictLabel}}</span>
</div> </div>
</div> </div>
...@@ -85,6 +122,8 @@ ...@@ -85,6 +122,8 @@
<script> <script>
import "@/assets/styles/project.scss" import "@/assets/styles/project.scss"
import "@/assets/styles/public.css"
import {getDictType,} from '@/api/main'
import xmsl from './component/xmsl.vue' import xmsl from './component/xmsl.vue'
import jsnr from './component/jsnr.vue' import jsnr from './component/jsnr.vue'
import lxr from './component/lxr.vue' import lxr from './component/lxr.vue'
...@@ -92,12 +131,12 @@ ...@@ -92,12 +131,12 @@
import gzdb from './component/gzdb.vue' import gzdb from './component/gzdb.vue'
import zlwd from './component/zlwd.vue' import zlwd from './component/zlwd.vue'
import xgqy from './component/xgqy.vue' import xgqy from './component/xgqy.vue'
import prvinceTree from '@/assets/json/provinceTree'
export default { export default {
name: 'detail', name: 'detail',
components: {xmsl,jsnr,lxr,gjjl,gzdb,zlwd,xgqy}, components: {xmsl,jsnr,lxr,gjjl,gzdb,zlwd,xgqy},
data(){ data(){
return { return {
schedulelist: ['立项审批','招标计划','招标公告','开标阶段','中标结果'],
lastindex: 0,//上一个点击步骤 lastindex: 0,//上一个点击步骤
thisindex: 1,//当前点击步骤 thisindex: 1,//当前点击步骤
tabslist:[//项目信息展示板块 tabslist:[//项目信息展示板块
...@@ -109,24 +148,119 @@ ...@@ -109,24 +148,119 @@
{tag:'zlwd',name:'资料文档'}, {tag:'zlwd',name:'资料文档'},
{tag:'xgqy',name:'相关企业'}, {tag:'xgqy',name:'相关企业'},
], ],
thistag:'xgqy', thistag:'xmsl',
xmlx:'请选择',//项目类型
xmlb:'请选择',//项目类别
islock:true,//仅自己可见 islock:true,//仅自己可见
projectStage:[],//项目阶段
projectType:[],//项目类型
projectCategory:[],//项目类别
nowedit:-1,
address:'待添加',
//项目地区
addressList:[],
domicile:[],
props:{ checkStrictly: true, expandTrigger: 'hover' },
} }
}, },
created(){
this.prvinceTree()
//项目阶段
getDictType('project_stage_type').then(result=>{
this.projectStage = result.code == 200 ? result.data:[]
})
//项目类型
getDictType('project_type').then(result=>{
this.projectType = result.code == 200 ? result.data:[]
})
//项目类别
getDictType('project_category').then(result=>{
this.projectCategory = result.code == 200 ? result.data:[]
})
},
methods: { methods: {
//地区
async prvinceTree() {
// await axios.post("https://files.jiansheku.com/file/json/common/provinceTree.json", {}, {
// headers: {
// 'Content-Type': 'application/json'
// }
// }).then(res => {
// if (res.data.code == 200) {
// console.log(res.data.data)
// }
// })
// console.log(prvinceTree)
this.addressList = prvinceTree;
this.getadd(this.addressList)
},
//处理项目地区
getadd(row) {
this.addrcallback(row,this.getadd)
},
addrcallback(row,callback){
if(row){
row.forEach(item => {
item.value = item.id
callback && callback(item.children)
})
}
},
//进度条悬浮、点击事件 //进度条悬浮、点击事件
hover(index){ hover(index){
this.lastindex = index this.lastindex = index
}, },
choose(index){ choose(index,value){
this.thisindex = index this.thisindex = index
console.log(value)
}, },
//内容组件切换 //内容组件切换
getCom(tag){ getCom(tag){
console.log(tag) console.log(tag)
this.thistag = tag this.thistag = tag
} },
//输入数字
number(value){
this.queryParam.registerCapital = value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')//输入6位小数
},
handleChange(value) {
// console.log(value);
let str = ''
var labelString = this.$refs.myCascader.getCheckedNodes()[0].pathLabels;
labelString.forEach((item,index)=>{
if(index == 0)
str += item
else
str += '-'+item
})
this.address = str
let arr = this.$refs.myCascader.getCheckedNodes();
// console.log(arr)
let province = [],
city = [],
area = [];
this.domicile = [];
for (var i in arr) {
if (arr[i].parent) {
if (!arr[i].parent.checked) {
arr[i].hasChildren && city.push(arr[i].value);
arr[i].hasChildren && this.domicile.push(arr[i].label);
!arr[i].hasChildren && area.push(arr[i].value);
!arr[i].hasChildren && this.domicile.push(arr[i].label);
}
} else {
province.push(arr[i].value);
this.domicile.push(arr[i].label);
}
}
// var obj = JSON.parse(JSON.stringify(this.searchParam));
// obj.province = province;
// obj.city = city;
// obj.area = area;
// this.searchParam = obj;
},
} }
} }
</script> </script>
...@@ -178,7 +312,7 @@ ...@@ -178,7 +312,7 @@
&:last-child{ &:last-child{
padding-right: 0; padding-right: 0;
} }
span:nth-child(2n-1){ >span:nth-child(2n-1){
color: #a7a7a7; color: #a7a7a7;
} }
} }
...@@ -237,4 +371,15 @@ ...@@ -237,4 +371,15 @@
} }
} }
} }
.det-con.con{
width: auto;
margin-top: -4px;
.inputxt{
width: 100px;
margin-right: 70px;
&.nomar{
margin: 0;
}
}
}
</style> </style>
...@@ -147,6 +147,7 @@ ...@@ -147,6 +147,7 @@
<script> <script>
import "@/assets/styles/project.scss" import "@/assets/styles/project.scss"
import "@/assets/styles/public.css"
import prvinceTree from '@/assets/json/provinceTree' import prvinceTree from '@/assets/json/provinceTree'
import {getProjectlist} from '@/api/project/project' import {getProjectlist} from '@/api/project/project'
import {getDictType,} from '@/api/main' import {getDictType,} from '@/api/main'
...@@ -207,7 +208,7 @@ export default { ...@@ -207,7 +208,7 @@ export default {
}, },
created() { created() {
this.prvinceTree() this.prvinceTree()
// this.getList(1) this.getList(1)
//项目阶段 //项目阶段
getDictType('project_stage_type').then(result=>{ getDictType('project_stage_type').then(result=>{
this.projectStage = result.code == 200 ? result.data:[] this.projectStage = result.code == 200 ? result.data:[]
...@@ -225,6 +226,8 @@ export default { ...@@ -225,6 +226,8 @@ export default {
//获取商机列表 //获取商机列表
getList(pageNum){ getList(pageNum){
this.searchParam.pageNum = pageNum this.searchParam.pageNum = pageNum
console.log(this.searchParam)
// return false
getProjectlist(this.searchParam).then(result=>{ getProjectlist(this.searchParam).then(result=>{
console.log(result) console.log(result)
}) })
...@@ -288,9 +291,6 @@ export default { ...@@ -288,9 +291,6 @@ export default {
let Id = '111' let Id = '111'
this.$router.push({ path: '/project/projectList/detail', query: Id }); this.$router.push({ path: '/project/projectList/detail', query: Id });
}, },
getxmdq(){
console.log(888)
},
handleClick(){ handleClick(){
}, },
......
<template>
<div class="app-container qyzx-details">
<div class="bottomlist">
<ul class="bottomlist-content">
<li class="bottomlist-list" >
<p class="list-titel">
绿色节能型压缩机基础件、汽车零配件新建项目 (芜湖旭日机械制造有限公司)
<!-- <div v-else-if="item.projectName" v-html="item.projectName"></div> -->
</p>
<div class="content-label">
<span class="list-label">市政工程</span>
</div>
<div class="list-content">
<p class="list-content-text">
<span>办件结果:</span>
<span >芜湖旭日机械制造有限公司</span>
</p>
<p class="list-content-text">
<span>总投资:</span>
<span>芜湖旭日</span>
</p>
<p class="list-content-text">
<span>审批日期:</span>
<span>12345.62万</span>
</p>
</div>
</li>
</ul>
</div>
<div class="content main3">
<div class="common-title">拟建项目详情</div>
<div class="main3-box">
<p>
<label class="label">项目法人</label>
<span>序号</span>
<label class="label">总投资(万元)</label>
<span>序号</span>
</p>
<p>
<label class="label">项目类型</label>
<span class="span-one">序号</span>
</p>
<p>
<label class="label">项目属地</label>
<span>序号</span>
<label class="label">审批类型</label>
<span>序号</span>
</p>
<p>
<label class="label">建设规模</label>
<span>序号</span>
</p>
<p>
<label class="label">计划开工日期</label>
<span>序号</span>
<label class="label">计划完成日期</label>
<span>序号</span>
</p>
<p>
<label class="label">项目联系方式</label>
<span>序号</span>
<label class="label">行业分类</label>
<span>序号</span>
</p>
<p>
<label class="label">项目详情地址</label>
<span>序号</span>
<label class="label">项目代码</label>
<span>序号</span>
</p>
</div>
</div>
<div class="content main5">
<div class="common-title">立项审批</div>
<div class="table-item">
<el-table
:data="tableData"
element-loading-text="Loading"
border
fit
highlight-current-row
>
<el-table-column label="审批事项" width="270">
<template slot-scope="scope">
企业投资项目备案
</template>
</el-table-column>
<el-table-column label="审批结果" width="187" >
<template slot-scope="scope">
通过
</template>
</el-table-column>
<el-table-column label="审批部门" >
<template slot-scope="scope">
老河口市发展和改革局
</template>
</el-table-column>
<el-table-column label="审批问号" width="328" >
<template slot-scope="scope">
--
</template>
</el-table-column>
<el-table-column prop="zj" label="审批日期" width="240" >
<template slot-scope="scope">
2022-08-28
</template>
</el-table-column>
</el-table>
</div>
</div>
<div class="content main5">
<div class="common-title">立项推介</div>
<div class="table-item">
<el-table
:data="tableData"
element-loading-text="Loading"
border
fit
highlight-current-row
>
<el-table-column label="立项推介" >
<template slot-scope="scope">
-
</template>
</el-table-column>
<el-table-column label="引入资本规模(万元)" width="232" >
<template slot-scope="scope">
--
</template>
</el-table-column>
<el-table-column label="引入资本时间" width="243" >
<template slot-scope="scope">
2019-12-24
</template>
</el-table-column>
<el-table-column label="推介时间" width="243" >
<template slot-scope="scope">
2019-12-24
</template>
</el-table-column>
<el-table-column prop="zj" label="是否完成推介" width="243" >
<template slot-scope="scope">
</template>
</el-table-column>
</el-table>
</div>
</div>
</div>
</template>
<script>
import "@/assets/styles/public.css";
export default {
name: 'EstablishmentDetails',
data() {
return {
id: '',
tableData: [{
id: 0,
name: '20重庆债14(2005938)',
time: '2020-09-18',
gm: '285.24',
zj: '否',
}]
}
},
created() {
console.log(this.$route.params)
this.id = this.$route.params.id
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.bottomlist {
width: 100%;
background-color: #FFFFFF;
border-radius: 4px 4px 4px 4px;
.bottomlist-title {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 12px;
padding: 16px;
border-bottom: 1px solid #EFEFEF;
.title-right {
display: flex;
align-items: center;
p:first-child {
font-size: 12px;
font-weight: 400;
color: #3D3D3D;
margin-right: 10px;
}
p:last-child {
display: flex;
align-items: center;
font-size: 14px;
font-weight: 400;
color: rgba(35, 35, 35, 0.8);
}
img {
width: 18px;
height: 18px;
}
}
}
.bottomlist-content {
padding-bottom: 0px;
}
.bottomlist-list {
padding: 16px;
font-size: 14px;
border-bottom: 1px solid #EFEFEF;
padding-bottom: 14px;
.list-titel {
font-size: 16px;
font-weight: 700;
color: #3D3D3D;
line-height: 19px;
.list-titel-a {
text-decoration: none;
color: #3D3D3D;
}
a:hover,
a:visited,
a:link,
a:active {
color: #3D3D3D;
}
}
.content-label {
margin-top: 7px;
.list-label {
background: #F3F3FF;
color: #8491E8;
border-radius: 1px 1px 1px 1px;
padding: 3px 7px;
font-size: 12px;
}
}
.list-content {
margin-top: 3px;
display: flex;
justify-content: start;
align-items: center;
.list-content-text {
margin-top: 7px;
display: flex;
justify-content: start;
align-items: center;
margin-right: 27px;
font-size: 14px;
span:first-child {
font-weight: 400;
color: rgba(35, 35, 35, 0.4);
line-height: 15px
}
span:last-child {
font-weight: 400;
color: rgba(35, 35, 35, 0.8);
line-height: 15px
}
.blue {
color: #0081FF !important;
cursor: pointer;
}
}
}
.list-addree {
width: auto;
background: #F3F4F5;
display: inline-flex;
margin-top: 7px;
.list-content-text {
margin-top: 0px;
span {
line-height: 30px !important;
}
}
img {
width: 14px;
margin: 0 8px;
}
}
}
.bottomlist-list:hover {
background: #F6F9FC;
cursor: pointer;
}
.pagination {
padding: 14px;
.el-pagination {
float: right;
}
}
}
.app-container {
padding: 0;
}
.qyzx-details {
.tab {
font-size: 12px;
color: #A1A1A1;
span {
color: #232323;
}
}
.content {
margin-top: 16px;
background: #FFFFFF;
padding: 16px;
border-radius: 4px;
}
.common-title {
margin-bottom: 8px;
}
.main1 {
.title {
color: #232323;
font-size: 16px;
line-height: 28px;
font-weight: bold;
margin-bottom: 8px;
text-align: left;
img {
width: 28px;
height: 28px;
margin-bottom: -9px;
margin-right: 17px;
}
}
p {
color: #3D3D3D;
font-size: 14px;
margin: 0;
}
}
.main2 {
.list {
display: flex;
margin: 16px 0;
}
.item {
width: 24.5%;
margin-right: 16px;
height: 100px;
display: flex;
justify-content: space-between;
border-radius: 8px;
.item-left {
margin-left: 16px;
margin-top: 24px;
h4 {
color: #232323;
font-size: 22px;
line-height: 22px;
font-weight: bold;
margin: 0;
span {
font-weight: 400;
margin-left: 4px;
font-size: 18px;
}
}
p {
margin: 0;
color: #3D3D3D;
font-size: 14px;
padding-top: 8px;
}
}
.img {
width: 56px;
height: 56px;
margin-top: 22px;
margin-right: 12px;
}
}
.color1 {
background: rgba(246, 190, 59, 0.08);
border: 1px solid rgba(246, 190, 59, 0.2);
}
.color2 {
background: rgba(148, 216, 196, 0.102);
border: 1px solid rgba(73, 187, 154, 0.1);
}
.color3 {
background: rgba(57, 100, 199, 0.06);
border: 1px solid rgba(57, 100, 199, 0.1);
}
.color4 {
background: rgba(0, 129, 255, 0.04);
border: 1px solid rgba(0, 129, 255, 0.1);
}
}
.main3 {
.main3-box {
margin-top: 22px;
border-top: 1px solid #E6E9F0;
p {
display: flex;
align-items: center;
margin: 0;
border-left: 1px solid #E6E9F0;
border-bottom: 1px solid #E6E9F0;
.label {
width: 10%;
font-weight: 400;
line-height: 40px;
font-size: 12px;
height: 40px;
background: #F0F3FA;
padding-left: 12px;
}
span {
width: 40%;
color: #000;
height: 40px;
line-height: 40px;
padding-left: 12px;
font-size: 12px;
}
.span-one {
width: 90%;
}
}
}
}
.main4 {
.main4-box {
margin-top: 22px;
.label {
width: 14%;
background: #F0F3FA;
border: 1px solid #E6E9F0;
display: inline-block;
height: 40px;
line-height: 40px;
font-size: 12px;
color: rgba(35, 35, 35, 0.8);
padding-left: 12px;
}
span {
width: 19%;
display: inline-block;
height: 40px;
line-height: 40px;
border-top: 1px solid #E6E9F0;
border-bottom: 1px solid #E6E9F0;
padding-left: 12px;
font-size: 12px;
}
span:last-child {
width: 20%;
border-right: 1px solid #E6E9F0;
}
}
}
.main5 {
.table-item {
margin-top: 22px;
}
}
}
</style>
\ No newline at end of file
...@@ -53,12 +53,12 @@ ...@@ -53,12 +53,12 @@
<p> <p>
<label class="label">项目名称</label> <label class="label">项目名称</label>
<span class="span-one">1.36倍</span> <span class="span-one">1.36倍</span>
</p> </p>
<p> <p>
<label class="label">项目位置</label> <label class="label">项目位置</label>
<span class="span-one">1.36倍</span> <span class="span-one">1.36倍</span>
</p> </p>
<p> <p>
<label class="label">面积</label> <label class="label">面积</label>
...@@ -178,7 +178,7 @@ ...@@ -178,7 +178,7 @@
</p> </p>
</div> </div>
</div> </div>
</div> </div>
</template> </template>
...@@ -519,7 +519,8 @@ ...@@ -519,7 +519,8 @@
padding-left: 12px; padding-left: 12px;
font-size: 12px; font-size: 12px;
} }
.span-one{
.span-one {
width: 90%; width: 90%;
} }
......
<template>
<div>
<div class="content">
<div class="content_item">
<div class="label">项目名称</div>
<div class="content_right">
<el-input class="ename_input"
placeholder="请输入项目名称关键字" v-model="establishmentDto.keyword" ></el-input>
</div>
</div>
<div class="content_item">
<div class="label">项目业主</div>
<div class="content_right">
<el-input class="ename_input"
placeholder="请输入招标采购单位名称" v-model="establishmentDto.companyName" ></el-input>
</div>
</div>
<div class="content_item">
<div class="label">审批部门</div>
<div class="content_right">
<el-input class="ename_input"
placeholder="请输入审批部门名称或关键词" v-model="establishmentDto.examineOffice" ></el-input>
</div>
</div>
<div class="content_item">
<div class="label">建设地点</div>
<div class="content_right">
<el-input class="ename_input"
placeholder="请输入审批部门名称或关键词" v-model="establishmentDto.buildAddre" ></el-input>
</div>
</div>
<div class="content_item">
<div class="label">建设规模</div>
<div class="content_right">
<el-input class="ename_input"
placeholder="请输入审批部门名称或关键词" v-model="establishmentDto.buildScale" ></el-input>
</div>
</div>
<div class="content_item">
<div class="label">土地信息</div>
<div class="content_right">
<div class="select-popper">
<span :class="{ color_text: establishmentDto.projectType.length }">
项目类型{{establishmentDto.projectType.length? establishmentDto.projectType.length + "项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="establishmentDto.projectType" class="select-multiple" multiple placeholder="请选择">
<el-option v-for="(item, i) in projectTypeOptions" :key="i" :label="item" :value="item">
</el-option>
</el-select>
</div>
<div class="select-popper">
<span :class="{ color_text: establishmentDto.projectType.length }">
项目类型{{establishmentDto.projectType.length? establishmentDto.projectType.length + "项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="establishmentDto.projectType" class="select-multiple" multiple placeholder="请选择">
<el-option v-for="(item, i) in projectTypeOptions" :key="i" :label="item" :value="item">
</el-option>
</el-select>
</div>
<div class="select-popper">
<span :class="{ color_text: establishmentDto.industry.length }">
所属行业{{establishmentDto.industry.length? establishmentDto.industry.length + "项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="establishmentDto.industry" class="select-multiple" multiple placeholder="请选择">
<el-option v-for="(item, i) in industryOptions" :key="i" :label="item" :value="item">
</el-option>
</el-select>
</div>
<div class="select-popper">
<span :class="{color_text:establishmentDto.province.length ||establishmentDto.city.length ||establishmentDto.district.length,}">
项目属地{{establishmentDto.province.length ||establishmentDto.city.length ||establishmentDto.district.length
? establishmentDto.province.length +establishmentDto.city.length +establishmentDto.district.length +"项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-cascader ref="address" class="cascader-region" v-model="addressType" :options="addressList" :props="props" @change="domicileChange" collapse-tags clearable></el-cascader>
</div>
<el-dropdown @command="moneyhandleCommand" class="el-dropdown-land" trigger="click" ref="moneyShowPopper" :hide-on-click="false">
<span class="el-dropdown-link" :class=" establishmentDto.startMoney || establishmentDto.endMoney? 'color_text' : ''">
总投资{{establishmentDto.startMoney || establishmentDto.endMoney? " 1项": ""}}<i class="el-icon-caret-bottom"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="(item, i) in moneyOptions" :class="establishmentDto.startMoney == item.value[0] &&establishmentDto.endMoney == item.value[1]
&&!startMoney &&!endMoney? 'color_text' : ''" :key="i" :command="item.value">{{ item.label }}</el-dropdown-item>
<el-dropdown-item command="" style="padding: 0; text-indent: 20px">
<div @mouseenter="moneyShowPopper = true" @mouseleave="moneyShowPopper = false">
<span :class="(startMoney || endMoney) &&establishmentDto.startMoney == startMoney &&establishmentDto.endMoney == endMoney? 'color_text' : '' ">
自定义<i class="el-icon-arrow-right"></i>
</span>
<div class="jabph_popper_box" style="position: absolute" v-if="moneyShowPopper">
<div class="jabph_popper_wrap">
<el-input class="jabph_popper_input" v-limit-num clearable v-model="startMoney"></el-input>
</div>
<div class="jabph_popper_wrap">
<el-input class="jabph_popper_input" v-limit-num clearable v-model="endMoney"></el-input>
</div>
<div style="">
<el-button size="mini" @click="moneyCancel">取消</el-button>
<el-button type="primary" size="mini" @click="moneyPopperConfirm">确定</el-button>
</div>
</div>
</div>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<div class="select-popper">
<span class="el-dropdown-link" :class="{ color_text: establishmentDto.isProject }">
是否为向民间推介项目{{ establishmentDto.isProject ? " 1项" : "" }}<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="establishmentDto.isProject" class="select-multiple" placeholder="请选择">
<el-option v-for="(item, i) in isProjectOptions" :key="i" :label="item.label"
:value="item.value.toString()">
</el-option>
</el-select>
</div>
<el-dropdown @command="planStartTimehandleCommand" class="el-dropdown-land" trigger="click" ref="planStartTimeShowPopper":hide-on-click="false">
<span class="el-dropdown-link" :class="planStartTimeValue ? 'color_text' : ''">
计划开工时间{{ planStartTimeValue ? " 1项" : ""}}<i class="el-icon-caret-bottom"></i>
</span>
<div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="(item, i) in handleTimeOptions" :class=" planStartTimeValue && planStartTimeValue == item.value? 'color_text': ''" :key="i" :command="item.value">
<div @mouseenter="hidePoper1">{{ item.label }}</div>
</el-dropdown-item>
<el-dropdown-item command="自定义" style="padding: 0; text-indent: 20px">
<div @mouseenter="mouseenter1">
<span :class="planStartTimeValue == '自定义' ? 'color_text' : ''">
自定义<i class="el-icon-arrow-right"></i>
</span>
<el-date-picker v-if="planStartTimeShowPopper" @change="changePlanStartTime" class="land_date_picker" v-model="planStartTime" ref="datePicker1"
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>
<el-dropdown @command="planEndTimehandleCommand" class="el-dropdown-land" trigger="click" ref="planEndTimeShowPopper" :hide-on-click="false">
<span class="el-dropdown-link" :class="planEndTimeValue ? 'color_text' : ''">
计划完工日期{{ planEndTimeValue ? " 1项" : ""}}<i class="el-icon-caret-bottom"></i>
</span>
<div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="(item, i) in handleTimeOptions" :class="planEndTimeValue && planEndTimeValue == item.value? 'color_text': ''" :key="i" :command="item.value">
<div @mouseenter="hidePoper2">{{ item.label }}</div>
</el-dropdown-item>
<el-dropdown-item command="自定义" style="padding: 0; text-indent: 20px">
<div @mouseenter="mouseenter2">
<span :class="planEndTimeValue == '自定义' ? 'color_text' : ''">
自定义<i class="el-icon-arrow-right"></i>
</span>
<el-date-picker v-if="planEndTimeShowPopper" @change="changePlanEndTime"class="land_date_picker" v-model="planEndTime" ref="datePicker2"
value-format="yyyy-MM-dd" type="daterange" range-separator="至"tart-placeholder="开始日期" end-placeholder="结束日期">
</el-date-picker>
</div>
</el-dropdown-item>
</el-dropdown-menu>
</div>
</el-dropdown>
</div>
</div>
<div class="content_item content_item_padding0">
<div class="geduan">
</div>
</div>
<div class="content_item content_item_padding0">
<div class="search-new">
<span @click="search()">查询</span>
<span @click="reset">重置</span>
</div>
</div>
</div>
<div class="bottomlist">
<div class="bottomlist-title">
<div></div>
<div class="title-right">
<p>共有{{total}}</p>
<p>
<img src="@/assets/images/EXCEL.png" alt="">
<span>导出EXCEL</span>
</p>
</div>
</div>
<ul class="bottomlist-content">
<li class="bottomlist-list" >
<p class="list-titel">
<router-link :to="'/radar/Establishment/details/'+ 1" tag="a" class="list-titel-a" >绿色节能型压缩机基础件、汽车零配件新建项目 (芜湖旭日机械制造有限公司)</router-link>
<!-- <div v-else-if="item.projectName" v-html="item.projectName"></div> -->
</p>
<div class="content-label">
<span class="list-label">市政工程</span>
</div>
<div class="list-content">
<p class="list-content-text">
<span>项目业主:</span>
<span class="blue">芜湖旭日机械制造有限公司</span>
</p>
<p class="list-content-text">
<span>审批部门:</span>
<span>芜湖旭日</span>
</p>
<p class="list-content-text">
<span>审批结果:</span>
<span>12345.62万</span>
</p>
<p class="list-content-text">
<span>审批结果:</span>
<span>2014-05-12</span>
</p>
<p class="list-content-text">
<span>总投资:</span>
<span>62654</span>
</p>
<p class="list-content-text">
<span>计划开工日期:</span>
<span>62654</span>
</p>
<p class="list-content-text">
<span>计划完工日期:</span>
<span>626</span>
</p>
<p class="list-content-text">
<span>是否为向民间推介项目:</span>
<span>62654</span>
</p>
</div>
<div class="list-content">
<p class="list-content-text">
<span>土地用途:</span>
<span >城镇村道路用地</span>
</p>
<p class="list-content-text">
<span>供应方式:</span>
<span >挂牌出让</span>
</p>
</div>
<div class="list-content ">
<p class="list-content-text">
<span>批准日期:</span>
<span>62654</span>
</p>
<p class="list-content-text">
<span>建设规模:</span>
<span >许巷路西</span>
</p>
</div>
</li>
</ul>
<div class="pagination clearfix" v-show="total>0">
<el-pagination
background
:page-size="pageSize"
:current-page="page"
@current-change="handleCurrentChange"
layout="prev, pager, next"
:total="total">
</el-pagination>
</div>
</div>
</div>
</template>
<script>
import jsk_data from '../../../../../public/jsk.json';
export default {
name: 'Establishment',
components: {
},
data() {
return {
//是否为向民间推介项目
isProjectOptions: [{
value: 0,
label: "否",
},
{
value: 1,
label: "是",
}
],
isShow: false,
openVip: {
open: false,
},
loginData: {
loginShow: false
},
token: "",
example: 'search-njxm',
selectedHeight: 64,
addressList: [],
addressType: [],
props: {
multiple: true,
expandTrigger: "hover",
value: "id",
},
field: "",
fieldOptions: [{
value: "",
label: "默认排序",
},
{
value: "money",
label: "总投资从大到小",
},
{
value: "acreage",
label: "出让面积从大到小",
},
],
page: 1,
limit: 20,
moneyOptions: [{
value: "不限",
label: "不限",
},
{
value: [0, 100],
label: "100万元以下",
},
{
value: [100, 1000],
label: "100万-1000万元",
},
{
value: [1000, 5000],
label: "1000万-5000万元",
},
{
value: [5000, 20000],
label: "5000万-2亿元",
},
{
value: [20000, ""],
label: "2亿元以上",
},
],
handleTimeOptions: [{
label: "不限",
value: "",
},
{
label: "近1个月",
value: "近1个月",
},
{
label: "近半年",
value: "近半年",
},
{
label: "近1年",
value: "近1年",
},
{
label: "近3年",
value: "近3年",
},
],
handleTimeValue: "",
planStartTimeValue: "",
planEndTimeValue: "",
industryOptions: [],
examineStatusOptions: [
"不通过",
"作废",
"变更",
"备案",
"审批",
"申报",
"退回",
"通过",
"其他"
],
projectTypeOptions: [
"房建工程",
"市政工程",
"公路工程",
"水利工程",
"铁路工程",
"通信工程",
"电力工程",
"机电工程",
"冶金工程",
"矿山工程",
"石油化工工程",
"港口与航道工程",
"其他",
"空白"
],
buildNatureOptions: [
"扩建",
"技改",
"技改及其他",
"改建",
"改扩建",
"新建",
"迁建",
"其他"
],
establishmentDto: {
examineStatus: [],
province: [],
city: [],
district: [],
projectType: [],
industry: [],
buildNature: [],
},
conditionTitles: {
keyword: "关键词:",
companyName: "项目业主:",
examineOffice: "审批部门:",
buildAddre: "建设地点:",
buildScale: "建设规模:",
},
domicile: [],
startMoney: "",
endMoney: "",
moneyShowPopper: false,
handleTime: "",
handleTimeShowPopper: false,
planStartTime: "",
planStartTimeShowPopper: false,
planEndTime: "",
planEndTimeShowPopper: false,
pageFlag: true,
conditionsArr: [],
tableData:[],
total:6000,
page:1,
pageSize:20
};
},
computed: {
checkEstablishmentDto() {
let arr = [];
let flag = false;
let data = {};
let keyid, value, title;
if (this.domicile.length > 0) {
data = {
title: "项目属地:",
keyid: "domicile",
value: this.domicile.join(","),
key: "domicile"
}
arr.push(data)
}
if (this.handleTimeValue == "自定义") {
data = {
title: "办结时间:",
keyid: "handleTime",
value: this.establishmentDto.handleTimeStart + "~" + this.establishmentDto.handleTimeEnd,
key: "handleTime"
}
arr.push(data)
}
if (this.handleTimeValue && this.handleTimeValue != "自定义") {
data = {
title: "办结时间:",
keyid: "handleTime",
value: this.handleTimeValue,
key: "handleTime"
}
arr.push(data)
}
if (this.planStartTimeValue && this.planStartTimeValue != "自定义") {
data = {
title: "计划开工时间:",
keyid: "planStartTime",
value: this.planStartTimeValue,
key: "planStartTime"
}
arr.push(data)
}
if (this.planStartTimeValue == "自定义") {
data = {
title: "计划开工时间:",
keyid: "planStartTime",
value: this.establishmentDto.planStartTimeStart + "~" + this.establishmentDto.planStartTimeEnd,
key: "planStartTime"
}
arr.push(data)
}
if (this.planEndTimeValue && this.planEndTimeValue != "自定义") {
data = {
title: "计划完工日期:",
keyid: "planEndTime",
value: this.planEndTimeValue,
key: "planEndTime"
}
arr.push(data)
}
if (this.planEndTimeValue == "自定义") {
data = {
title: "计划完工日期:",
keyid: "planEndTime",
value: this.establishmentDto.planEndTimeStart + "~" + this.establishmentDto.planEndTimeEnd,
key: "planEndTime"
}
arr.push(data)
}
for (var i in this.establishmentDto) {
if (this.establishmentDto[i]) {
keyid = i;
value = this.establishmentDto[i];
if (
Object.prototype.toString.call(this.establishmentDto[i]) ===
"[object Array]"
) {
if (this.establishmentDto[i].length > 0) {
flag = true;
switch (i) {
case 'examineStatus':
title = "审批结果:";
break;
case 'projectType':
title = "项目类型:";
break;
case 'industry':
title = "所属行业:";
break;
case 'buildNature':
title = "建设性质:";
break;
case 'isProject':
title = "是否为向民间推介项目:";
break;
default:
title = "";
break;
}
} else {
title = ""
}
} else {
title = this.conditionTitles[i];
flag = true;
}
if (title) {
data = {
keyid: keyid,
value: value,
title: title,
key: value
}
arr.push(data)
}
}
}
this.conditionsArr = arr
return flag;
},
},
mounted() {
if (this.$route.query.keyword) {
var obj = JSON.parse(JSON.stringify(this.establishmentDto));
obj.keyword = this.$route.query.keyword;
this.establishmentDto = obj;
}
// this.addressListfn();
// this.$axios.get('https://files.jiansheku.com/file/json/common/searchDic.json').then(res => {
// if (res && res.status == 200) {
// this.projectTypeOptions = res.data.projectType;
// this.industryOptions = res.data.establishmentIndustry
// }
// }).catch(error=>{
//   
// });
// if(this.industryOptions.length==0){
// this.$axios
// .post("/nationzj/project/recently/typeList", {
// timeout: "49999",
// headers: {
// "Content-Type": "application/json;charset=UTF-8",
// },
// })
// .then((res) => {
// if (res.data.code == 200) {
// this.industryOptions = res.data.data.establishmentIndustryList;
// }
// })
// .catch((err) => {});
// }
},
methods: {
refresh(value) {
if (value) {
this.$router.go(0)
}
},
search(page, limit, exportFlag) {
if (!page) {
this.page = 1;
}
if (!limit) {
this.limit = 20;
}
if (!page && !limit) {
this.reloadPage();
}
var data = JSON.parse(JSON.stringify(this.establishmentDto));
data.province = data.province.join(",");
data.city = data.city.join(",");
data.district = data.district.join(",");
data.projectType = data.projectType.join(",");
data.industry = data.industry.join(",");
if (data.isProject && data.isProject === 0) {
data.isProject = parseInt(data.isProject);
}
let params = {
page: {
page: this.page,
limit: this.limit,
field: this.field,
},
establishmentDto: data,
};
if (exportFlag) {
if (!this.goThrough('', this.permissions.export)) {
this.goThrough('', this.permissions.export);
} else {
this.$refs.ExportData.exportCount('BUSINESS_SEARCH_NIJIAN', params) //商机-拟建项目
}
} else {
this.$emit("search", params)
}
},
//关闭支付弹窗
cancelVipPay(val) {
this.openVip.open = false
if (val) {
this.resolve(val);
}
},
cancelLogin(val) {
this.loginData.loginShow = false;
if (val) {
this.resolve(val);
}
},
resolve(value) {
if (value) {
this.$router.go(0)
}
},
selectedHeightfn() {
if (this.selectedHeight == 64) {
this.selectedHeight = 'auto'
} else {
this.selectedHeight = 64;
}
},
copyText() {
var value = "";
if (this.establishmentDto.startMoney && !this.establishmentDto.endMoney) {
this.establishmentDto.startMoney > 9999 ?
value = this.establishmentDto.startMoney / 10000 + "亿元以上" :
value = this.establishmentDto.startMoney + "万元以上"
}
if (!this.establishmentDto.startMoney && this.establishmentDto.endMoney) {
this.establishmentDto.endMoney > 9999 ?
value = this.establishmentDto.endMoney / 10000 + "亿元以上" :
value = this.establishmentDto.endMoney + "万元以上"
}
if (this.establishmentDto.startMoney && this.establishmentDto.endMoney) {
value = (this.establishmentDto.startMoney > 9999 ? this.establishmentDto.startMoney / 10000 + "亿-" :
this.establishmentDto.startMoney + '万-') + (this.establishmentDto.endMoney > 9999 ? this
.establishmentDto.endMoney / 10000 + "亿" : this.establishmentDto.endMoney + '万')
}
if (value) {
var data = {
title: "总投资:",
keyid: "money",
value: value,
key: "money"
}
var arr1 = [];
arr1.push(data);
this.conditionsArr = this.conditionsArr.concat(arr1)
}
let arr = this.conditionsArr
let newArr = []
for (var i = 0; i < arr.length; i++) {
newArr.push(arr[i].title + (arr[i].value == 'yes' ? '' : arr[i].value))
}
let val = newArr.join(";")
let _this = this
_this.$copyText(val).then(function(e) {
_this.$message({
message: "已复制到剪切板,您可以粘贴至对话框!",
type: "success"
})
}, function(e) {
_this.$message({
message: "已复制到剪切板,您可以粘贴至对话框!",
type: "success"
})
}).catch(err => {
console.log(err)
})
},
reloadPage() {
this.pageFlag = false;
this.$nextTick(() => {
this.pageFlag = true;
});
},
handleCurrentChange(page) {
this.page = page;
this.search(page, this.limit);
},
handleSizeChange(limit) {
this.limit = limit;
this.search(this.page, limit);
},
deleteDomicile() {
this.$refs.address.handleClear();
},
domicileChange() {
let arr = this.$refs.address.getCheckedNodes();
let province = [],
city = [],
district = [];
this.domicile = [];
for (var i in arr) {
if (arr[i].parent) {
if (!arr[i].parent.checked) {
arr[i].hasChildren && city.push(arr[i].value);
arr[i].hasChildren && this.domicile.push(arr[i].label);
!arr[i].hasChildren && district.push(arr[i].value);
!arr[i].hasChildren && this.domicile.push(arr[i].label);
}
} else {
province.push(arr[i].value);
this.domicile.push(arr[i].label);
}
}
var obj = JSON.parse(JSON.stringify(this.establishmentDto));
obj.province = province;
obj.city = city;
obj.district = district;
this.establishmentDto = obj;
},
moneyPopperConfirm() {
if (
this.startMoney &&
this.endMoney &&
!(Number(this.endMoney) > Number(this.startMoney))
) {
return this.$message.warning("最小值必须小于最大值,请重新输入!");
}
this.moneyShowPopper = false;
var obj = JSON.parse(JSON.stringify(this.establishmentDto));
obj.startMoney = this.startMoney;
obj.endMoney = this.endMoney;
this.establishmentDto = obj;
this.$refs.moneyShowPopper.hide();
},
moneyCancel() {
this.moneyShowPopper = false;
this.$refs.moneyShowPopper.hide();
},
moneyhandleCommand(command) {
if (command) {
this.$refs.moneyShowPopper.hide();
var obj = JSON.parse(JSON.stringify(this.establishmentDto));
this.startMoney = "";
this.endMoney = "";
if (command == "不限") {
obj.startMoney = "";
obj.endMoney = "";
} else {
obj.startMoney = command[0];
obj.endMoney = command[1];
}
this.establishmentDto = obj;
}
},
handleTimehandleCommand(command) {
var obj = JSON.parse(JSON.stringify(this.establishmentDto));
if (command && command != "自定义") {
this.handleTimeValue = command;
this.$refs.handleTimeShowPopper.hide();
const datetime = new Date();
var startTime, endTime, Year, Month, Day;
Year = datetime.getFullYear();
Month = datetime.getMonth() + 1;
Day = datetime.getDate();
switch (command) {
case "近1个月":
if (Month > 1) {
startTime = Year + "-" + (Month - 1) + "-1";
} else {
startTime = Year - 1 + "-" + (12 + Month - 1) + "-1";
}
endTime = Year + "-" + Month + "-" + Day;
break;
case "近半年":
if (Month > 6) {
startTime = Year + "-" + (Month - 6) + "-1";
} else {
startTime = Year - 1 + "-" + (12 + Month - 6) + "-1";
}
endTime = Year + "-" + Month + "-" + Day;
break;
case "近1年":
startTime = Year - 1 + "-" + Month + "-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "近3年":
startTime = Year - 3 + "-" + Month + "-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "自定义":
if (!this.handleTime) {
this.handleTimeValue = "";
}
break;
}
if (startTime) {
var start = startTime.split('-');
startTime = start.map((item) => {
if (item.length == 1) {
return '0' + item
} else {
return item
}
})
startTime = startTime.join('-')
}
if (endTime) {
var end = endTime.split('-');
endTime = end.map((item) => {
if (item.length == 1) {
return '0' + item
} else {
return item
}
})
endTime = endTime.join('-')
}
obj.handleTimeStart = startTime;
obj.handleTimeEnd = endTime;
} else if (command == "自定义") {
this.$refs.datePicker.pickerVisible = true;
} else {
this.$refs.handleTimeShowPopper.hide();
this.handleTimeValue = "";
this.handleTime = "";
obj.handleTimeStart = "";
obj.handleTimeEnd = "";
}
this.establishmentDto = obj;
},
planStartTimehandleCommand(command) {
var obj = JSON.parse(JSON.stringify(this.establishmentDto));
if (command && command != "自定义") {
this.planStartTimeValue = command;
this.$refs.planStartTimeShowPopper.hide();
const datetime = new Date();
var startTime, endTime, Year, Month, Day;
Year = datetime.getFullYear();
Month = datetime.getMonth() + 1;
Day = datetime.getDate();
switch (command) {
case "近1个月":
if (Month > 1) {
startTime = Year + "-" + (Month - 1) + "-1";
} else {
startTime = Year - 1 + "-" + (12 + Month - 1) + "-1";
}
endTime = Year + "-" + Month + "-" + Day;
break;
case "近半年":
if (Month > 6) {
startTime = Year + "-" + (Month - 6) + "-1";
} else {
startTime = Year - 1 + "-" + (12 + Month - 6) + "-1";
}
endTime = Year + "-" + Month + "-" + Day;
break;
case "近1年":
startTime = Year - 1 + "-" + Month + "-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "近3年":
startTime = Year - 3 + "-" + Month + "-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "自定义":
if (!this.planStartTime) {
this.planStartTimeValue = "";
}
break;
}
if (startTime) {
var start = startTime.split('-');
startTime = start.map((item) => {
if (item.length == 1) {
return '0' + item
} else {
return item
}
})
startTime = startTime.join('-')
}
if (endTime) {
var end = endTime.split('-');
endTime = end.map((item) => {
if (item.length == 1) {
return '0' + item
} else {
return item
}
})
endTime = endTime.join('-')
}
obj.planStartTimeStart = startTime;
obj.planStartTimeEnd = endTime;
} else if (command == "自定义") {
this.$refs.datePicker1.pickerVisible = true;
} else {
this.$refs.planStartTimeShowPopper.hide();
this.planStartTimeValue = "";
this.planStartTime = "";
obj.planStartTimeStart = "";
obj.planStartTimeEnd = "";
}
this.establishmentDto = obj;
},
planEndTimehandleCommand(command) {
var obj = JSON.parse(JSON.stringify(this.establishmentDto));
if (command && command != "自定义") {
this.planEndTimeValue = command;
this.$refs.planEndTimeShowPopper.hide();
const datetime = new Date();
var startTime, endTime, Year, Month, Day;
Year = datetime.getFullYear();
Month = datetime.getMonth() + 1;
Day = datetime.getDate();
switch (command) {
case "近1个月":
if (Month > 1) {
startTime = Year + "-" + (Month - 1) + "-1";
} else {
startTime = Year - 1 + "-" + (12 + Month - 1) + "-1";
}
endTime = Year + "-" + Month + "-" + Day;
break;
case "近半年":
if (Month > 6) {
startTime = Year + "-" + (Month - 6) + "-1";
} else {
startTime = Year - 1 + "-" + (12 + Month - 6) + "-1";
}
endTime = Year + "-" + Month + "-" + Day;
break;
case "近1年":
startTime = Year - 1 + "-" + Month + "-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "近3年":
startTime = Year - 3 + "-" + Month + "-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "自定义":
if (!this.planEndTime) {
this.planEndTimeValue = "";
}
break;
}
if (startTime) {
var start = startTime.split('-');
startTime = start.map((item) => {
if (item.length == 1) {
return '0' + item
} else {
return item
}
})
startTime = startTime.join('-')
}
if (endTime) {
var end = endTime.split('-');
endTime = end.map((item) => {
if (item.length == 1) {
return '0' + item
} else {
return item
}
})
endTime = endTime.join('-')
}
obj.planEndTimeStart = startTime;
obj.planEndTimeEnd = endTime;
} else if (command == "自定义") {
this.$refs.datePicker2.pickerVisible = true;
} else {
this.$refs.planEndTimeShowPopper.hide();
this.planEndTimeValue = "";
this.planEndTime = "";
obj.planEndTimeStart = "";
obj.planEndTimeEnd = "";
}
this.establishmentDto = obj;
},
changeHandleTime() {
if (this.handleTime) {
this.handleTimeValue = "自定义";
var obj = JSON.parse(JSON.stringify(this.establishmentDto));
obj.handleTimeStart = this.handleTime[0];
obj.handleTimeEnd = this.handleTime[1];
this.establishmentDto = obj;
}
},
changePlanStartTime() {
if (this.planStartTime) {
this.planStartTimeValue = "自定义";
var obj = JSON.parse(JSON.stringify(this.establishmentDto));
obj.planStartTimeStart = this.planStartTime[0];
obj.planStartTimeEnd = this.planStartTime[1];
this.establishmentDto = obj;
}
},
changePlanEndTime() {
if (this.planEndTime) {
this.planEndTimeValue = "自定义";
var obj = JSON.parse(JSON.stringify(this.establishmentDto));
obj.planEndTimeStart = this.planEndTime[0];
obj.planEndTimeEnd = this.planEndTime[1];
this.establishmentDto = obj;
}
},
addressListfn() {
var str = [];
for (let x = 0; x < 3; x++) {
for (let i = 0; i < jsk_data.length; i++) {
if (jsk_data[i].regionLevel == x + 1 && x + 1 == 1) {
str.push({
id: jsk_data[i].id,
label: jsk_data[i].regionName,
short: jsk_data[i].short,
value: jsk_data[i].parentId,
children: jsk_data[i].id == 900000 ? undefined : [],
});
} else if (jsk_data[i].regionLevel == x + 1 && x + 1 == 2 && str) {
for (let j = 0; j < str.length; j++) {
if (str[j].id == jsk_data[i].parentId) {
str[j].children.push({
id: jsk_data[i].id,
label: jsk_data[i].regionName,
short: jsk_data[i].short,
value: jsk_data[i].parentId,
children: [],
});
}
}
} else if (jsk_data[i].regionLevel == x + 1 && x + 1 == 3) {
for (let j = 0; j < str.length; j++) {
if (str[j].children) {
for (let k = 0; k < str[j].children.length; k++) {
if (str[j].children[k].id == jsk_data[i].parentId) {
str[j].children[k].children.push({
id: jsk_data[i].id,
label: jsk_data[i].regionName,
short: jsk_data[i].short,
value: jsk_data[i].parentId,
});
}
}
}
}
}
}
}
this.addressList = str;
},
hidePoper() {
if (this.$refs.datePicker) {
this.$refs.datePicker.pickerVisible = false;
}
},
mouseenter() {
this.handleTimeShowPopper = true;
if (this.handleTimeValue == "自定义") {
this.$nextTick(() => {
this.$refs.datePicker.pickerVisible = true;
});
}
},
hidePoper1() {
if (this.$refs.datePicker1) {
this.$refs.datePicker1.pickerVisible = false;
}
},
mouseenter1() {
this.planStartTimeShowPopper = true;
if (this.planStartTimeValue == "自定义") {
this.$nextTick(() => {
this.$refs.datePicker1.pickerVisible = true;
});
}
},
hidePoper2() {
if (this.$refs.datePicker2) {
this.$refs.datePicker2.pickerVisible = false;
}
},
mouseenter2() {
this.planEndTimeShowPopper = true;
if (this.planEndTimeValue == "自定义") {
this.$nextTick(() => {
this.$refs.datePicker2.pickerVisible = true;
});
}
},
fieldCommand(command) {
this.field = command;
this.search();
},
clearHandleTime() {
this.handleTime = "";
this.handleTimeValue = "";
var obj = JSON.parse(JSON.stringify(this.establishmentDto));
obj.handleTimeStart = "";
obj.handleTimeEnd = "";
this.establishmentDto = obj;
},
clearPlanStartTime() {
this.planStartTime = "";
this.planStartTimeValue = "";
var obj = JSON.parse(JSON.stringify(this.establishmentDto));
obj.planStartTimeStart = "";
obj.planStartTimeEnd = "";
this.establishmentDto = obj;
},
clearPlanEndTime() {
this.planEndTime = "";
this.planEndTimeValue = "";
var obj = JSON.parse(JSON.stringify(this.establishmentDto));
obj.planEndTimeStart = "";
obj.planEndTimeEnd = "";
this.establishmentDto = obj;
},
reset() {
Object.assign(this.$data, this.$options.data.call(this)); //重置data
this.init();
this.$emit("reset");
this.token = getCookie("tokenNew");
},
init() {
this.search();
this.addressListfn();
this.$axios.get('https://files.jiansheku.com/file/json/common/searchDic.json').then(res => {
if (res && res.status == 200) {
this.projectTypeOptions = res.data.projectType;
this.industryOptions = res.data.establishmentIndustry
}
}).catch(error => {
});
if (this.industryOptions.length == 0) {
this.$axios
.post("/nationzj/project/recently/typeList", {
timeout: "49999",
headers: {
"Content-Type": "application/json;charset=UTF-8",
},
})
.then((res) => {
if (res.data.code == 200) {
this.industryOptions = res.data.data.establishmentIndustryList;
}
})
.catch((err) => {});
}
},
},
};
</script>
<style lang="scss" scoped>
.content{
padding: 0px 16px;
border-radius: 4px 4px 4px 4px;
background: #FFFFFF;
.content_item{
padding-top: 12px;
display: flex;
align-items: center;
.label{
width: 84px;
font-size: 14px;
font-weight: 400;
color: rgba(35,35,35,0.8);
}
.content_right{
.ename_input{
width: 640px;
margin-right: 20px;
}
.land_ipt_470 {
width: 640px;
}
}
.item_ckquery_list {
display: flex;
}
.item_ckquery_list .el-input__icon {
position: relative;
top: 1px;
}
.ckquery_list_right {
width: 640px;
}
.register_count_ipt{
margin-left: 0px;
}
.register_count_ipt .el-input__inner{
width: 174px;
}
::v-deep .el-input-group__prepend{
padding: 0 8px;
}
.content-projecttype{
display: flex;
align-items: center;
justify-content: center;
.projecttype{
font-weight: 400;
color: #232323;
padding: 1px 5px;
margin-right: 4px;
cursor: pointer;
border-radius: 3px 3px 3px 3px;
font-size: 14px;
}
.projecttype:first-child{
padding-left: 0px;
}
.projecttype:hover{
background: #F3F4F5;
padding: 1px 5px;
}
.activetype{
background: #F3F4F5;
padding: 1px 5px !important;
}
}
}
.content_item_padding0{
padding: 0;
}
}
.bottomlist{
width: 100%;
background-color: #FFFFFF;
border-radius: 4px 4px 4px 4px;
.bottomlist-title{
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 12px;
padding: 16px ;
border-bottom: 1px solid #EFEFEF;
.title-right{
display: flex;
align-items: center;
p:first-child{
font-size: 12px;
font-weight: 400;
color: #3D3D3D;
margin-right: 10px;
}
p:last-child{
display: flex;
align-items: center;
font-size: 14px;
font-weight: 400;
color: rgba(35,35,35,0.8);
}
img{
width: 18px;
height: 18px;
}
}
}
.bottomlist-content{
padding-bottom: 0px;
}
.bottomlist-list{
padding: 16px;
font-size: 14px;
border-bottom: 1px solid #EFEFEF;
padding-bottom: 14px;
.list-titel{
font-size: 16px;
font-weight: 700;
color: #3D3D3D;
line-height: 19px;
.list-titel-a{
text-decoration: none;
color:#3D3D3D;
}
a:hover, a:visited, a:link, a:active{
color:#3D3D3D;
}
}
.content-label{
margin-top: 7px;
.list-label{
background: #F3F3FF;
color: #8491E8;
border-radius: 1px 1px 1px 1px;
padding: 3px 7px;
font-size: 12px;
}
}
.list-content{
margin-top: 3px;
display: flex;
justify-content: start;
align-items: center;
.list-content-text{
margin-top: 7px;
display: flex;
justify-content: start;
align-items: center;
margin-right: 27px;
font-size: 14px;
span:first-child{
font-weight: 400;
color: rgba(35,35,35,0.4);
line-height: 15px
}
span:last-child{
font-weight: 400;
color: rgba(35,35,35,0.8);
line-height: 15px
}
.blue{
color: #0081FF !important;
cursor: pointer;
}
}
}
.list-addree{
width: auto;
background: #F3F4F5;
display: inline-flex;
margin-top: 7px;
.list-content-text{
margin-top: 0px;
span{
line-height: 30px!important;
}
}
img{
width: 14px;
margin: 0 8px;
}
}
}
.bottomlist-list:hover{
background: #F6F9FC;
cursor: pointer;
}
.pagination{
padding: 14px ;
.el-pagination{
float: right;
}
}
}
</style>
\ No newline at end of file
<template>
<!-- 招标公告 -->
<div >
<div class="content">
<div class="content_item">
<div class="label">项目属地</div>
<div class="content_right">
<div class="bxpro_region">
<div class="bxpro_province">
<span v-for="(item,index) in bxproProvince" :class="provinceStatus==index ? 'bxpro_province_selected' : ''" @click="clickProvince(index)">{{ item.name }}</span>
</div>
<div class="bxpro_city" v-if="projectTerritory.length > 0">
<div class="bxpro_city_fex">
<div>
<div class="bxpro_city_fex_nr" :style="'height:'+maxHeight">
<span @click="changeProjectTerritory">不限</span>
<template v-for="(item,index) in projectTerritory">
<span :class="{ color_text: changeClass(item.id) }" :key="index" @click="changeProjectTerritory(item)">{{ item.regionName }} <img src="@/assets/images/bxpro/bxporre.png"></span>
</template>
</div>
<div style="width: 1017px;border-top: 1px solid #efefef;padding: 10px 0 0;" v-if="projecTcounty.length > 0">
<template v-for="(item,index) in projecTcounty">
<span :class="{ color_text: changeClass(item.id) }" :key="index" @click="changeProjectTerritory(item)">{{ item.regionName }} <img src="@/assets/images/bxpro/bxporre.png"></span>
</template>
</div>
</div>
<div class="bxpro_city_fex_click" @click="changeDown(isHeight)">
<template v-if="isHeight">
展开<i class="el-icon-caret-bottom"></i>
</template>
<template v-else>
收起<i class="el-icon-caret-up"></i>
</template>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="content_item">
<div class="label">项目名称</div>
<div class="content_right">
<el-input class="ename_input"
placeholder="请输入项目名称关键字" v-model="keyword" ></el-input>
</div>
</div>
<div class="content_item">
<div class="label">项目名称</div>
<div class="content_right">
<div class="select-popper">
<span :class="{ color_text: jskBidNewsDto.projectType.length }">
工程类型{{jskBidNewsDto.projectType.length? jskBidNewsDto.projectType.length + "项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="jskBidNewsDto.projectType" class="select-multiple" multipleplaceholder="请选择">
<el-option v-for="(item, i) in projectTypeList" :key="i":label="item" :value="item">
</el-option>
</el-select>
</div>
<div class="select-popper">
<span :class="{ color_text: jskBidNewsDto.projectPurposes.length }">
工程类别{{jskBidNewsDto.projectPurposes.length? jskBidNewsDto.projectPurposes.length + "项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="jskBidNewsDto.projectPurposes" class="select-multiple" multiple placeholder="请选择">
<el-option v-for="(item, i) in projectPurposesList":key="i":label="item":value="item">
</el-option>
</el-select>
</div>
<div class="select-popper">
<span :class="{color_text: jskBidNewsDto.projectLevel.length}" >
项目级别{{jskBidNewsDto.projectLevel.length? jskBidNewsDto.projectLevel.length + "项" : ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="jskBidNewsDto.projectLevel" class="select-multiple"multiple placeholder="请选择" >
<el-option v-for="(item, i) in projectLevelList" :key="i" :label="item":value="item">
</el-option>
</el-select>
</div>
<div class="select-popper">
<span :class="{ color_text: jskBidNewsDto.bidAssessmentWay.length }">
评标办法 {{jskBidNewsDto.bidAssessmentWay.length? jskBidNewsDto.bidAssessmentWay.length + "项" : ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="jskBidNewsDto.bidAssessmentWay"class="select-multiple"multiple placeholder="请选择">
<el-option v-for="(item, i) in bidAssessmentWayList":key="i":label="item" :value="item">
</el-option>
</el-select>
</div>
<div class="select-popper">
<span :class="{ color_text: jskBidNewsDto.projectEnsureAmountPayType.length }">
保证金缴纳{{ jskBidNewsDto.projectEnsureAmountPayType.length ? jskBidNewsDto.projectEnsureAmountPayType.length + "项" : ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="jskBidNewsDto.projectEnsureAmountPayType"class="select-multiple"multiple placeholder="请选择">
<el-option v-for="(item, i) in projectEnsureAmountPayTypeList" :key="i":label="item":value="item">
</el-option>
</el-select>
</div>
<el-dropdown@command="punishDatehandleCommand"trigger="click"ref="punishDateShowPopper":hide-on-click="false" class="el-dropdown-land">
<span class="el-dropdown-link":class="punishDateValue ? 'color_text' : ''">
发布日期{{ punishDateValue ? " 1项" : ""}}<i class="el-icon-caret-bottom"></i>
</span>
<div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="(item, i) in punishDateOptions":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>
<el-dropdown @command="punishDatehandleCommand1" trigger="click"ref="bidOpeningDeadlineShowPopper":hide-on-click="false" class="el-dropdown-land">
<span class="el-dropdown-link":class="bidOpeningDeadlineValue ? 'color_text' : ''">
开标截止日期{{ bidOpeningDeadlineValue ? " 1项" : ""}}<i class="el-icon-caret-bottom"></i>
</span>
<div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="(item, i) in bidOpeningDeadlineOptions":class=" bidOpeningDeadlineValue && bidOpeningDeadlineValue == item.value ? 'color_text' : '' ":key="i" :command="item.value" >
<div @mouseenter="hidePoper1">{{ item.label }}</div>
</el-dropdown-item>
<el-dropdown-item command="自定义"style="padding: 0; text-indent: 20px" >
<div @mouseenter="mouseenter1">
<span :class="punishDateValue == '自定义' ? 'color_text' : ''" >
自定义<i class="el-icon-arrow-right"></i>
</span>
<el-date-picker
v-if="bidOpeningDeadlineShowPopper"
@change="changepunishDate1"
class="land_date_picker"
v-model="bidOpeningDeadline"
ref="datePicker1"
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="content_item">
<div class="label">项目金额</div>
<div class="content_right content_right1">
<div class="land_content_wrap-flex">
<div class="land_content_wrap_label" >
项目投资额
</div>
<el-input class="other_ipt" placeholder="输入最低金额" @change="changeMoney('start','startProjectAmount','endProjectAmount')" v-limit-num clearable
v-model="jskBidNewsDto.startProjectAmount"></el-input>
<span class="other_label_span"></span>
<el-input placeholder="输入最高金额" @change="changeMoney('end','startProjectAmount','endProjectAmount')" v-limit-num
v-model="jskBidNewsDto.endProjectAmount" clearable class="other_ipt other_ipt1">
<el-button slot="append" type="primary">万元</el-button>
</el-input>
</div>
<div class="land_content_wrap-flex">
<div class="land_content_wrap_label" >合同估算价
</div>
<el-input class="other_ipt" placeholder="输入最低金额" @change="changeMoney('start','startProjectContractAmount','endProjectContractAmount')" v-limit-num clearable
v-model="jskBidNewsDto.startProjectContractAmount"></el-input>
<span class="other_label_span"></span>
<el-input placeholder="输入最高金额" @change="changeMoney('end','startProjectContractAmount','endProjectContractAmount')" v-limit-num
v-model="jskBidNewsDto.endProjectContractAmount" clearable class="other_ipt other_ipt1">
<el-button slot="append" type="primary">万元</el-button>
</el-input>
</div>
<div class="land_content_wrap-flex">
<div class="land_content_wrap_label" >投标保证金
</div>
<el-input class="other_ipt" placeholder="输入最低金额" @change="changeMoney('start','startProjectEnsureAmount','endProjectEnsureAmount')" v-limit-num clearable
v-model="jskBidNewsDto.startProjectEnsureAmount"></el-input>
<span class="other_label_span"></span>
<el-input placeholder="输入最高金额" @change="changeMoney('end','startProjectEnsureAmount','endProjectEnsureAmount')" v-limit-num
v-model="jskBidNewsDto.endProjectEnsureAmount" clearable class="other_ipt other_ipt1">
<el-button slot="append" type="primary">万元</el-button>
</el-input>
</div>
</div>
</div>
</div>
<div class="content">
<!--条件-->
<div id="tender_wrap" class="content_wrap">
<template>
<div class="land_content_wrap ">
</div>
<div v-show="selectedHeights">
<div class="land_content_wrap ">
<div class="land_content_wrap-flex">
<div class="land_content_wrap_label" >建安费暂估
</div>
<el-input class="other_ipt" placeholder="输入最低金额" @change="changeMoney('start','startProjectSafeAmount','endProjectSafeAmount')" v-limit-num clearable
v-model="jskBidNewsDto.startProjectSafeAmount"></el-input>
<span class="land_content_wrap_label_span"></span>
<el-input placeholder="输入最高金额" @change="changeMoney('end','startProjectSafeAmount','endProjectSafeAmount')" v-limit-num
v-model="jskBidNewsDto.endProjectSafeAmount" clearable class="other_ipt other_ipt1">
<el-button slot="append" type="primary">万元</el-button>
</el-input>
</div>
<div class="land_content_wrap-flex">
<div class="land_content_wrap_label" >勘察费暂估
</div>
<el-input class="other_ipt" placeholder="输入最低金额" @change="changeMoney('start','startProjectSurveyAmount','endProjectSurveyAmount')" v-limit-num clearable
v-model="jskBidNewsDto.startProjectSurveyAmount"></el-input>
<span class="land_content_wrap_label_span"></span>
<el-input placeholder="输入最高金额" @change="changeMoney('end','startProjectSurveyAmount','endProjectSurveyAmount')" v-limit-num
v-model="jskBidNewsDto.endProjectSurveyAmount" clearable class="other_ipt other_ipt1">
<el-button slot="append" type="primary">万元</el-button>
</el-input>
</div>
<div class="land_content_wrap-flex">
<div class="land_content_wrap_label" >设计费暂估
</div>
<el-input class="other_ipt" placeholder="输入最低金额" @change="changeMoney('start','startProjectDesignAmount','endProjectDesignAmount')" v-limit-num clearable
v-model="jskBidNewsDto.startProjectDesignAmount"></el-input>
<span class="land_content_wrap_label_span"></span>
<el-input placeholder="输入最高金额" @change="changeMoney('end','startProjectDesignAmount','endProjectDesignAmount')" v-limit-num
v-model="jskBidNewsDto.endProjectDesignAmount" clearable class="other_ipt other_ipt1">
<el-button slot="append" type="primary">万元</el-button>
</el-input>
</div>
</div>
<div class="land_content_wrap" style="margin-top: 16px">
<span class="land_content_wrap_label" style="">资质要求</span>
<el-input
style="margin-left:12px;"
v-model="jskBidNewsDto.qualiLimit"
clearable
placeholder="请输入关键词句,如:施工总承包三级"
>
</el-input>
<span class="land_content_wrap_label_tipspan">
<el-tooltip popper-class="explain_tooltip" content="根据输入的关键词全称进行匹配"
placement="bottom" effect="light">
<img class="tip_svg" src="@/assets/images/bxpro/tipf.png" alt="排除资质-建设库">
</el-tooltip>
</span>
<span class="land_content_wrap_label" style="margin-left: 24px;margin-right:16px;width: 58px;">业绩要求</span>
<el-input
style="margin-left:12px;"
v-model="jskBidNewsDto.projectLimit"
clearable
placeholder="请输入关键词句,如:建筑工程"
>
</el-input>
<span class="land_content_wrap_label_tipspan">
<el-tooltip popper-class="explain_tooltip" content="根据输入的关键词全称进行匹配"
placement="bottom" effect="light">
<img class="tip_svg" src="@/assets/images/bxpro/tipf.png" alt="排除资质-建设库">
</el-tooltip>
</span>
</div>
<div class="land_content_wrap">
<span class="land_content_wrap_label" style="line-height:34px;">人员要求</span>
<el-input
style="margin-left:12px;"
v-model="jskBidNewsDto.personLimit"
clearable
placeholder="请输入关键词句,如:一级建造师"
>
</el-input>
<span class="land_content_wrap_label_tipspan">
<el-tooltip popper-class="explain_tooltip" content="根据输入的关键词全称进行匹配"
placement="bottom" effect="light">
<img class="tip_svg" src="@/assets/images/bxpro/tipf.png" alt="排除资质-建设库">
</el-tooltip>
</span>
</div>
<div class="line"></div>
<div class="land_content_wrap" style="margin-top: 16px">
<span class="land_content_wrap_label" style="margin-left: 14px;">招标人
</span>
<el-input
style="margin-left:12px;"
v-model="jskBidNewsDto.tenderee"
clearable
placeholder="请输入关键字"
>
</el-input>
<span class="land_content_wrap_label" style="margin-left: 24px;margin-right:16px;width: 58px;">代理机构
</span>
<el-input
v-model="jskBidNewsDto.agency"
clearable
placeholder="请输入关键字"
></el-input>
</div>
</div>
<div class="search-new" style="padding: 0px 0px 16px 76px !important;border: 0;margin: 0;">
<span @click="bxproggSearch()">查询</span>
<span @click="reset1">重置</span>
</div>
</template>
<div class="data_list" v-if="showList">
<div style="height: 16px;width: 1200px;background: #F7F9FC;margin-left: -16px;"></div>
<div class="data_list_head">
共为您找到<span class="data_list_count"> {{ total }} </span>条相关结果
<div class="bottom-toolbar-right float_right" style="padding-top: 1px;">
<span size="small" class="toolbar-right-download toolbar-right-download1" style="margin-right:0;" @click="bxproggSearch('','','isExport')">
导出数据
</span>
</div>
<div class="bottom-toolbar-right float_right" style="position:relative;top:1px;">
<el-popover v-model="fieldshow" placement="bottom-end" trigger="click" popper-class="viewlist-el-popover">
<ul class="pup_list">
<li v-for="(itme,i) in fieldOptions" :class="itme.status?'active':''"
@click="handsequencingList(i)" :key="i">
<div style="position: relative;">
{{itme.value}}
</div>
</li>
</ul>
<span slot="reference" class="toolbar-right-download" style="width: auto;padding: 0px 8px;" >
{{fieldText}}<i class="el-icon-caret-bottom" :style="{transform:fieldshow?'rotate(180deg)':''}"></i>
</span>
</el-popover>
</div>
<div class="data_list_btn float_right">
<el-checkbox-group v-model="checkList" @change="lowerRateClick()">
<el-checkbox :label="item.value" v-for="(item, index) in checkType" :key="index">{{item.name}}</el-checkbox>
</el-checkbox-group>
<!-- <el-checkbox @change="lowerRateClick()" v-model="checked">只看有符合企业的项目</el-checkbox>-->
<!--<div @click="lowerRateClick(0)" :class="activeIndex==0?'data_list_btn_active':''">只看有符合企业的项目</div>-->
<!--<div @click="lowerRateClick(1)" :class="[activeIndex==1?'data_list_btn_active':'']">按符合企业</div>-->
</div>
</div>
<div v-if="total > 0" class="bxpro_list">
<div style="border-top:1px solid #efefef;padding-top: 25px">
<el-table
:data="tableData"
border
max-height="608"
ref="multipleTable"
style="width: 100%;">
<el-table-column
:resizable="false"
label="发布日期"
width="112">
<template slot-scope="scope">
{{ scope.row.pubdate ? scope.row.pubdate : '--' }}
</template>
</el-table-column>
<el-table-column
:resizable="false"
label="项目名称"
min-width="186">
<template slot-scope="scope">
<span class="bxpro_list_titles" v-if="!scope.row.id && scope.row.projectName" v-html="scope.row.projectName"></span>
<span class="bxpro_list_titles" v-html="scope.row.projectName"></span>
</template>
</el-table-column>
<el-table-column
:resizable="false"
label="工程用途"
width="115">
<template slot-scope="scope">
<span v-if="scope.row.projectPurposes">{{scope.row.projectPurposes}}</span>
<span v-else>--</span>
</template>
</el-table-column>
<el-table-column
:resizable="false"
label="项目金额"
width="190">
<template slot-scope="scope">
<ul class="bxpro_list_money">
<template v-if="scope.row.projectInvestmentAmount ||
scope.row.projectContractAmount ||
scope.row.projectSafeAmount ||
scope.row.projectSurveyAmount ||
scope.row.projectDesignAmount">
<li v-if="scope.row.projectInvestmentAmount">
<span >
<span >投资额:{{ scope.row.projectInvestmentAmount }}万元</span>
</span>
</li>
<li v-if="scope.row.projectContractAmount">
<span >
<span >控制价:{{ scope.row.projectContractAmount }}万元</span>
</span>
</li>
<li v-if="scope.row.projectSafeAmount">
<span >
<span >建安费:{{ scope.row.projectSafeAmount }}万元</span>
</span>
</li>
<li v-if="scope.row.projectSurveyAmount">
<span >
<span >勘察费:{{ scope.row.projectSurveyAmount }}万元</span>
</span>
</li>
<li v-if="scope.row.projectDesignAmount">
<span >
<span >设计费:{{ scope.row.projectDesignAmount }}万元</span>
</span>
</li>
</template>
<li v-else>--</li>
</ul>
</template>
</el-table-column>
<el-table-column
:resizable="false"
label="投标保证金"
width="128">
<template slot-scope="scope">
<ul class="bxpro_list_money">
<template v-if="scope.row.projectEnsureAmount">
<li>
<span >
<span >{{ scope.row.projectEnsureAmount }}万元</span>
</span>
</li>
</template>
<li v-else>--</li>
</ul>
</template>
</el-table-column>
<el-table-column
:resizable="false"
label="评标办法"
width="105">
<template slot-scope="scope">
<span v-if="scope.row.bidAssessmentWay">{{scope.row.bidAssessmentWay}}</span>
<span v-else>--</span>
</template>
</el-table-column>
<el-table-column
:resizable="false"
label="评标委员会有无业主代表"
width="105">
<template slot-scope="scope">
<span v-if="scope.row.bidMettingHasProjectUnit == 0">未公示</span>
<span v-if="scope.row.bidMettingHasProjectUnit == 1"></span>
<span v-if="scope.row.bidMettingHasProjectUnit == 2"></span>
</template>
</el-table-column>
<el-table-column
:resizable="false"
label="有无预付款"
width="102">
<template slot-scope="scope">
<span v-if="scope.row.hasAdvanceAmount == 0">未公示</span>
<span v-if="scope.row.hasAdvanceAmount == 1"></span>
<span v-if="scope.row.hasAdvanceAmount == 2"></span>
</template>
</el-table-column>
<el-table-column
:resizable="false"
label="招标人"
width="200">
<template slot-scope="scope">
<ul class="bxpro_list_money">
<li>
<div v-if="!scope.row.tendereeId && scope.row.tenderee">{{scope.row.tenderee}}</div>
<div v-else>--</div>
</li>
</ul>
</template>
</el-table-column>
</el-table>
</div>
</div>
<div v-else style="border-top:1px solid #efefef;padding-bottom:1px;width: 1200px;margin-left: -16px;" >
<div class="search_empty_wrap">
<ul>
<li class="search_empty_wrap_li search_empty_wrap_li1">没有找到相关数据,您可尝试:</li>
<li class="search_empty_wrap_li"><i class="disc"></i>输入更准确的关键词,重新搜索</li>
<li class="search_empty_wrap_li"><i class="disc"></i>尝试减少输入的关键词,增加搜索范围</li>
<li class="search_empty_wrap_li"><i class="disc"></i>更换筛选条件,重新搜索</li>
<li class="search_empty_wrap_li"><i class="disc"></i>联系客服进行反馈<span>023-62798729</span>(工作日09:00-18:00)或<span><nuxt-link title="意见反馈" :to="`/feedback/`" target="_blank">意见反馈</nuxt-link></span></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import jsk_data from '../../../../../public/jsk.json';
export default {
name: "bxprozbgg",
components: {
},
data(){
return{
allDownloadList:[],
province:[
{
"id": "500000",
"regionName": "重庆",
"regionLevel": "1",
"parentId": "100000"
},
{
"id": "510000",
"regionName": "四川省",
"regionLevel": "1",
"parentId": "100000"
},
],
provinceValue:'',
provinceName:'',
showReport:true,
activeIndex: 0,
openVip: {
open: false,
},
loginData: {
loginShow: false
},
checkType: [
{name: '含竞争对手', value: 'hasFile'},
{name: '含项目简析', value: 'projectCharacteristics'},
{name: '含成本分析', value: 'costAnalysis'},
{name: '含报价策略与市场分析', value: 'marketAnalysis'}
],
// checked: false,
navList: [
{
value: '招标公告',
url:'bxprozbgg',
new:true,
},
{
value: '中标候选人',
url:'bxprozbhxr',
new:true,
}
],
isHeight: true,
maxHeight: '42px',
keyword:'',
keywordNot:'',
//项目属地
isProvinceId:500000,//判断直辖市
provinceStatus:null,
bxproProvince:[
{
id:500000,
name: '重庆',
},
{
id:510000,
name: '四川',
}
],
projectTerritory:[],
projecTcounty:[],
projectTerritoryId:[],
projectTerritorylist:[],
projectTypeList: [
"施工",
"勘察设计",
"勘察",
"设计",
"监理",
"工程总承包",
"测绘",
"施工图审查",
"造价咨询",
"招标代理",
"规划编制",
"方案编制",
"检测",
"审计",
"项目管理",
"全过程工程咨询",
"ppp",
"其他"
],//工程类型
projectPurposesList: [
"居住建筑",
"办公建筑",
"商业建筑",
"文化建筑",
"体育建筑",
"教育建筑",
"科研建筑",
"卫生建筑",
"旅馆酒店建筑",
"旅游建筑",
"交通建筑",
"广播电影电视建筑",
"居民服务建筑",
"人防建筑",
"厂房",
"仓库",
"工业配套建筑",
"构筑物工程",
"建筑配套工程",
"自来水厂工程",
"净水厂工程",
"输水管网工程",
"污水处理站工程",
"污水处理厂工程",
"污水管网工程",
"市政道路工程",
"市政桥梁工程",
"市政隧道工程",
"动物生产建筑",
"植物栽培建筑",
"农产品存储建筑",
"农副产品加工建筑",
"农机具维修建筑",
"农村能源建筑",
"城市轨道交通工程",
"综合管廊工程",
"园林绿化工程",
"垃圾处理工程",
"保洁工程",
"公共厕所工程",
"楼宇照明工程",
"道路照明工程",
"景观照明工程",
"燃气工程",
"热力工程",
"其它市政附属设施工程",
"交通安全设施工程",
"土石方工程",
"地灾治理工程",
"文物保护工程",
"公路工程",
"公路桥梁工程",
"公路隧道工程",
"水利枢纽工程",
"水环境治理工程",
"农田灌溉工程",
"城镇供水工程",
"水力发电工程",
"供配电工程",
"输变电工程",
"发电工程",
"机电工程",
"铁路工程",
"港口工程",
"航道工程",
"通信工程",
"民航工程",
"石油化工工程",
"矿山工程",
"冶金工程",
"其他"
],//工程类别
projectLevelList:[
"省级",
"市级",
"区县级"
],//项目级别
addressList: [],
addressType: [],
props: {
multiple: true,
expandTrigger: "hover",
value: "id",
},
bidAssessmentWayList:[
"综合评估法",
"性价比法",
"简易评标法",
"最低投标价法",
"最低评标价法",
"组合低价评标法",
"固定低价评标法",
"设备运行年限评标法",
"分步评审法",
"技术评分最低标价法",
"二合一评标法",
"评定分离法",
"合理低价法",
"固定价随机抽取中标人法",
"定性评审法"
],//评标办法
projectEnsureAmountPayTypeList:[
"电汇",
"银行保函",
"电子保函",
"商业保函",
"现金",
"电子保险",
"银行汇票",
"银行转账"
],//保证金缴纳
//发布日期
punishDateValue: "",
punishDateOptions: [
{
label: "不限",
value: "",
},
{
label: "近一天",
value: "近一天",
},
{
label: "近三天",
value: "近三天",
},
{
label: "近五天",
value: "近五天",
},
{
label: "近七天",
value: "近七天",
},
{
label: "近十天",
value: "近十天",
},
{
label: "近半月",
value: "近半月",
},
{
label: "近一月",
value: "近一月",
},
{
label: "近三月",
value: "近三月",
},
// {
// label: "近半年",
// value: "近半年",
// },
// {
// label: "近1年",
// value: "近1年",
// },
],
punishDateShowPopper: false,
punishDate: "",
//开标截止日期
bidOpeningDeadlineValue: "",
bidOpeningDeadlineOptions: [
{
label: "不限",
value: "",
},
{
label: "近一天",
value: "近一天",
},
{
label: "近三天",
value: "近三天",
},
{
label: "近五天",
value: "近五天",
},
{
label: "近七天",
value: "近七天",
},
{
label: "近十天",
value: "近十天",
},
{
label: "近半月",
value: "近半月",
},
{
label: "近一月",
value: "近一月",
},
{
label: "近三月",
value: "近三月",
},
],
bidOpeningDeadlineShowPopper: false,
bidOpeningDeadline: "",
conditionsArr: [],
fieldshow: false,
fieldText: '默认排序',
field: '', //查询结果排序方式
desc: '', //查询结果排序方式
fieldOptions: [
{
key: "",
value: "默认排序",
status: true,
desc: '',
},
{
key: "pubdate",
value: "发布时间从晚到早",
status: false,
desc: 'desc',
},
{
key: "endTimeDate",
value: "开标截至时间从晚到早",
status: false,
desc: 'desc',
},
{
key: "endTimeDate",
value: "开标截至时间从早到晚",
status: false,
desc: 'asc',
},
],
selectedHeight: 64,
selectedHeights: false,
pageFlag: true,
showList:false,
total: 0,
limit:20,
currentPage:1,
jskBidNewsDto:{
province: [],
city: [],
county: [],
projectType: [],
projectPurposes: [],
bidAssessmentWay: [],
projectEnsureAmountPayType: [],
projectLevel: [],
},
tableData: [],
id:"",
companyName1:"",
type:"",
permissions:{
"search": [
{
"label": "工程类别",
"url": "",
"children": [],
"field": "",
"permission": true,
"isShowIcon": false,
"trigger": ""
},
{
"label": "工程类型",
"url": "",
"children": [],
"field": "",
"permission": true,
"isShowIcon": false,
"trigger": ""
},
{
"label": "评标办法",
"url": "",
"children": [],
"field": "",
"permission": true,
"isShowIcon": false,
"trigger": ""
},
{
"label": "保证金缴纳",
"url": "",
"children": [],
"field": "",
"permission": true,
"isShowIcon": false,
"trigger": ""
},
{
"label": "项目投资额",
"url": "",
"children": [],
"field": "",
"permission": true,
"isShowIcon": false,
"trigger": ""
},
{
"label": "合同估算价",
"url": "",
"children": [],
"field": "",
"permission": true,
"isShowIcon": false,
"trigger": ""
},
{
"label": "建安费暂估",
"url": "",
"children": [],
"field": "",
"permission": true,
"isShowIcon": false,
"trigger": ""
},
{
"label": "堪察费暂估",
"url": "",
"children": [],
"field": "",
"permission": true,
"isShowIcon": false,
"trigger": ""
},
{
"label": "设计费暂估",
"url": "",
"children": [],
"field": "",
"permission": true,
"isShowIcon": false,
"trigger": ""
},
{
"label": "投标保证金",
"url": "",
"children": [],
"field": "",
"permission": true,
"isShowIcon": false,
"trigger": ""
},
{
"label": "招标人",
"url": "",
"children": [],
"field": "",
"permission": true,
"isShowIcon": false,
"trigger": ""
},
{
"label": "代理机构",
"url": "",
"children": [],
"field": "",
"permission": true,
"isShowIcon": false,
"trigger": ""
}
],
"page": {
"url": "",
"maxPage": 500,
"trigger": "LIMIT",
"isShowIcon": false,
"backgroundColor": ""
},
"sort": [
{
"label": "默认排序",
"permission": true,
"isShowIcon": false,
"field": "",
"url": "",
"trigger": ""
},
{
"label": "发布时间从晚到早",
"permission": true,
"isShowIcon": false,
"field": "desc",
"url": "",
"trigger": ""
},
{
"label": "开标截至时间从晚到早",
"permission": true,
"isShowIcon": false,
"field": "asc",
"url": "",
"trigger": ""
},
{
"label": "开标截至时间从早到晚",
"permission": true,
"isShowIcon": false,
"field": "asc",
"url": "",
"trigger": ""
}
],
"export": {
"label": "导出数据",
"url":"",
"trigger":"",
"permission": true,
"isShowIcon": true
},
"response": [
{
"label": "项目名称",
"url":"",
"keys":[],
"trigger":"",
"permission": true,
"isShowIcon": false,
"children": []
},
{
"label": "合同估算价",
"url":"",
"keys":[],
"trigger":"",
"permission": true,
"isShowIcon": false,
"children": []
},
{
"label": "项目投资额",
"url":"",
"keys":[],
"trigger":"",
"permission": true,
"isShowIcon": false,
"children": []
},
{
"label": "设计费暂估",
"url":"",
"keys":[],
"trigger":"",
"permission": true,
"isShowIcon": false,
"children": []
},
{
"label": "建安费暂估",
"url":"",
"keys":[],
"trigger":"",
"permission": true,
"isShowIcon": false,
"children": []
},
{
"label": "勘察费暂估",
"url":"",
"keys":[],
"trigger":"",
"permission": true,
"isShowIcon": false,
"children": []
},
{
"label": "保证金",
"url":"",
"keys":[],
"trigger":"",
"permission": true,
"isShowIcon": false,
"children": []
},
{
"label": "招标人",
"url":"",
"keys":[],
"trigger":"",
"permission": true,
"isShowIcon": false,
"children": []
},
{
"label": "代理机构",
"url":"",
"keys":[],
"trigger":"",
"permission": true,
"isShowIcon": false,
"children": []
},
{
"label": "资质要求",
"url":"",
"keys":[],
"trigger":"",
"permission": true,
"isShowIcon": false,
"children": []
},
{
"label": "业绩要求",
"url":"",
"keys":[],
"trigger":"",
"permission": true,
"isShowIcon": false,
"children": []
},
{
"label": "人员要求",
"url":"",
"keys":[],
"trigger":"",
"permission": true,
"isShowIcon": false,
"children": []
},
{
"label": "一键获取",
"url":"",
"keys":[],
"trigger":"",
"permission": true,
"isShowIcon": false,
"children": []
}
]
}
}
},
computed: {
checkjskBidNewsDto() {
let arr = [];
let flag = false;
let data = {};
let keyid, value, title;
if (this.projectTerritorylist.length > 0) {
data = {
title: "项目属地:",
value: this.projectTerritorylist.join(","),
}
arr.push(data)
flag = true;
}
if (this.keyword) {
data = {
title: "项目名称包含:",
value: this.keyword,
}
arr.push(data)
flag = true;
}
if (this.keywordNot) {
data = {
title: "项目名称排除:",
value: this.keywordNot,
}
arr.push(data)
flag = true;
}
if(this.punishDateValue=="自定义"){
data = {
title: "发布日期:",
value: this.jskBidNewsDto.startPubdate +"~" +this.jskBidNewsDto.endPubdate,
}
arr.push(data)
}
if(this.punishDateValue&&this.punishDateValue!="自定义"){
data = {
title: "发布日期:",
value: this.punishDateValue,
}
arr.push(data)
}
if(this.bidOpeningDeadlineValue=="自定义"){
data = {
title: "开标截止日期:",
value: this.jskBidNewsDto.startEndTimeDate +"~" +this.jskBidNewsDto.endEndTimeDate,
}
arr.push(data)
}
if(this.bidOpeningDeadlineValue&&this.bidOpeningDeadlineValue!="自定义"){
data = {
title: "开标截止日期:",
value: this.bidOpeningDeadlineValue,
}
arr.push(data)
}
for (var i in this.jskBidNewsDto) {
if (this.jskBidNewsDto[i]) {
keyid = i;
value = this.jskBidNewsDto[i];
if (
Object.prototype.toString.call(this.jskBidNewsDto[i]) ===
"[object Array]"
) {
if (this.jskBidNewsDto[i].length > 0) {
flag = true;
switch (i) {
case 'projectType':
title = "工程类型:";
break;
case 'projectPurposes':
title = "工程类别:";
break;
case 'projectLevel':
title = "项目级别:";
break;
case 'bidAssessmentWay':
title = "评标办法:";
break;
case 'projectEnsureAmountPayType':
title = "保证金缴纳:";
break;
default:
title = "";
break;
}
} else {
title = ""
}
} else {
title = ""
flag = true;
}
if (title) {
data = {
keyid: keyid,
value: value,
title: title,
key: value
}
arr.push(data)
}
}
}
this.conditionsArr = arr
return flag;
},
},
created() {
// this.dropDownType();
// this.clickProvince(0,1);
},
mounted() {
},
methods:{
refresh() {
this.$router.go(0)
},
//省份切换
clickProvince(index,type=0){
if(this.provinceStatus != index || type == 1 ){
this.provinceStatus = index
let projectTerritory = []
var id = this.bxproProvince[index].id
var province = jsk_data.find(function(item) {
return item.id === id && item.regionLevel === 1;
});
// 市区
var city = jsk_data.filter(function(item) {
return item.parentId === province.id && item.regionLevel === 2;
});
var district = []
if(this.bxproProvince[this.provinceStatus].id == this.isProvinceId){
// 区县
district = jsk_data.filter(function(item) {
return city.some(function(c) {
return c.id === item.parentId;
}) && item.regionLevel === 3;
});
}
projectTerritory = [...city, ...district]
this.projectTerritory = projectTerritory
this.deleteProjectTerritorylist()
this.changeDown(false)
}
},
//下拉
dropDownType(){
this.$axios.get('https://files.jiansheku.com/file/json/common/searchDic.json').then(res => {
if (res && res.status == 200) {
this.projectTypeList = res.data.bidAchievementType;
this.projectPurposesList = res.data.bidProjectType;
this.projectLevelList = res.data.bidProjectLevel;
this.bidAssessmentWayList = res.data.bidAssessmentWay;
this.projectEnsureAmountPayTypeList = res.data.bidAmountPayType;
}
}).catch(error=>{
});
},
// 关键词推荐
cliclikeywoder() {
this.$refs.keyword.show();
},
keywordClick(val) {
this.keyword = val
},
//项目属地
changeProjectTerritory(item){
let name = item.regionName,id = item.id
if(name && id){
let isId = true
for(var i=0;i<this.projectTerritoryId.length;i++){
if(this.projectTerritoryId[i].id == id){
this.projectTerritoryId.splice(i,1)
this.projectTerritorylist.splice(i,1)
isId = false
}
}
if(isId){
this.projectTerritorylist.push(name)
this.projectTerritoryId.push({regionLevel:item.regionLevel,id:id})
}
}else{
this.deleteProjectTerritorylist()
}
},
deleteProjectTerritorylist(){
this.projectTerritorylist = []
this.projectTerritoryId = []
this.projecTcounty = []
},
changeClass(id){
for(var i=0;i<this.projectTerritoryId.length;i++){
if(this.projectTerritoryId[i].id == id){
return true
}
}
},
//金额
changeMoney(text,Min,Max) {
if (
this.jskBidNewsDto[Min] &&
this.jskBidNewsDto[Max] &&
Number(this.jskBidNewsDto[Min]) >
Number(this.jskBidNewsDto[Max])
) {
this.$message.warning("最低金额不能大于最高金额!");
text == "start" ?
(this.jskBidNewsDto[Min] = "") :
(this.jskBidNewsDto[Max] = "");
}
},
//排序
handsequencingList(index) {
this.fieldshow = false;
this.field = this.fieldOptions[index].key;
this.desc = this.fieldOptions[index].desc;
for (let i = 0; i < this.fieldOptions.length; i++) {
this.fieldOptions[i].status = false;
}
this.fieldText = this.fieldOptions[index].value;
this.fieldOptions[index].status = true;
this.bxproggSearch();
},
//项目级别
addressListfn() {
var str = [];
for (let x = 0; x < 3; x++) {
for (let i = 0; i < jsk_data.length; i++) {
if (jsk_data[i].regionLevel == x + 1 && x + 1 == 1) {
str.push({
id: jsk_data[i].id,
label: jsk_data[i].regionName,
short: jsk_data[i].short,
value: jsk_data[i].parentId,
children:jsk_data[i].id==900000?undefined:[],
});
} else if (jsk_data[i].regionLevel == x + 1 && x + 1 == 2&&str) {
for (let j = 0; j < str.length; j++) {
if (str[j].id == jsk_data[i].parentId) {
str[j].children.push({
id: jsk_data[i].id,
label: jsk_data[i].regionName,
short: jsk_data[i].short,
value: jsk_data[i].parentId,
children: [],
});
}
}
} else if (jsk_data[i].regionLevel == x + 1 && x + 1 == 3) {
for (let j = 0; j < str.length; j++) {
if(str[j].children){
for (let k = 0; k < str[j].children.length; k++) {
if (str[j].children[k].id == jsk_data[i].parentId) {
str[j].children[k].children.push({
id: jsk_data[i].id,
label: jsk_data[i].regionName,
short: jsk_data[i].short,
value: jsk_data[i].parentId,
});
}
}
}
}
}
}
}
this.addressList = str;
},
deleteDomicile() {
this.$refs.address.handleClear();
},
domicileChange() {
let arr = this.$refs.address.getCheckedNodes();
let province = [],
city = [],
county = [];
this.domicile = [];
for (var i in arr) {
if (arr[i].parent) {
if (!arr[i].parent.checked) {
arr[i].hasChildren && city.push(arr[i].value);
arr[i].hasChildren && this.domicile.push(arr[i].label);
!arr[i].hasChildren && county.push(arr[i].value);
!arr[i].hasChildren && this.domicile.push(arr[i].label);
}
} else {
province.push(arr[i].value);
this.domicile.push(arr[i].label);
}
}
var obj = JSON.parse(JSON.stringify(this.jskBidNewsDto));
obj.province = province;
obj.city = city;
obj.county = county;
this.jskBidNewsDto = obj;
},
//发布日期
punishDatehandleCommand(command) {
var obj = JSON.parse(JSON.stringify(this.jskBidNewsDto));
if (command && command != "自定义") {
this.punishDateValue = command;
this.$refs.punishDateShowPopper.hide();
const datetime = new Date();
var startTime, endTime, Year, Month, Day;
Year = datetime.getFullYear();
Month = datetime.getMonth() + 1;
Day = datetime.getDate();
switch (command) {
case "近一天":
startTime = Year + "-" + Month + "-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "近三天":
var newTime = datetime.getTime() - 3 * 24 * 60 * 60 * 1000;
startTime =
new Date(newTime).getFullYear() +
"-" +
(new Date(newTime).getMonth() + 1) +
"-" +
new Date(newTime).getDate();
endTime = Year + "-" + Month + "-" + Day;
break;
case "近五天":
var newTime = datetime.getTime() - 5 * 24 * 60 * 60 * 1000;
startTime =
new Date(newTime).getFullYear() +
"-" +
(new Date(newTime).getMonth() + 1) +
"-" +
new Date(newTime).getDate();
endTime = Year + "-" + Month + "-" + Day;
break;
case "近七天":
var newTime = datetime.getTime() - 7 * 24 * 60 * 60 * 1000;
startTime =
new Date(newTime).getFullYear() +
"-" +
(new Date(newTime).getMonth() + 1) +
"-" +
new Date(newTime).getDate();
endTime = Year + "-" + Month + "-" + Day;
break;
case "近十天":
var newTime = datetime.getTime() - 10 * 24 * 60 * 60 * 1000;
startTime =
new Date(newTime).getFullYear() +
"-" +
(new Date(newTime).getMonth() + 1) +
"-" +
new Date(newTime).getDate();
endTime = Year + "-" + Month + "-" + Day;
break;
case "近半月":
var newTime = datetime.getTime() - 15 * 24 * 60 * 60 * 1000;
startTime =
new Date(newTime).getFullYear() +
"-" +
(new Date(newTime).getMonth() + 1) +
"-" +
new Date(newTime).getDate();
endTime = Year + "-" + Month + "-" + Day;
break;
case "近一月":
if (Month > 1) {
startTime = Year + "-" + (Month - 1) + "-"+ Day;
} else {
startTime = Year - 1 + "-" + (12 + Month - 1) + "-"+ Day;
}
endTime = Year + "-" + Month + "-" + Day;
break;
case "近三月":
if (Month > 3) {
startTime = (Year) + '-' + (Month - 3) + '-' + Day;
} else {
startTime = (Year - 1) + '-' + (12 + Month - 3) + '-' + Day;
}
endTime = Year + "-" + Month + "-" + Day;
break;
case "近半年":
if (Month > 6) {
startTime = Year + "-" + (Month - 6) + "-"+ Day;
} else {
startTime = Year - 1 + "-" + (12 + Month - 6) + "-"+ Day;
}
endTime = Year + "-" + Month + "-" + Day;
break;
case "近1年":
startTime = Year - 1 + "-" + Month + "-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "近3年":
startTime = Year - 3 + "-" + Month + "-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "自定义":
if (!this.punishDate) {
this.punishDateValue = "";
}
break;
}
if(startTime){
var start=startTime.split('-');
startTime=start.map((item)=>{
if(item.length==1){
return '0'+item
}else{
return item
}
})
startTime=startTime.join('-')
}
if(endTime){
var end=endTime.split('-');
endTime=end.map((item)=>{
if(item.length==1){
return '0'+item
}else{
return item
}
})
endTime=endTime.join('-')
}
obj.startPubdate = startTime;
obj.endPubdate = endTime;
} else if (command == "自定义") {
this.$refs.datePicker.pickerVisible = true;
} else {
this.$refs.punishDateShowPopper.hide();
this.punishDateValue = "";
this.punishDate = "";
obj.startPubdate = "";
obj.endPubdate = "";
}
this.jskBidNewsDto = obj;
},
clearContractSignTime() {
this.punishDate = "";
this.punishDateValue = "";
var obj = JSON.parse(JSON.stringify(this.jskBidNewsDto));
obj.startPubdate = "";
obj.endPubdate = "";
this.jskBidNewsDto = obj;
},
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;
});
}
},
changepunishDate() {
if (this.punishDate) {
this.punishDateValue = "自定义";
var obj = JSON.parse(JSON.stringify(this.jskBidNewsDto));
obj.startPubdate = this.punishDate[0];
obj.endPubdate = this.punishDate[1];
this.jskBidNewsDto = obj;
}
},
//开标截止日期
punishDatehandleCommand1(command) {
var obj = JSON.parse(JSON.stringify(this.jskBidNewsDto));
if (command && command != "自定义") {
this.bidOpeningDeadlineValue = command;
this.$refs.bidOpeningDeadlineShowPopper.hide();
const datetime = new Date();
var startTime, endTime, Year, Month, Day;
Year = datetime.getFullYear();
Month = datetime.getMonth() + 1;
Day = datetime.getDate();
switch (command) {
case "近一天":
startTime = Year + "-" + Month + "-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "近三天":
var newTime = datetime.getTime() - 3 * 24 * 60 * 60 * 1000;
startTime =
new Date(newTime).getFullYear() +
"-" +
(new Date(newTime).getMonth() + 1) +
"-" +
new Date(newTime).getDate();
endTime = Year + "-" + Month + "-" + Day;
break;
case "近五天":
var newTime = datetime.getTime() - 5 * 24 * 60 * 60 * 1000;
startTime =
new Date(newTime).getFullYear() +
"-" +
(new Date(newTime).getMonth() + 1) +
"-" +
new Date(newTime).getDate();
endTime = Year + "-" + Month + "-" + Day;
break;
case "近七天":
var newTime = datetime.getTime() - 7 * 24 * 60 * 60 * 1000;
startTime =
new Date(newTime).getFullYear() +
"-" +
(new Date(newTime).getMonth() + 1) +
"-" +
new Date(newTime).getDate();
endTime = Year + "-" + Month + "-" + Day;
break;
case "近十天":
var newTime = datetime.getTime() - 10 * 24 * 60 * 60 * 1000;
startTime =
new Date(newTime).getFullYear() +
"-" +
(new Date(newTime).getMonth() + 1) +
"-" +
new Date(newTime).getDate();
endTime = Year + "-" + Month + "-" + Day;
break;
case "近半月":
var newTime = datetime.getTime() - 15 * 24 * 60 * 60 * 1000;
startTime =
new Date(newTime).getFullYear() +
"-" +
(new Date(newTime).getMonth() + 1) +
"-" +
new Date(newTime).getDate();
endTime = Year + "-" + Month + "-" + Day;
break;
case "近一月":
if (Month > 1) {
startTime = Year + "-" + (Month - 1) + "-" + Day;
} else {
startTime = Year - 1 + "-" + (12 + Month - 1) + "-" + Day;
}
endTime = Year + "-" + Month + "-" + Day;
break;
case "近三月":
if (Month > 3) {
startTime = Year + "-" + (Month - 3) + "-" + Day;
} else {
startTime = Year - 1 + "-" + (12 + Month - 3) + "-" + Day;
}
endTime = Year + "-" + Month + "-" + Day;
break;
case "近半年":
if (Month > 6) {
startTime = Year + "-" + (Month - 6) + "-" + Day;
} else {
startTime = Year - 1 + "-" + (12 + Month - 6) + "-" + Day;
}
endTime = Year + "-" + Month + "-" + Day;
break;
case "近1年":
startTime = Year - 1 + "-" + Month + "-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "近3年":
startTime = Year - 3 + "-" + Month + "-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "自定义":
if (!this.bidOpeningDeadline) {
this.bidOpeningDeadlineValue = "";
}
break;
}
if(startTime){
var start=startTime.split('-');
startTime=start.map((item)=>{
if(item.length==1){
return '0'+item
}else{
return item
}
})
startTime=startTime.join('-')
}
if(endTime){
var end=endTime.split('-');
endTime=end.map((item)=>{
if(item.length==1){
return '0'+item
}else{
return item
}
})
endTime=endTime.join('-')
}
obj.startEndTimeDate = startTime;
obj.endEndTimeDate = endTime;
} else if (command == "自定义") {
this.$refs.datePicker1.pickerVisible = true;
} else {
this.$refs.bidOpeningDeadlineShowPopper.hide();
this.bidOpeningDeadlineValue = "";
this.bidOpeningDeadline = "";
obj.startEndTimeDate = "";
obj.endEndTimeDate = "";
}
this.jskBidNewsDto = obj;
},
clearContractSignTime1() {
this.bidOpeningDeadline = "";
this.bidOpeningDeadlineValue = "";
var obj = JSON.parse(JSON.stringify(this.jskBidNewsDto));
obj.startEndTimeDate = "";
obj.endEndTimeDate = "";
this.jskBidNewsDto = obj;
},
hidePoper1() {
if (this.$refs.datePicker1) {
this.$refs.datePicker1.pickerVisible = false;
}
},
mouseenter1() {
this.bidOpeningDeadlineShowPopper = true;
if(this.bidOpeningDeadlineValue=='自定义'){
this.$nextTick(() => {
this.$refs.datePicker1.pickerVisible = true;
});
}
},
changepunishDate1() {
if (this.bidOpeningDeadline) {
this.bidOpeningDeadlineValue = "自定义";
var obj = JSON.parse(JSON.stringify(this.jskBidNewsDto));
obj.startEndTimeDate = this.bidOpeningDeadline[0];
obj.endEndTimeDate = this.bidOpeningDeadline[1];
this.jskBidNewsDto = obj;
}
},
selectedHeightfn() {
if (this.selectedHeight == 64) {
this.selectedHeight = 'auto'
} else {
this.selectedHeight = 64;
}
},
selectedHeightfns() {
this.selectedHeights = this.selectedHeights ? false : true
},
handleCurrentChange(e){
this.page = e;
this.jump1();
this.bxproggSearch(e, this.limit);
},
handleSizeChange(e){
this.limit = e;
this.jump1();
this.bxproggSearch(this.page, e);
},
jump1() {
// 用 class="d_jump" 添加锚点
var jump = document.querySelector('.el-table__body-wrapper')
let total = jump.offsetTop - 98
let distance = jump.scrollTop
// 平滑滚动,时长500ms,每10ms一跳,共50跳
let step = total / 50
if (total > distance) {
smoothDown()
} else {
let newTotal = distance - total
step = newTotal / 50
smoothUp()
}
function smoothDown() {
if (distance < total) {
distance += step
jump.scrollTop = distance
// jump.scrollTop = distance
setTimeout(smoothDown, 10)
} else {
jump.scrollTop = total
// jump.scrollTop = total
}
}
function smoothUp() {
if (distance > total) {
distance -= step
jump.scrollTop = distance
// document.documentElement.scrollTop = distance
setTimeout(smoothUp, 10)
} else {
jump.scrollTop = total
// document.documentElement.scrollTop = total
}
}
},
reloadPage() {
this.pageFlag = false;
this.$nextTick(() => {
this.pageFlag = true;
});
},
lowerRateClick() {
this.bxproggSearch();
},
bxproggSearch(page, limit,exportFlag){
// return false;
if (!page) {
this.page = 1;
}
if (!limit) {
this.limit = 20;
}
if (!page && !limit) {
this.reloadPage();
}
var data = JSON.parse(JSON.stringify(this.jskBidNewsDto));
if(this.projectTerritoryId.length >0){
for (var i=0;i<this.projectTerritoryId.length;i++){
if(this.projectTerritoryId[i].regionLevel == 2){
data.city.push(this.projectTerritoryId[i].id)
}
if(this.projectTerritoryId[i].regionLevel == 3){
data.county.push(this.projectTerritoryId[i].id)
}
}
}
data.province = '';
if(data.county.length > 0){
data.city = '';
}else{
data.city = data.city.join(",");
}
data.county = data.county.join(",");
if (!data.city && !data.county){
if(this.provinceStatus != null) {
data.province = this.bxproProvince[this.provinceStatus].id;
}
}
data.projectType = data.projectType.join(",");
data.projectPurposes = data.projectPurposes.join(",");
data.bidAssessmentWay = data.bidAssessmentWay.join(",");
data.projectEnsureAmountPayType = data.projectEnsureAmountPayType.join(",");
data.projectLevel = data.projectLevel.join(",");
// data.hasFile = this.checked ? 'yes' : 'false';
if(this.checkList.length > 0){
for(var i in this.checkList){
data[this.checkList[i]] = 1
}
}
let params = {
page: {
page: this.page,
limit: this.limit,
field: this.field,
order: this.desc,
},
jskBidNewsDto: data,
};
params.keyword = this.keyword;
params.keywordNot = this.keywordNot;
this.currentPage = params.page.page;
NProgress.start();
this.$axios.post(TENDER_PRO_URL.jskBidPro, params, {
headers: {
"Content-Type": "application/json",
},
})
.then((res) => {
NProgress.done();
if (res.data.code == 200) {
this.tableData = res.data.data.list;
this.total = res.data.data.total;
}
});
},
reset1(){
Object.assign(this.$data, this.$options.data.call(this)); //重置data
// this.clickProvince(0,1);
this.bxproggSearch();
},
changeDown(isHeight){
if(isHeight){
this.isHeight = false
this.maxHeight = 'auto'
}else{
this.isHeight = true
this.maxHeight = '42px'
}
},
provinceChange(e){
let obj=''
obj= this.province.find(function(i){
return i.id ===e
});
this.provinceName=obj.regionName;
//招中标文件按省份下载
this.$axios.post(IndexURL.allDownload, {provinceId:this.provinceValue}, {
headers: {
"Content-Type": "application/json",
},
}).then((res) => {
if (res.data.code == 200) {
this.allDownloadList = res.data.data;
}
});
},
//登录弹窗隐藏
cancelLogin(val) {
this.loginData.loginShow = false;
},
exportData(row,name) {
let params={
fromUrl:document.referrer,
visitUrl:window.location.href,
event:'下载',
content:this.provinceName+'-'+name+'招中标数据',
platform:'jsk'
}
this.$behaviorRecord(this,params)
if (row) {
if (row && row.indexOf('http://') > -1) {
row = row.replace('http://', 'https://')
}
window.open(row, '_blank')
}
},
}
}
</script>
<style lang="scss" scoped>
.content{
padding: 0px 16px;
border-radius: 4px 4px 4px 4px;
background: #FFFFFF;
.content_item{
padding-top: 12px;
display: flex;
align-items: center;
.label{
width: 84px;
font-size: 14px;
font-weight: 400;
color: rgba(35,35,35,0.8);
}
.content_right{
.bxpro_region{
width: 1220px;
border: 1px solid #EFEFEF;
.bxpro_province{
height: 32px;
line-height: 32px;
background: #F8F8F8;
color: #666666;
//padding: 0 28px;
span{
display: inline-block;
width: 96px;
text-align: center;
cursor:pointer;
}
.bxpro_province_selected{
color:#333333;
background: #FFFFFF;
}
}
.bxpro_city{
padding: 16px 16px 0;
.bxpro_city_fex{
display: inline-flex;
.bxpro_city_fex_nr{
width: 1138px;
overflow: hidden;
}
.bxpro_city_fex_click{
cursor:pointer;
color: #0081ff;
}
}
span{
display: inline-block;
margin:0 16px 16px 0;
color: #333333;
padding: 5px 12px;
background: #F6F7FC;
border-radius: 2px 2px 2px 2px;
line-height: 16px;
cursor:pointer;
position: relative;
}
img{
display: none;
position: absolute;
bottom: 0;
right: 0;
}
.color_text{
background: #EAF4FF;
color: #0081FF;
img{
display:block;
}
}
}
}
.ename_input{
width: 640px;
margin-right: 20px;
}
.land_ipt_470 {
width: 640px;
}
.land_content_wrap-flex{
display: flex;
line-height: 34px;
margin-right: 33px;
}
.land_content_wrap-flex:last-child{
margin-right: 0;
}
.land_content_wrap_label{
font-size: 14px;
font-weight: 400;
color: rgba(35,35,35,0.8);
margin-right:8px;
}
.other_ipt {
width: 104px;
height: 34px;
::v-deep .el-input__inner {
width: 104px;
padding: 0 8px;
}
}
.other_ipt1 {
width: 153px;
position:relative;
top:2px;
::v-deep .el-input-group__append {
span{
color: #333333;
}
width: 49px;
padding: 0 8px;
}
}
.other_label_span{
margin:0 8px;
font-size: 14px;
font-weight: 400;
color: #232323;
}
}
.content_right1{
display: flex;
}
.item_ckquery_list {
display: flex;
}
.item_ckquery_list .el-input__icon {
position: relative;
top: 1px;
}
.ckquery_list_right {
width: 640px;
}
.register_count_ipt{
margin-left: 0px;
}
.register_count_ipt .el-input__inner{
width: 174px;
}
::v-deep .el-input-group__prepend{
padding: 0 8px;
}
.content-projecttype{
display: flex;
align-items: center;
justify-content: center;
.projecttype{
font-weight: 400;
color: #232323;
padding: 1px 5px;
margin-right: 4px;
cursor: pointer;
border-radius: 3px 3px 3px 3px;
font-size: 14px;
}
.projecttype:first-child{
padding-left: 0px;
}
.projecttype:hover{
background: #F3F4F5;
padding: 1px 5px;
}
.activetype{
background: #F3F4F5;
padding: 1px 5px !important;
}
}
}
.content_item_padding0{
padding: 0;
}
}
.bottomlist{
width: 100%;
background-color: #FFFFFF;
border-radius: 4px 4px 4px 4px;
.bottomlist-title{
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 12px;
padding: 16px ;
border-bottom: 1px solid #EFEFEF;
.title-right{
display: flex;
align-items: center;
p:first-child{
font-size: 12px;
font-weight: 400;
color: #3D3D3D;
margin-right: 10px;
}
p:last-child{
display: flex;
align-items: center;
font-size: 14px;
font-weight: 400;
color: rgba(35,35,35,0.8);
}
img{
width: 18px;
height: 18px;
}
}
}
.bottomlist-content{
padding-bottom: 0px;
}
.bottomlist-list{
padding: 16px;
font-size: 14px;
border-bottom: 1px solid #EFEFEF;
padding-bottom: 14px;
.list-titel{
font-size: 16px;
font-weight: 700;
color: #3D3D3D;
line-height: 19px;
.list-titel-a{
text-decoration: none;
color:#3D3D3D;
}
a:hover, a:visited, a:link, a:active{
color:#3D3D3D;
}
}
.content-label{
margin-top: 7px;
.list-label{
background: #F3F3FF;
color: #8491E8;
border-radius: 1px 1px 1px 1px;
padding: 3px 7px;
font-size: 12px;
}
}
.list-content{
margin-top: 3px;
display: flex;
justify-content: start;
align-items: center;
.list-content-text{
margin-top: 7px;
display: flex;
justify-content: start;
align-items: center;
margin-right: 27px;
font-size: 14px;
span:first-child{
font-weight: 400;
color: rgba(35,35,35,0.4);
line-height: 15px
}
span:last-child{
font-weight: 400;
color: rgba(35,35,35,0.8);
line-height: 15px
}
.blue{
color: #0081FF !important;
cursor: pointer;
}
}
}
.list-addree{
width: auto;
background: #F3F4F5;
display: inline-flex;
margin-top: 7px;
.list-content-text{
margin-top: 0px;
span{
line-height: 30px!important;
}
}
img{
width: 14px;
margin: 0 8px;
}
}
}
.bottomlist-list:hover{
background: #F6F9FC;
cursor: pointer;
}
.pagination{
padding: 14px ;
.el-pagination{
float: right;
}
}
}
</style>
<style lang="scss" scoped>
.report_wrap{
position: fixed;
bottom: 56px;
left: 24px;
.report_img{
width: 183px;
height: 249px;
}
.to_library{
width: 104px;
height: 32px;
display: block;
line-height: 32px;
text-align: center;
font-size: 14px;
margin: 16px auto;
color: #FFFFFF;
background: #0081FF;
border-radius: 5px 5px 5px 5px;
cursor: pointer;
&:hover{
background: #185ECA;
}
}
.close_img{
position: absolute;
right: -26px;
top: -12px;
width: 21px;
height: 20px;
cursor: pointer;
}
}
#tender_wrap {
//padding: 0 16px;
font-size: 14px;
.data_list_btn {
margin: 9px 16px 0 0;
height: 32px;
line-height: 32px;
border-radius: 2px 2px 2px 2px;
opacity: 1;
color: #333333;
box-sizing: border-box;
position: relative;
div {
text-align: center;
display: inline-block;
cursor: pointer;
//padding: 0 6px;
box-sizing: border-box;
}
::v-deep .el-checkbox__label{
padding-left:4px;
}
.data_list_btn_active {
height: 32px;
line-height: 32px;
}
}
.land_content_wrap{
margin-bottom: 16px;
}
.tender_content_wrap{
margin-top: 16px;
}
.content_li {
padding: 16px 0;
display: flex;
align-items: center;
position: relative;
.content_item {
.include-keywords {
display: flex;
align-items: center;
position: relative;
.lefttltel {
display: inline-block;
background: #f5f5f5;
color: #333;
border: 1px solid #efefef;
border-right: none;
opacity: 1;
width: 44px;
height: 40px;
text-align: center;
line-height: 40px;
}
.el-input {
line-height: 40px;
border-radius: 0;
::v-deep .el-input__inner {
width: 100%;
height: 40px;
line-height: 40px;
border-radius: 0;
}
}
.commonly-input {
::v-deep .el-input__inner {
padding-right: 100px;
}
}
.commonly {
position: absolute;
top: 10px;
right: 16px;
font-size: 14px;
font-weight: 400;
color: #0081ff;
cursor: pointer;
}
}
}
}
.data_list_head {
height: 50px;
line-height: 50px;
color: #666666;
.data_list_count {
color: #ff2a00;
font-weight: bold;
}
}
}
.dropdown_item:hover{
background-color: #F4F6F9;
color: #0081FF;
}
#search-bxprozbgg {
.businessOpportunities_box{
position: relative;
.businessOpportunities_dow{
position: absolute;
top: 12px;
right: 15px;
.dow-dropdown-link{
display: block;
width: 138px;
height: 32px;
line-height: 32px;
background: #FFFFFF;
border-radius: 2px 2px 2px 2px;
border: 1px solid #0081FF;
text-align: center;
font-size: 14px;
color: #0081FF;
}
::v-deep .el-select{
width: 90px;
height: 32px;
line-height: 32px;
background: #FFFFFF;
border-radius: 2px 2px 2px 2px;
text-align: center;
margin: 0;
font-size: 14px;
color: #0081FF;
position: absolute;
left: -96px;
top: -1px;
.el-input{
width: 100%;
height: 32px;
line-height: 32px;
}
.el-input__inner{
width: 100%;
height: 32px;
line-height: 32px;
border: 1px solid #0081FF;
color: #0081FF;
}
.el-input__inner::-webkit-input-placeholder {
color: #0081FF !important;
}
.el-input__inner::-moz-placeholder {
color: #0081FF !important;
}
.el-select__caret{
color: #0081FF;
}
}
}
}
.land_content_wrap_label_tipspan{
display: inline-block;
line-height: 34px;
position: relative;
.tip_svg{
width: 16px;
height: 16px;
margin-left: 4px;
}
}
}
.tip_svg-popper-img{
position: absolute;
top: -7px;
right: 4px;
}
.activeTab {
font-weight: bold;
color: #333333;
border-bottom: 2px solid #0081FF;
}
.lowerRate_img{
position: absolute;
top: 7px;
right: -30px;
width: 36px;
height: 14px;
}
.bxpro_list{
::v-deep .el-table{
th{
line-height: 23px;
color: #999;
background: #f2f9fc;
.cell{
overflow: unset;
color: #999999;
font-weight: 400;
}
}
.cell{
font-size: 14px;
color: #333333;
}
}
.bxpro_list_title{
font-weight: 400;
color: #0081FF;
line-height: 18px;
//margin-bottom: 10px;
}
.bxpro_list_titles{
display: block;
max-height: 55px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3;
line-clamp: 3;
-webkit-box-orient: vertical;
}
.bxpro_list_fl{
overflow: hidden;
span{
float: left;
padding: 4px 8px;
font-size: 12px;
line-height: 12px;
color: #41A1FD;
background: #E4F3FD;
margin-right: 12px;
margin-top: 4px;
&:last-child{
margin-right: 0;
}
}
}
.bxpro_list_money{
li{
margin-bottom: 8px;
line-height: 18px;
display: flex;
&:last-child{
margin-bottom: 0;
}
}
}
.bxpro_list_yjhq{
display: block;
text-align: center;
width: 100%;
//height: 28px;
//line-height: 28px;
//border-radius: 2px 2px 2px 2px;
font-size: 14px;
margin: 0 auto;
cursor:pointer;
}
.bxpro_list_yjhq1{
&:hover{
color: #0081FF;
}
}
.bxpro_list_yjhq_ns{
color: #333333;
//border: 1px solid #0081FF;
}
.bxpro_list_yjhq_hs{
color: #999999;
//background: #C8C8C8;
}
.tip_svg{
margin-right: 6px;
position: relative;
top: -1px;
}
}
.bxprozbgg_yjlq{
.bxprozbgg_yjlq_h1{
font-weight: 400;
color: #3D3D3D;
line-height: 22px;
font-size:16px;
}
.bxprozbgg_yjlq_p{
p{
font-weight: 400;
color: #666666;
line-height: 22px;
}
}
}
.bxpro_list_ellipsis{
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2;
line-clamp: 2;
-webkit-box-orient: vertical;
}
.pup_list .pup_list_svip_img {
position: absolute;
top: 0;
right: -10px;
width: 24px;
}
.el-popover .pup_list li div{
display: inline-block;
}
.content .content_wrap .content_item{
padding: 0 !important;
}
.bxprozbsh{
max-height: 70px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 3; // 控制多行的行数
-webkit-box-orient: vertical;
}
::v-deep .el-table__fixed-right{
height: 100% !important;
}
::v-deep .el-table__fixed{
height: 100% !important;
}
::v-deep .el-table__body-wrapper::-webkit-scrollbar{
height:10px;
width: 10px;
}
::v-deep .el-table__body-wrapper::-webkit-scrollbar-track{
background-color:#FFFFFF;
}
::v-deep .el-table__body-wrapper::-webkit-scrollbar-thumb{
background-color:#E1E1E1;
}
</style>
...@@ -13,8 +13,14 @@ ...@@ -13,8 +13,14 @@
</div> </div>
</div> </div>
</div> </div>
<!-- 企业专项债 -->
<debtProject v-if="personnelHerf=='debtProject'" /> <debtProject v-if="personnelHerf=='debtProject'" />
<!-- 土地交易 -->
<Land v-if="personnelHerf=='Land'" /> <Land v-if="personnelHerf=='Land'" />
<!-- 拟建项目 -->
<Establishment v-if="personnelHerf=='Establishment'" />
<!-- 标讯pro -->
<bxprozbgg v-if="personnelHerf=='bxprozbgg'" />
</div> </div>
...@@ -22,10 +28,12 @@ ...@@ -22,10 +28,12 @@
<script> <script>
import debtProject from "./components/debtProject/index.vue"; import debtProject from "./components/debtProject/index.vue";
import Land from "./components/Land/index.vue"; import Land from "./components/Land/index.vue";
import Establishment from "./components/Establishment/index.vue";
import bxprozbgg from "./components/bxprozbgg/index.vue";
import "@/assets/styles/public.css"; import "@/assets/styles/public.css";
export default { export default {
name: 'radar', name: 'radar',
components: { debtProject,Land }, components: { debtProject,Land,Establishment,bxprozbgg },
data() { data() {
return { return {
// tablist // tablist
...@@ -42,7 +50,7 @@ ...@@ -42,7 +50,7 @@
}, },
{ {
key: 'KeyPersonnel', key: 'Establishment',
status: false, status: false,
value: '拟建项目', value: '拟建项目',
...@@ -54,7 +62,7 @@ ...@@ -54,7 +62,7 @@
}, },
{ {
key: 'KeyPersonnel', key: 'bxprozbgg',
status: false, status: false,
value: '标讯pro', value: '标讯pro',
......
package com.dsk.system.domain; package com.dsk.system.domain;
import com.dsk.common.utils.StringUtils;
import lombok.Data; import lombok.Data;
/** /**
...@@ -60,6 +61,6 @@ public class BusinessAddDto { ...@@ -60,6 +61,6 @@ public class BusinessAddDto {
private String customerId; private String customerId;
public Double getInvestmentAmount() { public Double getInvestmentAmount() {
return Double.parseDouble(investmentAmount); return StringUtils.isEmpty(investmentAmount) ? 0 :Double.parseDouble(investmentAmount);
} }
} }
package com.dsk.system.domain;
import com.dsk.common.utils.StringUtils;
import lombok.Data;
/**
* @author lxl
* @Description:
* @Date 2023/6/1 下午 6:41
**/
@Data
public class BusinessExcelDto {
/**
* 项目名称
*/
private String projectName;
/**
* 投资估算(万元)
*/
private String investmentAmount;
/**
* 业主单位
*/
private String ownerCompany;
}
...@@ -2,6 +2,8 @@ package com.dsk.system.domain; ...@@ -2,6 +2,8 @@ package com.dsk.system.domain;
import lombok.Data; import lombok.Data;
import java.util.List;
/** /**
* @author lxl * @author lxl
* @Description: * @Description:
...@@ -28,17 +30,17 @@ public class BusinessListDto { ...@@ -28,17 +30,17 @@ public class BusinessListDto {
/** /**
* 省id * 省id
*/ */
private Integer provinceId; private List<Integer> provinceId;
/** /**
* 市id * 市id
*/ */
private Integer cityId; private List<Integer> cityId;
/** /**
* 区id * 区id
*/ */
private Integer districtId; private List<Integer> districtId;
/** /**
* 项目类型 * 项目类型
......
...@@ -29,6 +29,10 @@ public class Customer implements Serializable { ...@@ -29,6 +29,10 @@ public class Customer implements Serializable {
* jsk企业id * jsk企业id
*/ */
private Integer companyId; private Integer companyId;
/**
* 城投企业id
*/
private String uipId;
/** /**
* 客户名称(企业名称) * 客户名称(企业名称)
*/ */
......
...@@ -14,6 +14,10 @@ public class CustomerListVo { ...@@ -14,6 +14,10 @@ public class CustomerListVo {
* jsk企业id * jsk企业id
*/ */
private Integer companyId; private Integer companyId;
/**
* 城投企业id
*/
private String uipId;
/** /**
* 客户名称(企业名称) * 客户名称(企业名称)
*/ */
......
package com.dsk.system.domain.customer.vo;
import lombok.Data;
import java.io.Serializable;
/**
* 客户状态列表
*
* @author lcl
* @create 2023/5/22
*/
@Data
public class CustomerStatusListVo implements Serializable {
/**
* 客户id
*/
private String customerId;
/**
* 城投id
*/
private String uipId;
}
...@@ -26,17 +26,17 @@ public class BusinessListVo { ...@@ -26,17 +26,17 @@ public class BusinessListVo {
/** /**
* 省 * 省
*/ */
private Integer provinceName; private String provinceName;
/** /**
* 市 * 市
*/ */
private Integer cityName; private String cityName;
/** /**
* 区 * 区
*/ */
private Integer districtName; private String districtName;
/** /**
* 投资估算 * 投资估算
......
package com.dsk.system.dskService; package com.dsk.system.dskService;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapUtil;
import com.dsk.common.core.domain.R; import com.dsk.common.core.domain.R;
import com.dsk.common.core.domain.model.*; import com.dsk.common.core.domain.model.*;
import com.dsk.common.core.page.TableDataInfo; import com.dsk.common.core.page.TableDataInfo;
...@@ -123,4 +124,16 @@ public class EnterpriseService { ...@@ -123,4 +124,16 @@ public class EnterpriseService {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterprise/bestStockPage", BeanUtil.beanToMap(body, false, false)); Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterprise/bestStockPage", BeanUtil.beanToMap(body, false, false));
return dskOpenApiUtil.responsePage(map); return dskOpenApiUtil.responsePage(map);
} }
public R financial(EnterpriseFinancialBody body) throws Exception {
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterprise/financial", BeanUtil.beanToMap(body, false, false));
return BeanUtil.toBean(map, R.class);
}
public R getUipId(String companyName) throws Exception {
Map<String, Object> params = new HashMap<>();
params.put("companyName",companyName);
Map<String, Object> map = dskOpenApiUtil.requestBody("/operate/enterprise/getUipId", params);
return BeanUtil.toBean(map, R.class);
}
} }
...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsk.system.domain.customer.Customer; import com.dsk.system.domain.customer.Customer;
import com.dsk.system.domain.customer.dto.CustomerSearchDto; import com.dsk.system.domain.customer.dto.CustomerSearchDto;
import com.dsk.system.domain.customer.vo.CustomerListVo; import com.dsk.system.domain.customer.vo.CustomerListVo;
import com.dsk.system.domain.customer.vo.CustomerStatusListVo;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
...@@ -23,7 +24,9 @@ public interface CustomerMapper extends BaseMapper<Customer> { ...@@ -23,7 +24,9 @@ public interface CustomerMapper extends BaseMapper<Customer> {
List<Customer> selectUserList(Long userId); List<Customer> selectUserList(Long userId);
Customer selectByCompanyIdAndUserId(@Param("companyId")Integer companyId,@Param("userId")Long userId); Customer selectByCompanyNameAndUserId(@Param("companyName") String companyName, @Param("userId") Long userId);
List<CustomerStatusListVo> selectStatusList(@Param("uipIds") List<String> uipIds, @Param("userId") Long userId);
} }
...@@ -8,7 +8,9 @@ import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto; ...@@ -8,7 +8,9 @@ import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto;
import com.dsk.system.domain.customer.vo.CustomerBusinessListVo; import com.dsk.system.domain.customer.vo.CustomerBusinessListVo;
import com.dsk.system.domain.vo.BusinessBrowseVo; import com.dsk.system.domain.vo.BusinessBrowseVo;
import com.dsk.system.domain.vo.BusinessListVo; import com.dsk.system.domain.vo.BusinessListVo;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
/** /**
...@@ -56,6 +58,11 @@ public interface IBusinessInfoService ...@@ -56,6 +58,11 @@ public interface IBusinessInfoService
*/ */
List<String> selectProjectName(BusinessListDto dto); List<String> selectProjectName(BusinessListDto dto);
/**
* 项目批量导入
*/
AjaxResult batchUpload(MultipartFile file, HttpServletResponse response);
/** /**
* 新增项目详情 * 新增项目详情
* *
......
...@@ -5,6 +5,7 @@ import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto; ...@@ -5,6 +5,7 @@ import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto;
import com.dsk.system.domain.customer.dto.CustomerSearchDto; import com.dsk.system.domain.customer.dto.CustomerSearchDto;
import com.dsk.system.domain.customer.vo.CustomerBusinessListVo; import com.dsk.system.domain.customer.vo.CustomerBusinessListVo;
import com.dsk.system.domain.customer.vo.CustomerListVo; import com.dsk.system.domain.customer.vo.CustomerListVo;
import com.dsk.system.domain.customer.vo.CustomerStatusListVo;
import com.dsk.system.domain.customer.vo.CustomerVo; import com.dsk.system.domain.customer.vo.CustomerVo;
import java.util.List; import java.util.List;
...@@ -29,4 +30,6 @@ public interface ICustomerService { ...@@ -29,4 +30,6 @@ public interface ICustomerService {
List<CustomerBusinessListVo> selectBusinessList(CustomerBusinessSearchDto dto); List<CustomerBusinessListVo> selectBusinessList(CustomerBusinessSearchDto dto);
List<CustomerStatusListVo> selectStatusList(List<String> uipIds);
} }
package com.dsk.system.service.impl; package com.dsk.system.service.impl;
import java.util.Arrays; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsk.common.constant.HttpStatus;
import com.dsk.common.core.domain.AjaxResult; import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessInfo; import com.dsk.common.core.domain.entity.BusinessInfo;
import com.dsk.common.core.domain.entity.BusinessLabel; import com.dsk.common.core.domain.entity.BusinessLabel;
import com.dsk.common.core.domain.entity.BusinessRelateCompany; import com.dsk.common.core.domain.entity.BusinessRelateCompany;
import com.dsk.common.core.domain.entity.BusinessUser; import com.dsk.common.core.domain.entity.BusinessUser;
import com.dsk.common.dtos.BusinessInfoDto;
import com.dsk.common.utils.DateUtils; import com.dsk.common.utils.DateUtils;
import com.dsk.common.utils.SecurityUtils; import com.dsk.common.utils.SecurityUtils;
import com.dsk.system.domain.BusinessExcelDto;
import com.dsk.system.domain.BusinessAddDto; import com.dsk.system.domain.BusinessAddDto;
import com.dsk.system.domain.BusinessListDto; import com.dsk.system.domain.BusinessListDto;
import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto; import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto;
...@@ -24,11 +27,13 @@ import com.dsk.system.mapper.BusinessLabelMapper; ...@@ -24,11 +27,13 @@ import com.dsk.system.mapper.BusinessLabelMapper;
import com.dsk.system.mapper.BusinessRelateCompanyMapper; import com.dsk.system.mapper.BusinessRelateCompanyMapper;
import com.dsk.system.mapper.BusinessUserMapper; import com.dsk.system.mapper.BusinessUserMapper;
import com.dsk.system.service.IBusinessInfoService; import com.dsk.system.service.IBusinessInfoService;
import org.springframework.beans.factory.annotation.Autowired; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
/** /**
* 项目详情Service业务层处理 * 项目详情Service业务层处理
...@@ -37,6 +42,7 @@ import javax.annotation.Resource; ...@@ -37,6 +42,7 @@ import javax.annotation.Resource;
* @date 2023-05-17 * @date 2023-05-17
*/ */
@Service @Service
@Slf4j
public class BusinessInfoServiceImpl implements IBusinessInfoService { public class BusinessInfoServiceImpl implements IBusinessInfoService {
@Resource @Resource
private BusinessInfoMapper businessInfoMapper; private BusinessInfoMapper businessInfoMapper;
...@@ -46,6 +52,8 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService { ...@@ -46,6 +52,8 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
private BusinessRelateCompanyMapper businessRelateCompanyMapper; private BusinessRelateCompanyMapper businessRelateCompanyMapper;
@Resource @Resource
private BusinessLabelMapper businessLabelMapper; private BusinessLabelMapper businessLabelMapper;
@Resource
private ReadBusinessInfoExcel readBusinessInfoExcel;
/** /**
* 查询项目详情 * 查询项目详情
...@@ -97,6 +105,37 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService { ...@@ -97,6 +105,37 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
return businessInfoMapper.selectProjectName(dto); return businessInfoMapper.selectProjectName(dto);
} }
@Override
public AjaxResult batchUpload(MultipartFile file, HttpServletResponse response) {
int row=3;//起始行数
int rowSuccess=0;//成功条数
Integer errorCount=0;//失败条数
List<String> result = new LinkedList();//导入结果汇总
List<BusinessExcelDto> businessInfoList = readBusinessInfoExcel.getExcelInfo(file);
for (BusinessExcelDto businessInfo : businessInfoList) {
//查询已有的项目名称
Integer count = businessInfoMapper.selectCount(Wrappers.<BusinessInfo>lambdaQuery().eq(BusinessInfo::getProjectName, businessInfo.getProjectName()));
row++;
if(count > 0){
//如果存在,跳过该项目,不保存
result.add("第"+row+"行的"+businessInfo.getProjectName()+"的项目已存在,跳过该项目,保存下一条");
errorCount++;
}else {
//保存到数据库
BusinessAddDto businessAddDto = new BusinessAddDto();
BeanUtil.copyProperties(businessInfo,businessAddDto);
//获取当前登录用户id
businessAddDto.setUserId(SecurityUtils.getLoginUser().getUserId().intValue());
businessAddDto.setCompanyId(0);
AjaxResult add = insertBusinessInfo(businessAddDto);
if(add.get("code").equals(HttpStatus.SUCCESS))rowSuccess++;
}
}
result.add("导入项目成功条数"+rowSuccess);
result.add("导入项目失败条件"+errorCount);
return errorCount == businessInfoList.size() ? AjaxResult.error(String.join("\n",result),response) : AjaxResult.success(String.join("\n",result),response);
}
/** /**
* 新增项目详情 * 新增项目详情
* *
...@@ -106,14 +145,17 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService { ...@@ -106,14 +145,17 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
@Override @Override
@Transactional @Transactional
public AjaxResult insertBusinessInfo(BusinessAddDto dto) { public AjaxResult insertBusinessInfo(BusinessAddDto dto) {
//新增前查询是否已存在
BusinessInfo selectOne = businessInfoMapper.selectOne(Wrappers.<BusinessInfo>lambdaQuery().eq(BusinessInfo::getProjectName, dto.getProjectName()));
if(ObjectUtil.isNotEmpty(selectOne)) return AjaxResult.error("项目名称已存在");
//新增项目主信息 //新增项目主信息
BusinessInfo businessInfo = new BusinessInfo(); BusinessInfo businessInfo = new BusinessInfo();
BeanUtil.copyProperties(dto, businessInfo); BeanUtil.copyProperties(dto, businessInfo);
int addBusiness = businessInfoMapper.insertBusinessInfo(businessInfo); int addBusiness = businessInfoMapper.insertBusinessInfo(businessInfo);
if (addBusiness > 0) { if (addBusiness > 0) {
//获取登陆用户的部门id //获取登陆用户的部门id
// Long deptId = SecurityUtils.getLoginUser().getDeptId(); Long deptId = SecurityUtils.getLoginUser().getDeptId();
Long deptId = 100l; // Long deptId = 100l;
//新增用户-项目关系信息 //新增用户-项目关系信息
int addbusinessUser = businessUserMapper.insertBusinessUser(new BusinessUser(businessInfo.getId(), deptId.intValue(), dto.getUserId(), 1)); int addbusinessUser = businessUserMapper.insertBusinessUser(new BusinessUser(businessInfo.getId(), deptId.intValue(), dto.getUserId(), 1));
//新增项目-关联企业信息 //新增项目-关联企业信息
......
...@@ -2,7 +2,9 @@ package com.dsk.system.service.impl; ...@@ -2,7 +2,9 @@ package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanException; import cn.hutool.core.bean.BeanException;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsk.common.core.domain.R;
import com.dsk.common.exception.ServiceException; import com.dsk.common.exception.ServiceException;
import com.dsk.common.utils.SecurityUtils; import com.dsk.common.utils.SecurityUtils;
import com.dsk.system.domain.customer.Customer; import com.dsk.system.domain.customer.Customer;
...@@ -11,7 +13,9 @@ import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto; ...@@ -11,7 +13,9 @@ import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto;
import com.dsk.system.domain.customer.dto.CustomerSearchDto; import com.dsk.system.domain.customer.dto.CustomerSearchDto;
import com.dsk.system.domain.customer.vo.CustomerBusinessListVo; import com.dsk.system.domain.customer.vo.CustomerBusinessListVo;
import com.dsk.system.domain.customer.vo.CustomerListVo; import com.dsk.system.domain.customer.vo.CustomerListVo;
import com.dsk.system.domain.customer.vo.CustomerStatusListVo;
import com.dsk.system.domain.customer.vo.CustomerVo; import com.dsk.system.domain.customer.vo.CustomerVo;
import com.dsk.system.dskService.EnterpriseService;
import com.dsk.system.mapper.CustomerMapper; import com.dsk.system.mapper.CustomerMapper;
import com.dsk.system.mapper.CustomerUserMapper; import com.dsk.system.mapper.CustomerUserMapper;
import com.dsk.system.service.IBusinessInfoService; import com.dsk.system.service.IBusinessInfoService;
...@@ -41,6 +45,8 @@ public class CustomerServiceImpl implements ICustomerService { ...@@ -41,6 +45,8 @@ public class CustomerServiceImpl implements ICustomerService {
private CustomerUserMapper customerUserMapper; private CustomerUserMapper customerUserMapper;
@Autowired @Autowired
private IBusinessInfoService businessInfoService; private IBusinessInfoService businessInfoService;
@Autowired
private EnterpriseService enterpriseService;
@Override @Override
public List<CustomerListVo> selectList(CustomerSearchDto dto) { public List<CustomerListVo> selectList(CustomerSearchDto dto) {
...@@ -70,13 +76,20 @@ public class CustomerServiceImpl implements ICustomerService { ...@@ -70,13 +76,20 @@ public class CustomerServiceImpl implements ICustomerService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public boolean add(Customer customer) { public boolean add(Customer customer) {
if (ObjectUtils.isEmpty(customer.getCompanyName())) throw new BeanException("企业名称不能为空"); try {
if (ObjectUtils.isEmpty(customer.getCompanyId())) throw new BeanException("企业id不能为空"); R res = enterpriseService.getUipId(customer.getCompanyName());
final Long userId = SecurityUtils.getUserId(); if (!ObjectUtils.isEmpty(res.getData())) {
customer.setUipId(MapUtil.getStr(BeanUtil.beanToMap(res.getData()), "uipId"));
}
} catch (Exception e) {
log.error("获取城投平台企业id错误!error:{}", e.getMessage());
}
Long userId = SecurityUtils.getUserId();
customer.setCreateId(userId); customer.setCreateId(userId);
customer.setUpdateId(userId); customer.setUpdateId(userId);
//查重 //查重
Customer verifyCustomer = baseMapper.selectByCompanyIdAndUserId(customer.getCompanyId(), userId); Customer verifyCustomer = baseMapper.selectByCompanyNameAndUserId(customer.getCompanyName(), userId);
if (!ObjectUtils.isEmpty(verifyCustomer)) { if (!ObjectUtils.isEmpty(verifyCustomer)) {
throw new ServiceException("当前客户信息已存在,请勿重复添加!"); throw new ServiceException("当前客户信息已存在,请勿重复添加!");
} }
...@@ -111,4 +124,9 @@ public class CustomerServiceImpl implements ICustomerService { ...@@ -111,4 +124,9 @@ public class CustomerServiceImpl implements ICustomerService {
return businessInfoService.selectCustomerBusinessList(dto); return businessInfoService.selectCustomerBusinessList(dto);
} }
@Override
public List<CustomerStatusListVo> selectStatusList(List<String> uipIds) {
return baseMapper.selectStatusList(uipIds, SecurityUtils.getUserId());
}
} }
package com.dsk.system.service.impl;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import com.dsk.system.domain.BusinessExcelDto;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
/**
* @author lxl
* @Description:
* @Date 2023/6/1 下午 4:30
**/
@Slf4j
@Service
public class ReadBusinessInfoExcel {
// 总行数
private int totalRows = 0;
// 总条数
private int totalCells = 0;
public int getTotalRows() {
return totalRows;
}
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}
public int getTotalCells() {
return totalCells;
}
public void setTotalCells(int totalCells) {
this.totalCells = totalCells;
}
/**
* 读EXCEL文件,获取信息集合
*
* @param mFile
* @return
*/
public List<BusinessExcelDto> getExcelInfo(MultipartFile mFile) {
String fileName = mFile.getOriginalFilename();// 获取文件名
try {
// 验证文件名是否合格
if (!validateExcel(fileName)) return null;
// 根据文件名判断文件是2003版本还是2007版本
boolean isExcel2003 = true;
if (isExcel2007(fileName)) isExcel2003 = false;
return createExcel(mFile.getInputStream(), isExcel2003);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 根据excel里面的内容读取信息
*
* @param is 输入流
* @param isExcel2003 excel是2003还是2007版本
* @return
*/
public List<BusinessExcelDto> createExcel(InputStream is, boolean isExcel2003) {
try {
Workbook wb = null;
// 当excel是2003时,创建excel2003
if (isExcel2003) {
wb = new HSSFWorkbook(is);
} else {
// 当excel是2007时,创建excel2007
wb = new XSSFWorkbook(is);
}
return readExcelValue(wb);// 读取Excel里面客户的信息
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 读取Excel内容
*
* @param wb
* @return
*/
private List<BusinessExcelDto> readExcelValue(Workbook wb) {
//得到第一个shell
Sheet sheet = wb.getSheetAt(0);
//得到Excel的行数
this.totalRows = sheet.getPhysicalNumberOfRows();
//得到Excel的列数(前提是有行数)
if (totalRows > 1 && sheet.getRow(0) != null) {
this.totalCells = sheet.getRow(0).getPhysicalNumberOfCells();
}
// List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
ArrayList<BusinessExcelDto> list = new ArrayList<>();
//循环Excel行数
for (int r = 1; r < totalRows; r++) {
Row row = sheet.getRow(r);
if (row == null) {
continue;
}
//循环Excel的列
// Map<String, Object> map = new HashMap<String, Object>();
BusinessExcelDto businessExcelDto = new BusinessExcelDto();
for (int c = 3; c < this.totalCells; c++) {
Cell cell = row.getCell(c);
if (null != cell) {
if (c == 0) {
//如果是纯数字,比如你写的是25,cell.getNumericCellValue()获得是25.0,通过截取字符串去掉.0获得25
if (cell.getCellType() == CellType.NUMERIC) {
String name = String.valueOf(cell.getNumericCellValue());
businessExcelDto.setProjectName(name.substring(0, name.length() - 2 > 0 ? name.length() - 2 : 1));//项目名称
} else {
businessExcelDto.setProjectName(cell.getStringCellValue());//名称
}
} else if (c == 1) {
if (cell.getCellType() == CellType.NUMERIC) {
String company = String.valueOf(cell.getNumericCellValue());
businessExcelDto.setOwnerCompany(company.substring(0, company.length() - 2 > 0 ? company.length() - 2 : 1));//业主单位
} else {
businessExcelDto.setOwnerCompany(cell.getStringCellValue());//性别
}
} else if (c == 2) {
if (cell.getCellType() == CellType.NUMERIC) {
String amount = String.valueOf(cell.getNumericCellValue());
businessExcelDto.setInvestmentAmount(amount.substring(0, amount.length() - 2 > 0 ? amount.length() - 2 : 1));//投资估算(万元)
} else {
businessExcelDto.setInvestmentAmount(cell.getStringCellValue());
}
}
}
}
//添加到list
list.add(businessExcelDto);
}
return list;
}
/**
* 验证EXCEL文件
* @param filePath
* @return
*/
public boolean validateExcel(String filePath) {
if (filePath == null || !(isExcel2003(filePath) || isExcel2007(filePath))) {
log.info("文件不是excel格式");
return false;
}
return true;
}
// @描述:是否是2003的excel,返回true是2003
public static boolean isExcel2003(String filePath) {
return filePath.matches("^.+\\.(?i)(xls)$");
}
// @描述:是否是2007的excel,返回true是2007
public static boolean isExcel2007(String filePath) {
return filePath.matches("^.+\\.(?i)(xlsx)$");
}
}
...@@ -80,15 +80,6 @@ ...@@ -80,15 +80,6 @@
LEFT JOIN business_user bu on bu.business_id = i.id LEFT JOIN business_user bu on bu.business_id = i.id
LEFT JOIN sys_user u on u.user_id = f.user_id LEFT JOIN sys_user u on u.user_id = f.user_id
<where> <where>
<if test="provinceId != null">
and i.province_id = #{provinceId}
</if>
<if test="cityId != null">
and i.city_id = #{cityId}
</if>
<if test="districtId != null">
and i.district_id = #{districtId}
</if>
<if test="projectType != null and projectType != ''"> <if test="projectType != null and projectType != ''">
and i.project_type = #{projectType} and i.project_type = #{projectType}
</if> </if>
...@@ -116,6 +107,77 @@ ...@@ -116,6 +107,77 @@
<if test="deptId != null"> <if test="deptId != null">
and bu.dept_id = #{deptId} and i.is_private = 1 and bu.dept_id = #{deptId} and i.is_private = 1
</if> </if>
<if test="provinceId != null and provinceId.size > 0 and cityId == null and districtId == null">
and i.province_id in
<foreach collection="provinceId" item="provinceId" open="(" separator="," close=")">
#{provinceId}
</foreach>
</if>
<if test="cityId != null and cityId.size > 0 and provinceId == null and districtId == null">
and i.city_id in
<foreach collection="cityId" item="cityId" open="(" separator="," close=")">
#{cityId}
</foreach>
</if>
<if test="districtId != null and districtId.size > 0 and provinceId == null and cityId == null">
and i.district_id in
<foreach collection="districtId" item="districtId" open="(" separator="," close=")">
#{districtId}
</foreach>
</if>
<if test="provinceId != null and provinceId.size > 0 and cityId != null and cityId.size > 0 and districtId == null">
and (
i.province_id in
<foreach collection="provinceId" item="provinceId" open="(" separator="," close=")">
#{provinceId}
</foreach>
or i.city_id in
<foreach collection="cityId" item="cityId" open="(" separator="," close=")">
#{cityId}
</foreach>
)
</if>
<if test="provinceId != null and provinceId.size > 0 and districtId != null and districtId.size > 0 and cityId == null">
and (
i.province_id in
<foreach collection="provinceId" item="provinceId" open="(" separator="," close=")">
#{provinceId}
</foreach>
or i.district_id in
<foreach collection="districtId" item="districtId" open="(" separator="," close=")">
#{districtId}
</foreach>
)
</if>
<if test="cityId != null and cityId.size > 0 and districtId != null and districtId.size > 0 and provinceId ==null">
and (
i.city_id in
<foreach collection="cityId" item="cityId" open="(" separator="," close=")">
#{cityId}
</foreach>
or i.district_id in
<foreach collection="districtId" item="districtId" open="(" separator="," close=")">
#{districtId}
</foreach>
)
</if>
<if test="provinceId != null and provinceId.size > 0 and cityId != null and cityId.size > 0 and districtId != null and districtId.size > 0">
and (
i.province_id in
<foreach collection="provinceId" item="provinceId" open="(" separator="," close=")">
#{provinceId}
</foreach>
or i.city_id in
<foreach collection="cityId" item="cityId" open="(" separator="," close=")">
#{cityId}
</foreach>
or i.district_id in
<foreach collection="districtId" item="districtId" open="(" separator="," close=")">
#{districtId}
</foreach>
)
</if>
</where> </where>
GROUP BY i.id GROUP BY i.id
ORDER BY i.create_time DESC ORDER BY i.create_time DESC
...@@ -262,10 +324,10 @@ ...@@ -262,10 +324,10 @@
<select id="selectCustomerBusinessList" resultType="com.dsk.system.domain.customer.vo.CustomerBusinessListVo"> <select id="selectCustomerBusinessList" resultType="com.dsk.system.domain.customer.vo.CustomerBusinessListVo">
select select
bi.id, bi.project_name, pi.investment_amount, pi.project_stage, pi.status bi.id, bi.project_name, bi.investment_amount, bi.project_stage, bi.status
from business_info bi from business_info bi
left join business_user bu on bi.id = bu.business_id left join business_user bu on bi.id = bu.business_id
where bi.customer_id = #{customerId} and (bu.user_id = #{userId} or bi.is_private = 1)) where bi.customer_id = #{customerId} and (bu.user_id = #{userId} or bi.is_private = 1)
<if test="projectStage != null and projectStage != '' "> and bi.project_stage = #{projectStage}</if> <if test="projectStage != null and projectStage != '' "> and bi.project_stage = #{projectStage}</if>
<if test="status != null "> and bi.status = #{status}</if> <if test="status != null "> and bi.status = #{status}</if>
order by bi.create_time desc order by bi.create_time desc
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<mapper namespace="com.dsk.system.mapper.CustomerMapper"> <mapper namespace="com.dsk.system.mapper.CustomerMapper">
<sql id="Base_Bean"> <sql id="Base_Bean">
ct.customer_id, ct.company_id, ct.company_name, ct.legal_person, ct.credit_code, ct.register_capital, ct.customer_id, ct.company_id, ct.uip_id, ct.company_name, ct.legal_person, ct.credit_code, ct.register_capital,
ct.province_id, ct.city_id, ct.district_id, ct.register_address, ct.company_nature, ct.company_level, ct.province_id, ct.city_id, ct.district_id, ct.register_address, ct.company_nature, ct.company_level,
ct.credit_level, ct.super_company, ct.is_on, ct.is_major, ct.company_attribute, ct.main_business, ct.credit_level, ct.super_company, ct.is_on, ct.is_major, ct.company_attribute, ct.main_business,
ct.business_scope, ct.customer_level, ct.business_characteristic, ct.decision_chain, ct.bid_characteristic, ct.business_scope, ct.customer_level, ct.business_characteristic, ct.decision_chain, ct.bid_characteristic,
...@@ -29,12 +29,23 @@ ...@@ -29,12 +29,23 @@
where ctu.user_id = #{userId} where ctu.user_id = #{userId}
</select> </select>
<select id="selectByCompanyIdAndUserId" resultType="com.dsk.system.domain.customer.Customer"> <select id="selectByCompanyNameAndUserId" resultType="com.dsk.system.domain.customer.Customer">
select select
<include refid="Base_Bean"></include> <include refid="Base_Bean"></include>
from customer ct from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id join customer_user ctu on ct.customer_id = ctu.customer_id
where ct.company_id = ${companyId} and ctu.user_id = #{userId} where ct.company_name = #{companyName} and ctu.user_id = #{userId}
</select>
<select id="selectStatusList" resultType="com.dsk.system.domain.customer.vo.CustomerStatusListVo">
select
ct.customer_id, ct.uip_id
from customer ct
join customer_user ctu on ct.customer_id = ctu.customer_id
where ctu.user_id = #{userId} and ct.uip_id in
<foreach collection="uipIds" item="uipId" open="(" separator="," close=",">
#{uipId}
</foreach>
</select> </select>
</mapper> </mapper>
......
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