Commit bf408542 authored by dengguangman's avatar dengguangman

Merge remote-tracking branch 'origin/master'

parents ea9ac2ac 83de0287
......@@ -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));
}
/**
......
......@@ -21,7 +21,7 @@ public class EnterpriseUipSearchBody extends BasePage {
/*
* 1金额倒序,2金额正序,3时间倒序,4时间正序
* 1供应商倒序,2供应商正序,3拟建项目倒序,4拟建项目正序,5招标公告倒序,6招标公告正序
*/
@NotNull(message = "排序条件不能为空")
private Integer sort;
......
......@@ -36,8 +36,8 @@ export function getXMSL(param) {
method: 'GET',
})
}
//项目速览修改
export function editXMSL(param) {
//项目内容修改
export function editXMNR(param) {
return request({
url: '/business/info/edit',
method: 'POST',
......@@ -71,3 +71,56 @@ export function addLXR(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;
}
}
......
......@@ -568,6 +568,7 @@
.el-input{
display: inline-block;
margin-right: 12px;
position: relative;
.el-input__inner{
height: 32px;
padding: 0;
......@@ -580,7 +581,8 @@
.el-input__prefix{
left: 8px;
top: 3px;
top: -2px;
position: absolute;
}
.el-input__suffix{
height: 32px;
......
......@@ -185,6 +185,21 @@ export const constantRoutes = [
}
]
},
{
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' }
}
]
},
]
// 动态路由,基于用户权限动态去加载
......
......@@ -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">
<div class="main-box">
<el-timeline>
<el-timeline-item
v-for="(item, index) in trendsList"
:key="index"
icon="el-icon-time">
{{item.main}}
<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,53 @@ 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: {
disabled: true,
focus: 'none'
},
//设置折线颜色和粗细
lineStyle: {
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: {
......@@ -398,7 +622,7 @@ export default {
},
//设置折线颜色和粗细
lineStyle: {
width: 1,
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]
},
a2: {
backgroundColor: { image: this.rankIcons[1] },
width: this.rankIconsSize,
height: this.rankIconsSize,
align: "center",
},
a3: {
backgroundColor: { image: this.rankIcons[2] },
width: this.rankIconsSize,
height: this.rankIconsSize,
align: "center",
},
a4: {
backgroundColor: { image: this.rankIcons[3] },
width: this.rankIconsSize,
height: this.rankIconsSize,
align: "center",
},
a5: {
backgroundColor: { image: this.rankIcons[4] },
width: this.rankIconsSize,
height: this.rankIconsSize,
align: "center",
},
},
formatter: (params, index) => {
return [`{a${index + 1}|} ${params}`].join('\n')
1: {
height: 24,
width: 24,
align: 'center',
backgroundColor: {
image: rankPic[0]
},
},
2: {
height: 24,
width: 24,
align: 'center',
backgroundColor: {
image: rankPic[1]
}
},
3: {
height: 24,
width: 24,
align: 'center',
backgroundColor: {
image: rankPic[2]
}
},
4: {
height: 24,
width: 24,
align: 'center',
backgroundColor: {
image: rankPic[3]
}
},
5: {
height: 24,
width: 24,
align: 'center',
backgroundColor: {
image: rankPic[4]
}
},
}
},
},
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,12 +1143,19 @@ export default {
}
}
.select-popper{
.area{
font-size: 14px;
color: #232323;
cursor: pointer;
i{
color:#A7A7A7;
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{
......@@ -763,10 +1164,34 @@ export default {
margin-left: 16px;
cursor: pointer;
i{
color:#A7A7A7;
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%;
}
}
}
.select-popper:hover{
.area,.month{
color: #0081FF;
i{
background: url("../assets/images/index/sjx1.png");
background-size: 100% 100%;
}
}
}
}
.content-db{
height: 263px;
background: #FFFFFF;
......@@ -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;
}
}
.select-popper{
position: absolute;
right: 0;
top: 27px;
z-index: 99;
.area{
font-size: 14px;
color: #232323;
margin-left: 16px;
cursor: pointer;
i{
color:#A7A7A7;
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">
<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">
......@@ -55,6 +60,7 @@
</el-form-item>
</el-form>
</div>
</div>
</template>
<script>
......@@ -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;
......
......@@ -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 class="tables" v-if="recordlist.total>0">
</div>
</div>
</div>
<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>
......
......@@ -200,7 +200,7 @@
<script>
import "@/assets/styles/project.scss"
import {getJSNR,editXMSL} from '@/api/project/project'
import {getJSNR,editXMNR} from '@/api/project/project'
export default {
name: 'jsnr',
data(){
......@@ -249,7 +249,7 @@
this.nowedit = -1
let param = str
param.id = this.id
editXMSL(param).then(result=>{
editXMNR(param).then(result=>{
if(result.code == 200)
this.$message.success('修改成功')
else{
......
......@@ -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>
......@@ -190,6 +190,8 @@
getDictType('project_stage_type').then(result=>{
this.projectStage = result.code == 200 ? result.data:[]
})
this.xmjd = this.datas.projectStage
this.tipslit = this.datas.labelList
},
methods:{
//验证电话号码
......
......@@ -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>
......@@ -163,7 +164,7 @@
domicile:[],
props:{ checkStrictly: true, expandTrigger: 'hover' },
id:'',
ProjectData:null,
ProjectData:{},
}
},
created(){
......@@ -183,9 +184,23 @@
})
//获取基本信息
getXMSL(this.id).then(result=>{
this.ProjectData = result.code==200?result.data:[]
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: {
......@@ -218,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)
},
//内容组件切换
......@@ -236,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)=>{
......
<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>
<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 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 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;">
<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 +"项": ""
}}
行政区划{{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
......@@ -45,6 +34,7 @@
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项" : ""}}
......@@ -52,7 +42,7 @@
</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">
<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">
......@@ -78,6 +68,7 @@
</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>
......@@ -108,85 +99,95 @@
</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 class="content_item content_item_padding0">
<div class="geduan">
</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 class="content_item content_item_padding0">
<div class="search-new">
<span @click="search()">查询</span>
<span @click="reset">重置</span>
</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 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 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>
</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 {
width: 174px;
<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;
}
.other_ipt1 {
width: 187px;
.el-input-group__append {
}
.item_ckquery_list {
display: flex;
}
.item_ckquery_list .el-input__icon {
position: relative;
top: 1px;
}
.ckquery_list_right {
width: 640px;
}
.register_count_ipt{
margin-left: 0px;
}
.register_count_ipt .el-input__inner{
width: 174px;
}
::v-deep .el-input-group__prepend{
padding: 0 8px;
}
.content-projecttype{
display: flex;
align-items: center;
justify-content: center;
.projecttype{
font-weight: 400;
color: #232323;
padding: 1px 5px;
margin-right: 4px;
cursor: pointer;
border-radius: 3px 3px 3px 3px;
font-size: 14px;
}
}
.projecttype:first-child{
padding-left: 0px;
}
.projecttype:hover{
background: #F3F4F5;
padding: 1px 5px;
}
.activetype{
background: #F3F4F5;
padding: 1px 5px !important;
}
}
}
.content_item_padding0{
padding: 0;
}
}
.bottomlist{
width: 100%;
background-color: #FFFFFF;
border-radius: 4px 4px 4px 4px;
.bottomlist-title{
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 12px;
padding: 16px ;
border-bottom: 1px solid #EFEFEF;
.title-right{
display: flex;
align-items: center;
p:first-child{
font-size: 12px;
font-weight: 400;
color: #3D3D3D;
margin-right: 10px;
}
p:last-child{
display: flex;
align-items: center;
font-size: 14px;
font-weight: 400;
color: rgba(35,35,35,0.8);
}
img{
width: 18px;
height: 18px;
}
}
}
.bottomlist-content{
padding-bottom: 0px;
}
.bottomlist-list{
padding: 16px;
font-size: 14px;
border-bottom: 1px solid #EFEFEF;
padding-bottom: 14px;
.list-titel{
font-size: 16px;
font-weight: 700;
color: #3D3D3D;
line-height: 19px;
.list-titel-a{
text-decoration: none;
color:#3D3D3D;
}
a:hover, a:visited, a:link, a:active{
color:#3D3D3D;
}
}
.content-label{
margin-top: 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>
......@@ -106,7 +106,7 @@
</el-option>
</el-select>
</div>
<el-dropdown @command="bidMoneyhandleCommand" trigger="click" ref="bidMoneyShowPopper":hide-on-click="false">
<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>
......@@ -144,10 +144,10 @@
</el-dropdown>
<div class="select-popper">
<span :class="{ color_text: jskBidQueryDto.source.length }">
源网站{{jskBidQueryDto.source.length? jskBidQueryDto.source.length + "项": ""}}
源网站{{jskBidQueryDto.source.length? jskBidQueryDto.source.length + "项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<!-- <Select ref="sourceNameSelect" @getSelectValue="getSourceName" /> -->
<Select ref="sourceNameSelect" @getSelectValue="getSourceName" />
</div>
<div class="select-popper">
<span :class="{ color_text: jskBidQueryDto.phonePoint.length }">
......@@ -175,146 +175,92 @@
</div>
</div>
</div>
<div id="tender_wrap">
<div class="data_list" v-if="false">
<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="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">
{{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 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 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/bx/${deleteChar(item.id)}.html`"
target="_blank"
:title="item.projectName.replace(/<font color='#FF204E'>/g,'').replace(/<\/font>/g,'')"
v-if="item.id && item.projectName" v-html="item.projectName"></nuxt-link>
<div class="data_list_h1" v-else-if="item.projectName" v-html="item.projectName"></div>
<div class="label_box" v-if="
item.tenderStage ||
item.domicile ||
item.tenderingManner ||
item.projectType
">
<span class="label_span label_span1"
v-if="item.tenderStage&&item.tenderStage!='其他'&&item.tenderStage!='空白'">{{
item.tenderStage
}}</span>
<span class="label_span label_span2" v-if="item.domicile">{{
item.domicile
}}</span>
<span class="label_span label_span3"
v-if="item.tenderingManner&&item.tenderingManner!='其他'&&item.tenderingManner!='空白'">{{
item.tenderingManner
}}</span>
<span class="label_span label_span3"
v-if="item.projectType&&item.projectType!='其他'&&item.projectType!='空白'">{{
item.projectType
}}</span>
</div>
<div class="label_wrap" v-if="item.companyName || item.agency">
<template v-if="item.companyName">
<span class="label_item">招采单位:</span>
</template>
<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>
<template v-if="item.agency">
<span class="label_item">代理单位:</span>
</template>
</div>
<div class="label_wrap" v-if="item.bidMoney || item.agencyContactTel || item.contactTel">
<template v-if="item.bidMoney">
<span class="label_item">预算金额:</span><span
class="label_con">{{ item.bidMoney }}万元</span>
</template>
<template v-if="item.contactTel || item.agencyContactTel">
<span class="label_item">联系方式:</span><span class="label_con">
<template v-if="item.contactTel">招采单位 {{ item.contact }} {{ item.contactTel
}}{{
item.contactTel && item.agencyContactTel ? ";" : ""
}}</template>
<template v-if="item.agencyContactTel">代理单位 {{ item.agencyContact }}
{{ item.agencyContactTel }}</template>
</span>
</template>
</div>
<div class="label_wrap" v-if="item.contentInfo">
<span class="label_item" style="position:relative;top:-4px;">正文内容:</span><span
class="label_con label_con1" v-html="item.contentInfo"></span>
</div>
<div class="label_wrap" v-if="item.punishDate || item.overTime">
<template v-if="item.punishDate">
<span class="label_item">发布时间:</span><span
class="label_con">{{ item.punishDate }}</span>
</template>
<template v-if="item.overTime">
<span class="label_item">报名截止日期:</span><span
class="label_con">{{ item.overTime }}</span>
</template>
<template v-if="item.source">
<span class="label_item">来源网站:</span>
<span class="label_con">{{ item.source }}</span>
<!--<el-popover
placement="bottom"
trigger="hover"
:content="item.otherSourceText">
<span slot="reference" class="label_con label_con2" >
<template v-for="(item1,index) in item.otherSource" >
{{item1.sourceName}}{{index == item.otherSource.length - 1 ?"":"、"}}
</template>
</span>
</el-popover>-->
</template>
</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 "@/components/businessOpportunities/Select.vue";
import Select from "./Select.vue";
import jsk_data from '../../../../../public/jsk.json';
export default {
name: 'Tender',
components: {
// Select
Select
},
data() {
......@@ -1308,7 +1254,8 @@
}
.content-label {
margin-top: 7px;
margin-top: 12px;
margin-bottom:4px;
.list-label {
background: #F3F3FF;
......@@ -1319,6 +1266,16 @@
font-size: 12px;
}
.list-label-zb{
font-weight: 400;
color: #5A88F9;
background: #E7EDFC;
}
.list-label-lx{
font-weight: 400;
color: #41A1FD;
background: #E4F3FD;
}
}
......
......@@ -23,6 +23,8 @@
<bxprozbgg v-if="personnelHerf=='bxprozbgg'" />
<!-- 公招标讯 -->
<Tender v-if="personnelHerf=='Tender'" />
<!-- 开标记录 -->
<BidRecord v-if="personnelHerf=='BidRecord'" />
......@@ -34,11 +36,12 @@
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,Tender },
components: { debtProject,Land,Establishment,bxprozbgg,Tender,BidRecord },
data() {
return {
// tablist
......@@ -79,7 +82,7 @@
},
{
key: 'KeyPersonnel',
key: 'BidRecord',
status: false,
value: '开标记录',
......
......@@ -76,6 +76,7 @@ public class CustomerServiceImpl implements ICustomerService {
@Override
@Transactional(rollbackFor = Exception.class)
public boolean add(Customer customer) {
if (ObjectUtils.isEmpty(customer.getUipId())) {
try {
R res = enterpriseService.getUipId(customer.getCompanyName());
if (!ObjectUtils.isEmpty(res.getData())) {
......@@ -84,7 +85,7 @@ public class CustomerServiceImpl implements ICustomerService {
} catch (Exception e) {
log.error("获取城投平台企业id错误!error:{}", e.getMessage());
}
}
Long userId = SecurityUtils.getUserId();
customer.setCreateId(userId);
customer.setUpdateId(userId);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment