Commit 83de0287 authored by zhangyi's avatar zhangyi

Merge remote-tracking branch 'origin/master'

parents faae009a 9d931208
......@@ -16,7 +16,6 @@ import com.dsk.system.domain.customer.dto.CustomerBusinessSearchDto;
import com.dsk.system.domain.customer.dto.CustomerSearchDto;
import com.dsk.system.service.ICustomerService;
import com.dsk.web.controller.search.service.BusinessOpportunityRadarService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.util.ObjectUtils;
......@@ -68,6 +67,23 @@ public class CustomerController extends BaseController {
@PostMapping()
@RepeatSubmit
public AjaxResult add(@RequestBody Customer customer) {
dealWithcustomerData(customer);
return AjaxResult.success(baseService.add(customer));
}
/**
* 认领客户
*/
// @PreAuthorize("@ss.hasPermi('customer:claim')")
@PostMapping("/claim")
@RepeatSubmit
public AjaxResult claim(@RequestBody Customer customer) {
if (ObjectUtils.isEmpty(customer.getUipId())) throw new BeanException("城投uipId不能为空");
dealWithcustomerData(customer);
return AjaxResult.success(baseService.add(customer));
}
private void dealWithcustomerData(Customer customer){
if (ObjectUtils.isEmpty(customer.getCompanyName())) throw new BeanException("企业名称不能为空");
if (ObjectUtils.isEmpty(customer.getCompanyId())) {
try {
......@@ -79,7 +95,6 @@ public class CustomerController extends BaseController {
logger.debug("获取企业id错误!error:{}", e.getMessage());
}
}
return AjaxResult.success(baseService.add(customer));
}
/**
......
package com.dsk.web.controller.search.macroMarket;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.OpRegionalEconomicDataV1Dto;
import com.dsk.common.dtos.OpRegionalEconomicDataRegionalListDto;
import com.dsk.common.dtos.OpRegionalEconomicDataStatisticsRegionalDto;
import com.dsk.common.dtos.OpRegionalEconomicDataV1PageDto;
import com.dsk.system.service.EconomicService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
/**
* @ClassName RegionalEconomicDataController
......@@ -30,7 +33,7 @@ public class RegionalEconomicDataController {
*@date: 2023/5/18 10:29
*/
@PostMapping("/national/nationalPage")
public AjaxResult nationalPage(@RequestBody OpRegionalEconomicDataV1PageDto dto) {
public AjaxResult nationalPage(@RequestBody @Valid OpRegionalEconomicDataV1PageDto dto) {
return economicService.nationalPage(dto);
}
......@@ -55,7 +58,7 @@ public class RegionalEconomicDataController {
*@date: 2023/5/18 10:29
*/
@PostMapping("/statistics/regional")
public AjaxResult statisticsRegional(@RequestBody OpRegionalEconomicDataV1Dto dto) {
public AjaxResult statisticsRegional(@RequestBody OpRegionalEconomicDataStatisticsRegionalDto dto) {
return economicService.statisticsRegional(dto);
}
......@@ -67,7 +70,7 @@ public class RegionalEconomicDataController {
*@date: 2023/5/18 10:29
*/
@PostMapping("/regional/list")
public AjaxResult regionalList(@RequestBody OpRegionalEconomicDataV1Dto dto) {
public AjaxResult regionalList(@RequestBody OpRegionalEconomicDataRegionalListDto dto) {
return economicService.regionalList(dto);
}
......
package com.dsk.common.dtos;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @ClassName OpRegionalEconomicDataV1Dto
* @Description 专项债-项目类别统计
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataRegionalListDto {
/**
* 省Id
*/
@NotNull(message = "provinceId 不能为空")
private Integer provinceId;
/**
* 市Id
*/
private Integer cityId;
/**
* 区Id
*/
private Integer areaId;
}
package com.dsk.common.dtos;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @ClassName OpRegionalEconomicDataV1Dto
* @Description 专项债-项目类别统计
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataStatisticsRegionalDto {
/**
* id
*/
@NotNull(message = "id 不能为空")
private Integer id;
/**
* 年份
*/
private Integer year;
/**
* 省Id
*/
private Integer provinceId;
/**
* 市Id
*/
private Integer cityId;
/**
* 区Id
*/
private Integer areaId;
}
......@@ -3,6 +3,7 @@ package com.dsk.common.dtos;
import com.dsk.common.core.domain.model.BasePage;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
......@@ -18,6 +19,7 @@ public class OpRegionalEconomicDataV1PageDto extends BasePage {
/**
* 年份
*/
@NotNull(message = "year 不能为空")
private Integer year;
/**
* 省
......
......@@ -3,6 +3,8 @@ package com.dsk.common.dtos;
import com.dsk.common.core.domain.model.BasePage;
import lombok.Data;
import java.util.List;
/**
* @ClassName UrbanInvestmentPlatformDto
......@@ -21,41 +23,41 @@ public class UrbanInvestmentPlatformDto extends BasePage {
/**
* 城投业务类型
*/
private String uipBusinessType;
private List<String> uipBusinessType;
/**
* 主体评级
*/
private String bratingSubjectLevel;
private List<String> bratingSubjectLevel;
/**
* 股东背景
*/
private String shareholderBg;
private List<String> shareholderBg;
/**
* 股权关系
*/
private String equityRelationship;
private List<String> equityRelationship;
/**
* 平台重要性
*/
private String platformImportance;
private List<String> platformImportance;
/**
* 所属开发区
*/
private String developmentZone;
private List<String> developmentZone;
/**
* 省
*/
private Integer provinceId;
private List<Integer> provinceIds;
/**
* 市
*/
private Integer cityId;
private List<Integer> cityIds;
/**
* 区
*/
private Integer areaId;
private List<Integer> areaIds;
/**
* 关键词
......
import request from "@/utils/request";
// 获取页面数据
export function getList(data) {
return request({
url: '/getInfo',
method: 'get'
})
}
import request from "@/utils/request";
// 获取查询下拉选项
export function getOption() {
return request({
url: '/getInfo',
method: 'get'
})
}
// 获取列表数据
export function getList(data) {
return request({
url: '/getInfo',
method: 'get'
})
}
......@@ -34,4 +34,104 @@ export function abnormalYears(data) {
})
}
// 被执行人列表
export function executedPersonsPage(data) {
return request({
url: '/enterpriseCredit/executedPersonsPage',
method: 'post',
data:data
})
}
// 失信被执行人列表
export function executedPage(data) {
return request({
url: '/enterpriseCredit/executedPage',
method: 'post',
data:data
})
}
// 裁判文书列表
export function lawsuitsPage(data) {
return request({
url: '/enterpriseCredit/lawsuitsPage',
method: 'post',
data:data
})
}
// 裁判文书案由
export function lawsuitsCauseAction(data) {
return request({
url: '/enterpriseCredit/lawsuitsCauseAction',
method: 'post',
data:data
})
}
// 裁判文书身份
export function lawsuitsRole(data) {
return request({
url: '/enterpriseCredit/lawsuitsRole',
method: 'post',
data:data
})
}
// 法院公告列表
export function noticesPage(data) {
return request({
url: '/enterpriseCredit/noticesPage',
method: 'post',
data:data
})
}
// 法院公告类型
export function noticesType(data) {
return request({
url: '/enterpriseCredit/noticesType',
method: 'post',
data:data
})
}
// 法院公告身份
export function noticesRole(data) {
return request({
url: '/enterpriseCredit/noticesRole',
method: 'post',
data:data
})
}
// 法院公告案由
export function noticesCaseReason(data) {
return request({
url: '/enterpriseCredit/noticesCaseReason',
method: 'post',
data:data
})
}
// 开庭公告列表
export function kaitingPage(data) {
return request({
url: '/enterpriseCredit/kaitingPage',
method: 'post',
data:data
})
}
// 开庭公告案由
export function kaitingCauseAction(data) {
return request({
url: '/enterpriseCredit/kaitingCauseAction',
method: 'post',
data:data
})
}
// 开庭公告当事人身份
export function kaitingPureRole(data) {
return request({
url: '/enterpriseCredit/kaitingPureRole',
method: 'post',
data:data
})
}
......@@ -15,4 +15,112 @@ export function getProjectlist(param) {
params: param
})
}
//删除项目
export function delProject(param) {
return request({
url: '/business/info/remove/'+param,
method: 'DELETE',
})
}
//建设内容
export function getJSNR(param) {
return request({
url: '/business/info/construction/'+param,
method: 'GET',
})
}
//项目速览
export function getXMSL(param) {
return request({
url: '/business/info/browse/'+param,
method: 'GET',
})
}
//项目内容修改
export function editXMNR(param) {
return request({
url: '/business/info/edit',
method: 'POST',
data:param
})
}
//查询项目联系人
export function getLXR(param) {
return request({
url: '/business/contacts/list',
method: 'GET',
params:param
})
}
//修改项目联系人
export function editLXR(param) {
return request({
url: '/business/contacts/edit',
method: 'POST',
data:param
})
}
//新增项目联系人
export function addLXR(param) {
return request({
url: '/business/contacts/add',
method: 'POST',
data:param
})
}
//跟进记录
export function getGJJL(param) {
return request({
url: '/business/record/list',
method: 'get',
params:param
})
}
//新增跟进记录
export function addGJJL(param) {
return request({
url: '/business/record/add',
method: 'POST',
data:param
})
}
//删除跟进记录
export function delGJJL(param) {
return request({
url: '/business/record/remove/',
method: 'DELETE',
params:param
})
}
//工作待办
export function getGZDB(param) {
return request({
url: '/business/backlog/list',
method: 'GET',
params:param
})
}
//添加工作待办
export function addGZDB(param) {
return request({
url: '/business/backlog/add',
method: 'post',
data:param
})
}
//修改工作待办
export function editGZDB(param) {
return request({
url: '/business/backlog/edit',
method: 'post',
data:param
})
}
......@@ -530,7 +530,7 @@ ul, li {
line-height: 32px;
}
&:hover{
color: #006AD1;
color: #f;
border-color: #006AD1;
}
}
......
......@@ -124,6 +124,7 @@
border-radius: 2px;
line-height: 28px;
cursor: pointer;
position: relative;
>span{
padding-left: 8px;
}
......@@ -131,6 +132,15 @@
color: rgba(35,35,32,0.4);
margin-left: 4px;
}
.timeinput{
opacity: 0;
position: absolute;
.el-input__inner{
padding: 0;
margin: 0;
border: 0;
}
}
}
}
}
......@@ -558,6 +568,7 @@
.el-input{
display: inline-block;
margin-right: 12px;
position: relative;
.el-input__inner{
height: 32px;
padding: 0;
......@@ -571,6 +582,7 @@
.el-input__prefix{
left: 8px;
top: -2px;
position: absolute;
}
.el-input__suffix{
height: 32px;
......@@ -988,7 +1000,7 @@
background: rgba(0, 129, 255, 0.16);
font-size: 12px;
line-height: 22px;
top: 149px;
top: 148px;
right: 61px;
cursor: pointer;
.img{
......@@ -1067,3 +1079,5 @@
white-space: nowrap;
padding-right: 10px;
}
.none{display: none}
......@@ -371,7 +371,7 @@ select {
width: 100%;
height: 0px;
opacity: 1;
border: 1px solid #EFEFEF;
border-bottom: 1px solid #EFEFEF;
margin: 16px 0px;
}
......
<template>
<div class="keyword_wrap">
<el-dialog
title="关键词推荐"
:visible.sync="dialogVisible"
width="800"
class="keyword_dialog"
append-to-body
:lock-scroll="false"
>
<div class="keyword_label">请搜索或采用关键词种类</div>
<div v-if="dialogVisible">
<el-select @change="changeKeyword" v-model="keyword" clearable class="keyword_select" popper-class="keyword_dropdown" filterable :filter-method="filterMethod" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.id"
:label="item.type"
:value="item.content">
<span v-html="item.newType||item.type"></span>
</el-option>
</el-select>
<div>
<div class="keyword_name" >
<el-scrollbar style="height:256px">
<ul>
<li v-for="(item,index) in keywordList" :class="activeIndex == index?'active_li':''" :key="index" @click="keywordClick(index)">{{item.type}}</li>
</ul>
</el-scrollbar>
</div>
<div class="keyword_con">
<el-input
type="textarea"
:autosize="{ minRows: 1, maxRows: 8}"
placeholder="请输入内容"
v-model="content">
</el-input>
<span class="keyword_con_label">
<!-- <img class="keyword_con_img" src="@/assets/img/performance/tip.png" alt=""> -->
关键词可编辑或删减</span>
<div class="keyword_btn" @click="handclick">应用关键词</div>
</div>
</div>
</div>
</el-dialog>
</div>
</template>
<script>
var debounce=function(fn, delay = 300) {
var timer = null;
return function() {
var _this = this;
var args = arguments;
if (timer) clearTimeout(timer);
timer = setTimeout(function() {
fn.apply(_this, args);
}, delay);
};
}
export default {
data(){
return{
dialogVisible:false,
activeIndex:0,
keyword:"",
content:"",
options:[],
keywordList:[]
}
},
methods:{
changeKeyword(){
this.keywordList.map((item,index)=>{
if(item.content == this.keyword){
this.activeIndex = index
this.content = this.keywordList[this.activeIndex].content
this.$nextTick(()=>{
let el = document.getElementsByClassName("active_li")[0]
el.scrollIntoView()
})
}
})
},
// 筛选方法
filterMethod: debounce(function(filterVal) {
let newArr = JSON.parse(JSON.stringify(this.keywordList))
if (filterVal) {
let filterArr = newArr.filter((item) => {
if (item == null) {
return false
} else {
item.newType = item.type.replace(new RegExp(filterVal, 'g'), "<span style='color:#FF204E;'>" + filterVal +
"</span>")
return item.type.toLowerCase().includes(filterVal.toLowerCase())
}
})
this.options = filterArr;
} else {
this.options = newArr;
}
}, 500),
handclick(){
this.$emit('keywordClick',this.content)
Object.assign(this.$data, this.$options.data()) //重置data
},
keywordClick(index){
this.activeIndex = index
this.content = this.keywordList[this.activeIndex].content
},
show(){
// this.$axios.post("/nationzj/project/keywordList").then(res=>{
// if(res.data.code==200){
// this.keywordList = res.data.data
// this.options = res.data.data
// // localStorage.setItem("keyword",JSON.stringify(res.data.data))
// this.content = this.keywordList[this.activeIndex].content;
// this.dialogVisible = true;
// }
// })
this.dialogVisible = true;
/*if(localStorage.getItem("keyword")){
this.keywordList = JSON.parse(localStorage.getItem("keyword"));
this.options = this.keywordList;
this.content = this.keywordList[this.activeIndex].content;
this.dialogVisible = true;
}else{
this.$axios.post("/nationzj/project/keywordList").then(res=>{
if(res.data.code==200){
this.keywordList = res.data.data
this.options = res.data.data
localStorage.setItem("keyword",JSON.stringify(res.data.data))
this.content = this.keywordList[this.activeIndex].content;
this.dialogVisible = true;
}
})
}*/
},
},
}
</script>
<style lang="scss">
.keyword_dialog{
.el-dialog{
width: 800px;
height: 384px;
background: #FFFFFF;
border-radius: 4px 4px 4px 4px;
opacity: 1;
position: relative;
.keyword_label{
position: absolute;
top: 11px;
left: 115px;
}
.el-dialog__header{
padding-left: 24px;
padding-top: 9px;
color: #333333;
font-weight: bold;
border-bottom: 1px solid #EEEEEE;
.el-dialog__title{
font-size: 16px;
}
.el-dialog__headerbtn{
font-size: 20px;
top: 5px;
right: 16px;
}
}
.el-dialog__body{
padding-top: 16px;
.keyword_select{
margin-bottom: 8px;
width: 376px;
.el-input,.el-input__inner{
width: 376px;
}
}
.keyword_name{
display: inline-block;
text-align: center;
width: 180px;
position: relative;
background:#F8F8F8;
border:1px solid rgba(230,230,230,1);
border-radius:2px 2px 0px 0px;
.el-scrollbar__wrap{
overflow-x: hidden;
}
li{
height:40px;
line-height:40px;
box-sizing: border-box;
cursor: pointer;
overflow: hidden;
text-overflow:ellipsis;
white-space: nowrap;
padding: 0 5px;
color: #999999;
&:hover{
color: #0081FF;
background: #E2EDFF;
font-weight:bold;
}
}
.active_li{
color: #0081FF;
background: #E2EDFF;
font-weight:bold;
}
.el-input .el-input__inner{
height: 40px;
border-radius: 4px 4px 0 0;
border: none;
border-bottom: 1px solid #E6E6E6;
}
}
.keyword_con{
float: right;
display: inline-block;
position: relative;
margin-right: 4px;
width: 576px;
height:258px;
background:rgba(255,255,255,1);
border:1px solid rgba(230,230,230,1);
border-radius:2px 2px 0px 0px;
box-sizing: border-box;
textarea{
border: none;
resize:none;
max-height: 256px;
color: #333333;
padding: 16px;
}
.keyword_btn{
cursor: pointer;
line-height:28px;
color: #ffffff;
text-align: center;
position: absolute;
bottom: 24px;
right: 16px;
width: 102px;
height: 28px;
background: #0081FF;
border-radius: 2px 2px 2px 2px;
opacity: 1;
}
.keyword_con_label{
color: #999999;
font-size: 12px;
margin-left: 16px;
.keyword_con_img{
width: 14px;
height: 14px;
position: relative;
top: -2px;
}
}
}
}
}
}
.el-autocomplete-suggestion{
width: 140px!important;
}
.el-autocomplete-suggestion__wrap{
max-height: 370px!important;
}
</style>
......@@ -170,7 +170,36 @@ export const constantRoutes = [
meta: { title: '拟建项目详情', icon: 'radar' }
}
]
}
},
{
path: '/bxprozbgg',
component: Layout,
hidden: true,
redirect: 'noredirect',
children: [
{
path: '/radar/bxprozbgg/details/:id(\\d+)',
component: () => import('@/views/radar/bxprozbgg/details'),
name: 'bxprozbggDetails',
meta: { title: '标讯pro项目详情', icon: 'radar' }
}
]
},
{
path: '/Tender',
component: Layout,
hidden: true,
redirect: 'noredirect',
children: [
{
path: '/radar/Tender/details/:id(\\d+)',
component: () => import('@/views/radar/Tender/details'),
name: 'TenderDetails',
meta: { title: '公招标讯详情', icon: 'radar' }
}
]
},
]
// 动态路由,基于用户权限动态去加载
......
......@@ -10,7 +10,7 @@
<div class="empty" v-if="tableData.total==0 && isNew == true">
<img src="@/assets/images/project/empty.png">
<div class="p1">添加你的第一位客户吧</div>
<div class="p2">抱歉,你还未添加客户,快去添加吧</div>
<div class="p2">抱歉你还未添加客户,快去添加吧</div>
<div class="btn btn_primary h36 w88" @click="opennew">添加客户</div>
<div class="btn btn_primary btn_shallow h36 w88" @click="pldrs">批量导入</div>
</div>
......@@ -227,56 +227,7 @@
</el-dialog>
</el-card>
</div>
<div class="uploadwin" v-if="pldr">
<div class="upload" v-if="addfile==false">
<div class="up_title">批量导入客户</div>
<div class="up_box">
<el-upload :class="{'none':isUpload == true}"
class="upload-demo"
:action="action"
:multiple="false"
accept=".xls,.xlsx"
drag
ref="upload"
:auto-upload="false"
:file-list="fileList"
:on-change="handleFileListChange"
:headers="headers"
:on-success="onSuccess">
<img class="up_img" src="@/assets/images/project/upload.png">
<div class="up_text">点击选择或将文件(xls,xlsx)拖拽至此上传成员名录</div>
<div class="up_tip">导入的文件内容必须依照下载模板的要求填写</div>
<div class="up_tip">上传文件最大为2M,仅支持Excel表格文件(xls,xlsx)</div>
<div class="up_tip">导入已存在的客户将自动跳过</div>
</el-upload>
<div class="up_success" v-if="isUpload == true">
<img src="@/assets/images/project/success.png">上传成功
</div>
<div class="btn_download" v-if="isUpload == false" @click="downloadClick"><div class="img"></div>点击下载</div>
</div>
<div class="btns">
<div class="btn btn_primary btn_disabled h34" v-if="isUpload==false">确定导入</div>
<div class="btn btn_primary h34" @click="importConfirmClick" v-else>确定导入</div>
<div class="btn btn_default h34">取消</div>
</div>
</div>
<div class="success" v-if="addfile==true">
<div v-if="addsuccess==false">
<img class="img" src="@/assets/images/project/clock.png">
<div class="p1">查询客户中...</div>
<div class="p2">请耐心等待,过程大概30秒</div>
</div>
<div v-if="addsuccess == true">
<div class="p3">
<img src="@/assets/images/project/success.png">查询成功
</div>
<div class="p2">成功导入客户信息</div>
<div class="btns">
<div class="btn btn_primary h32" @click="handleCurrentChange(1)">查看</div>
</div>
</div>
</div>
</div>
<batchimport v-if="pldr" :importtype="types" @cancels="importCancel" @getdatas="handleCurrentChange(1)"></batchimport>
</div>
</template>
......@@ -286,12 +237,15 @@
import {getCustomerList,importData,addCustomer} from '@/api/custom/custom'
import {getEnterprise,getDictType,} from '@/api/main'
import prvinceTree from '@/assets/json/provinceTree'
import batchimport from '../../project/projectList/component/batchImport'
import axios from 'axios'
export default {
name: 'CustomList',
components:{batchimport},
data() {
return{
pldr: false,
types:'custom',
searchParam:{
companyName:'',
pageNum:1,
......@@ -304,9 +258,6 @@ export default {
tipslit:[],//项目标签
tipsvalue:"",//标签填写内容
tableData: [],//列表
isUpload:false,//有上传的文件
addfile:false,//已上传文件
addsuccess:false,//已成功加入数据
companData:[],//联想企业列表
customerLevel:[],//客户等级
......@@ -352,9 +303,9 @@ export default {
},
pldrs(){
this.pldr = true
this.addfile = false
this.isUpload = false
this.addsuccess = false
},
importCancel(){
this.pldr = false
},
//获取客户列表
getCustomerList(){
......@@ -372,6 +323,7 @@ export default {
},
//翻页
handleCurrentChange(val) {
this.pldr=false
this.isNew = false
this.searchParam.pageNum=val
this.getCustomerList()
......@@ -472,35 +424,6 @@ export default {
this.dialogVisible = false
this.showlist = false
},
// 批量导入
importConfirmClick() {
if (this.fileList.length > 0) {
this.$refs["upload"].submit();
this.getCustomerList();
this.addfile = true
} else {
this.$message("请先选择文件");
}
},
downloadClick() {
let a = document.createElement("a");
a.setAttribute("href", "/file/Template.xlsx");
a.setAttribute("download", "批量导入模版.xlsx");
document.body.appendChild(a);
a.click();
},
handleFileListChange(file, fileList) {
if (fileList.length > 0) {
this.fileList = [fileList[fileList.length - 1]];
this.isUpload = true
}
},
onSuccess(res, file, fileList) {
if(res.code == 200 )
this.addsuccess = true
else
this.$message.error({message:res.msg,showClose:true})
},
//地区
async prvinceTree() {
......@@ -617,5 +540,4 @@ export default {
padding-right: 26px;
}
}
.none{display: none}
</style>
......@@ -53,6 +53,10 @@
<el-option v-for="(item, index) in form.options" :key="index" :label="item.name" :value="item.value" />
</el-select>
</template>
<!-- 自定义 -->
<template v-if="form.type==0">
<slot name="slot"></slot>
</template>
</div>
......@@ -109,7 +113,6 @@ export default {
},
methods: {
changeSelect(){
console.log(this.formData)
this.$emit('handle-search')
},
clickEXCEL() {
......@@ -204,6 +207,9 @@ export default {
color: rgba(35,35,35,0.8);
margin-left: 16px;
cursor: pointer;
&:hover{
color: #0081FF;
}
img{
width: 18px;
height: 18px;
......
......@@ -43,6 +43,8 @@
</div>
</template>
<!-- <Detail />-->
<!-- 弹窗关联项目 -->
<el-drawer
title="添加合作情况"
......@@ -130,11 +132,12 @@ import {
queryProject
} from '@/api/detail/party-a/cooperate'
import {addProject} from '@/api/project/project'
import Detail from "../../../project/projectList/detail"
export default {
name: 'Cooperate',
mixins: [mixin],
components: {
Detail
},
data() {
return {
......
......@@ -54,7 +54,8 @@
</template>
<script>
import * as echarts from 'echarts';
import { getList } from '@/api/detail/party-a/financial'
import * as echarts from 'echarts'
export default {
name: 'Financial',
props: ['companyId'],
......@@ -79,12 +80,7 @@ export default {
{ name: '非标余额', ico: require('@/assets/images/detail/financial/zwqk_ico3.png'), intro: '非标余额/有息债务', introPro: '95.19%', amount: '1699.7', unit: '亿元'},
{ name: '对外担保金额', ico: require('@/assets/images/detail/financial/zwqk_ico4.png'), intro: '对外担保比例', introPro: '95.19%', amount: '1699.7', unit: '亿元'}
],
echartsData: [
{ value: 1048, name: '有息债务' },
{ value: 735, name: '有息债务/总债务' },
{ value: 580, name: '综合融资成本' },
{ value: 484, name: 'EBITDA保障倍数' }
],
echartsData: [],
// 资金情况
zjqkList: [
{ name: '经营现金流', ico: require('@/assets/images/detail/financial/zjqk_ico1.png'), intro: '该指标越高,说明经营活动的造血能力越强', amount: '99213', unit: '亿元'},
......@@ -113,9 +109,23 @@ export default {
created() {
},
mounted() {
this.getEcharts()
this.handleQuery()
},
methods: {
handleQuery() {
let param = {}
getList(param).then((res) => {
this.echartsData = [
{ value: 1048, name: '有息债务' },
{ value: 735, name: '有息债务/总债务' },
{ value: 580, name: '综合融资成本' },
{ value: 484, name: 'EBITDA保障倍数' }
]
this.$nextTick(() => {
this.getEcharts()
})
})
},
getEcharts(){
let myChart = echarts.init(document.getElementById("myEcharts"));
//配置图表
......
......@@ -25,25 +25,25 @@
<Tencent v-if="currentPath.pathName=='tencent'" :company-id="companyId" />
<Administrative v-if="currentPath.pathName=='administrative'" :company-id="companyId" />
<!-- 投诚分析 -->
<LandAcquisition v-if="currentPath.pathName=='landAcquisition'" />
<RegionalEconomies v-if="currentPath.pathName=='regionalEconomies'" />
<SameRegion v-if="currentPath.pathName=='sameRegion'" />
<LandAcquisition v-if="currentPath.pathName=='landAcquisition'" :company-id="companyId" />
<RegionalEconomies v-if="currentPath.pathName=='regionalEconomies'" :company-id="companyId" />
<SameRegion v-if="currentPath.pathName=='sameRegion'" :company-id="companyId" />
<!-- 风险信息 -->
<Punish v-if="currentPath.pathName=='punish'" />
<BusinessAnomaly v-if="currentPath.pathName=='businessAnomaly'" />
<IfThePerson v-if="currentPath.pathName=='ifThePerson'" />
<Dishonesty v-if="currentPath.pathName=='dishonesty'" />
<Judgment v-if="currentPath.pathName=='judgment'" />
<CourtNotice v-if="currentPath.pathName=='courtNotice'" />
<OpenacourtsessionNotice v-if="currentPath.pathName=='openacourtsessionNotice'" />
<Punish v-if="currentPath.pathName=='punish'" :company-id="companyId" />
<BusinessAnomaly v-if="currentPath.pathName=='businessAnomaly'" :company-id="companyId" />
<IfThePerson v-if="currentPath.pathName=='ifThePerson'" :company-id="companyId" />
<Dishonesty v-if="currentPath.pathName=='dishonesty'" :company-id="companyId" />
<Judgment v-if="currentPath.pathName=='judgment'" :company-id="companyId" />
<CourtNotice v-if="currentPath.pathName=='courtNotice'" :company-id="companyId" />
<OpenacourtsessionNotice v-if="currentPath.pathName=='openacourtsessionNotice'" :company-id="companyId" />
<!-- 招标偏好 -->
<Preference v-if="currentPath.pathName=='preference'" />
<Preference v-if="currentPath.pathName=='preference'" :company-id="companyId" />
<!-- 合作情况 -->
<Cooperate v-if="currentPath.pathName=='cooperate'" />
<Cooperate v-if="currentPath.pathName=='cooperate'" :company-id="companyId" />
<!-- 决策链条 -->
<DecisionMaking v-if="currentPath.pathName=='decisionMaking'" />
<DecisionMaking v-if="currentPath.pathName=='decisionMaking'" :company-id="companyId" />
<!-- 跟进记录 -->
<Gjjl v-if="currentPath.pathName=='gjjl'" types="gjdt" />
<Gjjl v-if="currentPath.pathName=='gjjl'" :company-id="companyId" />
</div>
</div>
</div>
......
......@@ -35,6 +35,9 @@ export default {
})
Object.keys(condtion).forEach(key => {
if(condtion[key]) {
if(Array.isArray(condtion[key]) && condtion[key].length == 0){
delete condtion[key]
}
reqData[key] = condtion[key]
}
})
......@@ -47,13 +50,14 @@ export default {
handleSearch(){
let params = this.formParams()
params.pageNum = 1
this.queryParams.pageNum = 1
this.handleQuery(params)
},
//分页
handleCurrentChange(e){
console.log(e)
let params = this.formParams()
params.pageNum = e
this.queryParams.pageNum = e
this.handleQuery(params)
},
handleSizeChange(e){
......
......@@ -18,7 +18,7 @@
@handle-current-change="handleCurrentChange"
>
<template slot="porjectName" slot-scope="scope">
<span :class="[isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.porjectName)?'cell-span':'']" :style="{'-webkit-line-clamp': 5}">
<span :class="[isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.porjectName)?'cell-span':'']" :style="{'-webkit-line-clamp': 2}">
{{ scope.row.porjectName }}
<span v-if="isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.porjectName)" @click="changeShowAll(scope.index, 0)">...<span style="color: #0081FF;">展开</span></span>
</span>
......@@ -83,7 +83,7 @@ export default {
this.tableData = [
{
projectId: '1',
porjectName:'滨州医学院口腔医学大楼铝合金门窗供货及安装滨州医学院口腔医学大楼铝合金门窗供货及安装滨州医学院口腔医学大楼铝合金门窗供货及安装滨州医学院口腔医学大楼铝合金门窗供货及安装滨州医学院口腔医学大楼铝合金门窗供货及安装滨州医学院口腔医学大楼铝合金门窗供货及安装滨州医学院口腔医学大楼铝合金门窗供货及安装滨州医学院口腔医学大楼铝合金门窗供货及安装滨州医学院口腔医学大楼铝合金门窗供货及安装滨州医学院口腔医学大楼铝合金门窗供货及安装2',
porjectName:'滨州医学院口腔医学大楼铝合金门窗供货及安装滨州医学院口腔医学大',
use:'城镇住宅用地',
type:'房地产业',
way:'挂牌出让',
......
......@@ -58,12 +58,12 @@ export default {
formData: [
{ type: 1, fieldName: 'projectStage', value: '', placeholder: '项目地区', options: []},
{ type: 1, fieldName: 'projectType', value: '', placeholder: '项目类型', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: []}
],
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
showList:[],
tableDataTotal:0
}
},
computed: {
......
......@@ -56,8 +56,7 @@ export default {
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
showList:[],
tableDataTotal:0
}
},
computed: {
......
......@@ -55,7 +55,7 @@ export default {
],
formData: [
{ type: 1, fieldName: 'penalizeReasonType', value: '', placeholder: '土地用途', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: []}
],
//列表
tableLoading:false,
......
......@@ -57,8 +57,7 @@ export default {
//列表
tableLoading:false,
tableData:[],
tableDataTotal:0,
showList:[],
tableDataTotal:0
}
},
computed: {
......
......@@ -10,6 +10,7 @@
/>
<tables
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
......@@ -17,11 +18,10 @@
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="inReason" slot-scope="scope">
<router-link to="" tag="a" class="a-link">{{scope.row.inReason}}</router-link>
<template slot="projectName" slot-scope="scope">
<router-link to="" tag="a" class="a-link">{{scope.row.projectName}}</router-link>
<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>
......@@ -30,53 +30,70 @@
<script>
import mixin from '../mixins/mixin'
import {getList, getOption} from '@/api/detail/party-a/overview'
export default {
name: 'Branch',
props: ['companyId'],
mixins: [mixin],
data() {
return {
queryParams: {
cid: 6034,
companyId: this.companyId,
pageNum: 1,
pageSize: 10
},
forData: [
{label: '被投资企业名称', prop: 'inReason', slot: true},
{label: '负责人', prop: 'inDate'},
{label: '成立日期', prop: 'department'}
{label: '被投资企业名称', prop: 'projectName', slot: true},
{label: '负责人', prop: 'type'},
{label: '成立日期', prop: 'date'}
],
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: 'zbgg', value: '', placeholder: '招标公告', options: []
}
],
//列表
tableLoading:false,
tableData:[],
pageIndex:1,
pageSize:10,
tableDataTotal:0,
}
},
created() {
this.dataRegion()
this.handleOption()
this.handleQuery()
},
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'}
] //测试
handleOption(){
getOption().then((res) => {
this.setFormData('zbgg', [
{ name: '类别1', value: '1' },
{ name: '类别2', value: '2' },
{ name: '类别3', value: '3' },
{ name: '类别4', value: '4' }
])
})
},
handleQuery(params) {
console.log(params)
this.tableLoading = true
let param = params?params:this.queryParams
getList(param).then((res) => {
this.tableLoading = false
this.tableData = [
{
projectId: '1',
tag: '在业',
projectName:'滨州医学院口腔医学大楼铝合金门窗供货及安装',
use:'城镇住宅用地',
type:'房地产业',
way:'挂牌出让',
state:'重庆',
money:'11234万元',
scale:'222平米',
unit:'江苏省住房和城乡建设厅',
date:'2015-08-06',
}
]
this.tableDataTotal = 100
})
}
}
}
......
......@@ -23,6 +23,7 @@
<script>
import mixin from '../mixins/mixin'
import InfoTable from '../component/infoTable'
import {getList} from "@/api/detail/party-a/overview";
export default {
name: 'Businfo',
props: ['companyId'],
......@@ -34,7 +35,7 @@ export default {
return {
activeName: 'first',
queryParams: {
cid: 6034,
companyId: this.companyId,
pageNum: 1,
pageSize: 10
},
......@@ -73,22 +74,34 @@ export default {
}
},
created() {
this.handleData()
this.handleQuery()
},
methods: {
handleClick(){
this.handleData()
this.handleQuery()
},
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)
handleQuery() {
console.log('索引:',this.activeName)
this.tableLoading = true
getList(this.queryParams).then((res) => {
this.tableLoading = false
this.tableData = [
{
projectId: '1',
tag: '在业',
projectName:'滨州医学院口腔医学大楼铝合金门窗供货及安装',
use:'城镇住宅用地',
type:'房地产业',
way:'挂牌出让',
state:'重庆',
money:'11234万元',
scale:'222平米',
unit:'江苏省住房和城乡建设厅',
date:'2015-08-06',
}
]
this.tableDataTotal = 100
})
}
}
}
......
......@@ -19,6 +19,7 @@
<script>
import mixin from '../mixins/mixin'
import {getList} from '@/api/detail/party-a/overview'
export default {
name: 'Execuinfo',
props: ['companyId'],
......@@ -26,13 +27,13 @@ export default {
data() {
return {
queryParams: {
cid: 6034,
companyId: this.companyId,
pageNum: 1,
pageSize: 10
},
forData: [
{label: '姓名', prop: 'inDate'},
{label: '职位', prop: 'department'}
{label: '姓名', prop: 'projectName'},
{label: '职位', prop: 'type'}
],
formData: [],
//列表
......@@ -42,19 +43,30 @@ export default {
}
},
created() {
this.handleData()
this.handleQuery()
},
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)
handleQuery() {
this.tableLoading = true
getList(this.queryParams).then((res) => {
this.tableLoading = false
this.tableData = [
{
projectId: '1',
tag: '在业',
projectName:'滨州医学院口腔医学大楼铝合金门窗供货及安装',
use:'城镇住宅用地',
type:'房地产业',
way:'挂牌出让',
state:'重庆',
money:'11234万元',
scale:'222平米',
unit:'江苏省住房和城乡建设厅',
date:'2015-08-06',
}
]
this.tableDataTotal = 100
})
}
}
}
......
......@@ -19,11 +19,10 @@
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="inReason" slot-scope="scope">
<router-link to="" tag="a" class="a-link">{{scope.row.inReason}}</router-link>
<template slot="projectName" slot-scope="scope">
<router-link to="" tag="a" class="a-link">{{scope.row.projectName}}</router-link>
<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>
......@@ -32,6 +31,7 @@
<script>
import mixin from '../mixins/mixin'
import {getList} from '@/api/detail/party-a/overview'
export default {
name: 'Holderinfo',
props: ['companyId'],
......@@ -40,12 +40,12 @@ export default {
return {
activeName: 'first',
queryParams: {
cid: 6034,
companyId: this.companyId,
pageNum: 1,
pageSize: 10
},
forData: [
{label: '发起人/股东', prop: 'inReason', slot: true},
{label: '发起人/股东', prop: 'projectName', minWidth: '230', slot: true},
{label: '持股比例', prop: 'inDate'},
{label: '认缴出资(万)', prop: 'department'},
{label: '实缴出资额', prop: 'department'},
......@@ -56,28 +56,38 @@ export default {
//列表
tableLoading:false,
tableData:[],
pageIndex:1,
pageSize:10,
tableDataTotal:0,
}
},
created() {
this.handleData()
this.handleQuery()
},
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'}
] //测试
this.handleQuery()
},
handleQuery(params) {
console.log(params)
handleQuery() {
console.log('索引:',this.activeName)
this.tableLoading = true
getList(this.queryParams).then((res) => {
this.tableLoading = false
this.tableData = [
{
projectId: '1',
tag: '在业',
projectName:'滨州医学院口腔医学大楼铝合金门窗供货及安装',
use:'城镇住宅用地',
type:'房地产业',
way:'挂牌出让',
state:'重庆',
money:'11234万元',
scale:'222平米',
unit:'江苏省住房和城乡建设厅',
date:'2015-08-06',
}
]
this.tableDataTotal = 100
})
}
}
}
......
......@@ -10,6 +10,7 @@
/>
<tables
:indexFixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
......@@ -18,22 +19,18 @@
@handle-current-change="handleCurrentChange"
>
<template slot="gqzb">
<div class="tab-header">股权占比 <el-popover
placement="top-start"
width="280"
trigger="hover">
<div>
<div class="tab-header">股权占比 <el-popover placement="top-start" width="280" trigger="hover">
<div style="font-size: 12px;">
控股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">
<router-link to="" tag="a" class="a-link">{{scope.row.inReason}}</router-link>
<template slot="projectName" slot-scope="scope">
<router-link to="" tag="a" class="a-link">{{scope.row.projectName}}</router-link>
<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>
......@@ -42,6 +39,7 @@
<script>
import mixin from '../mixins/mixin'
import {getList, getOption} from '@/api/detail/party-a/overview'
export default {
name: 'Overseas',
props: ['companyId'],
......@@ -49,12 +47,12 @@ export default {
data() {
return {
queryParams: {
cid: 6034,
companyId: this.companyId,
pageNum: 1,
pageSize: 10
},
forData: [
{label: '被投资企业名称', prop: 'inReason', slot: true},
{label: '被投资企业名称', prop: 'projectName', minWidth: '180', slot: true},
{label: '法定代表人', prop: 'inDate'},
{label: '注册资本(万元)', prop: 'department'},
{label: '成立日期', prop: 'department'},
......@@ -62,45 +60,58 @@ export default {
{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' }
]
}
{ type: 1, fieldName: 'zbgg', value: '', placeholder: '招标公告', options: [] },
{ type: 1, fieldName: 'gqzb', value: '', placeholder: '股权占比', options: [] }
],
//列表
tableLoading:false,
tableData:[],
pageIndex:1,
pageSize:10,
tableDataTotal:0,
}
},
created() {
this.handleData()
this.handleOption()
this.handleQuery()
},
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'}
] //测试
handleOption(){
getOption().then((res) => {
this.setFormData('zbgg', [
{ name: '类别1', value: '1' },
{ name: '类别2', value: '2' },
{ name: '类别3', value: '3' },
{ name: '类别4', value: '4' }
])
this.setFormData('gqzb', [
{ name: '类别1', value: '1' },
{ name: '类别2', value: '2' },
{ name: '类别3', value: '3' },
{ name: '类别4', value: '4' }
])
})
},
handleQuery(params) {
console.log(params)
this.tableLoading = true
let param = params?params:this.queryParams
getList(param).then((res) => {
this.tableLoading = false
this.tableData = [
{
projectId: '1',
tag: '在业',
projectName:'滨州医学院口腔医学大楼铝合金门窗供货及安装',
use:'城镇住宅用地',
type:'房地产业',
way:'挂牌出让',
state:'重庆',
money:'11234万元',
scale:'222平米',
unit:'江苏省住房和城乡建设厅',
date:'2015-08-06',
}
]
this.tableDataTotal = 100
})
}
}
}
......
......@@ -32,11 +32,17 @@ export default {
mixins: [mixin],
components: {
},
props: {
companyId: {
type: Number,
default: 0
}
},
data() {
return {
queryParams: {
cid: 6034,
cid: 382724726,
pageNum: 1,
pageSize: 10
},
......@@ -49,7 +55,7 @@ export default {
{label: '做出决定机关(移除)', prop: 'outDepartment', width: '264'}
],
formData: [
{ type: 1, fieldName: 'years', value: '', placeholder: '列入时间', options: []}
{ type: 4, fieldName: 'years', value: '', placeholder: '列入时间', options: []}
],
//列表
tableLoading:false,
......@@ -61,6 +67,7 @@ export default {
},
created() {
this.handleQuery()
this.years()
},
computed: {
......@@ -68,10 +75,26 @@ export default {
methods: {
handleQuery(params) {
let data = params ? params : this.queryParams
this.tableLoading = true
abnormalPage(data).then(res => {
this.tableData = res.rows
this.tableDataTotal = res.total
this.tableLoading = false
})
},
years(){
abnormalYears({cid: this.queryParams.cid}).then(res => {
let data = res.data
if(data.length > 0){
for (var i=0;i<data.length;i++){
this.formData[0].options.push({
name: data[i].year + '(' + data[i].count + ')',
value: data[i].year,
})
}
}
})
}
}
}
</script>
......
......@@ -22,85 +22,111 @@
</template>
<script>
import {
noticesPage,
noticesType,
noticesRole,
noticesCaseReason
} from '@/api/detail/party-a/riskInformation'
import mixin from '../mixins/mixin'
export default {
name: 'CourtNotice',
mixins: [mixin],
components: {
},
props: {
companyId: {
type: Number,
default: 0
}
},
data() {
return {
queryParams: {
cid: 6034,
cid: 20734,
pageNum: 1,
pageSize: 10
},
forData: [
{label: '案由', prop: 'enterpriseName'},
{label: '公告时间', prop: 'level', width: '95'},
{label: '当事人', prop: 'capital', width: '240'},
{label: '案号', prop: 'cgrdm', width: '210'},
{label: '公告类型', prop: 'cgrssqy', width: '210'},
{label: '公告法院', prop: 'dataId', width: '280'}
{label: '案由', prop: 'caseReason'},
{label: '公告时间', prop: 'date', width: '95'},
{label: '当事人', prop: 'people', width: '240'},
{label: '案号', prop: 'objId', width: '210'},
{label: '公告类型', prop: 'type', width: '210'},
{label: '公告法院', prop: 'court', width: '280'}
],
formData: [
{ type: 1, fieldName: 'penalizeReasonType', value: '', placeholder: '公告类型',
options: [
{ name: '处罚类别1', value: '1' },
{ name: '处罚类别2', value: '2' },
{ name: '处罚类别3', value: '3' },
{ name: '处罚类别4', value: '4' }
]
},
{ type: 1, fieldName: 'penalizeReasonType', value: '', placeholder: '案由',
options: [
{ name: '处罚类别1', value: '1' },
{ name: '处罚类别2', value: '2' },
{ name: '处罚类别3', value: '3' },
{ name: '处罚类别4', value: '4' }
]
},
{ type: 1, fieldName: 'penalizeReasonType', value: '', placeholder: '身份',
options: [
{ name: '处罚类别1', value: '1' },
{ name: '处罚类别2', value: '2' },
{ name: '处罚类别3', value: '3' },
{ name: '处罚类别4', value: '4' }
]
},
{ type: 2, fieldName: 'time', value: '', placeholder: '',startTime: 'dateFrom',endTime: 'dateTo', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词', options: []},
{ type: 1, fieldName: 'type', value: '', placeholder: '公告类型', options: []},
{ type: 1, fieldName: 'caseReason', value: '', placeholder: '案由', options: []},
{ type: 1, fieldName: 'role', value: '', placeholder: '身份', options: []},
{ type: 2, fieldName: 'time', value: '', placeholder: '',startTime: 'dateFrom',endTime: 'dateTo'},
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词'},
],
//列表
tableLoading:false,
tableData:[],
pageIndex:1,
pageSize:10,
tableDataTotal:0,
}
},
created() {
this.dataRegion()
this.handleQuery()
this.noticesTypes()
this.noticesRoles()
this.noticesCaseReasons()
},
computed: {
},
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) {
console.log(params)
}
let data = params ? params : this.queryParams
this.tableLoading = true
noticesPage(data).then(res => {
this.tableData = res.rows
this.tableDataTotal = res.total
this.tableLoading = false
})
},
noticesTypes(){
noticesType({cid: this.queryParams.cid}).then(res => {
let data = res.data
if(data.length > 0){
for (var i=0;i<data.length;i++){
this.formData[0].options.push({
name: data[i].type + '(' + data[i].count + ')',
value: data[i].type,
})
}
}
})
},
noticesRoles(){
noticesRole({cid: this.queryParams.cid}).then(res => {
let data = res.data
if(data.length > 0){
for (var i=0;i<data.length;i++){
this.formData[1].options.push({
name: data[i].role + '(' + data[i].count + ')',
value: data[i].role,
})
}
}
})
},
noticesCaseReasons(){
noticesCaseReason({cid: this.queryParams.cid}).then(res => {
let data = res.data
if(data.length > 0){
for (var i=0;i<data.length;i++){
this.formData[2].options.push({
name: data[i].caseReason + '(' + data[i].count + ')',
value: data[i].caseReason,
})
}
}
})
},
}
}
......
......@@ -10,6 +10,7 @@
/>
<tables
:index-fixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
......@@ -22,22 +23,31 @@
</template>
<script>
import {
executedPage
} from '@/api/detail/party-a/riskInformation'
import mixin from '../mixins/mixin'
export default {
name: 'Dishonesty',
mixins: [mixin],
components: {
},
props: {
companyId: {
type: Number,
default: 0
}
},
data() {
return {
queryParams: {
cid: 6034,
cid: 5504335,
pageNum: 1,
pageSize: 10
},
forData: [
{label: '失信被执行人行为具体情形', prop: 'executionDesc', width: '508'},
{label: '失信被执行人行为具体情形', prop: 'executionDesc', width: '508', fixed: true},
{label: '立案日期', prop: 'date', width: '95'},
{label: '履行情况', prop: 'executionStatus', width: '120'},
{label: '立案文号', prop: 'caseNumber', width: '210'},
......@@ -50,31 +60,24 @@ export default {
//列表
tableLoading:false,
tableData:[],
pageIndex:1,
pageSize:10,
tableDataTotal:0,
}
},
created() {
this.dataRegion()
this.handleQuery()
},
computed: {
},
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) {
console.log(params)
let data = params ? params : this.queryParams
this.tableLoading = true
executedPage(data).then(res => {
this.tableData = res.rows
this.tableDataTotal = res.total
this.tableLoading = false
})
}
}
}
......
......@@ -22,17 +22,26 @@
</template>
<script>
import {
executedPersonsPage
} from '@/api/detail/party-a/riskInformation'
import mixin from '../mixins/mixin'
export default {
name: 'IfThePerson',
mixins: [mixin],
components: {
},
props: {
companyId: {
type: Number,
default: 0
}
},
data() {
return {
queryParams: {
cid: 6034,
cid: 194738907,
pageNum: 1,
pageSize: 10
},
......@@ -48,34 +57,25 @@ export default {
//列表
tableLoading:false,
tableData:[],
pageIndex:1,
pageSize:10,
tableDataTotal:0,
}
},
created() {
this.dataRegion()
this.handleQuery()
},
computed: {
},
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) {
console.log(params)
let data = params ? params : this.queryParams
this.tableLoading = true
executedPersonsPage(data).then(res => {
this.tableData = res.rows
this.tableDataTotal = res.total
this.tableLoading = false
})
}
}
}
</script>
......
......@@ -16,24 +16,41 @@
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
/>
>
<template slot="relatedCompanies" slot-scope="scope">
<div v-for="item in scope.row.relatedCompanies">
<span>{{ item.clean_role }}</span>{{ item.name }}
</div>
</template>
</tables>
</div>
</template>
<script>
import {
lawsuitsPage,
lawsuitsCauseAction,
lawsuitsRole
} from '@/api/detail/party-a/riskInformation'
import mixin from '../mixins/mixin'
export default {
name: 'Judgment',
mixins: [mixin],
components: {
},
props: {
companyId: {
type: Number,
default: 0
}
},
data() {
return {
queryParams: {
cid: 6034,
cid: 5504335,
pageNum: 1,
pageSize: 10
},
......@@ -41,59 +58,69 @@ export default {
{label: '案由', prop: 'causeAction', width: '240'},
{label: '执行案号', prop: 'causeNo', width: '210'},
{label: '身份', prop: 'role', width: '120'},
{label: '当事人', prop: 'relatedCompanies', width: '240'},
{label: '当事人', prop: 'relatedCompanies', width: '240', slot: true},
{label: '案件金额(元)', prop: 'subAmount', width: '140'},
{label: '判决结果', prop: 'judgeresult', width: '508'},
{label: '判决日期', prop: 'date', width: '95'},
],
formData: [
{ type: 1, fieldName: 'causeAction', value: '', placeholder: '案由',
options: [
{ name: '处罚类别1', value: '1' },
{ name: '处罚类别2', value: '2' },
{ name: '处罚类别3', value: '3' },
{ name: '处罚类别4', value: '4' }
]
},
{ type: 1, fieldName: 'role', value: '', placeholder: '身份',
options: [
{ name: '处罚类别1', value: '1' },
{ name: '处罚类别2', value: '2' },
{ name: '处罚类别3', value: '3' },
{ name: '处罚类别4', value: '4' }
]
},
{ type: 2, fieldName: 'tiem', value: '', placeholder: '',startTime: 'dateFrom',endTime: 'dateTo', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '搜索关键字', options: []}
{ type: 1, fieldName: 'causeAction', value: '', placeholder: '案由', options: []},
{ type: 1, fieldName: 'role', value: '', placeholder: '身份', options: []},
{ type: 2, fieldName: 'time', value: '', placeholder: '',startTime: 'dateFrom',endTime: 'dateTo'},
{ type: 3, fieldName: 'keys', value: '', placeholder: '搜索关键字'}
],
//列表
tableLoading:false,
tableData:[],
pageIndex:1,
pageSize:10,
tableDataTotal:0,
}
},
created() {
this.dataRegion()
this.handleQuery()
this.lawsuitsCauseActions()
this.lawsuitsRoles()
},
computed: {
},
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) {
console.log(params)
let data = params ? params : this.queryParams
this.tableLoading = true
lawsuitsPage(data).then(res => {
this.tableData = res.rows
for (var i=0;i<this.tableData.length;i++){
this.tableData[i].relatedCompanies = JSON.parse(this.tableData[i].relatedCompanies)
}
this.tableDataTotal = res.total
this.tableLoading = false
})
},
lawsuitsCauseActions(){
lawsuitsCauseAction({cid: this.queryParams.cid}).then(res => {
let data = res.data
if(data.length > 0){
for (var i=0;i<data.length;i++){
this.formData[0].options.push({
name: data[i].causeAction + '(' + data[i].num + ')',
value: data[i].causeAction,
})
}
}
})
},
lawsuitsRoles(){
lawsuitsRole({cid: this.queryParams.cid}).then(res => {
let data = res.data
if(data.length > 0){
for (var i=0;i<data.length;i++){
this.formData[1].options.push({
name: data[i].role + '(' + data[i].num + ')',
value: data[i].role,
})
}
}
})
}
}
}
......
......@@ -10,63 +10,67 @@
/>
<tables
:index-fixed="true"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
/>
>
<template slot="relatedCompanies" slot-scope="scope">
<div v-for="item in scope.row.relatedCompanies">
<span>{{ item.role }}</span>{{ item.name }}
</div>
</template>
</tables>
</div>
</template>
<script>
import {
kaitingPage,
kaitingCauseAction,
kaitingPureRole
} from '@/api/detail/party-a/riskInformation'
import mixin from '../mixins/mixin'
export default {
name: 'OpenacourtsessionNotice',
mixins: [mixin],
components: {
},
props: {
companyId: {
type: Number,
default: 0
}
},
data() {
return {
queryParams: {
cid: 6034,
cid: 20734,
pageNum: 1,
pageSize: 10
},
forData: [
{label: '案由', prop: 'causeAction', width: '240'},
{label: '案由', prop: 'causeAction', width: '240', fixed: true},
{label: '开庭日期', prop: 'hearingDate', width: '95'},
{label: '当事人', prop: 'relatedCompanies', width: '428'},
{label: '当事人', prop: 'relatedCompanies', width: '428', slot: true},
{label: '身份', prop: 'pureRole', width: '120'},
{label: '公告内容', prop: 'cgrssqy', width: '508'},
{label: '公告内容', prop: '', width: '508'},
{label: '案号', prop: 'caseNo', width: '210'},
{label: '法院', prop: 'dataId', width: '280'},
{label: '法庭', prop: 'dataId', width: '180'},
{label: '承办部门', prop: 'dataId', width: '280'},
{label: '审判长/主判人', prop: 'dataId', width: '106'}
{label: '法院', prop: 'court', width: '280'},
{label: '法庭', prop: '', width: '180'},
{label: '承办部门', prop: '', width: '280'},
{label: '审判长/主判人', prop: '', width: '106'}
],
formData: [
{ type: 1, fieldName: 'causeAction', value: '', placeholder: '案由',
options: [
{ name: '处罚类别1', value: '1' },
{ name: '处罚类别2', value: '2' },
{ name: '处罚类别3', value: '3' },
{ name: '处罚类别4', value: '4' }
]
},
{ type: 1, fieldName: 'pureRole', value: '', placeholder: '身份',
options: [
{ name: '处罚类别1', value: '1' },
{ name: '处罚类别2', value: '2' },
{ name: '处罚类别3', value: '3' },
{ name: '处罚类别4', value: '4' }
]
},
{ type: 2, fieldName: 'time', value: '', placeholder: '',startTime: 'dateFrom',endTime: 'dateTo', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词', options: []},
{ type: 1, fieldName: 'causeAction', value: '', placeholder: '案由', options: []},
{ type: 1, fieldName: 'pureRole', value: '', placeholder: '身份', options: []},
{ type: 2, fieldName: 'time', value: '', placeholder: '',startTime: 'dateFrom',endTime: 'dateTo'},
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词'},
],
//列表
tableLoading:false,
......@@ -77,7 +81,9 @@ export default {
}
},
created() {
this.dataRegion()
this.handleQuery()
this.kaitingCauseActions()
this.kaitingPureRoles()
},
computed: {
......@@ -87,20 +93,44 @@ export default {
let Id = '111'
this.$router.push({ path: '/project/projectList/detail', query: Id });
},
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) {
console.log(params)
}
let data = params ? params : this.queryParams
this.tableLoading = true
kaitingPage(data).then(res => {
this.tableData = res.rows
for (var i=0;i<this.tableData.length;i++){
this.tableData[i].relatedCompanies = JSON.parse(this.tableData[i].relatedCompanies)
}
this.tableDataTotal = res.total
this.tableLoading = false
})
},
kaitingCauseActions(){
kaitingCauseAction({cid: this.queryParams.cid}).then(res => {
let data = res.data
if(data.length > 0){
for (var i=0;i<data.length;i++){
this.formData[0].options.push({
name: data[i].causeAction + '(' + data[i].count + ')',
value: data[i].causeAction,
})
}
}
})
},
kaitingPureRoles(){
kaitingPureRole({cid: this.queryParams.cid}).then(res => {
let data = res.data
if(data.length > 0){
for (var i=0;i<data.length;i++){
this.formData[1].options.push({
name: data[i].pureRole + '(' + data[i].count + ')',
value: data[i].pureRole,
})
}
}
})
},
}
}
</script>
......
......@@ -40,11 +40,17 @@ export default {
mixins: [mixin],
components: {
},
props: {
companyId: {
type: Number,
default: 0
}
},
data() {
return {
queryParams: {
cid: 382724726,
cid: this.companyId,
pageNum: 1,
pageSize: 10
},
......@@ -53,9 +59,9 @@ export default {
{label: '决定日期', prop: 'punishBegin', width: '95'},
{label: '处罚结果', prop: 'punishResult', width: '264'},
{label: '处罚文书号', prop: 'fileNum', width: '200'},
{label: '相关人员', prop: 'cgrdm', width: '88'},
{label: '相关人员', prop: '', width: '88'},
{label: '处罚机关', prop: 'office', width: '264'},
{label: '处罚结束日期', prop: 'dataId', width: '100'},
{label: '处罚结束日期', prop: '', width: '100'},
],
formData: [
{ type: 1, fieldName: 'penalizeReasonType', value: '', placeholder: '处罚类别', options: []},
......@@ -63,42 +69,41 @@ export default {
],
//列表
tableLoading:false,
tableData:[
{
punishReason:'根据成都市住房和城乡建设局《关于持续开展建设工地扬尘治理专项攻坚行动的通知》(成住建发(2021]178号),对你单位参建的项目住宅、商业及配套设施(2020-510107-47-03-506368) (金茂府三期)(安监备案编号:WH-CJ-AJ-2021-001)监督检查中发现未湿法作业(现场存在露天切割石材,未采取降尘防尘措施)。)的违规行为,予以记录并扣分,预扣减施工企业现场信用信息得分0.05分,预扣减监理企业现场信用信息得分...预扣减施工企业现场信用信息得分0.05分,预扣减监理企业现场信用信息得分',
punishBegin:'2015-08-06',
punishResult:'列入全省3-6月份拖欠农民工工资预警项目,现予以限期整改通报。',
fileNum:'铜城建罚决字【2021)】18-5号',
cgrdm:'测试1',
office:'江苏省住房和城乡建设厅',
dataId:'2015-08-06',
}
],
tableDataTotal:200,
tableData:[],
tableDataTotal:0,
showList:[],
}
},
created() {
this.getList()
this.handleQuery()
this.penalizeReasonTypeData()
},
computed: {
},
methods: {
getList() {
penalizePage(this.queryParams).then((res) => {
console.log(res.data.rows)
handleQuery(params) {
let data = params ? params : this.queryParams
this.tableLoading = true
penalizePage(data).then((res) => {
this.tableData = res.rows
this.tableDataTotal = res.total
this.tableLoading = false
})
},
penalizeReasonTypeData(){
penalizeReasonType({cid:this.queryParams.cid}).then((res) => {
console.log(res)
let data = res.data
if(data.length > 0){
for (var i=0;i<data.length;i++){
this.formData[0].options.push({
name: data[i].punishType + '(' + data[i].count + ')',
value: data[i].punishTypeId,
})
}
}
})
},
handleQuery(params) {
console.log(params)
},
changeShowAll(row, column) {
this.showList.push({
row: row,
......
......@@ -16,7 +16,11 @@
:tableDataTotal="tableDataTotal"
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
/>
>
<template slot="projectName" slot-scope="data">
<router-link :to="''+ data.row.id" style="color: #0081FF">{{ data.row.projectName }}</router-link>
</template>
</tables>
</div>
</template>
......@@ -42,19 +46,19 @@ export default {
pageSize: 10
},
forData: [
{label: '项目名称', prop: 'punishReason', width: '508'},
{label: '土地用途', prop: 'punishBegin', width: '120'},
{label: '行业分类', prop: 'punishResult', width: '120'},
{label: '供地方式', prop: 'fileNum', width: '120'},
{label: '土地坐落', prop: 'cgrdm', width: '120'},
{label: '成交金额(万元)', prop: 'office', width: '130'},
{label: '总面积(㎡)', prop: 'dataId', width: '120'},
{label: '批准单位', prop: 'dataId', width: '120'},
{label: '签订日期', prop: 'dataId', width: '120'}
{label: '项目名称', prop: 'projectName', width: '508', slot: true},
{label: '土地用途', prop: 'landUse', width: '120'},
{label: '行业分类', prop: 'industry', width: '120'},
{label: '供地方式', prop: 'supplyLandWay', width: '120'},
{label: '土地坐落', prop: 'landAddr', width: '150'},
{label: '成交金额(万元)', prop: 'transactionPrice', width: '130'},
{label: '总面积(㎡)', prop: 'acreage', width: '120'},
{label: '批准单位', prop: 'authority', width: '120'},
{label: '签订日期', prop: 'contractSignTime', width: '120'}
],
formData: [
{ type: 4, fieldName: 'landUse', value: [], placeholder: '土地用途', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词', options: []},
{ type: 4, fieldName: 'landUse', value: '', placeholder: '土地用途', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词'},
],
//列表
tableLoading:false,
......@@ -63,29 +67,34 @@ export default {
}
},
created() {
this.getList()
this.handleQuery()
this.getlandUse()
},
computed: {
},
methods: {
getList() {
handleQuery(params) {
let data = params ? params : this.queryParams
this.tableLoading = true
landTransactionPage(this.queryParams).then(res=>{
this.tableData = res.data
this.tableDataTotal = res.data.total
landTransactionPage(data).then(res=>{
this.tableData = res.rows
this.tableDataTotal = res.total
this.tableLoading = false
})
},
handleQuery(params) {
console.log(params)
},
//土地用途
getlandUse(){
landUse({cid: this.queryParams.cid}).then(res=>{
console.log(res)
// this.formData[0].options = res.data
let data = res.data
if(data.length > 0){
for (var i=0;i<data.length;i++){
this.formData[0].options.push({
name: data[i].landUse + '(' + data[i].count + ')',
value: data[i].landUse,
})
}
}
})
}
}
......
......@@ -7,6 +7,7 @@
</div>
<div class="table-item">
<el-table
:tableLoading="tableLoading"
:data="getValues"
:show-header="false"
border
......@@ -36,8 +37,13 @@ export default {
return {
params: {
provinceId: 500000,
cityId: 500100
cityId: 500100
},
labels: [
'指标',
'财政',
'债务',
],
tableData: [],
headers: [
{
......@@ -193,10 +199,10 @@ export default {
label: '债务率-宽口径',
},
],
tableLoading: true
}
},
created() {
console.log(11)
this.dataRegion()
},
computed: {
......@@ -205,7 +211,7 @@ export default {
},
getValues() {
return this.headers.map(item => {
return this.tableData.reduce((pre, cur, index) => Object.assign(pre, {['value' + index]: cur[item.prop]}), {'title': item.label,});
return this.tableData.reduce((pre, cur, index) => Object.assign(pre, {['value' + index]: cur[item.prop]}), {'title': item.label,})
});
}
},
......@@ -214,6 +220,7 @@ export default {
dataRegion() {
regionalEconomy(this.params).then(res => {
this.tableData = res.data
this.tableLoading = false
})
},
}
......@@ -224,9 +231,36 @@ export default {
background: #ffffff;
border-radius: 4px;
padding: 16px;
::v-deep .el-table tr{
background: #F9FCFF;
}
::v-deep .table-item{
.el-table{
.el-table__body-wrapper{
tr{
&:first-child{
background: #F0F3FA;
div{
color: rgba(35,35,35,0.8);
}
}
&:nth-child(2n){
background: #FFFFFF;
}
}
}
}
}
.query-box{
margin: 10px 0 20px;
}
}
::v-deep .el-table__body-wrapper tr:nth-child(2) td:first-child,
::v-deep .el-table__body-wrapper tr:nth-child(16) td:first-child,
::v-deep .el-table__body-wrapper tr:nth-child(28) td:first-child{
font-weight: bold;
color: #232323;
}
</style>
......@@ -7,7 +7,86 @@
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
>
<template slot="slot">
<div class="search-box">
<span style="cursor: pointer;" @click="handleSearch">筛选<i class="el-icon-caret-bottom" style="color:rgba(35,35,35,0.4);margin-left: 5px"></i></span>
<div v-show="searchState" ref="showContent" class="search-main">
<div class="item">
<span class="wrap_label">行政等级</span>
<div class="item_ckquery">
<span :class="{color_text:xzdjCalss == ''}" @click="changeXZDJ('')">全部</span>
<template v-for="(item,index) in xzdj">
<span :class="{color_text:index+1 === xzdjCalss}" @click="changeXZDJ(index+1)">{{item.name}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">城投业务类型</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in typeList">
<span>{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">主体评级</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in ztpj">
<span>{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">股东背景</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in gdbj">
<span>{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">股权关系</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in gqgx">
<span>{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">平台重要性</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in pt">
<span>{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label" style="width: 78px;">开发区类别</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in lfqType">
<span>{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">更多筛选</span>
<div class="item_ckquery">
<span :class="addresslength>0?'select-active':''">注册地区{{addresslength>0?(addresslength+'项'):''}}</span>
<el-cascader ref="address" class="cascader-region" popper-class='cascader-region-addd'
@input="addressListbtn" v-model="addressType" :options="addressList" :props="props" collapse-tags></el-cascader>
</div>
</div>
</div>
</div>
</template>
</head-form>
<tables
:tableLoading="tableLoading"
......@@ -73,16 +152,39 @@ export default {
{label: '所属开发区', prop: 'developmentZone', width: '120'}
],
formData: [
{ type: 1, fieldName: 'penalizeReasonType', value: '', placeholder: '筛选',
options: []
},
{ type: 0, fieldName: 'penalizeReasonType', value: '', placeholder: '筛选', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词', options: []},
],
xzdj:[
{
name:'省级',
key:1,
},
{
name:'地级市',
key:2,
},
{
name:'区县级',
key:3,
}
],
selected:[],
xzdjCalss:'',
typeList:['土地开发整理','基础设施建设','棚改保障房建设','公用事业','文化旅游','交通建设运营','产投平台'],
ztpj:['AAA','AA+','AA','A+','A','A-','BBB+','其他'],
gdbj:['政府','财政','国资委','其他'],
gqgx:['直接控股','间接控股'],
pt:['重要平台','主要平台','一般平台'],
lfqType:['国家级经开','国家级高新区','国家海关监管区域','国家级新区','国家边和区','其他国家级','省级新区','省级开发区'],
props: {
value: 'id',
multiple: true,
},
addressList: [],
addressType: [],
addresslength: 0,
searchState:false,
//列表
tableLoading:false,
tableData:[],
......@@ -148,6 +250,38 @@ export default {
}
this.addressList = str;
},
handleSearch(event){
// this.searchState=!this.searchState;
let dom = this.$refs.showContent;
if (!dom.contains(event.target)) {
this.searchState = !this.searchState;
document.removeEventListener('click', this.handleSearch);
}
},
changeXZDJ(index) {
this.xzdjCalss = index;
},
addressListbtn() {
let arr = this.$refs.address.getCheckedNodes();
let provinceCode = [],cityCode = [],countyCode = [];
for (var i in arr) {
if (arr[i].parent) {
if (!arr[i].parent.checked) {
arr[i].hasChildren && cityCode.push(arr[i].value);
!arr[i].hasChildren && countyCode.push(arr[i].value);
}
} else {
provinceCode.push(arr[i].value)
}
}
if (provinceCode.length > 0 || cityCode.length > 0 || countyCode.length > 0) {
this.addresslength = provinceCode.length + cityCode.length + countyCode.length;
} else {
this.addresslength = 0;
}
},
handleQuery(params){
this.tableLoading = true
let data = params ? params : this.queryParams
......@@ -168,5 +302,60 @@ export default {
.query-box{
margin: 10px 0 20px;
}
.search-box{
display: inline-block;
margin-right: 32px;
/*cursor: pointer;*/
color:#232323;
position: relative;
.search-main{
background: #ffffff;
box-shadow: 0px 4px 10px 0px rgba(0,0,0,0.1);
border-radius: 4px;
width: 880px;
height: 337px;
padding: 16px;
position: absolute;
top: 25px;
left: 0;
z-index: 2001;
.item{
margin-bottom: 5px;
display: flex;
/*align-items: center;*/
font-size: 14px;
.wrap_label{
color: rgba(35,35,35,0.8);
margin-right: 12px;
line-height: 30px;
}
.item_ckquery{
position: relative;
span{
color: #232323;
padding: 5px 12px;
display: inline-block;
cursor: pointer;
}
.color_text{
background: #F3F4F5;
border-radius: 4px;
color: #0081FF;
}
.select-active{
color: #0081FF;
}
}
.cascader-region {
position: absolute;
left: 0;
top: -6px;
opacity: 0;
line-height: 22px;
}
}
}
}
}
</style>
......@@ -50,8 +50,18 @@
<span class="common-title">跟进记录</span>
</div>
<div class="flex-box query-ability">
<div class="area">西南地区<i class="el-icon-caret-bottom"></i></div>
<div class="month">不限<i class="el-icon-caret-bottom"></i></div>
<div class="select-popper">
<div class="area">{{area}}<i class="sjx"></i></div>
<el-select v-model="area" class="select-multiple" placeholder="请选择">
<el-option v-for="(item,index) in areaList" :key="index" :label="item.name" :value="item.name"></el-option>
</el-select>
</div>
<div class="select-popper">
<div class="month">{{date}}<i class="sjx"></i></div>
<el-select v-model="date" class="select-multiple" placeholder="请选择">
<el-option v-for="(item,index) in dateList" :key="index" :label="item" :value="item"></el-option>
</el-select>
</div>
</div>
</div>
<div class="list">
......@@ -73,8 +83,18 @@
<span class="common-title">业绩排名</span>
</div>
<div class="flex-box query-ability">
<div class="area">西南地区<i class="el-icon-caret-bottom"></i></div>
<div class="month">不限<i class="el-icon-caret-bottom"></i></div>
<div class="select-popper">
<div class="area">{{area}}<i class="sjx"></i></div>
<el-select v-model="area" class="select-multiple" placeholder="请选择">
<el-option v-for="(item,index) in areaList" :key="index" :label="item.name" :value="item.name"></el-option>
</el-select>
</div>
<div class="select-popper">
<div class="month">{{date}}<i class="sjx"></i></div>
<el-select v-model="date" class="select-multiple" placeholder="请选择">
<el-option v-for="(item,index) in dateList" :key="index" :label="item" :value="item"></el-option>
</el-select>
</div>
</div>
</div>
<div class="main">
......@@ -103,9 +123,14 @@
</div>
<div class="flex-box query-ability">
<div class="tabs">
<div class="label" v-for="(item,index) in typeList" :class="typeIndex === index ? 'color':''" @click="handleClick(index)">{{item.name}}</div>
<!--<div class="label" v-for="(item,index) in typeList" :class="typeIndex === index ? 'color':''" @click="handleClick(index)">{{item.name}}</div>-->
</div>
<div class="select-popper">
<div class="area">{{area}}<i class="sjx"></i></div>
<el-select v-model="area" class="select-multiple" placeholder="请选择">
<el-option v-for="(item,index) in areaList" :key="index" :label="item.name" :value="item.name"></el-option>
</el-select>
</div>
<div class="area">西南地区<i class="el-icon-caret-bottom"></i></div>
</div>
</div>
<div>
......@@ -135,24 +160,42 @@
<div v-if="user === 2" class="trends">
<el-tabs v-model="activeName" @tab-click="handleClickTab">
<el-tab-pane label="甲方舆情" name="first">
<el-timeline>
<el-timeline-item
v-for="(item, index) in trendsList"
:key="index"
icon="el-icon-time">
{{item.main}}
</el-timeline-item>
</el-timeline>
<div class="main-box">
<el-timeline>
<el-timeline-item
v-for="(item, index) in trendsList"
:key="index"
icon="el-icon-time">
<div class="time">{{item.time}}<span class="company">{{item.name}}</span></div>
<div class="cont">{{item.main}}</div>
</el-timeline-item>
</el-timeline>
</div>
<!--<div class="check">全部甲方舆情 ></div>-->
</el-tab-pane>
<el-tab-pane label="监控动态" name="second">
<div class="main-box">
<el-timeline>
<el-timeline-item
v-for="(item, index) in trendsList"
:key="index"
icon="el-icon-time">
<div class="time">{{item.time}}<span class="company">{{item.name}}</span></div>
<div class="cont">{{item.main}}</div>
</el-timeline-item>
</el-timeline>
</div>
<!--<div class="check">全部监控动态 ></div>-->
</el-tab-pane>
<el-tab-pane label="监控动态" name="second">监控动态</el-tab-pane>
</el-tabs>
</div>
</div>
</el-col>
<el-col :span="6">
<div class="content-right">
<div class="user">
<h3>刘毅<span>总经理</span></h3>
<div class="user" @click="handleChange">
<h3 v-if="user === 1">刘毅<span>总经理</span></h3>
<h3 v-if="user === 2">李婷婷<span>营销员</span></h3>
<p>您好,祝您工作顺利每一天</p>
</div>
<div class="search">
......@@ -160,8 +203,8 @@
<el-input placeholder="找客户/找项目/找甲方">
<i slot="prefix" class="el-icon-search"></i>
</el-input>
<span class="common-title" style="margin-bottom: 10px;">储备项目类</span>
<div class="list">
<span class="common-title">储备项目类</span>
<div class="list" style="margin-top: 8px;">
<div class="item">
<img src="@/assets/images/index/cb_icon1.png"/>
<p>EPC项目</p>
......@@ -190,8 +233,8 @@
</div>
</div>
</div>
<div class="zbgg">
<span class="common-title">标公告</span>
<div class="zbgg" v-if="user === 1">
<span class="common-title">标公告</span>
<div class="list">
<div class="item">
<h3>太原市万柏林区2023年兴华街道老旧小区改造项目</h3>
......@@ -230,6 +273,41 @@
</div>
</div>
</div>
<div v-if="user === 2" class="zbhxr">
<span class="common-title">竞争对手中标候选人公告</span>
<div class="list">
<div class="item">
<h3>太原市万柏林区2023年兴华街道老旧小区改造项目</h3>
<p>
<span>中标金额:4754.34</span>
</p>
</div>
<div class="item">
<h3>太原市万柏林区2023年兴华街道老旧小区改造项目</h3>
<p>
<span>中标金额:4754.34</span>
</p>
</div>
<div class="item">
<h3>太原市万柏林区2023年兴华街道老旧小区改造项目</h3>
<p>
<span>中标金额:4754.34</span>
</p>
</div>
<div class="item">
<h3>太原市万柏林区2023年兴华街道老旧小区改造项目</h3>
<p>
<span>中标金额:4754.34</span>
</p>
</div>
<div class="item">
<h3>太原市万柏林区2023年兴华街道老旧小区改造项目</h3>
<p>
<span>中标金额:4754.34</span>
</p>
</div>
</div>
</div>
</div>
</el-col>
</el-row>
......@@ -238,6 +316,7 @@
<script>
import * as echarts from 'echarts';
import "@/assets/styles/public.css";
export default {
name: "Index",
data() {
......@@ -254,7 +333,57 @@ export default {
],
typeIndex:0,
jyfxData:['1月','2月','3月','4月','5月','6月'],
jyfxData1:[103,256,132,186,210,95],
jyfxData1:[
{
dcjxm:'103',
dcjzje:'123',
cjxmje:'153',
cjxmzs:'113',
cbxmzs:'93',
cbxmzje:'193',
},
{
dcjxm:'256',
dcjzje:'223',
cjxmje:'113',
cjxmzs:'163',
cbxmzs:'193',
cbxmzje:'123',
},
{
dcjxm:'103',
dcjzje:'123',
cjxmje:'153',
cjxmzs:'113',
cbxmzs:'93',
cbxmzje:'193',
},
{
dcjxm:'256',
dcjzje:'223',
cjxmje:'113',
cjxmzs:'163',
cbxmzs:'193',
cbxmzje:'123',
},
{
dcjxm:'103',
dcjzje:'123',
cjxmje:'153',
cjxmzs:'113',
cbxmzs:'93',
cbxmzje:'193',
},
{
dcjxm:'256',
dcjzje:'223',
cjxmje:'113',
cjxmzs:'163',
cbxmzs:'193',
cbxmzje:'123',
},
],
gjjlData:[
{
title:'今天拜访了重庆交通局杨科长,洽谈比较愉快,预计下月有项目招标,希望能有机会合作。',
......@@ -351,7 +480,53 @@ export default {
name:'重庆轨道交通集团有限公司',
main:'发布招标公告 重庆轨道交通环线鹅公岩轨道专用桥增设防船撞设施项目,项目地区是重庆市-江北区,项目类型为工程建设。'
},
]
{
time:'2018-04-03 10:20',
name:'重庆轨道交通集团有限公司',
main:'发布招标公告 重庆轨道交通环线鹅公岩轨道专用桥增设防船撞设施项目,项目地区是重庆市-江北区,项目类型为工程建设。'
},
{
time:'2018-04-03 10:20',
name:'重庆轨道交通集团有限公司',
main:'发布招标公告 重庆轨道交通环线鹅公岩轨道专用桥增设防船撞设施项目,项目地区是重庆市-江北区,项目类型为工程建设。'
},
{
time:'2018-04-03 10:20',
name:'重庆轨道交通集团有限公司',
main:'发布招标公告 重庆轨道交通环线鹅公岩轨道专用桥增设防船撞设施项目,项目地区是重庆市-江北区,项目类型为工程建设。'
},
{
time:'2018-04-03 10:20',
name:'重庆轨道交通集团有限公司',
main:'发布招标公告 重庆轨道交通环线鹅公岩轨道专用桥增设防船撞设施项目,项目地区是重庆市-江北区,项目类型为工程建设。'
},
],
area:'西南地区',
areaList:[
{
name:'西南地区'
},
{
name:'华中地区'
},
{
name:'华南地区'
},
{
name:'华东地区'
},
{
name:'华北地区'
},
{
name:'东北地区'
},
{
name:'西北地区'
},
],
date:'不限',
dateList:['不限','今日','昨日','近三天','近七天']
};
},
created() {
......@@ -370,8 +545,18 @@ export default {
initChart() {
let myChart = echarts.init(document.getElementById("fx-echarts"))
let option ={
legend: {
x:'right',
padding:[0,120,0,0],
},
tooltip: {
show:false
trigger: 'axis',
axisPointer: {
type: 'line',
label: {
backgroundColor: '#FFFFFF'
}
}
},
xAxis: {
type: 'category',
......@@ -382,14 +567,21 @@ export default {
type: 'value',
},
grid: {
top:20,
top:35,
left:30,
right:10,
bottom:20,
},
// dcjxm:'256',
// dcjzje:'223',
// cjxmje:'113',
// cjxmzs:'163',
// cbxmzs:'193',
// cbxmzje:'123',
series: [
{
data: this.jyfxData1,
data: this.jyfxData1.map(item => item.dcjxm),
name:'待成交项目数',
type: 'line',
smooth: true,
emphasis: {
......@@ -398,7 +590,39 @@ export default {
},
//设置折线颜色和粗细
lineStyle: {
width: 1,
width: 2,
color: "#0CBC6D",
},
itemStyle:{
color: "#0CBC6D",
},
//设置面积区域为渐变效果
areaStyle: {
opacity:0.8,
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
{
offset: 0.2,
color: "#EFFAF6",
},
{
offset: 1,
color: "#0CBC6D",
},
]),
},
},
{
data: this.jyfxData1.map(item => item.dcjzje),
name:'待成交总金额',
type: 'line',
smooth: true,
emphasis: {
disabled: true,
focus: 'none'
},
//设置折线颜色和粗细
lineStyle: {
width: 2,
color: "#0081FF",
},
itemStyle:{
......@@ -406,7 +630,8 @@ export default {
},
//设置面积区域为渐变效果
areaStyle: {
color: echarts.graphic.LinearGradient(0, 1, 0, 0, [
opacity:0.8,
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
{
offset: 0.2,
color: "#DFEAFF",
......@@ -417,13 +642,149 @@ export default {
},
]),
},
}
},
{
data: this.jyfxData1.map(item => item.cjxmje),
name:'成交项目金额',
type: 'line',
smooth: true,
emphasis: {
disabled: true,
focus: 'none'
},
//设置折线颜色和粗细
lineStyle: {
width: 2,
color: "#8077F2",
},
itemStyle:{
color: "#8077F2",
},
//设置面积区域为渐变效果
areaStyle: {
opacity:0.8,
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
{
offset: 0.2,
color: "#ECE8FF",
},
{
offset: 1,
color: "#BCC0FF",
},
]),
},
},
{
data: this.jyfxData1.map(item => item.cjxmzs),
name:'成交项目总数',
type: 'line',
smooth: true,
emphasis: {
disabled: true,
focus: 'none'
},
//设置折线颜色和粗细
lineStyle: {
width: 2,
color: "#FA6C6C",
},
itemStyle:{
color: "#FA6C6C",
},
//设置面积区域为渐变效果
areaStyle: {
opacity:0.8,
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
{
offset: 0.2,
color: "#FDEAE8",
},
{
offset: 1,
color: "#FDB2AE",
},
]),
},
},
{
data: this.jyfxData1.map(item => item.cbxmzs),
name:'储备项目总数',
type: 'line',
smooth: true,
emphasis: {
disabled: true,
focus: 'none'
},
//设置折线颜色和粗细
lineStyle: {
width: 2,
color: "#FA936C",
},
itemStyle:{
color: "#FA936C",
},
//设置面积区域为渐变效果
areaStyle: {
opacity:0.8,
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
{
offset: 0.2,
color: "#FCE8E0",
},
{
offset: 1,
color: "#FBC4AF",
},
]),
},
},
{
data: this.jyfxData1.map(item => item.cbxmzje),
name:'储备项目总金额',
type: 'line',
smooth: true,
emphasis: {
disabled: true,
focus: 'none'
},
//设置折线颜色和粗细
lineStyle: {
width: 2,
color: "#FDD85E",
},
itemStyle:{
color: "#FDD85E",
},
//设置面积区域为渐变效果
areaStyle: {
opacity:0.8,
color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
{
offset: 0.2,
color: "#FCF8EF",
},
{
offset: 1,
color: "#FEEBAA",
},
]),
},
},
]
}
myChart.setOption(option);
},
initChart1(){
var rankPic = [
require('@/assets/images/index/1.png'),
require('@/assets/images/index/2.png'),
require('@/assets/images/index/3.png'),
require('@/assets/images/index/4.png'),
require('@/assets/images/index/5.png'),
]
let myChart = echarts.init(document.getElementById("pm-echarts"))
let option ={
legend: {
show: true,
......@@ -448,56 +809,63 @@ export default {
}
},
axisLabel: {
color: '#232323',
margin: 50,
// formatter必须,配合rich使用
margin: 80,
textStyle: {
align:'left',
align: 'left',
},
formatter: function (value,index) {
let idx=index+1;
return '{' + idx + '|} {s|' + value + '}'
},
rich: {
a1: {
backgroundColor: {image: this.rankIcons[0]},
width: this.rankIconsSize,
height: this.rankIconsSize,
align: "left",
// padding: [0, 0, 50, 100]
1: {
height: 24,
width: 24,
align: 'center',
backgroundColor: {
image: rankPic[0]
},
},
a2: {
backgroundColor: { image: this.rankIcons[1] },
width: this.rankIconsSize,
height: this.rankIconsSize,
align: "center",
2: {
height: 24,
width: 24,
align: 'center',
backgroundColor: {
image: rankPic[1]
}
},
a3: {
backgroundColor: { image: this.rankIcons[2] },
width: this.rankIconsSize,
height: this.rankIconsSize,
align: "center",
3: {
height: 24,
width: 24,
align: 'center',
backgroundColor: {
image: rankPic[2]
}
},
a4: {
backgroundColor: { image: this.rankIcons[3] },
width: this.rankIconsSize,
height: this.rankIconsSize,
align: "center",
4: {
height: 24,
width: 24,
align: 'center',
backgroundColor: {
image: rankPic[3]
}
},
a5: {
backgroundColor: { image: this.rankIcons[4] },
width: this.rankIconsSize,
height: this.rankIconsSize,
align: "center",
5: {
height: 24,
width: 24,
align: 'center',
backgroundColor: {
image: rankPic[4]
}
},
},
formatter: (params, index) => {
return [`{a${index + 1}|} ${params}`].join('\n')
},
}
},
},
xAxis: {
type: 'value',
},
grid: {
left: '22%',
left: '16%',
top: 20,
right: 20,
bottom: 60,
......@@ -545,6 +913,15 @@ export default {
},
handleClickTab(){
},
handleChange(){
this.user = this.user === 1 ? 2 : 1;
if(this.user === 1){
this.$nextTick(()=>{
this.initChart()
this.initChart1()
})
}
}
}
};
......@@ -585,6 +962,7 @@ export default {
margin-top: 14px;
margin-bottom: 14px;
border-right: 1px solid #EFEFEF;
cursor: pointer;
.left{
width: 48px;
height: 48px;
......@@ -625,6 +1003,16 @@ export default {
.item:last-child{
border-right: 0;
}
.item:hover{
.right{
.title{
color: #0081FF;
}
.number{
color: #0081FF;
}
}
}
.add{
padding-left: 0;
.yd{
......@@ -654,11 +1042,17 @@ export default {
margin-right: 4px;
}
}
.btn:hover{
background: #F6F9FC;
}
}
}
.content-wrap{
margin-bottom: 12px;
height: 460px;
.select-popper{
margin-right:0;
}
.record{
height: 460px;
background: #FFFFFF;
......@@ -749,23 +1143,54 @@ export default {
}
}
.area{
font-size: 14px;
color: #232323;
cursor: pointer;
i{
color:#A7A7A7;
.select-popper{
.area{
font-size: 14px;
color: #232323;
cursor: pointer;
i{
background: url("../assets/images/index/sjx.png");
background-size: 100% 100%;
width: 10px;
height: 6px;
display: inline-block;
margin-bottom: 2px;
margin-left: 4px;
}
}
.month{
font-size: 14px;
color: #232323;
margin-left: 16px;
cursor: pointer;
i{
background: url("../assets/images/index/sjx.png");
background-size: 100% 100%;
width: 10px;
height: 6px;
display: inline-block;
margin-bottom: 2px;
margin-left: 4px;
}
}
.color{
color: #0081FF;
i{
background: url("../assets/images/index/sjx2.png");
background-size: 100% 100%;
}
}
}
.month{
font-size: 14px;
color: #232323;
margin-left: 16px;
cursor: pointer;
i{
color:#A7A7A7;
.select-popper:hover{
.area,.month{
color: #0081FF;
i{
background: url("../assets/images/index/sjx1.png");
background-size: 100% 100%;
}
}
}
}
.content-db{
height: 263px;
......@@ -830,6 +1255,7 @@ export default {
background: #FFFFFF;
border-radius: 4px;
padding: 16px;
position: relative;
.tabs{
.label{
display: inline-block;
......@@ -855,13 +1281,34 @@ export default {
color: #FFFFFF;
}
}
.area{
font-size: 14px;
color: #232323;
margin-left: 16px;
cursor: pointer;
i{
color:#A7A7A7;
.select-popper{
position: absolute;
right: 0;
top: 27px;
z-index: 99;
.area{
font-size: 14px;
color: #232323;
margin-left: 16px;
cursor: pointer;
i{
background: url("../assets/images/index/sjx.png");
background-size: 100% 100%;
width: 10px;
height: 6px;
display: inline-block;
margin-bottom: 2px;
margin-left: 4px;
}
}
}
.select-popper:hover{
.area,.month{
color: #0081FF;
i{
background: url("../assets/images/index/sjx1.png");
background-size: 100% 100%;
}
}
}
}
......@@ -870,6 +1317,66 @@ export default {
border-radius: 4px;
padding: 16px;
height: 440px;
overflow: hidden;
position: relative;
::v-deep .el-tabs__header{
margin: 0 0 18px;
}
::v-deep .el-tabs__content{
overflow-y: auto;
height: 368px;
}
::v-deep .el-timeline{
.el-timeline-item{
padding-bottom: 18px;
}
.el-timeline-item__tail{
left: 7px;
border-left: 2px dotted rgba(0,129,255,0.5);
}
.el-timeline-item__node{
background-color:#ffffff;
.el-timeline-item__icon{
color:#0081FF;
font-size: 14px;
}
}
.el-timeline-item__node--normal{
left: 0px;
width: 16px;
height: 16px;
}
}
.time{
font-size: 14px;
color: rgba(35,35,35,0.8);
.company{
color: #0081FF;
margin-left: 16px;
}
}
.cont{
background: #F6F9FD;
border-radius: 6px;
padding: 16px;
margin-top: 8px;
font-size: 14px;
color: rgba(35,35,35,0.8);
margin-right: 16px;
}
.check{
height: 60px;
background: linear-gradient(360deg, #FFFFFF 0%, #FFFFFF 17%, rgba(255,255,255,0.6) 100%);
font-size: 16px;
color: #0CBC6D;
line-height: 60px;
text-align: center;
width: 100%;
position: absolute;
bottom: 46px;
cursor: pointer;
}
}
}
.content-right{
......@@ -915,8 +1422,8 @@ export default {
::v-deep .el-input{
height: 32px;
border-radius: 2px;
margin-bottom: 22px;
margin-top: 16px;
margin-bottom: 20px;
margin-top: 14px;
.el-input__inner{
height: 32px;
line-height: 32px;
......@@ -936,8 +1443,10 @@ export default {
justify-content: space-between;
.item{
margin: 0 auto;
width: 33.3%;
height: 94px;
text-align: center;
cursor: pointer;
img{
width: 40px;
height: 40px;
......@@ -948,6 +1457,9 @@ export default {
font-size: 12px;
}
}
.item:hover{
background: #F6F9FC;
}
}
}
.zbgg{
......@@ -986,6 +1498,42 @@ export default {
border-bottom: 0;
}
}
.zbhxr{
height: 382px;
background: #FFFFFF;
border-radius: 4px;
padding: 16px;
.list{
margin-top: 16px;
}
.item{
border-bottom: 1px solid #EEEEEE;
padding: 10px 0;
h3{
font-weight: 400;
color: rgba(35,35,35,0.8);
font-size: 14px;
padding-bottom: 8px;
margin: 0;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
p{
color: rgba(35,35,35,0.4);
font-size: 14px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
span{
margin-right: 15px;
}
}
}
.item:last-child{
border-bottom: 0;
}
}
}
}
</style>
......
<template>
<div class="login">
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
<h3 class="title"><img src="../assets/images/title_icon.png"/>欢迎登录系统</h3>
<el-form-item prop="username">
<el-input
v-model="loginForm.username"
type="text"
auto-complete="off"
placeholder="请输入登录账号"
>
<img class="img" slot="prefix" src="../assets/images/user.png"/>
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
v-model="loginForm.password"
type="password"
auto-complete="off"
placeholder="请输入账号密码"
@keyup.enter.native="handleLogin"
>
<img class="img" slot="prefix" src="../assets/images/password.png"/>
</el-input>
</el-form-item>
<el-form-item prop="code" v-if="captchaEnabled">
<el-input
v-model="loginForm.code"
auto-complete="off"
placeholder="请输入验证码"
style="width: 56%;float: left;"
@keyup.enter.native="handleLogin"
>
<img class="img" slot="prefix" src="../assets/images/validCode.png"/>
</el-input>
<div class="login-code">
<img :src="codeUrl" @click="getCode" class="login-code-img"/>
</div>
</el-form-item>
<el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 48px;">记住密码</el-checkbox>
<el-form-item style="width:100%;">
<el-button
:loading="loading"
size="medium"
type="primary"
style="width:100%;height: 48px;border-radius: 4px;font-size: 16px;"
@click.native.prevent="handleLogin"
>
<span v-if="!loading">登 录</span>
<span v-else>登 录 中...</span>
</el-button>
<div style="float: right;" v-if="register">
<router-link class="link-type" :to="'/register'">立即注册</router-link>
</div>
</el-form-item>
</el-form>
<div class="content">
<div class="left">
<img class="logo" src="../assets/images/logo1.png" />
<img class="img" src="../assets/images/login/img.png" />
</div>
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form">
<h3 class="title"><img src="../assets/images/title_icon.png"/>欢迎登录系统</h3>
<el-form-item prop="username">
<el-input
v-model="loginForm.username"
type="text"
auto-complete="off"
placeholder="请输入登录账号"
>
<img class="img" slot="prefix" src="../assets/images/user.png"/>
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
v-model="loginForm.password"
type="password"
auto-complete="off"
placeholder="请输入账号密码"
@keyup.enter.native="handleLogin"
>
<img class="img" slot="prefix" src="../assets/images/password.png"/>
</el-input>
</el-form-item>
<el-form-item prop="code" v-if="captchaEnabled">
<el-input
v-model="loginForm.code"
auto-complete="off"
placeholder="请输入验证码"
style="width: 56%;float: left;"
@keyup.enter.native="handleLogin"
>
<img class="img" slot="prefix" src="../assets/images/validCode.png"/>
</el-input>
<div class="login-code">
<img :src="codeUrl" @click="getCode" class="login-code-img"/>
</div>
</el-form-item>
<el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 48px;">记住密码</el-checkbox>
<el-form-item style="width:100%;">
<el-button
:loading="loading"
size="medium"
type="primary"
style="width:100%;height: 48px;border-radius: 4px;font-size: 16px;"
@click.native.prevent="handleLogin"
>
<span v-if="!loading">登 录</span>
<span v-else>登 录 中...</span>
</el-button>
<div style="float: right;" v-if="register">
<router-link class="link-type" :to="'/register'">立即注册</router-link>
</div>
</el-form-item>
</el-form>
</div>
</div>
</template>
......@@ -153,12 +159,32 @@ export default {
<style rel="stylesheet/scss" lang="scss">
.login {
display: flex;
/*display: flex;*/
justify-content: center;
align-items: center;
height: 100%;
background-image: url("../assets/images/login_bg.png");
background-size: cover;
overflow-y: hidden;
.content{
width: 1320px;
margin: 0 auto;
padding-top: 160px;
}
.left{
float: left;
width: 730px;
margin-right: 170px;
}
.logo{
width: 317px;
height: 69px;
margin-bottom: 58px;
}
.img{
width: 730px;
height: 624px;
}
}
.title {
padding: 46px 0 32px 48px;
......@@ -177,6 +203,8 @@ export default {
border-radius: 6px;
background: #ffffff;
width: 420px;
float: right;
margin-top: 70px;
/*padding: 25px 25px 5px 25px;*/
.el-form-item{
padding: 0 48px;
......
......@@ -7,7 +7,7 @@
>
<div class="poptitle">
<img src="@/assets/images/economies/icon.png">
<span>添加客户</span>
<span>添加项目</span>
</div>
<el-form class="popform j" :model="queryParam" :rules="rules" ref="ruleForm" label-width="130px">
<el-form-item label="项目名称:" class="row" prop="projectName">
......
<template>
<div class="uploadwin">
<div class="upload" v-if="addfile==false">
<div class="up_title">批量导入{{titletext}}</div>
<div class="up_box">
<el-upload :class="{'none':isUpload == true}"
class="upload-demo"
:action="action"
:multiple="false"
accept=".xls,.xlsx"
drag
ref="upload"
:auto-upload="false"
:file-list="fileList"
:on-change="handleFileListChange"
:headers="headers"
:on-success="onSuccess">
<img class="up_img" src="@/assets/images/project/upload.png">
<div class="up_text">点击选择或将文件(xls,xlsx)拖拽至此上传成员名录</div>
<div class="up_tip">导入的文件内容必须依照下载模板的要求填写</div>
<div class="up_tip">上传文件最大为2M,仅支持Excel表格文件(xls,xlsx)</div>
<div class="up_tip">导入已存在的客户将自动跳过</div>
</el-upload>
<div class="up_success" v-if="isUpload == true">
<img src="@/assets/images/project/success.png">上传成功
</div>
<div class="btn_download" v-if="isUpload == false" @click="downloadClick"><div class="img"></div>点击下载</div>
</div>
<div class="btns">
<div class="btn btn_primary btn_disabled h34" v-if="isUpload==false">确定导入</div>
<div class="btn btn_primary h34" @click="importConfirmClick" v-else>确定导入</div>
<div class="btn btn_default h34" @click="importCancel">取消</div>
</div>
</div>
<div class="success" v-if="addfile==true">
<div v-if="addsuccess==false">
<img class="img" src="@/assets/images/project/clock.png">
<div class="p1">查询客户中...</div>
<div class="p2">请耐心等待,过程大概30秒</div>
</div>
<div v-if="addsuccess == true">
<div class="p3">
<img src="@/assets/images/project/success.png">查询成功
</div>
<div class="p2">成功导入客户信息</div>
<div class="btns">
<div class="btn btn_primary h32" @click="getmsg">查看</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { getToken } from "@/utils/auth";
import "@/assets/styles/project.scss"
import {importData} from '@/api/custom/custom'
export default {
name: 'batchImport',
props:{
importtype:''
},
data(){
return{
isUpload:false,//有上传的文件
addfile:false,//已上传文件
addsuccess:false,//已成功加入数据
//批量导入
action:"",
fileList: [],
headers: {
Authorization: "Bearer " + getToken(),
},
downloadhref:'',//样例地址
titletext:'',
}
},
created(){
console.log(this.importtype )
if(this.importtype == 'project'){//项目管理
this.downloadhref = '/file/projectTemplate.xlsx'
this.titletext = '项目'
this.action = process.env.VUE_APP_BASE_API + '/business/info/upload'
}
if(this.importtype == 'custom'){//客户管理
this.downloadhref = '/file/Template.xlsx'
this.titletext = '客户'
this.action = process.env.VUE_APP_BASE_API + "/customer/importData"
}
},
methods:{
getmsg(){
this.$emit('getdatas')
},
handleFileListChange(file, fileList) {
if (fileList.length > 0) {
this.fileList = [fileList[fileList.length - 1]];
this.isUpload = true
}
},
onSuccess(res, file, fileList) {
if(res.code == 200 )
this.addsuccess = true
else
this.$message.error({message:res.msg,showClose:true})
},
downloadClick() {
let a = document.createElement("a");
a.setAttribute("href", this.downloadhref);
a.setAttribute("download", "批量导入模版.xlsx");
document.body.appendChild(a);
a.click();
},
// 批量导入
importConfirmClick() {
if (this.fileList.length > 0) {
this.$refs["upload"].submit();
this.addfile = true
} else {
this.$message("请先选择文件");
}
},
importCancel(){
this.addfile = false
this.isUpload = false
this.addsuccess = false
this.$emit('cancels')
},
}
}
</script>
<style scoped>
</style>
......@@ -39,7 +39,7 @@
</div>
</div>
</div>
<div class="recordlist">
<div class="recordlist" v-if="showtype=='gjdt'">
<div class="rec_detail" v-for="(item,index) in recordlist.rows">
<div class="rec_time">
......@@ -54,17 +54,39 @@
<div><strong>{{item.nickName}}</strong> <span v-if="item.visitMode">({{item.visitMode}})</span></div>
<div><span>{{item.content}}</span></div>
<div class="rec_text">
<span>拜访对象:{{item.name||'--'}}</span>
<span v-if="showtype == 'gjdt'">关联企业:{{item.companyName||'--'}}</span>
<span>职位:{{item.position||'--'}}</span>
<span>拜访时间:{{item.createTime && item.createTime.slice(0, 10)}}</span>
<span>下次拜访时间:{{item.nextVisitTime == null?'--': item.createTime.slice(0, 10)}}</span>
<span v-if="item.name">拜访对象:{{item.name||'--'}}</span>
<span v-if="showtype == 'gjdt' && companyName != ''">关联企业:{{item.companyName}}</span>
<span v-if="item.position">职位:{{item.position}}</span>
<span v-if="item.createTime">拜访时间:{{item.createTime.slice(0, 10)}}</span>
<span v-if="item.nextVisitTime">下次拜访时间:{{item.createTime.slice(0, 10)}}</span>
</div>
</div>
</div>
</div>
<div class="recordlist" v-if="showtype=='gjjl' && recordlist.total>0">
<div class="rec_detail" v-for="(item,index) in recordlist.rows">
<div class="rec_time">
<i class="el-icon-time"></i>
<div>{{item.creatTime}}</div>
<div class="operate">
<!--<img src="@/assets/images/edit.png">第一期不做编辑-->
<img @click="delRecord(item.id)" src="@/assets/images/delete.png">
</div>
</div>
<div class="rec_con">
<div><strong>{{item.nickName}}</strong> <span v-if="item.visitWay">({{item.visitWay}})</span></div>
<div><span>{{item.recordInfo}}</span></div>
<div class="rec_text">
<span v-if="item.visitPerson">拜访对象:{{item.visitPerson||'--'}}</span>
<span v-if="item.position">职位:{{item.position||'--'}}</span>
<span v-if="item.creatTime">拜访时间:{{item.creatTime}}</span>
<span v-if="item.nextVisitTime">下次拜访时间:{{item.nextVisitTime || '--'}}</span>
</div>
</div>
</div>
</div>
<div class="tables" v-if="recordlist.total>0">
<div class="tables" v-if="recordlist.total>pageSize">
<div class="bottems">
<el-pagination
background
......@@ -92,6 +114,7 @@
<script>
import "@/assets/styles/project.scss"
import {getFollowList,addFollowRecord,getUserList,delFollowRecord} from '@/api/custom/custom'
import {getGJJL,addGJJL,delGJJL} from '@/api/project/project'
import {getEnterprise,getDictType,} from '@/api/main'
export default {
props:{
......@@ -123,6 +146,7 @@
recordlist:[],//列表数据源
isdel:false,
delID:'',//删除记录的ID
projectId:parseInt(this.$route.query.id),//项目详情id
}
},
computed: {
......@@ -140,6 +164,10 @@
})
this.getGJDTlist()
}
//项目详情跟进记录
if(this.showtype == 'gjjl'){
this.getGJJL()
}
console.log(this.types)
},
methods:{
......@@ -156,6 +184,26 @@
}
})
}
if(this.types == 'gjjl'){
let param = {
businessId:this.projectId,
userId:this.$store.state.user.userId,
visitPerson:this.addParam.name,
position:this.addParam.position,
nextVisitTime: this.addParam.nextVisitTime,
recordInfo:this.addParam.content,
visitWay:this.addParam.visitMode,
}
addGJJL(param).then(result=>{
if(result.code == 200){
this.$message.success(result.msg)
this.handleCurrentChange(1)
this.isEdit = false
}else{
this.$message.error(result.msg)
}
})
}
},
//删除跟进动态
delRecord(id){
......@@ -172,6 +220,15 @@
}
})
}
if(this.types == 'gjjl') {
delGJJL(this.delID).then(result => {
if (result.code == 200) {
this.handleCurrentChange(1)
this.$message.success('删除成功')
this.isdel = false
}
})
}
},
//跟进动态列表
getGJDTlist(){
......@@ -184,15 +241,27 @@
this.recordlist.rows.forEach(item=>{
item.createTime = this.gettime(item.createTime)
item.nextVisitTime = this.gettime(item.nextVisitTime)
console.log(item.nextVisitTime )
})
})
},
getGJJL(){
let param = {
pageNum:this.pageNum,//页码
pageSize:this.pageSize,
businessId:this.projectId
}
getGJJL(param).then(result=>{
this.recordlist = result.code == 200?result:[]
})
},
handleCurrentChange(val){
this.pageNum = val
if(this.showtype == 'gjdt'){
this.getGJDTlist()
}
if(this.showtype == 'gjjl'){
this.getGJJL()
}
},
getEdit(){
this.isEdit = true;
......
<template>
<div>
<el-card class="box-card noborder">
<div class="cardtitles">跟进记录</div>
<div class="cardtitles">工作待办</div>
<div class="records">
<div class="writeIn">
<div class="default" v-if="isEdit == false" @click="getEdit">
......@@ -11,53 +11,52 @@
<div class="writting" v-if="isEdit == true">
<div class="wri_top">
<img src="@/assets/images/project/add_3.png">
<el-input placeholder="新建一条跟进记录,如:周五上午预约客户上门拜访"></el-input>
<el-input v-model="queryParam.task" placeholder="新建一条跟进记录,如:周五上午预约客户上门拜访"></el-input>
</div>
<div class="wr_bot">
<div class="times"><img src="@/assets/images/project/ico_4.png">
<el-date-picker
v-model="value"
v-model="queryParam.finishTime"
type="date"
placeholder="待办时间">
placeholder="完成时间">
</el-date-picker>
</div>
<el-input v-model="value" placeholder="拜访对象" style="width: 100px;">
<el-input v-model="queryParam.target" placeholder="拜访对象" style="width: 100px;">
<i slot="prefix" class="el-input__icon"><img src="@/assets/images/project/ico_2.png"></i>
</el-input>
<div class="btn btn_primary h32 wc" :class="{'btn_disabled':value == ''}">完成</div>
<div class="btn btn_primary h32 wc" @click="add" :disabled="queryParam.task == ''" :class="{'btn_disabled':queryParam.task == ''}">完成</div>
</div>
</div>
</div>
<div class="tasktitle"><strong>我的任务</strong><span>4条已逾期</span><!--<span class="on">4条已逾期</span>--></div>
<div class="tasklist">
<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="select" :class="{'on':status == 1}">
<div class="tasktitle"><strong>我的任务</strong><span @click="getYQ">4条已逾期</span><!--<span class="on">4条已逾期</span>--></div>
<div class="tasklist" v-for="(item,index) in datalist.rows">
<div class="task_name">{{item.task}}</div>
<div class="task_con"><span>发起时间:{{item.createTime}}</span><span v-if="item.target">关联客户:<font class="wordprimary">{{item.target}}</font></span><span v-if="item.finishTime">完成时间:{{item.finishTime}}</span></div>
<div class="select" :class="{'on':item.state == 2}">
<div class="select-popper">
<span class="color_text">
{{status == 0?"未完成":"已完成"}}
{{item.state == 2?"已完成":"未完成"}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select placeholder="请选择" v-model="status" class="select-multiple">
<el-select placeholder="请选择" v-model="item.state" class="select-multiple" @change="changes(item.id,$event)">
<el-option label="未完成" value="0"></el-option>
<el-option label="已完成" value="1"></el-option>
<el-option label="未完成" value="1"></el-option>
<el-option label="已完成" value="2"></el-option>
</el-select>
</div></div>
</div>
<div class="tasklist">
<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="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 class="tables" v-if="datalist.total>searchPram.pageSize">
<div class="bottems">
<el-pagination
background
:page-size="searchPram.pageSize"
:current-page="searchPram.pageNum"
@current-change="handleCurrentChange"
layout="prev, pager, next"
:total="datalist.total">
</el-pagination>
</div>
</div>
</div>
</el-card>
......@@ -67,6 +66,8 @@
<script>
import "@/assets/styles/project.scss"
import "@/assets/styles/public.css"
import {addGZDB,getGZDB,editGZDB} from '@/api/project/project'
export default {
name: 'gjjl',
data(){
......@@ -74,13 +75,67 @@
isEdit:false,
value:'',
status:0,
queryParam:{
businessId:parseInt(this.$route.query.id),//项目详情id
target:'',
task:'',
finishTime:'',
},
searchPram:{
businessId:parseInt(this.$route.query.id),
pageSize:10,
pageNum:1,
state:null,
},
datalist:[],
}
},
created(){
this.getList()
},
methods:{
getEdit(){
this.isEdit = true;
this.value = ""
},
add(){
addGZDB(this.queryParam).then(result=>{
if(result.code == 200){
this.$message.success("添加成功!")
this.getList()
}else{
this.$message.error(result.msg)
}
})
},
getList(){
getGZDB(this.searchPram).then(result=>{
this.datalist = result.code == 200?result:[]
})
},
handleCurrentChange(val){
this.searchPram.pageNum = val
this.getList()
},
changes(id,state){
let param={
id:id,
state:state
}
editGZDB(param).then(result=>{
if(result.code == 200){
this.$message.success('修改成功!')
this.getList()
}else{
this.$message.error(result.msg)
}
})
},
getYQ(){
let state = this.searchPram.state
this.searchPram.state = state == 0?null:0
this.handleCurrentChange(1)
},
}
}
</script>
......
......@@ -9,26 +9,26 @@
<span>总投资额(万元) :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 1">
<el-input placeholder="待添加" v-model="money" @input="number"></el-input>
<el-input placeholder="待添加" v-model="investmentAmount" @input="number"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" style="width: 56px" @click="changes({'investmentAmount':investmentAmount})">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 1">待添加</span>
<span :class="{'txt':!investmentAmount}" v-else @click="nowedit = 1">{{investmentAmount||'待添加'}}</span>
</div>
</div>
<div class="con i">
<span>资金来源 :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 2">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="amountSource"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" @click="changes({'amountSource':amountSource})" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 2">待添加</span>
<span :class="{'txt':!amountSource}" v-else @click="nowedit = 2">{{amountSource||'待添加'}}</span>
</div>
</div>
</div>
......@@ -37,27 +37,27 @@
<span>建设性质 :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 3">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="buildProperty"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" @click="changes({'buildProperty':buildProperty})" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 3">待添加</span>
<span :class="{'txt':!buildProperty}" v-else @click="nowedit = 3">{{buildProperty||'待添加'}}</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 == 11" showWordLimit="true"
v-model="value1"
<div class="flex" style="">
<el-date-picker class="timeinput"
v-model="planBidTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="待添加" @change="nowedit = -1">
placeholder="待添加" @change="changes({'planBidTime':planBidTime})">
</el-date-picker>
</div>
<span :class="{'txt':!value1}" @click="nowedit = 11">{{value1||"待添加"}}<i class="el-icon-caret-bottom"></i></span>
<span :class="{'txt':!planBidTime}">{{planBidTime||"待添加"}}<i class="el-icon-caret-bottom"></i></span>
</div>
</div>
</div>
......@@ -66,28 +66,28 @@
<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"
<el-date-picker class="timeinput"
v-model="planStartTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="待添加" @change="nowedit = -1">
placeholder="待添加" @change="changes({'planStartTime':planStartTime})">
</el-date-picker>
</div>
<span :class="{'txt':!value1}" @click="nowedit = 12">{{value1||"待添加"}}<i class="el-icon-caret-bottom"></i></span>
<span :class="{'txt':!planStartTime}">{{planStartTime||"待添加"}}<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"
<el-date-picker class="timeinput"
v-model="planCompleteTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="待添加" @change="nowedit = -1">
placeholder="待添加" @change="changes({'planCompleteTime':planCompleteTime})">
</el-date-picker>
</div>
<span :class="{'txt':!value1}" @click="nowedit = 13">{{value1||"待添加"}}<i class="el-icon-caret-bottom"></i></span>
<span :class="{'txt':!planCompleteTime}">{{planCompleteTime||"待添加"}}<i class="el-icon-caret-bottom"></i></span>
</div>
</div>
</div>
......@@ -96,10 +96,10 @@
<el-card class="box-card noborder">
<div class="cardtitles">项目概况与建设规模</div>
<div class="baseinfo">
<el-input v-model="textarea" @focus="nowedit = 9" class="textarea" type="textarea" placeholder="请输入项目概况与建设规模详细信息" maxlength="500" show-word-limit="true" ></el-input>
<el-input v-model="projectDetails" @focus="nowedit = 9" class="textarea" type="textarea" placeholder="请输入项目概况与建设规模详细信息" maxlength="500" :show-word-limit="true" ></el-input>
<div class="flex btns" v-if="nowedit == 9">
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" @click="changes({'projectDetails':projectDetails})" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
......@@ -113,27 +113,27 @@
<span>评标办法 :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 4">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="evaluationBidWay"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" @click="changes({'evaluationBidWay':evaluationBidWay})" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 4">待添加</span>
<span :class="{'txt':!evaluationBidWay}" v-else @click="nowedit = 4">{{evaluationBidWay||'待添加'}}</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 == 14" showWordLimit="true"
v-model="value1"
<el-date-picker class="timeinput"
v-model="bidOpenTime"
type="date"
value-format="yyyy-MM-dd"
placeholder="待添加" @change="nowedit = -1">
placeholder="待添加" @change="changes({'bidOpenTime':bidOpenTime})">
</el-date-picker>
</div>
<span :class="{'txt':!value1}" @click="nowedit = 14">{{value1||"待添加"}}<i class="el-icon-caret-bottom"></i></span>
<span :class="{'txt':!bidOpenTime}">{{bidOpenTime||"待添加"}}<i class="el-icon-caret-bottom"></i></span>
</div>
</div>
</div>
......@@ -142,26 +142,26 @@
<span>保证金缴纳 :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 5">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="earnestMoneyPay"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" @click="changes({'earnestMoneyPay':earnestMoneyPay})" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 5">待添加</span>
<span :class="{'txt':!earnestMoneyPay}" v-else @click="nowedit = 5">{{earnestMoneyPay||'待添加'}}</span>
</div>
</div>
<div class="con i">
<span>保证金金额(万元) :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 6">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="earnestMoney"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" @click="changes({'earnestMoney':earnestMoney})" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 6">待添加</span>
<span :class="{'txt':!earnestMoney}" v-else @click="nowedit = 6">{{earnestMoney||'待添加'}}</span>
</div>
</div>
</div>
......@@ -170,26 +170,26 @@
<span>开标地点 :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 7">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="bidOpenPlace"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" @click="changes({'bidOpenPlace':bidOpenPlace})" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 7">待添加</span>
<span :class="{'txt':!bidOpenPlace}" v-else @click="nowedit = 7">{{bidOpenPlace||'待添加'}}</span>
</div>
</div>
<div class="con i">
<span>评标委员会 :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 8">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="evaluationBidCouncil"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" @click="changes({'evaluationBidCouncil':evaluationBidCouncil})" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 8">待添加</span>
<span :class="{'txt':!evaluationBidCouncil}" v-else @click="nowedit = 8">{{evaluationBidCouncil||'待添加'}}</span>
</div>
</div>
</div>
......@@ -200,28 +200,67 @@
<script>
import "@/assets/styles/project.scss"
import {getJSNR,editXMNR} from '@/api/project/project'
export default {
name: 'jsnr',
data(){
return{
textarea:"",
nowedit:-1,//当前正在编辑的文本
value1:'',
money:'',
id:parseInt(this.$route.query.id),
investmentAmount: '',//总投资额
amountSource: '',//资金来源
buildProperty: '',//建设性质
planBidTime: '',//计划招标
planStartTime: '',//计划开工
planCompleteTime: '',//计划竣工
projectDetails: '',//项目概况与建设规模
evaluationBidWay: '',//评标办法
bidOpenTime: '',//开标时间
bidOpenPlace: '',//开标地点
earnestMoney: '',//保证金金额
earnestMoneyPay: '',//保证金缴纳
evaluationBidCouncil: '',//评标委员会
}
},
watch:{
// nowedit(oldvalue,newvalue){
// if (newvalue == 13){
// this.$ref.newvalue13.=true
// }
// }
},
created(){
this.getJSNR()
},
methods:{
getJSNR(){
getJSNR(this.id).then(result=>{
this.investmentAmount = result.data.investmentAmount//总投资额
this.amountSource = result.data.amountSource//资金来源
this.buildProperty = result.data.buildProperty//建设性质
this.planBidTime = result.data.planBidTime//计划招标
this.planStartTime = result.data.planStartTime//计划开工
this.planCompleteTime = result.data.planCompleteTime//计划竣工
this.projectDetails = result.data.projectDetails//项目概况与建设规模
this.evaluationBidWay = result.data.evaluationBidWay//评标办法
this.bidOpenTime = result.data.bidOpenTime//开标时间
this.bidOpenPlace = result.data.bidOpenPlace//开标地点
this.earnestMoney = result.data.earnestMoney//保证金金额
this.earnestMoneyPay = result.data.earnestMoneyPay//保证金缴纳
this.evaluationBidCouncil = result.data.evaluationBidCouncil//评标委员会
})
},
changes(str){
this.nowedit = -1
let param = str
param.id = this.id
editXMNR(param).then(result=>{
if(result.code == 200)
this.$message.success('修改成功')
else{
this.getJSNR()
}
})
},
//输入数字
number(value){
console.log(value)
this.money = value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')//输入6位小数
this.investmentAmount = this.investmentAmount == ""||this.investmentAmount == null? value.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1'):null//输入6位小数
},
}
}
......
......@@ -13,12 +13,12 @@
<div class="empty">
<img src="@/assets/images/project/empty.png">
<div class="p1">暂无数据展示</div>
<div class="p2">抱歉,你还未添加相关数据,快去添加吧</div>
<div class="p2">抱歉你还未添加相关数据,快去添加吧</div>
<div class="btn btn_primary h36 w102" @click="opennew">新增联系人</div>
</div>
</template>
<el-table-column
prop="date"
prop="name"
label="姓名"
width="113">
</el-table-column>
......@@ -27,34 +27,34 @@
label="操作"
width="118">
<template slot-scope="scope">
<div class="edit">
<div class="edit" @click="getDetail(scope.row)">
<img src="@/assets/images/project/edit.png">
<span>编辑</span>
</div>
</template>
</el-table-column>
<el-table-column
prop="name"
prop="role"
label="角色"
sortable
width="146">
</el-table-column>
<el-table-column
prop="address"
prop="office"
label="公司/机关">
</el-table-column>
<el-table-column
prop="name"
prop="position"
label="职位"
width="125">
</el-table-column>
<el-table-column
prop="name"
prop="phone"
label="联系方式"
width="175">
</el-table-column>
<el-table-column
prop="name"
prop="accendant"
label="内部维护人"
width="146">
</el-table-column>
......@@ -63,11 +63,11 @@
<div class="btn btn_primary h28" @click="opennew"><div class="img img1"></div>新增联系人</div>
<el-pagination
background
:page-size="20"
:current-page="1"
:page-size="searchParam.pageSize"
:current-page="searchParam.pageNum"
@current-change="handleCurrentChange"
layout="prev, pager, next"
:total="1000">
:total="total">
</el-pagination>
</div>
</div>
......@@ -77,33 +77,30 @@
width="464px">
<div class="poptitle">
<img src="@/assets/images/economies/icon.png">
<span>重庆市轨道交通3号线二期工程4标段施工总承包</span>
<span>{{projectname}}</span>
</div>
<el-form class="popform" label-width="137px">
<el-form-item label="联系人姓名:" class="row">
<el-input type="text" placeholder="请输入"></el-input>
<el-input type="text" v-model="queryParam.name" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="联系人角色:" class="row">
<el-select placeholder="请选择">
<el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option>
</el-select>
<el-input type="text" v-model="queryParam.role" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="联系人职位:" class="row">
<el-input type="text" placeholder="请输入"></el-input>
<el-input type="text" v-model="queryParam.position" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="联系人公司/机关:" class="row">
<el-input type="text" placeholder="请输入"></el-input>
<el-input type="text" v-model="queryParam.office" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="内部维护人:" class="row">
<el-input type="text" placeholder="请输入"></el-input>
<el-input type="text" v-model="queryParam.accendant" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="联系方式:" class="row">
<el-input type="text" placeholder="请输入"></el-input>
<el-input type="text" v-model="queryParam.phone" placeholder="请输入"></el-input>
</el-form-item>
<div class="popbot">
<div class="btn btn_cancel h32" @click="cancel">返回</div>
<div class="btn btn_primary h32">保存</div>
<div class="btn btn_primary h32" @click="save">保存</div>
</div>
</el-form>
</el-dialog>
......@@ -113,40 +110,68 @@
<script>
import "@/assets/styles/project.scss"
import {getLXR,editLXR,addLXR} from '@/api/project/project'
export default {
name: 'lxr',
data(){
return{
dialogVisible:false,
isnew:true,//是否新增
textarea:"",
nowedit:-1,//当前正在编辑的文本
tipslit:[],//项目标签
tipsvalue:"",//标签填写内容
tableData: [
{
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄'
}, {
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1517 弄'
}, {
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄'
}, {
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄'
}
]
tableData: [],
searchParam:{
pageNum:1,
pageSize:20,
businessId:this.$route.query.id
},
id:this.$route.query.id,
total:0,
projectname:this.$route.query.projectname,
queryParam:[],
}
},
created(){
this.getList()
},
methods:{
getDetail(item){
this.dialogVisible = true
this.queryParam = item
this.isnew = false
},
getList(){
getLXR(this.searchParam).then(result=>{
this.tableData = result.code == 200?result.rows:[]
this.total = result.code == 200?result.total:0
})
},
save(){
if(this.isnew == false){
editLXR(this.queryParam).then(result=>{
if(result.code == 200){
this.$message.success('保存成功!')
this.getList()
this.dialogVisible = false
}
})
}
if(this.isnew == true){
addLXR(this.queryParam).then(result=>{
if(result.code == 200){
this.$message.success('新增成功!')
this.getList()
this.dialogVisible = false
}
})
}
},
//翻页
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.searchParam.pageNum = val
this.getList()
},
cancel(){
this.dialogVisible = false
......@@ -154,6 +179,16 @@
//打开新建窗口
opennew(){
this.dialogVisible = true
this.isnew = true
this.queryParam = {
businessId:this.id,
name:"",
role:"",
office:"",
position:"",
phone:"",
accendant:"",
}
},
}
}
......
......@@ -22,7 +22,7 @@
<div class="empty">
<img src="@/assets/images/project/empty.png">
<div class="p1">暂无数据展示</div>
<div class="p2">抱歉,你还未添加相关数据,快去添加吧</div>
<div class="p2">抱歉你还未添加相关数据,快去添加吧</div>
<div class="btn btn_primary h36 w102" @click="opennew">新增联系人</div>
</div>
</template>
......
......@@ -15,7 +15,7 @@
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 1">待添加</span>
<span class="txt" v-else @click="nowedit = 1">{{datas.projectLevel||'待添加'}}</span>
</div>
</div>
<div class="con i">
......@@ -138,27 +138,27 @@
<div class="otherdata">
<div class="det">
<img src="@/assets/images/project/xgsj_1.png">
<div class="i">0</div>
<div class="i">{{datas.contactsCount}}</div>
<div class="j">联系人</div>
</div>
<div class="det">
<img src="@/assets/images/project/xgsj_2.png">
<div class="i">0</div>
<div class="i">{{datas.followRecordCount}}</div>
<div class="j">跟进记录</div>
</div>
<div class="det">
<img src="@/assets/images/project/xgsj_3.png">
<div class="i">0</div>
<div class="i">{{datas.backlogCount}}</div>
<div class="j">工作待办</div>
</div>
<div class="det">
<img src="@/assets/images/project/xgsj_4.png">
<div class="i">0</div>
<div class="i">{{datas.fileCount}}</div>
<div class="j">资料文档</div>
</div>
<div class="det">
<img src="@/assets/images/project/xgsj_5.png">
<div class="i">0</div>
<div class="i">{{datas.relateCompanyCount}}</div>
<div class="j">相关企业</div>
</div>
</div>
......@@ -169,8 +169,12 @@
<script>
import "@/assets/styles/project.scss"
import {getDictType,} from '@/api/main'
import {} from '@/api/project/project'
export default {
name: 'xmsl',
props:{
datas:'',
},
data(){
return{
nowedit:-1,//当前正在编辑的文本
......@@ -178,14 +182,16 @@
tipsvalue:"",//标签填写内容
xmjd:'待添加',
projectStage:[],//项目阶段
sldata:this.datas,
}
},
created(){
//项目阶段
getDictType('project_stage_type').then(result=>{
this.projectStage = result.code == 200 ? result.data:[]
})
this.xmjd = this.datas.projectStage
this.tipslit = this.datas.labelList
},
methods:{
//验证电话号码
......
......@@ -49,7 +49,7 @@
<div class="empty">
<img src="@/assets/images/project/empty.png">
<div class="p1">暂无数据展示</div>
<div class="p2">抱歉,你还未添加相关数据,快去添加吧</div>
<div class="p2">抱歉你还未添加相关数据,快去添加吧</div>
<div class="btn btn_primary h36 w102" @click="opennew">新增联系人</div>
</div>
</template>
......
......@@ -5,18 +5,19 @@
<span> / 商机列表</span>
<span> / 项目详情</span>
</div>
<div class="app-container">
<div class="app-container" v-if="ProjectData">
<el-card class="box-card noborder pad16 overflows">
<div class="head baseinfo">
<div class="titles">
<img src="@/assets/images/project/headimg.png" class="headimg">
<strong class="text">重庆市轨道交通3号线二期工程4标段施工总承包</strong>
<strong class="text">{{ProjectData.projectName}}</strong>
<div class="locks">
<img v-if="islock == true" src="@/assets/images/project/lock.png">
<img v-if="ProjectData.isPrivate == 0" src="@/assets/images/project/lock.png">
<img v-else src="@/assets/images/project/lockopen.png">
仅自己可见
{{ProjectData.isPrivate == 0?"仅自己可见":"他人可见"}}
<!--<div class="delform">-->
<!--<div class="words">{{islock==true?"是否将项目权限修改为他人可见?":"是否将项目权限修改为仅自己可见?"}}</div>-->
<!--<div class="words">{{ProjectData.isPrivate == 0?"是否将项目权限修改为他人可见?":"是否将项目权限修改为仅自己可见?"}}</div>-->
<!--<div>-->
<!--<div class="btnsmall btn_primary h28">确定</div>-->
<!--<div class="btnsmall btn_cancel h28">取消</div>-->
......@@ -32,7 +33,7 @@
{{xmlx}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="xmlx" class="select-multiple" placeholder="请选择">
<el-select v-model="xmlx" class="select-multiple" placeholder="请选择" @change="{}">
<el-option v-for="(item,index) in projectType" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</div>
......@@ -55,20 +56,20 @@
<span>投资估算(万元):</span>
<div class="inputxt i" :class="{'nomar':nowedit != 3}">
<div class="flex" v-if="nowedit == 3">
<el-input placeholder="待添加" @input="number"></el-input>
<el-input v-model="ProjectData.investmentAmount" 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>
<span :class="{txt:ProjectData.investmentAmoun==''}" v-else @click="nowedit = 3">{{ProjectData.investmentAmount||'待添加'}}</span>
</div>
</div>
<div class="det-con">
<span>建设地点:</span>
<div class="select-popper">
<span :class="{ color_text:address != 'address'}">
<span :class="{ color_text:address != '待添加'}">
{{address}}
<i class="el-icon-caret-bottom"></i>
</span>
......@@ -80,15 +81,15 @@
</div>
<div class="det-con">
<span>商务团队:</span>
<span>李力</span>
<span>{{ProjectData.team}}</span>
</div>
</div>
<div class="schedule">
<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-else-if="index == thisindex" src="@/assets/images/project/pro_3.png">
<div class="child" v-for="(item,index) in projectStage" @mouseover="hover(item.dictValue)" @mouseleave="hover(-1)" @click="choose(item.dictValue)">
<img v-if="item.dictValue == lastindex" src="@/assets/images/project/pro_2.png">
<img v-else-if="item.dictValue == thisindex" src="@/assets/images/project/pro_3.png">
<img v-else src="@/assets/images/project/pro_1.png">
<span :class="{'now':index == thisindex}">{{item.dictLabel}}</span>
<span :class="{'now':item.dictValue == thisindex}">{{item.dictLabel}}</span>
</div>
</div>
......@@ -103,7 +104,7 @@
</div>
</el-card>
<!--项目概览-->
<xmsl v-if="thistag == 'xmsl'"></xmsl>
<xmsl v-if="thistag == 'xmsl'" :datas="ProjectData"></xmsl>
<!--建设内容-->
<jsnr v-if="thistag == 'jsnr'"></jsnr>
<!--联系人-->
......@@ -132,6 +133,7 @@
import zlwd from './component/zlwd.vue'
import xgqy from './component/xgqy.vue'
import prvinceTree from '@/assets/json/provinceTree'
import {getXMSL} from '@/api/project/project'
export default {
name: 'detail',
components: {xmsl,jsnr,lxr,gjjl,gzdb,zlwd,xgqy},
......@@ -161,10 +163,13 @@
addressList:[],
domicile:[],
props:{ checkStrictly: true, expandTrigger: 'hover' },
id:'',
ProjectData:{},
}
},
created(){
this.prvinceTree()
this.id = this.$route.query.id
//项目阶段
getDictType('project_stage_type').then(result=>{
this.projectStage = result.code == 200 ? result.data:[]
......@@ -177,6 +182,26 @@
getDictType('project_category').then(result=>{
this.projectCategory = result.code == 200 ? result.data:[]
})
//获取基本信息
getXMSL(this.id).then(result=>{
this.ProjectData = result.code==200?result.data:{}
this.$route.query.projectname = result.data.projectName
this.xmlx = result.data.projectType==""||result.data.projectType==null?"请选择":result.data.projectType
this.xmlb = result.data.projectCategory==""||result.data.projectCategory==null?"请选择":result.data.projectCategory
this.thisindex = result.data.projectStage
let list = []
if(result.data.provinceName){
list.push(result.data.provinceName)
}
if(result.data.cityName){
list.push(result.data.cityName)
}
if(result.data.districtName){
list.push(result.data.districtName)
}
this.address = list
console.log(this.ProjectData.team)
})
},
methods: {
//地区
......@@ -208,11 +233,11 @@
},
//进度条悬浮、点击事件
hover(index){
this.lastindex = index
hover(value){
this.lastindex = value
},
choose(index,value){
this.thisindex = index
choose(value){
this.thisindex = value
console.log(value)
},
//内容组件切换
......@@ -226,7 +251,7 @@
},
handleChange(value) {
// console.log(value);
console.log(value);
let str = ''
var labelString = this.$refs.myCascader.getCheckedNodes()[0].pathLabels;
labelString.forEach((item,index)=>{
......
......@@ -3,7 +3,7 @@
<el-card class="box-card noborder">
<div class="btns">
<div class="btn btn_default h28" @click="addNew(true)"><div class="img img1"></div>新建项目商机</div>
<div class="btn btn_primary h28"><div class="img img2"></div>批量导入</div>
<div class="btn btn_primary h28" @click="pldrs"><div class="img img2"></div>批量导入</div>
</div>
<el-tabs v-model="activeName" @tab-click="handleClick" class="tabpane w100">
<el-tab-pane label="我参与的项目" name="first"></el-tab-pane>
......@@ -19,8 +19,8 @@
地区团队
</span>
<div class="select-popper">
<span :class="{ color_text:searchParam.province.length ||searchParam.city.length ||searchParam.area.length,}">
项目地区{{searchParam.province.length ||searchParam.city.length ||searchParam.area.length? searchParam.province.length +searchParam.city.length +searchParam.area.length +"项": ""}}
<span :class="{ color_text:searchParam.provinceId.length ||searchParam.cityId.length ||searchParam.districtId.length,}">
项目地区{{searchParam.provinceId.length ||searchParam.cityId.length ||searchParam.districtId.length? searchParam.provinceId.length +searchParam.cityId.length +searchParam.districtId.length +"项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-cascader class="cascader-region select-location"
......@@ -98,14 +98,23 @@
<el-card class="box-card noborder overflows">
<div class="titles">项目明细
<div class="dc">
<div class="total">126</div>
<div class="total">{{total}}</div>
<div class="btn-export"><img src="@/assets/images/EXCEL.png">导出EXCEL</div>
</div>
</div>
<div class="tables" v-if="total == 0">
<div class="empty">
<img src="@/assets/images/project/empty.png">
<div class="p1">添加你的第一个项目吧</div>
<div class="p2">抱歉,你还未添加项目,快去添加吧</div>
<div class="btn btn_primary h36 w88" @click="addNew(true)">新建商机</div>
<div class="btn btn_primary btn_shallow h36 w88" @click="pldrs">批量导入</div>
</div>
</div>
<div class="datalist">
<div class="datali">
<div class="det-title" @click="toDetail()">轨道交通13号线扩能提升工程<span class="people"><i>A</i>四川-李丽 <font color="#FA8A00">正在跟进</font></span></div>
<div class="det-tips"><span class="tips tip1">轨道交通</span><span class="tips tip2">江西省-南昌市</span></div>
<div class="datali" v-for="(item,index) in datalist">
<div class="det-title" @click="toDetail(item.id)">{{item.projectName}}<span v-if="activeName!='first'" class="people"><i>A</i>四川-李丽 <font color="#FA8A00" v-if="activeName!='first'">正在跟进</font></span></div>
<div class="det-tips"><span class="tips tip1" v-if="item.label">{{item.label}}</span><span v-if="item.address" class="tips tip2">{{item.address}}</span></div>
<div class="det-contets">
<div class="det-con">
<span>项目类型:</span>
......@@ -113,35 +122,48 @@
</div>
<div class="det-con">
<span>投资估算(万元):</span>
<span>21</span>
<span>{{item.investmentAmount}}</span>
</div>
<div class="det-con">
<span>最后跟进时间:</span>
<span>2013-02-19</span>
<span>{{item.followTime || '--'}}</span>
</div>
<div class="det-con">
<span>业主单位:</span>
<span class="wordprimary">重庆市交通开发投资(集团)有限公司</span>
<span class="wordprimary">{{item.ownerCompany}}</span>
</div>
</div>
<el-divider></el-divider>
<div class="operates">
<div class="operates" v-if="activeName=='first'">
<div class="i1"><img src="@/assets/images/follow.png">跟进</div>
<div class="i2"><img src="@/assets/images/edit.png">编辑</div>
<div class="i3"><img src="@/assets/images/delete.png">删除</div>
<div class="i3" @click="deldetail(index)"><img src="@/assets/images/delete.png">删除</div>
</div>
<div class="delform">
<div class="delform" v-if="activeName=='first' && ondel == index">
<div class="words">是否将项目删除</div>
<div>
<div class="btnsmall btn_primary h28">确定</div>
<div class="btnsmall btn_cancel h28">取消</div>
<div class="btnsmall btn_primary h28" @click="deleteProject(item.id)">确定</div>
<div class="btnsmall btn_cancel h28" @click="ondel = -1">取消</div>
</div>
</div>
</div>
</div>
<div class="tables">
<div class="bottems" v-if="total>0">
<el-pagination
background
:page-size="searchParam.pageSize"
:current-page="searchParam.pageNum"
@current-change="handleCurrentChange"
layout="prev, pager, next"
:total="total">
</el-pagination>
</div>
</div>
</el-card>
<addproject v-if="isshow" @addproject="add" @cancel="addNew"></addproject>
<batchimport v-if="pldr" :importtype="types" @cancels="cancelimport" @getdatas="getdatas"></batchimport>
</div>
</template>
......@@ -149,18 +171,21 @@
import "@/assets/styles/project.scss"
import "@/assets/styles/public.css"
import prvinceTree from '@/assets/json/provinceTree'
import {getProjectlist} from '@/api/project/project'
import {getProjectlist,delProject} from '@/api/project/project'
import {getDictType,} from '@/api/main'
import addproject from './component/addProject'
import batchimport from './component/batchImport'
export default {
name: 'ProjectList',
components:{addproject},
components:{addproject,batchimport},
data() {
return {
types:'project',
props:{multiple: true},
activeName:'first',
projectStage:[],//项目阶段
isshow:false,//新增商机
pldr:false,//批量导入
//项目地区
addressList:[],
addressType: [],
......@@ -168,6 +193,7 @@ export default {
minAmount:'',//投资估算最小值
maxAmount:'',//投资估算最大值
searchParam: {
userId:null,//个人项目需传,公司项目不传
projectName:'',//项目名称
ownerCompany:'',//业主单位
projectType:'',//项目类型
......@@ -175,9 +201,9 @@ export default {
minAmount:'',//投资估算最小值
maxAmount:'',//投资估算最大值
Amount:'',//投资估算
province: [],
city: [],
area: [],
provinceId: [],
cityId: [],
districtId: [],
pageNum:1,
pageSize:10,
},
......@@ -204,6 +230,9 @@ export default {
],
contractSignTimeValue: "",
transactionPriceShowPopper: false,
datalist:[],//列表数据
ondel:-1,
total:0,
}
},
created() {
......@@ -223,17 +252,55 @@ export default {
})
},
methods: {
deldetail(index){
this.ondel = index
},
deleteProject(id){
delProject(id).then(result =>{
if(result.code==200){
this.$message.success('删除成功!')
this.getList(1)
this.ondel = -1
}else{
this.$message.error(result.msg)
}
})
},
getdatas(){
this.getList(1)
},
cancelimport(){
this.pldr = false
},
pldrs(){
this.pldr = true
},
//获取商机列表
getList(pageNum){
this.searchParam.pageNum = pageNum
console.log(this.searchParam)
// return false
if(this.activeName == 'first'){
this.searchParam.userId = this.$store.state.user.userId
}else{
this.searchParam.userId = null
}
getProjectlist(this.searchParam).then(result=>{
console.log(result)
if(result.code == 200){
this.datalist = result.rows
this.total = result.total
this.datalist.forEach(item=>{
let str = item.provinceName
if(item.cityName != "" && item.cityName != null)
str += '-' +item.cityName
if(item.districtName != ""&& item.districtName != null)
str += '-' +item.districtName
item.address = str
})
}
})
},
reset(){
this.searchParam ={
userId:null,
projectName:'',//项目名称
ownerCompany:'',//业主单位
projectType:'',//项目类型
......@@ -241,9 +308,9 @@ export default {
minAmount:'',//投资估算最小值
maxAmount:'',//投资估算最大值
Amount:'',//投资估算
province: [],
city: [],
area: [],
provinceId: [],
cityId: [],
districtId: [],
pageNum:1,
pageSize:10,
}
......@@ -287,9 +354,8 @@ export default {
this.isshow = false
this.getList(1)
},
toDetail(){
let Id = '111'
this.$router.push({ path: '/project/projectList/detail', query: Id });
toDetail(id){
this.$router.push({ path: '/project/projectList/detail', query: {id:id} });
},
handleClick(){
......@@ -299,27 +365,27 @@ export default {
// var labelString = this.$refs.myCascader.getCheckedNodes()[0].pathLabels;
let arr = this.$refs.myCascader.getCheckedNodes();
// console.log(arr)
let province = [],
city = [],
area = [];
let provinceId = [],
cityId = [],
districtId = [];
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 && cityId.push(arr[i].value);
arr[i].hasChildren && this.domicile.push(arr[i].label);
!arr[i].hasChildren && area.push(arr[i].value);
!arr[i].hasChildren && districtId.push(arr[i].value);
!arr[i].hasChildren && this.domicile.push(arr[i].label);
}
} else {
province.push(arr[i].value);
provinceId.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;
obj.provinceId = provinceId;
obj.cityId = cityId;
obj.districtId = districtId;
this.searchParam = obj;
},
......@@ -358,6 +424,11 @@ export default {
this.searchParam = obj;
}
},
//翻页
handleCurrentChange(val) {
this.getList(val)
},
}
}
</script>
......@@ -542,4 +613,7 @@ export default {
padding: 0;
}
}
.btn{
padding: 0 12px;
}
</style>
<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
<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 class="blue">江西合胜合招标咨询有限公司</span>
</p>
<p class="list-content-text">
<span>代理单位:</span>
<span class="blue">江西合胜合招标咨询有限公司</span>
</p>
</div>
<div class="list-content">
<p class="list-content-text">
<span>预算金款:</span>
<span>123,456,78万元</span>
</p>
<p class="list-content-text">
<span>联系方式:</span>
<span >招采单位 张工 123456789</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 >2022-04-21</span>
</p>
<p class="list-content-text">
<span>开标时间:</span>
<span >2022-04-21</span>
</p>
<p class="list-content-text">
<span>来源网站:</span>
<span >赤峰市阿鲁科尔沁旗人民政府</span>
</p>
</div>
</li>
</ul>
</div>
<div class="content main3">
<div class="common-title">原文信息</div>
<div class="list-content-img" @mouseenter="showimg=false" @mouseleave="showimg=true">
<img v-if="showimg" src="@/assets/images/bxpro/original1.png">
<img v-else src="@/assets/images/bxpro/original.png">
<span>原文链接</span>
</div>
<div class="main3-box">
</div>
</div>
</div>
</template>
<script>
import "@/assets/styles/public.css";
export default {
name: 'TenderDetails',
data() {
return {
id: '',
tableData: [{
id: 0,
name: '20重庆债14(2005938)',
time: '2020-09-18',
gm: '285.24',
zj: '否',
}],
showimg:true
}
},
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;
}
.main3 {
position: relative;
.main3-box {
margin-top: 22px;
min-height: 400px;
border: 1px solid #D8D8D8;
}
.list-content-img{
position: absolute;
top: 16px;
right:14px ;
color: #0081FF;
display: flex;
align-items: center;
font-size: 14px;
cursor: pointer;
img{
width: 14px;
height: 14px;
margin-right: 4px;
}
}
.list-content-img:hover{
color: #0067CC;
}
}
}
</style>
\ No newline at end of file
<template>
<div class="app-container qyzx-details">
<div class="bottomlist">
<ul class="bottomlist-content">
<li class="bottomlist-list">
<p class="list-titel">
绿色节能型压缩机基础件、汽车零配件新建项目 (芜湖旭日机械制造有限公司)
</p>
<div class="list-content">
<p class="list-content-text">
<span>发布日期:</span>
<span>2014-05-12</span>
</p>
<p class="list-content-text">
<span>开标时间:</span>
<span class='text-red'>2014-05-12 9:00</span>
</p>
</div>
<div class="list-content-img" @mouseenter="showimg=false" @mouseleave="showimg=true">
<img v-if="showimg" src="@/assets/images/bxpro/original1.png">
<img v-else src="@/assets/images/bxpro/original.png">
<span>原文链接</span>
</div>
</li>
</ul>
</div>
<div class="content main3 main4">
<div class="common-title common-title1 clearfix">
<span class="common-title-span">附件下载</span>
<div class="common-title-list">
<p>
<img src="@/assets/images/bxpro/pdf.png" alt="">
<span>竞争对手</span>
</p>
<p>
<img src="@/assets/images/bxpro/pdf.png" alt="">
<span>项目简析</span>
</p>
<p>
<img src="@/assets/images/bxpro/pdf.png" alt="">
<span>成本分析</span>
</p>
<p>
<img src="@/assets/images/bxpro/pdf.png" alt="">
<span>招标文件</span>
</p>
</div>
</div>
</div>
<div class="content main3">
<div class="common-title">基本信息</div>
<div class="main3-box">
<p>
<label class="label">工程类型</label>
<span>1.36倍</span>
<label class="label">工程类别</label>
<span>1.36倍</span>
</p>
<p>
<label class="label">项目投资额(万元)</label>
<span >1.36倍</span>
<label class="label">招标控制价/合同 估算价(万元)</label>
<span>1.36倍</span>
</p>
<p>
<label class="label">建安费暂估(万元)</label>
<span >1.36倍</span>
<label class="label">勘察费暂估(万元)</label>
<span>1.36倍</span>
</p>
<p>
<label class="label">设计费暂估(万元)</label>
<span>1.36倍</span>
<label class="label">投标保证金(万元)</label>
<span>1.36倍</span>
</p>
<p>
<label class="label">计划工期</label>
<span>1.36倍</span>
<label class="label">项目属地</label>
<span>1.36倍</span>
</p>
<p>
<label class="label">发布时间</label>
<span>1.36倍</span>
<label class="label">开标时间</label>
<span class="color1">1.36倍</span>
</p>
<p>
<label class="label">评标办法</label>
<span>1.36倍</span>
<label class="label">项目级别</label>
<span>1.36倍</span>
</p>
<p>
<label class="label">建设规模</label>
<span class="span-one">1.36倍</span>
</p>
<p>
<label class="label">招标范围</label>
<span class="span-one">1.36倍</span>
</p>
<p>
<label class="label">保证金缴纳方式</label>
<span>1.36倍</span>
<label class="label">开标地点</label>
<span>1.36倍</span>
</p>
<p>
<label class="label">建设地点</label>
<span>1.36倍</span>
<label class="label">资金来源</label>
<span>1.36倍</span>
</p>
<p>
<label class="label">评标委员会</label>
<span class="span-one">1.36倍</span>
</p>
<p>
<label class="label">履约保证金 (形式 及金额)</label>
<span class="span-one">1.36倍</span>
</p>
</div>
</div>
<div class="content main3">
<div class="common-title">投标要求</div>
<div class="main3-box">
<p>
<label class="label">资质要求</label>
<span class="span-one">1.36倍</span>
</p>
<p>
<label class="label">业绩要求</label>
<span class="span-one">1.36倍</span>
</p>
<p>
<label class="label">项目负责人要求</label>
<span class="span-one">1.36倍</span>
</p>
</div>
</div>
<div class="content main3">
<div class="common-title">相关企业</div>
<div class="main3-box">
<p>
<label class="label">招标人</label>
<span class="color2">1.36倍</span>
<label class="label">代理机构</label>
<span class="color2">1.36倍</span>
</p>
<p>
<label class="label">招标人联系方式</label>
<span>1.36倍</span>
<label class="label">招标人联系地址</label>
<span>1.36倍</span>
</p>
<p>
<label class="label">代理机构联系方式</label>
<span>1.36倍</span>
<label class="label">代理机构联系地址</label>
<span>1.36倍</span>
</p>
</div>
</div>
</div>
</template>
<script>
import "@/assets/styles/public.css";
export default {
name: 'bxprozbggDetails',
data() {
return {
id: '',
tableData: [{
id: 0,
name: '20重庆债14(2005938)',
time: '2020-09-18',
gm: '285.24',
zj: '否',
}],
showimg:true,
}
},
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;
position: relative;
.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;
}
.text-red{
color: #FF3C3C !important;
}
}
}
.list-content-img{
position: absolute;
top: 16px;
right:14px ;
color: #0081FF;
display: flex;
align-items: center;
font-size: 14px;
cursor: pointer;
img{
width: 14px;
height: 14px;
margin-right: 4px;
}
}
.list-content-img:hover{
color: #0067CC;
}
.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;
.common-title-span{
float: left;
line-height: 15px;
}
.common-title-list{
float: left;
margin-left: 80px;
top: 10px;
display: flex;
align-items: center;
p{
display: flex;
align-items: center;
font-size: 14px;
font-weight: 400;
color: rgba(35,35,35,0.8);
cursor: pointer;
margin-right: 30px;
img{
width: 14px;
margin-right: 4px;
}
}
p:hover{
color: #0081FF;
}
}
}
.common-title1{
margin-bottom: 0px;
}
.main3 {
.main3-box {
margin-top: 22px;
border-top: 1px solid #E6E9F0;
p {
display: flex;
margin: 0;
border: 1px solid #E6E9F0;
border-top: none;
.label {
width: 10%;
height: auto;
font-weight: 400;
font-size: 12px;
padding: 12px;
background: #F0F3FA;
display: flex;
align-items: center;
}
span {
display: flex;
align-items: center;
width: 40%;
color: #000;
padding: 12px;
font-size: 12px;
}
.span-one {
width: 90%;
}
.color1{
color: #FF3C3C;
}
.color2{
color: #0081FF;
cursor: pointer;
}
}
}
}
.main4{
background-image: url(../../../assets/images/bxpro/bgfdf.png);
background-size: 100% 100%;
background-repeat: no-repeat;
border: 2px dashed #888;
}
}
</style>
\ No newline at end of file
<template>
<div>
<div id="bidRecord_wrap">
<div>
<div class="content_li">
<div class="content_item content_item_nopadding">
<div class="include-keywords">
<span class="lefttltel" style=" border-radius: 1px 0px 0px 1px;">项目包含</span>
<el-input class="commonly-input" v-model="keyword" style="width: 607px;" placeholder="请输入项目名称、文章关键词,多关键词用空格隔开,如:房建 地基"></el-input>
</div>
</div>
</div>
<div class="land_content_wrap " style="margin-bottom:8px;">
<div class="land_content_wrap_label" >投标报价</div>
<el-input class="other_ipt" placeholder="请输入最低金额" style="margin-left:12px;" @change="changeMoney('start')" clearable v-model="jskBidQueryDto.startBidMoney"></el-input>
<span style="margin:0 8px;"></span>
<el-input style="position:relative;top:2px;" placeholder="请输入最高金额" @change="changeMoney('end')" v-model="jskBidQueryDto.endBidMoney" clearable class="other_ipt other_ipt1">
<el-button slot="append" type="primary">万元</el-button>
</el-input>
<el-checkbox style="margin-left:24px;" v-model="jskBidQueryDto.hasMoney" true-label="yes" false-label="">包含投标报价未公示
</el-checkbox>
</div>
<div class="land_content_wrap">
<span class="land_content_wrap_label">相关条件</span>
<div class="select-popper" style="margin-bottom:8px;">
<span :class="{color_text:jskBidQueryDto.province.length ||jskBidQueryDto.city.length ||jskBidQueryDto.county.length,}">
行政区划
{{
jskBidQueryDto.province.length ||jskBidQueryDto.city.length ||jskBidQueryDto.county.length? jskBidQueryDto.province.length + jskBidQueryDto.city.length +jskBidQueryDto.county.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="punishDatehandleCommand" trigger="click" ref="punishDateShowPopper" :hide-on-click="false" >
<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="tenderDatehandleCommand" trigger="click" ref="tenderDateShowPopper" :hide-on-click="false" >
<span class="el-dropdown-link" :class="tenderDateValue ? 'color_text' : ''" >开标时间{{ tenderDateValue ? " 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=" tenderDateValue && tenderDateValue == item.value ? 'color_text' : ''" :key="i" :command="item.value">
<div @mouseenter="hidePoper('bid')">{{ item.label }}</div>
</el-dropdown-item>
<el-dropdown-item command="自定义" style="padding: 0; text-indent: 20px">
<div @mouseenter="mouseenter('bid')">
<span :class="tenderDateValue == '自定义' ? 'color_text' : ''">自定义<i class="el-icon-arrow-right"></i></span>
<el-date-picker
v-if="tenderDateShowPopper"
@change="changepunishDate('bid')"
class="land_date_picker"
v-model="tenderDate"
ref="tenderDatePicker"
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 class="land_content_wrap">
<span class="land_content_wrap_label" style="line-height:34px;">参投单位</span>
<el-input style="margin-left:12px;" v-model="jskBidQueryDto.companyName" clearable placeholder="请输入参投单位名称关键词"> </el-input>
</div>
<div class="search-new" style="padding: 16px 0px 16px 76px">
<span @click="search()">查询</span>
<span @click="reset">重置</span>
</div>
<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;">
<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">
{{itme.value}}
</li>
</ul>
<span slot="reference" class="toolbar-right-download" style="width: auto;padding: 0px 8px;margin-right:4px;" >
{{fieldText}}<i class="el-icon-caret-bottom" :style="{transform:fieldshow?'rotate(180deg)':''}"></i>
</span>
</el-popover>
<span size="small" class="toolbar-right-download toolbar-right-download1" @click="search('','','isExport')">
导出数据
</span>
</div>
</div>
<div style="border-top:1px solid #efefef;padding-bottom:1px;width: 1200px;margin-left: -16px;" v-if="total<1" >
<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>400-023-5755</span>(工作日09:00-18:00)或<span><nuxt-link title="意见反馈" :to="`/feedback/`" target="_blank">意见反馈</nuxt-link></span></li>
</ul>
</div>
</div>
<div v-else>
<div v-for="(item, index) in tableData"class="data_list_item":key="index">
<nuxt-link class="data_list_h1 data_list_h1_1" :to="`/biz/tbjl/${item.id}.html`" target="_blank" :title="item.projectName.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')" v-if="item.id" v-html="item.projectName"></nuxt-link>
<div class="data_list_h1" v-else v-html="item.projectName"></div>
<div class="label_box" v-if="item.domicile">
<span class="label_span label_span2">{{ item.domicile}}</span>
</div>
<div class="label_wrap">
<template v-if="item.source">
<span class="label_item">来源网站:</span>
<span class="label_con" v-html="item.source"></span>
</template>
<template v-if="item.tenderTime">
<span class="label_item" >开标时间:</span><span class="label_con">{{ item.tenderTime }}</span>
</template>
<template v-if="item.punishDate">
<span class="label_item" >发布时间:</span>
<span class="label_con">{{ item.punishDate }}</span>
</template>
</div>
</div>
</div>
</div>
</div>
<div class="performance_pagination_wrap" v-if="showList&&total>0">
<Pagination
v-if="pageFlag"
ref="page"
:page='permissions.page'
@handle-current-change="handleCurrentChange"
@handle-size-change="handleSizeChange"
:total="total"
/>
</div>
</div>
<div class="content">
<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">
<el-input class="ename_input"
placeholder="请输入项目名称关键字" v-model="jskBidQueryDto.companyName" ></el-input>
</div>
</div>
<div class="content_item">
<div class="label">项目名称</div>
<div class="content_right">
<div class="select-popper" >
<span :class="{color_text:jskBidQueryDto.province.length ||jskBidQueryDto.city.length ||jskBidQueryDto.county.length,}">
行政区划{{jskBidQueryDto.province.length ||jskBidQueryDto.city.length ||jskBidQueryDto.county.length? jskBidQueryDto.province.length + jskBidQueryDto.city.length +jskBidQueryDto.county.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="punishDatehandleCommand" trigger="click" ref="punishDateShowPopper" :hide-on-click="false" >
<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="el-dropdown-land" :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="tenderDatehandleCommand" trigger="click" ref="tenderDateShowPopper" :hide-on-click="false" >
<span class="el-dropdown-link" :class="tenderDateValue ? 'color_text' : ''" >开标时间{{ tenderDateValue ? " 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=" tenderDateValue && tenderDateValue == item.value ? 'color_text' : ''" :key="i" :command="item.value">
<div @mouseenter="hidePoper('bid')">{{ item.label }}</div>
</el-dropdown-item>
<el-dropdown-item command="自定义" style="padding: 0; text-indent: 20px">
<div @mouseenter="mouseenter('bid')">
<span :class="tenderDateValue == '自定义' ? 'color_text' : ''">自定义<i class="el-icon-arrow-right"></i></span>
<el-date-picker
v-if="tenderDateShowPopper"
@change="changepunishDate('bid')"
class="land_date_picker"
v-model="tenderDate"
ref="tenderDatePicker"
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 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>
</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>
......@@ -276,9 +277,10 @@ export default {
pageFlag: true,
conditionsArr: [],
showList:true,
total:0,
tableData:[],
total:6000,
page:1,
pageSize:20
};
},
computed: {
......@@ -861,22 +863,228 @@ export default {
},
};
</script>
<style lang="scss">
#bidRecord_wrap{
.other_ipt {
width: 174px;
height: 34px;
.el-input__inner {
<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;
}
}
.other_ipt1 {
width: 187px;
.el-input-group__append {
::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: 12px;
.list-label{
background: #F3F3FF;
color: #8491E8;
border-radius: 1px 1px 1px 1px;
padding: 3px 7px;
font-size: 12px;
}
}
.list-content{
margin-top: 8px;
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>
#bidRecord_wrap {
......
......@@ -1211,7 +1211,9 @@
},
};
</script>
<style lang="scss" scoped>
.content{
padding: 0px 16px;
border-radius: 4px 4px 4px 4px;
......
<template>
<div>
<el-select
v-model="selectValue"
:loading="loading"
popper-class="performance_other_select"
class="select-multiple"
placeholder="可多选"
ref="select"
collapse-tags
multiple
filterable
:filter-method="filterMethod"
v-el-select-loadmore="loadMore(rangeNumber)"
@change="selectChange"
@visible-change="visibleChange" >
<el-input class="performance_source_name_ipt" clearable v-model="inputValue" @input="changeIpt"></el-input>
<el-option v-for="(value,index) in sourceNamelist" :key="index" :value="value">
<span v-html="value"></span>
</el-option>
</el-select>
</div>
</template>
<script>
// import {_debounce} from "@/static/common.js"
// import URL from "@/api/businessOpportunities/tender";
var URL={
};
var debounce = function(fn, delay = 300) {
var timer = null;
return function() {
var _this = this;
var args = arguments;
if (timer) clearTimeout(timer);
timer = setTimeout(function() {
fn.apply(_this, args);
}, delay);
};
}
export default {
data(){
return{
loading:false,
rangeNumber: 1,
selectValue:[],
inputValue:"",
oldInputValue:"",
sourceNamelist:[],
}
},
directives: {
'el-select-loadmore': (el, binding) => {
// 获取element-ui定义好的scroll盒子
const SELECTWRAP_DOM = el.querySelector(".el-select-dropdown .el-select-dropdown__wrap");
if (SELECTWRAP_DOM) {
SELECTWRAP_DOM.addEventListener("scroll", function() {
/**
* scrollHeight 获取元素内容高度(只读)
* scrollTop 获取或者设置元素的偏移值,
* 常用于:计算滚动条的位置, 当一个元素的容器没有产生垂直方向的滚动条, 那它的scrollTop的值默认为0.
* clientHeight 读取元素的可见高度(只读)
* 如果元素滚动到底, 下面等式返回true, 没有则返回false:
* ele.scrollHeight - ele.scrollTop === ele.clientHeight;
*/
const condition = this.scrollHeight - this.scrollTop <= this.clientHeight;
if (condition) binding.value();
});
}
},
},
methods:{
selectChange(arr){
this.$emit("getSelectValue",arr)
},
loadMore(n) {
// n是默认初始展示的条数会在渲染的时候就可以获取,具体可以打log查看
// elementui下拉超过7条才会出滚动条,如果初始不出滚动条无法触发loadMore方法
return () => {
this.rangeNumber += 1;
this.filterMethod(this.inputValue)
}; // 每次滚动到底部可以新增条数 可自定义
},
changeIpt(){
this.sourceNamelist = []
this.rangeNumber = 1
this.filterMethod()
},
// 筛选方法
filterMethod: debounce(function(filterVal) {
this.loading = true
let params = {
page:{
page:this.rangeNumber,
limit:10
},
}
if(this.inputValue){
params.keyword = this.inputValue;
}
this.$axios.post(URL.sourceSearch,params,{headers: { "Content-Type": "application/json" }}).then(res=>{
if(res.data.code==200){
this.sourceNamelist = this.sourceNamelist.concat(res.data.data.list);
if(this.sourceNamelist.length>0&&this.sourceNamelist[0]!='不限'){
this.sourceNamelist.unshift("不限")
}
}
this.loading = false
}).catch(err=>{
this.loading = false
})
}, 500),
// 下拉框出现时,调用过滤方法
visibleChange(flag) {
this.inputValue = ""
if (flag) {
this.sourceNamelist = []
this.rangeNumber = 1
this.filterMethod()
}
},
}
}
</script>
<style>
</style>
<template>
<div>
<div class="content">
<div class="content_item">
<div class="label">项目名称</div>
<div class="content_right">
<el-input class="ename_input" v-model="keyword"
placeholder="请输入项目名称、文章关键词,多关键词用空格隔开,如:房建 地基"></el-input>
</div>
</div>
<div class="content_item">
<div class="label">招采单位</div>
<div class="content_right">
<el-input v-model="jskBidQueryDto.companyName" clearable
class="land_ipt_470" placeholder="请输入招标采购单位名称"></el-input>
</div>
</div>
<div class="content_item">
<div class="label">招标代理</div>
<div class="content_right">
<el-input v-model="jskBidQueryDto.agency" clearable class="land_ipt_470"
placeholder="请输入招标代理机构名称"></el-input>
</div>
</div>
<div class="content_item">
<div class="label">阶段类型</div>
<div class="content_right">
<div class="select-popper">
<span :class="{ color_text: jskBidQueryDto.tenderStage.length }">
招采环节阶段{{jskBidQueryDto.tenderStage.length? jskBidQueryDto.tenderStage.length + "项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="jskBidQueryDto.tenderStage" class="select-multiple" multiple placeholder="请选择">
<el-option v-for="(item, i) in tenderStageOptions" :key="i" :label="item.label":value="item.value">
</el-option>
</el-select>
</div>
<div class="select-popper">
<span :class="{ color_text: jskBidQueryDto.tenderingManner.length }">
招采交易类型{{jskBidQueryDto.tenderingManner.length? jskBidQueryDto.tenderingManner.length + "项" : ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="jskBidQueryDto.tenderingManner" class="select-multiple" multiple placeholder="请选择">
<el-option v-for="(item, i) in tenderingMannerOptions" :key="i" :label="item.label":value="item.value">
</el-option>
</el-select>
</div>
</div>
</div>
<div class="content_item">
<div class="label">更多筛选</div>
<div class="content_right">
<div class="select-popper select-popper1">
<span :class="{color_text: jskBidQueryDto.province.length ||jskBidQueryDto.city.length ||jskBidQueryDto.county.length,}">
行政区划{{jskBidQueryDto.province.length ||jskBidQueryDto.city.length ||jskBidQueryDto.county.length?
jskBidQueryDto.province.length +jskBidQueryDto.city.length +jskBidQueryDto.county.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="punishDatehandleCommand" trigger="click" ref="punishDateShowPopper":hide-on-click="false">
<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>
<div class="select-popper ">
<span :class="{ color_text: jskBidQueryDto.projectType.length }">
项目类别{{jskBidQueryDto.projectType.length? jskBidQueryDto.projectType.length + "项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="jskBidQueryDto.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: jskBidQueryDto.subjectMatter.length }">
招标采购分类{{jskBidQueryDto.subjectMatter.length? jskBidQueryDto.subjectMatter.length + "项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="jskBidQueryDto.subjectMatter" class="select-multiple" multiple placeholder="请选择">
<el-option v-for="(item, i) in subjectMatterOptions" :key="i" :label="item" :value="item">
</el-option>
</el-select>
</div>
<el-dropdown @command="bidMoneyhandleCommand" class="el-dropdown-land" trigger="click" ref="bidMoneyShowPopper":hide-on-click="false">
<span class="el-dropdown-link" :class=" jskBidQueryDto.startBidMoney || jskBidQueryDto.endBidMoney? 'color_text' : ''">
预算金额{{jskBidQueryDto.startBidMoney || jskBidQueryDto.endBidMoney? " 1项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="(item, i) in bidMoneyOptions" :class="jskBidQueryDto.startBidMoney == item.value[0] &&jskBidQueryDto.endBidMoney == item.value[1] &&
!startBidMoney &&!endBidMoney? 'color_text': ''" :key="i" :command="item.value">
{{ item.label }}
</el-dropdown-item>
<el-dropdown-item command="" style="padding: 0; text-indent: 20px">
<div @mouseenter="bidMoneyShowPopper = true" @mouseleave="bidMoneyShowPopper = false">
<span :class="(startBidMoney || endBidMoney) &&jskBidQueryDto.startBidMoney == startBidMoney &&jskBidQueryDto.endBidMoney == endBidMoney? 'color_text' : ''">
自定义<i class="el-icon-arrow-right"></i>
</span>
<div class="jabph_popper_box" style="position: absolute" v-if="bidMoneyShowPopper">
<div class="jabph_popper_wrap">
<el-input class="jabph_popper_input" v-limit-num clearable v-model="startBidMoney"></el-input>
</div>
<div class="jabph_popper_wrap">
<el-input class="jabph_popper_input" v-limit-num clearable v-model="endBidMoney"></el-input>
</div>
<div style="">
<el-button size="mini" @click="bidMoneyCancel">取消</el-button>
<el-button type="primary" size="mini" @click="bidMoneyPopperConfirm">确定
</el-button>
</div>
</div>
</div>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<div class="select-popper">
<span :class="{ color_text: jskBidQueryDto.source.length }">
来源网站{{jskBidQueryDto.source.length? jskBidQueryDto.source.length + "项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<Select ref="sourceNameSelect" @getSelectValue="getSourceName" />
</div>
<div class="select-popper">
<span :class="{ color_text: jskBidQueryDto.phonePoint.length }">
有无联系电话{{jskBidQueryDto.phonePoint.length? jskBidQueryDto.phonePoint.length + "项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="jskBidQueryDto.phonePoint" class="select-multiple" multiple placeholder="请选择" @change="phonePointBtn">
<el-option v-for="(item, i) in phonePointType" :key="i" :label="item.label":value="item.value">
</el-option>
</el-select>
</div>
</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">
<p>共有{{total}}</p>
<p>
<img src="@/assets/images/EXCEL.png" alt="">
<span>导出EXCEL</span>
</p>
</div>
<ul class="bottomlist-content">
<li class="bottomlist-list">
<p class="list-titel">
<router-link :to="'/radar/Tender/details/'+ 1" tag="a" class="list-titel-a">轨道交通13号线扩能提升工程</router-link>
</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 class="blue">江西合胜合招标咨询有限公司</span>
</p>
</div>
<div class="list-content">
<p class="list-content-text">
<span>预算金款:</span>
<span>123,456,78万元</span>
</p>
<p class="list-content-text">
<span>联系方式:</span>
<span >招采单位 张工 123456789</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 >2022-04-21</span>
</p>
<p class="list-content-text">
<span>开标时间:</span>
<span >2022-04-21</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 Select from "./Select.vue";
import jsk_data from '../../../../../public/jsk.json';
export default {
name: 'Tender',
components: {
Select
},
data() {
return {
//有无联系方式
phonePointType: [{
value: '',
label: '不限'
},
{
value: 'hasPhone',
label: '有联系电话'
},
{
value: 'hasContactTel',
label: '有招标单位联系电话'
},
{
value: 'hasAgencyTel',
label: '有代理机构联系电话'
},
{
value: 'noPhone',
label: '无联系电话'
}
],
phonePointList: [],
punishDateOptions: [{
label: "不限",
value: "",
},
{
label: "今天",
value: "今天",
},
{
label: "近3日",
value: "近3日",
},
{
label: "近7日",
value: "近7日",
},
{
label: "近1个月",
value: "近1个月",
},
{
label: "近3个月",
value: "近3个月",
},
{
label: "近半年",
value: "近半年",
},
{
label: "近1年",
value: "近1年",
},
],
addressList: [],
addressType: [],
props: {
multiple: true,
expandTrigger: "hover",
value: "id",
},
keyword: "",
keywordNot: "",
tenderType: "",
tenderTypeOptions: [{
value: "不限",
key: "",
status: true,
},
{
value: "招标采购信息",
key: "招标采购信息",
status: false,
},
{
value: "中标、成交信息",
key: "中标、成交信息",
status: false,
},
{
value: "参投信息",
key: "参投信息",
status: false,
},
],
tenderStageOptions: [{
value: "招标公告",
label: "招标公告",
},
{
value: "招标计划",
label: "招标计划",
},
{
value: "补充公告",
label: "补充公告",
},
{
value: "终止公告",
label: "终止公告",
},
{
value: "废标公告",
label: "废标公告",
},
{
value: "流标公告",
label: "流标公告",
},
{
value: "重新招标",
label: "重新招标",
},
{
value: "更正公告",
label: "更正公告",
},
{
value: "资格预审公告",
label: "资格预审公告",
},
{
value: "澄清公告",
label: "澄清公告",
},
{
value: "答疑补遗公告",
label: "答疑补遗公告",
}
],
tenderStageOptions2: [{
value: "中标公示",
label: "中标公示",
},
{
value: "中标公告",
label: "中标公告",
},
{
value: "成交",
label: "成交",
},
{
value: "终止",
label: "终止",
},
{
value: "非标",
label: "非标",
},
{
value: "流标",
label: "流标",
},
{
value: "合同及验收",
label: "合同及验收",
},
],
tenderStageOptions3: [{
value: "开标",
label: "开标",
},
{
value: "参投记录",
label: "参投记录",
},
],
tenderingMannerOptions: [{
value: "询价",
label: "询价",
},
{
value: "比选",
label: "比选",
},
{
value: "邀请",
label: "邀请",
},
{
value: "竞争性谈判",
label: "竞争性谈判",
},
{
value: "竞争性磋商",
label: "竞争性磋商",
},
{
value: "单一来源",
label: "单一来源",
},
{
value: "直接发包",
label: "直接发包",
},
{
value: "竞价",
label: "竞价",
},
{
value: "公开招标",
label: "公开招标",
},
{
value: "其他",
label: "其他",
},
],
scopeOptions: [{
value: "contentInfo",
label: "正文",
},
{
value: "companyName",
label: "企业名称",
},
{
value: "projectName",
label: "项目名称",
},
],
selectedHeight: 64,
projectTypeOptions: [],
contactOptions: [{
value: "不限",
label: "不限",
},
{
value: "有招采单位联系人",
label: "有招采单位联系人",
},
{
value: "有中标单位联系人",
label: "有中标单位联系人",
},
{
value: "有招标代理机构联系人",
label: "有招标代理机构联系人",
},
],
subjectMatterOptions: [
],
jskBidQueryDto: {
province: [],
city: [],
county: [],
tenderStage: [],
tenderingManner: [],
queryScope: [],
projectType: [],
subjectMatter: [],
source: [],
phonePoint: [],
},
page: 1,
limit: 20,
pageFlag: true,
punishDate: "",
punishDateShowPopper: false,
punishDateValue: "",
startBidMoney: "",
endBidMoney: "",
bidMoneyShowPopper: false,
bidMoneyOptions: [{
value: "不限",
label: "不限",
},
{
value: [0, 100],
label: "100万元以下",
},
{
value: [100, 300],
label: "100万-300万元",
},
{
value: [300, 1000],
label: "300万-1000万元",
},
{
value: [1000, 5000],
label: "1000万-5000万元",
},
{
value: [5000, 20000],
label: "5000万-2亿元",
},
{
value: [20000, ""],
label: "2亿元以上",
},
],
fieldshow: false,
fieldText: '默认排序',
field: '', //查询结果排序方式
fieldOptions: [{
key: "",
value: "默认排序",
status: true,
},
{
key: "punishDate",
value: "发布日期从晚到早",
status: false,
},
{
key: "projectAmount",
value: "预算金额从大到小",
status: false,
},
{
key: "overTime",
value: "报名截止日期从晚到早",
status: false,
},
],
domicile: [],
conditionsArr: [],
total: 6000,
page: 1,
pageSize: 20
};
},
computed: {
checkjskBidQueryDto() {
let arr = [];
let flag = false;
let data = {};
let keyid, value, title;
if (this.domicile.length > 0) {
data = {
title: "行政区划:",
value: this.domicile.join(","),
}
arr.push(data)
}
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.jskBidQueryDto.startPunishDate + "~" + this.jskBidQueryDto.endPunishDate,
}
arr.push(data)
}
if (this.punishDateValue && this.punishDateValue != "自定义") {
data = {
title: "发布时间:",
value: this.punishDateValue,
}
arr.push(data)
}
for (var i in this.jskBidQueryDto) {
if (this.jskBidQueryDto[i]) {
keyid = i;
value = this.jskBidQueryDto[i];
if (
Object.prototype.toString.call(this.jskBidQueryDto[i]) ===
"[object Array]"
) {
if (this.jskBidQueryDto[i].length > 0) {
flag = true;
switch (i) {
case 'tenderStage':
title = "招采环节阶段:";
break;
case 'tenderingManner':
title = "招采交易类型:";
break;
case 'projectType':
title = "项目类别:";
break;
case 'subjectMatter':
title = "招标采购分类:";
break;
case 'source':
title = "来源网站:";
break;
case 'phonePoint':
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.$axios.get('https://files.jiansheku.com/file/json/common/searchDic.json').then(res => {
// if (res && res.status == 200) {
// this.projectTypeOptions = res.data.projectType;
// this.subjectMatterOptions = res.data.subjectMatter
// }
// }).catch(error=>{
//   
// });
},
mounted() {
this.addressListfn();
},
methods: {
//有无联系方式
phonePointBtn(e) {
for (var i = 0; e.length > i; i++) {
if (!e[i]) {
this.jskBidQueryDto.phonePoint = []
}
}
},
// 返回单条权限
permissionsJudge(permission, field, pilist) {
return permissionsJudge(permission, field, pilist);
},
goThrough(el, data) {
return goThrough(el, data, this);
},
permissionsField(tagName, permission) {
return permissionsField(tagName, permission);
},
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.jskBidQueryDto));
data.province = data.province.join(",");
data.city = data.city.join(",");
data.county = data.county.join(",");
data.tenderStage = data.tenderStage.join(",");
data.tenderingManner = data.tenderingManner.join(",");
data.queryScope = data.queryScope.join(",");
data.projectType = data.projectType.join(",");
data.subjectMatter = data.subjectMatter.join(",");
data.source = data.source.join(",");
data.phonePoint = data.phonePoint.join(",");
let params = {
page: {
page: this.page,
limit: this.limit,
field: this.field,
},
jskBidQueryDto: data,
};
params.keyword = this.keyword;
params.keywordNot = this.keywordNot;
this.$emit("search", params)
},
selectedHeightfn() {
if (this.selectedHeight == 64) {
this.selectedHeight = 'auto'
} else {
this.selectedHeight = 64;
}
},
reset() {
Object.assign(this.$data, this.$options.data.call(this)); //重置data
this.$refs.sourceNameSelect.selectValue = []
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.subjectMatterOptions = res.data.subjectMatter
}
}).catch(error => {
});
this.search();
this.$emit("reset");
},
handsequencingList(index) {
this.fieldshow = false;
this.field = this.fieldOptions[index].key;
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.search();
},
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);
},
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.jskBidQueryDto));
obj.province = province;
obj.city = city;
obj.county = county;
this.jskBidQueryDto = obj;
},
bidMoneyhandleCommand(command) {
if (command) {
this.$refs.bidMoneyShowPopper.hide();
var obj = JSON.parse(JSON.stringify(this.jskBidQueryDto));
this.startBidMoney = "";
this.endBidMoney = "";
if (command == "不限") {
obj.startBidMoney = "";
obj.endBidMoney = "";
} else {
obj.startBidMoney = command[0];
obj.endBidMoney = command[1];
}
this.jskBidQueryDto = obj;
}
},
bidMoneyPopperConfirm() {
if (
this.startBidMoney &&
this.endBidMoney &&
!(Number(this.endBidMoney) > Number(this.startBidMoney))
) {
return this.$message.warning("最小值必须小于最大值,请重新输入!");
}
this.bidMoneyShowPopper = false;
var obj = JSON.parse(JSON.stringify(this.jskBidQueryDto));
obj.startBidMoney = this.startBidMoney;
obj.endBidMoney = this.endBidMoney;
this.jskBidQueryDto = obj;
this.$refs.bidMoneyShowPopper.hide();
},
bidMoneyCancel() {
this.bidMoneyShowPopper = false;
this.$refs.bidMoneyShowPopper.hide();
},
punishDatehandleCommand(command) {
var obj = JSON.parse(JSON.stringify(this.jskBidQueryDto));
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 "近3日":
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 "近7日":
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 "近1个月":
if (Month > 1) {
startTime = Year + "-" + (Month - 1) + "-1";
} else {
startTime = Year - 1 + "-" + (12 + Month - 1) + "-1";
}
endTime = Year + "-" + Month + "-" + Day;
break;
case "近3个月":
if (Month > 3) {
startTime = Year + "-" + (Month - 3) + "-1";
} else {
startTime = Year - 1 + "-" + (12 + Month - 3) + "-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.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.startPunishDate = startTime;
obj.endPunishDate = endTime;
} else if (command == "自定义") {
this.$refs.datePicker.pickerVisible = true;
} else {
this.$refs.punishDateShowPopper.hide();
this.punishDateValue = "";
this.punishDate = "";
obj.startPunishDate = "";
obj.endPunishDate = "";
}
this.jskBidQueryDto = obj;
},
clearContractSignTime() {
this.punishDate = "";
this.punishDateValue = "";
var obj = JSON.parse(JSON.stringify(this.jskBidQueryDto));
obj.startPunishDate = "";
obj.endPunishDate = "";
this.jskBidQueryDto = obj;
},
changepunishDate() {
if (this.punishDate) {
this.punishDateValue = "自定义";
var obj = JSON.parse(JSON.stringify(this.jskBidQueryDto));
obj.startPunishDate = this.punishDate[0];
obj.endPunishDate = this.punishDate[1];
this.jskBidQueryDto = 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;
});
}
},
tenderTypeClick(index) {
this.tenderTypeOptions.map((item) => {
item.status = false;
});
if (index == 2) {
this.tenderStageOptions = this.tenderStageOptions2;
}
if (index == 3) {
this.tenderStageOptions = this.tenderStageOptions3;
}
this.tenderTypeOptions[index].status = true;
},
getSourceName(arr) {
for (var a in arr) {
if (arr[a] == "不限") {
this.jskBidQueryDto.source = [];
this.$refs.sourceNameSelect.selectValue = [];
this.$refs.sourceNameSelect.$refs.select.blur();
} else {
this.jskBidQueryDto.source = arr;
}
}
},
},
};
</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: end;
align-items: center;
margin-top: 12px;
padding: 24px;
border-bottom: 1px solid #EFEFEF;
p:first-child {
font-size: 12px;
font-weight: 400;
color: #3D3D3D;
margin-right: 10px;
}
p:last-child {
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: 14px;
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: 12px;
margin-bottom:4px;
.list-label {
background: #F3F3FF;
color: #8491E8;
border-radius: 1px 1px 1px 1px;
padding: 3px 7px;
font-size: 12px;
}
.list-label-zb{
font-weight: 400;
color: #5A88F9;
background: #E7EDFC;
}
.list-label-lx{
font-weight: 400;
color: #41A1FD;
background: #E4F3FD;
}
}
.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;
}
}
}
}
.bottomlist-list:hover {
background: #F6F9FC;
cursor: pointer;
}
.pagination {
padding: 14px;
.el-pagination {
float: right;
}
}
}
</style>
<style lang="scss" scoped>
#tender_wrap {
padding: 0 16px;
font-size: 14px;
.tender_content_wrap {
display: flex;
.tender_content_wrap_label {
color: #666666;
margin-right: 4px;
}
.tender_content_wrap_item {
display: inline-block;
height: 28px;
line-height: 28px;
padding: 0 12px;
margin-right: 24px;
color: #333333;
cursor: pointer;
&:hover {
background: #e5f2ff;
color: #0081ff;
border-radius: 2px 2px 2px 2px;
}
}
.tender_content_wrap_item_active {
background: #0081ff;
color: #ffffff;
border-radius: 2px 2px 2px 2px;
}
}
.tender_content_wrap1 {
margin-bottom: -2.5px;
}
.data_list {
width: 1200px;
margin: 0 auto;
margin-left: -16px;
padding: 0 16px;
box-sizing: border-box;
.data_list_head {
height: 50px;
line-height: 50px;
color: #666666;
.data_list_count {
color: #ff2a00;
font-weight: bold;
}
}
.data_list_item {
border-top: 1px solid #efefef;
padding: 24px 16px;
padding-left: 16px;
margin-left: -16px;
width: 1200px;
&:hover {
background: #f5faff;
}
.data_list_h1 {
width: 1168px;
font-size: 18px;
font-weight: bold;
color: #333333;
line-height: 24px;
margin-bottom: 10px;
word-break: break-all;
display: inline-block;
}
.data_list_h1_1 {
cursor: pointer;
}
.label_box {
padding-bottom: 6px;
display: flex;
.label_span {
padding: 0 8px;
display: inline-block;
height: 22px;
line-height: 22px;
border-radius: 2px 2px 2px 2px;
margin-right: 8px;
font-size: 12px;
}
.label_span1 {
background: #e4f3fd;
color: #41A1FD;
}
.label_span2 {
background: #f3f3ff;
color: #8491e8;
}
.label_span3 {
background: #e8f7f0;
color: #38c8bf;
}
}
.label_wrap {
font-size: 14px;
margin-top: 10px;
line-height: 18px;
display: flex;
.label_item {
color: #999999;
}
.company {
color: #0081ff;
cursor: pointer;
margin-right: 20px;
}
.label_con {
color: #333333;
margin-right: 20px;
}
.label_con1 {
width: 1095px;
margin: 0;
text-overflow: ellipsis;
white-space: nowrap;
display: inline-block;
overflow: hidden;
}
.label_con2 {
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
max-width: 560px;
display: inline-block;
}
}
}
}
.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: 71px;
height: 40px;
text-align: center;
line-height: 40px;
}
.el-input {
line-height: 40px;
border-radius: 0;
.el-input__inner {
width: 100%;
height: 40px;
line-height: 40px;
border-radius: 0;
}
}
.commonly-input {
.el-input__inner {
padding-right: 100px;
}
}
.commonly {
position: absolute;
top: 10px;
right: 16px;
font-size: 14px;
font-weight: 400;
color: #0081ff;
cursor: pointer;
}
}
}
}
}
</style>
\ No newline at end of file
<template>
<!-- 招标公告 -->
<!-- 标讯pro -->
<div >
<div class="content">
<div class="content_item">
......@@ -41,11 +40,21 @@
<div class="content_item">
<div class="label">项目名称</div>
<div class="content_right">
<el-input class="ename_input"
placeholder="请输入项目名称关键字" v-model="keyword" ></el-input>
<div class="content_right content_right1">
<div class="include-keywords">
<span class="lefttltel" style=" border-radius: 1px 0px 0px 1px;">包含</span>
<el-input class="commonly-input" v-model="keyword" style="width: 660px;"placeholder="多个关键词用空格隔开,如:市政 园林" />
<span class="commonly" @click="cliclikeywoder()">推荐关键词</span>
</div>
<div class="include-keywords">
<span class="lefttltel" style=" border-radius: 1px 0px 0px 1px;">排除</span>
<el-input style="width: 472px;" v-model="keywordNot" placeholder="多个关键词用空格隔开,如:市政 园林" />
</div>
</div>
</div>
<div class="content_item">
<div class="label">项目名称</div>
<div class="content_right">
......@@ -160,13 +169,13 @@
</div>
</div>
<div class="content_item">
<div class="label">项目</div>
<div class="label">项目投资</div>
<div class="content_right content_right1">
<div class="land_content_wrap-flex">
<div class="land_content_wrap_label" >
项目投资额
<!-- <div class="land_content_wrap_label" >
</div>
</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>
......@@ -204,352 +213,196 @@
</div>
</div>
<div class="content_item">
<div class="label">建安费暂估</div>
<div class="content_right content_right1">
<div class="land_content_wrap-flex">
<el-input class="other_ipt" placeholder="输入最低金额" @change="changeMoney('start','startProjectSafeAmount','endProjectSafeAmount')" v-limit-num clearable
v-model="jskBidNewsDto.startProjectSafeAmount"></el-input>
<span class="other_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="other_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="other_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>
<div class="content_item">
<div class="label">资质要求</div>
<div class="content_right">
<el-input class="ename_input"
placeholder="请输入关键词句,如:施工总承包三级" v-model="jskBidNewsDto.qualiLimit" ></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" >
</el-tooltip>
</span>
</div>
</div>
<div class="content_item">
<div class="label">业绩要求</div>
<div class="content_right">
<el-input class="ename_input"
placeholder="请输入关键词句,如:建筑工程" v-model="jskBidNewsDto.projectLimit" ></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" >
</el-tooltip>
</span>
</div>
</div>
<div class="content_item">
<div class="label">人员要求</div>
<div class="content_right">
<el-input class="ename_input"
placeholder="请输入关键词句,如:建筑工程" v-model="jskBidNewsDto.personLimit" ></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" >
</el-tooltip>
</span>
</div>
</div>
<div class="content_item content_item_padding0">
<div class="geduan">
</div>
</div>
<div class="content_item content_item_padding0">
<div class="label">招标人</div>
<div class="content_right content_right1">
<div class="content_right1-flex">
<el-input style="width: 520px;" v-model="jskBidNewsDto.tenderee"clearable placeholder="请输入关键字"/>
</div>
<div class="content_right1-flex" style="margin-left: 106px;">
<div class="label-zi" >
代理机构
</div>
<el-input style="width: 520px;" v-model="jskBidNewsDto.agency" clearable placeholder="请输入关键字"/>
</div>
</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="content">
<!--条件-->
<div id="tender_wrap" class="content_wrap">
<template>
<div class="land_content_wrap ">
<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>
<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>
<div class="table-item">
<el-table :data="tableData" element-loading-text="Loading" border fit highlight-current-row>
<el-table-column label="序号" width="60">
<template slot-scope="scope">
1
</template>
</el-table-column>
<el-table-column label="发布日期" width="160" >
<template slot-scope="scope">
通过
</template>
</el-table-column>
<el-table-column label="项目名称" >
<template slot-scope="scope">
<router-link :to="'/radar/bxprozbgg/details/'+ 1" tag="a" class="list-titel-a" >绿色节能型压缩机基础件、汽车零配件新建项目 (芜湖旭日机械制造有限公司)</router-link>
</template>
</el-table-column>
<el-table-column label="工程用途" width="200" >
<template slot-scope="scope">
--
</template>
</el-table-column>
<el-table-column prop="zj" label="项目金额" width="200" >
<template slot-scope="scope">
2022-08-28
</template>
</el-table-column>
</el-table>
</div>
<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>
<!-- 关键词弹窗 -->
<Keyword ref="keyword" @keywordClick="keywordClick" />
</div>
</template>
<script>
import jsk_data from '../../../../../public/jsk.json';
import jsk_data from '../../../../../public/jsk.json';
import Keyword from "@/components/Keyword";
export default {
name: "bxprozbgg",
components: {
Keyword
},
data(){
return{
......@@ -897,10 +750,20 @@ import jsk_data from '../../../../../public/jsk.json';
projectLevel: [],
},
tableData: [],
id:"",
companyName1:"",
type:"",
tableData: [{
id: 0,
name: '20重庆债14(2005938)',
time: '2020-09-18',
gm: '285.24',
zj: '否',
}],
total:6000,
page:1,
pageSize:20,
permissions:{
"search": [
{
......@@ -1984,7 +1847,7 @@ import jsk_data from '../../../../../public/jsk.json';
});
},
reset1(){
reset(){
Object.assign(this.$data, this.$options.data.call(this)); //重置data
// this.clickProvince(0,1);
this.bxproggSearch();
......@@ -2115,6 +1978,52 @@ import jsk_data from '../../../../../public/jsk.json';
}
}
}
.include-keywords {
display: flex;
align-items: center;
position: relative;
.lefttltel {
display: inline-block;
background: #F3F4F5;
color: #333;
border: 1px solid #F3F4F5;
border-right: none;
opacity: 1;
width: 44px;
height: 34px;
text-align: center;
line-height: 34px;
}
.el-input {
line-height: 34px;
border-radius: 0;
::v-deep .el-input__inner {
height: 34px;
line-height:34px;
border-radius: 0;
}
}
.commonly-input {
::v-deep .el-input__inner {
padding-right: 100px;
}
}
.commonly {
position: absolute;
top: 8px;
right: 16px;
font-size: 14px;
font-weight: 400;
color: #0081ff;
cursor: pointer;
}
}
.ename_input{
width: 640px;
......@@ -2125,8 +2034,8 @@ import jsk_data from '../../../../../public/jsk.json';
}
.land_content_wrap-flex{
display: flex;
line-height: 34px;
margin-right: 33px;
line-height: 28px;
margin-right: 102px;
}
.land_content_wrap-flex:last-child{
margin-right: 0;
......@@ -2140,9 +2049,11 @@ import jsk_data from '../../../../../public/jsk.json';
.other_ipt {
width: 104px;
height: 34px;
height: 28px;
line-height: 28px;
::v-deep .el-input__inner {
width: 104px;
height: 28px;
line-height: 28px;
padding: 0 8px;
}
......@@ -2155,7 +2066,13 @@ import jsk_data from '../../../../../public/jsk.json';
span{
color: #333333;
}
.el-button{
height: 26px;
line-height: 26px;
}
width: 49px;
height: 26px;
line-height: 26px;
padding: 0 8px;
}
}
......@@ -2166,10 +2083,30 @@ import jsk_data from '../../../../../public/jsk.json';
font-weight: 400;
color: #232323;
}
.land_content_wrap_label_tipspan{
display: inline-block;
line-height: 34px;
position: relative;
.tip_svg{
width: 16px;
height: 16px;
margin-left: 4px;
}
}
}
.content_right1{
display: flex;
.content_right1-flex{
align-items: center;
display: flex;
.label-zi{
font-size: 14px;
font-weight: 400;
color: rgba(35, 35, 35, 0.8);
margin-right:24px ;
}
}
}
.item_ckquery_list {
......@@ -2239,7 +2176,6 @@ import jsk_data from '../../../../../public/jsk.json';
align-items: center;
margin-top: 12px;
padding: 16px ;
border-bottom: 1px solid #EFEFEF;
.title-right{
display: flex;
......@@ -2264,491 +2200,25 @@ import jsk_data from '../../../../../public/jsk.json';
}
}
.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;
}
.table-item{
padding:0px 16px;
.list-titel-a{
color:#0081FF;
}
.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;
.bottomlist-content{
padding-bottom: 0px;
}
.pagination{
padding: 14px ;
.el-pagination{
float: right;
margin-right:-8px;
}
}
}
</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>
......@@ -72,8 +72,8 @@
<div class="content_item content_item_padding0">
<div class="search-new">
<span>查询</span>
<span>重置</span>
<span @click="search()">查询</span>
<span @click="reset">重置</span>
</div>
</div>
......@@ -448,6 +448,12 @@
},
handleCurrentChange(val){
},
search(){
},
reset(){
}
}
}
......
......@@ -21,6 +21,11 @@
<Establishment v-if="personnelHerf=='Establishment'" />
<!-- 标讯pro -->
<bxprozbgg v-if="personnelHerf=='bxprozbgg'" />
<!-- 公招标讯 -->
<Tender v-if="personnelHerf=='Tender'" />
<!-- 开标记录 -->
<BidRecord v-if="personnelHerf=='BidRecord'" />
</div>
......@@ -30,10 +35,13 @@
import Land from "./components/Land/index.vue";
import Establishment from "./components/Establishment/index.vue";
import bxprozbgg from "./components/bxprozbgg/index.vue";
import Tender from "./components/Tender/index.vue";
import BidRecord from "./components/BidRecord/index.vue";
import "@/assets/styles/public.css";
export default {
name: 'radar',
components: { debtProject,Land,Establishment,bxprozbgg },
components: { debtProject,Land,Establishment,bxprozbgg,Tender,BidRecord },
data() {
return {
// tablist
......@@ -68,13 +76,13 @@
},
{
key: 'KeyPersonnel',
key: 'Tender',
status: false,
value: '公招标讯',
},
{
key: 'KeyPersonnel',
key: 'BidRecord',
status: false,
value: '开标记录',
......
......@@ -19,7 +19,7 @@ public class CustomerBusinessListVo implements Serializable {
/**
* 项目名称
*/
private String projcetName;
private String projectName;
/**
* 项目阶段
*/
......
package com.dsk.system.service;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.OpRegionalEconomicDataRegionalListDto;
import com.dsk.common.dtos.OpRegionalEconomicDataStatisticsRegionalDto;
import com.dsk.common.dtos.OpRegionalEconomicDataV1Dto;
import com.dsk.common.dtos.OpRegionalEconomicDataV1PageDto;
......@@ -39,7 +41,7 @@ public interface EconomicService {
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult statisticsRegional(OpRegionalEconomicDataV1Dto dto);
AjaxResult statisticsRegional(OpRegionalEconomicDataStatisticsRegionalDto dto);
/***
*@Description: 地区经济-分页列表
......@@ -48,7 +50,7 @@ public interface EconomicService {
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult regionalList(OpRegionalEconomicDataV1Dto dto);
AjaxResult regionalList(OpRegionalEconomicDataRegionalListDto dto);
/***
*@Description: 地区经济-分页列表
......
......@@ -76,15 +76,16 @@ public class CustomerServiceImpl implements ICustomerService {
@Override
@Transactional(rollbackFor = Exception.class)
public boolean add(Customer customer) {
try {
R res = enterpriseService.getUipId(customer.getCompanyName());
if (!ObjectUtils.isEmpty(res.getData())) {
customer.setUipId(MapUtil.getStr(BeanUtil.beanToMap(res.getData()), "uipId"));
if (ObjectUtils.isEmpty(customer.getUipId())) {
try {
R res = enterpriseService.getUipId(customer.getCompanyName());
if (!ObjectUtils.isEmpty(res.getData())) {
customer.setUipId(MapUtil.getStr(BeanUtil.beanToMap(res.getData()), "uipId"));
}
} catch (Exception e) {
log.error("获取城投平台企业id错误!error:{}", e.getMessage());
}
} catch (Exception e) {
log.error("获取城投平台企业id错误!error:{}", e.getMessage());
}
Long userId = SecurityUtils.getUserId();
customer.setCreateId(userId);
customer.setUpdateId(userId);
......
......@@ -2,6 +2,8 @@ package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.OpRegionalEconomicDataRegionalListDto;
import com.dsk.common.dtos.OpRegionalEconomicDataStatisticsRegionalDto;
import com.dsk.common.dtos.OpRegionalEconomicDataV1Dto;
import com.dsk.common.dtos.OpRegionalEconomicDataV1PageDto;
import com.dsk.common.utils.DskOpenApiUtil;
......@@ -40,13 +42,13 @@ public class EconomicServiceImpl implements EconomicService {
}
@Override
public AjaxResult statisticsRegional(OpRegionalEconomicDataV1Dto dto) {
public AjaxResult statisticsRegional(OpRegionalEconomicDataStatisticsRegionalDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/economic/statistics/regional", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult regionalList(OpRegionalEconomicDataV1Dto dto) {
public AjaxResult regionalList(OpRegionalEconomicDataRegionalListDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/economic/regional/list", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
......
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