Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
dsk-cr20g
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
dsk-cr20g
Commits
7c7b08c0
Commit
7c7b08c0
authored
Oct 23, 2023
by
tanyang
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/V20230915'
# Conflicts: # dsk-operate-ui/vue.config.js
parents
b59930b2
ea37a238
Changes
65
Hide whitespace changes
Inline
Side-by-side
Showing
65 changed files
with
2310 additions
and
781 deletions
+2310
-781
application.yml
dsk-admin/src/main/resources/application.yml
+1
-0
CacheConstants.java
...src/main/java/com/dsk/common/constant/CacheConstants.java
+8
-2
PasswordUtils.java
...mon/src/main/java/com/dsk/common/utils/PasswordUtils.java
+11
-6
BusinessOpenTenderController.java
.../com/dsk/biz/controller/BusinessOpenTenderController.java
+65
-0
BusinessOpenTender.java
.../src/main/java/com/dsk/biz/domain/BusinessOpenTender.java
+53
-0
BusinessOpenTenderDto.java
...ain/java/com/dsk/biz/domain/bo/BusinessOpenTenderDto.java
+21
-0
BusinessOpenTenderMapper.java
...ain/java/com/dsk/biz/mapper/BusinessOpenTenderMapper.java
+10
-0
IBusinessOpenTenderService.java
.../java/com/dsk/biz/service/IBusinessOpenTenderService.java
+19
-0
BusinessOpenTenderServiceImpl.java
...m/dsk/biz/service/impl/BusinessOpenTenderServiceImpl.java
+64
-0
JskCombineInfoService.java
.../main/java/com/dsk/jsk/service/JskCombineInfoService.java
+4
-3
EconomicServiceImpl.java
...com/dsk/jsk/service/service/impl/EconomicServiceImpl.java
+4
-4
RedisCache.java
...sk-biz-api/src/main/java/com/dsk/jsk/util/RedisCache.java
+13
-14
MarketAnalysisService.java
...in/java/com/dsk/search/service/MarketAnalysisService.java
+8
-8
close-max-tip-icon.svg
...perate-ui/src/assets/images/market/close-max-tip-icon.svg
+1
-0
max-tip-title-icon.svg
...perate-ui/src/assets/images/market/max-tip-title-icon.svg
+1
-0
common.js
dsk-operate-ui/src/assets/js/common.js
+41
-1
common.css
dsk-operate-ui/src/assets/styles/common.css
+9
-0
index.scss
dsk-operate-ui/src/assets/styles/index.scss
+216
-202
project.scss
dsk-operate-ui/src/assets/styles/project.scss
+1
-4
public.scss
dsk-operate-ui/src/assets/styles/public.scss
+1
-2
search-common.scss
dsk-operate-ui/src/assets/styles/search-common.scss
+2
-2
AppMain.vue
dsk-operate-ui/src/layout/components/AppMain.vue
+2
-1
index.js
dsk-operate-ui/src/router/index.js
+33
-6
index.js
dsk-operate-ui/src/utils/index.js
+10
-10
request.js
dsk-operate-ui/src/utils/request.js
+1
-1
CustomMoneySelect.vue
dsk-operate-ui/src/views/component/CustomMoneySelect.vue
+3
-3
CustomTimeSelect.vue
dsk-operate-ui/src/views/component/CustomTimeSelect.vue
+3
-3
MaxPageSizeTip.vue
dsk-operate-ui/src/views/components/MaxPageSizeTip.vue
+106
-0
addCustom.vue
dsk-operate-ui/src/views/custom/component/addCustom.vue
+4
-6
index.vue
dsk-operate-ui/src/views/custom/customList/index.vue
+17
-14
index.vue
...operate-ui/src/views/custom/historicalCustomers/index.vue
+182
-184
index.vue
dsk-operate-ui/src/views/custom/overview/index.vue
+4
-1
detail.vue
dsk-operate-ui/src/views/detail.vue
+124
-0
members.vue
...te-ui/src/views/detail/groupAccount/component/members.vue
+3
-1
performance.vue
...i/src/views/detail/groupAccount/component/performance.vue
+2
-0
zbxmfx.vue
...ate-ui/src/views/detail/groupAccount/component/zbxmfx.vue
+32
-15
zbxmmx.vue
...ate-ui/src/views/detail/groupAccount/component/zbxmmx.vue
+8
-0
HeadFormNew.vue
...ate-ui/src/views/detail/party-a/component/HeadFormNew.vue
+14
-3
Sidebar.vue
...operate-ui/src/views/detail/party-a/component/Sidebar.vue
+2
-2
Tables.vue
dsk-operate-ui/src/views/detail/party-a/component/Tables.vue
+81
-61
index.vue
dsk-operate-ui/src/views/detail/party-a/index.vue
+17
-1
businfo.vue
dsk-operate-ui/src/views/detail/party-a/overview/businfo.vue
+47
-55
bidding.vue
...i/src/views/detail/party-a/overview/component/bidding.vue
+5
-5
holderinfo.vue
...erate-ui/src/views/detail/party-a/overview/holderinfo.vue
+1
-1
regionalEconomies.vue
...iews/detail/party-a/urbanLnvestment/regionalEconomies.vue
+1
-1
index.vue
dsk-operate-ui/src/views/detail/party-b/index.vue
+4
-4
index.vue
.../views/enterpriseData/components/searchTheOwner/index.vue
+75
-16
index.vue
dsk-operate-ui/src/views/index.vue
+171
-26
CustomTimeSelect.vue
...operate-ui/src/views/macro/component/CustomTimeSelect.vue
+1
-2
comparison.vue
...ate-ui/src/views/macro/economies/component/comparison.vue
+6
-1
industrialStructure.vue
...c/views/macro/economies/component/industrialStructure.vue
+6
-1
localEconomy.vue
...e-ui/src/views/macro/economies/component/localEconomy.vue
+19
-14
index.vue
dsk-operate-ui/src/views/macro/enterprises/index.vue
+5
-5
index.vue
dsk-operate-ui/src/views/macro/financing/index.vue
+1
-2
jzqyfx.vue
...ui/src/views/macro/nationalEconomies/component/jzqyfx.vue
+8
-8
qgjjdq.vue
...ui/src/views/macro/nationalEconomies/component/qgjjdq.vue
+2
-2
tdjy.vue
...e-ui/src/views/macro/nationalEconomies/component/tdjy.vue
+127
-7
zhaobiao.vue
.../src/views/macro/nationalEconomies/component/zhaobiao.vue
+125
-4
zhongbiao.vue
...src/views/macro/nationalEconomies/component/zhongbiao.vue
+135
-11
detail.vue
dsk-operate-ui/src/views/market/detail.vue
+142
-0
index.vue
dsk-operate-ui/src/views/market/index.vue
+72
-12
xgqy.vue
...erate-ui/src/views/project/projectList/component/xgqy.vue
+58
-4
zlwd.vue
...erate-ui/src/views/project/projectList/component/zlwd.vue
+61
-5
details.vue
dsk-operate-ui/src/views/radar/Tender/details.vue
+20
-18
index.vue
dsk-operate-ui/src/views/radar/index.vue
+17
-17
No files found.
dsk-admin/src/main/resources/application.yml
View file @
7c7b08c0
...
...
@@ -168,6 +168,7 @@ tenant:
-
business_follow_record
-
business_label
-
business_relate_company
-
business_open_tender
# MyBatisPlus配置
...
...
dsk-common/src/main/java/com/dsk/common/constant/CacheConstants.java
View file @
7c7b08c0
...
...
@@ -28,9 +28,9 @@ public interface CacheConstants {
public
static
final
String
DATA_UIPGROUPDATA
=
"data:uipGroupData"
;
/**
*
查甲方 菜单选线
*
用户 位置信息
*/
public
static
final
String
PERSONAL_LOCATION
=
"personal:location"
;
public
static
final
String
PERSONAL_LOCATION
=
"personal:location
:
"
;
/**
* 查甲方 财务数据
...
...
@@ -42,4 +42,10 @@ public interface CacheConstants {
* 全国经济大全-默认
*/
public
static
final
String
DATA_ECONOMIC
=
"data:economic"
;
/**
* 查集团户-集团统计信息
*/
public
static
final
String
DATA_COMBINE
=
"data:combine:"
;
}
dsk-common/src/main/java/com/dsk/common/utils/PasswordUtils.java
View file @
7c7b08c0
...
...
@@ -32,17 +32,22 @@ public class PasswordUtils {
// 至少包含一个大写字母
password
.
append
(
UPPER_CASE
.
charAt
(
random
.
nextInt
(
UPPER_CASE
.
length
())));
// 至少包含一个数字
password
.
append
(
NUMBERS
.
charAt
(
random
.
nextInt
(
NUMBERS
.
length
())));
// 生成剩余部分的密码
for
(
int
i
=
0
;
i
<
length
-
3
;
i
++)
{
String
characters
=
LOWER_CASE
+
UPPER_CASE
+
NUMBERS
;
password
.
append
(
characters
.
charAt
(
random
.
nextInt
(
characters
.
length
())));
for
(
int
i
=
0
;
i
<
length
-
2
;
i
++)
{
// 至少包含一个数字
password
.
append
(
NUMBERS
.
charAt
(
random
.
nextInt
(
NUMBERS
.
length
())));
// String characters = LOWER_CASE + UPPER_CASE + NUMBERS;
// password.append(characters.charAt(random.nextInt(characters.length())));
}
// 打乱密码中字符的顺序
return
shufflePassword
(
password
.
toString
());
// return shufflePassword(password.toString());
return
password
.
toString
();
}
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
PasswordUtils
.
generatePwd
(
8
));
}
public
static
String
shufflePassword
(
String
password
)
{
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/biz/controller/BusinessOpenTenderController.java
0 → 100644
View file @
7c7b08c0
package
com
.
dsk
.
biz
.
controller
;
import
com.dsk.biz.domain.BusinessOpenTender
;
import
com.dsk.biz.domain.bo.BusinessOpenTenderDto
;
import
com.dsk.biz.domain.bo.BusinessSearchDto
;
import
com.dsk.biz.service.IBusinessOpenTenderService
;
import
com.dsk.common.annotation.RepeatSubmit
;
import
com.dsk.common.core.controller.BaseController
;
import
com.dsk.common.core.domain.PageQuery
;
import
com.dsk.common.core.domain.R
;
import
com.dsk.common.core.page.TableDataInfo
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
/**
* 项目开标记录
*
* @author lcl
* @date 2023-10-23
*/
@RestController
@RequestMapping
(
"/business/open/tender"
)
public
class
BusinessOpenTenderController
extends
BaseController
{
@Autowired
private
IBusinessOpenTenderService
baseService
;
/**
* 开标记录列表
*/
@GetMapping
(
"/list"
)
public
TableDataInfo
<
BusinessOpenTender
>
list
(
BusinessOpenTenderDto
dto
,
PageQuery
pageQuery
){
return
baseService
.
selectList
(
dto
,
pageQuery
);
}
/**
* 添加开标记录
*/
@PostMapping
@RepeatSubmit
()
public
R
<
Void
>
add
(
@RequestBody
BusinessOpenTender
bo
){
return
toAjax
(
baseService
.
add
(
bo
));
}
/**
* 修改开标记录
*/
@PutMapping
@RepeatSubmit
()
public
R
<
Void
>
edit
(
@RequestBody
BusinessOpenTender
bo
){
return
toAjax
(
baseService
.
edit
(
bo
));
}
/**
* 删除开标记录
*/
@DeleteMapping
(
"/{ids}"
)
@RepeatSubmit
()
public
R
<
Void
>
remove
(
@PathVariable
Long
[]
ids
){
return
toAjax
(
baseService
.
remove
(
ids
));
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/biz/domain/BusinessOpenTender.java
0 → 100644
View file @
7c7b08c0
package
com
.
dsk
.
biz
.
domain
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @Author lcl
* @Data 2023/10/23 16:26
*/
@Data
public
class
BusinessOpenTender
implements
Serializable
{
@TableId
(
value
=
"id"
,
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 项目id
*/
private
Integer
businessId
;
/**
* 投标人id
*/
private
Integer
tendererId
;
/**
* 投标人
*/
private
String
tenderer
;
/**
* 企业性质
*/
private
String
tendererNature
;
/**
* 项目经理
*/
private
String
businessManager
;
/**
* 联系方式
*/
private
String
contact
;
/**
* 投标金额
*/
private
Double
tenderAmount
;
private
Date
createTime
;
private
Date
updateTime
;
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/biz/domain/bo/BusinessOpenTenderDto.java
0 → 100644
View file @
7c7b08c0
package
com
.
dsk
.
biz
.
domain
.
bo
;
import
com.dsk.common.core.domain.BaseEntity
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* @author lcl
* @create 2023/8/14
*/
@Data
@NoArgsConstructor
public
class
BusinessOpenTenderDto
implements
Serializable
{
/**
* 项目id
*/
private
Integer
businessId
;
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/biz/mapper/BusinessOpenTenderMapper.java
0 → 100644
View file @
7c7b08c0
package
com
.
dsk
.
biz
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.dsk.biz.domain.BusinessOpenTender
;
import
org.apache.ibatis.annotations.Mapper
;
@Mapper
public
interface
BusinessOpenTenderMapper
extends
BaseMapper
<
BusinessOpenTender
>
{
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/biz/service/IBusinessOpenTenderService.java
0 → 100644
View file @
7c7b08c0
package
com
.
dsk
.
biz
.
service
;
import
com.dsk.biz.domain.BusinessOpenTender
;
import
com.dsk.biz.domain.bo.BusinessOpenTenderDto
;
import
com.dsk.common.core.domain.PageQuery
;
import
com.dsk.common.core.page.TableDataInfo
;
public
interface
IBusinessOpenTenderService
{
TableDataInfo
<
BusinessOpenTender
>
selectList
(
BusinessOpenTenderDto
dto
,
PageQuery
pageQuery
);
int
add
(
BusinessOpenTender
bo
);
int
edit
(
BusinessOpenTender
bo
);
int
remove
(
Long
[]
ids
);
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/biz/service/impl/BusinessOpenTenderServiceImpl.java
0 → 100644
View file @
7c7b08c0
package
com
.
dsk
.
biz
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.dsk.biz.domain.BusinessOpenTender
;
import
com.dsk.biz.domain.bo.BusinessOpenTenderDto
;
import
com.dsk.biz.domain.bo.BusinessSearchDto
;
import
com.dsk.biz.mapper.BusinessOpenTenderMapper
;
import
com.dsk.biz.service.IBusinessOpenTenderService
;
import
com.dsk.common.core.domain.PageQuery
;
import
com.dsk.common.core.page.TableDataInfo
;
import
jodd.bean.BeanException
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.ObjectUtils
;
import
javax.annotation.Resource
;
import
java.sql.Wrapper
;
import
java.util.Arrays
;
import
java.util.List
;
/**
* @Author lcl
* @Data 2023/10/23 16:29
*/
@Slf4j
@Service
public
class
BusinessOpenTenderServiceImpl
implements
IBusinessOpenTenderService
{
@Resource
private
BusinessOpenTenderMapper
baseMapper
;
@Override
public
TableDataInfo
<
BusinessOpenTender
>
selectList
(
BusinessOpenTenderDto
dto
,
PageQuery
pageQuery
)
{
return
TableDataInfo
.
build
(
baseMapper
.
selectPage
(
pageQuery
.
build
(),
Wrappers
.<
BusinessOpenTender
>
lambdaQuery
().
eq
(
BusinessOpenTender:
:
getBusinessId
,
dto
.
getBusinessId
())));
}
@Override
public
int
add
(
BusinessOpenTender
bo
)
{
verifyBean
(
bo
);
return
baseMapper
.
insert
(
bo
);
}
@Override
public
int
edit
(
BusinessOpenTender
bo
)
{
if
(
ObjectUtils
.
isArray
(
bo
.
getId
()))
throw
new
BeanException
(
"id不能为空!"
);
verifyBean
(
bo
);
return
baseMapper
.
updateById
(
bo
);
}
@Override
public
int
remove
(
Long
[]
ids
)
{
return
baseMapper
.
deleteBatchIds
(
Arrays
.
asList
(
ids
));
}
private
void
verifyBean
(
BusinessOpenTender
bo
){
if
(
ObjectUtils
.
isArray
(
bo
.
getBusinessId
()))
throw
new
BeanException
(
"项目id不能为空!"
);
if
(
ObjectUtils
.
isArray
(
bo
.
getTenderer
()))
throw
new
BeanException
(
"开标人不能为空!"
);
if
(
ObjectUtils
.
isArray
(
bo
.
getTendererNature
()))
throw
new
BeanException
(
"企业性质不能为空!"
);
if
(
ObjectUtils
.
isArray
(
bo
.
getTenderAmount
()))
throw
new
BeanException
(
"投标金额不能为空!"
);
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/jsk/service/JskCombineInfoService.java
View file @
7c7b08c0
...
...
@@ -11,6 +11,7 @@ import com.dsk.common.core.domain.R;
import
com.dsk.common.core.page.TableDataInfo
;
import
com.dsk.common.exception.ServiceException
;
import
com.dsk.common.utils.DskOpenApiUtil
;
import
com.dsk.common.utils.JsonUtils
;
import
com.dsk.common.utils.StringUtils
;
import
com.dsk.jsk.domain.JskCombineBidPageDto
;
import
com.dsk.jsk.domain.JskCombineCertificateDto
;
...
...
@@ -248,9 +249,9 @@ public class JskCombineInfoService {
*@date: 2023/9/12 16:05
*/
public
R
memberCount
(
JskCombineCountDto
dto
)
{
String
redisKey
=
CacheConstants
.
PERSONAL_LOCATION
+
dto
.
getCombineId
();
String
redisKey
=
CacheConstants
.
DATA_COMBINE
+
dto
.
getCombineId
();
if
(
ObjectUtil
.
isNotEmpty
(
redisKey
))
{
Map
<
String
,
Object
>
cacheMap
=
redisCache
.
getCacheObject
(
redisKey
);
Map
<
String
,
Object
>
cacheMap
=
JsonUtils
.
parseObject
(
redisCache
.
getCacheObject
(
redisKey
),
Map
.
class
);
if
(
MapUtils
.
isNotEmpty
(
cacheMap
))
{
return
R
.
ok
(
cacheMap
);
}
...
...
@@ -263,7 +264,7 @@ public class JskCombineInfoService {
Map
<
String
,
Object
>
data
=
BeanUtil
.
beanToMap
(
map
.
get
(
"data"
));
data
.
put
(
"performance"
,
businessCount
(
paramsMap
));
map
.
put
(
"data"
,
data
);
redisCache
.
setCacheObject
(
redisKey
,
data
,
24
,
TimeUnit
.
HOURS
);
redisCache
.
setCacheObject
(
redisKey
,
JsonUtils
.
toJsonString
(
data
),
24
,
TimeUnit
.
HOURS
);
}
return
BeanUtil
.
toBean
(
map
,
R
.
class
);
}
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/jsk/service/service/impl/EconomicServiceImpl.java
View file @
7c7b08c0
...
...
@@ -8,6 +8,7 @@ import com.dsk.common.core.domain.AjaxResult;
import
com.dsk.common.helper.LoginHelper
;
import
com.dsk.common.utils.DateUtils
;
import
com.dsk.common.utils.DskOpenApiUtil
;
import
com.dsk.common.utils.JsonUtils
;
import
com.dsk.jsk.domain.*
;
import
com.dsk.jsk.domain.bo.*
;
import
com.dsk.jsk.service.service.EconomicService
;
...
...
@@ -56,7 +57,7 @@ public class EconomicServiceImpl implements EconomicService {
dto
.
setYear
(
DateUtils
.
getYear
()
-
1
);
}
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/economic/national/nationalPage"
,
BeanUtil
.
beanToMap
(
dto
,
false
,
false
));
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/
operate/
economic/national/nationalPage"
,
BeanUtil
.
beanToMap
(
dto
,
false
,
false
));
Integer
code
=
MapUtils
.
getInteger
(
map
,
"code"
,
300
);
if
(!
code
.
equals
(
HttpStatus
.
OK
.
value
()))
{
throw
new
RuntimeException
();
...
...
@@ -82,7 +83,7 @@ public class EconomicServiceImpl implements EconomicService {
String
redisKey
=
CacheConstants
.
PERSONAL_LOCATION
+
userId
;
if
(
ObjectUtil
.
isEmpty
(
detailsDto
.
getProvinceId
())
&&
ObjectUtil
.
isEmpty
(
detailsDto
.
getCityId
())
&&
ObjectUtil
.
isEmpty
(
detailsDto
.
getAreaId
()))
{
if
(
ObjectUtil
.
isNotEmpty
(
redisKey
))
{
Map
<
String
,
Object
>
cacheMap
=
redisCache
.
getCacheMap
(
redisKey
);
Map
<
Object
,
Object
>
cacheMap
=
JsonUtils
.
parseObject
(
redisCache
.
getCacheObject
(
redisKey
),
Map
.
class
);
if
(
MapUtils
.
isNotEmpty
(
cacheMap
))
{
return
AjaxResult
.
success
(
cacheMap
);
}
...
...
@@ -94,10 +95,9 @@ public class EconomicServiceImpl implements EconomicService {
if
(!
code
.
equals
(
HttpStatus
.
OK
.
value
()))
{
throw
new
RuntimeException
();
}
Map
data
=
MapUtils
.
getMap
(
map
,
"data"
,
null
);
if
(
ObjectUtil
.
isNotEmpty
(
detailsDto
.
getProvinceId
())
||
ObjectUtil
.
isNotEmpty
(
detailsDto
.
getCityId
())
||
ObjectUtil
.
isNotEmpty
(
detailsDto
.
getAreaId
()))
{
redisCache
.
setCache
Map
(
redisKey
,
data
);
redisCache
.
setCache
Object
(
redisKey
,
JsonUtils
.
toJsonString
(
data
)
);
}
return
BeanUtil
.
toBean
(
map
,
AjaxResult
.
class
);
}
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/jsk/util/RedisCache.java
View file @
7c7b08c0
...
...
@@ -7,10 +7,7 @@ import java.util.Map;
import
java.util.Set
;
import
java.util.concurrent.TimeUnit
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.BoundSetOperations
;
import
org.springframework.data.redis.core.HashOperations
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.core.ValueOperations
;
import
org.springframework.data.redis.core.*
;
import
org.springframework.stereotype.Component
;
/**
...
...
@@ -25,15 +22,18 @@ public class RedisCache
@Autowired
public
RedisTemplate
redisTemplate
;
@Autowired
public
StringRedisTemplate
stringRedisTemplate
;
/**
* 缓存基本的对象,Integer、String、实体类等
*
* @param key 缓存的键值
* @param value 缓存的值
*/
public
<
T
>
void
setCacheObject
(
final
String
key
,
final
T
value
)
public
<
T
>
void
setCacheObject
(
final
String
key
,
final
String
value
)
{
r
edisTemplate
.
opsForValue
().
set
(
key
,
value
);
stringR
edisTemplate
.
opsForValue
().
set
(
key
,
value
);
}
/**
...
...
@@ -44,9 +44,9 @@ public class RedisCache
* @param timeout 时间
* @param timeUnit 时间颗粒度
*/
public
<
T
>
void
setCacheObject
(
final
String
key
,
final
T
value
,
final
Integer
timeout
,
final
TimeUnit
timeUnit
)
public
<
T
>
void
setCacheObject
(
final
String
key
,
final
String
value
,
final
Integer
timeout
,
final
TimeUnit
timeUnit
)
{
r
edisTemplate
.
opsForValue
().
set
(
key
,
value
,
timeout
,
timeUnit
);
stringR
edisTemplate
.
opsForValue
().
set
(
key
,
value
,
timeout
,
timeUnit
);
}
/**
...
...
@@ -102,10 +102,9 @@ public class RedisCache
* @param key 缓存键值
* @return 缓存键值对应的数据
*/
public
<
T
>
T
getCacheObject
(
final
String
key
)
public
String
getCacheObject
(
final
String
key
)
{
ValueOperations
<
String
,
T
>
operation
=
redisTemplate
.
opsForValue
();
return
operation
.
get
(
key
);
return
stringRedisTemplate
.
opsForValue
().
get
(
key
);
}
/**
...
...
@@ -191,7 +190,7 @@ public class RedisCache
public
<
T
>
void
setCacheMap
(
final
String
key
,
final
Map
<
String
,
T
>
dataMap
)
{
if
(
dataMap
!=
null
)
{
r
edisTemplate
.
opsForHash
().
putAll
(
key
,
dataMap
);
stringR
edisTemplate
.
opsForHash
().
putAll
(
key
,
dataMap
);
}
}
...
...
@@ -201,9 +200,9 @@ public class RedisCache
* @param key
* @return
*/
public
<
T
>
Map
<
String
,
T
>
getCacheMap
(
final
String
key
)
public
<
T
>
Map
<
Object
,
Object
>
getCacheMap
(
final
String
key
)
{
return
r
edisTemplate
.
opsForHash
().
entries
(
key
);
return
stringR
edisTemplate
.
opsForHash
().
entries
(
key
);
}
/**
...
...
dsk-module/dsk-biz-api/src/main/java/com/dsk/search/service/MarketAnalysisService.java
View file @
7c7b08c0
...
...
@@ -124,14 +124,14 @@ public class MarketAnalysisService {
public
AjaxResult
combineRecentlyBid
(
JSONObject
object
)
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/nationzj/marketAnalysis/combine/recentlyBid"
,
object
);
if
(!
ObjectUtils
.
isEmpty
(
map
.
get
(
"data"
)))
{
List
<
Map
<
String
,
Object
>>
list
=
(
List
<
Map
<
String
,
Object
>>)
map
.
get
(
"data"
);
list
.
parallelStream
().
forEach
(
res
->
{
Integer
companyId
=
MapUtils
.
getInteger
(
res
,
"tendereeId"
);
String
companyName
=
MapUtils
.
getString
(
res
,
"tenderee"
);
res
.
put
(
"uipId"
,
enterpriseService
.
getUipIdByCompanyNameOrCompanyId
(
companyName
,
companyId
));
});
}
//
if (!ObjectUtils.isEmpty(map.get("data"))) {
//
List<Map<String, Object>> list = (List<Map<String, Object>>) map.get("data");
//
list.parallelStream().forEach(res -> {
//
Integer companyId = MapUtils.getInteger(res, "tendereeId");
//
String companyName = MapUtils.getString(res, "tenderee");
//
res.put("uipId", enterpriseService.getUipIdByCompanyNameOrCompanyId(companyName, companyId));
//
});
//
}
return
BeanUtil
.
toBean
(
map
,
AjaxResult
.
class
);
}
...
...
dsk-operate-ui/src/assets/images/market/close-max-tip-icon.svg
0 → 100644
View file @
7c7b08c0
<svg
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
fill=
"none"
version=
"1.1"
width=
"16"
height=
"16"
viewBox=
"0 0 16 16"
><defs><clipPath
id=
"master_svg0_1474_151379/881_072671"
><rect
x=
"0"
y=
"0"
width=
"16"
height=
"16"
rx=
"0"
/></clipPath></defs><g
transform=
"matrix(1,5.551115123125783e-17,-5.551115123125783e-17,1,0,0)"
clip-path=
"url(#master_svg0_1474_151379/881_072671)"
><g><path
d=
"M7.05513,7.999883125C7.05513,7.999883125,2.812500397363,3.757263125,2.812500397363,3.757263125C2.812500397363,3.757263125,3.75531,2.814453125,3.75531,2.814453125C3.75531,2.814453125,7.99793,7.057083125,7.99793,7.057083125C7.99793,7.057083125,12.2406,2.814453125,12.2406,2.814453125C12.2406,2.814453125,13.1834,3.757263125,13.1834,3.757263125C13.1834,3.757263125,8.94077,7.999883125,8.94077,7.999883125C8.94077,7.999883125,13.1834,12.242553125,13.1834,12.242553125C13.1834,12.242553125,12.2406,13.185353125,12.2406,13.185353125C12.2406,13.185353125,7.99793,8.942723125,7.99793,8.942723125C7.99793,8.942723125,3.75531,13.185353125,3.75531,13.185353125C3.75531,13.185353125,2.8125,12.242553125,2.8125,12.242553125C2.8125,12.242553125,7.05513,7.999883125,7.05513,7.999883125C7.05513,7.999883125,7.05513,7.999883125,7.05513,7.999883125Z"
fill-rule=
"evenodd"
fill=
"#232323"
fill-opacity=
"0.4000000059604645"
/></g></g></svg>
\ No newline at end of file
dsk-operate-ui/src/assets/images/market/max-tip-title-icon.svg
0 → 100644
View file @
7c7b08c0
<svg
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
fill=
"none"
version=
"1.1"
width=
"24"
height=
"24"
viewBox=
"0 0 24 24"
><g
transform=
"matrix(1,5.551115123125783e-17,-5.551115123125783e-17,1,0,0)"
><g><path
d=
"M2,12C2,6.47715,6.47715,2,12,2C17.5229,2,22,6.47715,22,12C22,17.5229,17.5229,22,12,22C6.47715,22,2,17.5229,2,12C2,12,2,12,2,12ZM13,9C13,9,13,7,13,7C13,7,11,7,11,7C11,7,11,9,11,9C11,9,13,9,13,9C13,9,13,9,13,9ZM11,10C11,10,11,17,11,17C11,17,13,17,13,17C13,17,13,10,13,10C13,10,11,10,11,10C11,10,11,10,11,10Z"
fill-rule=
"evenodd"
fill=
"#0081FF"
fill-opacity=
"1"
/></g></g></svg>
\ No newline at end of file
dsk-operate-ui/src/assets/js/common.js
View file @
7c7b08c0
...
...
@@ -54,8 +54,48 @@ function saveFixed(field, num=2){
return
parseFloat
(
field
.
toFixed
(
num
))
}
//移除字符串中指定标签
let
removeTag
=
function
(
str
,
external
,
implant
,
row
)
{
//str字符串, external外部引用方式的标签组[一个标签], implant嵌入引用的标签组[包含首尾标签], row行内标签组
let
newHtml
=
str
if
(
external
){
let
externalArr
=
external
.
split
(
","
)
for
(
let
item
of
externalArr
){
newHtml
=
newHtml
.
replace
(
new
RegExp
(
"<"
+
item
+
"([^>]+)>"
,
"img"
),
""
)
}
}
if
(
implant
){
let
implantArr
=
implant
.
split
(
","
)
for
(
let
item
of
implantArr
){
newHtml
=
newHtml
.
replace
(
new
RegExp
(
"<"
+
item
+
"[^>]*>([
\\
S
\\
s]*?)<
\
/"
+
item
+
">"
,
"img"
),
""
)
}
}
if
(
row
){
let
rowArr
=
row
.
split
(
","
)
for
(
let
item
of
rowArr
){
newHtml
=
newHtml
.
replace
(
new
RegExp
(
""
+
item
+
"
\\
s*?=
\\
s*?(['`
\"
])[
\\
s
\\
S]*?
\\
1"
,
"img"
),
""
)
}
}
return
newHtml
}
//替换字符串中指定标签
let
checkTag
=
function
(
str
,
oldTag
,
newTag
)
{
//str字符串, oldTag当前标签数组, newTag替换后的新标签数组
let
newHtml
=
str
if
(
oldTag
&&
newTag
){
let
oldArr
=
oldTag
.
split
(
","
)
let
newArr
=
newTag
.
split
(
","
)
if
(
oldArr
.
length
==
newArr
.
length
){
for
(
let
i
=
0
;
i
<
oldArr
.
length
;
i
++
){
newHtml
=
newHtml
.
replace
(
new
RegExp
(
"<"
+
oldArr
[
i
]
+
"
\\
b[^>]*>([
\\
S
\\
s]*?)<
\\
/"
+
oldArr
[
i
]
+
">"
,
"img"
),
"<"
+
newArr
[
i
]
+
">$1</"
+
newArr
[
i
]
+
">"
)
}
}
}
return
newHtml
}
export
{
encodeStr
,
changePath
,
saveFixed
saveFixed
,
removeTag
,
checkTag
}
dsk-operate-ui/src/assets/styles/common.css
View file @
7c7b08c0
...
...
@@ -7,3 +7,12 @@
.search-leave-to
{
width
:
60px
;
}
.fade-enter-active
,
.fade-leave-active
{
transition
:
opacity
0.3s
;
}
.fade-enter
,
.fade-leave-to
/* .fade-leave-active below version 2.1.8 */
{
opacity
:
0
;
}
dsk-operate-ui/src/assets/styles/index.scss
View file @
7c7b08c0
@import
'./variables.scss'
;
@import
'./mixin.scss'
;
@import
'./transition.scss'
;
@import
'./element-ui.scss'
;
@import
'./sidebar.scss'
;
@import
'./btn.scss'
;
@import
"./variables.scss"
;
@import
"./mixin.scss"
;
@import
"./transition.scss"
;
@import
"./element-ui.scss"
;
@import
"./sidebar.scss"
;
@import
"./btn.scss"
;
body
{
height
:
100%
;
-moz-osx-font-smoothing
:
grayscale
;
-webkit-font-smoothing
:
antialiased
;
text-rendering
:
optimizeLegibility
;
font-family
:
Helvetica
Neue
,
Helvetica
,
PingFang
SC
,
Hiragino
Sans
GB
,
Microsoft
YaHei
,
Arial
,
sans-serif
;
font-family
:
Helvetica
Neue
,
Helvetica
,
PingFang
SC
,
Hiragino
Sans
GB
,
Microsoft
YaHei
,
Arial
,
sans-serif
;
}
label
{
...
...
@@ -104,7 +105,8 @@ aside {
display
:
block
;
line-height
:
32px
;
font-size
:
16px
;
font-family
:
-
apple-system
,
BlinkMacSystemFont
,
"Segoe UI"
,
Roboto
,
Oxygen
,
Ubuntu
,
Cantarell
,
"Fira Sans"
,
"Droid Sans"
,
"Helvetica Neue"
,
sans-serif
;
font-family
:
-
apple-system
,
BlinkMacSystemFont
,
"Segoe UI"
,
Roboto
,
Oxygen
,
Ubuntu
,
Cantarell
,
"Fira Sans"
,
"Droid Sans"
,
"Helvetica Neue"
,
sans-serif
;
color
:
#2c3e50
;
-webkit-font-smoothing
:
antialiased
;
-moz-osx-font-smoothing
:
grayscale
;
...
...
@@ -135,7 +137,7 @@ aside {
}
.text-center
{
text-align
:
center
text-align
:
center
;
}
.sub-navbar
{
...
...
@@ -146,7 +148,13 @@ aside {
text-align
:
right
;
padding-right
:
20px
;
transition
:
600ms
ease
position
;
background
:
linear-gradient
(
90deg
,
rgba
(
32
,
182
,
249
,
1
)
0%
,
rgba
(
32
,
182
,
249
,
1
)
0%
,
rgba
(
33
,
120
,
241
,
1
)
100%
,
rgba
(
33
,
120
,
241
,
1
)
100%
);
background
:
linear-gradient
(
90deg
,
rgba
(
32
,
182
,
249
,
1
)
0%
,
rgba
(
32
,
182
,
249
,
1
)
0%
,
rgba
(
33
,
120
,
241
,
1
)
100%
,
rgba
(
33
,
120
,
241
,
1
)
100%
);
.subtitle
{
font-size
:
20px
;
...
...
@@ -189,84 +197,89 @@ aside {
align-items
:
center
;
}
.a-link
{
color
:
#0081
FF
;
&
:hover
{
color
:
#0081
FF
;
.a-link
{
color
:
#0081
ff
;
&
:hover
{
color
:
#0081
ff
;
text-decoration
:
underline
;
}
}
.text-cl1
{
.text-cl1
{
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
overflow
:
hidden
;
}
.text-cl2
{
.text-cl2
{
overflow
:
hidden
;
text-overflow
:
ellipsis
;
display
:
-
webkit-box
;
-webkit-line-clamp
:
2
;
line-clamp
:
2
;
line-clamp
:
2
;
-webkit-box-orient
:
vertical
;
}
ul
,
li
{
ul
,
li
{
list-style
:
none
;
padding
:
0
;
margin
:
0
;
}
.app-main
{
.app-main
{
background-color
:
#f5f5f5
;
>
div
{
width
:
calc
(
100%
-
48px
);
}
}
.app-container
{
margin
:
1
2
px
24px
;
margin
:
1
6
px
24px
;
background-color
:
#f5f5f5
;
padding-bottom
:
16px
!
important
;
.el-input__inner
{
border-color
:
#
D9D9D
9
;
box-sizing
:
border-box
;
.el-input__inner
{
border-color
:
#
d9d9d
9
;
color
:
#232323
;
&
:
:
placeholder
{
color
:
rgba
(
35
,
35
,
35
,
0
.4
);
color
:
rgba
(
35
,
35
,
35
,
0
.4
);
}
}
.
el-input__inner
:
:
placeholder
{
color
:
rgba
(
35
,
35
,
35
,
0
.8
)
!
important
;
.
el-input__inner
:
:
placeholder
{
color
:
rgba
(
35
,
35
,
35
,
0
.8
)
!
important
;
}
.el-select
.el-input
.el-select__caret
{
.el-select
.el-input
.el-select__caret
{
color
:
#232323
;
}
.el-cascader
.el-input
.el-icon-arrow-down
{
.el-cascader
.el-input
.el-icon-arrow-down
{
color
:
#232323
;
}
.custom-money-select
.el-input
.el-icon-arrow-down
{
.custom-money-select
.el-input
.el-icon-arrow-down
{
color
:
#232323
;
font-size
:
14px
;
}
.custom-time-select
.el-input
.el-icon-arrow-down
{
.custom-time-select
.el-input
.el-icon-arrow-down
{
color
:
#232323
;
font-size
:
14px
;
}
.query-box
{
.query-box
{
justify-content
:
space-between
;
}
.query-params
{
.form-content-width
{
//width: 160px;
}
.el-form
{
&
.el-form--inline
.el-form-item
{
.el-form
{
&
.el-form--inline
.el-form-item
{
margin-right
:
16px
;
}
.el-form-item--mini.el-form-item
,
.el-form-item--small.el-form-item
{
.el-form-item--mini.el-form-item
,
.el-form-item--small.el-form-item
{
margin-bottom
:
8px
;
margin-top
:
8px
;
}
}
}
.query-ability
{
.total
{
.query-ability
{
.total
{
display
:
flex
!
important
;
flex-direction
:
row
;
align-items
:
center
;
...
...
@@ -279,19 +292,19 @@ ul, li {
margin-right
:
4px
;
}
}
span
{
span
{
font-size
:
14px
;
color
:
#232323
;
line-height
:
initial
;
margin-left
:
20px
;
cursor
:
pointer
;
&
:hover
{
color
:
#0081
FF
;
&
:hover
{
color
:
#0081
ff
;
}
&
:first-child
{
&
:first-child
{
margin-left
:
0
;
}
img
{
img
{
width
:
18px
;
height
:
18px
;
margin-right
:
5px
;
...
...
@@ -304,50 +317,52 @@ ul, li {
padding
:
16px
;
}
.table-item
{
.table-item
{
width
:
100%
;
.el-table
{
.el-table
{
font-size
:
13px
;
color
:
#232323
;
th
{
th
{
font-size
:
13px
!
important
;
font-weight
:
400
!
important
;
}
td
{
td
{
font-size
:
13px
;
}
.cell
{
.cell
{
padding-right
:
12px
!
important
;
padding-left
:
12px
!
important
;
line-height
:
18px
;
}
thead
{
color
:
rgba
(
35
,
35
,
35
,
0
.7
);
thead
{
color
:
rgba
(
35
,
35
,
35
,
0
.7
);
}
.sort-caret.ascending
{
border-bottom-color
:
rgba
(
0
,
129
,
255
,
0
.5
);
.sort-caret.ascending
{
border-bottom-color
:
rgba
(
0
,
129
,
255
,
0
.5
);
}
.ascending
.sort-caret.ascending
{
border-bottom-color
:
#0081
FF
;
.ascending
.sort-caret.ascending
{
border-bottom-color
:
#0081
ff
;
}
.sort-caret.descending
{
border-top-color
:
rgba
(
0
,
129
,
255
,
0
.5
);
.sort-caret.descending
{
border-top-color
:
rgba
(
0
,
129
,
255
,
0
.5
);
}
.descending
.sort-caret.descending
{
border-top-color
:
#0081
FF
;
.descending
.sort-caret.descending
{
border-top-color
:
#0081
ff
;
}
.el-table__header-wrapper
{
th
{
background
:
#
F0F3FA
;
.el-table__header-wrapper
{
th
{
background
:
#
f0f3fa
;
// text-align: left;
}
}
.el-table__fixed-header-wrapper
{
th
{
background
:
#
F0F3FA
;
.el-table__fixed-header-wrapper
{
th
{
background
:
#
f0f3fa
;
}
}
.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;
//-webkit-box-shadow: 2px 0px 1px -2px #C3CBD5;
box-shadow
:
2px
0
8px
-7px
#202020
;
...
...
@@ -355,57 +370,57 @@ ul, li {
height
:
auto
!
important
;
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
;
}
.caret-wrapper
{
.caret-wrapper
{
width
:
10px
;
}
.el-table__body-wrapper
{
.el-table__body-wrapper
{
&
:
:-
webkit-scrollbar
{
width
:
16px
;
//竖轴宽度
height
:
16px
;
//横轴宽度
}
&
:
:-
webkit-scrollbar-track
{
background-color
:
#
F3F4F
5
;
background-color
:
#
f3f4f
5
;
border-radius
:
0
;
}
&
:
:-
webkit-scrollbar-thumb
{
background-color
:
rgba
(
98
,
110
,
126
,
0
.2
);
border
:
4px
solid
#
F3F4F
5
;
background-color
:
rgba
(
98
,
110
,
126
,
0
.2
);
border
:
4px
solid
#
f3f4f
5
;
border-radius
:
10px
;
}
&
:
:-
webkit-scrollbar-corner
{
background
:
#
F3F4F
5
;
background
:
#
f3f4f
5
;
/*border-left: 1px solid #E0EAF2;*/
}
tr
{
&
.current-row
>
td
{
tr
{
&
.current-row
>
td
{
background-color
:
initial
;
}
&
:nth-child
(
2n
)
{
background
:
#
F8FBFF
;
background
:
#
f8fbff
;
}
}
tr
:hover
>
td
.el-table__cell
{
background
:
#
DCEBFF
;
tr
:hover
>
td
.el-table__cell
{
background
:
#
dcebff
;
}
}
.el-table__body
tr
.hover-row
>
td
.el-table__cell
{
background
:
#
DCEBFF
;
.el-table__body
tr
.hover-row
>
td
.el-table__cell
{
background
:
#
dcebff
;
}
.el-table__fixed
{
.el-table__fixed
{
//bottom:0 !important;
.el-table__body
{
padding-bottom
:
16px
;
.el-table__body
{
padding-bottom
:
16px
;
}
tr
:nth-child
(
2n
)
{
background-color
:
#
F8FBFF
;
tr
:nth-child
(
2n
)
{
background-color
:
#
f8fbff
;
}
}
::-webkit-scrollbar-track-piece
{
//滚动条凹槽的颜色,还可以设置边框属性
background-color
:
#
F3F4F
5
;
background-color
:
#
f3f4f
5
;
height
:
16px
;
padding
:
0
4px
;
}
...
...
@@ -413,7 +428,7 @@ ul, li {
::-webkit-scrollbar
{
width
:
8px
;
height
:
16px
;
background-color
:
#
F3F4F
5
;
background-color
:
#
f3f4f
5
;
border-radius
:
6px
;
}
//滚动条的滑块
...
...
@@ -421,31 +436,30 @@ ul, li {
border-radius
:
8px
;
height
:
8px
;
margin
:
0
4px
;
background
:
rgba
(
98
,
110
,
126
,
0
.2
);
border
:
4px
solid
#
F3F4F
5
;
&
:hover
{
background
:
rgba
(
98
,
110
,
126
,
0
.2
);
border
:
4px
solid
#
f3f4f
5
;
&
:hover
{
background
:
#566380
;
}
}
.el-scrollbar
{
.el-scrollbar
{
height
:
16px
;
.el-scrollbar__bar.is-horizontal
{
.el-scrollbar__bar.is-horizontal
{
height
:
8px
;
}
.el-scrollbar__thumb
{
background
:
rgba
(
98
,
110
,
126
,
0
.4
);
&
:hover
{
.el-scrollbar__thumb
{
background
:
rgba
(
98
,
110
,
126
,
0
.4
);
&
:hover
{
background
:
#566380
;
}
}
}
}
}
.el-table__body
tr
.hover-row
>
td
.el-table__cell
{
background-color
:
#
DCEBFF
;
.el-table__body
tr
.hover-row
>
td
.el-table__cell
{
background-color
:
#
dcebff
;
}
.common-title
{
.common-title
{
border-left
:
2px
solid
#445781
;
padding-left
:
8px
;
font-size
:
16px
;
...
...
@@ -455,54 +469,55 @@ ul, li {
color
:
#232323
;
}
.pagination-box
{
.pagination-box
{
text-align
:
right
;
padding
:
16px
0
;
.el-pagination
{
.el-pagination
{
font-weight
:
normal
;
padding
:
0
;
button
,
span
:not
([
class
*=
suffix
])
{
button
,
span
:not
([
class
*=
"suffix"
])
{
height
:
24px
;
line-height
:
24px
;
}
&
.is-background
.btn-next
,
&
.is-background
.btn-prev
,
&
.is-background
.el-pager
li
{
&
.is-background
.el-pager
li
{
height
:
24px
;
line-height
:
24px
;
min-width
:
24px
;
padding
:
0
6px
;
margin
:
0
4px
;
font-size
:
12px
;
color
:
rgba
(
35
,
35
,
35
,
0
.7
);
background-color
:
#
F3F4F
5
;
color
:
rgba
(
35
,
35
,
35
,
0
.7
);
background-color
:
#
f3f4f
5
;
}
&
.is-background
.el-pager
li
:not
(
.disabled
)
:hover
{
background-color
:
rgba
(
0
,
129
,
255
,
0
.3
);
color
:
#
FFFFFF
;
&
.is-background
.el-pager
li
:not
(
.disabled
)
:hover
{
background-color
:
rgba
(
0
,
129
,
255
,
0
.3
);
color
:
#
ffffff
;
}
&
.is-background
{
.el-pager
{
li
:not
(
.disabled
)
{
&
.active
{
&
.is-background
{
.el-pager
{
li
:not
(
.disabled
)
{
&
.active
{
background-color
:
$systemColor
;
color
:
#
FFFFFF
;
color
:
#
ffffff
;
}
}
}
.el-pagination__jump
{
.el-pagination__jump
{
margin-left
:
8px
;
color
:
#3
D3D3D
;
.el-input
{
color
:
#3
d3d3d
;
.el-input
{
font-size
:
12px
;
}
.el-pagination__editor
{
.el-pagination__editor
{
height
:
24px
;
margin
:
0
8px
;
}
.el-pagination__editor.el-input
.el-input__inner
{
.el-pagination__editor.el-input
.el-input__inner
{
height
:
24px
;
border-color
:
#
CDD1D
9
;
border-color
:
#
cdd1d
9
;
border-radius
:
2px
;
}
}
...
...
@@ -510,29 +525,29 @@ ul, li {
}
}
.el-drawer
{
.el-drawer__header
{
.el-drawer
{
.el-drawer__header
{
padding
:
16px
2px
16px
16px
;
margin-bottom
:
0
;
border-bottom
:
1px
solid
#
E1E1E
1
;
border-bottom
:
1px
solid
#
e1e1e
1
;
}
.el-drawer__body
{
.el-drawer__body
{
overflow-y
:
auto
;
&
:
:-
webkit-scrollbar
{
width
:
16px
;
//竖轴宽度
height
:
16px
;
//横轴宽度
}
&
:
:-
webkit-scrollbar-track
{
background-color
:
#
F3F4F
5
;
background-color
:
#
f3f4f
5
;
border-radius
:
0
;
}
&
:
:-
webkit-scrollbar-thumb
{
background-color
:
rgba
(
98
,
110
,
126
,
0
.2
);
border
:
4px
solid
#
F3F4F
5
;
background-color
:
rgba
(
98
,
110
,
126
,
0
.2
);
border
:
4px
solid
#
f3f4f
5
;
border-radius
:
10px
;
}
&
:
:-
webkit-scrollbar-corner
{
background
:
#
F3F4F
5
;
background
:
#
f3f4f
5
;
/*border-left: 1px solid #E0EAF2;*/
}
}
...
...
@@ -541,49 +556,49 @@ ul, li {
//组件公用样式
//
// 无边框、阴影card
.el-card.noborder
{
.el-card.noborder
{
border
:
0
;
box-shadow
:
none
;
//margin-bottom: 12px;
color
:
#232323
;
.el-card__body
{
.el-card__body
{
padding
:
0
;
}
}
//el-tabs
.tabpane
{
&
.w100
{
.el-tabs__nav-scroll
{
.tabpane
{
&
.w100
{
.el-tabs__nav-scroll
{
padding-left
:
16px
;
}
.el-tabs__content
{
.el-tabs__content
{
padding
:
16px
;
}
}
.el-tabs__header
{
.el-tabs__header
{
margin
:
0
;
}
.
el-tabs__nav-wrap
:
:
after
{
background-color
:
#
EFEFEF
;
.
el-tabs__nav-wrap
:
:
after
{
background-color
:
#
efefef
;
height
:
1px
;
}
.el-tabs__item
{
.el-tabs__item
{
font-size
:
16px
;
color
:
#232323
;
line-height
:
50px
;
height
:
50px
;
}
.is-active
{
color
:
#0081
FF
;
.is-active
{
color
:
#0081
ff
;
font-weight
:
bold
;
}
}
.el-tabs__item.is-disabled
{
color
:
#
C0C4CC
;
color
:
#
c0c4cc
;
cursor
:
not
-
allowed
;
}
//按钮
.btn
{
.btn
{
margin-left
:
8px
;
border-radius
:
4px
;
display
:
inline-block
;
...
...
@@ -598,17 +613,17 @@ ul, li {
height
:
32px
;
padding
:
0
16px
;
}
&
.h34
{
&
.h34
{
width
:
80px
;
height
:
34px
;
}
.img
{
.img
{
height
:
100%
;
float
:
left
;
width
:
16px
;
}
}
.btnsmall
{
.btnsmall
{
display
:
inline-block
;
font-size
:
12px
;
border-radius
:
2px
;
...
...
@@ -617,101 +632,101 @@ ul, li {
margin
:
0
4px
;
cursor
:
pointer
;
}
.btn_default
{
border
:
1px
solid
#0081
FF
;
color
:
#0081
FF
;
background
:
#
FFFFFF
;
&
.h28
{
.btn_default
{
border
:
1px
solid
#0081
ff
;
color
:
#0081
ff
;
background
:
#
ffffff
;
&
.h28
{
line-height
:
26px
;
}
&
.h32
{
line-height
:
30px
;
}
&
.h34
{
&
.h34
{
line-height
:
32px
;
}
&
:hover
{
color
:
#006
AD
1
;
border-color
:
#006
AD
1
;
&
:hover
{
color
:
#006
ad
1
;
border-color
:
#006
ad
1
;
}
}
.btn_primary
{
background-color
:
#0081
FF
;
.btn_primary
{
background-color
:
#0081
ff
;
color
:
#fff
;
&
.btn_disabled
{
background
:
#
D3D3D
3
;
&
.btn_disabled
{
background
:
#
d3d3d
3
;
cursor
:
auto
;
&
:hover
{
background
:
#
D3D3D
3
;
&
:hover
{
background
:
#
d3d3d
3
;
}
}
&
.btn_shallow
{
color
:
#0081
FF
;
&
.btn_shallow
{
color
:
#0081
ff
;
background
:
rgba
(
0
,
129
,
255
,
0
.16
);
&
:hover
{
background
:
#0081
FF
;
&
:hover
{
background
:
#0081
ff
;
color
:
#fff
;
}
}
&
.h28
{
&
.h28
{
line-height
:
28px
;
}
&
.h32
{
&
.h32
{
line-height
:
32px
;
}
&
.h34
{
&
.h34
{
line-height
:
34px
;
}
&
.h36
{
&
.h36
{
line-height
:
36px
;
}
&
:hover
{
background-color
:
#006
AD
1
;
&
:hover
{
background-color
:
#006
ad
1
;
}
}
.btn_cancel
{
border
:
1px
solid
#
CCCCCC
;
.btn_cancel
{
border
:
1px
solid
#
cccccc
;
color
:
#4f4f4f
;
&
.h28
{
&
.h28
{
line-height
:
26px
;
}
&
.h32
{
line-height
:
30px
;
}
&
.h34
{
&
.h34
{
line-height
:
32px
;
}
&
:hover
{
&
:hover
{
color
:
#4f4f4f
;
border-color
:
#
CCCCCC
;
background-color
:
#
F4F4F
4
;
border-color
:
#
cccccc
;
background-color
:
#
f4f4f
4
;
}
}
//搜索框
.searchInput
{
.searchInput
{
width
:
590px
;
height
:
32px
;
border-radius
:
2px
0px
0px
2px
;
opacity
:
1
;
border
:
1px
solid
#
EFEFEF
;
border
:
1px
solid
#
efefef
;
position
:
relative
;
overflow
:
hidden
;
.el-input
{
.el-input
{
margin-top
:
-1px
;
//line-height: 32px;
.el-input__inner
{
.el-input__inner
{
line-height
:
32px
;
height
:
32px
;
border
:
0
;
}
.el-input__suffix
{
.el-input__suffix
{
margin-top
:
-1px
;
}
}
.btn
{
background
:
#
F5F5F
5
;
color
:
#0081
FF
;
.btn
{
background
:
#
f5f5f
5
;
color
:
#0081
ff
;
cursor
:
pointer
;
width
:
60px
;
line-height
:
32px
;
...
...
@@ -721,72 +736,72 @@ ul, li {
right
:
0
;
top
:
0
;
border-radius
:
0
;
&
:hover
{
color
:
#
FFFFFF
;
background
:
#0081
FF
;
&
:hover
{
color
:
#
ffffff
;
background
:
#0081
ff
;
}
}
}
//无边框搜索框
.newSearch
{
.newSearch
{
width
:
238px
;
height
:
32px
;
border-radius
:
4px
;
.el_input
{
.el_input
{
height
:
32px
!
important
;
}
.el-input__prefix
{
.el-input__prefix
{
left
:
12px
;
.el-input__icon
{
img
{
.el-input__icon
{
img
{
float
:
left
;
margin-top
:
7px
;
}
}
}
.el-input__inner
{
.el-input__inner
{
padding-left
:
36px
;
border-color
:
#fff
!
important
;
height
:
32px
!
important
;
}
}
//导出EXCEL
.btn-export
{
.btn-export
{
display
:
inline-block
;
color
:
#232323
;
font-size
:
14px
;
height
:
24px
;
line-height
:
24px
;
cursor
:
pointer
;
img
{
img
{
margin-right
:
5px
;
float
:
left
;
width
:
18px
;
height
:
18px
;
margin-top
:
2px
;
}
&
:hover
{
color
:
#0081
FF
;
&
:hover
{
color
:
#0081
ff
;
}
}
//有链接字体颜色
.wordprimary
{
color
:
#0081
FF
;
.wordprimary
{
color
:
#0081
ff
;
cursor
:
pointer
;
}
//分割线
.el-divider--horizontal
{
.el-divider--horizontal
{
margin
:
0
;
}
.el-divider
{
.el-divider
{
background-color
:
#efefef
;
}
.flex
{
.flex
{
display
:
flex
;
}
//消息提示框
.el-message
{
.el-message
{
border-radius
:
0
;
padding
:
10px
;
}
...
...
@@ -807,9 +822,8 @@ ul, li {
padding
:
0
16px
;
}
}
}
.min1370
{
.min1370
{
min-width
:
1370px
;
}
dsk-operate-ui/src/assets/styles/project.scss
View file @
7c7b08c0
.el-card
{
overflow
:
initial
;
}
.app-container
{
padding
:
0
;
}
//小导航
.miantitle
{
color
:
#232323
;
font-size
:
12px
;
margin
:
12px
24px
;
margin
:
12px
0
;
>
span
{
opacity
:
0
.4
;
&
:last-child
{
opacity
:
0
.8
}
...
...
dsk-operate-ui/src/assets/styles/public.scss
View file @
7c7b08c0
...
...
@@ -1222,8 +1222,7 @@ select {
color
:
#232323
;
}
.enterprise_contatiner
{
padding
:
0
;
padding-bottom
:
16px
;
}
.el-input-group__append
{
cursor
:
pointer
;
...
...
dsk-operate-ui/src/assets/styles/search-common.scss
View file @
7c7b08c0
::v-deep
.head-form-new
{
margin
-bottom
:
8px
;
padding
-bottom
:
8px
;
.query-box
{
.from-item
{
display
:
flex
;
...
...
@@ -25,7 +25,7 @@
}
}
.el-cascader__tags
{
.el-cascader__tags
,
.el-select__tags
{
.el-tag
{
max-width
:
unset
!
important
;
}
...
...
dsk-operate-ui/src/layout/components/AppMain.vue
View file @
7c7b08c0
...
...
@@ -33,6 +33,7 @@ export default {
width
:
100%
;
position
:
relative
;
overflow
:
hidden
;
display
:
flex
;
}
.fixed-header
+
.app-main
{
...
...
@@ -42,7 +43,7 @@ export default {
.hasTagsView
{
.app-main
{
/* 84 = navbar + tags-view = 50 + 34 */
min-height
:
calc
(
100vh
-
68
px
);
min-height
:
calc
(
100vh
-
56
px
);
min-width
:
1240px
;
background
:
#F5F5F5
;
overflow
:
initial
;
...
...
dsk-operate-ui/src/router/index.js
View file @
7c7b08c0
...
...
@@ -70,7 +70,7 @@ export const constantRoutes = [
path
:
'index'
,
component
:
()
=>
import
(
'@/views/index'
),
name
:
'Index'
,
meta
:
{
title
:
'首页'
,
icon
:
'index'
,
noCache
:
false
}
meta
:
{
title
:
'首页'
,
icon
:
'index'
}
}
]
},
...
...
@@ -159,6 +159,7 @@ export const constantRoutes = [
}
]
},
//企业详情
{
path
:
'/company'
,
component
:
Layout
,
...
...
@@ -167,12 +168,13 @@ export const constantRoutes = [
children
:
[
{
path
:
'/company/:id'
,
component
:
()
=>
import
(
'@/views/detail
/party-b/index
'
),
component
:
()
=>
import
(
'@/views/detail'
),
name
:
'Company'
,
meta
:
{
title
:
'企业详情'
}
}
]
},
//人员详情
{
path
:
'/personnel'
,
component
:
Layout
,
...
...
@@ -180,13 +182,40 @@ export const constantRoutes = [
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/personnel/:id'
,
component
:
()
=>
import
(
'@/views/detail
/party-b/index
'
),
path
:
'/personnel/:id
.html
'
,
component
:
()
=>
import
(
'@/views/detail'
),
name
:
'Personnel'
,
meta
:
{
title
:
'人员详情'
}
}
]
},
//公招市场详情
{
path
:
'/gzsc'
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/gzsc/:id'
,
component
:
()
=>
import
(
'@/views/detail'
),
name
:
'detail-gzsc'
,
}
]
},
//中标业绩详情
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/performance/zb/:id.html'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
{
path
:
'/structure'
,
component
:
Layout
,
...
...
@@ -348,8 +377,6 @@ export const constantRoutes = [
]
},
]
// 动态路由,基于用户权限动态去加载
...
...
dsk-operate-ui/src/utils/index.js
View file @
7c7b08c0
...
...
@@ -402,14 +402,14 @@ export function isNumberStr(str) {
}
// 甲方详情左侧菜单映射
// export const detailSideBar = new Map({
//
// 企业速览
// holderinfo: "ownershipStructure"
,
//
// 高管信息
// execuinfo: "leadingMember"
,
//
// 对外投资
// overseas: "outboundInvestment"
,
//
// 分支机构
// branch: "branch"
,
// }
)
export
const
detailSideBar
=
new
Map
([
// 企业速览
[
"holderinfo"
,
"ownershipStructure"
]
,
// 高管信息
[
"execuinfo"
,
"leadingMember"
]
,
// 对外投资
[
"overseas"
,
"outboundInvestment"
]
,
// 分支机构
[
"branch"
,
"branch"
]
,
]
)
dsk-operate-ui/src/utils/request.js
View file @
7c7b08c0
...
...
@@ -25,7 +25,7 @@ service.interceptors.request.use(config => {
// 是否需要设置 token
const
isToken
=
(
config
.
headers
||
{}).
isToken
===
false
// 是否需要防止数据重复提交
const
isRepeatSubmit
=
(
config
.
headers
||
{}).
repeatSubmit
===
false
const
isRepeatSubmit
=
(
config
.
headers
||
{}).
repeatSubmit
===
false
||
config
.
url
.
indexOf
(
'getUipIdByCid'
)
!=-
1
if
(
getToken
()
&&
!
isToken
)
{
config
.
headers
[
'Authorization'
]
=
'Bearer '
+
getToken
()
// 让每个请求携带自定义token 请根据实际情况自行修改
config
.
headers
[
'tenantid'
]
=
getTenantid
()
//携带租户id
...
...
dsk-operate-ui/src/views/component/CustomMoneySelect.vue
View file @
7c7b08c0
<
template
>
<div
:ref=
"refStr"
class=
"custom-money-select screen-popper"
id=
"custom-money-select"
>
<div
:ref=
"refStr"
class=
"custom-money-select
1
screen-popper"
id=
"custom-money-select"
>
<div
:class=
"['input-block', isSelectOption?'rote':'']"
>
<div
class=
"block"
@
click=
"isSelectOption=!isSelectOption"
@
mouseenter=
"handleMouseenter"
@
mouseleave=
"handleMouseleave"
>
<el-input
class=
"custom-money-input"
v-model=
"value"
:placeholder=
"placeholder"
readonly
>
...
...
@@ -238,8 +238,8 @@ export default {
</
script
>
<
style
lang=
"scss"
>
.custom-money-select
{
width
:
1
20
px
;
.custom-money-select
1
{
width
:
1
06
px
;
height
:
34px
;
position
:
relative
;
.rote
{
...
...
dsk-operate-ui/src/views/component/CustomTimeSelect.vue
View file @
7c7b08c0
<
template
>
<div
:ref=
"refStr"
class=
"custom-time-select screen-popper"
id=
"custom-time-select"
>
<div
:ref=
"refStr"
class=
"custom-time-select
1
screen-popper"
id=
"custom-time-select"
>
<div
:class=
"['input-block', isSelectOption?'rote':'']"
>
<div
class=
"block"
@
click=
"isSelectOption=!isSelectOption"
@
mouseenter=
"handleMouseenter"
@
mouseleave=
"handleMouseleave"
>
<el-input
class=
"custom-time-input"
v-model=
"value"
:placeholder=
"placeholder"
readonly
>
...
...
@@ -244,8 +244,8 @@ export default {
</
script
>
<
style
lang=
"scss"
>
.custom-time-select
{
width
:
120px
;
.custom-time-select
1
{
width
:
90px
!
important
;
height
:
34px
;
.rote
{
...
...
dsk-operate-ui/src/views/components/MaxPageSizeTip.vue
0 → 100644
View file @
7c7b08c0
<
template
>
<div
class=
"max-page-size-tip"
@
click
.
stop=
"$emit('closeMaxTip')"
>
<div
class=
"max-page-tip-container"
@
click
.
stop=
"''"
>
<div
class=
"max-page-tip-inner"
>
<div
class=
"top-title-container"
>
<img
src=
"@/assets/images/market/max-tip-title-icon.svg"
alt=
""
class=
"max-tip-icon"
>
<span
class=
"tip-title"
>
数据查询已达到上限
</span>
<img
src=
"@/assets/images/market/close-max-tip-icon.svg"
alt=
""
class=
"max-tip-close-icon"
@
click
.
stop=
"$emit('closeMaxTip')"
>
</div>
<div
class=
"max-page-tip-content"
>
<div
class=
"max-page-content-inner"
>
您可通过筛选工具来查询数据~若有更多需求请联系客服 0262798729!
</div>
</div>
</div>
</div>
</div>
</
template
>
<
script
>
export
default
{
name
:
""
,
data
()
{
return
{
};
},
//可访问data属性
created
()
{
},
//计算集
computed
:
{
},
//方法集
methods
:
{
},
}
</
script
>
<
style
lang=
"scss"
scoped
>
.max-page-size-tip
{
position
:
fixed
;
left
:
0
;
top
:
0
;
width
:
100%
;
height
:
100%
;
background
:
rgba
(
0
,
0
,
0
,
0
.6
);
z-index
:
1200
;
.max-page-tip-container
{
position
:
absolute
;
left
:
50%
;
top
:
50%
;
transform
:
translate
(
-50%
,
-50%
);
width
:
340px
;
height
:
112px
;
background
:
#ffffff
;
border
:
1px
solid
#e5e6eb
;
box-shadow
:
0px
4px
10px
0px
rgba
(
0
,
0
,
0
,
0
.1
);
border-radius
:
4px
;
padding
:
20px
;
box-sizing
:
border-box
;
.top-title-container
{
display
:
flex
;
align-items
:
center
;
.max-tip-icon
{
width
:
24px
;
height
:
24px
;
}
.tip-title
{
color
:
#1d2129
;
font-size
:
16px
;
line-height
:
24px
;
font-weight
:
400
;
margin-left
:
16px
;
margin-right
:
16px
;
width
:
228px
;
}
.max-tip-close-icon
{
width
:
16px
;
height
:
16px
;
align-self
:
flex-start
;
cursor
:
pointer
;
}
}
.max-page-tip-content
{
margin-top
:
4px
;
padding-left
:
40px
;
padding-right
:
32px
;
box-sizing
:
border-box
;
.max-page-content-inner
{
color
:
#1d2129
;
font-size
:
14px
;
line-height
:
22px
;
}
}
}
}
</
style
>
dsk-operate-ui/src/views/custom/component/addCustom.vue
View file @
7c7b08c0
...
...
@@ -36,7 +36,7 @@
<el-input
type=
"text"
placeholder=
"请输入"
v-model=
"queryParam.creditCode"
></el-input>
</el-form-item>
<div
class=
"popbot"
>
<div
class=
"wordprimary"
@
click=
"toct"
>
前往城投平台寻找客户线索>
</div>
<div
class=
"wordprimary"
style=
"display: inline-block"
@
click=
"toct"
>
前往城投平台寻找客户线索>
</div>
<div
class=
"btn btn_cancel h32"
@
click=
"resetForm('ruleForm')"
>
返回
</div>
<div
class=
"btn btn_primary h32"
@
click=
"submitForm('ruleForm')"
>
添加
</div>
</div>
...
...
@@ -84,8 +84,6 @@
created
()
{
this
.
prvinceTree
()
this
.
getDictType
()
console
.
log
(
this
.
dialogVisible
)
console
.
log
(
'1111111111'
)
},
computed
:
{},
methods
:{
...
...
@@ -116,7 +114,7 @@
cityId
:
''
,
districtId
:
''
,
},
this
.
dialogVisible
=
false
this
.
$emit
(
"handleCancel"
,
false
)
this
.
showlist
=
false
},
getAddr
(
obj
){
...
...
@@ -223,7 +221,7 @@
addCustomer
(
this
.
queryParam
).
then
(
result
=>
{
if
(
result
.
code
==
200
){
this
.
$message
.
success
(
'添加成功!'
)
this
.
dialogVisible
=
false
this
.
$emit
(
"handleCancel"
,
false
)
this
.
resetForm
(
'ruleForm'
)
}
else
{
this
.
$message
.
error
(
result
.
msg
)
...
...
@@ -234,7 +232,7 @@
});
},
toct
(){
this
.
dialogVisible
=
false
this
.
$emit
(
"handleCancel"
,
false
)
this
.
$router
.
push
({
path
:
'/macro/urban'
})
},
//输入数字
...
...
dsk-operate-ui/src/views/custom/customList/index.vue
View file @
7c7b08c0
<
template
>
<div
@
click =
'handleALL'
>
<div
@
click =
'handleALL'
class=
"app-container"
>
<div
class=
"miantitle"
>
<span>
客户管理
</span>
<span>
/ 客户列表
</span>
</div>
<div
class=
"app-container"
>
<div>
<el-card
class=
"box-card noborder min1370"
>
<div
class=
"tables "
>
<div
class=
"empty"
v-if=
"tableData.total==0 && !isSkeleton"
>
...
...
@@ -845,24 +845,27 @@
padding-top
:
16px
;
width
:
100%
;
height
:
100%
;
::v-deep
.el-form
{
.el-input
{
line-height
:
32px
;
.el-input__inner
{
height
:
32px
;
.table_search
{
::v-deep
.el-form
{
.el-input
{
line-height
:
32px
;
border-radius
:
4px
;
border
:
0
;
.el-input__inner
{
height
:
32px
;
line-height
:
32px
;
border-radius
:
4px
;
border
:
0
;
}
}
}
.is-focus
{
.el-input__inner
{
background
:
#F4F6F9
;
.is-focus
{
.el-input__inner
{
background
:
#F4F6F9
;
}
}
}
}
}
}
.box
{
position
:
relative
;
...
...
dsk-operate-ui/src/views/custom/historicalCustomers/index.vue
View file @
7c7b08c0
<
template
>
<div
@
click =
'handleALL'
>
<div
class=
"app-container"
>
<el-card
class=
"box-card noborder"
>
<div
class=
"tables"
>
<div
class=
"empty"
v-if=
"tableData.total==0&& !isSkeleton"
>
<img
src=
"@/assets/images/project/empty.png"
>
<div
class=
"p1"
>
抱歉,没找到相关数据
</div>
<div
class=
"p2"
>
建议调整关键词或筛选条件,重新搜索
</div>
<div
class=
"app-container"
@
click =
'handleALL'
>
<el-card
class=
"box-card noborder"
>
<div
class=
"tables"
>
<div
class=
"empty"
v-if=
"tableData.total==0&& !isSkeleton"
>
<img
src=
"@/assets/images/project/empty.png"
>
<div
class=
"p1"
>
抱歉,没找到相关数据
</div>
<div
class=
"p2"
>
建议调整关键词或筛选条件,重新搜索
</div>
</div>
<div
class=
"table_search"
>
<div
class=
"newSearch"
>
<el-input
type=
"text"
v-model=
"searchParam.companyName"
clearable
placeholder=
"输入企业名称查询"
@
change=
"clearname"
>
<i
slot=
"prefix"
class=
"el-input__icon"
><img
src=
"@/assets/images/project/sousuo.png"
width=
"16px"
@
click=
"handleCurrentChange(1)"
></i>
</el-input>
</div>
<div
class=
"table_search"
>
<div
class=
"newSearch"
>
<el-input
type=
"text"
v-model=
"searchParam.companyName"
clearable
placeholder=
"输入企业名称查询"
@
change=
"clearname"
>
<i
slot=
"prefix"
class=
"el-input__icon"
><img
src=
"@/assets/images/project/sousuo.png"
width=
"16px"
@
click=
"handleCurrentChange(1)"
></i>
</el-input>
</div>
<div
class=
"dc"
>
<div
class=
"total"
>
共
{{
tableData
.
total
}}
条
</div>
</div>
<div
class=
"dc"
>
<div
class=
"total"
>
共
{{
tableData
.
total
}}
条
</div>
</div>
<skeleton
v-if=
"isSkeleton"
></skeleton>
<el-table
v-if=
"!isSkeleton&&tableData.total > 0"
class=
"fixed-table"
v-horizontal-scroll=
"tableData.total > 10 ? 'hover' : 'false'"
max-height=
"640"
:data=
"tableData.rows"
stripe
border
style=
"width: 100%"
>
<el-table-column
prop=
"index"
label=
"序号"
fixed=
"left"
width=
"60"
>
<template
slot-scope=
'scope'
>
<span>
{{
(
searchParam
.
pageNum
-
1
)
*
searchParam
.
pageSize
+
scope
.
$index
+
1
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"date"
label=
"企业名称"
fixed=
"left"
width=
"316"
>
</div>
<skeleton
v-if=
"isSkeleton"
></skeleton>
<el-table
v-if=
"!isSkeleton&&tableData.total > 0"
class=
"fixed-table"
v-horizontal-scroll=
"tableData.total > 10 ? 'hover' : 'false'"
max-height=
"640"
:data=
"tableData.rows"
stripe
border
style=
"width: 100%"
>
<el-table-column
prop=
"index"
label=
"序号"
fixed=
"left"
width=
"60"
>
<template
slot-scope=
'scope'
>
<span>
{{
(
searchParam
.
pageNum
-
1
)
*
searchParam
.
pageSize
+
scope
.
$index
+
1
}}
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"date"
label=
"企业名称"
fixed=
"left"
width=
"316"
>
<
template
slot-scope=
"scope"
>
<div
class=
"ps1"
>
<div
class=
"wordprimary ps2"
@
click=
"toDetail(scope.row,'business')"
v-html=
"scope.row.companyName"
></div>
...
...
@@ -48,159 +47,158 @@
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
"cooperationProject"
label=
"合作项目"
width=
"90"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
cooperationProject
||
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"followProject"
label=
"跟进项目"
width=
"90"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
followProject
||
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"reserveProject"
label=
"储备项目"
width=
"90"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
reserveProject
||
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"legalPerson"
label=
"法定代表人"
width=
"110"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
legalPerson
||
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"registerAddress"
label=
"注册地区"
width=
"160"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
registerAddress
||
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"registerCapitalStr"
label=
"注册资本金(万元)"
width=
"160"
>
<
template
slot-scope=
"scope"
>
<span
v-if=
"scope.row.registerCapital && scope.row.registerCapital>0"
>
{{
scope
.
row
.
registerCapital
}}
</span><span
v-else
>
--
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"creditLevel"
label=
"企业主体评级"
width=
"100"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
creditLevel
||
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"isOn"
label=
"上市公司"
width=
"76"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
isOn
==
1
?
"是"
:
"否"
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"isMajor"
label=
"局级大客户"
width=
"88"
>
<
template
slot-scope=
"scope"
>
</el-table-column>
<el-table-column
prop=
"cooperationProject"
label=
"合作项目"
width=
"90"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
cooperationProject
||
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"followProject"
label=
"跟进项目"
width=
"90"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
followProject
||
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"reserveProject"
label=
"储备项目"
width=
"90"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
reserveProject
||
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"legalPerson"
label=
"法定代表人"
width=
"110"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
legalPerson
||
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"registerAddress"
label=
"注册地区"
width=
"160"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
registerAddress
||
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"registerCapitalStr"
label=
"注册资本金(万元)"
width=
"160"
>
<
template
slot-scope=
"scope"
>
<span
v-if=
"scope.row.registerCapital && scope.row.registerCapital>0"
>
{{
scope
.
row
.
registerCapital
}}
</span><span
v-else
>
--
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"creditLevel"
label=
"企业主体评级"
width=
"100"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
creditLevel
||
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"isOn"
label=
"上市公司"
width=
"76"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
isOn
==
1
?
"是"
:
"否"
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"isMajor"
label=
"局级大客户"
width=
"88"
>
<
template
slot-scope=
"scope"
>
<span
v-if=
"scope.row.isMajor != null"
>
{{
scope
.
row
.
isMajor
==
1
?
"是"
:
"否"
}}
</span>
<span
v-else
>
--
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"customerLevel"
label=
"客户等级"
width=
"76"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
customerLevel
||
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"companyNature"
label=
"客户性质"
width=
"76"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
companyNature
||
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"companyLevel"
label=
"客户级别"
width=
"76"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
companyLevel
||
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"address"
label=
"企业母公司"
width=
"268"
>
<
template
slot-scope=
"scope"
>
<div
class=
""
>
{{
scope
.
row
.
superCompany
||
'--'
}}
</div>
</
template
>
</el-table-column>
<el-table-column
:key=
"keys"
prop=
"mainBusiness"
label=
"主营业务"
width=
"400"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.mainBusiness == null || scope.row.mainBusiness == ''"
>
--
</div>
<div
v-if=
"scope.row.mainBusiness1"
>
<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
>
</el-table-column>
<el-table-column
prop=
"companyAttribute"
:key=
"keys+2"
label=
"发包属性"
width=
"400"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.companyAttribute == null || scope.row.companyAttribute == ''"
>
--
</div>
<div
v-if=
"scope.row.companyAttribute1"
>
<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
>
</el-table-column>
<el-table-column
prop=
"followUser"
label=
"跟进人"
width=
"110"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
followUser
||
'--'
}}
</
template
>
</el-table-column>
</el-table>
<div
class=
"bottems"
v-if=
"tableData.total>searchParam.pageSize"
>
<el-pagination
background
:page-size=
"searchParam.pageSize"
:current-page=
"searchParam.pageNum"
@
current-change=
"handleCurrentChange"
layout=
"prev, pager, next"
:total=
"tableData.total"
>
</el-pagination>
</div>
<div
class=
"delform"
v-if=
"RLcompanyName"
>
<div
class=
"words"
>
再次认领将会恢复默认客户数据
</div>
<div>
<div
class=
"btnsmall btn_primary h28"
@
click=
"RL"
>
确定
</div>
<div
class=
"btnsmall btn_cancel h28"
@
click=
"RLcompanyName = ''"
>
取消
</div>
</div>
<span
v-else
>
--
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
"customerLevel"
label=
"客户等级"
width=
"76"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
customerLevel
||
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"companyNature"
label=
"客户性质"
width=
"76"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
companyNature
||
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"companyLevel"
label=
"客户级别"
width=
"76"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
companyLevel
||
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"address"
label=
"企业母公司"
width=
"268"
>
<
template
slot-scope=
"scope"
>
<div
class=
""
>
{{
scope
.
row
.
superCompany
||
'--'
}}
</div>
</
template
>
</el-table-column>
<el-table-column
:key=
"keys"
prop=
"mainBusiness"
label=
"主营业务"
width=
"400"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.mainBusiness == null || scope.row.mainBusiness == ''"
>
--
</div>
<div
v-if=
"scope.row.mainBusiness1"
>
<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
>
</el-table-column>
<el-table-column
prop=
"companyAttribute"
:key=
"keys+2"
label=
"发包属性"
width=
"400"
>
<
template
slot-scope=
"scope"
>
<div
v-if=
"scope.row.companyAttribute == null || scope.row.companyAttribute == ''"
>
--
</div>
<div
v-if=
"scope.row.companyAttribute1"
>
<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
>
</el-table-column>
<el-table-column
prop=
"followUser"
label=
"跟进人"
width=
"110"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
followUser
||
'--'
}}
</
template
>
</el-table-column>
</el-table>
<div
class=
"bottems"
v-if=
"tableData.total>searchParam.pageSize"
>
<el-pagination
background
:page-size=
"searchParam.pageSize"
:current-page=
"searchParam.pageNum"
@
current-change=
"handleCurrentChange"
layout=
"prev, pager, next"
:total=
"tableData.total"
>
</el-pagination>
</div>
<div
class=
"delform"
v-if=
"RLcompanyName"
>
<div
class=
"words"
>
再次认领将会恢复默认客户数据
</div>
<div>
<div
class=
"btnsmall btn_primary h28"
@
click=
"RL"
>
确定
</div>
<div
class=
"btnsmall btn_cancel h28"
@
click=
"RLcompanyName = ''"
>
取消
</div>
</div>
</div>
</
el-card
>
</
div
>
</
div
>
</
el-card
>
</div>
</template>
...
...
dsk-operate-ui/src/views/custom/overview/index.vue
View file @
7c7b08c0
...
...
@@ -182,7 +182,7 @@
</div>
</div>
</div>
<AddCustom
:data=
"data"
v-if=
"data.open"
></AddCustom>
<AddCustom
:data=
"data"
v-if=
"data.open"
@
handleCancel=
"handleCancel"
></AddCustom>
</div>
</template>
...
...
@@ -574,6 +574,9 @@
handleAdd
(){
this
.
data
.
open
=
true
},
handleCancel
(
isshow
){
this
.
data
.
open
=
isshow
},
}
}
</
script
>
...
...
dsk-operate-ui/src/views/detail.vue
0 → 100644
View file @
7c7b08c0
<
template
>
<div
v-loading=
"loading"
class=
"market-container"
>
<iframe
id=
"companyIframe"
marginwidth=
"0"
marginheight=
"0"
frameborder=
"0"
scrolling=
"no"
width=
"100%"
:style=
"
{height:iframeHight+'px'}"
:src="src" />
</div>
</
template
>
<
script
>
import
{
steerScroll
}
from
'@/assets/js/jskplug'
;
import
{
dskAccessToken
}
from
'@/api/common'
;
export
default
{
name
:
'Enterprise'
,
components
:
{
},
data
()
{
return
{
loading
:
false
,
// 是否加载完成-当前页控制
iframeTimer
:
''
,
// 是否加载中定时器-当前页控制
footHeight
:
0
,
//底部高度,若为0(页面内部嵌套或者没有底部板块)
iframeHight
:
window
.
innerHeight
,
// iframe高度-当前页控制
navigation
:
{
isFixed
:
true
,
fixedHeight
:
56
,
totalHeight
:
68
},
// iframe之外页面顶部对象,ifFixed:是否浮动;fixedHeight:浮动对象高度;totalHeight:顶部整体高度
src
:
''
,
//iframe嵌套页面地址
// domain: 'https://plug.jiansheku.com', // 插件地址
domain
:
'https://pre-plug.jiansheku.com'
,
// 插件地址测试
// domain: 'http://192.168.60.210:3400',
ak
:
'aec7b3ff2y2q8x6t49a7e2c463ce21912'
,
// 需要携带的sdkId
timelongs
:
7200
,
//刷新token时间
tokentimer
:
null
,
};
},
created
()
{
if
(
window
.
location
.
host
===
'http://szh.jiansheku.com'
||
window
.
location
.
host
===
'szh.jiansheku.com'
){
this
.
domain
=
'https://plug.jiansheku.com'
}
else
{
this
.
domain
=
'https://pre-plug.jiansheku.com'
this
.
domain
=
'http://192.168.60.210:3400'
}
this
.
gettokens
();
},
mounted
()
{
this
.
iframeLoading
();
// 判断iframe页面是否加载完成-当前页控制
let
that
=
this
window
.
addEventListener
(
'message'
,
function
(
event
)
{
if
(
!
event
.
data
.
id
&&
event
.
data
.
url
){
that
.
$tab
.
openPage
(
event
.
data
.
title
,
event
.
data
.
url
).
then
(()
=>
{
// 执行结束的逻辑
})
}
},
false
);
steerScroll
(
'companyIframe'
,
this
.
navigation
,
this
.
footHeight
,
true
);
// iframeId: iframe的id;navigation:页面排除iframe后剩下的顶部高度;footHeight: 页面排除iframe后剩下的底部高度;state:监听or移除监听;parentId: 父级id[不带默认就是铺满整个页面]];_this:指向当前实例(可忽略)
},
beforeDestroy
()
{
clearInterval
(
this
.
iframeTimer
);
// -当前页控制
steerScroll
(
'companyIframe'
,
this
.
navigation
,
this
.
footHeight
);
// iframeId: iframe的id;navigation:页面排除iframe后剩下的顶部高度;footHeight: 页面排除iframe后剩下的底部高度;state:监听or移除监听;parentId: 父级id[不带默认就是铺满整个页面]];_this:指向当前实例(可忽略)
clearInterval
(
this
.
tokentimer
);
},
methods
:
{
gettokens
()
{
dskAccessToken
().
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
this
.
timelongs
=
res
.
data
.
expire
;
this
.
ak
=
res
.
data
.
accessToken
;
let
initTime
=
new
Date
().
getTime
()
if
(
window
.
location
.
search
){
this
.
src
=
`
${
this
.
domain
+
this
.
$route
.
fullPath
}
&ak=
${
this
.
ak
}
&initTime=
${
initTime
}
&uid=
${
this
.
ak
}
&origin=
${
window
.
location
.
origin
}
`
}
else
{
this
.
src
=
`
${
this
.
domain
+
this
.
$route
.
fullPath
}
?ak=
${
this
.
ak
}
&initTime=
${
initTime
}
&uid=
${
this
.
ak
}
&origin=
${
window
.
location
.
origin
}
`
}
// if(window.location.search){
// this.src = `${this.domain+this.$route.fullPath}&ak=${this.ak}&initTime=${initTime}&uid=${this.ak}&origin=${window.location.origin}`
// }else{
// this.src = `${this.domain+this.$route.fullPath}?ak=${this.ak}&initTime=${initTime}&uid=${this.ak}&origin=${window.location.origin}`
// }
// }else{ //更新iframe地址的accessToken
// let ifam = document.getElementById('companyIframe')
// ifam.contentWindow.postMessage({ 'accessToken': this.ak, 'initTime': initTime }, '*')
// }
this
.
refreshtoken
();
}
else
{
clearTimeout
(
this
.
tokentimer
);
}
});
},
refreshtoken
()
{
this
.
tokentimer
=
setTimeout
(()
=>
{
dskAccessToken
().
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
this
.
timelongs
=
res
.
data
.
expire
;
this
.
ak
=
res
.
data
.
accessToken
;
let
ifam
=
document
.
getElementById
(
'companyIframe'
);
//iframe的id
let
akObj
=
res
.
data
.
expire
;
//accessToken接口的返回值
let
initTime
=
new
Date
().
getTime
();
//accessToken接口返回后的当前时间戳
ifam
.
contentWindow
.
postMessage
({
'accessToken'
:
akObj
.
accessToken
,
'initTime'
:
initTime
},
'*'
);
}
else
{
clearTimeout
(
this
.
tokentimer
);
}
});
},
this
.
timelongs
*
1000
);
},
//判断iframe页面是否加载完成-当前页控制
iframeLoading
()
{
let
iframeHeight
=
document
.
getElementById
(
"companyIframe"
).
clientHeight
,
number
=
0
;
this
.
iframeTimer
=
setInterval
(()
=>
{
number
++
;
if
(
document
.
getElementById
(
"companyIframe"
).
clientHeight
!=
iframeHeight
||
number
==
5000
)
{
this
.
loading
=
false
;
clearInterval
(
this
.
iframeTimer
);
}
});
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.market-container
{
width
:
100%
;
height
:
100%
;
padding
:
16px
24px
;
box-sizing
:
border-box
;
}
</
style
>
dsk-operate-ui/src/views/detail/groupAccount/component/members.vue
View file @
7c7b08c0
...
...
@@ -6,6 +6,7 @@
:form-data=
"formData"
:query-params=
"queryParams"
:total=
"tableDataTotal"
:headerFixed=
"true"
:isExcel=
"false"
@
handle-search=
"handleSearch"
>
...
...
@@ -53,6 +54,7 @@
:tableLoading=
"tableLoading"
:tableData=
"tableData"
:forData=
"forData"
:headerFixed=
"true"
:tableDataTotal=
"tableDataTotal"
:queryParams=
"queryParams"
:MaxPage=
500
...
...
@@ -456,7 +458,7 @@
font-size
:
14px
;
font-weight
:
400
;
line-height
:
32px
;
color
:
#999999
;
color
:
rgba
(
35
,
35
,
35
,
0
.8
)
;
margin-right
:
8px
;
text-align
:
center
;
width
:
70px
;
...
...
dsk-operate-ui/src/views/detail/groupAccount/component/performance.vue
View file @
7c7b08c0
...
...
@@ -6,6 +6,7 @@
:form-data=
"formData"
:query-params=
"queryParams"
:total=
"tableDataTotal"
:headerFixed=
"true"
:isExcel=
"true"
@
handle-search=
"handleSearch"
@
handle-excel=
"clickEXCEL"
...
...
@@ -21,6 +22,7 @@
:tableLoading=
"tableLoading"
:tableData=
"tableData"
:forData=
"forData"
:headerFixed=
"true"
:MaxPage=
500
:tableDataTotal=
"tableDataTotal"
:queryParams=
"queryParams"
...
...
dsk-operate-ui/src/views/detail/groupAccount/component/zbxmfx.vue
View file @
7c7b08c0
<
template
>
<div
class=
"performance"
>
<div
class=
"content"
>
<head-form
<head-form
-new
ref=
"headForm"
title=
"集团施工项目最新招标"
:form-data=
"formData"
...
...
@@ -9,7 +9,7 @@
@
handle-search=
"handleSearch"
:slots=
"true"
:isExcel=
"false"
></head-form>
></head-form
-new
>
<span
class=
"check"
@
click=
"check"
>
查看集团招标
<i
class=
"el-icon-arrow-right"
></i></span>
<skeleton
v-if=
"isSkeleton"
style=
"padding: 16px"
></skeleton>
<div
class=
"table-item"
v-if=
"!isSkeleton && tableData.length >0"
>
...
...
@@ -23,7 +23,7 @@
<el-table-column
label=
"发布日期"
prop=
"issueTime"
width=
"100"
></el-table-column>
<el-table-column
label=
"招标成员"
prop=
"tenderee"
min-width=
"220"
>
<
template
slot-scope=
"scope"
>
<
router-link
:to=
"scope.row.uipId?`/enterprise/$
{encodeStr(scope.row.tendereeId)}`:`/company/${encodeStr(scope.row.tendereeId)}`" tag="a" class="a-link" v-if="scope.row.tendereeId
&&
scope.row.tenderee" v-html="scope.row.tenderee">
</router-link
>
<
span
@
click=
"getUipIdByCid(scope.row.tendereeId)"
style=
"cursor: pointer;"
class=
"a-link"
v-if=
"scope.row.tendereeId&&scope.row.tenderee"
v-html=
"scope.row.tenderee"
></span
>
<div
v-else
v-html=
"scope.row.tenderee || '--'"
></div>
</
template
>
</el-table-column>
...
...
@@ -88,7 +88,7 @@
</div>
<div
class=
"content"
>
<head-form
title=
"集团施工项目发包金额
区间
"
title=
"集团施工项目发包金额"
:form-data=
"[]"
:query-params=
"{}"
:slots=
"true"
...
...
@@ -100,7 +100,7 @@
clearable
@
change=
"changeSelect1"
class=
"form-content-width"
style=
"width:
8
0px"
>
style=
"width:
10
0px"
>
<el-option
v-for=
"(item, index) in yearOptions"
:key=
"index"
:label=
"item.name"
:value=
"item.value"
/>
</el-select>
</div>
...
...
@@ -139,7 +139,7 @@
clearable
@
change=
"changeSelect2"
class=
"form-content-width"
style=
"width:
8
0px"
>
style=
"width:
10
0px"
>
<el-option
v-for=
"(item, index) in yearOptions"
:key=
"index"
:label=
"item.name"
:value=
"item.value"
/>
</el-select>
</div>
...
...
@@ -153,7 +153,7 @@
<div
class=
"table-item"
>
<el-table
class=
"fixed-table"
:data=
"lxtjList"
border
max-height=
"270"
>
<el-table-column
label=
"项目类型"
prop=
"type"
min-width=
"70"
></el-table-column>
<el-table-column
label=
"发包数量"
prop=
"count"
width=
"
12
0"
>
<el-table-column
label=
"发包数量"
prop=
"count"
width=
"
9
0"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
count
}}{{
scope
.
row
.
count
?
'个'
:
''
}}
</
template
>
...
...
@@ -189,7 +189,7 @@
clearable
@
change=
"changeSelect3"
class=
"form-content-width"
style=
"width:
8
0px"
>
style=
"width:
10
0px"
>
<el-option
v-for=
"(item, index) in yearOptions"
:key=
"index"
:label=
"item.name"
:value=
"item.value"
/>
</el-select>
</div>
...
...
@@ -216,14 +216,15 @@
</el-row>
</div>
<div
class=
"content"
>
<head-form
<head-form-new
ref=
"headForm1"
title=
"历史发包项目金额TOP10"
:form-data=
"formData1"
:query-params=
"queryParams1"
@
handle-search=
"handleSearch1"
:slots=
"true"
:isExcel=
"false"
></head-form>
></head-form
-new
>
<skeleton
v-if=
"isSkeleton6"
style=
"padding: 16px"
></skeleton>
<div
class=
"table-item"
v-if=
"!isSkeleton6 && peojectTopData.length > 0"
>
<el-table
class=
"fixed-table"
:data=
"peojectTopData"
border
max-height=
"235"
>
...
...
@@ -242,7 +243,7 @@
<el-table-column
label=
"项目类型"
prop=
"projectTypeNew"
width=
"100"
></el-table-column>
<el-table-column
label=
"招标成员"
prop=
"projectUnit"
min-width=
"250"
>
<
template
slot-scope=
"scope"
>
<router-link
:to=
"scope.row.uipId?`/enterprise/$
{encodeStr(scope.row.projectUnitId)}`:`/company/${encodeStr(scope.row.projectUnitId)}`" tag="a" class="a-link" v-if="scope.row.projectUnitId
&&
scope.row.projectUnit" v-html="scope.row.projectUnit">
</router-link
:to="scope.row.uipId?`/enterprise/$
{encodeStr(scope.row.projectUnitId)}`:`/company/${encodeStr(scope.row.projectUnitId)}`"
>
<router-link
:to=
"scope.row.uipId?`/enterprise/$
{encodeStr(scope.row.projectUnitId)}`:`/company/${encodeStr(scope.row.projectUnitId)}`" tag="a" class="a-link" v-if="scope.row.projectUnitId
&&
scope.row.projectUnit" v-html="scope.row.projectUnit">
</router-link>
<div
v-else
v-html=
"scope.row.projectUnit || '--'"
></div>
</
template
>
</el-table-column>
...
...
@@ -274,6 +275,7 @@
import
mixin
from
'../../party-a/mixins/mixin'
import
{
recentlyBid
,
bidByYear
,
groupByMoney
,
groupByType
,
groupByLowerRate
,
peojectTop
}
from
'@/api/detail/groupAccount/groupAccount'
import
{
getDictType
}
from
'@/api/main'
import
{
getUipIdByCid
}
from
'@/api/macro/macro'
export
default
{
name
:
'qualifications'
,
props
:
[
'customerId'
],
...
...
@@ -288,14 +290,14 @@
combineId
:
this
.
customerId
,
},
formData
:
[
{
type
:
4
,
fieldName
:
'type'
,
value
:
''
,
placeholder
:
'项目类型'
,
options
:
[],
width
:
150
,
uid
:
this
.
getUid
()},
{
type
:
4
,
fieldName
:
'type'
,
value
:
''
,
placeholder
:
'项目类型'
,
options
:
[],
uid
:
this
.
getUid
()},
{
type
:
1
,
fieldName
:
'cgbl'
,
value
:
''
,
placeholder
:
'持股比例'
,
options
:
[],
width
:
110
,
uid
:
this
.
getUid
()},
{
type
:
1
,
fieldName
:
'year'
,
value
:
'2023年'
,
placeholder
:
'年份'
,
options
:
[],
width
:
100
,
uid
:
this
.
getUid
()},
{
type
:
1
,
fieldName
:
'year'
,
value
:
'2023年'
,
placeholder
:
'
选择
年份'
,
options
:
[],
width
:
100
,
uid
:
this
.
getUid
()},
],
formData1
:
[
{
type
:
4
,
fieldName
:
'type'
,
value
:
''
,
placeholder
:
'项目类型'
,
options
:
[],
width
:
150
,
uid
:
this
.
getUid
()},
{
type
:
4
,
fieldName
:
'type'
,
value
:
''
,
placeholder
:
'项目类型'
,
options
:
[],
uid
:
this
.
getUid
()},
{
type
:
1
,
fieldName
:
'cgbl'
,
value
:
''
,
placeholder
:
'持股比例'
,
options
:
[],
width
:
110
,
uid
:
this
.
getUid
()},
{
type
:
1
,
fieldName
:
'year'
,
value
:
'2023年'
,
placeholder
:
'年份'
,
options
:
[],
width
:
100
,
uid
:
this
.
getUid
()},
{
type
:
1
,
fieldName
:
'year'
,
value
:
'2023年'
,
placeholder
:
'
选择
年份'
,
options
:
[],
width
:
100
,
uid
:
this
.
getUid
()},
],
cgblList
:
[
{
name
:
'100%'
,
value
:
'100%'
},
...
...
@@ -351,6 +353,21 @@
this
.
getPeojectTop
()
},
methods
:
{
getUipIdByCid
(
companyId
){
var
params
=
[
companyId
]
getUipIdByCid
(
params
).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
if
(
res
.
data
&&
res
.
data
.
length
>
0
&&
res
.
data
[
0
].
uipId
){
this
.
$router
.
push
({
path
:
'/enterprise/'
+
this
.
encodeStr
(
companyId
)})
}
else
{
this
.
$router
.
push
({
path
:
'/company/'
+
this
.
encodeStr
(
companyId
)})
}
}
}).
catch
(
error
=>
{
});
},
yearsData
(){
let
mydate
=
new
Date
();
let
Year
=
mydate
.
getFullYear
();
...
...
dsk-operate-ui/src/views/detail/groupAccount/component/zbxmmx.vue
View file @
7c7b08c0
...
...
@@ -379,6 +379,14 @@
border-radius
:
4px
;
padding
:
16px
;
height
:
calc
(
100%
-
64px
);
::v-deep
.el-table__header-wrapper
{
position
:
sticky
;
top
:
64px
!
important
;
z-index
:
9
;
}
.headForm
{
margin-bottom
:
14px
;
.common-title
{
...
...
dsk-operate-ui/src/views/detail/party-a/component/HeadFormNew.vue
View file @
7c7b08c0
<
template
>
<div
class=
"head-form-new"
>
<div
class=
"head-form-new"
:class=
"headerFixed ? 'headerFixed':''"
>
<div
class=
"common-title"
v-if=
"title"
>
{{
title
}}
</div>
<div
class=
"flex-box query-box"
>
<div
class=
"flex-box query-params"
>
...
...
@@ -109,6 +109,10 @@ export default {
type
:
Number
,
default
:
0
},
headerFixed
:
{
type
:
Boolean
,
default
:
false
},
isExcel
:
{
type
:
Boolean
,
default
:
false
...
...
@@ -280,10 +284,17 @@ export default {
::v-deep
.el-popper
[
x-placement
^=
"bottom"
]
{
margin-top
:
5px
;
}
.headerFixed
{
position
:
sticky
;
top
:
0
;
z-index
:
10
;
padding-top
:
16px
;
margin-top
:
-16px
;
background
:
#fff
;
}
.head-form-new
{
display
:
flex
;
flex-direction
:
column
;
margin-bottom
:
14px
;
.common-title
{
margin-bottom
:
8px
;
}
...
...
@@ -432,7 +443,7 @@ export default {
::v-deep
.el-select__tags
{
.el-tag
{
&
:first-child
{
/
/width: 100%;
/
*width: 100%;*/
}
}
}
...
...
dsk-operate-ui/src/views/detail/party-a/component/Sidebar.vue
View file @
7c7b08c0
<
template
>
<div
id=
"detailPart"
class=
"sides-container"
:style=
"sideHeight?'height:'+sideHeight+'px':''"
>
<div
id=
"detailPart"
class=
"sides-container"
>
<el-input
placeholder=
"搜索"
class=
"side-input"
v-model=
"searchText"
clearable
@
input=
"handleSearch(true)"
@
keyup
.
enter
.
native=
"handleSearch()"
>
<i
slot=
"prefix"
class=
"el-input__icon el-icon-search"
@
click=
"handleSearch()"
></i>
</el-input>
...
...
@@ -354,7 +354,7 @@ export default {
methods
:
{
financial
(
id
)
{
financial
({
cid
:
String
(
id
)
}).
then
(
res
=>
{
if
(
res
.
code
==
200
&&
!
res
.
data
)
{
if
(
(
res
.
code
==
200
&&
!
res
.
data
)
||
!
res
.
data
?.
totalAssets
)
{
this
.
sideRoute
[
1
].
disabled
=
true
;
this
.
defaultRoute
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
sideRoute
));
}
...
...
dsk-operate-ui/src/views/detail/party-a/component/Tables.vue
View file @
7c7b08c0
<
template
>
<div
class=
"Tables"
>
<div
class=
"table-item"
>
<el-table
v-if=
"tableDataTotal>0"
class=
"fixed-table"
<el-table
v-if=
"tableDataTotal>0"
class=
"fixed-table"
:class=
"headerFixed ? 'headerFixed':''"
v-loading=
"tableLoading"
:data=
"tableData"
element-loading-text=
"Loading"
ref=
"tableRef"
v-horizontal-scroll=
"'hover'"
border
fit
highlight-current-row
...
...
@@ -86,6 +87,10 @@ export default {
type
:
Boolean
,
default
:
true
},
headerFixed
:
{
type
:
Boolean
,
default
:
false
},
indexFixed
:
{
type
:
Boolean
,
default
:
false
...
...
@@ -172,71 +177,86 @@ export default {
</
script
>
<
style
lang=
"scss"
scoped
>
::v-deep
.el-table__body
tr
.current-row
>
td
.el-table__cell
{
background-color
:
#ffffff
;
}
/*::v-deep .el-table__fixed{
height: calc(100% - 16px) !important;
}*/
.Tables
{
::v-deep
.el-table__body
tr
.current-row
>
td
.el-table__cell
{
background-color
:
#ffffff
;
}
/*::v-deep .el-table__fixed{
height: calc(100% - 16px) !important;
}*/
::v-deep
.el-table__row
{
&
:nth-child
(
even
)
{
background-color
:
#F9FCFF
;
.more
{
background
:
#F8FBFF
;
span
{
color
:
#0081FF
;
::v-deep
.el-table__row
{
&
:nth-child
(
even
)
{
background-color
:
#F9FCFF
;
.more
{
background
:
#F8FBFF
;
span
{
color
:
#0081FF
;
}
}
}
&
:nth-child
(
odd
)
{
.more
{
span
{
color
:
#0081FF
;
}
}
}
}
}
&
:nth-child
(
odd
)
{
.more
{
span
{
color
:
#0081FF
;
.table-item
{
::v-deep
.el-table
td
.el-table__cell
{
border-bottom
:
0
;
}
}
::v-deep
.el-table
th
.el-table__cell.is-leaf
,
::v-deep
.el-table
td
.el-table__cell
{
border-bottom
:
1px
solid
#E6EAF1
;
}
::v-deep
.el-table--border
.el-table__cell
{
border-right
:
1px
solid
#E6EAF1
;
}
::v-deep
.el-table__body
tr
.hover-row.current-row
>
td
,
::v-deep
.el-table__body
tr
.hover-row.el-table__row--striped.current-row
>
td
,
::v-deep
.el-table__body
tr
.hover-row.el-table__row--striped
>
td
,
::v-deep
.el-table__body
tr
.hover-row
>
td
{
background-color
:
#DCEBFF
!
important
;
.more
{
background
:
#DCEBFF
;
}
}
}
}
.table-item
{
::v-deep
.el-table
td
.el-table__cell
{
border-bottom
:
0
;
}
}
::v-deep
.el-table
th
.el-table__cell.is-leaf
,
::v-deep
.el-table
td
.el-table__cell
{
border-bottom
:
1px
solid
#E6EAF1
;
}
::v-deep
.el-table--border
.el-table__cell
{
border-right
:
1px
solid
#E6EAF1
;
}
::v-deep
.el-table__body
tr
.hover-row.current-row
>
td
,
::v-deep
.el-table__body
tr
.hover-row.el-table__row--striped.current-row
>
td
,
::v-deep
.el-table__body
tr
.hover-row.el-table__row--striped
>
td
,
::v-deep
.el-table__body
tr
.hover-row
>
td
{
background-color
:
#DCEBFF
!
important
;
.more
{
background
:
#DCEBFF
;
}
}
::v-deep
.el-table--enable-row-hover
.el-table__body
tr
:hover
>
td
{
background-color
:
#DCEBFF
;
}
::v-deep
.fixed-table
{
overflow
:
visible
;
}
::v-deep
.el-table__header-wrapper
{
position
:
sticky
;
top
:
0
;
z-index
:
9
;
}
::v-deep
.el-table__fixed-header-wrapper
{
position
:
sticky
;
z-index
:
9
;
top
:
0
;
}
.headerFixed
{
::v-deep
.el-table__header-wrapper
{
position
:
sticky
;
top
:
80px
;
z-index
:
9
;
}
::v-deep
.el-table__fixed-header-wrapper
{
position
:
sticky
;
z-index
:
9
;
top
:
80px
;
}
}
::v-deep
.el-table__fixed
{
overflow-x
:
clip
;
overflow-y
:
clip
;
}
::v-deep
.el-table--enable-row-hover
.el-table__body
tr
:hover
>
td
{
background-color
:
#DCEBFF
;
}
::v-deep
.fixed-table
{
overflow
:
visible
;
}
::v-deep
.el-table__header-wrapper
{
position
:
sticky
;
top
:
56px
;
z-index
:
9
;
}
::v-deep
.el-table__fixed-header-wrapper
{
position
:
sticky
;
z-index
:
9
;
top
:
56px
;
}
::v-deep
.el-table__fixed
{
overflow-x
:
clip
;
overflow-y
:
clip
;
}
}
</
style
>
dsk-operate-ui/src/views/detail/party-a/index.vue
View file @
7c7b08c0
...
...
@@ -383,15 +383,31 @@ export default {
}
.part-main
{
margin-top
:
12px
;
width
:
100%
;
height
:
calc
(
100vh
-
155px
);
overflow-y
:
auto
;
align-items
:
initial
;
}
.part-left
{
margin-right
:
16px
;
padding-bottom
:
16px
;
position
:
fixed
;
background
:
#FFFFFF
;
width
:
144px
;
}
.part-right
{
min-width
:
1088px
;
width
:
100%
;
background
:
#
ffffff
;
background
:
#
FFFFFF
;
border-radius
:
4px
;
margin-left
:
160px
;
::v-deep
.el-table__header-wrapper
{
position
:
sticky
;
top
:
0
;
z-index
:
9
;
}
#groupBox
{
height
:
100%
;
}
}
</
style
>
dsk-operate-ui/src/views/detail/party-a/overview/businfo.vue
View file @
7c7b08c0
...
...
@@ -6,7 +6,6 @@
<el-tab-pane
label=
"工商变更"
:disabled=
"tableDataTotal==0"
name=
"second"
></el-tab-pane>
</el-tabs>
<info-table
class=
"info-tab"
:list=
"defaultList"
:obj=
"forInfo"
:labelWidth=
"labelWidth"
v-if=
"activeName=='first'"
>
<template
slot=
"provinceCode"
slot-scope=
"scope"
>
<span>
{{
showRegion
(
scope
.
data
.
provinceCode
)
}}
</span>
...
...
@@ -19,7 +18,7 @@
</
template
>
<
template
slot=
"actualCapi"
slot-scope=
"scope"
>
<span>
{{
scope
.
data
.
actualCapi
?
scope
.
data
.
actualCapi
+
'万元人民币'
:
'--'
}}
{{
scope
.
data
.
actualCapi
?
`${scope.data.actualCapi
}
${scope.data.actualCapiUnit
}
`
:
'--'
}}
<
/span
>
<
/template
>
<
template
slot
=
"colleguesNum"
slot
-
scope
=
"scope"
>
...
...
@@ -28,23 +27,16 @@
<
/span
>
<
/template
>
<
/info-table
>
<tables
:tableLoading=
"tableLoading"
:tableData=
"tableData"
:tableDataTotal=
"tableDataTotal"
:forData=
"forData"
@
handle-current-change=
"handleCurrentChange"
:queryParams=
"queryParams"
v-if=
"activeName=='second'"
/>
<
tables
:
tableLoading
=
"tableLoading"
:
tableData
=
"tableData"
:
tableDataTotal
=
"tableDataTotal"
:
forData
=
"forData"
@
handle
-
current
-
change
=
"handleCurrentChange"
:
queryParams
=
"queryParams"
v
-
if
=
"activeName=='second'"
/>
<
/div
>
<
/template
>
<
script
>
import
mixin
from
'../mixins/mixin'
import
dataRegion
from
'@/assets/json/dataRegion'
import
InfoTable
from
'../component/infoTable'
import
{
icInfo
,
changeInfo
}
from
"@/api/detail/party-a/overview"
import
mixin
from
'../mixins/mixin'
;
import
dataRegion
from
'@/assets/json/dataRegion'
;
import
InfoTable
from
'../component/infoTable'
;
import
{
icInfo
,
changeInfo
}
from
"@/api/detail/party-a/overview"
;
export
default
{
name
:
'Businfo'
,
props
:
[
'companyId'
],
...
...
@@ -87,63 +79,63 @@ export default {
{
name
:
'经营范围'
,
prop
:
'scope'
,
style
:
true
}
],
forData
:
[
{
label
:
'变更日期'
,
prop
:
'changeDate'
,
width
:
'100'
},
{
label
:
'变更事项'
,
prop
:
'type'
},
{
label
:
'变更前'
,
prop
:
'beforeContent'
},
{
label
:
'变更后'
,
prop
:
'afterContent'
}
{
label
:
'变更日期'
,
prop
:
'changeDate'
,
width
:
'100'
}
,
{
label
:
'变更事项'
,
prop
:
'type'
}
,
{
label
:
'变更前'
,
prop
:
'beforeContent'
}
,
{
label
:
'变更后'
,
prop
:
'afterContent'
}
],
//列表
tableLoading
:
false
,
tableData
:[],
tableDataTotal
:
0
}
tableLoading
:
false
,
tableData
:
[],
tableDataTotal
:
0
}
;
}
,
created
()
{
this
.
handleQuery
();
this
.
handleQuery1
();
}
,
methods
:
{
handleClick
(){
if
(
this
.
activeName
==
'first'
)
{
this
.
handleQuery
()
}
else
{
this
.
handleQuery1
()
handleClick
()
{
if
(
this
.
activeName
==
'first'
)
{
this
.
handleQuery
()
;
}
else
{
this
.
handleQuery1
()
;
}
}
,
async
handleQuery
(
params
,
flag
)
{
if
(
flag
)
{
return
this
.
handleQuery1
(
params
)
async
handleQuery
(
params
,
flag
)
{
if
(
flag
)
{
return
this
.
handleQuery1
(
params
)
;
}
this
.
isSkeleton
=
true
;
this
.
tableLoading
=
true
this
.
tableLoading
=
true
;
let
param
=
this
.
baseParams
;
let
res
=
await
icInfo
(
param
);
this
.
tableLoading
=
false
if
(
res
.
code
==
200
)
{
this
.
tableLoading
=
false
;
if
(
res
.
code
==
200
)
{
this
.
isSkeleton
=
false
;
this
.
forInfo
=
res
.
data
this
.
forInfo
=
res
.
data
;
}
}
,
async
handleQuery1
(
params
)
{
let
param
=
params
?
params
:
this
.
queryParams
let
res
=
await
changeInfo
(
param
)
if
(
res
.
code
==
200
)
{
let
param
=
params
?
params
:
this
.
queryParams
;
let
res
=
await
changeInfo
(
param
)
;
if
(
res
.
code
==
200
)
{
this
.
tableData
=
res
.
rows
;
this
.
tableDataTotal
=
res
.
total
this
.
tableDataTotal
=
res
.
total
;
}
}
,
showRegion
(
region
){
if
(
region
)
{
let
list
=
dataRegion
let
areaText
=
''
showRegion
(
region
)
{
if
(
region
)
{
let
list
=
dataRegion
;
let
areaText
=
''
;
list
.
forEach
(
item
=>
{
if
(
item
.
id
==
region
)
{
areaText
=
item
.
regionName
if
(
item
.
id
==
region
)
{
areaText
=
item
.
regionName
;
}
})
return
areaText
}
else
{
return
'--'
}
)
;
return
areaText
;
}
else
{
return
'--'
;
}
}
}
...
...
@@ -151,22 +143,22 @@ export default {
<
/script
>
<
style
lang
=
"scss"
scoped
>
.detail-container
{
.
detail
-
container
{
margin
:
0
;
padding
:
16
px
;
background
:
#
FFFFFF
;
background
:
#
ffffff
;
border
-
radius
:
4
px
;
.detail-tab
{
.
detail
-
tab
{
margin
:
0
0
0
-
16
px
;
::v-deep
.el-tabs__nav-wrap
::after
{
::
v
-
deep
.
el
-
tabs__nav
-
wrap
::
after
{
display
:
none
;
}
::v-deep
.el-tabs__item
{
::
v
-
deep
.
el
-
tabs__item
{
font
-
size
:
16
px
;
height
:
30
px
;
line
-
height
:
30
px
;
padding
:
0
16
px
;
&
.is-active
{
&
.
is
-
active
{
font
-
weight
:
bold
;
}
}
...
...
dsk-operate-ui/src/views/detail/party-a/overview/component/bidding.vue
View file @
7c7b08c0
...
...
@@ -42,7 +42,7 @@
<no-data
/>
</div>
</
template
>
</div>
<div
class=
"bid-ywwl"
>
<div
class=
"common-title"
>
业务往来供应商TOP5
</div>
...
...
@@ -69,15 +69,15 @@
</
template
>
</el-table-column>
<el-table-column
width=
"1
6
0"
width=
"1
4
0"
align=
"right"
label=
"合作次数"
>
<
template
slot-scope=
"scope"
>
<span
style=
"padding-right: 86px;"
>
{{
scope
.
row
.
count
}}
</span>
<span>
{{
scope
.
row
.
count
}}
</span>
</
template
>
</el-table-column>
<el-table-column
width=
"1
6
0"
width=
"1
8
0"
align=
"right"
label=
"合作总金额(万元)"
>
<
template
slot-scope=
"scope"
>
...
...
@@ -337,5 +337,5 @@ export default {
::deep
.el-table
::before
{
display
:
none
;
}
</
style
>
dsk-operate-ui/src/views/detail/party-a/overview/holderinfo.vue
View file @
7c7b08c0
...
...
@@ -116,7 +116,7 @@ export default {
background
:
#FFFFFF
;
border-radius
:
4px
;
.detail-tab
{
margin
:
-
3
4px
0
0
-16px
;
margin
:
-
1
4px
0
0
-16px
;
::v-deep
.el-tabs__nav-wrap
::after
{
display
:
none
;
}
...
...
dsk-operate-ui/src/views/detail/party-a/urbanLnvestment/regionalEconomies.vue
View file @
7c7b08c0
...
...
@@ -327,7 +327,7 @@ export default {
.head-form-new
{
.common-title
{
margin
-bottom
:
8px
;
padding
-bottom
:
8px
;
}
.query-box
{
margin
:
0px
;
...
...
dsk-operate-ui/src/views/detail/party-b/index.vue
View file @
7c7b08c0
...
...
@@ -59,16 +59,16 @@
if
(
this
.
$route
.
name
==
'Company'
){
//企业详情
if
(
this
.
$route
.
query
.
html
){
if
(
this
.
$route
.
query
.
type
){
this
.
src
=
`
${
this
.
domain
}
/enterprise/
${
this
.
$route
.
params
.
id
}
/
${
this
.
$route
.
query
.
html
}
?flag=true&type=
${
this
.
$route
.
query
.
type
}
&ak=
${
this
.
ak
}
&initTime=
${
new
Date
().
getTime
()}
&uid=
${
this
.
ak
}
`
this
.
src
=
`
${
this
.
domain
}
/enterprise/
${
this
.
$route
.
params
.
id
}
/
${
this
.
$route
.
query
.
html
}
?flag=true&type=
${
this
.
$route
.
query
.
type
}
&ak=
${
this
.
ak
}
&initTime=
${
new
Date
().
getTime
()}
&uid=
${
this
.
ak
}
&origin=
${
window
.
location
.
origin
}
`
}
else
{
this
.
src
=
`
${
this
.
domain
}
/enterprise/
${
this
.
$route
.
params
.
id
}
/
${
this
.
$route
.
query
.
html
}
?ak=
${
this
.
ak
}
&initTime=
${
new
Date
().
getTime
()}
&uid=
${
this
.
ak
}
`
this
.
src
=
`
${
this
.
domain
}
/enterprise/
${
this
.
$route
.
params
.
id
}
/
${
this
.
$route
.
query
.
html
}
?ak=
${
this
.
ak
}
&initTime=
${
new
Date
().
getTime
()}
&uid=
${
this
.
ak
}
&origin=
${
window
.
location
.
origin
}
`
}
}
else
{
this
.
src
=
`
${
this
.
domain
}
/enterprise/
${
this
.
$route
.
params
.
id
}
?ak=
${
this
.
ak
}
&initTime=
${
new
Date
().
getTime
()}
&uid=
${
this
.
ak
}
`
this
.
src
=
`
${
this
.
domain
}
/enterprise/
${
this
.
$route
.
params
.
id
}
?ak=
${
this
.
ak
}
&initTime=
${
new
Date
().
getTime
()}
&uid=
${
this
.
ak
}
&origin=
${
window
.
location
.
origin
}
`
}
}
if
(
this
.
$route
.
name
==
'Personnel'
){
//人员详情
this
.
src
=
`
${
this
.
domain
}
/personnel/
${
this
.
$route
.
params
.
id
}
.html?ak=
${
this
.
ak
}
&initTime=
${
new
Date
().
getTime
()}
&uid=
${
this
.
ak
}
`
this
.
src
=
`
${
this
.
domain
}
/personnel/
${
this
.
$route
.
params
.
id
}
.html?ak=
${
this
.
ak
}
&initTime=
${
new
Date
().
getTime
()}
&uid=
${
this
.
ak
}
&origin=
${
window
.
location
.
origin
}
`
}
}
this
.
refreshtoken
()
...
...
dsk-operate-ui/src/views/enterpriseData/components/searchTheOwner/index.vue
View file @
7c7b08c0
...
...
@@ -114,19 +114,19 @@
<div
class=
"table-item-jf table-item"
v-if=
"!isSkeleton&&tableData.length>0"
>
<el-table
:data=
"tableData"
:header-cell-style=
"{ background:'#f0f3fa',color: 'rgba(35,35,35,0.8)'}"
v-horizontal-scroll=
"'hover'"
class=
"table-item1 fixed-table"
border
highlight-current-row
:header-row-class-name=
"setHeaderRow"
:cell-class-name=
"setCellClass"
:row-class-name=
"setRowClass"
:header-cell-class-name=
"setCellClass"
@
sort-change=
"sortChange"
>
:row-class-name=
"setRowClass"
:header-cell-class-name=
"setCellClass"
@
sort-change=
"sortChange"
ref=
"theOwnerListTable"
>
<el-table-column
type=
"index"
label=
"序号"
fixed
width=
"60"
:resizable=
"false"
>
<el-table-column
type=
"index"
label=
"序号"
:fixed=
"tableColumnFixed"
width=
"60"
:resizable=
"false"
>
<
template
slot-scope=
"scope"
>
<span>
{{
(
pageNum
-
1
)
*
pageSize
+
scope
.
$index
+
1
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"公司名称"
fixed
width=
"380"
:resizable=
"false"
>
<el-table-column
label=
"公司名称"
:fixed=
"tableColumnFixed"
width=
"380"
:resizable=
"false"
>
<
template
slot-scope=
"scope"
>
<div
class=
"renling"
>
<div
style=
"display:flex;align-items:center"
>
<router-link
:to=
"scope.row.other ? `/enterprise/$
{encodeStr(scope.row.id)}` : `/
company
/${encodeStr(scope.row.id)}`" tag="a"
<router-link
:to=
"scope.row.other ? `/enterprise/$
{encodeStr(scope.row.id)}` : `/
enterprise
/${encodeStr(scope.row.id)}`" tag="a"
class="list-titel-a" v-html="scope.row.name">
</router-link>
<!-- 优质甲方tag标签 -->
<div
class=
"high-quality-enterprise"
v-if=
"scope.row.other"
>
{{
scope
.
row
.
other
}}
</div>
...
...
@@ -172,7 +172,7 @@
<
el
-
table
-
column
label
=
"历史发包数量"
min
-
width
=
"107"
:
resizable
=
"false"
:
sortable
=
"'custom'"
prop
=
"inviteTenderCount"
>
<
template
slot
-
scope
=
"scope"
>
<
router
-
link
v
-
if
=
"scope.row.inviteTenderCount"
:
to
=
"scope.row.other ? `/enterprise/${encodeStr(scope.row.id)
}
?path=hiscontract` : `/
company
/${encodeStr(scope.row.id)
}
?path=hiscontract`"
:
to
=
"scope.row.other ? `/enterprise/${encodeStr(scope.row.id)
}
?path=hiscontract` : `/
enterprise
/${encodeStr(scope.row.id)
}
?path=hiscontract`"
tag
=
"a"
class
=
"list-titel-a"
>
{{
scope
.
row
.
inviteTenderCount
?
`${scope.row.inviteTenderCount
}
个`
:
"--"
}}
<
/router-link
>
<
span
v
-
else
>--<
/span
>
<
/template
>
...
...
@@ -180,7 +180,7 @@
<
el
-
table
-
column
label
=
"历史发包总金额"
min
-
width
=
"120"
:
resizable
=
"false"
:
sortable
=
"'custom'"
prop
=
"inviteTenderSumAmount"
>
<
template
slot
-
scope
=
"scope"
>
<
div
style
=
"text-align:right;white-space: nowrap;"
>
{{
scope
.
row
.
inviteTenderSumAmount
?
`${scope.row.inviteTenderSumAmount
}
万元`
:
"--"
}}
<
div
style
=
"text-align:right;white-space: nowrap;"
>
{{
parseFloat
(
scope
.
row
.
inviteTenderSumAmount
)
?
`${scope.row.inviteTenderSumAmount
}
万元`
:
"--"
}}
<
/div
>
<
/template
>
<
/el-table-column
>
...
...
@@ -188,7 +188,7 @@
<
el
-
table
-
column
label
=
"最近一次招标"
min
-
width
=
"107"
:
resizable
=
"false"
:
sortable
=
"'custom'"
prop
=
"inviteTenderLastTime"
>
<
template
slot
-
scope
=
"scope"
>
<
router
-
link
v
-
if
=
"scope.row.inviteTenderLastTime"
:
to
=
"scope.row.other ? `/enterprise/${encodeStr(scope.row.id)
}
?path=announcement` : `/
company
/${encodeStr(scope.row.id)
}
?path=announcement`"
:
to
=
"scope.row.other ? `/enterprise/${encodeStr(scope.row.id)
}
?path=announcement` : `/
enterprise
/${encodeStr(scope.row.id)
}
?path=announcement`"
tag
=
"a"
class
=
"list-titel-a"
>
{{
scope
.
row
.
inviteTenderLastTime
||
"--"
}}
<
/router-link
>
<
span
v
-
else
>--<
/span
>
<
/template
>
...
...
@@ -197,7 +197,7 @@
<
el
-
table
-
column
label
=
"重点项目"
min
-
width
=
"107"
:
resizable
=
"false"
:
sortable
=
"'custom'"
prop
=
"importantProjectCount"
>
<
template
slot
-
scope
=
"scope"
>
<
router
-
link
v
-
if
=
"scope.row.importantProjectCount"
:
to
=
"scope.row.other ? `/enterprise/${encodeStr(scope.row.id)
}
?path=majorProject` : `/
company
/${encodeStr(scope.row.id)
}
?path=majorProject`"
:
to
=
"scope.row.other ? `/enterprise/${encodeStr(scope.row.id)
}
?path=majorProject` : `/
enterprise
/${encodeStr(scope.row.id)
}
?path=majorProject`"
tag
=
"a"
class
=
"list-titel-a"
>
{{
`${scope.row.importantProjectCount
}
个`
}}
<
/router-link
>
<
span
v
-
else
>--<
/span
>
<
/template
>
...
...
@@ -206,7 +206,7 @@
<!--
<
el
-
table
-
column
label
=
"土地交易"
width
=
"107"
:
resizable
=
"false"
:
sortable
=
"'custom'"
prop
=
"landMarketCount"
>
<
template
slot
-
scope
=
"scope"
>
<
router
-
link
v
-
if
=
"scope.row.landMarketCount"
:
to
=
"scope.row.other ? `/enterprise/${encodeStr(scope.row.id)
}
?path=landtransaction` : `/
company
/${encodeStr(scope.row.id)
}
?path=landtransaction`"
:
to
=
"scope.row.other ? `/enterprise/${encodeStr(scope.row.id)
}
?path=landtransaction` : `/
enterprise
/${encodeStr(scope.row.id)
}
?path=landtransaction`"
tag
=
"a"
class
=
"list-titel-a"
>
{{
`${scope.row.landMarketCount
}
个`
}}
<
/router-link
>
<
span
v
-
else
>--<
/span
>
<
/template
>
...
...
@@ -215,7 +215,7 @@
<
el
-
table
-
column
label
=
"拟建项目"
min
-
width
=
"107"
:
resizable
=
"false"
:
sortable
=
"'custom'"
prop
=
"approvalProjectCount"
>
<
template
slot
-
scope
=
"scope"
>
<
router
-
link
v
-
if
=
"scope.row.approvalProjectCount"
:
to
=
"scope.row.other ? `/enterprise/${encodeStr(scope.row.id)
}
?path=proposed` : `/
company
/${encodeStr(scope.row.id)
}
?path=proposed`"
:
to
=
"scope.row.other ? `/enterprise/${encodeStr(scope.row.id)
}
?path=proposed` : `/
enterprise
/${encodeStr(scope.row.id)
}
?path=proposed`"
tag
=
"a"
class
=
"list-titel-a"
>
{{
`${scope.row.approvalProjectCount
}
个`
}}
<
/router-link
>
<
span
v
-
else
>--<
/span
>
<
/template
>
...
...
@@ -224,7 +224,7 @@
<
el
-
table
-
column
label
=
"招标计划"
min
-
width
=
"107"
:
resizable
=
"false"
:
sortable
=
"'custom'"
prop
=
"bidPlanCount"
>
<
template
slot
-
scope
=
"scope"
>
<
router
-
link
v
-
if
=
"scope.row.bidPlanCount"
:
to
=
"scope.row.other ? `/enterprise/${encodeStr(scope.row.id)
}
?path=biddingplan` : `/
company
/${encodeStr(scope.row.id)
}
?path=biddingplan`"
:
to
=
"scope.row.other ? `/enterprise/${encodeStr(scope.row.id)
}
?path=biddingplan` : `/
enterprise
/${encodeStr(scope.row.id)
}
?path=biddingplan`"
tag
=
"a"
class
=
"list-titel-a"
>
{{
`${scope.row.bidPlanCount
}
个`
}}
<
/router-link
>
<
span
v
-
else
>--<
/span
>
<
/template
>
...
...
@@ -233,7 +233,7 @@
<
el
-
table
-
column
label
=
"招标公告"
min
-
width
=
"107"
:
resizable
=
"false"
:
sortable
=
"'custom'"
prop
=
"jskBidCount"
>
<
template
slot
-
scope
=
"scope"
>
<
router
-
link
v
-
if
=
"scope.row.jskBidCount"
:
to
=
"scope.row.other ? `/enterprise/${encodeStr(scope.row.id)
}
?path=announcement` : `/
company
/${encodeStr(scope.row.id)
}
?path=announcement`"
:
to
=
"scope.row.other ? `/enterprise/${encodeStr(scope.row.id)
}
?path=announcement` : `/
enterprise
/${encodeStr(scope.row.id)
}
?path=announcement`"
tag
=
"a"
class
=
"list-titel-a"
>
{{
`${scope.row.jskBidCount
}
个`
}}
<
/router-link
>
<
span
v
-
else
>--<
/span
>
<
/template
>
...
...
@@ -320,6 +320,8 @@ export default {
sort
:
''
,
//查询结果排序方式
// 展示认领状态
showClaim
:
false
,
// table列是否悬浮
tableColumnFixed
:
false
,
// 默认排序方式
order
:
"desc"
,
fieldOptions
:
[{
...
...
@@ -358,7 +360,8 @@ export default {
total
:
0
,
oldPageNum
:
1
,
pageNum
:
1
,
pageSize
:
20
pageSize
:
20
,
tableScrollLeftMemory
:
0
,
}
;
}
,
watch
:
{
...
...
@@ -399,6 +402,12 @@ export default {
created
()
{
this
.
init
();
}
,
beforeDestroy
()
{
const
table
=
this
.
$refs
[
"theOwnerListTable"
]?.
bodyWrapper
;
if
(
table
)
{
table
.
removeEventListener
(
"scroll"
,
this
.
tableScroll
,
{
capture
:
false
,
passive
:
true
}
);
}
}
,
methods
:
{
// 生成查询条件
createSearchConditions
()
{
...
...
@@ -476,7 +485,8 @@ export default {
const
result
=
await
api
.
searchOwnerUnitListApi
(
params
);
if
(
result
.
code
==
200
)
{
this
.
tableData
=
result
.
data
?.
list
?
result
.
data
.
list
:
[];
this
.
total
=
res
.
data
?.
total
?
res
.
data
?.
total
:
0
;
this
.
total
=
result
.
data
?.
total
?
result
.
data
?.
total
:
0
;
this
.
addScrollXListener
();
}
}
catch
(
error
)
{
console
.
log
(
error
);
...
...
@@ -495,6 +505,41 @@ export default {
}
}
,
async
addScrollXListener
()
{
try
{
await
this
.
$nextTick
();
const
table
=
this
.
$refs
[
"theOwnerListTable"
]?.
bodyWrapper
;
if
(
table
)
{
table
.
removeEventListener
(
"scroll"
,
this
.
tableScroll
,
{
capture
:
false
,
passive
:
true
}
);
table
.
addEventListener
(
"scroll"
,
this
.
tableScroll
,
{
capture
:
false
,
passive
:
true
}
);
}
}
catch
(
error
)
{
console
.
log
(
error
);
}
}
,
tableScroll
(
event
)
{
const
{
target
}
=
event
;
if
(
target
)
{
// 滚动条记忆功能
this
.
tableScrollLeftMemory
=
target
.
scrollLeft
;
target
.
scrollLeft
>
0
?
this
.
tableColumnFixed
=
true
:
this
.
tableColumnFixed
=
false
;
}
}
,
async
setScrollX
()
{
try
{
await
this
.
$nextTick
();
const
table
=
this
.
$refs
[
"theOwnerListTable"
]?.
bodyWrapper
;
const
left
=
this
.
tableScrollLeftMemory
;
if
(
table
)
{
table
.
scrollTo
({
left
,
behavior
:
"smooth"
}
);
}
}
catch
(
error
)
{
console
.
log
(
error
);
}
}
,
headerMouseover
(
e
)
{
const
{
target
}
=
e
;
if
(
target
.
classList
.
contains
(
"enterprise-name-column"
))
return
this
.
showClaim
=
true
;
...
...
@@ -620,7 +665,7 @@ export default {
this
.
checkOwnerLabel
=
true
;
this
.
currentOwnerLabels
=
[];
}
if
(
val
.
length
>=
2
)
{
if
(
val
.
length
<
2
)
{
this
.
tagCodeQueryType
=
"or"
;
}
this
.
search
();
...
...
@@ -743,11 +788,14 @@ export default {
const
params
=
this
.
createSearchConditions
();
this
.
isSkeleton
=
true
;
api
.
searchOwnerUnitListApi
(
params
).
then
(
res
=>
{
api
.
searchOwnerUnitListApi
(
params
).
then
(
async
res
=>
{
if
(
res
.
code
==
200
)
{
this
.
isSkeleton
=
false
;
this
.
tableData
=
res
.
data
?.
list
?
res
.
data
.
list
:
[];
this
.
total
=
res
.
data
?.
total
?
res
.
data
?.
total
:
0
;
this
.
addScrollXListener
();
// 滚动条记忆
this
.
setScrollX
();
}
}
).
catch
(
error
=>
{
}
);
...
...
@@ -868,6 +916,14 @@ export default {
}
}
}
.
checkbox
{
.
checkbox
-
content
{
.
el
-
checkbox
{
margin
-
bottom
:
15
px
;
}
}
}
}
::
v
-
deep
.
dialog
-
renlin
{
margin
-
top
:
40
vh
!
important
;
...
...
@@ -1150,6 +1206,7 @@ export default {
align
-
items
:
center
;
cursor
:
pointer
;
opacity
:
0
;
visibility
:
hidden
;
transition
:
opacity
0.3
s
;
white
-
space
:
nowrap
;
.
renling
-
img
-
true
{
...
...
@@ -1208,10 +1265,12 @@ export default {
}
.
enterprise
-
name
-
row
{
&
:
hover
,
&
.
hover
-
row
{
.
cell
{
.
renling
-
btn
{
opacity
:
1
;
visibility
:
visible
;
}
}
}
...
...
dsk-operate-ui/src/views/index.vue
View file @
7c7b08c0
...
...
@@ -30,12 +30,12 @@
<div
class=
"search"
>
<el-form
ref=
"queryForm"
:model=
"queryParams"
:inline=
"true"
size=
"small"
>
<el-form-item
prop=
"address"
>
<el-select
v-model=
"queryParams.address"
@
change=
"changeSelect1"
clearable
placeholder=
"项目地区"
style=
"width: 120px;
"
>
<el-select
v-model=
"queryParams.address"
:class=
"[`select-adaptive-$
{inputID1}`]" @change="iptAdaptive(inputID1,'','changeSelect1')" clearable placeholder="项目地区
">
<el-option
v-for=
"(item,index) in addressList"
:key=
"index"
:label=
"item.label"
:value=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
prop=
"type"
>
<el-select
v-model=
"queryParams.type"
@
change=
"
changeSelect1"
multiple
collapse-tags
clearable
placeholder=
"项目类型"
:class=
"queryParams.type.length > 1 ? 'selectTag' : ''"
style=
"width: 140px;
"
>
<el-select
v-model=
"queryParams.type"
@
change=
"
iptAdaptive(inputID2,true,'changeSelect1')"
:class=
"[`select-adaptive-$
{inputID2}`,queryParams.type.length > 1 ? 'selectTag' : '']" multiple collapse-tags clearable placeholder="项目类型
">
<el-option
v-for=
"(item,index) in projectType"
:key=
"index"
:label=
"item"
:value=
"item"
></el-option>
</el-select>
</el-form-item>
...
...
@@ -43,9 +43,10 @@
<custom-time-select
:timeList=
"timeList"
v-model=
"queryParams.time"
:class=
"[`select-adaptive-$
{inputID3}`]"
timeValue="近七天"
placeholder="中标日期"
@
handle-search=
"
changeSelect1
"
/>
@handle-search="
iptAdaptive(inputID3,'','changeSelect1')
"/>
</el-form-item>
</el-form>
</div>
...
...
@@ -103,16 +104,17 @@
<custom-money-select
:moneyList=
"moneyList"
v-model=
"queryParams1.money"
:class=
"[`select-adaptive-${inputID4}`]"
placeholder=
"中标金额"
@
handle-search=
"
changeSelect2
"
/>
@
handle-search=
"
iptAdaptive(inputID4,'','changeSelect2')
"
/>
</el-form-item>
<el-form-item
prop=
"address"
>
<el-select
v-model=
"queryParams1.address"
@
change=
"changeSelect2"
clearable
placeholder=
"项目地区"
style=
"width: 120px;
"
>
<el-select
v-model=
"queryParams1.address"
:class=
"[`select-adaptive-${inputID5}`]"
@
change=
"iptAdaptive(inputID5,true,'changeSelect2')"
clearable
placeholder=
"项目地区
"
>
<el-option
v-for=
"(item,index) in addressList"
:key=
"index"
:label=
"item.label"
:value=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
prop=
"type"
>
<el-select
v-model=
"queryParams1.type"
multiple
collapse-tags
@
change=
"
changeSelect2"
clearable
placeholder=
"项目类型"
:class=
"queryParams1.type.length > 1 ? 'selectTag' : ''"
style=
"width: 140px;
"
>
<el-select
v-model=
"queryParams1.type"
multiple
collapse-tags
@
change=
"
iptAdaptive(inputID6,'','changeSelect2')"
:class=
"[`select-adaptive-${inputID6}`,queryParams1.type.length > 1 ? 'selectTag' : '']"
clearable
placeholder=
"项目类型
"
>
<el-option
v-for=
"(item,index) in projectType"
:key=
"index"
:label=
"item"
:value=
"item"
></el-option>
</el-select>
</el-form-item>
...
...
@@ -120,9 +122,10 @@
<custom-time-select
:timeList=
"timeList"
v-model=
"queryParams1.time"
:class=
"[`select-adaptive-${inputID7}`]"
timeValue=
"近七天"
placeholder=
"中标日期"
@
handle-search=
"
changeSelect2
"
/>
@
handle-search=
"
iptAdaptive(inputID7,'','changeSelect2')
"
/>
</el-form-item>
</el-form>
</div>
...
...
@@ -239,17 +242,18 @@
<custom-money-select
:moneyList=
"moneyList"
v-model=
"amount"
:class=
"[`select-adaptive-${inputID8}`]"
moneyValue=
"2亿以上"
:placeholder=
"placeholder"
@
handle-search=
"
changeSelect3
"
/>
@
handle-search=
"
iptAdaptive(inputID8,'','changeSelect3')
"
/>
</el-form-item>
<el-form-item
prop=
"provinceId"
>
<el-select
v-model=
"queryParams2.provinceId"
@
change=
"changeSelect3"
clearable
placeholder=
"项目地区"
style=
"width: 120px;
"
>
<el-select
v-model=
"queryParams2.provinceId"
:class=
"[`select-adaptive-${inputID9}`]"
@
change=
"iptAdaptive(inputID9,'','changeSelect3')"
clearable
placeholder=
"项目地区
"
>
<el-option
v-for=
"(item,index) in addressList"
:key=
"index"
:label=
"item.label"
:value=
"item.id"
></el-option>
</el-select>
</el-form-item>
<el-form-item
prop=
"projects"
>
<el-select
v-model=
"queryParams2.projects"
@
change=
"
changeSelect3"
multiple
collapse-tags
clearable
placeholder=
"项目类型"
:class=
"queryParams2.projects.length > 1 ? 'selectTag' : ''"
style=
"width: 140px;
"
>
<el-select
v-model=
"queryParams2.projects"
@
change=
"
iptAdaptive(inputID10,'','changeSelect3')"
multiple
collapse-tags
clearable
placeholder=
"项目类型"
:class=
"[`select-adaptive-${inputID10}`,queryParams2.projects.length > 1 ? 'selectTag' : '']
"
>
<el-option
v-for=
"(item,index) in projectType"
:key=
"index"
:label=
"item"
:value=
"item"
></el-option>
</el-select>
</el-form-item>
...
...
@@ -257,9 +261,10 @@
<custom-time-select
:timeList=
"timeList"
v-model=
"queryParams2.time"
:class=
"[`select-adaptive-${inputID11}`]"
timeValue=
"近七天"
:placeholder=
"timePlaceholder"
@
handle-search=
"
changeSelect3
"
/>
@
handle-search=
"
iptAdaptive(inputID11,'','changeSelect3')
"
/>
</el-form-item>
</el-form>
</div>
...
...
@@ -474,6 +479,7 @@
import
{
countByCompany
,
bidRank
,
bigWinningBidsPage
,
bigBidPage
,
getInfo
}
from
'@/api/index'
import
{
getUipIdByCid
}
from
'@/api/macro/macro'
import
api
from
'@/api/radar/radar.js'
;
import
{
v4
}
from
"uuid"
;
export
default
{
name
:
"Index"
,
components
:
{
...
...
@@ -696,10 +702,22 @@ export default {
{
url
:
'/enterpriseData/Group'
,
name
:
'集团户'
,
imgUrl
:
require
(
'@/assets/images/index/icon4.png'
)},
{
url
:
'/enterpriseData/Owner'
,
name
:
'查城投平台'
,
imgUrl
:
require
(
'@/assets/images/index/icon5.png'
)},
{
url
:
'/radar'
,
name
:
'商机雷达'
,
imgUrl
:
require
(
'@/assets/images/index/icon6.png'
)},
]
],
inputID1
:
this
.
getUid
(),
inputID2
:
this
.
getUid
(),
inputID3
:
this
.
getUid
(),
inputID4
:
this
.
getUid
(),
inputID5
:
this
.
getUid
(),
inputID6
:
this
.
getUid
(),
inputID7
:
this
.
getUid
(),
inputID8
:
this
.
getUid
(),
inputID9
:
this
.
getUid
(),
inputID10
:
this
.
getUid
(),
inputID11
:
this
.
getUid
(),
};
},
created
()
{
this
.
getPlaceholder
();
this
.
searchDic
()
this
.
getInfo
()
this
.
dataRegion
()
...
...
@@ -952,7 +970,7 @@ export default {
yAxisIndex
:
1
,
tooltip
:
{
valueFormatter
:
function
(
value
)
{
return
value
+
'万元'
return
value
}
},
itemStyle
:
{
...
...
@@ -971,7 +989,7 @@ export default {
barWidth
:
20
,
tooltip
:
{
valueFormatter
:
function
(
value
)
{
return
value
+
'个'
;
return
value
;
}
},
itemStyle
:
{
...
...
@@ -1277,7 +1295,7 @@ export default {
yAxisIndex
:
1
,
tooltip
:
{
valueFormatter
:
function
(
value
)
{
return
value
+
'万元'
return
value
}
},
itemStyle
:
{
...
...
@@ -1296,7 +1314,7 @@ export default {
barWidth
:
20
,
tooltip
:
{
valueFormatter
:
function
(
value
)
{
return
value
+
'个'
;
return
value
;
}
},
itemStyle
:
{
...
...
@@ -1477,7 +1495,129 @@ export default {
default
:
break
;
}
}
},
handleSearch
(
name
){
if
(
name
===
'changeSelect1'
){
this
.
changeSelect1
()
}
if
(
name
===
'changeSelect2'
){
this
.
changeSelect2
()
}
if
(
name
===
'changeSelect3'
){
this
.
changeSelect3
()
}
},
async
getPlaceholder
()
{
try
{
await
this
.
$nextTick
();
const
doms
=
document
.
querySelectorAll
(
"[class*='select-adaptive-']"
);
if
(
doms
?.
length
)
{
doms
.
forEach
(
dom
=>
{
const
realStyles
=
window
.
getComputedStyle
(
dom
);
const
ipt
=
dom
.
querySelector
(
"input"
);
const
text
=
ipt
.
getAttribute
(
"placeholder"
);
const
textContainer
=
document
.
createElement
(
"span"
);
textContainer
.
style
.
setProperty
(
"visibility"
,
"hidden"
);
textContainer
.
style
.
setProperty
(
"display"
,
"inline-block"
);
textContainer
.
style
.
setProperty
(
"font-size"
,
"14px"
);
const
hasPadding
=
(
parseInt
(
realStyles
.
paddingLeft
)
||
parseInt
(
realStyles
.
paddingRight
))
?
true
:
false
;
hasPadding
?
textContainer
.
style
.
setProperty
(
"padding"
,
realStyles
.
paddingRight
)
:
null
;
textContainer
.
style
.
setProperty
(
"box-sizing"
,
"border-box"
);
textContainer
.
textContent
=
text
;
document
.
body
.
append
(
textContainer
);
// 加上按钮宽度 以及按钮左外边距
let
containerWidth
=
textContainer
.
offsetWidth
+
50
;
textContainer
.
remove
();
dom
.
style
.
setProperty
(
"width"
,
`
${
containerWidth
}
px`
);
});
}
}
catch
(
error
)
{
}
},
iptAdaptive
(
uid
,
multiple
=
false
,
name
)
{
multiple
?
this
.
multipleAdaptiveHandle
(
uid
,
name
)
:
this
.
iptAdaptiveHandle
(
uid
,
name
);
},
getUid
()
{
return
v4
();
},
// 多选处理
async
multipleAdaptiveHandle
(
uid
,
name
)
{
try
{
await
this
.
$nextTick
();
const
dom
=
document
.
querySelector
(
`.select-adaptive-
${
uid
}
`
);
const
iptChild
=
dom
.
querySelector
(
".el-input__inner"
);
if
(
dom
)
{
const
textContainer
=
document
.
createElement
(
"span"
);
const
textName
=
`text-
${
uid
}
`
;
textContainer
.
classList
.
add
(
textName
);
const
selectChildren
=
dom
.
querySelectorAll
(
".el-tag"
);
if
(
selectChildren
.
length
)
{
let
width
=
0
;
selectChildren
.
forEach
(
item
=>
{
const
text
=
item
.
textContent
;
const
itemInfo
=
window
.
getComputedStyle
(
item
);
textContainer
.
style
.
setProperty
(
"visibility"
,
"hidden"
);
textContainer
.
style
.
setProperty
(
"display"
,
"inline-block"
);
textContainer
.
style
.
setProperty
(
"font-size"
,
"14px"
);
textContainer
.
style
.
setProperty
(
"padding"
,
itemInfo
.
padding
);
textContainer
.
style
.
setProperty
(
"box-sizing"
,
"border-box"
);
textContainer
.
textContent
=
text
;
document
.
body
.
append
(
textContainer
);
width
+=
textContainer
.
offsetWidth
+
parseInt
(
itemInfo
.
marginLeft
)
+
parseInt
(
itemInfo
.
marginRight
);
textContainer
.
remove
();
});
dom
.
style
.
setProperty
(
"width"
,
`
${
width
+
50
}
px`
);
this
.
handleSearch
(
name
);
return
;
}
textContainer
.
style
.
setProperty
(
"visibility"
,
"hidden"
);
textContainer
.
style
.
setProperty
(
"display"
,
"inline-block"
);
textContainer
.
style
.
setProperty
(
"font-size"
,
"14px"
);
textContainer
.
style
.
setProperty
(
"padding"
,
"0px 8px"
);
textContainer
.
style
.
setProperty
(
"box-sizing"
,
"border-box"
);
textContainer
.
textContent
=
iptChild
.
getAttribute
(
"placeholder"
);
document
.
body
.
append
(
textContainer
);
let
containerWidth
=
textContainer
.
offsetWidth
+
12
+
8
;
// let containerWidth = 130;
textContainer
.
remove
();
dom
.
style
.
setProperty
(
"width"
,
`
${
containerWidth
}
px`
);
this
.
handleSearch
(
name
);
}
}
catch
(
error
)
{
console
.
log
(
error
);
}
},
// 单选处理
async
iptAdaptiveHandle
(
uid
,
name
)
{
try
{
await
this
.
$nextTick
();
const
dom
=
document
.
querySelector
(
`.select-adaptive-
${
uid
}
`
);
const
realStyles
=
window
.
getComputedStyle
(
dom
);
if
(
dom
)
{
const
iptChild
=
dom
.
querySelector
(
".el-input__inner"
);
const
textContainer
=
document
.
createElement
(
"span"
);
const
textName
=
`text-
${
uid
}
`
;
textContainer
.
classList
.
add
(
textName
);
textContainer
.
style
.
setProperty
(
"visibility"
,
"hidden"
);
textContainer
.
style
.
setProperty
(
"display"
,
"inline-block"
);
textContainer
.
style
.
setProperty
(
"font-size"
,
"14px"
);
const
hasPadding
=
(
parseInt
(
realStyles
.
paddingLeft
)
||
parseInt
(
realStyles
.
paddingRight
))
?
true
:
false
;
hasPadding
?
textContainer
.
style
.
setProperty
(
"padding"
,
"0px 8px"
)
:
null
;
textContainer
.
style
.
setProperty
(
"box-sizing"
,
"border-box"
);
textContainer
.
textContent
=
iptChild
.
value
?
iptChild
.
value
:
iptChild
.
getAttribute
(
"placeholder"
);
document
.
body
.
append
(
textContainer
);
let
containerWidth
=
textContainer
.
offsetWidth
+
50
;
textContainer
.
remove
();
dom
.
style
.
setProperty
(
"width"
,
`
${
containerWidth
}
px`
);
}
this
.
handleSearch
(
name
);
}
catch
(
error
)
{
}
},
}
};
</
script
>
...
...
@@ -1492,6 +1632,7 @@ export default {
margin
:
0
;
}
.home
{
@import
"@/assets/styles/search-common.scss"
;
padding-bottom
:
24px
;
::v-deep
.el-row
{
.el-col
:nth-child
(
1
)
{
...
...
@@ -1505,6 +1646,16 @@ export default {
}
.manage
{
::v-deep
.el-form
{
.el-select
{
.el-select__tags
{
flex-wrap
:
inherit
;
.el-tag
{
/*max-width: 130px;*/
}
}
}
}
.task-wrap
{
height
:
99px
;
background
:
#FFFFFF
;
...
...
@@ -1752,6 +1903,9 @@ export default {
.el-form-item--small.el-form-item
{
margin-bottom
:
0
;
}
.el-select
{
width
:
108px
;
}
}
}
.list
{
...
...
@@ -1796,15 +1950,6 @@ export default {
.pagination-box
{
padding
:
16px
;
}
::v-deep
.selectTag
{
.el-select__tags
{
.el-tag
{
&
:first-child
{
width
:
65px
;
}
}
}
}
}
.empty
{
margin
:
0
auto
;
...
...
dsk-operate-ui/src/views/macro/component/CustomTimeSelect.vue
View file @
7c7b08c0
...
...
@@ -253,9 +253,8 @@ export default {
<
style
lang=
"scss"
>
.custom-time-select
{
width
:
1
2
0px
;
width
:
1
1
0px
;
height
:
34px
;
.rote
{
.el-input__inner
{
background
:
#F4F6F9
;
...
...
dsk-operate-ui/src/views/macro/economies/component/comparison.vue
View file @
7c7b08c0
...
...
@@ -653,13 +653,18 @@ export default {
.el-form-item
{
margin
:
0
!
important
;
.form-content-width
{
width
:
11
0px
;
width
:
8
0px
;
}
::v-deep
.el-input
{
.el-input__inner
{
border
:
0
;
}
}
::v-deep
.is-focus
{
.el-input__inner
{
background
:
#F4F6F9
;
}
}
}
}
.table-item
{
...
...
dsk-operate-ui/src/views/macro/economies/component/industrialStructure.vue
View file @
7c7b08c0
...
...
@@ -348,13 +348,18 @@ export default {
.el-form-item
{
margin
:
0
!
important
;
.form-content-width
{
width
:
10
0px
;
width
:
8
0px
;
}
::v-deep
.el-input
{
.el-input__inner
{
border
:
0
;
}
}
::v-deep
.is-focus
{
.el-input__inner
{
background
:
#F4F6F9
;
}
}
}
}
.content
{
...
...
dsk-operate-ui/src/views/macro/economies/component/localEconomy.vue
View file @
7c7b08c0
...
...
@@ -36,18 +36,18 @@
</
template
>
</el-table-column>
<el-table-column
prop=
"gdp"
label=
"GDP(亿元)"
sortable
width=
"120"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"gdpGrowth"
label=
"GDP增速(%)"
sortable
width=
"130"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"gdpPerCapita"
label=
"人均GDP(元)"
sortable
width=
"130"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"population"
label=
"人口(万人)"
sortable
width=
"120"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"fixedInvestment"
label=
"固定资产投资 (亿元) "
sortable
width=
"200"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"gbr"
label=
"一般公共预算收入(亿元)"
sortable
width=
"200"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"gbe"
label=
"一般公共预算支出(亿元)"
sortable
width=
"200"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"govFundIncome"
label=
"政府性基金收入(亿元)"
sortable
width=
"200"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"govDebtBalance"
label=
"地方政府债务余额(亿元)"
sortable
width=
"200"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"uipInterestBearingDebt"
label=
"城投平台有息债务(亿元)"
sortable
width=
"200"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"fiscalSelfSufficiencyRate"
label=
"财政自给率(%)"
sortable
width=
"150"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"govDebtRateWild"
label=
"债务率-宽口径(%)"
sortable
width=
"170"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"gdp"
label=
"GDP(亿元)"
sortable
=
"custom"
width=
"120"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"gdpGrowth"
label=
"GDP增速(%)"
sortable
=
"custom"
width=
"130"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"gdpPerCapita"
label=
"人均GDP(元)"
sortable
=
"custom"
width=
"130"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"population"
label=
"人口(万人)"
sortable
=
"custom"
width=
"120"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"fixedInvestment"
label=
"固定资产投资 (亿元) "
sortable
=
"custom"
width=
"200"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"gbr"
label=
"一般公共预算收入(亿元)"
sortable
=
"custom"
width=
"200"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"gbe"
label=
"一般公共预算支出(亿元)"
sortable
=
"custom"
width=
"200"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"govFundIncome"
label=
"政府性基金收入(亿元)"
sortable
=
"custom"
width=
"200"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"govDebtBalance"
label=
"地方政府债务余额(亿元)"
sortable
=
"custom"
width=
"200"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"uipInterestBearingDebt"
label=
"城投平台有息债务(亿元)"
sortable
=
"custom"
width=
"200"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"fiscalSelfSufficiencyRate"
label=
"财政自给率(%)"
sortable
=
"custom"
width=
"150"
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"govDebtRateWild"
label=
"债务率-宽口径(%)"
sortable
=
"custom"
width=
"170"
:formatter=
"formatStatus"
/>
</el-table>
</div>
<div
class=
"pagination-box"
v-if=
"show_page && tableDataTotal>pageSize"
>
...
...
@@ -193,17 +193,22 @@ export default {
<
style
lang=
"scss"
scoped
>
.regionalEconomy
{
.el-form
{
/*margin-left: 24px;*/
margin-left
:
16px
;
.el-form-item
{
margin
:
0
!
important
;
.form-content-width
{
width
:
10
0px
;
width
:
8
0px
;
}
::v-deep
.el-input
{
.el-input__inner
{
border
:
0
;
}
}
::v-deep
.is-focus
{
.el-input__inner
{
background
:
#F4F6F9
;
}
}
}
}
.content
{
...
...
dsk-operate-ui/src/views/macro/enterprises/index.vue
View file @
7c7b08c0
...
...
@@ -223,10 +223,10 @@ export default {
page
:
this
.
pageIndex
,
}
if
(
this
.
queryParams
.
field
){
params
.
field
=
this
.
queryParams
.
field
params
.
page
.
field
=
this
.
queryParams
.
field
}
if
(
this
.
queryParams
.
order
){
params
.
order
=
this
.
queryParams
.
order
params
.
page
.
order
=
this
.
queryParams
.
order
}
params
.
aptitudeQueryDto
=
{
filePlaceType
:
this
.
activeName
===
'first'
?
3
:
2
,
...
...
@@ -399,7 +399,7 @@ export default {
width
+=
textContainer
.
offsetWidth
+
parseInt
(
itemInfo
.
marginLeft
)
+
parseInt
(
itemInfo
.
marginRight
);
textContainer
.
remove
();
});
dom
.
style
.
setProperty
(
"width"
,
`
${
width
+
6
0
}
px`
);
dom
.
style
.
setProperty
(
"width"
,
`
${
width
+
5
0
}
px`
);
this
.
handleSearch
(
name
);
return
;
}
...
...
@@ -411,7 +411,7 @@ export default {
textContainer
.
textContent
=
iptChild
.
getAttribute
(
"placeholder"
);
document
.
body
.
append
(
textContainer
);
// let containerWidth = textContainer.offsetWidth + 12 + 8;
let
containerWidth
=
1
2
0
;
let
containerWidth
=
1
1
0
;
textContainer
.
remove
();
dom
.
style
.
setProperty
(
"width"
,
`
${
containerWidth
}
px`
);
this
.
handleSearch
(
name
);
...
...
@@ -509,7 +509,7 @@ export default {
float
:
left
;
}
::v-deep
.el-cascader
{
width
:
1
2
0px
;
width
:
1
1
0px
;
margin-right
:
12px
;
height
:
34px
;
line-height
:
34px
!
important
;
...
...
dsk-operate-ui/src/views/macro/financing/index.vue
View file @
7c7b08c0
...
...
@@ -397,8 +397,7 @@ export default {
});
},
addressListbtn
(
data
)
{
this
.
province
=
data
.
province
;
this
.
provinceId
=
data
.
provinceId
;
this
.
province
=
data
.
province
;
this
.
provinceId
=
data
.
provinceId
;
this
.
dataQuery
.
province
=
data
.
provinces
;
let
params
=
{}
if
(
data
){
...
...
dsk-operate-ui/src/views/macro/nationalEconomies/component/jzqyfx.vue
View file @
7c7b08c0
...
...
@@ -41,34 +41,34 @@
<el-table-column
label=
"特级"
align=
"right"
>
<el-table-column
prop=
"tjCount"
label=
"数量"
align=
"right"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
tjCount
}}
个
</
template
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
tjCount
}}
{{
scope
.
row
.
tjCount
?
'个'
:
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"tjRate"
label=
"占比"
align=
"right"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
tjRate
}}
%
</
template
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
tjRate
}}
{{
scope
.
row
.
tjRate
?
'%'
:
'--'
}}
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"一级"
align=
"right"
>
<el-table-column
prop=
"oneCount"
label=
"数量"
align=
"right"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
oneCount
}}
个
</
template
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
oneCount
}}
{{
scope
.
row
.
oneCount
?
'个'
:
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"oneRate"
label=
"占比"
align=
"right"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
oneRate
}}
%
</
template
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
oneRate
}}
{{
scope
.
row
.
oneRate
?
'%'
:
'--'
}}
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"二级"
align=
"right"
>
<el-table-column
prop=
"twoCount"
label=
"数量"
align=
"right"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
twoCount
}}
个
</
template
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
twoCount
}}
{{
scope
.
row
.
twoCount
?
'个'
:
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"twoRate"
label=
"占比"
align=
"right"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
twoRate
}}
%
</
template
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
twoRate
}}
{{
scope
.
row
.
twoRate
?
'%'
:
'--'
}}
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"三级"
align=
"right"
>
<el-table-column
prop=
"threeCount"
label=
"数量"
align=
"right"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
threeCount
}}
个
</
template
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
threeCount
}}
{{
scope
.
row
.
threeCount
?
'个'
:
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"threeRate"
label=
"占比"
align=
"right"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
threeRate
}}
%
</
template
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
threeRate
}}
{{
scope
.
row
.
threeRate
?
'%'
:
'--'
}}
</
template
>
</el-table-column>
</el-table-column>
</el-table>
...
...
dsk-operate-ui/src/views/macro/nationalEconomies/component/qgjjdq.vue
View file @
7c7b08c0
...
...
@@ -485,10 +485,10 @@
}
.form-content-width
{
width
:
9
0px
;
width
:
8
0px
;
}
::v-deep
.el-cascader
{
width
:
1
80
px
;
width
:
1
06
px
;
.el-cascader__tags
{
flex-wrap
:
inherit
;
.el-tag
{
...
...
dsk-operate-ui/src/views/macro/nationalEconomies/component/tdjy.vue
View file @
7c7b08c0
...
...
@@ -6,7 +6,7 @@
<div
class=
"flex-box query-box"
>
<div
class=
"flex-box query-params"
>
<span
class=
"common-title"
>
全国土地交易项目供应方式
</span>
<el-select
v-model=
"years"
@
change=
"
handleYears(1)
"
multiple
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"请选择"
:popper-append-to-body=
'false'
size=
"small"
>
<el-select
v-model=
"years"
@
change=
"
iptAdaptive(inputID1,true,1)"
:class=
"[`select-adaptive-$
{inputID1}`]
" multiple collapse-tags filterable class="form-content-width" placeholder="请选择" :popper-append-to-body='false' size="small">
<el-option
v-for=
"(item, index) in yearOptions"
:key=
"index"
:label=
"item"
:value=
"item"
/>
</el-select>
</div>
...
...
@@ -49,7 +49,7 @@
<div
class=
"flex-box query-box"
>
<div
class=
"flex-box query-params"
>
<span
class=
"common-title"
>
全国土地交易项目土地用途
</span>
<el-select
v-model=
"years1"
@
change=
"
handleYears(2)
"
multiple
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"请选择"
:popper-append-to-body=
'false'
size=
"small"
>
<el-select
v-model=
"years1"
@
change=
"
iptAdaptive(inputID2,true,2)"
:class=
"[`select-adaptive-${inputID2}`]
"
multiple
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"请选择"
:popper-append-to-body=
'false'
size=
"small"
>
<el-option
v-for=
"(item, index) in yearOptions"
:key=
"index"
:label=
"item"
:value=
"item"
/>
</el-select>
</div>
...
...
@@ -92,10 +92,10 @@
<div
class=
"flex-box query-box"
>
<div
class=
"flex-box query-params"
>
<span
class=
"common-title"
>
全国土地交易项目地区Top10
</span>
<el-select
@
change=
"
handleYears(3)
"
style=
"margin-right: 8px"
v-model=
"address"
multiple
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"地区筛选"
:popper-append-to-body=
'false'
size=
"small"
>
<el-select
@
change=
"
iptAdaptive(inputID3,true,3)"
:class=
"[`select-adaptive-${inputID3}`]
"
style=
"margin-right: 8px"
v-model=
"address"
multiple
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"地区筛选"
:popper-append-to-body=
'false'
size=
"small"
>
<el-option
v-for=
"(item, index) in addressList"
:key=
"index"
:label=
"item.label"
:value=
"item.id"
/>
</el-select>
<el-select
v-model=
"years2"
@
change=
"
handleYears(3)
"
multiple
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"请选择"
:popper-append-to-body=
'false'
size=
"small"
>
<el-select
v-model=
"years2"
@
change=
"
iptAdaptive(inputID3,true,3)"
:class=
"[`select-adaptive-${inputID4}`]
"
multiple
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"请选择"
:popper-append-to-body=
'false'
size=
"small"
>
<el-option
v-for=
"(item, index) in yearOptions"
:key=
"index"
:label=
"item"
:value=
"item"
/>
</el-select>
</div>
...
...
@@ -177,6 +177,7 @@
import
dataRegion
from
'@/assets/json/dataRegion'
import
{
countLandMarketByType
,
countLandMarketByProvince
,
countLandMarketByYear
}
from
'@/api/macro/macro'
import
skeleton
from
'../../component/skeleton'
import
{
v4
}
from
"uuid"
;
export
default
{
name
:
'NationalEconomies'
,
components
:
{
...
...
@@ -203,11 +204,14 @@ export default {
tdytState
:
true
,
topState
:
true
,
nftjState
:
true
,
// typeName:['住宅用地','工业用地','城镇住宅用地','其他商服用地','公共设施用地','公路用地','城镇村道路用地','公园与绿地',
// '工矿仓储用地','零售商业用地','科研用地','街巷用地','机关团体用地','商服用地','商务金融用地']
inputID1
:
this
.
getUid
(),
inputID2
:
this
.
getUid
(),
inputID3
:
this
.
getUid
(),
inputID4
:
this
.
getUid
(),
}
},
created
()
{
this
.
getPlaceholder
()
this
.
dataRegion
()
this
.
yearsData
()
...
...
@@ -726,7 +730,116 @@ export default {
});
return
sums
;
},
async
getPlaceholder
()
{
try
{
await
this
.
$nextTick
();
const
doms
=
document
.
querySelectorAll
(
"[class*='select-adaptive-']"
);
if
(
doms
?.
length
)
{
doms
.
forEach
(
dom
=>
{
const
realStyles
=
window
.
getComputedStyle
(
dom
);
const
ipt
=
dom
.
querySelector
(
"input"
);
const
text
=
ipt
.
getAttribute
(
"placeholder"
);
const
textContainer
=
document
.
createElement
(
"span"
);
textContainer
.
style
.
setProperty
(
"visibility"
,
"hidden"
);
textContainer
.
style
.
setProperty
(
"display"
,
"inline-block"
);
textContainer
.
style
.
setProperty
(
"font-size"
,
"14px"
);
const
hasPadding
=
(
parseInt
(
realStyles
.
paddingLeft
)
||
parseInt
(
realStyles
.
paddingRight
))
?
true
:
false
;
hasPadding
?
textContainer
.
style
.
setProperty
(
"padding"
,
realStyles
.
paddingRight
)
:
null
;
textContainer
.
style
.
setProperty
(
"box-sizing"
,
"border-box"
);
textContainer
.
textContent
=
text
;
document
.
body
.
append
(
textContainer
);
// 加上按钮宽度 以及按钮左外边距
let
containerWidth
=
textContainer
.
offsetWidth
+
50
;
textContainer
.
remove
();
dom
.
style
.
setProperty
(
"width"
,
`
${
containerWidth
}
px`
);
});
}
}
catch
(
error
)
{
}
},
iptAdaptive
(
uid
,
multiple
=
false
,
key
)
{
multiple
?
this
.
multipleAdaptiveHandle
(
uid
,
key
)
:
this
.
iptAdaptiveHandle
(
uid
,
key
);
},
getUid
()
{
return
v4
();
},
// 多选处理
async
multipleAdaptiveHandle
(
uid
,
key
)
{
try
{
await
this
.
$nextTick
();
const
dom
=
document
.
querySelector
(
`.select-adaptive-
${
uid
}
`
);
const
iptChild
=
dom
.
querySelector
(
".el-input__inner"
);
if
(
dom
)
{
const
textContainer
=
document
.
createElement
(
"span"
);
const
textName
=
`text-
${
uid
}
`
;
textContainer
.
classList
.
add
(
textName
);
const
selectChildren
=
dom
.
querySelectorAll
(
".el-tag"
);
if
(
selectChildren
.
length
)
{
let
width
=
0
;
selectChildren
.
forEach
(
item
=>
{
const
text
=
item
.
textContent
;
const
itemInfo
=
window
.
getComputedStyle
(
item
);
textContainer
.
style
.
setProperty
(
"visibility"
,
"hidden"
);
textContainer
.
style
.
setProperty
(
"display"
,
"inline-block"
);
textContainer
.
style
.
setProperty
(
"font-size"
,
"14px"
);
textContainer
.
style
.
setProperty
(
"padding"
,
itemInfo
.
padding
);
textContainer
.
style
.
setProperty
(
"box-sizing"
,
"border-box"
);
textContainer
.
textContent
=
text
;
document
.
body
.
append
(
textContainer
);
width
+=
textContainer
.
offsetWidth
+
parseInt
(
itemInfo
.
marginLeft
)
+
parseInt
(
itemInfo
.
marginRight
);
textContainer
.
remove
();
});
dom
.
style
.
setProperty
(
"width"
,
`
${
width
+
50
}
px`
);
this
.
handleYears
(
key
);
return
;
}
textContainer
.
style
.
setProperty
(
"visibility"
,
"hidden"
);
textContainer
.
style
.
setProperty
(
"display"
,
"inline-block"
);
textContainer
.
style
.
setProperty
(
"font-size"
,
"14px"
);
textContainer
.
style
.
setProperty
(
"padding"
,
"0px 8px"
);
textContainer
.
style
.
setProperty
(
"box-sizing"
,
"border-box"
);
textContainer
.
textContent
=
iptChild
.
getAttribute
(
"placeholder"
);
document
.
body
.
append
(
textContainer
);
let
containerWidth
=
textContainer
.
offsetWidth
+
30
;
textContainer
.
remove
();
dom
.
style
.
setProperty
(
"width"
,
`
${
containerWidth
}
px`
);
this
.
handleYears
(
key
);
}
}
catch
(
error
)
{
console
.
log
(
error
);
}
},
// 单选处理
async
iptAdaptiveHandle
(
uid
,
key
)
{
try
{
await
this
.
$nextTick
();
const
dom
=
document
.
querySelector
(
`.select-adaptive-
${
uid
}
`
);
const
realStyles
=
window
.
getComputedStyle
(
dom
);
if
(
dom
)
{
const
iptChild
=
dom
.
querySelector
(
".el-input__inner"
);
const
textContainer
=
document
.
createElement
(
"span"
);
const
textName
=
`text-
${
uid
}
`
;
textContainer
.
classList
.
add
(
textName
);
textContainer
.
style
.
setProperty
(
"visibility"
,
"hidden"
);
textContainer
.
style
.
setProperty
(
"display"
,
"inline-block"
);
textContainer
.
style
.
setProperty
(
"font-size"
,
"14px"
);
const
hasPadding
=
(
parseInt
(
realStyles
.
paddingLeft
)
||
parseInt
(
realStyles
.
paddingRight
))
?
true
:
false
;
hasPadding
?
textContainer
.
style
.
setProperty
(
"padding"
,
"0px 8px"
)
:
null
;
textContainer
.
style
.
setProperty
(
"box-sizing"
,
"border-box"
);
textContainer
.
textContent
=
iptChild
.
value
?
iptChild
.
value
:
iptChild
.
getAttribute
(
"placeholder"
);
document
.
body
.
append
(
textContainer
);
let
containerWidth
=
textContainer
.
offsetWidth
+
50
;
textContainer
.
remove
();
dom
.
style
.
setProperty
(
"width"
,
`
${
containerWidth
}
px`
);
}
this
.
handleYears
(
key
);
}
catch
(
error
)
{
}
},
}
}
</
script
>
...
...
@@ -747,6 +860,7 @@ export default {
color
:
#0081FF
;
}
.tdjy
{
@import
"@/assets/styles/search-common.scss"
;
.text_p
{
color
:
#999999
;
font-size
:
14px
;
...
...
@@ -772,7 +886,7 @@ export default {
margin-right
:
24px
;
}
::v-deep
.form-content-width
{
width
:
13
5px
;
width
:
9
5px
;
.el-select__input
{
width
:
10px
!
important
;
max-width
:
10px
!
important
;
...
...
@@ -789,6 +903,12 @@ export default {
background
:
#F4F6F9
;
}
}
.el-select__tags
{
flex-wrap
:
inherit
;
.el-tag
{
/*max-width: 130px;*/
}
}
}
::v-deep
.el-cascader
{
width
:
220px
;
...
...
dsk-operate-ui/src/views/macro/nationalEconomies/component/zhaobiao.vue
View file @
7c7b08c0
...
...
@@ -38,10 +38,10 @@
<div
class=
"flex-box query-box"
>
<div
class=
"flex-box query-params"
>
<span
class=
"common-title"
>
全国各地区招标统计TOP10
</span>
<el-select
@
change=
"
handleYears(1)"
style=
"margin-right: 8px
"
v-model=
"address"
multiple
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"地区筛选"
:popper-append-to-body=
'false'
size=
"small"
>
<el-select
@
change=
"
iptAdaptive(inputID1,true,1)"
style=
"margin-right: 8px"
:class=
"[`select-adaptive-${inputID1}`]
"
v-model=
"address"
multiple
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"地区筛选"
:popper-append-to-body=
'false'
size=
"small"
>
<el-option
v-for=
"(item, index) in addressList"
:key=
"index"
:label=
"item.label"
:value=
"item.id"
/>
</el-select>
<el-select
v-model=
"years1"
@
change=
"
handleYears(1)"
multiple
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"请选择"
:popper-append-to-body=
'false'
size=
"small"
>
<el-select
v-model=
"years1"
@
change=
"
iptAdaptive(inputID2,true,1)"
multiple
collapse-tags
filterable
:class=
"[`select-adaptive-${inputID2}`]"
class=
"form-content-width"
placeholder=
"请选择"
:popper-append-to-body=
'false'
size=
"small"
>
<el-option
v-for=
"(item, index) in yearOptions"
:key=
"index"
:label=
"item"
:value=
"item"
/>
</el-select>
</div>
...
...
@@ -83,7 +83,7 @@
<div
class=
"flex-box query-box"
>
<div
class=
"flex-box query-params"
>
<span
class=
"common-title"
>
全国各年度招标月份统计
</span>
<el-select
v-model=
"years2"
@
change=
"
handleYears(2)
"
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"请选择"
:popper-append-to-body=
'false'
size=
"small"
>
<el-select
v-model=
"years2"
@
change=
"
iptAdaptive(inputID3,'',2)"
:class=
"[`select-adaptive-${inputID3}`]"
style=
"width: 80px;
"
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"请选择"
:popper-append-to-body=
'false'
size=
"small"
>
<el-option
v-for=
"(item, index) in yearOptions"
:key=
"index"
:label=
"item"
:value=
"item"
/>
</el-select>
</div>
...
...
@@ -130,6 +130,7 @@
import
dataRegion
from
'@/assets/json/dataRegion'
import
{
countNewsBidByYear
,
countNewsBidByProvince
,
countNewsBidByMonth
}
from
'@/api/macro/macro'
import
skeleton
from
'../../component/skeleton'
import
{
v4
}
from
"uuid"
;
export
default
{
name
:
'NationalEconomies'
,
components
:
{
...
...
@@ -152,9 +153,13 @@
isSkeleton
:
true
,
gyflState
:
true
,
tdytState
:
true
,
inputID1
:
this
.
getUid
(),
inputID2
:
this
.
getUid
(),
inputID3
:
this
.
getUid
(),
}
},
created
()
{
this
.
getPlaceholder
()
this
.
dataRegion
()
this
.
yearsData
()
this
.
getcountNewsBidByYear
()
...
...
@@ -613,7 +618,116 @@
});
return
sums
;
},
async
getPlaceholder
()
{
try
{
await
this
.
$nextTick
();
const
doms
=
document
.
querySelectorAll
(
"[class*='select-adaptive-']"
);
if
(
doms
?.
length
)
{
doms
.
forEach
(
dom
=>
{
const
realStyles
=
window
.
getComputedStyle
(
dom
);
const
ipt
=
dom
.
querySelector
(
"input"
);
const
text
=
ipt
.
getAttribute
(
"placeholder"
);
const
textContainer
=
document
.
createElement
(
"span"
);
textContainer
.
style
.
setProperty
(
"visibility"
,
"hidden"
);
textContainer
.
style
.
setProperty
(
"display"
,
"inline-block"
);
textContainer
.
style
.
setProperty
(
"font-size"
,
"14px"
);
const
hasPadding
=
(
parseInt
(
realStyles
.
paddingLeft
)
||
parseInt
(
realStyles
.
paddingRight
))
?
true
:
false
;
hasPadding
?
textContainer
.
style
.
setProperty
(
"padding"
,
realStyles
.
paddingRight
)
:
null
;
textContainer
.
style
.
setProperty
(
"box-sizing"
,
"border-box"
);
textContainer
.
textContent
=
text
;
document
.
body
.
append
(
textContainer
);
// 加上按钮宽度 以及按钮左外边距
let
containerWidth
=
textContainer
.
offsetWidth
+
50
;
textContainer
.
remove
();
dom
.
style
.
setProperty
(
"width"
,
`
${
containerWidth
}
px`
);
});
}
}
catch
(
error
)
{
}
},
iptAdaptive
(
uid
,
multiple
=
false
,
key
)
{
multiple
?
this
.
multipleAdaptiveHandle
(
uid
,
key
)
:
this
.
iptAdaptiveHandle
(
uid
,
key
);
},
getUid
()
{
return
v4
();
},
// 多选处理
async
multipleAdaptiveHandle
(
uid
,
key
)
{
try
{
await
this
.
$nextTick
();
const
dom
=
document
.
querySelector
(
`.select-adaptive-
${
uid
}
`
);
const
iptChild
=
dom
.
querySelector
(
".el-input__inner"
);
if
(
dom
)
{
const
textContainer
=
document
.
createElement
(
"span"
);
const
textName
=
`text-
${
uid
}
`
;
textContainer
.
classList
.
add
(
textName
);
const
selectChildren
=
dom
.
querySelectorAll
(
".el-tag"
);
if
(
selectChildren
.
length
)
{
let
width
=
0
;
selectChildren
.
forEach
(
item
=>
{
const
text
=
item
.
textContent
;
const
itemInfo
=
window
.
getComputedStyle
(
item
);
textContainer
.
style
.
setProperty
(
"visibility"
,
"hidden"
);
textContainer
.
style
.
setProperty
(
"display"
,
"inline-block"
);
textContainer
.
style
.
setProperty
(
"font-size"
,
"14px"
);
textContainer
.
style
.
setProperty
(
"padding"
,
itemInfo
.
padding
);
textContainer
.
style
.
setProperty
(
"box-sizing"
,
"border-box"
);
textContainer
.
textContent
=
text
;
document
.
body
.
append
(
textContainer
);
width
+=
textContainer
.
offsetWidth
+
parseInt
(
itemInfo
.
marginLeft
)
+
parseInt
(
itemInfo
.
marginRight
);
textContainer
.
remove
();
});
dom
.
style
.
setProperty
(
"width"
,
`
${
width
+
50
}
px`
);
this
.
handleYears
(
key
);
return
;
}
textContainer
.
style
.
setProperty
(
"visibility"
,
"hidden"
);
textContainer
.
style
.
setProperty
(
"display"
,
"inline-block"
);
textContainer
.
style
.
setProperty
(
"font-size"
,
"14px"
);
textContainer
.
style
.
setProperty
(
"padding"
,
"0px 8px"
);
textContainer
.
style
.
setProperty
(
"box-sizing"
,
"border-box"
);
textContainer
.
textContent
=
iptChild
.
getAttribute
(
"placeholder"
);
document
.
body
.
append
(
textContainer
);
let
containerWidth
=
textContainer
.
offsetWidth
+
30
;
textContainer
.
remove
();
dom
.
style
.
setProperty
(
"width"
,
`
${
containerWidth
}
px`
);
this
.
handleYears
(
key
);
}
}
catch
(
error
)
{
console
.
log
(
error
);
}
},
// 单选处理
async
iptAdaptiveHandle
(
uid
,
key
)
{
try
{
await
this
.
$nextTick
();
const
dom
=
document
.
querySelector
(
`.select-adaptive-
${
uid
}
`
);
const
realStyles
=
window
.
getComputedStyle
(
dom
);
if
(
dom
)
{
const
iptChild
=
dom
.
querySelector
(
".el-input__inner"
);
const
textContainer
=
document
.
createElement
(
"span"
);
const
textName
=
`text-
${
uid
}
`
;
textContainer
.
classList
.
add
(
textName
);
textContainer
.
style
.
setProperty
(
"visibility"
,
"hidden"
);
textContainer
.
style
.
setProperty
(
"display"
,
"inline-block"
);
textContainer
.
style
.
setProperty
(
"font-size"
,
"14px"
);
const
hasPadding
=
(
parseInt
(
realStyles
.
paddingLeft
)
||
parseInt
(
realStyles
.
paddingRight
))
?
true
:
false
;
hasPadding
?
textContainer
.
style
.
setProperty
(
"padding"
,
"0px 8px"
)
:
null
;
textContainer
.
style
.
setProperty
(
"box-sizing"
,
"border-box"
);
textContainer
.
textContent
=
iptChild
.
value
?
iptChild
.
value
:
iptChild
.
getAttribute
(
"placeholder"
);
document
.
body
.
append
(
textContainer
);
let
containerWidth
=
textContainer
.
offsetWidth
+
50
;
textContainer
.
remove
();
dom
.
style
.
setProperty
(
"width"
,
`
${
containerWidth
}
px`
);
}
this
.
handleYears
(
key
);
}
catch
(
error
)
{
}
},
}
}
</
script
>
...
...
@@ -634,6 +748,7 @@
color
:
#0081FF
;
}
.tdjy
{
@import
"@/assets/styles/search-common.scss"
;
.text_p
{
color
:
#999999
;
font-size
:
14px
;
...
...
@@ -659,7 +774,7 @@
margin-right
:
24px
;
}
::v-deep
.form-content-width
{
width
:
14
5px
;
width
:
9
5px
;
.el-select__input
{
width
:
10px
!
important
;
max-width
:
10px
!
important
;
...
...
@@ -675,6 +790,12 @@
background
:
#F4F6F9
;
}
}
.el-select__tags
{
flex-wrap
:
inherit
;
.el-tag
{
/*max-width: 130px;*/
}
}
}
::v-deep
.el-cascader
{
width
:
220px
;
...
...
dsk-operate-ui/src/views/macro/nationalEconomies/component/zhongbiao.vue
View file @
7c7b08c0
...
...
@@ -6,7 +6,7 @@
<div
class=
"flex-box query-box"
>
<div
class=
"flex-box query-params"
>
<span
class=
"common-title"
>
全国中标项目统计
</span>
<el-select
v-model=
"years"
@
change=
"
handleYears(1)
"
multiple
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"请选择"
:popper-append-to-body=
'false'
size=
"small"
>
<el-select
v-model=
"years"
@
change=
"
iptAdaptive(inputID1,true,1)"
:class=
"[`select-adaptive-$
{inputID1}`]
" multiple collapse-tags filterable class="form-content-width" placeholder="请选择" :popper-append-to-body='false' size="small">
<el-option
v-for=
"(item, index) in yearOptions"
:key=
"index"
:label=
"item"
:value=
"item"
/>
</el-select>
</div>
...
...
@@ -54,7 +54,7 @@
<div
class=
"flex-box query-box"
>
<div
class=
"flex-box query-params"
>
<span
class=
"common-title"
>
全国各地区中标统计TOP10
</span>
<el-select
v-model=
"years1"
@
change=
"
handleYears(2)
"
multiple
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"请选择"
:popper-append-to-body=
'false'
size=
"small"
>
<el-select
v-model=
"years1"
@
change=
"
iptAdaptive(inputID2,true,2)"
:class=
"[`select-adaptive-${inputID2}`]
"
multiple
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"请选择"
:popper-append-to-body=
'false'
size=
"small"
>
<el-option
v-for=
"(item, index) in yearOptions"
:key=
"index"
:label=
"item"
:value=
"item"
/>
</el-select>
</div>
...
...
@@ -102,7 +102,7 @@
<div
class=
"flex-box query-box"
>
<div
class=
"flex-box query-params"
>
<span
class=
"common-title"
>
全国中标金额分析
</span>
<el-select
v-model=
"years2"
@
change=
"
handleYears(3)
"
multiple
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"请选择"
:popper-append-to-body=
'false'
size=
"small"
>
<el-select
v-model=
"years2"
@
change=
"
iptAdaptive(inputID3,true,3)"
:class=
"[`select-adaptive-${inputID3}`]
"
multiple
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"请选择"
:popper-append-to-body=
'false'
size=
"small"
>
<el-option
v-for=
"(item, index) in yearOptions"
:key=
"index"
:label=
"item"
:value=
"item"
/>
</el-select>
</div>
...
...
@@ -183,7 +183,7 @@
<div
class=
"flex-box query-box"
>
<div
class=
"flex-box query-params"
>
<span
class=
"common-title"
>
全国中标下浮率分析
</span>
<el-select
v-model=
"years3"
@
change=
"
handleYears(5)
"
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"请选择"
:popper-append-to-body=
'false'
size=
"small"
>
<el-select
v-model=
"years3"
@
change=
"
iptAdaptive(inputID4,'',5)"
:class=
"[`select-adaptive-${inputID4}`]
"
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"请选择"
:popper-append-to-body=
'false'
size=
"small"
>
<el-option
v-for=
"(item, index) in yearOptions"
:key=
"index"
:label=
"item"
:value=
"item"
/>
</el-select>
</div>
...
...
@@ -226,10 +226,10 @@
<div
class=
"flex-box query-box"
>
<div
class=
"flex-box query-params"
>
<span
class=
"common-title"
>
全国中标业绩项目类型下浮率
</span>
<el-select
@
change=
"
handleYears(6)
"
style=
"margin-right: 8px"
v-model=
"address"
clearable
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"地区筛选"
:popper-append-to-body=
'false'
size=
"small"
>
<el-select
@
change=
"
iptAdaptive(inputID5,'',6)"
:class=
"[`select-adaptive-${inputID5}`]
"
style=
"margin-right: 8px"
v-model=
"address"
clearable
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"地区筛选"
:popper-append-to-body=
'false'
size=
"small"
>
<el-option
v-for=
"(item, index) in addressList"
:key=
"index"
:label=
"item.label"
:value=
"item.id"
/>
</el-select>
<el-select
v-model=
"years4"
@
change=
"
handleYears(6)
"
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"请选择"
:popper-append-to-body=
'false'
size=
"small"
>
<el-select
v-model=
"years4"
@
change=
"
iptAdaptive(inputID6,'',6)"
:class=
"[`select-adaptive-${inputID6}`]
"
collapse-tags
filterable
class=
"form-content-width"
placeholder=
"请选择"
:popper-append-to-body=
'false'
size=
"small"
>
<el-option
v-for=
"(item, index) in yearOptions"
:key=
"index"
:label=
"item"
:value=
"item"
/>
</el-select>
</div>
...
...
@@ -279,6 +279,7 @@
import
dataRegion
from
'@/assets/json/dataRegion'
import
{
countBidByType
,
countBidGroupByProvince
,
rangeBidMoney
,
rangeBidFiveYears
,
lowerRateByYear
,
lowerRangeTenderType
}
from
'@/api/macro/macro'
import
skeleton
from
'../../component/skeleton'
import
{
v4
}
from
"uuid"
;
export
default
{
name
:
'NationalEconomies'
,
components
:
{
...
...
@@ -306,9 +307,16 @@
qsfxState
:
true
,
xflState
:
true
,
xmlxState
:
true
,
inputID1
:
this
.
getUid
(),
inputID2
:
this
.
getUid
(),
inputID3
:
this
.
getUid
(),
inputID4
:
this
.
getUid
(),
inputID5
:
this
.
getUid
(),
inputID6
:
this
.
getUid
(),
}
},
created
()
{
this
.
getPlaceholder
()
this
.
dataRegion
()
this
.
yearsData
()
this
.
getCountBidByType
()
...
...
@@ -521,7 +529,7 @@
yAxisIndex
:
1
,
tooltip
:
{
valueFormatter
:
function
(
value
)
{
return
value
+
'万元'
return
value
}
},
itemStyle
:
{
...
...
@@ -535,7 +543,7 @@
barWidth
:
20
,
tooltip
:
{
valueFormatter
:
function
(
value
)
{
return
value
+
'个'
;
return
value
;
}
},
itemStyle
:
{
...
...
@@ -783,7 +791,7 @@
yAxisIndex
:
1
,
tooltip
:
{
valueFormatter
:
function
(
value
)
{
return
value
+
'万元'
return
value
}
},
itemStyle
:
{
...
...
@@ -797,7 +805,7 @@
barWidth
:
20
,
tooltip
:
{
valueFormatter
:
function
(
value
)
{
return
value
+
'个'
;
return
value
;
}
},
itemStyle
:
{
...
...
@@ -1160,13 +1168,123 @@
});
return
sums
;
},
async
getPlaceholder
()
{
try
{
await
this
.
$nextTick
();
const
doms
=
document
.
querySelectorAll
(
"[class*='select-adaptive-']"
);
if
(
doms
?.
length
)
{
doms
.
forEach
(
dom
=>
{
const
realStyles
=
window
.
getComputedStyle
(
dom
);
const
ipt
=
dom
.
querySelector
(
"input"
);
const
text
=
ipt
.
getAttribute
(
"placeholder"
);
const
textContainer
=
document
.
createElement
(
"span"
);
textContainer
.
style
.
setProperty
(
"visibility"
,
"hidden"
);
textContainer
.
style
.
setProperty
(
"display"
,
"inline-block"
);
textContainer
.
style
.
setProperty
(
"font-size"
,
"14px"
);
const
hasPadding
=
(
parseInt
(
realStyles
.
paddingLeft
)
||
parseInt
(
realStyles
.
paddingRight
))
?
true
:
false
;
hasPadding
?
textContainer
.
style
.
setProperty
(
"padding"
,
realStyles
.
paddingRight
)
:
null
;
textContainer
.
style
.
setProperty
(
"box-sizing"
,
"border-box"
);
textContainer
.
textContent
=
text
;
document
.
body
.
append
(
textContainer
);
// 加上按钮宽度 以及按钮左外边距
let
containerWidth
=
textContainer
.
offsetWidth
+
50
;
textContainer
.
remove
();
dom
.
style
.
setProperty
(
"width"
,
`
${
containerWidth
}
px`
);
});
}
}
catch
(
error
)
{
}
},
iptAdaptive
(
uid
,
multiple
=
false
,
key
)
{
multiple
?
this
.
multipleAdaptiveHandle
(
uid
,
key
)
:
this
.
iptAdaptiveHandle
(
uid
,
key
);
},
getUid
()
{
return
v4
();
},
// 多选处理
async
multipleAdaptiveHandle
(
uid
,
key
)
{
try
{
await
this
.
$nextTick
();
const
dom
=
document
.
querySelector
(
`.select-adaptive-
${
uid
}
`
);
const
iptChild
=
dom
.
querySelector
(
".el-input__inner"
);
if
(
dom
)
{
const
textContainer
=
document
.
createElement
(
"span"
);
const
textName
=
`text-
${
uid
}
`
;
textContainer
.
classList
.
add
(
textName
);
const
selectChildren
=
dom
.
querySelectorAll
(
".el-tag"
);
if
(
selectChildren
.
length
)
{
let
width
=
0
;
selectChildren
.
forEach
(
item
=>
{
const
text
=
item
.
textContent
;
const
itemInfo
=
window
.
getComputedStyle
(
item
);
textContainer
.
style
.
setProperty
(
"visibility"
,
"hidden"
);
textContainer
.
style
.
setProperty
(
"display"
,
"inline-block"
);
textContainer
.
style
.
setProperty
(
"font-size"
,
"14px"
);
textContainer
.
style
.
setProperty
(
"padding"
,
itemInfo
.
padding
);
textContainer
.
style
.
setProperty
(
"box-sizing"
,
"border-box"
);
textContainer
.
textContent
=
text
;
document
.
body
.
append
(
textContainer
);
width
+=
textContainer
.
offsetWidth
+
parseInt
(
itemInfo
.
marginLeft
)
+
parseInt
(
itemInfo
.
marginRight
);
textContainer
.
remove
();
});
dom
.
style
.
setProperty
(
"width"
,
`
${
width
+
50
}
px`
);
this
.
handleYears
(
key
);
return
;
}
textContainer
.
style
.
setProperty
(
"visibility"
,
"hidden"
);
textContainer
.
style
.
setProperty
(
"display"
,
"inline-block"
);
textContainer
.
style
.
setProperty
(
"font-size"
,
"14px"
);
textContainer
.
style
.
setProperty
(
"padding"
,
"0px 8px"
);
textContainer
.
style
.
setProperty
(
"box-sizing"
,
"border-box"
);
textContainer
.
textContent
=
iptChild
.
getAttribute
(
"placeholder"
);
document
.
body
.
append
(
textContainer
);
let
containerWidth
=
textContainer
.
offsetWidth
+
30
;
textContainer
.
remove
();
dom
.
style
.
setProperty
(
"width"
,
`
${
containerWidth
}
px`
);
this
.
handleYears
(
key
);
}
}
catch
(
error
)
{
console
.
log
(
error
);
}
},
// 单选处理
async
iptAdaptiveHandle
(
uid
,
key
)
{
try
{
await
this
.
$nextTick
();
const
dom
=
document
.
querySelector
(
`.select-adaptive-
${
uid
}
`
);
const
realStyles
=
window
.
getComputedStyle
(
dom
);
if
(
dom
)
{
const
iptChild
=
dom
.
querySelector
(
".el-input__inner"
);
const
textContainer
=
document
.
createElement
(
"span"
);
const
textName
=
`text-
${
uid
}
`
;
textContainer
.
classList
.
add
(
textName
);
textContainer
.
style
.
setProperty
(
"visibility"
,
"hidden"
);
textContainer
.
style
.
setProperty
(
"display"
,
"inline-block"
);
textContainer
.
style
.
setProperty
(
"font-size"
,
"14px"
);
const
hasPadding
=
(
parseInt
(
realStyles
.
paddingLeft
)
||
parseInt
(
realStyles
.
paddingRight
))
?
true
:
false
;
hasPadding
?
textContainer
.
style
.
setProperty
(
"padding"
,
"0px 8px"
)
:
null
;
textContainer
.
style
.
setProperty
(
"box-sizing"
,
"border-box"
);
textContainer
.
textContent
=
iptChild
.
value
?
iptChild
.
value
:
iptChild
.
getAttribute
(
"placeholder"
);
document
.
body
.
append
(
textContainer
);
let
containerWidth
=
textContainer
.
offsetWidth
+
50
;
textContainer
.
remove
();
dom
.
style
.
setProperty
(
"width"
,
`
${
containerWidth
}
px`
);
}
this
.
handleYears
(
key
);
}
catch
(
error
)
{
}
},
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.zhongbiao
{
@import
"@/assets/styles/search-common.scss"
;
padding-top
:
16px
;
.text_p
{
color
:
#999999
;
...
...
@@ -1193,7 +1311,7 @@
margin-right
:
24px
;
}
::v-deep
.form-content-width
{
width
:
14
5px
;
width
:
9
5px
;
.el-select__input
{
width
:
10px
!
important
;
max-width
:
10px
!
important
;
...
...
@@ -1209,6 +1327,12 @@
background
:
#F4F6F9
;
}
}
.el-select__tags
{
flex-wrap
:
inherit
;
.el-tag
{
/*max-width: 130px;*/
}
}
}
::v-deep
.el-cascader
{
width
:
220px
;
...
...
dsk-operate-ui/src/views/market/detail.vue
0 → 100644
View file @
7c7b08c0
<
template
>
<div
class=
"iframe"
v-loading=
"loading"
>
<iframe
id=
"companyIframe"
marginwidth=
"0"
marginheight=
"0"
frameborder=
"0"
scrolling=
"no"
width=
"100%"
:src=
"src"
/>
</div>
</
template
>
<
script
>
import
{
steerScroll
}
from
'@/assets/js/jskplug'
;
import
{
dskAccessToken
}
from
'@/api/common'
;
export
default
{
name
:
'GzscDetail'
,
data
()
{
return
{
currentUrl
:
''
,
loading
:
false
,
iframeHight
:
800
,
// iframe高度-当前页控制
navigation
:
{
isFixed
:
true
,
fixedHeight
:
0
,
totalHeight
:
0
},
// iframe之外页面顶部对象,ifFixed:是否浮动;fixedHeight:浮动对象高度;totalHeight:顶部整体高度
footHeight
:
160
,
//底部高度,若为0(页面内部嵌套或者没有底部板块)
src
:
''
,
//
domain
:
'https://pre-plug.jiansheku.com'
,
uid
:
''
,
// 需要携带的uid
loginDialogVisible
:
false
,
vipDialogVisible
:
false
,
dataVip
:{},
minHeight
:
0
}
},
computed
:
{
},
created
()
{
if
(
window
.
location
.
host
===
'http://szh.jiansheku.com'
||
window
.
location
.
host
===
'szh.jiansheku.com'
){
this
.
domain
=
'https://plug.jiansheku.com'
}
else
{
this
.
domain
=
'https://pre-plug.jiansheku.com'
// this.domain='http://192.168.60.8:3400'
}
this
.
loading
=
true
if
(
process
.
browser
){
this
.
getAccesstoken
(
true
)
}
},
mounted
()
{
// this.setInitHeight() //设置初始相关高度
this
.
iframeLoading
()
// 判断iframe页面是否加载完成-当前页控制
// steerScroll('companyIframe', this.navigation, this.footHeight, true, '', this) // 监听滚动(iframe的id、页面排除iframe后页面剩下高度[例:80]、增加监听[不传就是移除监听]、父级id[不带默认就是铺满整个页面]])
//控制页面内容最低高度
// this.setMainHeight()
},
beforeDestroy
()
{
clearInterval
(
this
.
iframeTimer
)
// -当前页控制
clearInterval
(
this
.
tokenTimer
)
// -当前页控制
steerScroll
(
'companyIframe'
,
this
.
navigation
,
this
.
footHeight
)
// 监听滚动(iframe的id、页面排除iframe后页面剩下高度[例:80]、增加监听[不传就是移除监听]、父级id[不带默认就是铺满整个页面]])
},
methods
:
{
setInitHeight
(){
let
headerHeight
=
document
.
getElementById
(
'header'
).
offsetHeight
this
.
navigation
.
fixedHeight
=
this
.
navigation
.
totalHeight
=
headerHeight
+
10
},
// 判断iframe页面是否加载完成-当前页控制
iframeLoading
()
{
const
iframeHeight
=
document
.
getElementById
(
'companyIframe'
).
clientHeight
let
number
=
0
this
.
iframeTimer
=
setInterval
(()
=>
{
number
=
number
+
1000
if
(
document
.
getElementById
(
'companyIframe'
).
clientHeight
!==
iframeHeight
||
number
===
5000
)
{
this
.
loading
=
false
clearInterval
(
this
.
iframeTimer
)
}
},
1000
)
},
// 获取accessToken
async
getAccesstoken
(
init
){
dskAccessToken
().
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
// this.loading = true
this
.
timelongs
=
res
.
data
.
expire
;
this
.
ak
=
res
.
data
.
accessToken
;
if
(
init
){
//首次加载iframe地址
if
(
window
.
location
.
search
){
this
.
src
=
`
${
this
.
domain
+
this
.
$route
.
fullPath
}
&ak=
${
this
.
ak
}
&initTime=
${
new
Date
().
getTime
()}
&uid=
${
this
.
uid
}
&origin=
${
window
.
location
.
origin
}
`
}
else
{
this
.
src
=
`
${
this
.
domain
+
this
.
$route
.
fullPath
}
?ak=
${
this
.
ak
}
&initTime=
${
new
Date
().
getTime
()}
&uid=
${
this
.
uid
}
&origin=
${
window
.
location
.
origin
}
`
}
}
else
{
//更新iframe地址的accessToken
let
ifam
=
document
.
getElementById
(
'companyIframe'
)
ifam
.
contentWindow
.
postMessage
({
'accessToken'
:
this
.
ak
,
'initTime'
:
new
Date
().
getTime
()
},
'*'
)
}
this
.
refreshtoken
();
}
else
{
clearTimeout
(
this
.
tokentimer
);
}
});
},
setMainHeight
(){
let
cliHight
=
document
.
body
.
clientHeight
,
footerHeight
=
document
.
getElementById
(
'footer'
)
?
document
.
getElementById
(
'footer'
).
offsetHeight
:
0
this
.
minHeight
=
cliHight
-
footerHeight
},
refreshtoken
()
{
this
.
tokentimer
=
setTimeout
(()
=>
{
dskAccessToken
().
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
this
.
timelongs
=
res
.
data
.
expire
;
this
.
ak
=
res
.
data
.
accessToken
;
let
ifam
=
document
.
getElementById
(
'companyIframe'
);
//iframe的id
let
akObj
=
res
.
data
.
expire
;
//accessToken接口的返回值
let
initTime
=
new
Date
().
getTime
();
//accessToken接口返回后的当前时间戳
ifam
.
contentWindow
.
postMessage
({
'accessToken'
:
akObj
.
accessToken
,
'initTime'
:
initTime
},
'*'
);
}
else
{
clearTimeout
(
this
.
tokentimer
);
}
});
},
this
.
timelongs
*
1000
);
},
},
watch
:
{
'$store.state.akObj.expire'
(
newValue
,
oldValue
)
{
if
(
newValue
){
let
t
=
(
newValue
-
20
)
*
1000
,
_this
=
this
_this
.
tokenTimer
=
setTimeout
(
function
()
{
_this
.
getAccesstoken
()
},
t
)
}
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.iframe
{
width
:
100%
;
padding
:
16px
24px
;
padding-right
:
15px
;
box-sizing
:
border-box
;
#companyIframe
{
width
:
100%
;
height
:
100%
;
}
}
</
style
>
dsk-operate-ui/src/views/market/index.vue
View file @
7c7b08c0
<
template
>
<div
v-loading=
"loading"
class=
"market-container"
>
<iframe
id=
"companyIframe"
marginwidth=
"0"
marginheight=
"0"
frameborder=
"0"
scrolling=
"no"
width=
"100%"
:style=
"
{height:iframeHight+'px'}"
:src="src" />
<iframe
id=
"companyIframe"
class=
"market-iframe"
marginwidth=
"0"
marginheight=
"0"
scrolling=
"no"
frameborder=
"0"
width=
"100%"
:src=
"src"
/>
<transition
name=
"fade"
mode=
"out-in"
appear
>
<max-page-size-tip
v-if=
"showMaxPageTip"
@
closeMaxTip=
"showMaxPageTip = false"
></max-page-size-tip>
</transition>
</div>
</
template
>
<
script
>
import
{
steerScroll
}
from
'@/assets/js/jskplug'
;
import
{
dskAccessToken
}
from
'@/api/common'
;
import
{
encodeStr
}
from
"@/assets/js/common.js"
import
MaxPageSizeTip
from
"@/views/components/MaxPageSizeTip.vue"
;
import
{
getUipIdByCid
}
from
'@/api/macro/macro'
export
default
{
name
:
'Enterprise'
,
components
:
{
MaxPageSizeTip
},
data
()
{
return
{
encodeStr
,
loading
:
false
,
// 是否加载完成-当前页控制
iframeTimer
:
''
,
// 是否加载中定时器-当前页控制
footHeight
:
0
,
//底部高度,若为0(页面内部嵌套或者没有底部板块)
iframeHight
:
window
.
innerHeight
,
// iframe高度-当前页控制
iframeHight
:
`
${
window
.
innerHeight
}
px`
,
// iframe高度-当前页控制
navigation
:
{
isFixed
:
true
,
fixedHeight
:
56
,
totalHeight
:
68
},
// iframe之外页面顶部对象,ifFixed:是否浮动;fixedHeight:浮动对象高度;totalHeight:顶部整体高度
src
:
''
,
//iframe嵌套页面地址
domain
:
'https://plug.jiansheku.com'
,
// 插件地址
...
...
@@ -28,32 +34,81 @@ export default {
ak
:
'aec7b3ff2y2q8x6t49a7e2c463ce21912'
,
// 需要携带的sdkId
timelongs
:
7200
,
//刷新token时间
tokentimer
:
null
,
showMaxPageTip
:
false
,
iframeIns
:
null
,
};
},
created
()
{
if
(
window
.
location
.
host
===
'http://szh.jiansheku.com'
||
window
.
location
.
host
===
'szh.jiansheku.com'
||
window
.
location
.
host
===
'hwszh.jiansheku.com'
)
{
this
.
domain
=
'https://plug.jiansheku.com'
}
else
{
if
(
window
.
location
.
host
===
'http://szh.jiansheku.com'
||
window
.
location
.
host
===
'szh.jiansheku.com'
)
{
this
.
domain
=
'https://plug.jiansheku.com'
;
}
else
{
this
.
domain
=
'https://pre-plug.jiansheku.com'
// this.domain = 'http://192.168.60.8:3400';
this
.
domain
=
'http://192.168.60.210:3400'
;
}
this
.
gettokens
();
this
.
iframeObserver
();
let
that
=
this
window
.
addEventListener
(
"message"
,
this
.
pagecapListener
,
{
passive
:
true
});
window
.
addEventListener
(
'message'
,
function
(
event
)
{
if
(
event
.
data
.
id
){
getUipIdByCid
([
event
.
data
.
id
]).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
if
(
res
.
data
&&
res
.
data
.
length
>
0
&&
res
.
data
[
0
].
uipId
){
that
.
$router
.
push
({
path
:
'/enterprise/'
+
that
.
encodeStr
(
event
.
data
.
id
)})
}
else
{
that
.
$tab
.
openPage
(
event
.
data
.
title
,
'/company/'
+
that
.
encodeStr
(
event
.
data
.
id
))
}
}
}).
catch
(
error
=>
{
});
}
else
{
if
(
event
.
data
.
url
){
that
.
$tab
.
openPage
(
event
.
data
.
title
,
event
.
data
.
url
).
then
(()
=>
{
// 执行结束的逻辑
})
}
}
},
false
);
},
mounted
()
{
this
.
iframeLoading
();
// 判断iframe页面是否加载完成-当前页控制
steerScroll
(
'companyIframe'
,
this
.
navigation
,
this
.
footHeight
,
true
);
// iframeId: iframe的id;navigation:页面排除iframe后剩下的顶部高度;footHeight: 页面排除iframe后剩下的底部高度;state:监听or移除监听;parentId: 父级id[不带默认就是铺满整个页面]];_this:指向当前实例(可忽略)
//
steerScroll('companyIframe', this.navigation, this.footHeight, true); // iframeId: iframe的id;navigation:页面排除iframe后剩下的顶部高度;footHeight: 页面排除iframe后剩下的底部高度;state:监听or移除监听;parentId: 父级id[不带默认就是铺满整个页面]];_this:指向当前实例(可忽略)
},
beforeDestroy
()
{
clearInterval
(
this
.
iframeTimer
);
// -当前页控制
steerScroll
(
'companyIframe'
,
this
.
navigation
,
this
.
footHeight
);
// iframeId: iframe的id;navigation:页面排除iframe后剩下的顶部高度;footHeight: 页面排除iframe后剩下的底部高度;state:监听or移除监听;parentId: 父级id[不带默认就是铺满整个页面]];_this:指向当前实例(可忽略)
clearInterval
(
this
.
tokentimer
);
window
.
removeEventListener
(
"message"
,
this
.
pagecapListener
,
{
passive
:
true
});
// 移除layout样式
this
.
iframeIns
.
contentWindow
.
postMessage
(
"removeHtmlLayoutStyle"
,
{
targetOrigin
:
this
.
domain
,
});
},
methods
:
{
async
iframeObserver
()
{
try
{
await
this
.
$nextTick
();
this
.
iframeIns
=
document
.
querySelector
(
".market-iframe"
);
}
catch
(
error
)
{
console
.
log
(
error
);
}
},
// 列表翻页上限
pagecapListener
(
e
)
{
const
{
origin
,
data
}
=
e
;
if
(
origin
!=
this
.
domain
)
return
;
if
(
data
==
"pageCurrentMaxSize"
)
{
this
.
showMaxPageTip
=
true
;
}
},
gettokens
()
{
dskAccessToken
().
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
this
.
timelongs
=
res
.
data
.
expire
;
this
.
ak
=
res
.
data
.
accessToken
;
this
.
src
=
`
${
this
.
domain
}
/search/market?ak=
${
this
.
ak
}
&initTime=
${
new
Date
().
getTime
()}
&uid=
${
this
.
ak
}
`
;
this
.
src
=
`
${
this
.
domain
}
/search/market?ak=
${
this
.
ak
}
&initTime=
${
new
Date
().
getTime
()}
&uid=
${
this
.
ak
}
&origin=
${
window
.
location
.
origin
}
`
;
this
.
refreshtoken
();
}
else
{
clearTimeout
(
this
.
tokentimer
);
...
...
@@ -88,14 +143,19 @@ export default {
});
}
}
}
}
;
</
script
>
<
style
lang=
"scss"
scoped
>
.market-container
{
width
:
100%
;
height
:
100%
;
padding
:
16px
24px
;
padding-right
:
15px
;
box-sizing
:
border-box
;
.market-iframe
{
width
:
100%
;
height
:
100%
;
}
}
</
style
>
dsk-operate-ui/src/views/project/projectList/component/xgqy.vue
View file @
7c7b08c0
...
...
@@ -8,9 +8,12 @@
<el-option
v-for=
"(item,index) in companytype"
:label=
"item.dictLabel"
:value=
"item.dictValue"
></el-option>
</el-select>
<div
class=
"searchInput small"
>
<el-input
type=
"text"
placeholder=
"输入关键词查询"
clearable
v-model=
"searchParam.companyName"
>
<i
slot=
"prefix"
class=
"el-input__icon"
><img
src=
"@/assets/images/project/sousuo.png"
@
click=
"handleCurrentChange(1)"
></i></el-input>
<!--
<div
class=
"btn"
@
click=
"handleCurrentChange(1)"
>
搜索
</div>
-->
<div
@
mouseover=
"showSearchBox = true"
@
mouseleave=
"leaves"
>
<img
class=
"ss"
src=
"@/assets/images/enterprise/enterprise-search-icon.svg"
alt=
""
>
<span
class=
"cx"
v-if=
"!showSearchBox"
>
搜索
</span>
<el-input
v-if=
"showSearchBox"
@
keyup
.
enter
.
native=
"handleCurrentChange(1)"
clearable
@
clear=
"handleCurrentChange(1)"
v-model=
"searchParam.companyName"
placeholder=
"输入关键词查询"
></el-input>
</div>
</div>
<div
class=
"btn btn_primary h32 b3"
@
click=
"opennew"
v-if=
"isDisableds == false"
><div
class=
"img img1"
></div>
添加相关企业
</div>
</div>
...
...
@@ -241,6 +244,7 @@
showlist
:
false
,
companData
:[],
isSkeleton
:
true
,
showSearchBox
:
false
,
}
},
created
(){
...
...
@@ -253,6 +257,11 @@
mounted
(){
},
methods
:{
leaves
(){
if
(
this
.
searchParam
.
companyName
==
""
){
this
.
showSearchBox
=
false
}
},
getDetail
(
row
){
this
.
isedit
=
true
this
.
hzhbVisible
=
true
...
...
@@ -376,7 +385,52 @@
}
}
.searchInput
.el-input
{
width
:
68%
;
width
:
100%
;
position
:
absolute
;
left
:
0
;
top
:
0
;
margin-top
:
0
;
z-index
:
0
;
::v-deep
.el-input__inner
{
background
:
#F4F6F9
!
important
;
padding-left
:
36px
!
important
;
padding-right
:
35px
!
important
;
}
}
.searchInput.small
{
/*width: 257px;*/
border
:
0
;
border-radius
:
4px
!
important
;
.ss
{
position
:
absolute
;
z-index
:
1
;
left
:
13px
;
top
:
9px
;
width
:
13px
;
}
.cx
{
color
:
#232323
;
opacity
:
0
.8
;
font-size
:
14px
;
margin-left
:
36px
;
line-height
:
32px
;
}
input
:
:-
webkit-input-placeholder
{
/* Chrome/Opera/Safari */
color
:
#232323
;
opacity
:
0
.4
;
}
input
:
:-
moz-placeholder
{
/* Firefox 19+ */
color
:
#232323
;
opacity
:
0
.4
;
}
input
:
-
ms-input-placeholder
{
/* IE 10+ */
color
:
#232323
;
opacity
:
0
.4
;
}
input
:
-
moz-placeholder
{
/* Firefox 18- */
color
:
#232323
;
opacity
:
0
.4
;
}
}
.w102
{
width
:
102px
;
...
...
dsk-operate-ui/src/views/project/projectList/component/zlwd.vue
View file @
7c7b08c0
...
...
@@ -4,12 +4,13 @@
<el-card
class=
"box-card noborder"
>
<div
class=
"cardtitles"
>
资料文档
</div>
<div
class=
"searchbtns"
>
<!--
<div
class=
"searchbtns"
v-if=
"fileDatas.rows != null && fileDatas.rows.length>0"
>
-->
<div
class=
"searchInput small"
>
<el-input
type=
"text"
v-model=
"param.keyword"
clearable
placeholder=
"输入关键词查询"
>
<i
slot=
"prefix"
class=
"el-input__icon"
><img
src=
"@/assets/images/project/sousuo.png"
@
click=
"handleCurrentChange(1)"
></i>
</el-input>
<!--
<div
class=
"btn"
@
click=
"handleCurrentChange(1)"
>
搜索
</div>
-->
<div
@
mouseover=
"showSearchBox = true"
@
mouseleave=
"leaves"
>
<img
class=
"ss"
src=
"@/assets/images/enterprise/enterprise-search-icon.svg"
alt=
""
>
<span
class=
"cx"
v-if=
"!showSearchBox"
>
搜索
</span>
<el-input
v-if=
"showSearchBox"
@
keyup
.
enter
.
native=
"handleCurrentChange(1)"
clearable
@
clear=
"handleCurrentChange(1)"
v-model=
"param.keyword"
placeholder=
"输入关键词查询"
></el-input>
</div>
</div>
<!--
<div
class=
"btn btn_primary h32 b2"
@
click=
"getUP"
v-if=
"fileDatas.total>0"
><div
class=
"img img2"
></div>
上传
</div>
-->
...
...
@@ -188,6 +189,7 @@
isDisableds
:
this
.
isDisabled
,
keys
:
1
,
isSkeleton
:
true
,
showSearchBox
:
false
,
}
},
created
(){
...
...
@@ -195,6 +197,11 @@
// console.log(this.$ref)
},
methods
:{
leaves
(){
if
(
this
.
searchParam
.
companyName
==
""
){
this
.
showSearchBox
=
false
}
},
getall
(){
this
.
param
.
filePath
=
this
.
detailId
?
this
.
detailId
:
this
.
$route
.
query
.
id
this
.
filename
=
''
...
...
@@ -316,6 +323,55 @@
<
style
lang=
"scss"
scoped
>
.searchInput
.el-input
{
width
:
100%
;
position
:
absolute
;
left
:
0
;
top
:
0
;
margin-top
:
0
;
z-index
:
0
;
::v-deep
.el-input__inner
{
background
:
#F4F6F9
!
important
;
padding-left
:
36px
!
important
;
padding-right
:
35px
!
important
;
}
}
.searchInput.small
{
/*width: 257px;*/
border
:
0
;
border-radius
:
4px
!
important
;
.ss
{
position
:
absolute
;
z-index
:
1
;
left
:
13px
;
top
:
9px
;
width
:
13px
;
}
.cx
{
color
:
#232323
;
opacity
:
0
.8
;
font-size
:
14px
;
margin-left
:
36px
;
line-height
:
32px
;
}
input
:
:-
webkit-input-placeholder
{
/* Chrome/Opera/Safari */
color
:
#232323
;
opacity
:
0
.4
;
}
input
:
:-
moz-placeholder
{
/* Firefox 19+ */
color
:
#232323
;
opacity
:
0
.4
;
}
input
:
-
ms-input-placeholder
{
/* IE 10+ */
color
:
#232323
;
opacity
:
0
.4
;
}
input
:
-
moz-placeholder
{
/* Firefox 18- */
color
:
#232323
;
opacity
:
0
.4
;
}
}
v-deep
.el-upload
:focus
{
color
:
#FFFFFF
!
important
;
}
...
...
dsk-operate-ui/src/views/radar/Tender/details.vue
View file @
7c7b08c0
...
...
@@ -10,7 +10,7 @@
<span
class=
"list-label list-label-zb"
v-if=
"textList.tenderStage"
>
{{
textList
.
tenderStage
}}
</span>
<span
class=
"list-label"
v-if=
"textList.province||textList.city||textList.area"
>
{{
textList
.
province
}}
<template
v-if=
"textList.city"
>
-
{{
textList
.
city
}}
</
template
><
template
v-if=
"textList.area"
>
-
{{
textList
.
area
}}
</
template
></span>
<span
class=
"list-label list-label-zb"
v-if=
"textList.businessType"
>
{{textList.businessType}}
...
...
@@ -19,22 +19,22 @@
{{textList.industry}}
</span>
</div>
<div
class=
"list-content"
>
<p
class=
"list-content-text"
v-if=
"textList.tenderee"
>
<span>
招采单位:
</span>
<router-link
v-if=
"textList.tenderee"
:to=
"textList.tendereeUipId?'/enterprise/' + encodeStr(textList.tendereeId) :'/company/' + encodeStr(textList.tendereeId) "
tag=
"a"
class=
"list-titel-a blue"
v-html=
"textList.tenderee"
></router-link>
<span
v-else
>
--
</span>
</p>
<p
class=
"list-content-text"
v-if=
"textList.agency"
>
<span>
代理单位:
</span>
<router-link
v-if=
"textList.agency"
:to=
"textList.agencyUipId?'/enterprise/' + encodeStr(textList.agencyId) :'/company/' + encodeStr(textList.agencyId) "
tag=
"a"
class=
"list-titel-a blue"
v-html=
"textList.agency"
></router-link>
<span
v-else
>
--
</span>
</p>
</div>
<div
class=
"list-content"
v-if=
"textList.projectAmount||textList.contact"
>
<p
class=
"list-content-text"
v-if=
"textList.projectAmount"
>
...
...
@@ -47,7 +47,7 @@
<span
>
招采单位 {{textList.contact}}{{textList.contactTel}}
</span>
</p>
</div>
<div
class=
"list-content"
v-if=
"textList.issueTime||textList.overTime||textList.dataSource"
>
<p
class=
"list-content-text"
v-if=
"textList.issueTime"
>
<span>
发布时间:
</span>
...
...
@@ -66,7 +66,7 @@
<span
>
{{textList.dataSource||'--'}}
</span>
</p>
</div>
</li>
</ul>
...
...
@@ -82,20 +82,20 @@
</span>
</div>
<div
class=
"main3-box"
v-html=
"textList.content"
>
</div>
</div>
</div>
</template>
<
script
>
import
"@/assets/styles/public.scss"
;
import
api
from
'@/api/radar/radar.js'
;
import
{
encodeStr
}
from
"@/assets/js/common.js"
import
{
encodeStr
,
removeTag
,
checkTag
}
from
"@/assets/js/common.js"
export
default
{
name
:
'TenderDetails'
,
...
...
@@ -118,11 +118,13 @@
}).
then
(
res
=>
{
// console.log(res);
this
.
textList
=
res
.
data
;
this
.
textList
.
content
=
removeTag
(
res
.
data
.
content
,
'link,meta'
,
'script,style'
,
'href,target,style'
)
//采集详情针对性处理
this
.
textList
.
content
=
checkTag
(
res
.
data
.
content
,
'h1,a'
,
'b,span'
)
//采集详情针对性处理
}).
catch
(
error
=>
{
});
},
}
}
...
...
@@ -325,7 +327,7 @@
min-height
:
400px
;
border
:
1px
solid
#D8D8D8
;
padding
:
16px
;
overflow
:
hidden
;
}
.list-content-img
{
position
:
absolute
;
...
...
@@ -349,4 +351,4 @@
}
</
style
>
\ No newline at end of file
</
style
>
dsk-operate-ui/src/views/radar/index.vue
View file @
7c7b08c0
...
...
@@ -9,7 +9,7 @@
<p>
{{
itme
.
value
}}
</p>
</div>
</div>
</div>
</div>
<p
class=
"solid"
></p>
...
...
@@ -25,13 +25,13 @@
<!-- 招标计划 -->
<Bidding
v-if=
"personnelHerf=='Bidding'"
/>
<!-- 标讯pro -->
<
bxprozbgg
v-if=
"personnelHerf=='bxprozbgg'"
/
>
<
!--
<bxprozbgg
v-if=
"personnelHerf=='bxprozbgg'"
/>
--
>
<!-- 公招标讯 -->
<Tender
v-if=
"personnelHerf=='Tender'"
/>
<!-- 开标记录 -->
<BidRecord
v-if=
"personnelHerf=='BidRecord'"
/>
</div>
</
template
>
...
...
@@ -44,7 +44,7 @@
import
BidRecord
from
"./components/BidRecord/index.vue"
;
import
Bidding
from
"./components/Bidding/index.vue"
;
import
MajorProject
from
"./components/MajorProject/index.vue"
;
import
"@/assets/styles/public.scss"
;
export
default
{
name
:
'Radar'
,
...
...
@@ -80,25 +80,25 @@
key
:
'Bidding'
,
status
:
false
,
value
:
'招标计划'
,
},
{
key
:
'bxprozbgg'
,
status
:
false
,
value
:
'标讯pro'
,
},
// {
// key: 'bxprozbgg',
// status: false,
// value: '标讯pro',
//
// },
{
key
:
'Tender'
,
status
:
false
,
value
:
'公招标讯'
,
},
{
key
:
'BidRecord'
,
status
:
false
,
value
:
'开标记录'
,
},
],
...
...
@@ -121,7 +121,7 @@
</
script
>
<
style
lang=
"scss"
scoped
>
.app-container
{
margin
:
12px
24px
;
padding
:
0
;
...
...
@@ -129,7 +129,7 @@
.content
{
padding
:
0px
16px
;
background
:
#FFFFFF
;
}
.app-container
.combined-title
{
...
...
@@ -261,4 +261,4 @@
border-bottom
:
2px
solid
#0081FF
;
font-weight
:
bold
;
}
</
style
>
\ No newline at end of file
</
style
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment