Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
dsk-operate-sys-cscec
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
fulixin
dsk-operate-sys-cscec
Commits
d96a96bf
Commit
d96a96bf
authored
Oct 26, 2023
by
tianhongyang
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'V20230915' of
http://192.168.60.201/root/dsk-operate-sys
into V20230915
parents
12daede2
0134508f
Changes
24
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
1063 additions
and
278 deletions
+1063
-278
application.yml
dsk-admin/src/main/resources/application.yml
+1
-0
PasswordUtils.java
...mon/src/main/java/com/dsk/common/utils/PasswordUtils.java
+11
-6
BusinessOpenTenderController.java
.../com/dsk/biz/controller/BusinessOpenTenderController.java
+105
-0
BusinessOpenTender.java
.../src/main/java/com/dsk/biz/domain/BusinessOpenTender.java
+60
-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
+69
-0
EconomicServiceImpl.java
...com/dsk/jsk/service/service/impl/EconomicServiceImpl.java
+1
-1
enterpriseManagement.js
...e-ui/src/api/enterpriseManagement/enterpriseManagement.js
+8
-0
index.js
dsk-operate-ui/src/router/index.js
+333
-20
addCustom.vue
dsk-operate-ui/src/views/custom/component/addCustom.vue
+4
-6
index.vue
dsk-operate-ui/src/views/custom/overview/index.vue
+4
-1
detail.vue
dsk-operate-ui/src/views/detail.vue
+143
-0
members.vue
...te-ui/src/views/detail/groupAccount/component/members.vue
+3
-0
zbxmfx.vue
...ate-ui/src/views/detail/groupAccount/component/zbxmfx.vue
+18
-18
index.vue
...iews/enterpriseData/components/SearchEnterprise/index.vue
+51
-23
index.vue
dsk-operate-ui/src/views/enterpriseManagement/index.vue
+49
-1
index.vue
dsk-operate-ui/src/views/macro/financing/index.vue
+1
-2
zhongbiao.vue
...src/views/macro/nationalEconomies/component/zhongbiao.vue
+19
-4
index.vue
dsk-operate-ui/src/views/market/index.vue
+32
-2
xgqy.vue
...erate-ui/src/views/project/projectList/component/xgqy.vue
+45
-94
zlwd.vue
...erate-ui/src/views/project/projectList/component/zlwd.vue
+54
-98
vue.config.js
dsk-operate-ui/vue.config.js
+2
-2
No files found.
dsk-admin/src/main/resources/application.yml
View file @
d96a96bf
...
...
@@ -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/utils/PasswordUtils.java
View file @
d96a96bf
...
...
@@ -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 @
d96a96bf
package
com
.
dsk
.
biz
.
controller
;
import
com.dsk.biz.domain.BusinessOpenTender
;
import
com.dsk.biz.domain.bo.BusinessOpenTenderDto
;
import
com.dsk.biz.service.IBusinessOpenTenderService
;
import
com.dsk.biz.utils.ExcelUtils
;
import
com.dsk.common.annotation.Log
;
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
com.dsk.common.enums.BusinessType
;
import
com.dsk.common.exception.BusinessException
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.util.ObjectUtils
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* 项目开标记录
*
* @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
));
}
/**
* 批量导入
*/
@Log
(
title
=
"开标记录批量导入"
,
businessType
=
BusinessType
.
IMPORT
)
@PostMapping
(
"/importData/{businessId}"
)
public
R
<
Map
<
String
,
Object
>>
importData
(
@RequestPart
(
"file"
)
MultipartFile
file
,
@PathVariable
Integer
businessId
)
throws
Exception
{
List
<
BusinessOpenTender
>
list
=
new
ExcelUtils
<>(
BusinessOpenTender
.
class
).
importExcel
(
file
.
getInputStream
(),
1
);
if
(
list
.
isEmpty
())
throw
new
BusinessException
(
"请填写导入数据!"
);
int
sucessCount
=
0
;
List
<
String
>
errorList
=
new
ArrayList
<>();
for
(
BusinessOpenTender
openTender
:
list
)
{
if
(
ObjectUtils
.
isEmpty
(
openTender
.
getTenderer
()))
{
errorList
.
add
(
"投标人不能为空!"
);
continue
;
}
openTender
.
setBusinessId
(
businessId
);
try
{
int
add
=
baseService
.
add
(
openTender
);
if
(
add
>
0
)
{
sucessCount
++;
}
}
catch
(
Exception
e
)
{
errorList
.
add
(
openTender
.
getTenderer
().
concat
(
":"
).
concat
(
e
.
getMessage
()));
}
}
Map
<
String
,
Object
>
result
=
new
HashMap
<>();
result
.
put
(
"sucessCount"
,
sucessCount
);
result
.
put
(
"errorCount"
,
list
.
size
()
-
sucessCount
);
result
.
put
(
"errorMsg"
,
errorList
);
return
R
.
ok
(
result
);
}
}
dsk-module/dsk-biz-api/src/main/java/com/dsk/biz/domain/BusinessOpenTender.java
0 → 100644
View file @
d96a96bf
package
com
.
dsk
.
biz
.
domain
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.dsk.common.annotation.Excel
;
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
.
ASSIGN_ID
)
private
Long
id
;
/**
* 项目id
*/
private
Integer
businessId
;
/**
* 投标人id
*/
private
Integer
tendererId
;
/**
* 投标人
*/
@Excel
(
name
=
"投标人"
)
private
String
tenderer
;
/**
* 企业性质
*/
@Excel
(
name
=
"企业性质"
)
private
String
tendererNature
;
/**
* 项目经理
*/
@Excel
(
name
=
"项目经理"
)
private
String
businessManager
;
/**
* 联系方式
*/
@Excel
(
name
=
"联系方式"
)
private
String
contact
;
/**
* 投标金额
*/
@Excel
(
name
=
"投标金额(万元)"
)
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 @
d96a96bf
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 @
d96a96bf
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 @
d96a96bf
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 @
d96a96bf
package
com
.
dsk
.
biz
.
service
.
impl
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.dsk.biz.domain.BusinessOpenTender
;
import
com.dsk.biz.domain.bo.BusinessOpenTenderDto
;
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
com.dsk.common.exception.ServiceException
;
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.util.Arrays
;
/**
* @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
);
BusinessOpenTender
openTender
=
baseMapper
.
selectOne
(
Wrappers
.<
BusinessOpenTender
>
lambdaQuery
()
.
eq
(
BusinessOpenTender:
:
getTenderer
,
bo
.
getTenderer
())
.
eq
(
BusinessOpenTender:
:
getBusinessId
,
bo
.
getBusinessId
()));
if
(!
ObjectUtils
.
isEmpty
(
openTender
))
throw
new
ServiceException
(
"当前投标人已存在"
);
return
baseMapper
.
insert
(
bo
);
}
@Override
public
int
edit
(
BusinessOpenTender
bo
)
{
if
(
ObjectUtils
.
isArray
(
bo
.
getId
()))
throw
new
BeanException
(
"id不能为空!"
);
verifyBean
(
bo
);
BusinessOpenTender
openTender
=
baseMapper
.
selectOne
(
Wrappers
.<
BusinessOpenTender
>
lambdaQuery
()
.
eq
(
BusinessOpenTender:
:
getTenderer
,
bo
.
getTenderer
())
.
eq
(
BusinessOpenTender:
:
getBusinessId
,
bo
.
getBusinessId
()));
if
(!
ObjectUtils
.
isEmpty
(
openTender
)
&&
!
openTender
.
getId
().
equals
(
bo
.
getId
()))
throw
new
ServiceException
(
"当前投标人已存在"
);
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/service/impl/EconomicServiceImpl.java
View file @
d96a96bf
...
...
@@ -57,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
();
...
...
dsk-operate-ui/src/api/enterpriseManagement/enterpriseManagement.js
View file @
d96a96bf
...
...
@@ -37,6 +37,14 @@ export function getTenantPackage(param) {
params
:
param
})
}
//同步企业方案
export
function
syncTenantPackage
(
param
)
{
return
request
({
url
:
'/system/tenant/syncTenantPackage'
,
method
:
'get'
,
params
:
param
})
}
//租户列表
export
function
getTenantList
(
param
)
{
...
...
dsk-operate-ui/src/router/index.js
View file @
d96a96bf
...
...
@@ -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'
,
noCache
:
true
}
}
]
},
...
...
@@ -130,20 +130,6 @@ export const constantRoutes = [
}
]
},
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/performance/gzsc/:id'
,
component
:
()
=>
import
(
'@/views/market/detail'
),
name
:
'GzscDetail'
,
meta
:
{
title
:
'公招市场详情'
,
icon
:
'enterprise'
},
}
]
},
{
path
:
'/groupAccount'
,
component
:
Layout
,
...
...
@@ -173,6 +159,7 @@ export const constantRoutes = [
}
]
},
//乙方-企业详情
{
path
:
'/company'
,
component
:
Layout
,
...
...
@@ -181,12 +168,104 @@ export const constantRoutes = [
children
:
[
{
path
:
'/company/:id'
,
component
:
()
=>
import
(
'@/views/detail
/party-b/index
'
),
component
:
()
=>
import
(
'@/views/detail'
),
name
:
'Company'
,
meta
:
{
title
:
'企业详情'
}
}
]
},
//企业详情-业绩
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/company/:id/performance'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//企业详情-人员
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/company/:id/personnel'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//企业详情-经营信息
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/company/:id/business'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//企业详情-良好行为
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/company/:id/behavior'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//企业详情-信用评价
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/company/:id/evaluation'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//企业详情-信用行为
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/company/:id/credit'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//企业详情-股权
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/company/:id/lt'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//人员详情
{
path
:
'/personnel'
,
component
:
Layout
,
...
...
@@ -194,13 +273,249 @@ 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
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/honor/:id.html'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//标讯Pro-招标公告
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/bxpro/:id.html'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//中标候选人
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/zbpro/:id.html'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//开标记录
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/biz/tbjl/:id.html'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//一体化详情
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/performance/sjyth/:id.html'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//一体化详情
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/performance/yth/:id.html'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//四库详情
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/performance/sky/:id.html'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//公路系统详情
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/performance/glxt/:id.html'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//公路系统详情
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/performance/xmzt/:id.html'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//水利详情
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/performance/slyj/:id.html'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//江西住建云详情
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/performance/jxzjy/:id.html'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//北京业绩详情
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/performance/bj/:id.html'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//云南业绩详情
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/performance/yn/:id.html'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//商机-标讯详情
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/biz/bx/:id.html'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//商机-土地交易详情
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/biz/tdjy/:id.html'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
//商机-拟建项目详情
{
path
:
''
,
component
:
Layout
,
hidden
:
true
,
redirect
:
'noredirect'
,
children
:
[
{
path
:
'/biz/njxm/:id.html'
,
component
:
()
=>
import
(
'@/views/detail'
),
}
]
},
{
path
:
'/structure'
,
component
:
Layout
,
...
...
@@ -362,8 +677,6 @@ export const constantRoutes = [
]
},
]
// 动态路由,基于用户权限动态去加载
...
...
dsk-operate-ui/src/views/custom/component/addCustom.vue
View file @
d96a96bf
...
...
@@ -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/overview/index.vue
View file @
d96a96bf
...
...
@@ -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 @
d96a96bf
<
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'
;
import
{
encodeStr
}
from
"@/assets/js/common.js"
import
{
getUipIdByCid
}
from
'@/api/macro/macro'
export
default
{
name
:
'Enterprise'
,
components
:
{
},
data
()
{
return
{
encodeStr
,
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页面是否加载完成-当前页控制
window
.
addEventListener
(
'message'
,
this
.
linkListener
,
false
);
steerScroll
(
'companyIframe'
,
this
.
navigation
,
this
.
footHeight
,
true
);
// iframeId: iframe的id;navigation:页面排除iframe后剩下的顶部高度;footHeight: 页面排除iframe后剩下的底部高度;state:监听or移除监听;parentId: 父级id[不带默认就是铺满整个页面]];_this:指向当前实例(可忽略)
},
beforeDestroy
()
{
clearInterval
(
this
.
iframeTimer
);
// -当前页控制
window
.
removeEventListener
(
"message"
,
this
.
linkListener
);
steerScroll
(
'companyIframe'
,
this
.
navigation
,
this
.
footHeight
);
// iframeId: iframe的id;navigation:页面排除iframe后剩下的顶部高度;footHeight: 页面排除iframe后剩下的底部高度;state:监听or移除监听;parentId: 父级id[不带默认就是铺满整个页面]];_this:指向当前实例(可忽略)
clearInterval
(
this
.
tokentimer
);
},
methods
:
{
linkListener
(
event
){
let
{
data
}
=
event
if
(
data
.
id
){
getUipIdByCid
([
data
.
id
]).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
if
(
res
.
data
&&
res
.
data
.
length
>
0
&&
res
.
data
[
0
].
uipId
){
this
.
$router
.
push
({
path
:
'/enterprise/'
+
this
.
encodeStr
(
data
.
id
)})
}
else
{
this
.
$tab
.
openPage
(
data
.
title
,
'/company/'
+
this
.
encodeStr
(
data
.
id
))
}
}
}).
catch
(
error
=>
{
});
}
else
{
if
(
data
.
url
){
this
.
$tab
.
openPage
(
data
.
title
,
data
.
url
).
then
(()
=>
{
// 执行结束的逻辑
})
}
}
},
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 @
d96a96bf
...
...
@@ -250,6 +250,9 @@
this
.
paramsData
=
params
||
{};
this
.
tableLoading
=
true
;
let
data
=
this
.
getAreaList
(
params
||
this
.
queryParams
)
if
(
!
data
.
combineId
){
data
.
combineId
=
this
.
customerId
;
}
memberList
(
data
).
then
(
res
=>
{
this
.
isSkeleton
=
false
this
.
tableLoading
=
false
...
...
dsk-operate-ui/src/views/detail/groupAccount/component/zbxmfx.vue
View file @
d96a96bf
...
...
@@ -576,11 +576,11 @@
legend
:
{
data
:
[
{
name
:
'招标数量'
,
name
:
'招标数量
(个)
'
,
// icon: 'rect',
},
{
name
:
'招标金额
(
万元)'
,
name
:
'招标金额
(
万元)'
,
// icon: 'circle',
}
],
...
...
@@ -643,7 +643,7 @@
},
series
:
[
{
name
:
'招标金额
(
万元)'
,
name
:
'招标金额
(
万元)'
,
smooth
:
false
,
//平滑
type
:
"line"
,
symbolSize
:
6
,
...
...
@@ -664,12 +664,12 @@
data
:
data
.
map
(
item
=>
item
.
sum
),
},
{
name
:
'招标数量'
,
name
:
'招标数量
(个)
'
,
type
:
'bar'
,
barWidth
:
20
,
tooltip
:
{
valueFormatter
:
function
(
value
)
{
return
value
+
'个'
;
return
value
;
}
},
itemStyle
:
{
...
...
@@ -754,23 +754,23 @@
axisPointer
:
{
type
:
'cross'
},
formatter
:
function
(
params
)
{
var
relVal
=
params
[
0
].
name
;
// relVal+='
<
br
/>
' +"<span style=
\
"display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:#f17f0a;
\
"></span>" + '
次数
' +": "+ array[0][relVal.replace(/"/g, '')]
for (var i = 0, l = params.length; i < l; i++) {
relVal += '
<
br
/>
' + params[i].marker + params[i].seriesName +": "+ params[i].value
}
return relVal
}
//
formatter: function (params) {
//
var relVal = params[0].name;
//
// relVal+='
<
br
/>
' +"<span style=
\
"display:inline-block;margin-right:4px;border-radius:10px;width:10px;height:10px;background-color:#f17f0a;
\
"></span>" + '
次数
' +": "+ array[0][relVal.replace(/"/g, '')]
//
for (var i = 0, l = params.length; i < l; i++) {
//
relVal += '
<
br
/>
' + params[i].marker + params[i].seriesName +": "+ params[i].value
//
}
//
return relVal
//
}
},
legend: {
data: [
{
name: '
招标数量
',
name: '
招标数量
(个)
',
// icon: '
rect
',
},
{
name: '
招标金额
(
万元)
',
name: '
招标金额
(
万元)
',
// icon: '
circle
',
}
],
...
...
@@ -833,7 +833,7 @@
},
series: [
{
name:'
招标金额
(
万元)
',
name:'
招标金额
(
万元)
',
smooth: false, //平滑
type:"line",
symbolSize: 6,
...
...
@@ -854,12 +854,12 @@
data:data.map(item => item.sum),
},
{
name:'
招标数量
',
name:'
招标数量
(个)
',
type: '
bar
',
barWidth: 20,
tooltip: {
valueFormatter: function (value) {
return value
+ '
个
'
;
return value;
}
},
itemStyle: {
...
...
dsk-operate-ui/src/views/enterpriseData/components/SearchEnterprise/index.vue
View file @
d96a96bf
...
...
@@ -446,9 +446,12 @@
</div>
<div
class=
"info-list-right"
>
<p
class=
"card-right-title"
>
<
router-link
:to=
"toEnterpriseDetail(item.jskEid
)"
>
<
span
@
click=
"toEnterpriseDetail(item.jskEid,item.name
)"
>
<span
class=
"title"
v-html=
"item.name"
>
</span>
</router-link>
</span>
<!-- <router-link :to="toEnterpriseDetail(item.jskEid,item.name)">
<span class="title" v-html="item.name"> </span>
</router-link> -->
</p>
<p
class=
"card-right-title card-right-title1"
:ref=
"'labels'+item.id"
:style=
"{padding: '16px 0px 12px 0px'}"
>
...
...
@@ -485,51 +488,75 @@
<p
class=
"card-right-title"
style=
"padding-top: 8px ;"
>
<
template
v-if=
"item.aptitudeCountNew!=null"
>
<span
class=
"right-title-grey"
>
资质资格:
</span>
<
router-link
:to=
"toEnterprise(item.jskEid,'')"
target=
"_blank
"
>
<
span
@
click=
"toEnterprise(item.jskEid,'','',item.name)
"
>
<span
class=
"right-title-blue"
v-html=
"item.aptitudeCountNew"
>
</span>
</router-link>
</span>
<!--
<router-link
:to=
"toEnterprise(item.jskEid,'','',item.name)"
>
<span
class=
"right-title-blue"
v-html=
"item.aptitudeCountNew"
>
</span>
</router-link>
-->
</
template
>
<
template
v-if=
"item.recentlyCount!=null"
>
<span
class=
"right-title-grey"
>
中标业绩:
</span>
<router-link
:to=
"toEnterprise(item.jskEid,'performance')"
target=
"_blank"
>
<span
@
click=
"toEnterprise(item.jskEid,'performance','',item.name)"
>
<span
class=
"right-title-blue"
v-html=
"item.recentlyCount"
>
</span>
</span>
<!--
<router-link
:to=
"toEnterprise(item.jskEid,'performance')"
>
<span
class=
"right-title-blue"
v-html=
"item.recentlyCount"
>
</span>
</router-link>
</router-link>
-->
</
template
>
<
template
v-if=
"item.skyCount!=null"
>
<span
class=
"right-title-grey"
>
四库业绩:
</span>
<router-link
:to=
"toEnterprise(item.jskEid,'performance',2)"
target=
"_blank"
>
<span
@
click=
"toEnterprise(item.jskEid,'performance',2,item.name)"
>
<span
class=
"right-title-blue"
v-html=
"item.skyCount"
>
</span>
</span>
<!--
<router-link
:to=
"toEnterprise(item.jskEid,'performance',2)"
>
<span
class=
"right-title-blue"
v-html=
"item.skyCount"
>
</span>
</router-link>
</router-link>
-->
</
template
>
<
template
v-if=
"item.registeredPersonnelCount!=null"
>
<span
class=
"right-title-grey"
>
注册人员:
</span>
<router-link
:to=
"toEnterprise(item.jskEid,'personnel',2)"
target=
"_blank"
>
<span
@
click=
"toEnterprise(item.jskEid,'personnel',2,item.name)"
>
<span
class=
"right-title-blue"
v-html=
"item.registeredPersonnelCount"
>
</span>
</span>
<!--
<router-link
:to=
"toEnterprise(item.jskEid,'personnel',2)"
>
<span
class=
"right-title-blue"
v-html=
"item.registeredPersonnelCount"
>
</span>
</router-link>
</router-link>
-->
</
template
>
<
template
v-if=
"item.threePersonnelCount!=null"
>
<span
class=
"right-title-grey"
>
三类人员:
</span>
<
router-link
:to=
"toEnterprise(item.jskEid,'personnel',5)"
target=
"_blank
"
>
<
span
@
click=
"toEnterprise(item.jskEid,'personnel',5,item.name)
"
>
<span
class=
"right-title-blue"
v-html=
"item.threePersonnelCount"
>
</span>
</router-link>
</span>
<!--
<router-link
:to=
"toEnterprise(item.jskEid,'personnel',5)"
>
<span
class=
"right-title-blue"
v-html=
"item.threePersonnelCount"
>
</span>
</router-link>
-->
</
template
>
<
template
v-if=
"item.jskBidCount>0"
>
<span
class=
"right-title-grey"
>
招标公告:
</span>
<
router-link
:to=
"toEnterprise(item.jskEid,'business',5)"
target=
"_blank
"
>
<
span
@
click=
"toEnterprise(item.jskEid,'business',5,item.name)
"
>
<span
class=
"right-title-blue"
v-html=
"item.jskBidCount"
>
</span>
</router-link>
</span>
<!--
<router-link
:to=
"toEnterprise(item.jskEid,'business',5)"
>
<span
class=
"right-title-blue"
v-html=
"item.jskBidCount"
>
</span>
</router-link>
-->
</
template
>
<
template
v-if=
"item.customerCount>0"
>
<span
class=
"right-title-grey"
>
客户:
</span>
<
router-link
:to=
"toEnterprise(item.jskEid,'business',1)"
target=
"_blank
"
>
<
span
@
click=
"toEnterprise(item.jskEid,'business',1,item.name)
"
>
<span
class=
"right-title-blue"
v-html=
"item.customerCount"
>
</span>
</router-link>
</span>
<!--
<router-link
:to=
"toEnterprise(item.jskEid,'business',1)"
>
<span
class=
"right-title-blue"
v-html=
"item.customerCount"
>
</span>
</router-link>
-->
</
template
>
<
template
v-if=
"item.supplierCount>0"
>
<span
class=
"right-title-grey"
>
供应商:
</span>
<router-link
:to=
"toEnterprise(item.jskEid,'business',2)"
target=
"_blank"
>
<span
@
click=
"toEnterprise(item.jskEid,'business',2,item.name)"
>
<span
class=
"right-title-blue"
v-html=
"item.supplierCount"
>
</span>
</span>
<!--
<router-link
:to=
"toEnterprise(item.jskEid,'business',2)"
>
<span
class=
"right-title-blue"
v-html=
"item.supplierCount"
>
</span>
</router-link>
</router-link>
-->
</
template
>
</p>
<p
class=
"card-right-title"
v-if=
"item.formerName!=null&&(item.formerName.indexOf('color')!=-1||item.name.indexOf('color')!=-1)"
...
...
@@ -2748,12 +2775,13 @@ export default {
},
toEnterprise
(
id
,
html
,
type
)
{
return
'/company/'
+
encodeStr
(
id
)
+
'/'
+
(
html
?
'?html='
+
html
:
''
)
+
(
type
?
'&flag=true&type='
+
type
:
''
);
toEnterprise
(
id
,
html
,
type
,
name
)
{
// this.$tab.openPage(name, '/company/' + encodeStr(id) + '/' + (html ? '?html=' + html : '') + (type ? '&flag=true&type=' + type : ''))
this
.
$router
.
push
({
path
:
'/company/'
+
encodeStr
(
id
)
+
'/'
+
(
html
?
html
:
''
)
+
(
type
?
'?flag=true&type='
+
type
:
''
)}
)
},
toEnterpriseDetail
(
id
)
{
return
'/company/'
+
encodeStr
(
id
)
+
'/?index=true'
;
toEnterpriseDetail
(
id
,
name
)
{
// this.$tab.openPage(name, '/company/' + encodeStr(id) + '/?index=true')
this
.
$router
.
push
({
path
:
'/company/'
+
encodeStr
(
id
)
+
'/?index=true'
}
)
},
labelsWidth
(
e
,
t
=
0
)
{
...
...
dsk-operate-ui/src/views/enterpriseManagement/index.vue
View file @
d96a96bf
...
...
@@ -97,6 +97,12 @@
</el-table-column>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
fixed=
"right"
>
<
template
slot-scope=
"scope"
v-if=
"scope.row.roleId !== 1"
>
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-refresh"
@
click=
"handleSync(scope.row)"
>
同步
</el-button>
<el-button
size=
"mini"
type=
"text"
...
...
@@ -205,6 +211,19 @@
<el-button
@
click=
"cancel"
>
取 消
</el-button>
</div>
</el-dialog>
<el-dialog
title=
"权限同步"
:visible
.
sync=
"dialogVisible1"
custom-class=
"sync"
width=
"400px"
>
<p
style=
"font-size: 16px;"
><i
class=
"el-icon-warning-outline"
style=
"margin-right: 8px;"
></i>
是否确认同步?
</p>
<p>
温馨提示:此操作可能会影响正在使用的用户,建议合理安排同步时间
</p>
<div
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"dialogVisible1 = false"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"handleConfirm()"
>
同步
</el-button>
</div>
</el-dialog>
</div>
</template>
...
...
@@ -215,7 +234,8 @@
getTenant
,
getTenantList
,
saveTenant
,
selectTenant
selectTenant
,
syncTenantPackage
}
from
'@/api/enterpriseManagement/enterpriseManagement'
export
default
{
...
...
@@ -242,6 +262,7 @@
title
:
""
,
// 是否显示弹出层
open
:
false
,
dialogVisible1
:
false
,
// 查询参数
queryParams
:
{
pageNum
:
1
,
...
...
@@ -284,6 +305,7 @@
},
//企业方案列表
packageList
:[],
syncItem
:{}
};
},
created
()
{
...
...
@@ -360,6 +382,22 @@
this
.
title
=
"添加企业"
;
this
.
getpack
()
},
/** 同步弹窗显示 */
handleSync
(
row
)
{
this
.
dialogVisible1
=
true
;
this
.
syncItem
=
row
;
},
/** 同步按钮操作 */
handleConfirm
()
{
let
_this
=
this
syncTenantPackage
({
tenantId
:
this
.
syncItem
.
tenantId
,
packageId
:
this
.
syncItem
.
packageId
}).
then
(
res
=>
{
if
(
res
.
code
===
200
){
_this
.
$message
.
success
(
res
.
msg
);
this
.
dialogVisible1
=
false
;
}
});
},
/** 修改按钮操作 */
handleUpdate
(
row
)
{
this
.
disabled
=
false
...
...
@@ -447,4 +485,14 @@
}
};
</
script
>
<
style
lang=
"scss"
scoped
>
::v-deep
.sync
{
.el-dialog__header
{
border-bottom
:
1px
solid
#eee
;
}
.el-dialog__body
{
padding
:
15px
20px
}
}
</
style
>
dsk-operate-ui/src/views/macro/financing/index.vue
View file @
d96a96bf
...
...
@@ -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/zhongbiao.vue
View file @
d96a96bf
...
...
@@ -529,7 +529,7 @@
yAxisIndex
:
1
,
tooltip
:
{
valueFormatter
:
function
(
value
)
{
return
value
+
'万元'
return
value
}
},
itemStyle
:
{
...
...
@@ -543,7 +543,7 @@
barWidth
:
20
,
tooltip
:
{
valueFormatter
:
function
(
value
)
{
return
value
+
'个'
;
return
value
;
}
},
itemStyle
:
{
...
...
@@ -791,7 +791,7 @@
yAxisIndex
:
1
,
tooltip
:
{
valueFormatter
:
function
(
value
)
{
return
value
+
'万元'
return
value
}
},
itemStyle
:
{
...
...
@@ -805,7 +805,7 @@
barWidth
:
20
,
tooltip
:
{
valueFormatter
:
function
(
value
)
{
return
value
+
'个'
;
return
value
;
}
},
itemStyle
:
{
...
...
@@ -977,6 +977,11 @@
smooth
:
false
,
//平滑
type
:
"line"
,
symbolSize
:
6
,
//折线拐点大小
tooltip
:
{
valueFormatter
:
function
(
value
)
{
return
value
+
'%'
;
}
},
itemStyle
:
{
normal
:
{
borderWidth
:
4
,
...
...
@@ -990,6 +995,11 @@
smooth
:
false
,
//平滑
type
:
"line"
,
symbolSize
:
6
,
//折线拐点大小
tooltip
:
{
valueFormatter
:
function
(
value
)
{
return
value
+
'%'
;
}
},
itemStyle
:
{
normal
:
{
borderWidth
:
4
,
...
...
@@ -1003,6 +1013,11 @@
smooth
:
false
,
//平滑
type
:
"line"
,
symbolSize
:
6
,
//折线拐点大小
tooltip
:
{
valueFormatter
:
function
(
value
)
{
return
value
+
'%'
;
}
},
itemStyle
:
{
normal
:
{
borderWidth
:
4
,
...
...
dsk-operate-ui/src/views/market/index.vue
View file @
d96a96bf
...
...
@@ -11,7 +11,9 @@
<
script
>
import
{
steerScroll
}
from
'@/assets/js/jskplug'
;
import
{
dskAccessToken
}
from
'@/api/common'
;
import
{
encodeStr
}
from
"@/assets/js/common"
import
MaxPageSizeTip
from
"@/views/components/MaxPageSizeTip.vue"
;
import
{
getUipIdByCid
}
from
'@/api/macro/macro'
export
default
{
name
:
'Enterprise'
,
components
:
{
...
...
@@ -19,6 +21,7 @@ export default {
},
data
()
{
return
{
encodeStr
,
loading
:
false
,
// 是否加载完成-当前页控制
iframeTimer
:
''
,
// 是否加载中定时器-当前页控制
footHeight
:
0
,
//底部高度,若为0(页面内部嵌套或者没有底部板块)
...
...
@@ -39,12 +42,15 @@ export default {
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.104:3400'
;
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'
,
this
.
linkListener
,
false
);
},
mounted
()
{
this
.
iframeLoading
();
// 判断iframe页面是否加载完成-当前页控制
...
...
@@ -55,10 +61,34 @@ export default {
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
});
window
.
removeEventListener
(
"message"
,
this
.
linkListener
);
// 移除layout样式
this
.
iframeIns
.
contentWindow
.
postMessage
(
"removeHtmlLayoutStyle"
,
{
targetOrigin
:
this
.
domain
,
});
},
methods
:
{
linkListener
(
event
){
let
{
data
}
=
event
if
(
data
.
id
){
getUipIdByCid
([
data
.
id
]).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
if
(
res
.
data
&&
res
.
data
.
length
>
0
&&
res
.
data
[
0
].
uipId
){
this
.
$router
.
push
({
path
:
'/enterprise/'
+
this
.
encodeStr
(
data
.
id
)})
}
else
{
this
.
$tab
.
openPage
(
data
.
title
,
'/company/'
+
this
.
encodeStr
(
data
.
id
))
}
}
}).
catch
(
error
=>
{
});
}
else
{
if
(
data
.
url
){
this
.
$tab
.
openPage
(
data
.
title
,
data
.
url
).
then
(()
=>
{
// 执行结束的逻辑
})
}
}
},
async
iframeObserver
()
{
try
{
await
this
.
$nextTick
();
...
...
dsk-operate-ui/src/views/project/projectList/component/xgqy.vue
View file @
d96a96bf
...
...
@@ -8,18 +8,12 @@
<el-option
v-for=
"(item,index) in companytype"
:label=
"item.dictLabel"
:value=
"item.dictValue"
></el-option>
</el-select>
<div
class=
"searchInput small"
>
<div
class=
"normal-search-container"
@
click=
"showSearchBox = true"
v-if=
"!showSearchBox"
>
<img
src=
"@/assets/images/enterprise/enterprise-search-icon.svg"
alt=
""
>
<span>
输入关键词查询
</span>
<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>
<!--<!– 输入框展开后样式 –>-->
<transition
@
enter=
"onEnter"
appear
mode=
"out-in"
>
<div
class=
"cooperate-name enterprise-search-container"
id=
"focus1"
v-if=
"showSearchBox"
>
<el-input
clearable
@
clear=
"handleCurrentChange(1)"
@
focus=
"clickFocus('focus1')"
@
blur=
"clickFocus('focus1')"
v-model=
"searchParam.companyName"
placeholder=
"输入关键词查询"
></el-input>
<span
@
click=
"handleCurrentChange(1)"
>
搜索
</span>
</div>
</transition>
</div>
<div
class=
"btn btn_primary h32 b3"
@
click=
"opennew"
v-if=
"isDisableds == false"
><div
class=
"img img1"
></div>
添加相关企业
</div>
</div>
...
...
@@ -196,7 +190,6 @@
import
{
addXGQY
,
delXGQY
,
getXGQY
,
saveXGQY
}
from
'@/api/project/project'
import
{
getDictType
,
getEnterprise
}
from
'@/api/main'
import
skeleton
from
'./skeleton'
import
gsap
from
"gsap"
;
export
default
{
components
:{
skeleton
},
...
...
@@ -264,9 +257,10 @@
mounted
(){
},
methods
:{
clickFocus
(
e
)
{
document
.
getElementById
(
e
).
classList
.
toggle
(
'span-ba'
);
leaves
(){
if
(
this
.
searchParam
.
companyName
==
""
){
this
.
showSearchBox
=
false
}
},
getDetail
(
row
){
this
.
isedit
=
true
...
...
@@ -373,21 +367,6 @@
remark
:
''
,
}
},
onEnter
(
el
,
done
)
{
gsap
.
from
(
el
,
{
opacity
:
0
,
width
:
0
,
});
gsap
.
to
(
el
,
{
opacity
:
1
,
width
:
242
,
onComplete
()
{
// 完成动画聚焦输入框
el
.
querySelector
(
"input"
).
focus
();
done
();
}
});
},
}
}
</
script
>
...
...
@@ -406,81 +385,53 @@
}
}
.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
;
}
.searchInput
{
.normal-search-container
{
display
:
flex
;
align-items
:
center
;
cursor
:
pointer
;
height
:
34px
;
&
:hover
{
&
>
span
{
color
:
#0081ff
;
}
}
&
>
img
{
width
:
16px
;
height
:
16px
;
margin-left
:
12px
;
/*width: 257px;*/
border
:
0
;
border-radius
:
4px
!
important
;
.ss
{
position
:
absolute
;
z-index
:
1
;
left
:
13px
;
top
:
9px
;
width
:
13px
;
}
&
>
span
{
.cx
{
color
:
#232323
;
color
:
rgba
(
35
,
35
,
35
,
0
.4
);
font-weight
:
400
;
margin-left
:
8px
;
line-height
:
22px
;
opacity
:
0
.8
;
font-size
:
14px
;
margin-left
:
36px
;
line-height
:
32px
;
}
}
.cooperate-name
{
display
:
flex
;
border-radius
:
2px
;
border
:
1px
solid
#d9d9d9
;
line-height
:
30px
;
height
:
30px
;
float
:
left
;
width
:
100%
;
span
{
width
:
60px
;
height
:
28px
;
line-height
:
28px
;
font-size
:
14px
;
background
:
#f5f5f5
;
text-align
:
center
;
color
:
#0081ff
;
border
:
1px
solid
#efefef
;
border-left
:
0
;
cursor
:
pointer
;
input
:
:-
webkit-input-placeholder
{
/* Chrome/Opera/Safari */
color
:
#232323
;
opacity
:
0
.4
;
}
&
.span-ba
{
border
:
1px
solid
#0081ff
;
span
{
color
:
#ffffff
;
background
:
#0081ff
;
border
:
1px
solid
#0081ff
;
}
input
:
:-
moz-placeholder
{
/* Firefox 19+ */
color
:
#232323
;
opacity
:
0
.4
;
}
::v-deep
.el-input
{
flex
:
1
;
input
:
-
ms-input-placeholder
{
/* IE 10+ */
color
:
#232323
;
opacity
:
0
.4
;
}
::v-deep
.el-input__inner
{
border
:
0
;
line-height
:
28px
;
height
:
28px
;
position
:
absolute
;
top
:
1px
;
padding-right
:
28px
;
font-size
:
12px
;
padding-left
:
8px
;
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 @
d96a96bf
...
...
@@ -5,18 +5,12 @@
<div
class=
"cardtitles"
>
资料文档
</div>
<div
class=
"searchbtns"
>
<div
class=
"searchInput small"
>
<div
class=
"normal-search-container"
@
click=
"showSearchBox = true"
v-if=
"!showSearchBox"
>
<img
src=
"@/assets/images/enterprise/enterprise-search-icon.svg"
alt=
""
>
<span>
输入关键词查询
</span>
<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>
<!--<!– 输入框展开后样式 –>-->
<transition
@
enter=
"onEnter"
appear
mode=
"out-in"
>
<div
class=
"cooperate-name enterprise-search-container"
id=
"focus1"
v-if=
"showSearchBox"
>
<el-input
clearable
@
clear=
"handleCurrentChange(1)"
@
focus=
"clickFocus('focus1')"
@
blur=
"clickFocus('focus1')"
v-model=
"param.keyword"
placeholder=
"输入关键词查询"
></el-input>
<span
@
click=
"handleCurrentChange(1)"
>
搜索
</span>
</div>
</transition>
</div>
<!--
<div
class=
"btn btn_primary h32 b2"
@
click=
"getUP"
v-if=
"fileDatas.total>0"
><div
class=
"img img2"
></div>
上传
</div>
-->
...
...
@@ -161,7 +155,6 @@
import
{
getToken
}
from
'@/utils/auth'
import
{
delZLWD
,
getZLWD
}
from
'@/api/project/project'
import
skeleton
from
'./skeleton'
import
gsap
from
"gsap"
;
export
default
{
components
:{
skeleton
},
...
...
@@ -204,23 +197,10 @@
// console.log(this.$ref)
},
methods
:{
clickFocus
(
e
)
{
document
.
getElementById
(
e
).
classList
.
toggle
(
'span-ba'
);
},
onEnter
(
el
,
done
)
{
gsap
.
from
(
el
,
{
opacity
:
0
,
width
:
0
,
});
gsap
.
to
(
el
,
{
opacity
:
1
,
width
:
242
,
onComplete
()
{
// 完成动画聚焦输入框
el
.
querySelector
(
"input"
).
focus
();
done
();
}
});
leaves
(){
if
(
this
.
searchParam
.
companyName
==
""
){
this
.
showSearchBox
=
false
}
},
getall
(){
this
.
param
.
filePath
=
this
.
detailId
?
this
.
detailId
:
this
.
$route
.
query
.
id
...
...
@@ -343,77 +323,53 @@
<
style
lang=
"scss"
scoped
>
.searchInput.small
{
width
:
257px
;
}
.searchInput
{
.normal-search-container
{
display
:
flex
;
align-items
:
center
;
cursor
:
pointer
;
height
:
34px
;
&
:hover
{
&
>
span
{
color
:
#0081ff
;
}
}
&
>
img
{
width
:
16px
;
height
:
16px
;
margin-left
:
12px
;
}
&
>
span
{
color
:
#232323
;
color
:
rgba
(
35
,
35
,
35
,
0
.4
);
font-weight
:
400
;
margin-left
:
8px
;
line-height
:
22px
;
font-size
:
14px
;
}
.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
;
}
.cooperate-name
{
display
:
flex
;
border-radius
:
2px
;
border
:
1px
solid
#d9d9d9
;
line-height
:
30px
;
height
:
30px
;
float
:
left
;
width
:
100%
;
span
{
width
:
60px
;
height
:
28px
;
line-height
:
28px
;
font-size
:
14px
;
background
:
#f5f5f5
;
text-align
:
center
;
color
:
#0081ff
;
border
:
1px
solid
#efefef
;
border-left
:
0
;
cursor
:
pointer
;
}
&
.span-ba
{
border
:
1px
solid
#0081ff
;
span
{
color
:
#ffffff
;
background
:
#0081ff
;
border
:
1px
solid
#0081ff
;
}
}
::v-deep
.el-input
{
flex
:
1
;
}
::v-deep
.el-input__inner
{
border
:
0
;
line-height
:
28px
;
height
:
28px
;
position
:
absolute
;
top
:
1px
;
padding-right
:
28px
;
font-size
:
12px
;
padding-left
:
8px
;
}
}
.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
{
...
...
dsk-operate-ui/vue.config.js
View file @
d96a96bf
...
...
@@ -34,8 +34,8 @@ module.exports = {
proxy
:
{
// detail: https://cli.vuejs.org/config/#devserver-proxy
[
process
.
env
.
VUE_APP_BASE_API
]:
{
//
target: `http://47.104.91.229:9099/prod-api`,//测试
target
:
`http://localhost`
,
//测试
target
:
`http://47.104.91.229:9099/prod-api`
,
//测试
//
target: `http://localhost`,//测试
// target: `http://122.9.160.122:9011`, //线上
// target: `http://192.168.0.165:9098`,//施
// target: `http://192.168.60.6:9098`,//谭
...
...
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