Commit 96a0f6b1 authored by Administrator's avatar Administrator

Merge remote-tracking branch 'origin/dev20230707' into dev20230707

parents e34a9a66 8138fdd0
...@@ -78,7 +78,7 @@ ...@@ -78,7 +78,7 @@
</configuration> </configuration>
</plugin> </plugin>
</plugins> </plugins>
<finalName>${project.artifactId}</finalName> <finalName>dsk-operate-sys</finalName>
</build> </build>
</project> </project>
package com.dsk.web.controller.common; package com.dsk.web.controller.common;
import java.awt.*;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.IOException; import java.io.IOException;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
...@@ -72,7 +73,8 @@ public class CaptchaController ...@@ -72,7 +73,8 @@ public class CaptchaController
else if ("char".equals(captchaType)) else if ("char".equals(captchaType))
{ {
capStr = code = captchaProducer.createText(); capStr = code = captchaProducer.createText();
image = captchaProducer.createImage(capStr); // image = captchaProducer.createImage(capStr);
image = captchaImage(capStr);
} }
redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
...@@ -91,4 +93,47 @@ public class CaptchaController ...@@ -91,4 +93,47 @@ public class CaptchaController
ajax.put("img", Base64.encode(os.toByteArray())); ajax.put("img", Base64.encode(os.toByteArray()));
return ajax; return ajax;
} }
private static final int WIDTH = 120; // 图片宽度
private static final int HEIGHT = 40; // 图片高度
private static final int CODE_LENGTH = 4; // 验证码长度
private BufferedImage captchaImage(String capStr) {
// 创建图片缓冲区
BufferedImage image = new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
// 获取画笔
Graphics graphics = image.getGraphics();
// 绘制背景
graphics.setColor(Color.WHITE);
graphics.fillRect(0, 0, WIDTH, HEIGHT);
// 绘制验证码
graphics.setFont(new Font("Arial", Font.BOLD, 28));
for (int i = 0; i < capStr.length(); i++) {
graphics.setColor(getRandomColor());
graphics.drawString(String.valueOf(capStr.charAt(i)), (i + 1) * (WIDTH / (CODE_LENGTH + 1)), 30);
}
// 添加干扰线
for (int i = 0; i < 3; i++) {
graphics.setColor(getRandomColor());
graphics.drawLine((int) (Math.random() * WIDTH), (int) (Math.random() * HEIGHT),
(int) (Math.random() * WIDTH), (int) (Math.random() * HEIGHT));
}
// 释放资源
graphics.dispose();
return image;
}
// 获取随机颜色
private static Color getRandomColor() {
int r = (int) (Math.random() * 256);
int g = (int) (Math.random() * 256);
int b = (int) (Math.random() * 256);
return new Color(r, g, b);
}
} }
...@@ -14,7 +14,7 @@ ruoyi: ...@@ -14,7 +14,7 @@ ruoyi:
# 获取ip地址开关 # 获取ip地址开关
addressEnabled: false addressEnabled: false
# 验证码类型 math 数组计算 char 字符验证 # 验证码类型 math 数组计算 char 字符验证
captchaType: math captchaType: char
# 开发环境配置 # 开发环境配置
server: server:
......
# 项目相关配置
ruoyi:
# 名称
name: RuoYi
# 版本
version: 3.8.5
# 版权年份
copyrightYear: 2023
# 实例演示开关
demoEnabled: true
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/server/dsk-operate-sys/uploadPath)
# profile: D:/dsk-operate-sys/uploadPath/
profile: /home/server/dsk-operate-sys/uploadPath/
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数组计算 char 字符验证
captchaType: math
# 开发环境配置
server:
# 服务器的HTTP端口,默认为8080
port: 9098
servlet:
# 应用的访问路径
context-path: /
tomcat:
# tomcat的URI编码
uri-encoding: UTF-8
# 连接数满后的排队数,默认为100
accept-count: 1000
threads:
# tomcat最大线程数,默认为200
max: 800
# Tomcat启动初始化的线程数,默认值10
min-spare: 100
# 日志配置
logging:
level:
com.ruoyi: debug
org.springframework: warn
# 用户配置
user:
password:
# 密码最大错误次数
maxRetryCount: 5
# 密码锁定时间(默认10分钟)
lockTime: 10
# Spring配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://47.104.91.229:3306/dsk-operate-sys?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: dev
password: zfTFIJjaN#6xB83r
# 从库数据源
# slave:
# # 从数据源开关/默认关闭
# enabled: false
# url:
# username:
# password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置连接超时时间
connectTimeout: 30000
# 配置网络超时时间
socketTimeout: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: ruoyi
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
# 资源信息
messages:
# 国际化资源文件路径
basename: i18n/messages
# profiles:
# active: druid
# 文件上传
servlet:
multipart:
# 单个文件大小
max-file-size: 10MB
# 设置总上传的文件大小
max-request-size: 20MB
# 服务模块
devtools:
restart:
# 热部署开关
enabled: true
# redis 配置
redis:
# 地址
host: 47.104.91.229
# 端口,默认为6379
port: 6379
# 数据库索引
database: 6
# 密码
password: zfTFIJjaN#6xB83r
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# token配置
token:
# 令牌自定义标识
header: Authorization
# 令牌密钥
secret: abcdefghijklmnopqrstuvwxyz
# 令牌有效期(默认30分钟)
expireTime: 240
#mybatis:
# # 搜索指定包别名
# typeAliasesPackage: com.dsk.**.domain
# # 配置mapper的扫描,找到所有的mapper.xml映射文件
# mapperLocations: classpath*:mapper/**/*Mapper.xml
# # 加载全局的配置文件
# configLocation: classpath:mybatis/mybatis-config.xml
# PageHelper分页插件
pagehelper:
helperDialect: mysql
supportMethodsArguments: true
params: count=countSql
# Swagger配置
swagger:
# 是否开启swagger
enabled: true
# 请求前缀
pathMapping: /
# 防止XSS攻击
xss:
# 过滤开关
enabled: true
# 排除链接(多个用逗号分隔)
excludes: /system/notice
# 匹配链接
urlPatterns: /system/*,/monitor/*,/tool/*
dsk:
open:
endPoint: 120.27.13.145:8865
accessKeyId: aec7b3ff2y2q8x6t49a7e2c463ce21912
accessKeySecret: ee8a53c7ea04eb3ac311406c8f56f95b
protocol: http
# endPoint: openapi.jiansheku.com
# accessKeyId: aec7b3ff2y2q8x6t49a7e2c463ce21912
# accessKeySecret: ee8a53c7ea04eb3ac311406c8f56f95b
# protocol: https
# 项目相关配置
ruoyi:
# 名称
name: RuoYi
# 版本
version: 3.8.5
# 版权年份
copyrightYear: 2023
# 实例演示开关
demoEnabled: true
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/server/dsk-operate-sys/uploadPath)
# profile: D:/dsk-operate-sys/uploadPath/
profile: /home/server/dsk-operate-sys/uploadPath/
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数组计算 char 字符验证
captchaType: char
# 开发环境配置
server:
# 服务器的HTTP端口,默认为8080
port: 9098
servlet:
# 应用的访问路径
context-path: /
tomcat:
# tomcat的URI编码
uri-encoding: UTF-8
# 连接数满后的排队数,默认为100
accept-count: 1000
threads:
# tomcat最大线程数,默认为200
max: 800
# Tomcat启动初始化的线程数,默认值10
min-spare: 100
# 日志配置
logging:
level:
com.ruoyi: debug
org.springframework: warn
# 用户配置
user:
password:
# 密码最大错误次数
maxRetryCount: 5
# 密码锁定时间(默认10分钟)
lockTime: 10
# Spring配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://47.104.91.229:3306/dsk-operate-sys?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: dev
password: zfTFIJjaN#6xB83r
# 从库数据源
# slave:
# # 从数据源开关/默认关闭
# enabled: false
# url:
# username:
# password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置连接超时时间
connectTimeout: 30000
# 配置网络超时时间
socketTimeout: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: ruoyi
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
# 资源信息
messages:
# 国际化资源文件路径
basename: i18n/messages
# profiles:
# active: druid
# 文件上传
servlet:
multipart:
# 单个文件大小
max-file-size: 10MB
# 设置总上传的文件大小
max-request-size: 20MB
# 服务模块
devtools:
restart:
# 热部署开关
enabled: true
# redis 配置
redis:
# 地址
host: 47.104.91.229
# 端口,默认为6379
port: 6379
# 数据库索引
database: 15
# 密码
password: zfTFIJjaN#6xB83r
# 连接超时时间
timeout: 10s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 8
# 连接池的最大数据库连接数
max-active: 8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# token配置
token:
# 令牌自定义标识
header: Authorization
# 令牌密钥
secret: abcdefghijklmnopqrstuvwxyz
# 令牌有效期(默认30分钟)
expireTime: 240
#mybatis:
# # 搜索指定包别名
# typeAliasesPackage: com.dsk.**.domain
# # 配置mapper的扫描,找到所有的mapper.xml映射文件
# mapperLocations: classpath*:mapper/**/*Mapper.xml
# # 加载全局的配置文件
# configLocation: classpath:mybatis/mybatis-config.xml
# PageHelper分页插件
pagehelper:
helperDialect: mysql
supportMethodsArguments: true
params: count=countSql
# Swagger配置
swagger:
# 是否开启swagger
enabled: true
# 请求前缀
pathMapping: /
# 防止XSS攻击
xss:
# 过滤开关
enabled: true
# 排除链接(多个用逗号分隔)
excludes: /system/notice
# 匹配链接
urlPatterns: /system/*,/monitor/*,/tool/*
dsk:
open:
endPoint: 120.27.13.145:8865
accessKeyId: aec7b3ff2y2q8x6t49a7e2c463ce21912
accessKeySecret: ee8a53c7ea04eb3ac311406c8f56f95b
protocol: http
# endPoint: openapi.jiansheku.com
# accessKeyId: aec7b3ff2y2q8x6t49a7e2c463ce21912
# accessKeySecret: ee8a53c7ea04eb3ac311406c8f56f95b
# protocol: https
spring: spring:
profiles: profiles:
active: dev active: pre
# MyBatisPlus配置 # MyBatisPlus配置
# https://baomidou.com/config/ # https://baomidou.com/config/
......
...@@ -16,7 +16,6 @@ public class SpecialPurposeBondsPageDto extends BasePage { ...@@ -16,7 +16,6 @@ public class SpecialPurposeBondsPageDto extends BasePage {
* 省Id * 省Id
*/ */
private Integer provinceId; private Integer provinceId;
/** /**
* 市Id * 市Id
*/ */
...@@ -27,7 +26,6 @@ public class SpecialPurposeBondsPageDto extends BasePage { ...@@ -27,7 +26,6 @@ public class SpecialPurposeBondsPageDto extends BasePage {
*/ */
private Integer areaId; private Integer areaId;
/** /**
* 排序字段 默认-投资金额 * 排序字段 默认-投资金额
*/ */
......
...@@ -17,3 +17,10 @@ export const claim= function claim(param) { ...@@ -17,3 +17,10 @@ export const claim= function claim(param) {
data: param data: param
}) })
} }
// 历史客户认领
export const historyClaim= function historyClaim(name) {
return request({
url: '/customer/historyClaim/'+name,
method: 'Put',
})
}
...@@ -3,16 +3,19 @@ ...@@ -3,16 +3,19 @@
* 1、url地址,如企业详情:https://pre-plug.jiansheku.com/enterprise?ak=aec7b3ff2y2q8x6t49a7e2c463ce21912&uid=a704fb35bca54707b9b5f8c9bba57815(ak:平台唯一标识;uid:用户标识) * 1、url地址,如企业详情:https://pre-plug.jiansheku.com/enterprise?ak=aec7b3ff2y2q8x6t49a7e2c463ce21912&uid=a704fb35bca54707b9b5f8c9bba57815(ak:平台唯一标识;uid:用户标识)
* *
* */ * */
const steerScroll = function (iframeId, navHeight, state, parentId){ //state:监听or移除监听;navHeight:页面排除iframe后剩下高度;iframeId: iframe的id const steerScroll = function(iframeId, navigation, state, parentId) { // state:监听or移除监听;navigation:页面排除iframe后剩下高度;iframeId: iframe的id
let dom = window let dom = window
if(parentId){// 默认页面可以滚动 if (parentId) { // 默认页面可以滚动
dom = document.getElementById(parentId) dom = document.getElementById(parentId)
if(!dom){
return
}
dom.style.overflow = 'auto' dom.style.overflow = 'auto'
navHeight = 0 navigation.totalHeight = 0
}else{ } else {
document.body.style.overflow = 'visible' document.body.style.overflow = 'visible'
} }
if(state){ if (state) {
window.addEventListener('message', function(e) { window.addEventListener('message', function(e) {
const data = e.data const data = e.data
const sct = parentId ? dom.scrollTop : document && document.documentElement.scrollTop || document && document.body.scrollTop const sct = parentId ? dom.scrollTop : document && document.documentElement.scrollTop || document && document.body.scrollTop
...@@ -20,10 +23,11 @@ const steerScroll = function (iframeId, navHeight, state, parentId){ //state: ...@@ -20,10 +23,11 @@ const steerScroll = function (iframeId, navHeight, state, parentId){ //state:
// 动态设置iFrame高度 // 动态设置iFrame高度
if (data.height) { if (data.height) {
document.getElementById(iframeId).style.height = data.height+'px' document.getElementById(iframeId).style.height = data.height+'px'
scrolling(iframeId, navHeight, parentId) // 初始加载获取滚动条距离顶部高度 scrolling(iframeId, navigation, parentId) // 初始加载获取滚动条距离顶部高度
} }
// 点击企业详情页 栏目名动态设置滚动高度 // 点击企业详情页 栏目名动态设置滚动高度
if (data.scrollHeight) { if (data.scrollHeight) {
let navHeight = navigation.isFixed ? navigation.totalHeight - navigation.fixedHeight : navigation.totalHeight
dom.scrollTo(sct, parseInt(data.scrollHeight) + navHeight) dom.scrollTo(sct, parseInt(data.scrollHeight) + navHeight)
} }
// 点击企业详情页 栏目下拉子标签动态设置滚动高度 // 点击企业详情页 栏目下拉子标签动态设置滚动高度
...@@ -31,34 +35,39 @@ const steerScroll = function (iframeId, navHeight, state, parentId){ //state: ...@@ -31,34 +35,39 @@ const steerScroll = function (iframeId, navHeight, state, parentId){ //state:
dom.scrollTo(sct, sct - parseInt(data.clientHeight)) dom.scrollTo(sct, sct - parseInt(data.clientHeight))
} }
// 点击下拉子标签动态设置滚动高度 // 点击下拉子标签动态设置滚动高度
if (data.initHeight>=0) { if (data.initHeight >= 0) {
dom.scrollTo(sct, data.initHeight) dom.scrollTo(sct, data.initHeight)
} }
// 根据子页面弹窗显示隐藏控制当前页面是否固定不可滚动 // 根据子页面弹窗显示隐藏控制当前页面是否固定不可滚动
if (data.scrollDisabled||data.scrollDisabled==false) { if (data.scrollDisabled || data.scrollDisabled === false) {
if(parentId){ if (parentId) {
dom.style.overflow = data.scrollDisabled?'hidden':'auto' dom.style.overflow = data.scrollDisabled ? 'hidden' : 'auto'
}else{ } else {
document.body.style.overflow = data.scrollDisabled?'hidden':'visible' document.body.style.overflow = data.scrollDisabled ? 'hidden' : 'visible'
} }
} }
} }
}) })
dom.addEventListener('scroll', scrolling(iframeId, navHeight, parentId)) dom.addEventListener('scroll', (event) => {
}else{ scrolling(iframeId, navigation, parentId)
dom.removeEventListener('scroll', scrolling(iframeId, navHeight, parentId)) })
} else {
dom.removeEventListener('scroll', (event) => {
scrolling(iframeId, navigation, parentId)
})
} }
} }
const scrolling = function (iframeId, navHeight, parentId){ const scrolling = function(iframeId, navigation, parentId) {
// 滚动条距文档顶部的距离 // 滚动条距文档顶部的距离
let scrollTop = parentId ? document.getElementById(parentId).scrollTop : window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop let scrollTop = parentId ? document.getElementById(parentId).scrollTop : window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop
// 将滚动距离传入子组件 // 将滚动距离传入子组件
const ifa = document.getElementById(iframeId) const ifa = document.getElementById(iframeId)
if(scrollTop<navHeight){ if ((scrollTop < navigation.totalHeight && !navigation.isFixed) || navigation.isFixed) {
scrollTop = scrollTop+navHeight scrollTop = scrollTop + navigation.totalHeight
} }
ifa.contentWindow.postMessage({ 'scrollTop': scrollTop }, '*') const bodyHeight = document.body.clientHeight - navigation.totalHeight
ifa.contentWindow.postMessage({ 'scrollTop': scrollTop, 'bodyHeight': bodyHeight }, '*')
} }
export { export {
......
...@@ -206,8 +206,8 @@ aside { ...@@ -206,8 +206,8 @@ aside {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
display: -webkit-box; display: -webkit-box;
-webkit-line-clamp: 2; -webkit-line-clamp: 2;
line-clamp: 2; line-clamp: 2;
-webkit-box-orient: vertical; -webkit-box-orient: vertical;
} }
...@@ -322,7 +322,7 @@ ul, li { ...@@ -322,7 +322,7 @@ ul, li {
.is-scrolling-left+.el-table__fixed,.is-scrolling-middle+.el-table__fixed,.is-scrolling-right+.el-table__fixed{ .is-scrolling-left+.el-table__fixed,.is-scrolling-middle+.el-table__fixed,.is-scrolling-right+.el-table__fixed{
box-shadow:none; box-shadow:none;
height: auto !important; height: auto !important;
bottom: 16px; bottom: 16px !important;
} }
.el-table__body tr.current-row > td.el-table__cell{ .el-table__body tr.current-row > td.el-table__cell{
background: none; background: none;
...@@ -524,6 +524,10 @@ ul, li { ...@@ -524,6 +524,10 @@ ul, li {
line-height: 50px; line-height: 50px;
height: 50px; height: 50px;
} }
.el-tabs__item.is-disabled {
color: #C0C4CC;
cursor: not-allowed;
}
.is-active{ .is-active{
color: #0081FF; color: #0081FF;
font-weight: bold; font-weight: bold;
...@@ -652,6 +656,9 @@ ul, li { ...@@ -652,6 +656,9 @@ ul, li {
height: 32px; height: 32px;
border: 0; border: 0;
} }
.el-input__suffix{
margin-top: -1px;
}
} }
.btn{ .btn{
background: #F5F5F5; background: #F5F5F5;
...@@ -711,3 +718,8 @@ ul, li { ...@@ -711,3 +718,8 @@ ul, li {
border-radius: 0; border-radius: 0;
padding: 10px; padding: 10px;
} }
//固定列的阴影问题
.el-table__fixed {
box-shadow: 4px 0 9px -5px rgba(0, 0, 0, 0.12);
-webkit-box-shadow: 4px 0 9px -5px rgba(0, 0, 0, 0.12);
}
...@@ -827,10 +827,22 @@ ...@@ -827,10 +827,22 @@
right: 16px; right: 16px;
top: 17px; top: 17px;
.searchInput{ .searchInput{
width: 178px; &.small{
border: 1px solid #D9D9D9; border: 1px solid #d9d9d9;
.el-input--medium .el-input__inner{ width: 240px;
font-size: 12px; .el-input{
width: 180px;
}
.el-input__inner{
padding-right: 32px;
}
.el-input__prefix{
left: 8px;
top: -3px;
img{
width: 16px;
}
}
} }
} }
.b2{ .b2{
...@@ -1180,3 +1192,37 @@ ...@@ -1180,3 +1192,37 @@
//top: 10px !important; //top: 10px !important;
line-height: 34px !important; line-height: 34px !important;
} }
.el-table__fixed {
height: auto !important;
bottom: 17px !important;
//box-shadow: 4px 0 9px -5px rgba(0, 0, 0, 0.12);
//-webkit-box-shadow: 4px 0 9px -5px rgba(0, 0, 0, 0.12);
}
.el-select .el-input__inner{
padding-left: 16px;
}
.el-tooltip__popper.is-dark {
opacity: 0.5;
//background: rgba(0, 0, 0, 0.5);
//.el-tooltip__popper[x-placement^=top] .popper__arrow {
// border-top-color:rgba(0, 0, 0, 0.5);
//}
}
//.fixed-table {
// overflow: initial;
//
// .el-table__header-wrapper {
// position: sticky;
// top: 0;
// z-index: 9;
// }
//
// .el-table__fixed-header-wrapper {
// position: sticky;
// top: 0;
// z-index: 9;
// }
//
//}
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
transition: margin-left .28s; transition: margin-left .28s;
margin-left: $base-sidebar-width; margin-left: $base-sidebar-width;
position: relative; position: relative;
background: #F5F5F5;
} }
.sidebarHide { .sidebarHide {
...@@ -37,12 +38,12 @@ ...@@ -37,12 +38,12 @@
animation-fill-mode: forwards; animation-fill-mode: forwards;
z-index: 1002; z-index: 1002;
} }
@keyframes left-right{ @keyframes left-right{
0%{right: 0;} 0%{right: 0;}
100%{right: -21px;} 100%{right: -21px;}
} }
// reset element-ui css // reset element-ui css
.horizontal-collapse-transition { .horizontal-collapse-transition {
transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out; transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out;
...@@ -58,10 +59,10 @@ ...@@ -58,10 +59,10 @@
.el-scrollbar { .el-scrollbar {
height: 100%; height: 100%;
} }
&.has-logo { &.has-logo {
.el-scrollbar { .el-scrollbar {
...@@ -138,8 +139,8 @@ ...@@ -138,8 +139,8 @@
background: #fff!important; background: #fff!important;
} }
} }
// menu hover // menu hover
.submenu-title-noDropdown, .el-submenu__title { .submenu-title-noDropdown, .el-submenu__title {
color: #fff!important; color: #fff!important;
...@@ -150,9 +151,9 @@ ...@@ -150,9 +151,9 @@
border: 1px solid #2b3f69; border: 1px solid #2b3f69;
} }
} }
} }
.sidebar-container .el-submenu .el-menu-item:hover,.sidebar-container .nest-menu .el-submenu>.el-submenu__title:hover { .sidebar-container .el-submenu .el-menu-item:hover,.sidebar-container .nest-menu .el-submenu>.el-submenu__title:hover {
background-color: #1e2c4c!important; background-color: #1e2c4c!important;
...@@ -160,7 +161,7 @@ ...@@ -160,7 +161,7 @@
border-radius: 10px; border-radius: 10px;
border: 1px solid #2b3f69; border: 1px solid #2b3f69;
} }
.sidebar-container .el-submenu .el-menu-item:before, .sidebar-container .nest-menu .el-submenu>.el-submenu__title:before { .sidebar-container .el-submenu .el-menu-item:before, .sidebar-container .nest-menu .el-submenu>.el-submenu__title:before {
position: absolute; position: absolute;
width: 2px; width: 2px;
...@@ -210,7 +211,7 @@ ...@@ -210,7 +211,7 @@
vertical-align: -0.15em; vertical-align: -0.15em;
fill: currentColor; fill: currentColor;
overflow: hidden; overflow: hidden;
} }
} }
} }
...@@ -405,4 +406,4 @@ ...@@ -405,4 +406,4 @@
padding-top: 6px; padding-top: 6px;
padding-bottom: 10px; padding-bottom: 10px;
} }
} }
\ No newline at end of file
...@@ -46,9 +46,9 @@ export default { ...@@ -46,9 +46,9 @@ export default {
<style scoped> <style scoped>
.svg-icon { .svg-icon {
width: 1em; width: 1.29em;
height: 1em; height: 1.29em;
vertical-align: -0.15em; /*vertical-align: -0.22em;*/
fill: currentColor; fill: currentColor;
overflow: hidden; overflow: hidden;
} }
......
...@@ -45,12 +45,18 @@ export default { ...@@ -45,12 +45,18 @@ export default {
min-height: calc(100vh - 56px); min-height: calc(100vh - 56px);
min-width:1440px; min-width:1440px;
background: #F5F5F5; background: #F5F5F5;
overflow: initial;
} }
.fixed-header + .app-main { .fixed-header + .app-main {
padding-top: 84px; padding-top: 84px;
} }
} }
.EnterpriseData{
.app-main {
overflow: initial;
}
}
</style> </style>
<style lang="scss"> <style lang="scss">
......
...@@ -147,9 +147,9 @@ export default { ...@@ -147,9 +147,9 @@ export default {
.user-avatar { .user-avatar {
display: inline-block; display: inline-block;
cursor: pointer; cursor: pointer;
width: 20px; width: 24px;
height: 20px; height: 24px;
line-height: 20px; line-height: 24px;
text-align: center; text-align: center;
background: #E3EEF9; background: #E3EEF9;
color: #0081FF; color: #0081FF;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div :class="classObj" class="app-wrapper" :style="{'--current-color': theme}"> <div :class="classObj" class="app-wrapper" :style="{'--current-color': theme}">
<div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside"/> <div v-if="device==='mobile'&&sidebar.opened" class="drawer-bg" @click="handleClickOutside"/>
<sidebar v-if="!sidebar.hide" class="sidebar-container" @handleBar="handleSideBar" id="sidebar"/> <sidebar v-if="!sidebar.hide" class="sidebar-container" @handleBar="handleSideBar" id="sidebar"/>
<div :class="{hasTagsView:needTagsView,sidebarHide:sidebar.hide}" class="main-container"> <div :class="{hasTagsView:needTagsView,sidebarHide:sidebar.hide,EnterpriseData:$route.name=='EnterpriseData'}" class="main-container">
<div :class="{'fixed-header':fixedHeader}"> <div :class="{'fixed-header':fixedHeader}">
<navbar :offsetWidth="offsetWidth"/> <navbar :offsetWidth="offsetWidth"/>
</div> </div>
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<div class="app-container"> <div class="app-container">
<el-card class="box-card noborder"> <el-card class="box-card noborder">
<div class="tables"> <div class="tables">
<div class="empty" v-if="tableData.total==0"> <div class="empty" v-if="tableData.total==0 && !isSkeleton">
<img src="@/assets/images/project/empty.png"> <img src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div> <div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div> <div class="p2">建议调整关键词或筛选条件,重新搜索</div>
...@@ -25,8 +25,9 @@ ...@@ -25,8 +25,9 @@
<div class="btn btn_primary h32 p10" @click="opennew"><div class="img img1"></div>添加客户</div> <div class="btn btn_primary h32 p10" @click="opennew"><div class="img img1"></div>添加客户</div>
</div> </div>
</div> </div>
<el-table v-if="tableData.total > 0" <skeleton v-if="isSkeleton"></skeleton>
:data="tableData.rows" <el-table id="tables" v-if="!isSkeleton&&tableData.total > 0" class="fixed-table"
:data="tableData.rows"
stripe border stripe border
style="width: 100%"> style="width: 100%">
<el-table-column <el-table-column
...@@ -47,8 +48,12 @@ ...@@ -47,8 +48,12 @@
<div class="ps1"> <div class="ps1">
<div class="wordprimary ps2" @click="toDetail(scope.row,'')">{{scope.row.companyName}}</div> <div class="wordprimary ps2" @click="toDetail(scope.row,'')">{{scope.row.companyName}}</div>
<div class="ps3"> <div class="ps3">
<div @click="toDetail(scope.row,'gjjl')">写跟进<img src="@/assets/images/project/edit_1.png"></div> <el-tooltip class="item" effect="dark" content="写跟进" placement="top">
<div @click="toDetail(scope.row,'business')">编辑信息<img src="@/assets/images/project/edit_2.png"></div> <div @click="toDetail(scope.row,'gjjl')"><img class="i" src="@/assets/images/project/edit_1.png"><img class="o" src="@/assets/images/project/edit_11.png"></div>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="编辑信息" placement="top">
<div @click="toDetail(scope.row,'business')"><img class="i" src="@/assets/images/project/edit_2.png"><img class="o" src="@/assets/images/project/edit_22.png"></div>
</el-tooltip>
</div> </div>
</div> </div>
</template> </template>
...@@ -159,8 +164,11 @@ ...@@ -159,8 +164,11 @@
label="主营业务" width="400"> label="主营业务" width="400">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.mainBusiness == null || scope.row.mainBusiness == ''">--</div> <div v-if="scope.row.mainBusiness == null || scope.row.mainBusiness == ''">--</div>
<div class="box" v-else-if="scope.row.sq1==true">{{scope.row.mainBusiness1}}...<span @click="sq1(scope.row,false)">更多</span></div> <div v-if="scope.row.mainBusiness1">
<div class="box" v-else>{{scope.row.mainBusiness}}<span @click="sq1(scope.row,true)">收起</span></div> <div class="box" v-if="scope.row.sq1==true">{{scope.row.mainBusiness1}}...<span @click="sq1(scope.row,false)">更多</span></div>
<div class="box" v-else>{{scope.row.mainBusiness}}<span @click="sq1(scope.row,true)">收起</span></div>
</div>
<div v-else>{{scope.row.mainBusiness}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
...@@ -168,8 +176,11 @@ ...@@ -168,8 +176,11 @@
label="发包属性" width="400"> label="发包属性" width="400">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.companyAttribute == null || scope.row.companyAttribute == ''">--</div> <div v-if="scope.row.companyAttribute == null || scope.row.companyAttribute == ''">--</div>
<div class="box" v-else-if="scope.row.sq2==true">{{scope.row.companyAttribute1}}...<span @click="sq2(scope.row,false)">更多</span></div> <div v-if="scope.row.companyAttribute1">
<div class="box" v-else>{{scope.row.companyAttribute}}<span @click="sq2(scope.row,true)">收起</span></div> <div class="box" v-if="scope.row.sq2==true">{{scope.row.companyAttribute1}}...<span @click="sq2(scope.row,false)">更多</span></div>
<div class="box" v-else>{{scope.row.companyAttribute}}<span @click="sq2(scope.row,true)">收起</span></div>
</div>
<div v-else>{{scope.row.companyAttribute}}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
...@@ -239,17 +250,18 @@ ...@@ -239,17 +250,18 @@
</template> </template>
<script> <script>
import { getToken } from "@/utils/auth"; import { getToken } from '@/utils/auth'
import "@/assets/styles/project.scss" import '@/assets/styles/project.scss'
import {getCustomerList,importData,addCustomer} from '@/api/custom/custom' import { addCustomer, getCustomerList, importData } from '@/api/custom/custom'
import {getEnterprise,getDictType,} from '@/api/main' import { getDictType, getEnterprise } from '@/api/main'
import prvinceTree from '@/assets/json/provinceTree' import prvinceTree from '@/assets/json/provinceTree'
import batchimport from '../../project/projectList/component/batchImport' import batchimport from '../../project/projectList/component/batchImport'
import axios from 'axios' import skeleton from '../../project/projectList/component/skeleton'
import {encodeStr} from "@/assets/js/common" import { encodeStr } from '@/assets/js/common'
export default {
export default {
name: 'CustomList', name: 'CustomList',
components:{batchimport}, components:{batchimport,skeleton},
data() { data() {
return{ return{
encodeStr, encodeStr,
...@@ -297,6 +309,7 @@ export default { ...@@ -297,6 +309,7 @@ export default {
// isNew:true, // isNew:true,
showlist:false, showlist:false,
keys:1, keys:1,
isSkeleton:true,
} }
}, },
created() { created() {
...@@ -304,7 +317,37 @@ export default { ...@@ -304,7 +317,37 @@ export default {
this.getDictType() this.getDictType()
this.prvinceTree() this.prvinceTree()
}, },
mounted() {
window.addEventListener("scroll",this.scrolling)
},
beforeDestroy() {
window.removeEventListener("scroll", this.scrolling);
},
// mounted(){
// // tables
// // var box = document.getElementById('tables').offsetTop // 获取元素
// var box = document.getElementsByClassName("el-table")[0].offsetTop
// console.log(box)
// if (box) {
// let topheight = box.offsetTop
// console.log(topheight)
// }
// },
methods:{ methods:{
scrolling() {
let el = document.getElementById("tables").offsetTop
console.log(el)
// let el = document.getElementsByClassName("el-table__fixed-header-wrapper")[0]
// let el1 = document.getElementsByClassName("el-table__header")[0]
// console.log(el1.offsetTop)
// let scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
// if (scrollTop > el1.offsetTop) {
// let top = scrollTop - el1.offsetTop - 13
// el.style.top = top + 'px'
// } else {
// el.style.top = 0
// }
},
sq1(item,sq){ sq1(item,sq){
this.$nextTick(()=>{ this.$nextTick(()=>{
item.sq1 = sq item.sq1 = sq
...@@ -343,6 +386,7 @@ export default { ...@@ -343,6 +386,7 @@ export default {
//获取客户列表 //获取客户列表
getCustomerList(){ getCustomerList(){
getCustomerList(this.searchParam).then(result=>{ getCustomerList(this.searchParam).then(result=>{
this.isSkeleton = false
this.tableData = result this.tableData = result
this.tableData.rows.forEach(item=>{ this.tableData.rows.forEach(item=>{
item.registerCapital = item.registerCapital == null?null: item.registerCapital.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1') item.registerCapital = item.registerCapital == null?null: item.registerCapital.replace(/^\D*(\d*(?:\.\d{0,6})?).*$/g, '$1')
...@@ -358,6 +402,7 @@ export default { ...@@ -358,6 +402,7 @@ export default {
}else{ }else{
item.sq2 = false item.sq2 = false
} }
// console.log(item)
}) })
}) })
}, },
...@@ -378,6 +423,7 @@ export default { ...@@ -378,6 +423,7 @@ export default {
}, },
//翻页 //翻页
handleCurrentChange(val) { handleCurrentChange(val) {
this.isSkeleton = true
this.pldr=false this.pldr=false
// this.isNew = false // this.isNew = false
this.searchParam.pageNum=val this.searchParam.pageNum=val
...@@ -584,7 +630,7 @@ export default { ...@@ -584,7 +630,7 @@ export default {
} }
.tables{ .tables{
position: relative; position: relative;
height: calc(100vh - 134px); min-height: calc(100vh - 134px);
overflow: auto; overflow: auto;
.empty{ .empty{
position: absolute; position: absolute;
...@@ -601,23 +647,34 @@ export default { ...@@ -601,23 +647,34 @@ export default {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
.ps2{ .ps2{
width: 270px; width: 350px;
} }
.ps3{ .ps3{
width: 155px; width: 60px;
display: flex; display: flex;
justify-content: right; justify-content: right;
>div{ >div{
margin-left: 12px; margin-left: 12px;
&:hover{
color: #0CBC6D;
cursor: pointer;
}
>img{ >img{
float: right; float: right;
margin: 3px 0 0 4px; margin: 3px 0 0 4px;
width: 14px; width: 14px;
} }
.i{
display: inline-block;
}
.o{
display: none;
}
&:hover{
cursor: pointer;
.i{
display: none;
}
.o{
display: inline-block;
}
}
} }
} }
} }
......
This diff is collapsed.
...@@ -118,9 +118,10 @@ ...@@ -118,9 +118,10 @@
</template> </template>
<script> <script>
import "@/assets/styles/project.scss" import '@/assets/styles/project.scss'
import * as echarts from 'echarts' import * as echarts from 'echarts'
export default {
export default {
name: 'Overview', name: 'Overview',
data() { data() {
return { return {
...@@ -192,9 +193,9 @@ export default { ...@@ -192,9 +193,9 @@ export default {
initChart(){ initChart(){
//客户级别 //客户级别
this.option = { this.option = {
tooltip: { tooltip: {
trigger: 'item' trigger: 'item',
extraCssText: 'border:0',
}, },
color:['#8A82F3','#5B9CF7','#8DCF96','#FFDC6B','#FE9C77'],//修改配色 color:['#8A82F3','#5B9CF7','#8DCF96','#FFDC6B','#FE9C77'],//修改配色
series: [ series: [
...@@ -203,17 +204,17 @@ export default { ...@@ -203,17 +204,17 @@ export default {
type: 'pie', type: 'pie',
radius: ['50%','70%'], radius: ['50%','70%'],
data: [ data: [
{ value: 23, name: '集团总部:11%' }, { value: 23, name: '集团总部:11%',borderWidth:0 },
{ value: 61, name: '一级单位:29%' }, { value: 61, name: '一级单位:29%',borderWidth:0 },
{ value: 60, name: '二级单位:29%' }, { value: 60, name: '二级单位:29%',borderWidth:0 },
{ value: 21, name: '三级单位:10%' }, { value: 21, name: '三级单位:10%',borderWidth:0 },
{ value: 44, name: '其他单位: 21%' } { value: 44, name: '其他单位: 21%',borderWidth:0 }
], ],
emphasis: { emphasis: {
itemStyle: { itemStyle: {
shadowBlur: 10, shadowBlur: 10,
shadowOffsetX: 0, shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)' shadowColor: 'rgba(0, 0, 0, 0)'
} }
} }
} }
...@@ -267,7 +268,14 @@ export default { ...@@ -267,7 +268,14 @@ export default {
} }
} }
} }
] ],
emphasis: {
itemStyle: {
// 高亮时点的颜色。
color: 'rgb(90,146,247)'
},
}
} }
this.option2 && this.myChart2.setOption(this.option2) this.option2 && this.myChart2.setOption(this.option2)
//客户资质分析 //客户资质分析
...@@ -317,7 +325,14 @@ export default { ...@@ -317,7 +325,14 @@ export default {
}, },
} }
} }
] ],
emphasis: {
itemStyle: {
// 高亮时点的颜色。
color: 'rgb(134,231,231)'
},
}
} }
this.option3 && this.myChart3.setOption(this.option3) this.option3 && this.myChart3.setOption(this.option3)
...@@ -358,6 +373,7 @@ export default { ...@@ -358,6 +373,7 @@ export default {
axisPointer:{ //悬浮于圆点展示标签 axisPointer:{ //悬浮于圆点展示标签
type:'axis' type:'axis'
}, },
extraCssText: 'border:0',
// trigger: 'axis' // trigger: 'axis'
}, },
series: [ series: [
......
...@@ -169,7 +169,7 @@ export default { ...@@ -169,7 +169,7 @@ export default {
.headForm{ .headForm{
margin-bottom: 14px; margin-bottom: 14px;
.common-title{ .common-title{
margin-right: 19px; margin-right: 24px;
} }
::v-deep .el-input__inner{ ::v-deep .el-input__inner{
border: 1px solid #D9D9D9; border: 1px solid #D9D9D9;
...@@ -210,10 +210,12 @@ export default { ...@@ -210,10 +210,12 @@ export default {
display: flex; display: flex;
border-radius: 2px 0px 0px 2px; border-radius: 2px 0px 0px 2px;
border: 1px solid #D9D9D9; border: 1px solid #D9D9D9;
line-height: 32px;
height: 32px;
span { span {
width: 60px; width: 60px;
height: 32px; height: 30px;
line-height: 32px; line-height: 28px;
font-size: 14px; font-size: 14px;
background: #F5F5F5; background: #F5F5F5;
text-align: center; text-align: center;
...@@ -234,9 +236,12 @@ export default { ...@@ -234,9 +236,12 @@ export default {
flex: 1; flex: 1;
} }
::v-deep .el-input__inner { ::v-deep .el-input__inner {
border-radius: 2px 0 2px 0;
border: 0; border: 0;
border-right: 0; line-height: 30px;
height: 30px;
position: absolute;
top: 0;
padding-right: 32px;
} }
} }
.fromTime{ .fromTime{
...@@ -251,6 +256,11 @@ export default { ...@@ -251,6 +256,11 @@ export default {
.fromTime-icon { .fromTime-icon {
display: none; display: none;
} }
.el-select{
.el-input__suffix{
right: 10px;
}
}
} }
::v-deep .form-content-width{ ::v-deep .form-content-width{
width: 170px; width: 170px;
......
...@@ -395,6 +395,12 @@ export default { ...@@ -395,6 +395,12 @@ export default {
margin-top: -5px; margin-top: -5px;
} }
} }
.is-disabled:hover{
color: rgba(35, 35, 35, 0.8)!important;
&:before {
color: rgba(35, 35, 35, 0.8)!important;
}
}
::v-deep .el-submenu .el-menu-item{ ::v-deep .el-submenu .el-menu-item{
font-size: 12px; font-size: 12px;
color: rgba(35,35,35,0.8); color: rgba(35,35,35,0.8);
...@@ -408,7 +414,7 @@ export default { ...@@ -408,7 +414,7 @@ export default {
left: 21px; left: 21px;
width: 2px; width: 2px;
height: 2px; height: 2px;
background: rgba(35,35,35,0.8); background: #0081FF;
border-radius: 50%; border-radius: 50%;
} }
} }
......
<template> <template>
<div class="Tables"> <div class="Tables">
<div class="table-item"> <div class="table-item">
<el-table <el-table v-if="tableDataTotal>0"
v-loading="tableLoading" v-loading="tableLoading"
:data="tableData" :data="tableData"
element-loading-text="Loading" element-loading-text="Loading"
...@@ -61,11 +61,12 @@ ...@@ -61,11 +61,12 @@
</template> </template>
<template slot="empty"> <template slot="empty">
<div style="padding: 30px 0">
<no-data />
</div>
</template> </template>
</el-table> </el-table>
<div style="padding: 30px 0" v-else>
<no-data />
</div>
</div> </div>
<div class="pagination-box" v-if="show_page && tableDataTotal>queryParams.pageSize"> <div class="pagination-box" v-if="show_page && tableDataTotal>queryParams.pageSize">
<el-pagination background :current-page="current_page" :page-size="queryParams.pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" /> <el-pagination background :current-page="current_page" :page-size="queryParams.pageSize" :total="tableDataTotal" layout="prev, pager, next, jumper" @current-change="handleCurrentChange" @size-change="handleSizeChange" />
......
...@@ -199,9 +199,12 @@ export default { ...@@ -199,9 +199,12 @@ export default {
}, },
color: ['#5B9CF7','#8DCF96','#FFDC6B','#FE9C77','#8A82F3'], color: ['#5B9CF7','#8DCF96','#FFDC6B','#FE9C77','#8A82F3'],
legend: { legend: {
selectedMode: false,
x: 'center', x: 'center',
y: 'bottom', y: 'bottom',
itemHeight: 9, itemHeight: 9,
itemWidth:12,
itemHeight:8,
textStyle: { textStyle: {
padding: [0, 0, -2, 0], padding: [0, 0, -2, 0],
color: '#000000', color: '#000000',
...@@ -248,6 +251,30 @@ export default { ...@@ -248,6 +251,30 @@ export default {
// 使用刚指定的配置项和数据显示图表。 // 使用刚指定的配置项和数据显示图表。
myChart.clear() //清空 myChart.clear() //清空
myChart.setOption(option) myChart.setOption(option)
// 默认高亮
let index = 0; // 高亮索引
myChart.dispatchAction({
type: "highlight",
seriesIndex: index,
dataIndex: index
});
myChart.on("mouseover", function(e) {
if (e.dataIndex != index) {
myChart.dispatchAction({
type: "downplay",
seriesIndex: 0,
dataIndex: index
});
}
});
myChart.on("mouseout", function(e) {
index = e.dataIndex;
myChart.dispatchAction({
type: "highlight",
seriesIndex: 0,
dataIndex: e.dataIndex
});
});
} }
} }
} }
......
...@@ -102,5 +102,9 @@ export default { ...@@ -102,5 +102,9 @@ export default {
} }
} }
} }
::v-deep .el-input__inner{
padding-left: 10px;
padding-right: 22px;
}
} }
</style> </style>
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
<div :class="{'on':datatype==1}" @click="getDT(1)">近5年</div> <div :class="{'on':datatype==1}" @click="getDT(1)">近5年</div>
</div> </div>
</div> </div>
<div id="myEcharts" style="width: 100%;height:250px; margin: 0 auto;"></div> <div id="myEcharts" style="height:250px; margin: 0 auto;"></div>
</template> </template>
<div class="bid-no-data" v-else> <div class="bid-no-data" v-else>
<no-data /> <no-data />
...@@ -316,7 +316,17 @@ export default { ...@@ -316,7 +316,17 @@ export default {
::v-deep .el-table .el-table__body-wrapper tr:nth-child(2n){ ::v-deep .el-table .el-table__body-wrapper tr:nth-child(2n){
background: #FFFFFF; background: #FFFFFF;
} }
::v-deep .el-table .el-table__body-wrapper tr:nth-child(5) .el-table__cell{
border: none;
}
::v-deep .el-table::before{
display: none;
}
} }
} }
} }
::deep .el-table::before{
display: none;
}
</style> </style>
...@@ -153,7 +153,7 @@ ...@@ -153,7 +153,7 @@
</template> </template>
<script> <script>
import { changePath } from '@/assets/js/common' import { changePath,encodeStr } from '@/assets/js/common'
var Swiper = require('@/assets/lib/swiper/swiper-bundle.min.js') var Swiper = require('@/assets/lib/swiper/swiper-bundle.min.js')
import "@/assets/lib/swiper/swiper-bundle.css" import "@/assets/lib/swiper/swiper-bundle.css"
import { claim } from "@/api/common" import { claim } from "@/api/common"
...@@ -163,8 +163,10 @@ export default { ...@@ -163,8 +163,10 @@ export default {
props: ['companyId', 'companyInfo', 'statistic'], props: ['companyId', 'companyInfo', 'statistic'],
data() { data() {
return { return {
encodeStr,
newStatic: null, newStatic: null,
labelList: [], //企业标签 labelList: [], //企业标签
customerId:'',
claimLoading: false, claimLoading: false,
ifClaim: 0, //是否认领 ifClaim: 0, //是否认领
showMore: false, showMore: false,
...@@ -213,7 +215,8 @@ export default { ...@@ -213,7 +215,8 @@ export default {
this.claimLoading = false this.claimLoading = false
if(res.code==200){ if(res.code==200){
this.dialogVisible=true this.dialogVisible=true
this.ifClaim = 1 this.companyInfo.claimStatus = 1
this.customerId = res.data.customerId
} }
}else{ }else{
this.$message.warning('对不起,当前不能认领') this.$message.warning('对不起,当前不能认领')
...@@ -325,7 +328,17 @@ export default { ...@@ -325,7 +328,17 @@ export default {
}, },
renlin(){ renlin(){
this.dialogVisible=false; this.dialogVisible=false;
// this.$router.push({path:'/home',query: {id:'1'}}) // window.location.href = window.location.origin+window.location.pathname+'?customerId='+this.customerId+'&path=business'
this.$router.replace({
path: '/enterprise/'+encodeStr(this.companyId),
query: {
'customerId': this.customerId,
'path':'business'
} ,
})
this.$nextTick(()=>{
this.$tab.refreshPage();
})
// 跳转地址 // 跳转地址
}, },
renHide(){ renHide(){
......
...@@ -122,7 +122,7 @@ export default { ...@@ -122,7 +122,7 @@ export default {
margin-right: 22px; margin-right: 22px;
font-weight: bold; font-weight: bold;
font-size: 20px; font-size: 20px;
color: #0081FF; color: #232323;
padding: 24px 16px 0 16px; padding: 24px 16px 0 16px;
span{ span{
font-size: 16px; font-size: 16px;
...@@ -132,7 +132,7 @@ export default { ...@@ -132,7 +132,7 @@ export default {
padding: 14px 16px 10px 16px; padding: 14px 16px 10px 16px;
justify-content: space-between; justify-content: space-between;
font-size: 14px; font-size: 14px;
color: #416587; color: #232323;
div{ div{
flex-shrink: 0; flex-shrink: 0;
} }
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<el-tabs v-model="activeName" @tab-click="handleClick" class="tabpane selfTab"> <el-tabs v-model="activeName" @tab-click="handleClick" class="tabpane selfTab">
<el-tab-pane label="股东" name="first"></el-tab-pane> <el-tab-pane label="股东" name="first"></el-tab-pane>
<el-tab-pane label="对外投资" name="second"></el-tab-pane> <el-tab-pane label="对外投资" name="second"></el-tab-pane>
<el-tab-pane label="分支机构" name="third"></el-tab-pane> <el-tab-pane label="分支机构" :disabled="affiliatesTotal<1" name="third"></el-tab-pane>
</el-tabs> </el-tabs>
<div class="table-item"> <div class="table-item">
<div class="rela-person" v-show="activeName=='first'">实际控制人:{{financial&&financial.actualController || '--'}}</div> <div class="rela-person" v-show="activeName=='first'">实际控制人:{{financial&&financial.actualController || '--'}}</div>
......
...@@ -172,6 +172,8 @@ export default { ...@@ -172,6 +172,8 @@ export default {
bottom: 20, bottom: 20,
data: this.viewData, data: this.viewData,
pageButtonPosition: 'end', pageButtonPosition: 'end',
itemWidth:12,
itemHeight:8,
}, },
color: ['#8A82F3','#5B9CF7','#43BBE0','#8ECF95','#FFDC6B', '#FE9C77', '#E8649B', '#8A82F3'], color: ['#8A82F3','#5B9CF7','#43BBE0','#8ECF95','#FFDC6B', '#FE9C77', '#E8649B', '#8A82F3'],
series: [ series: [
......
...@@ -16,8 +16,8 @@ export default { ...@@ -16,8 +16,8 @@ export default {
loading: false, // 是否加载完成-当前页控制 loading: false, // 是否加载完成-当前页控制
iframeTimer: '', // 是否加载中定时器-当前页控制 iframeTimer: '', // 是否加载中定时器-当前页控制
iframeHight: window.innerHeight, // iframe高度-当前页控制 iframeHight: window.innerHeight, // iframe高度-当前页控制
navHeight: 68, // iframe以为的高度px navigation: {isFixed: true, fixedHeight: 56, totalHeight: 68}, // iframe之外页面顶部对象,ifFixed:是否浮动;fixedHeight:浮动对象高度;totalHeight:顶部整体高度
src: '', src: '', //iframe嵌套页面地址
domain: 'https://pre-plug.jiansheku.com', domain: 'https://pre-plug.jiansheku.com',
// domain: 'http://192.168.60.30:3300', // domain: 'http://192.168.60.30:3300',
ak: 'aec7b3ff2y2q8x6t49a7e2c463ce21912' // 需要携带的sdkId ak: 'aec7b3ff2y2q8x6t49a7e2c463ce21912' // 需要携带的sdkId
...@@ -36,11 +36,11 @@ export default { ...@@ -36,11 +36,11 @@ export default {
}, },
mounted() { mounted() {
this.iframeLoading() // 判断iframe页面是否加载完成-当前页控制 this.iframeLoading() // 判断iframe页面是否加载完成-当前页控制
steerScroll('companyIframe', this.navHeight, true) // 监听滚动(iframe的id、页面排除iframe后页面剩下高度[例:80]、增加监听[不传就是移除监听]、父级id[不带默认就是铺满整个页面]]) steerScroll('companyIframe', this.navigation, true) // 监听滚动(iframe的id、页面排除iframe后页面剩下顶部高度[例:80]、增加监听[不传就是移除监听]、父级id[不带默认就是铺满整个页面]])
}, },
beforeDestroy() { beforeDestroy() {
clearInterval(this.iframeTimer) // -当前页控制 clearInterval(this.iframeTimer) // -当前页控制
steerScroll('companyIframe', this.navHeight) // 销毁滚动 steerScroll('companyIframe', this.navigation) // 销毁滚动
}, },
methods: { methods: {
//判断iframe页面是否加载完成-当前页控制 //判断iframe页面是否加载完成-当前页控制
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<div class="content_item"> <div class="content_item">
<div class="content_right item_ckquery_list"> <div class="content_right item_ckquery_list">
<el-input class="ename_input" placeholder="请输入企业名称关键字" v-model="keys" > <el-input class="ename_input" placeholder="请输入企业名称关键字" v-model="keys" >
<div slot="append" class="btn-search" @click="search">搜索</div> <div slot="append" class="btn-search" @click="search()">搜索</div>
</el-input> </el-input>
</div> </div>
...@@ -143,7 +143,7 @@ ...@@ -143,7 +143,7 @@
<div class="item-jf-text">建议调整关键词或筛选条件,重新搜索!</div> <div class="item-jf-text">建议调整关键词或筛选条件,重新搜索!</div>
</div> </div>
<div class=" table-item-jf" v-if="tableData.length>0"> <div class=" table-item-jf" v-if="tableData.length>0">
<el-table :data="tableData" v-loading="loading" :header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}" element-loading-text="Loading" height="500" class="table-item1" border highlight-current-row> <el-table :data="tableData" v-loading="loading" :header-cell-style="{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}" element-loading-text="Loading" class="table-item1 fixed-table" border highlight-current-row>
<el-table-column type="index" label="序号" fixed width="60"> <el-table-column type="index" label="序号" fixed width="60">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{(pageNum - 1) *20 + scope.$index + 1}}</span> <span>{{(pageNum - 1) *20 + scope.$index + 1}}</span>
...@@ -614,10 +614,25 @@ export default { ...@@ -614,10 +614,25 @@ export default {
}); });
}, },
mounted() { mounted() {
window.addEventListener("scroll",this.scrolling)
this.init(); this.init();
}, },
beforeDestroy() {
window.removeEventListener("scroll", this.scrolling);
},
methods: { methods: {
scrolling() {
let el = document.getElementsByClassName("el-table__fixed-header-wrapper")[0]
let el1 = document.getElementsByClassName("el-table")[0]
let scrollTop = document.documentElement.scrollTop ||document.body.scrollTop;
if (scrollTop>el1.offsetTop){
let top = scrollTop-el1.offsetTop-13
el.style.top = top+'px'
}else{
el.style.top = 0
}
},
domicileChange() { domicileChange() {
let arr = this.$refs.address.getCheckedNodes(); let arr = this.$refs.address.getCheckedNodes();
let provinceIds = [], let provinceIds = [],
...@@ -818,11 +833,10 @@ export default { ...@@ -818,11 +833,10 @@ export default {
creditCode:info.creditCode, creditCode:info.creditCode,
} }
api.claim(params).then(res1=>{ api.claim(params).then(res1=>{
// console.log(res) if (res1.code==200) {
if (res1.code==200) { this.dialogVisible=true;
this.dialogVisible=true; this.customerId=res1.data.customerId;
this.customerId=res1.data.customerId; }
}
}).catch(error=>{ }).catch(error=>{
}); });
...@@ -854,6 +868,8 @@ export default { ...@@ -854,6 +868,8 @@ export default {
} , } ,
}) })
this.dialogVisible=false; this.dialogVisible=false;
this.search();
}, },
search(pageNum, pageSize,exportFlag) { search(pageNum, pageSize,exportFlag) {
this.dialogVisible=false; this.dialogVisible=false;
...@@ -1245,6 +1261,20 @@ export default { ...@@ -1245,6 +1261,20 @@ export default {
::v-deep .el-table__body-wrapper{ ::v-deep .el-table__body-wrapper{
color: #232323; color: #232323;
} }
}
.fixed-table{
overflow:initial;
::v-deep .el-table__header-wrapper{
position: sticky;
top:56px;
z-index: 9;
}
::v-deep .el-table__fixed-header-wrapper{
z-index: 9;
}
} }
.table-item-jf1{ .table-item-jf1{
border-top:1px solid #EFEFEF; border-top:1px solid #EFEFEF;
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<div class="content_item content_item_padding0"> <div class="content_item content_item_padding0">
<div class="content_right item_ckquery_list"> <div class="content_right item_ckquery_list">
<el-input class="ename_input" placeholder="请输入关键字,如企业名称、统一社会信用代码等" v-model="ename" @input="projectNamebtn('ename',ename,'关键字:')"> <el-input class="ename_input" placeholder="请输入关键字,如企业名称、统一社会信用代码等" v-model="ename" @input="projectNamebtn('ename',ename,'关键字:')">
<div slot="append" class="btn-search" @click="search">搜索</div> <div slot="append" class="btn-search" @click="search()">搜索</div>
</el-input> </el-input>
<!-- <template v-if="ename"> <!-- <template v-if="ename">
<span v-for=" (item,k) in enameQueryTypeList" :key="k" style="margin-right: 24px;"> <span v-for=" (item,k) in enameQueryTypeList" :key="k" style="margin-right: 24px;">
...@@ -99,7 +99,7 @@ ...@@ -99,7 +99,7 @@
<template v-else> <template v-else>
<el-popover placement="top-start" width="200" trigger="hover"> <el-popover placement="top-start" width="200" trigger="hover">
<div class="select-popper-title"> <div class="select-popper-title">
请先选择<span class="colorhover">进省备案</span>,在选择本省与进省企业! 请先选择<span class="colorhover">进省备案</span>,再选择本省与进省企业!
</div> </div>
<div class="" slot="reference"> <div class="" slot="reference">
...@@ -554,7 +554,6 @@ ...@@ -554,7 +554,6 @@
</template> </template>
</p> </p>
<p class="card-right-title" v-if="item.formerName!=null&&(item.formerName.indexOf('color')!=-1||item.name.indexOf('color')!=-1)" style="padding: 10px 0px 0px 0px;"> <p class="card-right-title" v-if="item.formerName!=null&&(item.formerName.indexOf('color')!=-1||item.name.indexOf('color')!=-1)" style="padding: 10px 0px 0px 0px;">
<
<span class="right-title-grey">曾用名:</span> <span class="right-title-grey">曾用名:</span>
<span class="right-title-grey" style="width: 984px;" v-html="item.formerName"></span> <span class="right-title-grey" style="width: 984px;" v-html="item.formerName"></span>
</p> </p>
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
<div style="position:relative" v-for="(itme,i) in personnelList" <div style="position:relative" v-for="(itme,i) in personnelList"
:class="itme.status==true?'active':'' " :key='i' @click="personnelListbtn(i)"> :class="itme.status==true?'active':'' " :key='i' @click="personnelListbtn(i)">
<p>{{itme.value}}</p> <p>{{itme.value}}</p>
<img v-if="i==1" style="position: absolute;top:-10px;width:80px;height:16px;" src="@/assets/images/owner/tip.png" alt="">
</div> </div>
</div> </div>
...@@ -39,15 +40,16 @@ ...@@ -39,15 +40,16 @@
personnelList: [{ personnelList: [{
key: 'Owner', key: 'Owner',
status: true, status: true,
value: '查业主单位', value: '查城投平台',
}, },
{ {
key: 'SearchEnterprise', key: 'SearchEnterprise',
status: false, status: false,
value: '查建筑企业', value: '查企业',
}, },
], ],
personnelHerf:'Owner' personnelHerf:'Owner'
} }
}, },
......
...@@ -111,7 +111,7 @@ ...@@ -111,7 +111,7 @@
<el-progress class="progress2" :text-inside="true" :stroke-width="14" :percentage="70"></el-progress> <el-progress class="progress2" :text-inside="true" :stroke-width="14" :percentage="70"></el-progress>
</div> </div>
<div style="background: #ffffff;margin: 0 12px 12px 12px;"> <div style="background: #ffffff;margin: 0 12px 12px 12px;">
<div id="pm-echarts" style="height: 288px;"></div> <div id="pm-echarts" style="height: 400px;"></div>
</div> </div>
</div> </div>
</div> </div>
...@@ -279,6 +279,20 @@ ...@@ -279,6 +279,20 @@
<span>中标单位:中铁十二局集团</span> <span>中标单位:中铁十二局集团</span>
</p> </p>
</div> </div>
<div class="item">
<h3>太原市万柏林区2023年兴华街道老旧小区改造项目</h3>
<p>
<span>中标金额:4754.34</span>
<span>中标单位:中铁十二局集团</span>
</p>
</div>
<div class="item">
<h3>太原市万柏林区2023年兴华街道老旧小区改造项目</h3>
<p>
<span>中标金额:4754.34</span>
<span>中标单位:中铁十二局集团</span>
</p>
</div>
</div> </div>
</div> </div>
<div v-if="user === 2" class="zbhxr"> <div v-if="user === 2" class="zbhxr">
...@@ -314,6 +328,24 @@ ...@@ -314,6 +328,24 @@
<span>中标金额:4754.34</span> <span>中标金额:4754.34</span>
</p> </p>
</div> </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> </div>
</div> </div>
...@@ -429,6 +461,24 @@ export default { ...@@ -429,6 +461,24 @@ export default {
name:'重庆机场集团', name:'重庆机场集团',
time:'2023-04-12 14: 00' time:'2023-04-12 14: 00'
}, },
{
title:'拜访了重庆交通局杨科长,洽谈比较愉快,预计下月有项目招标,希望能有机会合作。',
user:'李婷婷',
name:'重庆机场集团',
time:'2023-04-12 14: 00'
},
{
title:'拜访了重庆交通局杨科长,洽谈比较愉快,预计下月有项目招标,希望能有机会合作。',
user:'李婷婷',
name:'重庆机场集团',
time:'2023-04-12 14: 00'
},
{
title:'拜访了重庆交通局杨科长,洽谈比较愉快,预计下月有项目招标,希望能有机会合作。',
user:'李婷婷',
name:'重庆机场集团',
time:'2023-04-12 14: 00'
},
], ],
pmData:[ pmData:[
{ {
...@@ -974,6 +1024,7 @@ export default { ...@@ -974,6 +1024,7 @@ export default {
margin: 0; margin: 0;
} }
.home { .home {
padding-bottom:24px;
::v-deep .el-row{ ::v-deep .el-row{
.el-col:nth-child(1){ .el-col:nth-child(1){
padding-left: 0 !important; padding-left: 0 !important;
...@@ -1089,18 +1140,18 @@ export default { ...@@ -1089,18 +1140,18 @@ export default {
} }
.content-wrap{ .content-wrap{
margin-bottom: 12px; margin-bottom: 12px;
height: 460px; height: 587px;
.select-popper{ .select-popper{
margin-right:0; margin-right:0;
} }
.record{ .record{
height: 460px; height: 587px;
background: #FFFFFF; background: #FFFFFF;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
position: relative; position: relative;
.list{ .list{
height: 375px; height: 510px;
overflow: hidden; overflow: hidden;
.item{ .item{
border-bottom: 1px solid #EEEEEE; border-bottom: 1px solid #EEEEEE;
...@@ -1131,27 +1182,28 @@ export default { ...@@ -1131,27 +1182,28 @@ export default {
text-align: center; text-align: center;
color: #0081FF; color: #0081FF;
font-size: 14px; font-size: 14px;
margin-top: 4px;
cursor: pointer; cursor: pointer;
position: absolute; position: absolute;
bottom:16px; width: 95%;
left: 50%; height: 60px;
margin-left: -48px; line-height: 60px;
background: linear-gradient(360deg, #FFFFFF 0%, #FFFFFF 17%, rgba(255,255,255,0.6) 100%);
bottom: 0;
} }
} }
.ranking{ .ranking{
height: 460px; height: 587px;
background: #FFFFFF; background: #FFFFFF;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
.main{ .main{
background: url("../assets/images/index/yjpm_bg.png"); background: url("../assets/images/index/yjpm_bg.png");
background-size: 100% 100%; background-size: 100% 100%;
height: 399px; height: 525px;
margin-top: 10px; margin-top: 10px;
} }
.amount{ .amount{
padding: 16px 24px; padding: 16px 12px;
p{ p{
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
...@@ -1175,6 +1227,8 @@ export default { ...@@ -1175,6 +1227,8 @@ export default {
} }
.progress1{ .progress1{
height: 10px !important; height: 10px !important;
margin-bottom:6px;
margin-top:8px;
::v-deep .el-progress-bar__outer{ ::v-deep .el-progress-bar__outer{
.el-progress-bar__inner{ .el-progress-bar__inner{
background:#9AEAD3 background:#9AEAD3
...@@ -1303,6 +1357,7 @@ export default { ...@@ -1303,6 +1357,7 @@ export default {
font-size: 14px; font-size: 14px;
span{ span{
margin-right: 24px; margin-right: 24px;
color:rgba(35, 35, 35, 0.8);
} }
} }
.btn{ .btn{
...@@ -1380,7 +1435,7 @@ export default { ...@@ -1380,7 +1435,7 @@ export default {
background: #FFFFFF; background: #FFFFFF;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
height: 440px; height: 617px;
overflow: hidden; overflow: hidden;
position: relative; position: relative;
::v-deep .el-tabs__header{ ::v-deep .el-tabs__header{
...@@ -1388,7 +1443,7 @@ export default { ...@@ -1388,7 +1443,7 @@ export default {
} }
::v-deep .el-tabs__content{ ::v-deep .el-tabs__content{
overflow-y: auto; overflow-y: auto;
height: 368px; height: 567px;
} }
::v-deep .el-timeline{ ::v-deep .el-timeline{
.el-timeline-item{ .el-timeline-item{
...@@ -1528,7 +1583,7 @@ export default { ...@@ -1528,7 +1583,7 @@ export default {
} }
} }
.zbgg{ .zbgg{
height: 470px; height: 599px;
background: #FFFFFF; background: #FFFFFF;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
...@@ -1570,7 +1625,7 @@ export default { ...@@ -1570,7 +1625,7 @@ export default {
} }
} }
.zbhxr{ .zbhxr{
height: 382px; height: 558px;
background: #FFFFFF; background: #FFFFFF;
border-radius: 4px; border-radius: 4px;
padding: 16px; padding: 16px;
......
...@@ -666,6 +666,19 @@ export default { ...@@ -666,6 +666,19 @@ export default {
/*}*/ /*}*/
/*}*/ /*}*/
} }
th{
font-size: 12px !important;
font-weight: 400 !important;
}
.el-table__fixed-header-wrapper th{
background: #F0F3FA;
}
td.el-table__cell{
border-bottom: 0;
}
.caret-wrapper{
width: 10px;
}
} }
.table-title{ .table-title{
/*width: 100%;*/ /*width: 100%;*/
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
<div id="echarts" style="height: 400px"></div> <div id="echarts" style="height: 400px"></div>
<p class="tips"> 注:数据均来源于统计公报、统计年鉴,实际披露中由于部分地区最新年度数据不全,导致年份间数据差距较大</p> <p class="tips"> 注:数据均来源于统计公报、统计年鉴,实际披露中由于部分地区最新年度数据不全,导致年份间数据差距较大</p>
</div> </div>
<div class="content-right"> <div class="content-right table-item">
<el-table <el-table
v-loading="tableLoading" v-loading="tableLoading"
:data="tableData" :data="tableData"
...@@ -105,22 +105,24 @@ export default { ...@@ -105,22 +105,24 @@ export default {
params.county=this.provinceId[2] params.county=this.provinceId[2]
} }
bidMoneyGroupByProjectType(params).then(res => { bidMoneyGroupByProjectType(params).then(res => {
let list=res.data[1].type if(res.data.length > 0){
for (let i=0; i<res.data[0].type.length; i++){ let list=res.data[1].type
for (let j=0; j<list.length; j++){ for (let i=0; i<res.data[0].type.length; i++){
if(res.data[0].type[i].projectType === list[j].projectType){ for (let j=0; j<list.length; j++){
list[j].lastMoney=res.data[0].type[i].money; if(res.data[0].type[i].projectType === list[j].projectType){
list[j].lastRate=res.data[0].type[i].rate; list[j].lastMoney=res.data[0].type[i].money;
list[j].lastRate=res.data[0].type[i].rate;
}
} }
} }
for(let i=0; i<list.length; i++){
list[i].money=Number(list[i].money).toFixed(2)
list[i].rate=Number(list[i].rate).toFixed(2)
list[i].lastMoney=Number(list[i].lastMoney).toFixed(2)
list[i].lastRate=Number(list[i].lastRate).toFixed(2)
}
this.tableData=list.reverse()
} }
for(let i=0; i<list.length; i++){
list[i].money=Number(list[i].money).toFixed(2)
list[i].rate=Number(list[i].rate).toFixed(2)
list[i].lastMoney=Number(list[i].lastMoney).toFixed(2)
list[i].lastRate=Number(list[i].lastRate).toFixed(2)
}
this.tableData=list.reverse()
}) })
}, },
getGroupCount(){ getGroupCount(){
...@@ -283,6 +285,37 @@ export default { ...@@ -283,6 +285,37 @@ export default {
z-index: 0; z-index: 0;
top: 46px; top: 46px;
} }
th{
font-size: 12px !important;
font-weight: 400 !important;
}
.el-table__fixed-header-wrapper th{
background: #F0F3FA;
}
td.el-table__cell{
border-bottom: 0;
}
.caret-wrapper{
width: 10px;
}
.has-gutter{
tr{
th:nth-child(4){
border-right:0;
.cell{
padding-right: 24px !important;
}
}
td:nth-child(6){
border-right:0;
}
}
}
.el-table__cell.gutter{
background: #F5F7FA;
width: 16px !important;
border-top: 1px solid #dfe6ec;
}
} }
} }
} }
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<span class="common-title">经济数据</span> <span class="common-title">经济数据</span>
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small"> <el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item prop="year"> <el-form-item prop="year">
<el-select v-model="queryParams.year" filterable class="form-content-width" placeholder="请选择" @change="getData"> <el-select v-model="queryParams.year" filterable class="form-content-width" placeholder="请选择" @change="changeSelect">
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.year" :value="item.year" /> <el-option v-for="(item, index) in yearOptions" :key="index" :label="item.year" :value="item.year" />
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -102,14 +102,13 @@ export default { ...@@ -102,14 +102,13 @@ export default {
if(this.queryParams.order){ if(this.queryParams.order){
params.order=this.queryParams.order params.order=this.queryParams.order
} }
if(this.provinceId.length > 0){
if(this.provinceId.length >= 0){
params.provinceIds=[this.provinceId[0]] params.provinceIds=[this.provinceId[0]]
} }
if(this.provinceId.length >= 1){ if(this.provinceId.length > 1){
params.cityId=[this.provinceId[1]] params.cityId=[this.provinceId[1]]
} }
if(this.provinceId.length >= 2){ if(this.provinceId.length > 2){
params.areaId=[this.provinceId[2]] params.areaId=[this.provinceId[2]]
} }
// params.provinceIds=[this.dataQuery.provinceId] // params.provinceIds=[this.dataQuery.provinceId]
...@@ -118,6 +117,10 @@ export default { ...@@ -118,6 +117,10 @@ export default {
this.tableDataTotal = res.data.totalCount this.tableDataTotal = res.data.totalCount
}) })
}, },
changeSelect(){
this.pageIndex=1
this.getData()
},
// 重置页数 // 重置页数
handleSizeChange(val) { handleSizeChange(val) {
this.pageIndex = 1 this.pageIndex = 1
...@@ -199,6 +202,21 @@ export default { ...@@ -199,6 +202,21 @@ export default {
} }
.table-item{ .table-item{
margin-top: 22px; margin-top: 22px;
::v-deep .el-table{
th{
font-size: 12px !important;
font-weight: 400 !important;
}
.el-table__fixed-header-wrapper th{
background: #F0F3FA;
}
td.el-table__cell{
border-bottom: 0;
}
.caret-wrapper{
width: 10px;
}
}
} }
} }
......
...@@ -11,8 +11,8 @@ ...@@ -11,8 +11,8 @@
<img v-else src="@/assets/images/economies/icon_down.png"> <img v-else src="@/assets/images/economies/icon_down.png">
</div> </div>
<div id="echartsGDP" style="height: 75px;"></div> <div id="echartsGDP" style="height: 75px;"></div>
<div class="item-text up" v-if="recentlyYear.gdpGrowth > 0">{{nextYearMap.year}}年上升<span>{{recentlyYear.gdpGrowth}}%</span></div> <div class="item-text up" v-if="Number(recentlyYear.gdpGrowth) > 0">{{nextYearMap.year}}年上升<span>{{recentlyYear.gdpGrowth}}%</span></div>
<div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{Number(recentlyYear.gdpGrowth).toString().substring(1)}}%</span></div> <div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{Number(recentlyYear.gdpGrowth).toFixed(2).toString().substring(1)}}%</span></div>
</div> </div>
<div class="item"> <div class="item">
<div class="item-title"><i style="background: #718AFF;"></i>{{recentlyYear.year}}年GDP增速</div> <div class="item-title"><i style="background: #718AFF;"></i>{{recentlyYear.year}}年GDP增速</div>
...@@ -22,8 +22,8 @@ ...@@ -22,8 +22,8 @@
<img v-else src="@/assets/images/economies/icon_down.png"> <img v-else src="@/assets/images/economies/icon_down.png">
</div> </div>
<div id="echartsZS" style="height: 75px;"></div> <div id="echartsZS" style="height: 75px;"></div>
<div class="item-text up" v-if="(recentlyYear.gdpGrowth-nextYearMap.gdpGrowth) > 0">{{nextYearMap.year}}年上升<span>{{recentlyYear.gdpGrowthCompare}}%</span></div> <div class="item-text up" v-if="(Number(getMoneyNum(recentlyYear.gdpGrowth))-Number(getMoneyNum(nextYearMap.gdpGrowth))) > 0">{{nextYearMap.year}}年上升<span>{{recentlyYear.gdpGrowthCompare}}%</span></div>
<div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{recentlyYear.gdpGrowthCompare}}%</span></div> <div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{Number(recentlyYear.gdpGrowthCompare).toFixed(2).toString().substring(1)}}%</span></div>
</div> </div>
<div class="item"> <div class="item">
<div class="item-title"><i style="background: #3AD0D1;"></i>{{recentlyYear.year}}年人口</div> <div class="item-title"><i style="background: #3AD0D1;"></i>{{recentlyYear.year}}年人口</div>
...@@ -33,8 +33,8 @@ ...@@ -33,8 +33,8 @@
<img v-else src="@/assets/images/economies/icon_down.png"> <img v-else src="@/assets/images/economies/icon_down.png">
</div> </div>
<div id="echartsRK" style="height: 75px;"></div> <div id="echartsRK" style="height: 75px;"></div>
<div class="item-text up" v-if="recentlyYear.populationGrowthRate > 0">{{nextYearMap.year}}年上升<span>{{recentlyYear.populationGrowthRate}}%</span></div> <div class="item-text up" v-if="Number(recentlyYear.populationGrowthRate) > 0">{{nextYearMap.year}}年上升<span>{{recentlyYear.populationGrowthRate}}%</span></div>
<div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{recentlyYear.populationGrowthRate}}%</span></div> <div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{Number(recentlyYear.populationGrowthRate).toFixed(2).toString().substring(1)}}%</span></div>
</div> </div>
<div class="item"> <div class="item">
<div class="item-title"><i style="background: #FFBE5D;"></i>{{recentlyYear.year}}年一般公共预算收入</div> <div class="item-title"><i style="background: #FFBE5D;"></i>{{recentlyYear.year}}年一般公共预算收入</div>
...@@ -44,8 +44,8 @@ ...@@ -44,8 +44,8 @@
<img v-else src="@/assets/images/economies/icon_down.png"> <img v-else src="@/assets/images/economies/icon_down.png">
</div> </div>
<div id="echartsSR" style="height: 75px;"></div> <div id="echartsSR" style="height: 75px;"></div>
<div class="item-text up" v-if="recentlyYear.gbrGrowth > 0">{{nextYearMap.year}}年上升<span>{{recentlyYear.gbrGrowth}}%</span></div> <div class="item-text up" v-if="Number(recentlyYear.gbrGrowth) > 0">{{nextYearMap.year}}年上升<span>{{recentlyYear.gbrGrowth}}%</span></div>
<div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{Number(recentlyYear.gbrGrowth).toString().substring(1)}}%</span></div> <div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{Number(recentlyYear.gbrGrowth).toFixed(2).toString().substring(1)}}%</span></div>
</div> </div>
<div class="item"> <div class="item">
<div class="item-title"><i style="background: #FF8935;"></i>{{recentlyYear.year}}年地方政府债务余额</div> <div class="item-title"><i style="background: #FF8935;"></i>{{recentlyYear.year}}年地方政府债务余额</div>
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
<img v-else src="@/assets/images/economies/icon_down.png"> <img v-else src="@/assets/images/economies/icon_down.png">
</div> </div>
<div id="echartsYE" style="height: 75px;"></div> <div id="echartsYE" style="height: 75px;"></div>
<div class="item-text up" v-if="recentlyYear.govDebtBalance > nextYearMap.govDebtBalance"> <div class="item-text up" v-if="Number(getMoneyNum(recentlyYear.govDebtBalance)) > Number(getMoneyNum(nextYearMap.govDebtBalance))">
{{nextYearMap.year}}年上升<span>{{recentlyYear.govDebtBalanceCompare}}%</span></div> {{nextYearMap.year}}年上升<span>{{recentlyYear.govDebtBalanceCompare}}%</span></div>
<div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{recentlyYear.govDebtBalanceCompare}}%</span></div> <div class="item-text down" v-else>{{nextYearMap.year}}年下降<span>{{recentlyYear.govDebtBalanceCompare}}%</span></div>
</div> </div>
...@@ -669,6 +669,12 @@ export default { ...@@ -669,6 +669,12 @@ export default {
fontWeight: 'bold' fontWeight: 'bold'
} }
} }
if(row.row.title === '指标'){
return {
background: '#F0F3FA',
color:'#4C4D4E',
}
}
}, },
handleMessage(){ handleMessage(){
this.$message({ this.$message({
...@@ -816,11 +822,32 @@ export default { ...@@ -816,11 +822,32 @@ export default {
} }
.table-item{ .table-item{
margin-top: 22px; margin-top: 22px;
/*::v-deep .el-table {*/ ::v-deep .el-table{
/*td.el-table__cell {*/ overflow:visible;
/*border-bottom: 0;*/ th{
/*}*/ font-size: 12px !important;
/*}*/ font-weight: 400 !important;
}
.el-table__fixed-header-wrapper th{
background: #F0F3FA;
}
td.el-table__cell{
border-bottom: 0;
}
.caret-wrapper{
width: 10px;
}
.el-table__body-wrapper{
overflow:visible;
}
.el-table__body{
tr:first-child{
position: sticky;
top:56px;
z-index: 9;
}
}
}
} }
} }
</style> </style>
...@@ -106,8 +106,6 @@ export default { ...@@ -106,8 +106,6 @@ export default {
this.activeName=this.dataQuery.activeName; this.activeName=this.dataQuery.activeName;
} }
// let name = sessionStorage.getItem('currentTab') // let name = sessionStorage.getItem('currentTab')
// if (name != "undefined" && name){ // if (name != "undefined" && name){
// this.activeName = name; // this.activeName = name;
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
placeholder="资质资格" placeholder="资质资格"
collapse-tags collapse-tags
clearable></el-cascader> clearable></el-cascader>
<el-input placeholder="输入企业名称关键词" v-model="queryParams.ename" clearable @clear="handleSearch()"> <el-input placeholder="输入关键词查询" v-model="queryParams.ename" clearable @clear="handleSearch()">
<el-button slot="append" @click="handleSearch()">搜索</el-button> <el-button slot="append" @click="handleSearch()">搜索</el-button>
</el-input> </el-input>
<span class="total">{{tableDataTotal}}</span> <span class="total">{{tableDataTotal}}</span>
...@@ -135,7 +135,23 @@ export default { ...@@ -135,7 +135,23 @@ export default {
this.aptitudeCode() this.aptitudeCode()
}, },
mounted() {
window.addEventListener("scroll",this.scrolling)
},
beforeDestroy() {
window.removeEventListener("scroll", this.scrolling);
},
methods: { methods: {
scrolling() {
let el = document.getElementsByClassName("el-table__fixed-header-wrapper")[0]
let scrollTop =window.pageYOffset ||document.documentElement.scrollTop ||document.body.scrollTop;
if (scrollTop>197){
let top = scrollTop-197
el.style.top = top+'px'
}else{
el.style.top = 0
}
},
//资质Json //资质Json
async aptitudeCode() { async aptitudeCode() {
// await axios.post("https://files.jiansheku.com/file/json/common/aptitudeCode.json", {}, { // await axios.post("https://files.jiansheku.com/file/json/common/aptitudeCode.json", {}, {
...@@ -356,17 +372,22 @@ export default { ...@@ -356,17 +372,22 @@ export default {
} }
} }
::v-deep .el-input.el-input-group{ ::v-deep .el-input.el-input-group{
width: 250px; width: 240px;
height: 32px; height: 32px;
.el-input__inner{ .el-input__inner{
height: 32px; height: 32px;
border-right: 0; border-right: 0;
} }
.el-input__suffix{
margin-top: -1px;
}
.el-input-group__append{ .el-input-group__append{
width: 59px; width: 59px;
background: #F5F5F5; background: #F5F5F5;
color:#0081FF; color:#0081FF;
border-left: 0; border-left: 0;
padding: 0;
text-align: center;
} }
} }
.total{ .total{
...@@ -399,6 +420,30 @@ export default { ...@@ -399,6 +420,30 @@ export default {
margin-top: 8px; margin-top: 8px;
} }
} }
::v-deep .el-table{
overflow:visible;
.el-table__header-wrapper{
position: sticky;
top:56px;
z-index: 9;
}
.el-table__fixed-header-wrapper{
z-index: 9;
}
th{
font-size: 12px !important;
font-weight: 400 !important;
}
.el-table__fixed-header-wrapper th{
background: #F0F3FA;
}
td.el-table__cell{
border-bottom: 0;
}
.caret-wrapper{
width: 10px;
}
}
} }
} }
} }
......
...@@ -130,9 +130,9 @@ ...@@ -130,9 +130,9 @@
{{formatDate(scope.row.tenderDate)}} {{formatDate(scope.row.tenderDate)}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="actualBondIssueScale" label="专项债规模(亿)" width="260" /> <el-table-column prop="actualBondIssueScale" label="专项债规模(亿)" width="260" :formatter="formatStatus"/>
<el-table-column prop="isUsedProjectScale" label="用于项目规模(亿)" width="260" /> <el-table-column prop="isUsedProjectScale" label="用于项目规模(亿)" width="260" :formatter="formatStatus"/>
<el-table-column prop="isUsedCapital" label="是否资本金" width="200" /> <el-table-column prop="isUsedCapital" label="是否资本金" width="200" :formatter="formatStatus"/>
</el-table> </el-table>
</div> </div>
</div> </div>
...@@ -185,7 +185,10 @@ export default { ...@@ -185,7 +185,10 @@ export default {
// var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds() // var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
// return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds // return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds
return year + '-' + month + '-' + day return year + '-' + month + '-' + day
} },
formatStatus: function(row, column, cellValue) {
return cellValue? cellValue : '-'
},
} }
} }
</script> </script>
......
...@@ -431,7 +431,7 @@ export default { ...@@ -431,7 +431,7 @@ export default {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
.box-left{ .box-left{
width: 55%; width: 50%;
} }
.empty{ .empty{
margin: 0 auto; margin: 0 auto;
...@@ -509,6 +509,9 @@ export default { ...@@ -509,6 +509,9 @@ export default {
padding: 0; padding: 0;
line-height: 40px; line-height: 40px;
} }
.el-table__body tr:hover > td.el-table__cell{
background: #DCEBFF;
}
::-webkit-scrollbar-track-piece { ::-webkit-scrollbar-track-piece {
//滚动条凹槽的颜色,还可以设置边框属性 //滚动条凹槽的颜色,还可以设置边框属性
background-color: #F3F4F5; background-color: #F3F4F5;
...@@ -538,6 +541,9 @@ export default { ...@@ -538,6 +541,9 @@ export default {
th:nth-child(4){ th:nth-child(4){
border-right:0; border-right:0;
} }
td:nth-child(4){
border-right:0;
}
} }
} }
.el-table__cell.gutter{ .el-table__cell.gutter{
......
...@@ -295,5 +295,17 @@ export default { ...@@ -295,5 +295,17 @@ export default {
} }
.table-item{ .table-item{
padding: 16px 10px 16px 16px; padding: 16px 10px 16px 16px;
::v-deep .el-table{
/*.el-table__body-wrapper{*/
/*overflow:visible;*/
/*}*/
/*.el-table__body{*/
/*tr:first-child{*/
/*position: fixed;*/
/*top: 49px;*/
/*z-index: 9;*/
/*}*/
/*}*/
}
} }
</style> </style>
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<span class="common-title">全国经济大全</span> <span class="common-title">全国经济大全</span>
<el-form ref="queryForm" :model="queryParams" :inline="true" size="small"> <el-form ref="queryForm" :model="queryParams" :inline="true" size="small">
<el-form-item prop="year"> <el-form-item prop="year">
<el-select v-model="queryParams.year" filterable class="form-content-width" placeholder="请选择" @change="handleSearch"> <el-select v-model="queryParams.year" filterable class="form-content-width" placeholder="请选择" @change="handleSearch" :popper-append-to-body='false'>
<el-option v-for="(item, index) in yearOptions" :key="index" :label="item.year" :value="item.year" /> <el-option v-for="(item, index) in yearOptions" :key="index" :label="item.year" :value="item.year" />
</el-select> </el-select>
</el-form-item> </el-form-item>
...@@ -31,11 +31,11 @@ ...@@ -31,11 +31,11 @@
<div class="table-item"> <div class="table-item">
<el-table <el-table
v-loading="tableLoading" v-loading="tableLoading"
class="fixed-table"
:data="tableData" :data="tableData"
element-loading-text="Loading" element-loading-text="Loading"
@sort-change="sortChange" @sort-change="sortChange"
border border
fit
highlight-current-row highlight-current-row
v-if="tableDataTotal > 0" v-if="tableDataTotal > 0"
:default-sort = "{prop: 'gdp', order: 'descending'}" :default-sort = "{prop: 'gdp', order: 'descending'}"
...@@ -57,9 +57,9 @@ ...@@ -57,9 +57,9 @@
<el-table-column label="GDP增速(%)" prop="gdpGrowth" :formatter="formatStatus" sortable="custom" min-width="120" align="right"></el-table-column> <el-table-column label="GDP增速(%)" prop="gdpGrowth" :formatter="formatStatus" sortable="custom" min-width="120" align="right"></el-table-column>
<el-table-column label="人均GDP(元)" prop="gdpPerCapita" :formatter="formatStatus" sortable="custom" width="125" align="right"></el-table-column> <el-table-column label="人均GDP(元)" prop="gdpPerCapita" :formatter="formatStatus" sortable="custom" width="125" align="right"></el-table-column>
<el-table-column label="人口(万人)" prop="population" :formatter="formatStatus" sortable="custom" width="120" align="right"></el-table-column> <el-table-column label="人口(万人)" prop="population" :formatter="formatStatus" sortable="custom" width="120" align="right"></el-table-column>
<el-table-column label="一般公共预算收入(亿元)" prop="gbr" sortable="custom" :formatter="formatStatus" width="170" align="right"></el-table-column> <el-table-column label="一般公共预算收入(亿元)" prop="gbr" sortable="custom" :formatter="formatStatus" width="180" align="right"></el-table-column>
<el-table-column label="一般公共预算收入增速(%)" prop="gbrGrowth" :formatter="formatStatus" sortable="custom" min-width="140" align="right"></el-table-column> <el-table-column label="一般公共预算收入增速(%)" prop="gbrGrowth" :formatter="formatStatus" sortable="custom" min-width="150" align="right"></el-table-column>
<el-table-column label="一般公共预算收入:税收收入(亿元)" prop="taxIncome" :formatter="formatStatus" sortable="custom" min-width="140" align="right"></el-table-column> <el-table-column label="一般公共预算收入:税收收入(亿元)" prop="taxIncome" :formatter="formatStatus" sortable="custom" min-width="150" align="right"></el-table-column>
<el-table-column label="一般公共预算支出(亿元)" prop="gbe" :formatter="formatStatus" sortable="custom" width="140" align="right"></el-table-column> <el-table-column label="一般公共预算支出(亿元)" prop="gbe" :formatter="formatStatus" sortable="custom" width="140" align="right"></el-table-column>
<el-table-column label="政府性基金收入(亿元)" width="140" prop="govFundIncome" :formatter="formatStatus" sortable="custom" align="right"></el-table-column> <el-table-column label="政府性基金收入(亿元)" width="140" prop="govFundIncome" :formatter="formatStatus" sortable="custom" align="right"></el-table-column>
<el-table-column label="政府性基金收入:土地出让收入(亿元)" prop="landTransferIncome" sortable="custom" :formatter="formatStatus" width="150" align="right"></el-table-column> <el-table-column label="政府性基金收入:土地出让收入(亿元)" prop="landTransferIncome" sortable="custom" :formatter="formatStatus" width="150" align="right"></el-table-column>
...@@ -150,7 +150,23 @@ ...@@ -150,7 +150,23 @@
this.dataRegion() this.dataRegion()
this.getYears() this.getYears()
}, },
mounted() {
window.addEventListener("scroll",this.scrolling)
},
beforeDestroy() {
window.removeEventListener("scroll", this.scrolling);
},
methods: { methods: {
scrolling() {
let el = document.getElementsByClassName("el-table__fixed-header-wrapper")[0]
let scrollTop =window.pageYOffset ||document.documentElement.scrollTop ||document.body.scrollTop;
if (scrollTop>138){
let top = scrollTop-138
el.style.top = top+'px'
}else{
el.style.top = 0
}
},
getYears(){ getYears(){
getYears({}).then(res => { getYears({}).then(res => {
this.yearOptions=res.data.reverse(); this.yearOptions=res.data.reverse();
...@@ -322,6 +338,7 @@ ...@@ -322,6 +338,7 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.qgjjdq{ .qgjjdq{
.query-box{ .query-box{
margin: -8px 0 8px 0; margin: -8px 0 8px 0;
...@@ -346,13 +363,18 @@ ...@@ -346,13 +363,18 @@
} }
} }
} }
::v-deep .el-select-dropdown{
.el-select-dropdown__item.hover{
color: #0081FF;
}
}
.content{ .content{
background: #ffffff; background: #ffffff;
padding: 16px; padding: 16px;
margin-top: 12px; margin-top: 12px;
/*height: calc(100vh - 300px);*/ /*height: calc(100vh - 300px);*/
.table-item{ .table-item{
position: relative; /*position: relative;*/
.empty{ .empty{
/*position: absolute;*/ /*position: absolute;*/
/*top: 50%;*/ /*top: 50%;*/
...@@ -379,6 +401,15 @@ ...@@ -379,6 +401,15 @@
} }
} }
::v-deep .el-table{ ::v-deep .el-table{
overflow:visible;
.el-table__header-wrapper{
position: sticky;
top:56px;
z-index: 9;
}
.el-table__fixed-header-wrapper{
z-index: 9;
}
th{ th{
font-size: 12px !important; font-size: 12px !important;
font-weight: 400 !important; font-weight: 400 !important;
...@@ -393,6 +424,9 @@ ...@@ -393,6 +424,9 @@
width: 10px; width: 10px;
} }
} }
::v-deep .fixed-table{
}
} }
} }
} }
......
...@@ -148,6 +148,10 @@ export default { ...@@ -148,6 +148,10 @@ export default {
type:'', type:'',
count:'', count:'',
}, },
{
type:'',
count:'',
},
], ],
tableData1:[], tableData1:[],
dataSort:[ dataSort:[
...@@ -606,6 +610,19 @@ export default { ...@@ -606,6 +610,19 @@ export default {
} }
} }
} }
th{
font-size: 12px !important;
font-weight: 400 !important;
}
.el-table__fixed-header-wrapper th{
background: #F0F3FA;
}
td.el-table__cell{
border-bottom: 0;
}
.caret-wrapper{
width: 10px;
}
} }
} }
} }
......
...@@ -557,7 +557,7 @@ export default { ...@@ -557,7 +557,7 @@ export default {
grid: { grid: {
top:20, top:20,
left:65, left:65,
right:30, right:50,
bottom:20, bottom:20,
}, },
series: [ series: [
...@@ -829,6 +829,19 @@ export default { ...@@ -829,6 +829,19 @@ export default {
} }
} }
} }
th{
font-size: 12px !important;
font-weight: 400 !important;
}
.el-table__fixed-header-wrapper th{
background: #F0F3FA;
}
td.el-table__cell{
border-bottom: 0;
}
.caret-wrapper{
width: 10px;
}
} }
} }
} }
......
<template> <template>
<div class="app-container container-box nationalEconomies"> <div class="app-container nationalEconomies">
<div class="header"> <div class="header">
<el-tabs v-model="activeName" @tab-click="handleClick"> <el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="全国经济大全" name="first"></el-tab-pane> <el-tab-pane label="全国经济大全" name="first"></el-tab-pane>
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
<el-tab-pane label="全国中标市场分析" name="third"></el-tab-pane> <el-tab-pane label="全国中标市场分析" name="third"></el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
<Economic v-if="activeName === 'first'"></Economic> <Economic v-if="activeName === 'first'"></Economic>
<ZhaoBiao v-if="activeName === 'second'"></ZhaoBiao> <ZhaoBiao v-if="activeName === 'second'"></ZhaoBiao>
<ZhongBiao v-if="activeName === 'third'"></ZhongBiao> <ZhongBiao v-if="activeName === 'third'"></ZhongBiao>
......
...@@ -346,6 +346,7 @@ export default { ...@@ -346,6 +346,7 @@ export default {
axisPointer:{ //悬浮于圆点展示标签 axisPointer:{ //悬浮于圆点展示标签
type:'axis' type:'axis'
}, },
extraCssText: 'border:0',
// trigger: 'axis' // trigger: 'axis'
}, },
legend: { legend: {
......
...@@ -61,69 +61,71 @@ ...@@ -61,69 +61,71 @@
</div> </div>
</div> </div>
</div> </div>
<div class="recordlist" v-if="showtype=='gjdt'"> <skeleton v-if="isSkeleton" style="padding-top: 16px"></skeleton>
<div class="rec_detail" v-for="(item,index) in recordlist.rows"> <div v-else>
<div class="delform" v-if="isdel && delID == item.id"> <div class="recordlist" v-if="showtype=='gjdt'">
<div class="words">是否删除该条记录</div> <div class="rec_detail" v-for="(item,index) in recordlist.rows">
<div> <div class="delform" v-if="isdel && delID == item.id">
<div class="btnsmall btn_primary h28" @click="delele">确定</div> <div class="words">是否删除该条记录</div>
<div class="btnsmall btn_cancel h28" @click="isdel=false">取消</div> <div>
<div class="btnsmall btn_primary h28" @click="delele">确定</div>
<div class="btnsmall btn_cancel h28" @click="isdel=false">取消</div>
</div>
</div> </div>
</div>
<div class="rec_time"> <div class="rec_time">
<i class="el-icon-time"></i> <i class="el-icon-time"></i>
<div>{{item.createTime && item.createTime.slice(0, 16)}}</div> <div>{{item.createTime && item.createTime.slice(0, 16)}}</div>
<div class="operate"> <div class="operate">
<!--<img src="@/assets/images/edit.png">第一期不做编辑--> <!--<img src="@/assets/images/edit.png">第一期不做编辑-->
<img @click="delRecord(item.id)" src="@/assets/images/delete.png"> <img @click="delRecord(item.id)" src="@/assets/images/delete.png">
</div>
</div> </div>
</div> <div class="rec_con">
<div class="rec_con"> <div><strong>{{item.nickName}}</strong> <span v-if="item.visitMode">({{item.visitMode}})</span></div>
<div><strong>{{item.nickName}}</strong> <span v-if="item.visitMode">({{item.visitMode}})</span></div> <div><span>{{item.content}}</span></div>
<div><span>{{item.content}}</span></div> <div class="rec_text">
<div class="rec_text"> <span v-if="item.name">拜访对象:{{item.name||'--'}}</span>
<span v-if="item.name">拜访对象:{{item.name||'--'}}</span> <span v-if="showtype == 'gjdt' && item.companyName != ''">关联企业:{{item.companyName}}</span>
<span v-if="showtype == 'gjdt' && item.companyName != ''">关联企业:{{item.companyName}}</span> <span v-if="item.position">职位:{{item.position}}</span>
<span v-if="item.position">职位:{{item.position}}</span> <span v-if="item.visitTime">拜访时间:{{item.visitTime.slice(0, 10)}}</span>
<span v-if="item.visitTime">拜访时间:{{item.visitTime.slice(0, 10)}}</span> <span v-if="item.nextVisitTime">下次拜访时间:{{item.nextVisitTime.slice(0, 10)}}</span>
<span v-if="item.nextVisitTime">下次拜访时间:{{item.nextVisitTime.slice(0, 10)}}</span> </div>
</div> </div>
</div> </div>
</div> </div>
</div> <div class="recordlist" v-if="showtype=='gjjl' || showtype == 'projectgjdt' && recordlist.total>0">
<div class="recordlist" v-if="showtype=='gjjl' || showtype == 'projectgjdt' && recordlist.total>0"> <div class="rec_detail" v-for="(item,index) in recordlist.rows">
<div class="rec_detail" v-for="(item,index) in recordlist.rows"> <div class="delform" v-if="isdel && delID == item.id">
<div class="delform" v-if="isdel && delID == item.id"> <div class="words">是否删除该条记录</div>
<div class="words">是否删除该条记录</div> <div>
<div> <div class="btnsmall btn_primary h28" @click="delele">确定</div>
<div class="btnsmall btn_primary h28" @click="delele">确定</div> <div class="btnsmall btn_cancel h28" @click="isdel=false">取消</div>
<div class="btnsmall btn_cancel h28" @click="isdel=false">取消</div> </div>
</div> </div>
</div>
<div class="rec_time"> <div class="rec_time">
<i class="el-icon-time"></i> <i class="el-icon-time"></i>
<div>{{item.creatTime}}</div> <div>{{item.creatTime}}</div>
<div class="operate" v-if="isDisableds == false"> <div class="operate" v-if="isDisableds == false">
<!--<img src="@/assets/images/edit.png">第一期不做编辑--> <!--<img src="@/assets/images/edit.png">第一期不做编辑-->
<img @click="delRecord(item.id)" src="@/assets/images/delete.png"> <img @click="delRecord(item.id)" src="@/assets/images/delete.png">
</div>
</div> </div>
</div> <div class="rec_con">
<div class="rec_con"> <div><strong>{{item.nickName}}</strong> <span v-if="item.visitWay">({{item.visitWay}})</span></div>
<div><strong>{{item.nickName}}</strong> <span v-if="item.visitWay">({{item.visitWay}})</span></div> <div><span>{{item.recordInfo}}</span></div>
<div><span>{{item.recordInfo}}</span></div> <div class="rec_text">
<div class="rec_text"> <span v-if="item.projectName && showtype == 'projectgjdt'">关联项目:{{item.projectName||'--'}}</span>
<span v-if="item.projectName && showtype == 'projectgjdt'">关联项目:{{item.projectName||'--'}}</span> <span v-if="item.visitPerson">拜访对象:{{item.visitPerson||'--'}}</span>
<span v-if="item.visitPerson">拜访对象:{{item.visitPerson||'--'}}</span> <span v-if="item.position">职位:{{item.position||'--'}}</span>
<span v-if="item.position">职位:{{item.position||'--'}}</span> <span v-if="item.visitTime">拜访时间:{{item.visitTime}}</span>
<span v-if="item.visitTime">拜访时间:{{item.visitTime}}</span> <span v-if="item.nextVisitTime">下次拜访时间:{{item.nextVisitTime || '--'}}</span>
<span v-if="item.nextVisitTime">下次拜访时间:{{item.nextVisitTime || '--'}}</span> </div>
</div> </div>
</div> </div>
</div> </div>
</div> <div class="tables" v-if="recordlist.total>pageSize">
<div class="tables" v-if="recordlist.total>pageSize">
<div class="bottems"> <div class="bottems">
<el-pagination <el-pagination
background background
...@@ -135,6 +137,7 @@ ...@@ -135,6 +137,7 @@
</el-pagination> </el-pagination>
</div> </div>
</div> </div>
</div>
</div> </div>
</el-card> </el-card>
</div> </div>
...@@ -145,7 +148,9 @@ ...@@ -145,7 +148,9 @@
import {getFollowList,addFollowRecord,getUserList,delFollowRecord} from '@/api/custom/custom' import {getFollowList,addFollowRecord,getUserList,delFollowRecord} from '@/api/custom/custom'
import {getGJJL,addGJJL,delGJJL,relateProject,allRecord} from '@/api/project/project' import {getGJJL,addGJJL,delGJJL,relateProject,allRecord} from '@/api/project/project'
import {getEnterprise,getDictType,} from '@/api/main' import {getEnterprise,getDictType,} from '@/api/main'
import skeleton from './skeleton'
export default { export default {
components:{skeleton},
props:{ props:{
types: { //当前组件展示类型 types: { //当前组件展示类型
type: String, type: String,
...@@ -191,6 +196,7 @@ ...@@ -191,6 +196,7 @@
projectList:[],//关联项目 projectList:[],//关联项目
isDisableds:this.isDisabled, isDisableds:this.isDisabled,
keys:1, keys:1,
isSkeleton:true,
} }
}, },
computed: { computed: {
...@@ -220,6 +226,7 @@ ...@@ -220,6 +226,7 @@
this.isDisableds = false this.isDisableds = false
this.projectId = null//项目id暂时清空,必须手选id this.projectId = null//项目id暂时清空,必须手选id
relateProject(this.userId).then(res=>{ relateProject(this.userId).then(res=>{
this.isSkeleton = false
this.projectList = res.data this.projectList = res.data
}) })
this.getGJDT() this.getGJDT()
...@@ -323,6 +330,7 @@ ...@@ -323,6 +330,7 @@
param.customerId = this.customerIds param.customerId = this.customerIds
} }
getFollowList(param).then(result=>{ getFollowList(param).then(result=>{
this.isSkeleton = false
this.recordlist = result.code == 200?result:[] this.recordlist = result.code == 200?result:[]
this.recordlist.rows.forEach(item=>{ this.recordlist.rows.forEach(item=>{
item.createTime = this.gettime(item.createTime) item.createTime = this.gettime(item.createTime)
...@@ -339,6 +347,7 @@ ...@@ -339,6 +347,7 @@
userId: this.userId userId: this.userId
} }
allRecord(param).then(result=>{ allRecord(param).then(result=>{
this.isSkeleton = false
this.recordlist = result.code == 200?result:[] this.recordlist = result.code == 200?result:[]
// this.recordlist.rows.forEach(item=>{ // this.recordlist.rows.forEach(item=>{
// item.createTime = this.gettime(item.createTime) // item.createTime = this.gettime(item.createTime)
...@@ -354,10 +363,12 @@ ...@@ -354,10 +363,12 @@
businessId:this.projectId businessId:this.projectId
} }
getGJJL(param).then(result=>{ getGJJL(param).then(result=>{
this.isSkeleton = false
this.recordlist = result.code == 200?result:[] this.recordlist = result.code == 200?result:[]
}) })
}, },
handleCurrentChange(val){ handleCurrentChange(val){
this.isSkeleton = true
this.pageNum = val this.pageNum = val
if(this.showtype == 'gjdt'){ if(this.showtype == 'gjdt'){
this.getGJDTlist() this.getGJDTlist()
......
...@@ -3,51 +3,53 @@ ...@@ -3,51 +3,53 @@
<el-card class="box-card noborder"> <el-card class="box-card noborder">
<div class="cardtitles">工作待办</div> <div class="cardtitles">工作待办</div>
<div class="records"> <div class="records">
<div class="writeIn" v-if="isDisableds == false"> <div class="writeIn" v-if="isDisableds == false">
<div class="default" v-if="isEdit == false" @click="getEdit"> <div class="default" v-if="isEdit == false" @click="getEdit">
<img src="@/assets/images/project/add_3.png">
<div>新建一条工作代办,如:周五上午预约客户上门拜访</div>
</div>
<div class="writting" v-if="isEdit == true">
<div class="wri_top">
<img src="@/assets/images/project/add_3.png"> <img src="@/assets/images/project/add_3.png">
<el-input v-model="queryParam.task" placeholder="新建一条跟进记录,如:周五上午预约客户上门拜访"></el-input> <div>新建一条工作代办,如:周五上午预约客户上门拜访</div>
</div> </div>
<div class="wr_bot"> <div class="writting" v-if="isEdit == true">
<div class="times"><img src="@/assets/images/project/ico_4.png"> <div class="wri_top">
<el-date-picker value-format="yyyy-MM-dd" <img src="@/assets/images/project/add_3.png">
v-model="queryParam.finishTime" <el-input v-model="queryParam.task" placeholder="新建一条跟进记录,如:周五上午预约客户上门拜访"></el-input>
type="date"
placeholder="完成时间">
</el-date-picker>
</div> </div>
<div class="sels"> <div class="wr_bot">
<img src="@/assets/images/project/ico_2.png"> <div class="times"><img src="@/assets/images/project/ico_4.png">
<el-input v-model="queryParam.target" placeholder="拜访对象" style="width: 100px;"> <el-date-picker value-format="yyyy-MM-dd"
</el-input> v-model="queryParam.finishTime"
type="date"
placeholder="完成时间">
</el-date-picker>
</div>
<div class="sels">
<img src="@/assets/images/project/ico_2.png">
<el-input v-model="queryParam.target" placeholder="拜访对象" style="width: 100px;">
</el-input>
</div>
<div class="btn btn_primary h32 wc" @click="add" :class="{'btn_disabled':queryParam.task == ''}">完成</div>
</div> </div>
<div class="btn btn_primary h32 wc" @click="add" :class="{'btn_disabled':queryParam.task == ''}">完成</div>
</div> </div>
</div> </div>
</div> <skeleton v-if="isSkeleton" style="padding-top: 16px"></skeleton>
<div class="tasktitle"><strong>我的任务</strong><span @click="getYQ">{{yqnum}}条已逾期</span><!--<span class="on">4条已逾期</span>--></div> <div v-else>
<div class="tasklist" v-for="(item,index) in datalist.rows"> <div class="tasktitle"><strong>我的任务</strong><span @click="getYQ">{{yqnum}}条已逾期</span><!--<span class="on">4条已逾期</span>--></div>
<div class="task_name">{{item.task}}</div> <div class="tasklist" v-for="(item,index) in datalist.rows">
<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="task_name">{{item.task}}</div>
<div class="select" :class="{'on':item.state == 2}"> <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-popper"> <div class="select" :class="{'on':item.state == 2}">
<span> <div class="select-popper">
{{item.state == 2?"已完成":"未完成"}} <span>
<i class="el-icon-caret-bottom"></i> {{item.state == 2?"已完成":"未完成"}}
</span> <i class="el-icon-caret-bottom"></i>
<el-select v-if="isDisableds == false" placeholder="请选择" v-model="item.state" class="select-multiple" @change="changes(item.id,$event)"> </span>
<el-option label="未完成" value="1"></el-option> <el-select v-if="isDisableds == false" placeholder="请选择" v-model="item.state" class="select-multiple" @change="changes(item.id,$event)">
<el-option label="已完成" value="2"></el-option> <el-option label="未完成" value="1"></el-option>
</el-select> <el-option label="已完成" value="2"></el-option>
</div></div> </el-select>
</div> </div></div>
</div>
<div class="tables" v-if="datalist.total>searchPram.pageSize"> <div class="tables" v-if="datalist.total>searchPram.pageSize">
<div class="bottems"> <div class="bottems">
<el-pagination <el-pagination
background background
...@@ -59,6 +61,7 @@ ...@@ -59,6 +61,7 @@
</el-pagination> </el-pagination>
</div> </div>
</div> </div>
</div>
</div> </div>
</el-card> </el-card>
</div> </div>
...@@ -68,8 +71,10 @@ ...@@ -68,8 +71,10 @@
import "@/assets/styles/project.scss" import "@/assets/styles/project.scss"
import "@/assets/styles/public.css" import "@/assets/styles/public.css"
import {addGZDB,getGZDB,editGZDB} from '@/api/project/project' import {addGZDB,getGZDB,editGZDB} from '@/api/project/project'
import skeleton from './skeleton'
export default { export default {
components:{skeleton},
name: 'gjjl', name: 'gjjl',
props: { props: {
detailId: { //从企业详情跳转过来ID detailId: { //从企业详情跳转过来ID
...@@ -98,6 +103,7 @@ ...@@ -98,6 +103,7 @@
datalist:[], datalist:[],
yqnum:0,//已逾期数量 yqnum:0,//已逾期数量
isDisableds:this.isDisabled, isDisableds:this.isDisabled,
isSkeleton:true,
} }
}, },
created(){ created(){
...@@ -124,7 +130,9 @@ ...@@ -124,7 +130,9 @@
}) })
}, },
getList(){ getList(){
this.isSkeleton = true
getGZDB(this.searchPram).then(result=>{ getGZDB(this.searchPram).then(result=>{
this.isSkeleton = false
this.datalist = result.code == 200?result:[] this.datalist = result.code == 200?result:[]
let num = 0 let num = 0
this.datalist.rows.forEach(item=>{ this.datalist.rows.forEach(item=>{
......
...@@ -2,21 +2,30 @@ ...@@ -2,21 +2,30 @@
<div> <div>
<el-card class="box-card noborder"> <el-card class="box-card noborder">
<div class="cardtitles">基本信息</div> <div class="cardtitles">基本信息</div>
<div class="tables">
<el-table <skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="tables" v-else>
<div class="empty" v-if="total==0">
<img src="@/assets/images/project/empty.png">
<div class="p1">暂无数据展示</div>
<div class="p2">抱歉,你还未添加相关数据,快去添加吧</div>
<div class="btn btn_primary h36 w102" @click="opennew" v-if="isDisableds == false">新增联系人</div>
</div>
<el-table v-else
:data="tableData" :data="tableData"
stripe border stripe border
style="width: 100%" style="width: 100%"
:default-sort = "{prop: 'role', order: 'ascending'}" :default-sort = "{prop: 'role', order: 'ascending'}"
> >
<template slot="empty"> <!--<template slot="empty">-->
<div class="empty"> <!--<div class="empty">-->
<img src="@/assets/images/project/empty.png"> <!--<img src="@/assets/images/project/empty.png">-->
<div class="p1">暂无数据展示</div> <!--<div class="p1">暂无数据展示</div>-->
<div class="p2">抱歉,你还未添加相关数据,快去添加吧</div> <!--<div class="p2">抱歉,你还未添加相关数据,快去添加吧</div>-->
<div class="btn btn_primary h36 w102" @click="opennew" v-if="isDisableds == false">新增联系人</div> <!--<div class="btn btn_primary h36 w102" @click="opennew" v-if="isDisableds == false">新增联系人</div>-->
</div> <!--</div>-->
</template> <!--</template>-->
<el-table-column <el-table-column
prop="name" prop="name"
label="姓名" label="姓名"
...@@ -135,7 +144,9 @@ ...@@ -135,7 +144,9 @@
<script> <script>
import "@/assets/styles/project.scss" import "@/assets/styles/project.scss"
import {getLXR,editLXR,addLXR} from '@/api/project/project' import {getLXR,editLXR,addLXR} from '@/api/project/project'
import skeleton from './skeleton'
export default { export default {
components:{skeleton},
name: 'lxr', name: 'lxr',
props: { props: {
detailId: { //从企业详情跳转过来ID detailId: { //从企业详情跳转过来ID
...@@ -163,6 +174,7 @@ ...@@ -163,6 +174,7 @@
projectname:this.$route.query.projectname, projectname:this.$route.query.projectname,
queryParam:[], queryParam:[],
isDisableds:this.isDisabled, isDisableds:this.isDisabled,
isSkeleton:true,
} }
}, },
created(){ created(){
...@@ -180,7 +192,9 @@ ...@@ -180,7 +192,9 @@
this.isnew = false this.isnew = false
}, },
getList(){ getList(){
this.isSkeleton = true
getLXR(this.searchParam).then(result=>{ getLXR(this.searchParam).then(result=>{
this.isSkeleton = false
this.tableData = result.code == 200?result.rows:[] this.tableData = result.code == 200?result.rows:[]
this.total = result.code == 200?result.total:0 this.total = result.code == 200?result.total:0
}) })
......
<template>
<el-skeleton animated>
<template slot="template">
<el-skeleton-item variant="text" style="width: 60%;"/>
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 60%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
</template>
</el-skeleton>
</template>
<script>
export default {
name: 'skeleton'
}
</script>
<style lang="scss" scoped>
.el-skeleton__item{
height: 20px;
border-radius: 0;
margin: 9px 0;
background: #f0f0f0;
}
</style>
...@@ -7,26 +7,26 @@ ...@@ -7,26 +7,26 @@
<el-select class="select" placeholder="企业类型" clearable v-model="searchParam.companyType" @change="handleCurrentChange(1)"> <el-select class="select" placeholder="企业类型" clearable v-model="searchParam.companyType" @change="handleCurrentChange(1)">
<el-option v-for="(item,index) in companytype" :label="item.dictLabel" :value="item.dictValue"></el-option> <el-option v-for="(item,index) in companytype" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select> </el-select>
<div class="searchInput"> <div class="searchInput small">
<el-input type="text" placeholder="输入关键词查询" clearable v-model="searchParam.companyName"></el-input> <el-input type="text" placeholder="输入关键词查询" clearable v-model="searchParam.companyName">
<i slot="prefix" class="el-input__icon"><img src="@/assets/images/project/sousuo.png"></i></el-input>
<div class="btn" @click="handleCurrentChange(1)">搜索</div> <div class="btn" @click="handleCurrentChange(1)">搜索</div>
</div> </div>
<div class="btn btn_primary h32 b3" @click="opennew" v-if="isDisableds == false"><div class="img img1"></div>添加相关企业</div> <div class="btn btn_primary h32 b3" @click="opennew" v-if="isDisableds == false"><div class="img img1"></div>添加相关企业</div>
</div> </div>
<div class="document tables"> <div class="document tables">
<el-table <skeleton v-if="isSkeleton" style="padding-top: 16px"></skeleton>
<div class="empty" v-if="tableData.total == 0">
<img src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或添加相关企业,重新搜索</div>
<div class="btn btn_primary h36 w102" @click="opennew" v-if="isDisableds==false">新增相关企业</div>
</div>
<el-table v-else-if="!isSkeleton"
:data="tableData.rows" :data="tableData.rows"
style="width: 100%" style="width: 100%"
:default-sort = "{prop: 'depth', order: 'descending'}" :default-sort = "{prop: 'depth', order: 'descending'}"
> >
<template slot="empty">
<div class="empty">
<img src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或添加相关企业,重新搜索</div>
<div class="btn btn_primary h36 w102" @click="opennew" v-if="isDisableds==false">新增相关企业</div>
</div>
</template>
<el-table-column <el-table-column
prop="companyName" prop="companyName"
label="企业名称" label="企业名称"
...@@ -143,7 +143,9 @@ ...@@ -143,7 +143,9 @@
import "@/assets/styles/project.scss" import "@/assets/styles/project.scss"
import {getXGQY,addXGQY,delXGQY} from '@/api/project/project' import {getXGQY,addXGQY,delXGQY} from '@/api/project/project'
import {getDictType,getEnterprise} from '@/api/main' import {getDictType,getEnterprise} from '@/api/main'
import skeleton from './skeleton'
export default { export default {
components:{skeleton},
name: 'xgqy', name: 'xgqy',
props: { props: {
detailId: { //从企业详情跳转过来ID detailId: { //从企业详情跳转过来ID
...@@ -189,6 +191,7 @@ ...@@ -189,6 +191,7 @@
isDisableds:this.isDisabled, isDisableds:this.isDisabled,
showlist:false, showlist:false,
companData:[], companData:[],
isSkeleton:true,
} }
}, },
created(){ created(){
...@@ -261,8 +264,9 @@ ...@@ -261,8 +264,9 @@
}) })
}, },
getlist(){ getlist(){
this.isSkeleton = true
getXGQY(this.searchParam).then(result=>{ getXGQY(this.searchParam).then(result=>{
console.log(result) this.isSkeleton = false
this.tableData = result this.tableData = result
}) })
}, },
......
...@@ -5,8 +5,10 @@ ...@@ -5,8 +5,10 @@
<div class="cardtitles">资料文档</div> <div class="cardtitles">资料文档</div>
<div class="searchbtns"> <div class="searchbtns">
<!--<div class="searchbtns" v-if="fileDatas.rows != null && fileDatas.rows.length>0">--> <!--<div class="searchbtns" v-if="fileDatas.rows != null && fileDatas.rows.length>0">-->
<div class="searchInput"> <div class="searchInput small">
<el-input type="text" v-model="param.keyword" clearable placeholder="输入关键词查询"></el-input> <el-input type="text" v-model="param.keyword" clearable placeholder="输入关键词查询">
<i slot="prefix" class="el-input__icon"><img src="@/assets/images/project/sousuo.png"></i>
</el-input>
<div class="btn" @click="handleCurrentChange(1)">搜索</div> <div class="btn" @click="handleCurrentChange(1)">搜索</div>
</div> </div>
<!--<div class="btn btn_primary h32 b2" @click="getUP" v-if="fileDatas.total>0"><div class="img img2"></div>上传</div>--> <!--<div class="btn btn_primary h32 b2" @click="getUP" v-if="fileDatas.total>0"><div class="img img2"></div>上传</div>-->
...@@ -58,31 +60,32 @@ ...@@ -58,31 +60,32 @@
</div> </div>
</div> </div>
<div class="document tables"> <div class="document tables">
<el-table <skeleton v-if="isSkeleton" style="padding-top: 16px"></skeleton>
<div class="empty" v-if="fileDatas.total==0">
<img src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div>
<!--<div v-if="isDisableds==false" class="btn btn_primary h36 w102" @click="getUP">上传文档</div>-->
<div v-if="isDisableds==false" class="btn btn_primary h36 w102"> <el-upload
class="upload-demo"
:action="action"
:on-change="handleFileListChange"
:multiple="false"
ref="upload"
:file-list="fileList"
accept=".word,.pdf.excel,.xlsx,.doc,.docx"
:headers="headers"
:show-file-list="false"
:on-success="onSuccess">
上传文档
</el-upload></div>
</div>
<el-table v-else-if="!isSkeleton"
:data="fileDatas.rows" :data="fileDatas.rows"
style="width: 100%" style="width: 100%"
:default-sort = "{prop: 'creatTime', order: 'descending'}" :default-sort = "{prop: 'creatTime', order: 'descending'}"
> >
<template slot="empty"> <template slot="empty">
<div class="empty">
<img src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div>
<div class="p2">建议调整关键词或筛选条件,重新搜索</div>
<!--<div v-if="isDisableds==false" class="btn btn_primary h36 w102" @click="getUP">上传文档</div>-->
<div v-if="isDisableds==false" class="btn btn_primary h36 w102"> <el-upload
class="upload-demo"
:action="action"
:on-change="handleFileListChange"
:multiple="false"
ref="upload"
:file-list="fileList"
accept=".word,.pdf.excel,.xlsx,.doc,.docx"
:headers="headers"
:show-file-list="false"
:on-success="onSuccess">
上传文档
</el-upload></div>
</div>
</template> </template>
<el-table-column <el-table-column
prop="name" prop="name"
...@@ -147,10 +150,13 @@ ...@@ -147,10 +150,13 @@
</template> </template>
<script> <script>
import "@/assets/styles/project.scss" import '@/assets/styles/project.scss'
import { getToken } from "@/utils/auth"; import { getToken } from '@/utils/auth'
import { getZLWD ,delZLWD} from "@/api/project/project"; import { delZLWD, getZLWD } from '@/api/project/project'
import skeleton from './skeleton'
export default { export default {
components:{skeleton},
name: 'zlwd', name: 'zlwd',
props: { props: {
detailId: { //从企业详情跳转过来ID detailId: { //从企业详情跳转过来ID
...@@ -181,6 +187,7 @@ ...@@ -181,6 +187,7 @@
ondel:"", ondel:"",
isDisableds:this.isDisabled, isDisableds:this.isDisabled,
keys:1, keys:1,
isSkeleton:true,
} }
}, },
created(){ created(){
...@@ -195,8 +202,10 @@ ...@@ -195,8 +202,10 @@
this.handleCurrentChange(1) this.handleCurrentChange(1)
}, },
getList(){ getList(){
this.isSkeleton = true
getZLWD(this.param).then(res=>{ getZLWD(this.param).then(res=>{
this.fileDatas = res this.fileDatas = res
this.isSkeleton = false
if(this.fileDatas.rows!=null && this.fileDatas.rows.length>0){ if(this.fileDatas.rows!=null && this.fileDatas.rows.length>0){
this.fileDatas.rows.forEach(item=>{ this.fileDatas.rows.forEach(item=>{
let names = item.filePath.split('/') let names = item.filePath.split('/')
...@@ -300,6 +309,7 @@ ...@@ -300,6 +309,7 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
v-deep.el-upload:focus{ v-deep.el-upload:focus{
color: #FFFFFF !important; color: #FFFFFF !important;
} }
...@@ -382,7 +392,4 @@ ...@@ -382,7 +392,4 @@
} }
} }
} }
.searchInput .el-input{
width: 68%;
}
</style> </style>
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<el-tab-pane label="公司全部项目" name="second"></el-tab-pane> <el-tab-pane label="公司全部项目" name="second"></el-tab-pane>
<div class="searchInput"> <div class="searchInput">
<el-input type="text" v-model="searchParam.projectName" placeholder="请输入项目或业主单位名称关键词进行搜索"></el-input> <el-input type="text" style="width: 530px;" v-model="searchParam.projectName" placeholder="请输入项目或业主单位名称关键词进行搜索"></el-input>
<div class="btn" @click="getList(1)">搜索</div> <div class="btn" @click="getList(1)">搜索</div>
</div> </div>
<div class="sellist"> <div class="sellist">
...@@ -97,14 +97,16 @@ ...@@ -97,14 +97,16 @@
<el-card class="box-card noborder overflows"> <el-card class="box-card noborder overflows">
<div class="titles">项目明细 <div class="titles">项目明细
<div class="dc"> <div class="dc">
<div class="total">{{total}}</div> <div class="total">{{total}}</div>
<!--<el-tooltip class="item" effect="dark" content="功能正在开发中" placement="top">--> <!--<el-tooltip class="item" effect="dark" content="功能正在开发中" placement="top">-->
<div class="btn-export" @click="dc"><img src="@/assets/images/EXCEL.png">导出EXCEL</div> <div class="btn-export" @click="dc"><img src="@/assets/images/EXCEL.png">导出EXCEL</div>
<!--</el-tooltip>--> <!--</el-tooltip>-->
</div> </div>
</div> </div>
<div class="tables" v-if="total == 0">
<skeleton v-if="isSkeleton" style="padding: 16px"></skeleton>
<div class="tables" v-if="total == 0 && !isSkeleton">
<div class="empty"> <div class="empty">
<img src="@/assets/images/project/empty.png"> <img src="@/assets/images/project/empty.png">
<div class="p1">抱歉,没找到相关数据</div> <div class="p1">抱歉,没找到相关数据</div>
...@@ -113,7 +115,7 @@ ...@@ -113,7 +115,7 @@
<div class="btn btn_primary btn_shallow h36 w88" @click="pldrs">批量导入</div> <div class="btn btn_primary btn_shallow h36 w88" @click="pldrs">批量导入</div>
</div> </div>
</div> </div>
<div class="datalist"> <div class="datalist" v-if="!isSkeleton">
<div class="datali" v-for="(item,index) in datalist"> <div class="datali" v-for="(item,index) in datalist">
<div class="det-title" @click="toDetail(item.id,'xmsl')"> <div class="det-title" @click="toDetail(item.id,'xmsl')">
{{item.projectName}}<span v-if="activeName!='first' && item.followTime" class="people"><i>{{item.nickName1}}</i> {{item.projectName}}<span v-if="activeName!='first' && item.followTime" class="people"><i>{{item.nickName1}}</i>
...@@ -182,9 +184,10 @@ ...@@ -182,9 +184,10 @@
import {getDictType,} from '@/api/main' import {getDictType,} from '@/api/main'
import addproject from './component/addProject' import addproject from './component/addProject'
import batchimport from './component/batchImport' import batchimport from './component/batchImport'
import skeleton from './component/skeleton'
export default { export default {
name: 'ProjectList', name: 'ProjectList',
components:{addproject,batchimport}, components:{addproject,batchimport,skeleton},
data() { data() {
return { return {
types:'project', types:'project',
...@@ -240,6 +243,7 @@ export default { ...@@ -240,6 +243,7 @@ export default {
datalist:[],//列表数据 datalist:[],//列表数据
ondel:-1, ondel:-1,
total:0, total:0,
isSkeleton:true
} }
}, },
created() { created() {
...@@ -289,6 +293,7 @@ export default { ...@@ -289,6 +293,7 @@ export default {
}, },
//获取商机列表 //获取商机列表
getList(pageNum){ getList(pageNum){
this.isSkeleton = true
this.searchParam.pageNum = pageNum this.searchParam.pageNum = pageNum
if(this.activeName == 'first'){ if(this.activeName == 'first'){
this.searchParam.userId = this.$store.state.user.userId this.searchParam.userId = this.$store.state.user.userId
...@@ -297,6 +302,7 @@ export default { ...@@ -297,6 +302,7 @@ export default {
} }
this.searchParam.ownerCompany = this.searchParam.projectName this.searchParam.ownerCompany = this.searchParam.projectName
getProjectlist(this.searchParam).then(result=>{ getProjectlist(this.searchParam).then(result=>{
this.isSkeleton = false
if(result.code == 200){ if(result.code == 200){
this.datalist = result.rows this.datalist = result.rows
this.total = result.total this.total = result.total
...@@ -382,7 +388,7 @@ export default { ...@@ -382,7 +388,7 @@ export default {
this.$router.push({ path: '/project/projectList/detail', query: {id:id,tag:tag} }); this.$router.push({ path: '/project/projectList/detail', query: {id:id,tag:tag} });
}, },
handleClick(){ handleClick(){
this.getList(1) this.reset()
}, },
handleChange(value) { handleChange(value) {
// console.log(value); // console.log(value);
......
...@@ -98,7 +98,7 @@ ...@@ -98,7 +98,7 @@
{{textList.projectDuration}} {{textList.projectDuration}}
</template> </template>
<template v-else> <template v-else>
'--' --
</template> </template>
</span> </span>
<label class="label">项目属地</label> <label class="label">项目属地</label>
...@@ -195,12 +195,12 @@ ...@@ -195,12 +195,12 @@
<p> <p>
<label class="label">招标人联系方式</label> <label class="label">招标人联系方式</label>
<span>{{textList.tendereeTel||'--'}}</span> <span>{{textList.tendereeTel||'--'}}</span>
<label class="label">招标人联系地址</label>
<span>{{textList.tendereeAddress||'--'}}</span>
</p>
<p>
<label class="label">代理机构联系方式</label> <label class="label">代理机构联系方式</label>
<span>{{textList.agencyTel||'--'}}</span> <span>{{textList.agencyTel||'--'}}</span>
</p>
<p>
<label class="label">招标人联系地址</label>
<span>{{textList.tendereeAddress||'--'}}</span>
<label class="label">代理机构联系地址</label> <label class="label">代理机构联系地址</label>
<span>{{textList.agencyAddress||'--'}}</span> <span>{{textList.agencyAddress||'--'}}</span>
</p> </p>
......
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