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
3286a077
Commit
3286a077
authored
Jun 08, 2023
by
danfuman
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://192.168.60.201/root/dsk-operate-sys
parents
c56948d5
c57d3a6b
Changes
82
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
82 changed files
with
2268 additions
and
758 deletions
+2268
-758
BusinessFileController.java
...m/dsk/web/controller/business/BusinessFileController.java
+1
-2
BusinessFollowRecordController.java
...b/controller/business/BusinessFollowRecordController.java
+18
-0
EnterpriseController.java
...java/com/dsk/web/controller/dsk/EnterpriseController.java
+6
-0
EnterpriseProjectController.java
...m/dsk/web/controller/dsk/EnterpriseProjectController.java
+2
-2
CompanySearchController.java
...controller/search/controller/CompanySearchController.java
+1
-1
BizConstant.java
...om/dsk/web/controller/search/macroMarket/BizConstant.java
+392
-0
IpUtil.java
...ava/com/dsk/web/controller/search/macroMarket/IpUtil.java
+281
-0
RegionalEconomicDataController.java
...er/search/macroMarket/RegionalEconomicDataController.java
+29
-0
BusinessFileVo.java
...ava/com/dsk/common/core/domain/entity/BusinessFileVo.java
+20
-0
EnterpriseProjectBidPlanDetailBody.java
...core/domain/model/EnterpriseProjectBidPlanDetailBody.java
+22
-0
EnterpriseProjectBidPlanPageBody.java
...n/core/domain/model/EnterpriseProjectBidPlanPageBody.java
+34
-0
EnterpriseRemarkBody.java
...om/dsk/common/core/domain/model/EnterpriseRemarkBody.java
+16
-0
EnterpriseUipSearchBody.java
...dsk/common/core/domain/model/EnterpriseUipSearchBody.java
+5
-0
OpRegionalLocalDto.java
...src/main/java/com/dsk/common/dtos/OpRegionalLocalDto.java
+20
-0
EncodeIdUtil.java
...mmon/src/main/java/com/dsk/common/utils/EncodeIdUtil.java
+103
-0
SecurityConfig.java
...rc/main/java/com/dsk/framework/config/SecurityConfig.java
+5
-4
common.js
dsk-operate-ui/src/api/common.js
+1
-1
index.js
dsk-operate-ui/src/api/detail/party-a/index.js
+2
-2
opport.js
dsk-operate-ui/src/api/detail/party-a/opport.js
+3
-21
overview.js
dsk-operate-ui/src/api/detail/party-a/overview.js
+0
-9
project.js
dsk-operate-ui/src/api/project/project.js
+18
-2
project.scss
dsk-operate-ui/src/assets/styles/project.scss
+3
-2
download.js
dsk-operate-ui/src/plugins/download.js
+15
-1
index.js
dsk-operate-ui/src/utils/index.js
+6
-6
HeadForm.vue
...perate-ui/src/views/detail/party-a/component/HeadForm.vue
+39
-3
Sidebar.vue
...operate-ui/src/views/detail/party-a/component/Sidebar.vue
+25
-3
Tables.vue
dsk-operate-ui/src/views/detail/party-a/component/Tables.vue
+29
-10
index.vue
dsk-operate-ui/src/views/detail/party-a/cooperate/index.vue
+145
-116
bidagency.vue
...perate-ui/src/views/detail/party-a/dealings/bidagency.vue
+1
-1
bidrecords.vue
...erate-ui/src/views/detail/party-a/dealings/bidrecords.vue
+1
-1
bidagencyDetail.vue
...ews/detail/party-a/dealings/component/bidagencyDetail.vue
+1
-1
customDetail.vue
.../views/detail/party-a/dealings/component/customDetail.vue
+1
-1
supplierDetail.vue
...iews/detail/party-a/dealings/component/supplierDetail.vue
+1
-1
custom.vue
dsk-operate-ui/src/views/detail/party-a/dealings/custom.vue
+1
-1
hiscontract.vue
...rate-ui/src/views/detail/party-a/dealings/hiscontract.vue
+1
-1
supplier.vue
...operate-ui/src/views/detail/party-a/dealings/supplier.vue
+1
-1
index.vue
...rate-ui/src/views/detail/party-a/decisionMaking/index.vue
+10
-1
index.vue
dsk-operate-ui/src/views/detail/party-a/financial/index.vue
+63
-38
index.vue
dsk-operate-ui/src/views/detail/party-a/index.vue
+26
-10
mixin.js
dsk-operate-ui/src/views/detail/party-a/mixins/mixin.js
+2
-2
administrative.vue
...ate-ui/src/views/detail/party-a/opport/administrative.vue
+26
-38
announcement.vue
...erate-ui/src/views/detail/party-a/opport/announcement.vue
+89
-52
biddingplan.vue
...perate-ui/src/views/detail/party-a/opport/biddingplan.vue
+69
-8
bond.vue
dsk-operate-ui/src/views/detail/party-a/opport/bond.vue
+20
-29
landtransaction.vue
...te-ui/src/views/detail/party-a/opport/landtransaction.vue
+36
-44
proposed.vue
dsk-operate-ui/src/views/detail/party-a/opport/proposed.vue
+26
-30
tencent.vue
dsk-operate-ui/src/views/detail/party-a/opport/tencent.vue
+121
-8
branch.vue
dsk-operate-ui/src/views/detail/party-a/overview/branch.vue
+23
-41
businfo.vue
dsk-operate-ui/src/views/detail/party-a/overview/businfo.vue
+54
-48
execuinfo.vue
...perate-ui/src/views/detail/party-a/overview/execuinfo.vue
+12
-24
holderinfo.vue
...erate-ui/src/views/detail/party-a/overview/holderinfo.vue
+26
-33
overseas.vue
...operate-ui/src/views/detail/party-a/overview/overseas.vue
+55
-55
overview.vue
...operate-ui/src/views/detail/party-a/overview/overview.vue
+1
-1
index.vue
dsk-operate-ui/src/views/detail/party-a/preference/index.vue
+7
-1
businessAnomaly.vue
.../views/detail/party-a/riskInformation/businessAnomaly.vue
+1
-1
courtNotice.vue
.../src/views/detail/party-a/riskInformation/courtNotice.vue
+2
-4
dishonesty.vue
...i/src/views/detail/party-a/riskInformation/dishonesty.vue
+1
-1
ifThePerson.vue
.../src/views/detail/party-a/riskInformation/ifThePerson.vue
+1
-1
judgment.vue
...-ui/src/views/detail/party-a/riskInformation/judgment.vue
+2
-2
openacourtsessionNotice.vue
...etail/party-a/riskInformation/openacourtsessionNotice.vue
+5
-5
punish.vue
...te-ui/src/views/detail/party-a/riskInformation/punish.vue
+1
-2
landAcquisition.vue
.../views/detail/party-a/urbanLnvestment/landAcquisition.vue
+7
-1
regionalEconomies.vue
...iews/detail/party-a/urbanLnvestment/regionalEconomies.vue
+48
-13
sameRegion.vue
...i/src/views/detail/party-a/urbanLnvestment/sameRegion.vue
+17
-13
gjjl.vue
...erate-ui/src/views/project/projectList/component/gjjl.vue
+67
-10
gzdb.vue
...erate-ui/src/views/project/projectList/component/gzdb.vue
+8
-2
jsnr.vue
...erate-ui/src/views/project/projectList/component/jsnr.vue
+7
-1
lxr.vue
...perate-ui/src/views/project/projectList/component/lxr.vue
+8
-2
xgqy.vue
...erate-ui/src/views/project/projectList/component/xgqy.vue
+10
-4
xmsl.vue
...erate-ui/src/views/project/projectList/component/xmsl.vue
+5
-1
zlwd.vue
...erate-ui/src/views/project/projectList/component/zlwd.vue
+56
-20
detail.vue
dsk-operate-ui/src/views/project/projectList/detail.vue
+24
-10
index.vue
dsk-operate-ui/src/views/project/projectList/index.vue
+2
-2
index.vue
dsk-operate-ui/src/views/project/trends/index.vue
+3
-1
EnterpriseProjectService.java
...a/com/dsk/system/dskService/EnterpriseProjectService.java
+2
-2
EnterpriseService.java
...ain/java/com/dsk/system/dskService/EnterpriseService.java
+5
-0
BusinessFollowRecordMapper.java
...ava/com/dsk/system/mapper/BusinessFollowRecordMapper.java
+15
-0
EconomicService.java
...src/main/java/com/dsk/system/service/EconomicService.java
+12
-2
IBusinessFollowRecordService.java
.../com/dsk/system/service/IBusinessFollowRecordService.java
+14
-0
BusinessFollowRecordServiceImpl.java
.../system/service/impl/BusinessFollowRecordServiceImpl.java
+10
-0
EconomicServiceImpl.java
...java/com/dsk/system/service/impl/EconomicServiceImpl.java
+8
-2
BusinessFollowRecordMapper.xml
.../resources/mapper/business/BusinessFollowRecordMapper.xml
+12
-0
No files found.
dsk-admin/src/main/java/com/dsk/web/controller/business/BusinessFileController.java
View file @
3286a077
...
...
@@ -89,8 +89,7 @@ public class BusinessFileController extends BaseController {
@PostMapping
(
"/upload"
)
public
AjaxResult
uploadFolder
(
@RequestPart
(
"file"
)
MultipartFile
file
,
HttpServletRequest
request
){
try
{
// String businessFileName = request.getHeader("FilePath");
String
businessFileName
=
"10"
;
String
businessFileName
=
request
.
getHeader
(
"FilePath"
);
// 上传文件路径
String
filePath
=
RuoYiConfig
.
getUploadPath
()+
businessFileName
+
"/"
;
// 上传并返回文件全路径
...
...
dsk-admin/src/main/java/com/dsk/web/controller/business/BusinessFollowRecordController.java
View file @
3286a077
...
...
@@ -27,6 +27,24 @@ public class BusinessFollowRecordController extends BaseController
/**
* 查询关联项目
*/
@GetMapping
(
"/relate/project/{userId}"
)
public
AjaxResult
selectRelateProject
(
@PathVariable
(
"userId"
)
Integer
userId
)
{
return
success
(
businessFollowRecordService
.
selectRelateProject
(
userId
));
}
/**
* 查询关联业主企业
*/
@GetMapping
(
"/relate/company/{userId}"
)
public
AjaxResult
selectRelateCompany
(
@PathVariable
(
"userId"
)
Integer
userId
)
{
return
success
(
businessFollowRecordService
.
selectRelateCompany
(
userId
));
}
/**
* 新增项目跟进记录
*/
...
...
dsk-admin/src/main/java/com/dsk/web/controller/dsk/EnterpriseController.java
View file @
3286a077
...
...
@@ -117,4 +117,10 @@ public class EnterpriseController {
return
enterpriseService
.
uipGroupData
();
}
@ApiOperation
(
value
=
"建设库企业id解码)"
)
@PostMapping
(
value
=
"remark"
)
public
R
remark
(
@RequestBody
@Valid
EnterpriseRemarkBody
vo
)
throws
Exception
{
return
enterpriseService
.
remark
(
vo
);
}
}
dsk-admin/src/main/java/com/dsk/web/controller/dsk/EnterpriseProjectController.java
View file @
3286a077
...
...
@@ -115,13 +115,13 @@ public class EnterpriseProjectController {
@ApiOperation
(
value
=
"招标计划列表"
)
@RequestMapping
(
value
=
"/bidPlanPage"
,
method
=
RequestMethod
.
POST
)
public
TableDataInfo
bidPlanPage
(
@RequestBody
@Valid
Object
body
)
throws
Exception
{
public
TableDataInfo
bidPlanPage
(
@RequestBody
@Valid
EnterpriseProjectBidPlanPageBody
body
)
throws
Exception
{
return
enterpriseProjectService
.
bidPlanPage
(
body
);
}
@ApiOperation
(
value
=
"招标计划详情"
)
@RequestMapping
(
value
=
"/bidPlanDetail"
,
method
=
RequestMethod
.
POST
)
public
R
bidPlanDetail
(
@RequestBody
@Valid
Object
body
)
throws
Exception
{
public
R
bidPlanDetail
(
@RequestBody
@Valid
EnterpriseProjectBidPlanDetailBody
body
)
throws
Exception
{
return
enterpriseProjectService
.
bidPlanDetail
(
body
);
}
...
...
dsk-admin/src/main/java/com/dsk/web/controller/search/controller/CompanySearchController.java
View file @
3286a077
...
...
@@ -40,7 +40,7 @@ public class CompanySearchController {
/*
* 完全匹配企业名称
*/
@
Ge
tMapping
(
"/page"
)
@
Pos
tMapping
(
"/page"
)
public
AjaxResult
page
(
@RequestBody
ComposeQueryDto
compose
)
{
return
opportunityRadarService
.
enterprisePage
(
compose
);
}
...
...
dsk-admin/src/main/java/com/dsk/web/controller/search/macroMarket/BizConstant.java
0 → 100644
View file @
3286a077
This diff is collapsed.
Click to expand it.
dsk-admin/src/main/java/com/dsk/web/controller/search/macroMarket/IpUtil.java
0 → 100644
View file @
3286a077
package
com
.
dsk
.
web
.
controller
.
search
.
macroMarket
;
import
org.apache.commons.lang3.StringUtils
;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.BufferedReader
;
import
java.io.Closeable
;
import
java.io.File
;
import
java.io.InputStreamReader
;
import
java.util.Arrays
;
import
java.util.List
;
/**
* IP校验
*/
public
class
IpUtil
{
public
final
static
List
<
String
>
qihooSpider
=
Arrays
.
asList
(
"180.153.232"
,
"180.153.234"
,
"180.153.236"
,
"180.163.220"
,
"42.236.101"
,
"42.236.102"
,
"42.236.103"
,
"42.236.10"
,
"42.236.12"
,
"42.236.13"
,
"42.236.14"
,
"42.236.15"
,
"42.236.16"
,
"42.236.17"
,
"42.236.46"
,
"42.236.48"
,
"42.236.49"
,
"42.236.50"
,
"42.236.51"
,
"42.236.52"
,
"42.236.53"
,
"42.236.54"
,
"42.236.55"
,
"42.236.99"
);
public
final
static
List
<
String
>
YisouSpider
=
Arrays
.
asList
(
"106.11.152"
,
"106.11.153"
,
"106.11.154"
,
"106.11.155"
,
"106.11.156"
,
"106.11.157"
,
"106.11.158"
,
"106.11.159"
,
"42.120.160"
,
"42.120.161"
,
"42.156.136"
,
"42.156.137"
,
"42.156.138"
,
"42.156.139"
,
"42.156.254"
);
public
final
static
List
<
String
>
ByteSpider
=
Arrays
.
asList
(
"110.249.201"
,
"110.249.202"
,
"111.225.147"
,
"111.225.148"
,
"111.225.149"
,
"220.243.135"
,
"220.243.136"
,
"60.8.165"
,
"60.8.9"
);
/**获取访问用户的客户端IP(适用于公网与局域网)*/
public
static
final
String
getIpAddr
(
final
HttpServletRequest
request
){
try
{
if
(
request
==
null
)
return
null
;
String
ipString
=
request
.
getHeader
(
"ali-cdn-real-ip"
);
if
(
StringUtils
.
isBlank
(
ipString
)
||
"unknown"
.
equalsIgnoreCase
(
ipString
))
{
ipString
=
request
.
getHeader
(
"x-forwarded-for"
);
}
if
(
StringUtils
.
isBlank
(
ipString
)
||
"unknown"
.
equalsIgnoreCase
(
ipString
))
{
ipString
=
request
.
getHeader
(
"Proxy-Client-IP"
);
}
if
(
StringUtils
.
isBlank
(
ipString
)
||
"unknown"
.
equalsIgnoreCase
(
ipString
))
{
ipString
=
request
.
getHeader
(
"X-Forwarded-For"
);
}
if
(
StringUtils
.
isBlank
(
ipString
)
||
"unknown"
.
equalsIgnoreCase
(
ipString
))
{
ipString
=
request
.
getHeader
(
"WL-Proxy-Client-IP"
);
}
if
(
StringUtils
.
isBlank
(
ipString
)
||
"unknown"
.
equalsIgnoreCase
(
ipString
))
{
ipString
=
request
.
getHeader
(
"X-Real-IP"
);
}
if
(
StringUtils
.
isBlank
(
ipString
)
||
"unknown"
.
equalsIgnoreCase
(
ipString
))
{
ipString
=
request
.
getRemoteAddr
();
}
// 多个路由时,取第一个非unknown的ip
final
String
[]
arr
=
ipString
.
split
(
","
);
for
(
final
String
str
:
arr
)
{
if
(!
"unknown"
.
equalsIgnoreCase
(
str
))
{
ipString
=
str
;
break
;
}
}
return
ipString
;
}
catch
(
Exception
e
){
return
null
;
}
}
/**
* write specfield bytes to a byte array start from offset
*
* @param b
* @param offset
* @param v
* @param bytes
*/
public
static
void
write
(
byte
[]
b
,
int
offset
,
long
v
,
int
bytes
)
{
for
(
int
i
=
0
;
i
<
bytes
;
i
++
)
{
b
[
offset
++]
=
(
byte
)((
v
>>>
(
8
*
i
))
&
0xFF
);
}
}
/**
* write a int to a byte array
*
* @param b
* @param offset
* @param v
*/
public
static
void
writeIntLong
(
byte
[]
b
,
int
offset
,
long
v
)
{
b
[
offset
++]
=
(
byte
)((
v
>>
0
)
&
0xFF
);
b
[
offset
++]
=
(
byte
)((
v
>>
8
)
&
0xFF
);
b
[
offset
++]
=
(
byte
)((
v
>>
16
)
&
0xFF
);
b
[
offset
]
=
(
byte
)((
v
>>
24
)
&
0xFF
);
}
/**
* get a int from a byte array start from the specifiled offset
*
* @param b
* @param offset
*/
public
static
long
getIntLong
(
byte
[]
b
,
int
offset
)
{
return
(
((
b
[
offset
++]
&
0x000000FF
L
))
|
((
b
[
offset
++]
<<
8
)
&
0x0000FF00
L
)
|
((
b
[
offset
++]
<<
16
)
&
0x00FF0000
L
)
|
((
b
[
offset
]
<<
24
)
&
0xFF000000
L
)
);
}
/**
* get a int from a byte array start from the specifield offset
*
* @param b
* @param offset
*/
public
static
int
getInt3
(
byte
[]
b
,
int
offset
)
{
return
(
(
b
[
offset
++]
&
0x000000FF
)
|
(
b
[
offset
++]
&
0x0000FF00
)
|
(
b
[
offset
]
&
0x00FF0000
)
);
}
public
static
int
getInt2
(
byte
[]
b
,
int
offset
)
{
return
(
(
b
[
offset
++]
&
0x000000FF
)
|
(
b
[
offset
]
&
0x0000FF00
)
);
}
public
static
int
getInt1
(
byte
[]
b
,
int
offset
)
{
return
(
(
b
[
offset
]
&
0x000000FF
)
);
}
/**
* string ip to long ip
*
* @param ip
* @return long
*/
public
static
long
ip2long
(
String
ip
)
{
String
[]
p
=
ip
.
split
(
"\\."
);
if
(
p
.
length
!=
4
)
return
0
;
int
p1
=
((
Integer
.
valueOf
(
p
[
0
])
<<
24
)
&
0xFF000000
);
int
p2
=
((
Integer
.
valueOf
(
p
[
1
])
<<
16
)
&
0x00FF0000
);
int
p3
=
((
Integer
.
valueOf
(
p
[
2
])
<<
8
)
&
0x0000FF00
);
int
p4
=
((
Integer
.
valueOf
(
p
[
3
])
<<
0
)
&
0x000000FF
);
return
((
p1
|
p2
|
p3
|
p4
)
&
0xFFFFFFFF
L
);
}
/**
* int to ip string
*
* @param ip
* @return string
*/
public
static
String
long2ip
(
long
ip
)
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
((
ip
>>
24
)
&
0xFF
).
append
(
'.'
)
.
append
((
ip
>>
16
)
&
0xFF
).
append
(
'.'
)
.
append
((
ip
>>
8
)
&
0xFF
).
append
(
'.'
)
.
append
((
ip
>>
0
)
&
0xFF
);
return
sb
.
toString
();
}
/**
* check the validate of the specifeld ip address
*
* @param ip
* @return boolean
*/
public
static
boolean
isIpAddress
(
String
ip
)
{
String
[]
p
=
ip
.
split
(
"\\."
);
if
(
p
.
length
!=
4
)
return
false
;
for
(
String
pp
:
p
)
{
if
(
pp
.
length
()
>
3
)
return
false
;
int
val
=
Integer
.
valueOf
(
pp
);
if
(
val
>
255
)
return
false
;
}
return
true
;
}
public
static
String
execHostCmd
(
String
ip
)
throws
Exception
{
return
execCmd
(
"host "
+
ip
,
null
);
}
public
static
String
isSpider
(
String
ip
)
throws
Exception
{
String
result
=
execCmd
(
"host "
+
ip
,
null
);
if
(
StringUtils
.
isNotBlank
(
ip
)&&!
isSpiderUa
(
result
)){
for
(
String
s
:
qihooSpider
)
{
if
(
ip
.
startsWith
(
s
)){
return
"so.com"
;
}
}
for
(
String
s
:
YisouSpider
)
{
if
(
ip
.
startsWith
(
s
)){
return
"sm.cn"
;
}
}
for
(
String
s
:
ByteSpider
)
{
if
(
ip
.
startsWith
(
s
)){
return
"bytedance.com"
;
}
}
}
return
result
;
}
/**
* 执行系统命令, 返回执行结果
*
* @param cmd 需要执行的命令
* @param dir 执行命令的子进程的工作目录, null 表示和当前主进程工作目录相同
*/
private
static
String
execCmd
(
String
cmd
,
File
dir
)
throws
Exception
{
StringBuilder
result
=
new
StringBuilder
();
Process
process
=
null
;
BufferedReader
bufrIn
=
null
;
BufferedReader
bufrError
=
null
;
try
{
// 执行命令, 返回一个子进程对象(命令在子进程中执行)
process
=
Runtime
.
getRuntime
().
exec
(
cmd
,
null
,
dir
);
// 方法阻塞, 等待命令执行完成(成功会返回0)
process
.
waitFor
();
// 获取命令执行结果, 有两个结果: 正常的输出 和 错误的输出(PS: 子进程的输出就是主进程的输入)
bufrIn
=
new
BufferedReader
(
new
InputStreamReader
(
process
.
getInputStream
(),
"UTF-8"
));
bufrError
=
new
BufferedReader
(
new
InputStreamReader
(
process
.
getErrorStream
(),
"UTF-8"
));
// 读取输出
String
line
=
null
;
while
((
line
=
bufrIn
.
readLine
())
!=
null
)
{
result
.
append
(
line
).
append
(
'n'
);
}
while
((
line
=
bufrError
.
readLine
())
!=
null
)
{
result
.
append
(
line
).
append
(
'n'
);
}
}
finally
{
closeStream
(
bufrIn
);
closeStream
(
bufrError
);
// 销毁子进程
if
(
process
!=
null
)
{
process
.
destroy
();
}
}
// 返回执行结果
return
result
.
toString
();
}
private
static
void
closeStream
(
Closeable
stream
)
{
if
(
stream
!=
null
)
{
try
{
stream
.
close
();
}
catch
(
Exception
e
)
{
// nothing
}
}
}
private
static
boolean
isSpiderUa
(
String
hostname
){
List
<
String
>
spiders
=
BizConstant
.
SPIDER
;
for
(
String
spider
:
spiders
)
{
if
(
hostname
.
toLowerCase
().
contains
(
spider
)){
return
true
;
}
}
return
false
;
}
}
dsk-admin/src/main/java/com/dsk/web/controller/search/macroMarket/RegionalEconomicDataController.java
View file @
3286a077
...
...
@@ -3,9 +3,11 @@ package com.dsk.web.controller.search.macroMarket;
import
com.dsk.common.core.domain.AjaxResult
;
import
com.dsk.common.dtos.*
;
import
com.dsk.system.service.EconomicService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.validation.Valid
;
...
...
@@ -16,6 +18,7 @@ import javax.validation.Valid;
* @Date 2023/5/18 10:09
* @Version 1.0.0
*/
@Slf4j
@RestController
@RequestMapping
(
value
=
"/economic"
)
public
class
RegionalEconomicDataController
{
...
...
@@ -60,6 +63,21 @@ public class RegionalEconomicDataController {
return
economicService
.
details
(
detailsDto
);
}
/***
*@Description: 获取当前地区
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping
(
value
=
"location"
)
public
AjaxResult
location
(
@RequestBody
OpRegionalLocalDto
vo
,
HttpServletRequest
request
){
String
ip
=
IpUtil
.
getIpAddr
(
request
);
vo
.
setIp
(
ip
);
log
.
info
(
"location====================================>"
+
ip
);
return
economicService
.
location
(
vo
);
}
/***
*@Description: 地区经济-统计
...
...
@@ -85,5 +103,16 @@ public class RegionalEconomicDataController {
return
economicService
.
regionalList
(
dto
);
}
/***
*@Description: 地区经济
*@Param:
*@return: com.dsk.acc.security.common.msg.RestResponse
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping
(
"/regional/compare"
)
public
AjaxResult
regionalCompare
(
@RequestBody
OpRegionalEconomicDataStatisticsRegionalDto
dto
)
{
return
economicService
.
regionalCompare
(
dto
);
}
}
dsk-common/src/main/java/com/dsk/common/core/domain/entity/BusinessFileVo.java
0 → 100644
View file @
3286a077
package
com
.
dsk
.
common
.
core
.
domain
.
entity
;
import
lombok.Data
;
/**
* @author lxl
* @Description:
* @Date 2023/6/7 上午 11:05
**/
@Data
public
class
BusinessFileVo
{
private
String
filePath
;
private
String
creatTime
;
public
BusinessFileVo
(
String
filePath
,
String
creatTime
)
{
this
.
filePath
=
filePath
;
this
.
creatTime
=
creatTime
;
}
}
dsk-common/src/main/java/com/dsk/common/core/domain/model/EnterpriseProjectBidPlanDetailBody.java
0 → 100644
View file @
3286a077
package
com
.
dsk
.
common
.
core
.
domain
.
model
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
lombok.ToString
;
import
javax.validation.constraints.NotNull
;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
EnterpriseProjectBidPlanDetailBody
{
/**
* id
*/
@NotNull
(
message
=
"id不能为空"
)
private
String
id
;
}
dsk-common/src/main/java/com/dsk/common/core/domain/model/EnterpriseProjectBidPlanPageBody.java
0 → 100644
View file @
3286a077
package
com
.
dsk
.
common
.
core
.
domain
.
model
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
lombok.ToString
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
@Data
@ToString
@NoArgsConstructor
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
EnterpriseProjectBidPlanPageBody
extends
BasePage
{
/**
* 企业id
*/
@NotNull
(
message
=
"企业id不能为空"
)
private
Integer
cid
;
/**
* 查询关键字
*/
private
String
keys
;
/*
* 排序字段:1金额倒序,2金额正序,3发布时间倒序,4发布时间正序,15预计招标时间倒序,16预计招标时间正序
*/
@NotNull
(
message
=
"排序条件不能为空"
)
private
Integer
sort
;
}
dsk-common/src/main/java/com/dsk/common/core/domain/model/EnterpriseRemarkBody.java
0 → 100644
View file @
3286a077
package
com
.
dsk
.
common
.
core
.
domain
.
model
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
lombok.NoArgsConstructor
;
import
javax.validation.constraints.NotNull
;
@Data
@NoArgsConstructor
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
EnterpriseRemarkBody
{
@NotNull
(
message
=
"解码值不能为空"
)
public
String
mark
;
}
dsk-common/src/main/java/com/dsk/common/core/domain/model/EnterpriseUipSearchBody.java
View file @
3286a077
...
...
@@ -41,6 +41,11 @@ public class EnterpriseUipSearchBody extends BasePage {
*/
private
List
<
Integer
>
areaIds
;
/**
* 行政级别
*/
private
List
<
String
>
uipExecutiveLevel
;
/**
* 城投业务类型
*/
...
...
dsk-common/src/main/java/com/dsk/common/dtos/OpRegionalLocalDto.java
0 → 100644
View file @
3286a077
package
com
.
dsk
.
common
.
dtos
;
import
lombok.Data
;
/**
* @ClassName OpRegionalLocalDto
* @Description 获取当前地区
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public
class
OpRegionalLocalDto
{
/**
* 省Id
*/
private
Integer
provinceId
;
private
String
ip
;
}
dsk-common/src/main/java/com/dsk/common/utils/EncodeIdUtil.java
0 → 100644
View file @
3286a077
package
com
.
dsk
.
common
.
utils
;
import
java.util.HashMap
;
public
class
EncodeIdUtil
{
private
static
String
table
=
"VyB2Kz79QWYjpiD5lRCIMwJEhqFSx0GN1cveZfU4gs6rk8dPbLtAomOnT3"
;
private
static
HashMap
<
String
,
Integer
>
mp
=
new
HashMap
<>();
private
static
HashMap
<
Integer
,
String
>
mp2
=
new
HashMap
<>();
static
int
[]
ss
=
{
2
,
7
,
5
,
1
,
4
,
8
,
3
,
0
,
6
};
static
long
xor
=
177451812
;
static
long
add
=
8728348608L
;
/**
* 解码
* @param s 编码的随机字符串
* @return 原自增ID
*/
public
static
String
avDecode
(
String
s
)
{
long
r
=
0
;
for
(
int
i
=
0
;
i
<
table
.
length
();
i
++)
{
String
s1
=
table
.
substring
(
i
,
i
+
1
);
mp
.
put
(
s1
,
i
);
}
for
(
int
i
=
0
;
i
<
9
;
i
++)
{
r
=
r
+
mp
.
get
(
s
.
substring
(
ss
[
i
],
ss
[
i
]
+
1
))
*
power
(
58
,
i
);
}
return
String
.
valueOf
((
r
-
add
)
^
xor
);
}
/**
* 编码
* @param st 原自增ID
* @return 编码后的随机字符串
*/
public
static
String
bvEncode
(
String
st
)
{
StringBuilder
sb
=
new
StringBuilder
(
" "
);
long
s
=
Long
.
parseLong
(
st
);
s
=
(
s
^
xor
)
+
add
;
for
(
int
i
=
0
;
i
<
table
.
length
();
i
++)
{
String
s1
=
table
.
substring
(
i
,
i
+
1
);
mp2
.
put
(
i
,
s1
);
}
// mp2.forEach((inx, str) -> System.out.print(str));
for
(
int
i
=
0
;
i
<
9
;
i
++)
{
String
r
=
mp2
.
get
((
int
)
(
s
/
power
(
table
.
length
(),
i
)
%
table
.
length
()));
sb
.
replace
(
ss
[
i
],
ss
[
i
]
+
1
,
r
);
}
return
sb
.
toString
();
}
private
static
long
power
(
int
a
,
int
b
)
{
long
power
=
1
;
for
(
int
c
=
0
;
c
<
b
;
c
++)
power
*=
a
;
return
power
;
}
/**
* 把unicode编码转换成正常字符
*
* @param hex
* @return
*/
public
static
String
binaryToUnicode
(
String
hex
)
{
int
i
;
int
n
;
int
j
;
n
=
hex
.
length
()
/
2
;
j
=
0
;
char
[]
content
=
new
char
[
n
];
for
(
i
=
0
;
i
<
n
;
i
++)
{
j
=
i
*
2
;
content
[
i
]
=
(
char
)
Integer
.
parseInt
(
hex
.
substring
(
j
,
j
+
2
),
16
);
}
return
new
String
(
content
);
}
/**
* 把字符转换成unicode编码
*
* @param content
* @return
*/
public
static
String
unicodeToBinary
(
String
content
)
{
String
hexStr
=
""
;
char
[]
contentBuffer
=
content
.
toCharArray
();
String
s
;
int
n
;
for
(
int
i
=
0
;
i
<
content
.
length
();
i
++)
{
n
=
(
int
)
contentBuffer
[
i
];
s
=
Integer
.
toHexString
(
n
);
// if (s.length() > 4) {
// s = s.substring(0, 4);
// } else {
// s = "0000".substring(0, 4 - s.length()) + s;
// }
hexStr
=
hexStr
+
s
;
}
return
hexStr
;
}
}
dsk-framework/src/main/java/com/dsk/framework/config/SecurityConfig.java
View file @
3286a077
package
com
.
dsk
.
framework
.
config
;
import
com.dsk.framework.config.properties.PermitAllUrlProperties
;
import
com.dsk.framework.security.filter.JwtAuthenticationTokenFilter
;
import
com.dsk.framework.security.handle.AuthenticationEntryPointImpl
;
import
com.dsk.framework.security.handle.LogoutSuccessHandlerImpl
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.http.HttpMethod
;
...
...
@@ -16,9 +19,6 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import
org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter
;
import
org.springframework.security.web.authentication.logout.LogoutFilter
;
import
org.springframework.web.filter.CorsFilter
;
import
com.dsk.framework.security.filter.JwtAuthenticationTokenFilter
;
import
com.dsk.framework.security.handle.AuthenticationEntryPointImpl
;
import
com.dsk.framework.security.handle.LogoutSuccessHandlerImpl
;
/**
* spring security配置
...
...
@@ -111,10 +111,11 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
// 过滤请求
.
authorizeRequests
()
// 对于登录login 注册register 验证码captchaImage 允许匿名访问
.
antMatchers
(
"/login"
,
"/register"
,
"/captchaImage"
,
"/economic/**"
,
"/enterprises/**"
,
"/specialPurposeBonds/**"
,
"/urbanInvestment/**"
).
permitAll
()
.
antMatchers
(
"/login"
,
"/register"
,
"/captchaImage"
,
"/economic/**"
,
"/enterprises/**"
,
"/specialPurposeBonds/**"
,
"/urbanInvestment/**"
,
"/enterprise/**"
).
permitAll
()
// 静态资源,可匿名访问
.
antMatchers
(
HttpMethod
.
GET
,
"/"
,
"/*.html"
,
"/**/*.html"
,
"/**/*.css"
,
"/**/*.js"
,
"/profile/**"
).
permitAll
()
.
antMatchers
(
"/swagger-ui.html"
,
"/swagger-resources/**"
,
"/webjars/**"
,
"/*/api-docs"
,
"/druid/**"
).
permitAll
()
// .antMatchers("/business/**").permitAll()
// 除上面外的所有请求全部需要鉴权认证
.
anyRequest
().
authenticated
()
.
and
()
...
...
dsk-operate-ui/src/api/common.js
View file @
3286a077
...
...
@@ -3,7 +3,7 @@ import request from '@/utils/request'
// id解密
export
const
idRemark
=
(
data
)
=>
{
return
request
({
url
:
'/
user/jsk/chang
e/remark'
,
url
:
'/
enterpris
e/remark'
,
method
:
'post'
,
data
:
data
})
...
...
dsk-operate-ui/src/api/detail/party-a/index.js
View file @
3286a077
import
request
from
"@/utils/request"
;
//
企业头部信息
//
甲方详情-公司概要
export
function
infoHeader
(
data
)
{
return
request
({
url
:
'/
api-module-data/
enterprise/infoHeader'
,
url
:
'/enterprise/infoHeader'
,
method
:
'post'
,
data
:
data
})
...
...
dsk-operate-ui/src/api/detail/party-a/opport.js
View file @
3286a077
...
...
@@ -54,24 +54,6 @@ export function approvalProjectPage(data) {
})
}
// 拟建项目立项审批列表
export
function
approvalExaminePage
(
data
)
{
return
request
({
url
:
'/enterpriseProject/approvalExaminePage'
,
method
:
'post'
,
data
:
data
})
}
// 拟建项目民间推介列表
export
function
approvalMarketingPage
(
data
)
{
return
request
({
url
:
'/enterpriseProject/approvalMarketingPage'
,
method
:
'post'
,
data
:
data
})
}
// 标讯PRO招标公告列表
export
function
bidNoticeProPage
(
data
)
{
return
request
({
...
...
@@ -126,10 +108,10 @@ export function specialDebtProjectPage(data) {
})
}
//
专项债
列表
export
function
specialDebt
Page
(
data
)
{
//
招标计划
列表
export
function
bidPlan
Page
(
data
)
{
return
request
({
url
:
'/enterpriseProject/
specialDebt
Page'
,
url
:
'/enterpriseProject/
bidPlan
Page'
,
method
:
'post'
,
data
:
data
})
...
...
dsk-operate-ui/src/api/detail/party-a/overview.js
View file @
3286a077
import
request
from
"@/utils/request"
;
// 甲方详情-公司概要
export
function
infoHeader
(
data
)
{
return
request
({
url
:
'/enterprise/infoHeader'
,
method
:
'post'
,
data
:
data
})
}
// 企业数据统计
export
function
statistic
(
data
)
{
return
request
({
...
...
dsk-operate-ui/src/api/project/project.js
View file @
3286a077
...
...
@@ -108,9 +108,8 @@ export function addGJJL(param) {
//删除跟进记录
export
function
delGJJL
(
param
)
{
return
request
({
url
:
'/business/record/remove/'
,
url
:
'/business/record/remove/'
+
param
,
method
:
'DELETE'
,
params
:
param
})
}
...
...
@@ -183,3 +182,20 @@ export function delZLWD(param) {
data
:
param
})
}
//查询关联项目
export
function
relateProject
(
param
)
{
return
request
({
url
:
'/business/record/relate/project/'
+
param
,
method
:
'get'
,
})
}
//查询跟进动态
export
function
allRecord
(
param
)
{
return
request
({
url
:
'/business/record/all/list'
,
method
:
'get'
,
params
:
param
,
})
}
dsk-operate-ui/src/assets/styles/project.scss
View file @
3286a077
...
...
@@ -579,8 +579,8 @@
}
}
.el-input__prefix
{
left
:
8px
;
.el-input__prefix
.el-input__icon
{
//
left: 8px;
top
:
-2px
;
position
:
absolute
;
}
...
...
@@ -869,6 +869,7 @@
.img
{
float
:
left
;
margin-right
:
8px
;
margin-top
:
-2px
;
}
}
}
...
...
dsk-operate-ui/src/plugins/download.js
View file @
3286a077
...
...
@@ -62,11 +62,25 @@ export default {
saveAs
(
text
,
name
,
opts
)
{
saveAs
(
text
,
name
,
opts
);
},
exportByPost
(
url
,
params
){
var
url
=
baseURL
+
url
axios
({
method
:
'post'
,
url
:
url
,
responseType
:
'blob'
,
data
:
params
,
headers
:
{
'Authorization'
:
'Bearer '
+
getToken
()
}
}).
then
(
res
=>
{
const
blob
=
new
Blob
([
res
.
data
],
{
type
:
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
})
this
.
saveAs
(
blob
,
decodeURI
(
res
.
headers
[
'download-filename'
]))
})
},
async
printErrMsg
(
data
)
{
const
resText
=
await
data
.
text
();
const
rspObj
=
JSON
.
parse
(
resText
);
const
errMsg
=
errorCode
[
rspObj
.
code
]
||
rspObj
.
msg
||
errorCode
[
'default'
]
Message
.
error
(
errMsg
);
}
}
,
}
dsk-operate-ui/src/utils/index.js
View file @
3286a077
...
...
@@ -5,12 +5,12 @@ import { parseTime } from './ruoyi'
*/
export
function
formatDate
(
cellValue
)
{
if
(
cellValue
==
null
||
cellValue
==
""
)
return
""
;
var
date
=
new
Date
(
cellValue
)
var
date
=
new
Date
(
cellValue
)
var
year
=
date
.
getFullYear
()
var
month
=
date
.
getMonth
()
+
1
<
10
?
'0'
+
(
date
.
getMonth
()
+
1
)
:
date
.
getMonth
()
+
1
var
day
=
date
.
getDate
()
<
10
?
'0'
+
date
.
getDate
()
:
date
.
getDate
()
var
hours
=
date
.
getHours
()
<
10
?
'0'
+
date
.
getHours
()
:
date
.
getHours
()
var
minutes
=
date
.
getMinutes
()
<
10
?
'0'
+
date
.
getMinutes
()
:
date
.
getMinutes
()
var
day
=
date
.
getDate
()
<
10
?
'0'
+
date
.
getDate
()
:
date
.
getDate
()
var
hours
=
date
.
getHours
()
<
10
?
'0'
+
date
.
getHours
()
:
date
.
getHours
()
var
minutes
=
date
.
getMinutes
()
<
10
?
'0'
+
date
.
getMinutes
()
:
date
.
getMinutes
()
var
seconds
=
date
.
getSeconds
()
<
10
?
'0'
+
date
.
getSeconds
()
:
date
.
getSeconds
()
return
year
+
'-'
+
month
+
'-'
+
day
+
' '
+
hours
+
':'
+
minutes
+
':'
+
seconds
}
...
...
@@ -330,7 +330,7 @@ export function makeMap(str, expectsLowerCase) {
?
val
=>
map
[
val
.
toLowerCase
()]
:
val
=>
map
[
val
]
}
export
const
exportDefault
=
'export default '
export
const
beautifierConf
=
{
...
...
@@ -387,4 +387,4 @@ export function camelCase(str) {
export
function
isNumberStr
(
str
)
{
return
/^
[
+-
]?(
0|
([
1-9
]\d
*
))(\.\d
+
)?
$/g
.
test
(
str
)
}
dsk-operate-ui/src/views/detail/party-a/component/HeadForm.vue
View file @
3286a077
...
...
@@ -35,8 +35,8 @@
<!-- 输入框 -->
<
template
v-if=
"form.type==3"
>
<div
class=
"cooperate-name"
>
<el-input
v-model=
"form.value"
:placeholder=
"form.placeholder"
></el-input>
<span
@
click=
"changeSelect"
>
搜索
</span>
<el-input
@
focus=
"clickFocus('focus'+i)"
@
blur=
"clickFocus('focus'+i)"
v-model=
"form.value"
:placeholder=
"form.placeholder"
></el-input>
<span
:id=
"'focus'+i"
@
click=
"changeSelect"
>
搜索
</span>
</div>
</
template
>
<!-- 多选 -->
...
...
@@ -70,6 +70,18 @@
:placeholder=
"form.placeholder"
@
handle-search=
"changeSelect"
/>
</
template
>
<!-- 地区选择 -->
<
template
v-else-if=
"form.type==7"
>
<el-cascader
:options=
"form.options"
:props=
"form.props"
v-model=
"form.value"
@
change=
"changeSelect"
:placeholder=
"form.placeholder"
collapse-tags
style=
"margin-top: -1px;"
clearable
></el-cascader>
</
template
>
<!-- 自定义 -->
<
template
v-if=
"form.type==0"
>
<slot
name=
"slot"
></slot>
...
...
@@ -143,6 +155,9 @@ export default {
message
:
'功能正在开发中'
,
type
:
'warning'
});
},
clickFocus
(
e
){
document
.
getElementById
(
e
).
classList
.
toggle
(
'span-ba'
)
}
}
}
...
...
@@ -165,6 +180,22 @@ export default {
::v-deep
.el-input--medium
.el-input__icon
{
line-height
:
32px
;
}
::v-deep
.el-cascader
{
height
:
32px
;
line-height
:
32px
;
.el-input
{
input
{
height
:
32px
!
important
;
}
}
.el-cascader__tags
{
flex-wrap
:
inherit
;
margin-top
:
1px
;
.el-tag
{
max-width
:
120px
;
}
}
}
.headForm-from
{
display
:
flex
;
.from-item
{
...
...
@@ -186,13 +217,18 @@ export default {
border-left
:
0
;
cursor
:
pointer
;
}
.span-ba
{
color
:
#ffffff
;
background
:
#0081FF
;
border
:
1px
solid
#0081FF
;
}
::v-deep
.el-input
{
flex
:
1
;
}
::v-deep
.el-input__inner
{
border-right
:
0
;
border-radius
:
2px
0
2px
0
;
width
:
259
px
;
width
:
180
px
;
}
}
.fromTime
{
...
...
dsk-operate-ui/src/views/detail/party-a/component/Sidebar.vue
View file @
3286a077
...
...
@@ -17,7 +17,10 @@
</
template
>
<el-menu-item
:index=
"index+'-'+idx"
v-for=
"(it, idx) in item.children"
:key=
"idx"
@
click=
"handleItem(it)"
:disabled=
"it.disabled"
>
{{it.title}}
</el-menu-item>
</el-submenu>
<el-menu-item
:index=
"index.toString()"
@
click=
"handleItem(item)"
:disabled=
"item.disabled"
v-else
>
{{item.title}}
</el-menu-item>
<
template
v-else
>
<el-menu-item
:index=
"index.toString()"
@
click=
"handleItem(item)"
:disabled=
"item.disabled"
v-if=
"isCustomerId(item.pathName)"
>
{{
item
.
title
}}
</el-menu-item>
</
template
>
</template>
</el-menu>
</div>
...
...
@@ -35,6 +38,10 @@ export default {
type
:
String
,
default
:
null
},
customerId
:
{
type
:
String
,
default
:
''
}
},
data
()
{
return
{
...
...
@@ -78,14 +85,20 @@ export default {
{
title
:
'裁判文书'
,
pathName
:
'judgment'
},
{
title
:
'法院公告'
,
pathName
:
'courtNotice'
},
{
title
:
'开庭公告'
,
pathName
:
'openacourtsessionNotice'
},
{
title
:
'信用中国'
,
pathName
:
''
}
//
{title: '信用中国', pathName: ''}
]},
// {title: '商务信息', pathName: 'business'},
{
title
:
'招标偏好'
,
pathName
:
'preference'
},
{
title
:
'合作情况'
,
pathName
:
'cooperate'
},
{
title
:
'决策链条'
,
pathName
:
'decisionMaking'
},
{
title
:
'跟进记录'
,
pathName
:
'gjjl'
}
]
],
customer
:[
'preference'
,
'cooperate'
,
'decisionMaking'
,
'gjjl'
],
}
},
computed
:
{
...
...
@@ -127,6 +140,15 @@ export default {
},
handleSearch
(){
console
.
log
(
'开始搜索了'
)
},
isCustomerId
(
name
){
if
(
this
.
customer
.
indexOf
(
name
)
!=
-
1
){
if
(
this
.
customerId
){
return
true
}
return
false
}
return
true
}
}
}
...
...
dsk-operate-ui/src/views/detail/party-a/component/Tables.vue
View file @
3286a077
...
...
@@ -8,7 +8,7 @@
border
fit
highlight-current-row
:default-sort =
'defaultSort'
:default-sort =
"defaultSort?defaultSort:
{}"
@sort-change="sortChange"
>
<el-table-column
...
...
@@ -30,15 +30,33 @@
:fixed=
"item.fixed"
:sortable=
"item.sortable ? 'custom' : false"
:resizable=
"false"
>
<template
v-if=
"item.slotHeader"
slot=
"header"
>
<slot
:name=
"item.slotName"
></slot>
</
template
>
<
template
slot-scope=
"scope"
>
<slot
v-if=
"item.slot"
:name=
"item.prop"
:row=
"scope.row"
:index=
"scope.$index"
:data=
"item"
></slot>
<span
v-else
>
<template
v-if=
"item.children&&item.children.length"
>
<el-table-column
v-for=
"(cld, i) in item.children"
:key=
"i"
:prop=
"cld.prop"
:label=
"cld.label"
:width=
"cld.width"
:resizable=
"false"
>
<template
slot-scope=
"cldscope"
>
<template
v-if=
"cld.slot"
>
<slot
:name=
"cld.prop"
:row=
"cldscope.row"
:data=
"cld"
></slot>
</
template
>
<
template
v-else
>
<span>
{{
cldscope
.
row
[
cld
.
prop
]
||
'--'
}}
</span>
</
template
>
</template>
</el-table-column>
</template>
<
template
v-else-if=
"item.slotHeader"
slot=
"header"
>
<slot
:name=
"item.slotName"
></slot>
</
template
>
<
template
slot-scope=
"scope"
>
<slot
v-if=
"item.slot"
:name=
"item.prop"
:row=
"scope.row"
:index=
"scope.$index"
:data=
"item"
></slot>
<span
v-else
>
{{
scope
.
row
[
item
.
prop
]
||
'--'
}}
</span>
</
template
>
</
template
>
</el-table-column>
</template>
...
...
@@ -51,6 +69,7 @@
</template>
<
script
>
import
{
tabFixed
}
from
'@/utils'
export
default
{
name
:
"Tables"
,
props
:
{
...
...
@@ -114,7 +133,7 @@ export default {
::v-deep
.el-table__body
tr
.current-row
>
td
.el-table__cell
{
background-color
:
#ffffff
;
}
::v-deep
.el-table__fixed
{
/*
::v-deep .el-table__fixed{
height: calc(100% - 16px) !important;
}
}
*/
</
style
>
dsk-operate-ui/src/views/detail/party-a/cooperate/index.vue
View file @
3286a077
This diff is collapsed.
Click to expand it.
dsk-operate-ui/src/views/detail/party-a/dealings/bidagency.vue
View file @
3286a077
...
...
@@ -55,7 +55,7 @@ export default {
cid
:
this
.
companyId
,
sort
:
3
,
pageNum
:
1
,
pageSize
:
1
0
pageSize
:
2
0
},
defaultSort
:
{
prop
:
'issueTime'
,
order
:
'descending'
},
forData
:
[
...
...
dsk-operate-ui/src/views/detail/party-a/dealings/bidrecords.vue
View file @
3286a077
...
...
@@ -45,7 +45,7 @@ export default {
queryParams
:
{
cid
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
1
0
pageSize
:
2
0
},
forData
:
[
{
label
:
'项目名称'
,
prop
:
'name'
,
minWidth
:
'320'
,
slot
:
true
},
...
...
dsk-operate-ui/src/views/detail/party-a/dealings/component/bidagencyDetail.vue
View file @
3286a077
...
...
@@ -70,7 +70,7 @@ export default {
tendereeId
:
this
.
data
.
tendereeId
,
agencyId
:
this
.
data
.
agencyId
,
pageNum
:
1
,
pageSize
:
1
0
pageSize
:
2
0
}
,
formData
:
[
{
type
:
3
,
fieldName
:
'keys'
,
value
:
''
,
placeholder
:
'输入合作项目/工程名称查询'
,
options
:
[]
}
,
...
...
dsk-operate-ui/src/views/detail/party-a/dealings/component/customDetail.vue
View file @
3286a077
...
...
@@ -76,7 +76,7 @@ export default {
cid
:
this
.
companyId
,
unitId
:
this
.
data
.
projectUnitId
,
pageNum
:
1
,
pageSize
:
1
0
pageSize
:
2
0
}
,
formData
:
[
{
type
:
3
,
fieldName
:
'keys'
,
value
:
''
,
placeholder
:
'输入项目/工程名称查询'
,
options
:
[]
}
,
...
...
dsk-operate-ui/src/views/detail/party-a/dealings/component/supplierDetail.vue
View file @
3286a077
...
...
@@ -76,7 +76,7 @@ export default {
cid
:
this
.
data
.
companyId
,
unitId
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
1
0
pageSize
:
2
0
}
,
formData
:
[
{
type
:
3
,
fieldName
:
'keys'
,
value
:
''
,
placeholder
:
'输入合作项目/工程名称查询'
,
options
:
[]
}
,
...
...
dsk-operate-ui/src/views/detail/party-a/dealings/custom.vue
View file @
3286a077
...
...
@@ -56,7 +56,7 @@ export default {
cid
:
this
.
companyId
,
sort
:
3
,
pageNum
:
1
,
pageSize
:
1
0
pageSize
:
2
0
},
defaultSort
:
{
prop
:
'time'
,
order
:
'descending'
},
forData
:
[
...
...
dsk-operate-ui/src/views/detail/party-a/dealings/hiscontract.vue
View file @
3286a077
...
...
@@ -48,7 +48,7 @@ export default {
cid
:
this
.
companyId
,
sort
:
3
,
pageNum
:
1
,
pageSize
:
1
0
pageSize
:
2
0
},
defaultSort
:
{
prop
:
'winBidTime'
,
order
:
'descending'
},
forData
:
[
...
...
dsk-operate-ui/src/views/detail/party-a/dealings/supplier.vue
View file @
3286a077
...
...
@@ -56,7 +56,7 @@ export default {
cid
:
this
.
companyId
,
sort
:
3
,
pageNum
:
1
,
pageSize
:
1
0
pageSize
:
2
0
},
defaultSort
:
{
prop
:
'time'
,
order
:
'descending'
},
forData
:
[
...
...
dsk-operate-ui/src/views/detail/party-a/decisionMaking/index.vue
View file @
3286a077
...
...
@@ -81,11 +81,17 @@ export default {
components
:
{
Tables
},
props
:
{
customerIds
:
{
type
:
String
,
default
:
''
}
},
data
()
{
return
{
ifEmpty
:
false
,
queryParams
:{
customerId
:
'f25219e73249eea0d9fddc5c7f04f97f'
,
customerId
:
this
.
customerIds
,
pageNum
:
1
,
pageSize
:
10
,
},
...
...
@@ -316,5 +322,8 @@ export default {
}
}
}
::v-deep
.el-table__fixed
::before
,
::v-deep
.el-table__fixed-right
::before
{
background-color
:unset
;
}
</
style
>
dsk-operate-ui/src/views/detail/party-a/financial/index.vue
View file @
3286a077
This diff is collapsed.
Click to expand it.
dsk-operate-ui/src/views/detail/party-a/index.vue
View file @
3286a077
...
...
@@ -3,7 +3,7 @@
<Header
:company-id=
"companyId"
v-if=
"companyId"
/>
<div
class=
"flex-box part-main"
>
<div
class=
"part-left"
>
<side-bar
@
currentPath=
"showPartPage"
:pathName=
"currentPath.pathName"
:partBoxHeight=
"partBoxHeight"
/>
<side-bar
@
currentPath=
"showPartPage"
:pathName=
"currentPath.pathName"
:partBoxHeight=
"partBoxHeight"
:customerId=
"customerId"
/>
</div>
<div
class=
"part-right"
>
<div
id=
"partBox"
v-if=
"companyId"
>
...
...
@@ -42,14 +42,17 @@
<Judgment
v-if=
"currentPath.pathName=='judgment'"
:company-id=
"companyId"
/>
<CourtNotice
v-if=
"currentPath.pathName=='courtNotice'"
:company-id=
"companyId"
/>
<OpenacourtsessionNotice
v-if=
"currentPath.pathName=='openacourtsessionNotice'"
:company-id=
"companyId"
/>
<!-- 招标偏好 -->
<Preference
v-if=
"currentPath.pathName=='preference'"
:company-id=
"companyId"
/>
<!-- 合作情况 -->
<Cooperate
v-if=
"currentPath.pathName=='cooperate'"
:company-id=
"companyId"
/>
<!-- 决策链条 -->
<DecisionMaking
v-if=
"currentPath.pathName=='decisionMaking'"
:company-id=
"companyId"
/>
<!-- 跟进记录 -->
<Gjjl
v-if=
"currentPath.pathName=='gjjl'"
:company-id=
"companyId"
/>
<template
v-if=
"customerId"
>
<!-- 招标偏好 -->
<Preference
v-if=
"currentPath.pathName=='preference'"
:customer-ids=
"customerId"
/>
<!-- 合作情况 -->
<Cooperate
v-if=
"currentPath.pathName=='cooperate'"
:customer-ids=
"customerId"
/>
<!-- 决策链条 -->
<DecisionMaking
v-if=
"currentPath.pathName=='decisionMaking'"
:customer-ids=
"customerId"
/>
<!-- 跟进记录 -->
<Gjjl
v-if=
"currentPath.pathName=='gjjl'"
types=
"gjdt"
:customer-ids=
"customerId"
/>
</
template
>
</div>
</div>
</div>
...
...
@@ -58,6 +61,7 @@
<
script
>
import
{
idRemark
}
from
'@/api/common'
import
{
infoHeader
}
from
'@/api/detail/party-a/index'
import
elementResizeDetectorMaker
from
"element-resize-detector"
import
Header
from
"./component/Header"
import
SideBar
from
"./component/Sidebar"
...
...
@@ -137,7 +141,9 @@ export default {
},
data
()
{
return
{
companyId
:
3068
,
//企业Id(测试默认3068)
companyInfo
:
{},
companyId
:
10361319
,
//企业Id(测试默认3068)
customerId
:
''
,
//企业Id(测试默认'a00d582a6041f32c16aac804e4924736')
currentPath
:
{
pathName
:
'overview'
//默认展示页
},
...
...
@@ -152,6 +158,9 @@ export default {
if
(
this
.
$route
.
query
.
path
)
{
// 获取跳转对应板块
this
.
currentPath
.
pathName
=
this
.
$route
.
query
.
path
}
if
(
this
.
$route
.
query
.
customerId
)
{
// 判断是否显示
this
.
customerId
=
this
.
$route
.
query
.
customerId
}
},
mounted
()
{
const
_this
=
this
,
erd
=
elementResizeDetectorMaker
(),
partBox
=
document
.
getElementById
(
"partBox"
)
...
...
@@ -170,6 +179,13 @@ export default {
let
{
data
}
=
await
idRemark
({
companyId
})
if
(
data
.
code
==
200
){
this
.
companyId
=
data
.
data
this
.
handleQuery
()
}
},
async
handleQuery
()
{
let
res
=
await
infoHeader
({
companyId
:
this
.
companyId
})
if
(
res
.
code
==
200
){
this
.
companyInfo
=
res
.
data
}
}
}
...
...
dsk-operate-ui/src/views/detail/party-a/mixins/mixin.js
View file @
3286a077
...
...
@@ -24,7 +24,7 @@ export default {
let
condtion
=
{}
let
reqData
=
{}
this
.
formData
.
forEach
(
item
=>
{
if
(
item
.
value
||
(
item
.
value
&&
item
.
value
.
length
))
{
if
(
item
.
value
||
(
item
.
value
&&
item
.
value
.
length
)
||
item
.
value
===
0
)
{
if
(
item
.
fieldName
==
'time'
)
{
condtion
[
item
.
startTime
]
=
item
.
value
[
0
];
condtion
[
item
.
endTime
]
=
item
.
value
[
1
];
...
...
@@ -39,7 +39,7 @@ export default {
}
})
Object
.
keys
(
condtion
).
forEach
(
key
=>
{
if
(
condtion
[
key
])
{
if
(
condtion
[
key
]
||
condtion
[
key
]
===
0
)
{
if
(
Array
.
isArray
(
condtion
[
key
])
&&
condtion
[
key
].
length
==
0
){
delete
condtion
[
key
]
}
...
...
dsk-operate-ui/src/views/detail/party-a/opport/administrative.vue
View file @
3286a077
...
...
@@ -17,10 +17,10 @@
:queryParams=
"queryParams"
@
handle-current-change=
"handleCurrentChange"
>
<template
slot=
"
porjectName
"
slot-scope=
"scope"
>
<span
:class=
"[isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.
porjectName
)?'cell-span':'']"
:style=
"
{'-webkit-line-clamp': 2}">
{{
scope
.
row
.
porjectName
}}
<span
v-if=
"isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.
porjectName
)"
@
click=
"changeShowAll(scope.index, 0)"
>
...
<span
style=
"color: #0081FF;"
>
展开
</span></span>
<template
slot=
"
content
"
slot-scope=
"scope"
>
<span
:class=
"[isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.
content
)?'cell-span':'']"
:style=
"
{'-webkit-line-clamp': 2}">
{{
scope
.
row
.
content
}}
<span
v-if=
"isOverHiddenFlag(scope.data.width, showList, scope.index, 0, scope.row.
content
)"
@
click=
"changeShowAll(scope.index, 0)"
>
...
<span
style=
"color: #0081FF;"
>
展开
</span></span>
</span>
</
template
>
</tables>
...
...
@@ -30,7 +30,7 @@
<
script
>
import
mixin
from
'../mixins/mixin'
import
{
getList
}
from
'@/api/detail/party-a/opport'
import
{
creditXzxkPage
}
from
'@/api/detail/party-a/opport'
export
default
{
name
:
'Administrative'
,
props
:
[
'companyId'
],
...
...
@@ -42,22 +42,22 @@ export default {
queryParams
:
{
cid
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
1
0
pageSize
:
2
0
},
forData
:
[
{
label
:
'许可决定日期'
,
prop
:
'
us
e'
,
width
:
'100'
},
{
label
:
'决定文书号'
,
prop
:
'
type
'
,
width
:
'200'
},
{
label
:
'许可编号'
,
prop
:
'
type'
,
width
:
'8
0'
},
{
label
:
'决定文书名称'
,
prop
:
'
typ
e'
,
width
:
'190'
},
{
label
:
'许可内容'
,
prop
:
'
porjectName
'
,
width
:
'300'
,
slot
:
true
},
{
label
:
'有效期自'
,
prop
:
'
type
'
,
width
:
'100'
},
{
label
:
'有效期至'
,
prop
:
'
type
'
,
width
:
'100'
},
{
label
:
'行政许可类别'
,
prop
:
'
t
ype'
,
width
:
'100'
},
{
label
:
'许可机关'
,
prop
:
'
typ
e'
,
width
:
'180'
},
{
label
:
'行政许可机关统一社会信用代码'
,
prop
:
'
type
'
,
width
:
'200'
},
{
label
:
'数据来源单位'
,
prop
:
'
typ
e'
,
width
:
'110'
},
{
label
:
'数据来源单位统一社会信用代码'
,
prop
:
'
typ
e'
,
width
:
'200'
},
{
label
:
'来源'
,
prop
:
'
typ
e'
,
width
:
'80'
}
{
label
:
'许可决定日期'
,
prop
:
'
deciTim
e'
,
width
:
'100'
},
{
label
:
'决定文书号'
,
prop
:
'
deciWritNo
'
,
width
:
'200'
},
{
label
:
'许可编号'
,
prop
:
'
permitNo'
,
width
:
'10
0'
},
{
label
:
'决定文书名称'
,
prop
:
'
deciWritNam
e'
,
width
:
'190'
},
{
label
:
'许可内容'
,
prop
:
'
content
'
,
width
:
'300'
,
slot
:
true
},
{
label
:
'有效期自'
,
prop
:
'
valiBegin
'
,
width
:
'100'
},
{
label
:
'有效期至'
,
prop
:
'
valiEnd
'
,
width
:
'100'
},
{
label
:
'行政许可类别'
,
prop
:
'
permitT
ype'
,
width
:
'100'
},
{
label
:
'许可机关'
,
prop
:
'
offic
e'
,
width
:
'180'
},
{
label
:
'行政许可机关统一社会信用代码'
,
prop
:
'
xxx
'
,
width
:
'200'
},
{
label
:
'数据来源单位'
,
prop
:
'
dataSourceOffic
e'
,
width
:
'110'
},
{
label
:
'数据来源单位统一社会信用代码'
,
prop
:
'
dataSourceOfficeCreditCod
e'
,
width
:
'200'
},
{
label
:
'来源'
,
prop
:
'
dataSourc
e'
,
width
:
'80'
}
],
formData
:
[
{
type
:
3
,
fieldName
:
'keys'
,
value
:
''
,
placeholder
:
'输入关键词查询'
,
options
:
[]},
...
...
@@ -75,27 +75,15 @@ export default {
this
.
handleQuery
()
},
methods
:
{
handleQuery
(
params
)
{
async
handleQuery
(
params
)
{
this
.
tableLoading
=
true
let
param
=
params
?
params
:
this
.
queryParams
getList
(
param
).
then
((
res
)
=>
{
this
.
tableLoading
=
false
this
.
tableData
=
[
{
projectId
:
'1'
,
porjectName
:
'滨州医学院口腔医学大楼铝合金门窗供货及安装滨州医学院口腔医学大'
,
use
:
'城镇住宅用地'
,
type
:
'房地产业'
,
way
:
'挂牌出让'
,
state
:
'重庆'
,
money
:
'11234万元'
,
scale
:
'222平米'
,
unit
:
'江苏省住房和城乡建设厅'
,
date
:
'2015-08-06'
,
}
]
this
.
tableDataTotal
=
100
})
let
res
=
await
creditXzxkPage
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
){
this
.
tableData
=
res
.
rows
}
this
.
tableDataTotal
=
res
.
total
},
changeShowAll
(
row
,
column
)
{
this
.
showList
.
push
({
...
...
dsk-operate-ui/src/views/detail/party-a/opport/announcement.vue
View file @
3286a077
...
...
@@ -11,15 +11,21 @@
<tables
:indexFixed=
"true"
:defaultSort=
"defaultSort"
:tableLoading=
"tableLoading"
:tableData=
"tableData"
:forData=
"forData"
:tableDataTotal=
"tableDataTotal"
:queryParams=
"queryParams"
@
handle-current-change=
"handleCurrentChange"
@
sort-change=
"sortChange"
>
<template
slot=
"porjectName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
>
{{
scope
.
row
.
porjectName
}}
</router-link>
<template
slot=
"projectName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.bid&&scope.row.projectName "
v-html=
"scope.row.projectName"
></router-link>
<div
v-else
v-html=
"scope.row.projectName || '--'"
></div>
</
template
>
<
template
slot=
"province"
slot-scope=
"scope"
>
{{
scope
.
row
.
province
}}{{
`${scope.row.city?'-'+scope.row.city:''
}
`
}}
{{
`${scope.row.area?'-'+scope.row.area:''
}
`
}}
<
/template
>
<
/tables
>
...
...
@@ -28,7 +34,7 @@
<
script
>
import
mixin
from
'../mixins/mixin'
import
{
getList
,
getOption
}
from
'@/api/detail/party-a/opport'
import
{
bidNoticeArea
,
bidNoticeTenderStage
,
bidNoticePage
}
from
'@/api/detail/party-a/opport'
export
default
{
name
:
'Announcement'
,
props
:
[
'companyId'
],
...
...
@@ -39,25 +45,27 @@ export default {
return
{
queryParams
:
{
cid
:
this
.
companyId
,
sort
:
3
,
pageNum
:
1
,
pageSize
:
1
0
pageSize
:
2
0
}
,
defaultSort
:
{
prop
:
'issueTime'
,
order
:
'descending'
}
,
forData
:
[
{
label
:
'项目名称'
,
prop
:
'p
or
jectName'
,
minWidth
:
'300'
,
slot
:
true
},
{
label
:
'发布日期'
,
prop
:
'
use'
,
sortable
:
'custom
'
,
width
:
'120'
},
{
label
:
'预算金额(万元)'
,
prop
:
'
type'
,
sortable
:
'custom
'
,
width
:
'140'
},
{
label
:
'项目地区'
,
prop
:
'
way'
,
width
:
'120'
},
{
label
:
'项目类别'
,
prop
:
'
stat
e'
,
width
:
'90'
},
{
label
:
'招采单位联系人'
,
prop
:
'
money
'
,
width
:
'110'
},
{
label
:
'招采单位联系方式'
,
prop
:
'
money
'
,
width
:
'130'
},
{
label
:
'代理单位'
,
prop
:
'
money'
,
w
idth
:
'170'
},
{
label
:
'代理单位联系人'
,
prop
:
'
money
'
,
width
:
'110'
},
{
label
:
'代理单位联系方式'
,
prop
:
'
money
'
,
width
:
'130'
},
{
label
:
'报名截止日期'
,
prop
:
'
money
'
,
width
:
'100'
}
{
label
:
'项目名称'
,
prop
:
'p
ro
jectName'
,
minWidth
:
'300'
,
slot
:
true
}
,
{
label
:
'发布日期'
,
prop
:
'
issueTime'
,
sortable
:
'custom'
,
descending
:
'3'
,
ascending
:
'4
'
,
width
:
'120'
}
,
{
label
:
'预算金额(万元)'
,
prop
:
'
projectAmount'
,
sortable
:
'custom'
,
descending
:
'1'
,
ascending
:
'2
'
,
width
:
'140'
}
,
{
label
:
'项目地区'
,
prop
:
'
province'
,
width
:
'120'
,
slot
:
true
}
,
{
label
:
'项目类别'
,
prop
:
'
tenderStag
e'
,
width
:
'90'
}
,
{
label
:
'招采单位联系人'
,
prop
:
'
contact
'
,
width
:
'110'
}
,
{
label
:
'招采单位联系方式'
,
prop
:
'
contactTel
'
,
width
:
'130'
}
,
{
label
:
'代理单位'
,
prop
:
'
agency'
,
minW
idth
:
'170'
}
,
{
label
:
'代理单位联系人'
,
prop
:
'
agencyContact
'
,
width
:
'110'
}
,
{
label
:
'代理单位联系方式'
,
prop
:
'
agencyContactTel
'
,
width
:
'130'
}
,
{
label
:
'报名截止日期'
,
prop
:
'
overTime
'
,
width
:
'100'
}
],
formData
:
[
{
type
:
1
,
fieldName
:
'projectStage'
,
value
:
''
,
placeholder
:
'项目地区'
,
options
:
[]},
{
type
:
1
,
fieldName
:
'projectTyp
e'
,
value
:
''
,
placeholder
:
'项目类型'
,
options
:
[]},
{
type
:
7
,
fieldName
:
'province'
,
value
:
''
,
props
:
{
multiple
:
true
}
,
placeholder
:
'项目地区'
,
options
:
[]
}
,
{
type
:
4
,
fieldName
:
'tenderStag
e'
,
value
:
''
,
placeholder
:
'项目类型'
,
options
:
[]
}
,
{
type
:
3
,
fieldName
:
'keys'
,
value
:
''
,
placeholder
:
'输入关键词查询'
,
options
:
[]
}
],
//列表
...
...
@@ -73,43 +81,72 @@ export default {
this
.
handleQuery
()
}
,
methods
:
{
handleOption
(){
getOption
().
then
((
res
)
=>
{
this
.
setFormData
(
'projectStage'
,
[
{
name
:
'类别1'
,
value
:
'1'
},
{
name
:
'类别2'
,
value
:
'2'
},
{
name
:
'类别3'
,
value
:
'3'
},
{
name
:
'类别4'
,
value
:
'4'
}
])
this
.
setFormData
(
'projectType'
,
[
{
name
:
'类别1'
,
value
:
'1'
},
{
name
:
'类别2'
,
value
:
'2'
},
{
name
:
'类别3'
,
value
:
'3'
},
{
name
:
'类别4'
,
value
:
'4'
}
])
})
async
handleOption
(){
let
[
area
,
tender
]
=
await
Promise
.
all
([
bidNoticeArea
({
cid
:
this
.
companyId
}
),
bidNoticeTenderStage
({
cid
:
this
.
companyId
}
)
])
if
(
area
.
code
==
200
){
let
region
=
area
.
data
.
map
(
item
=>
{
let
province
=
{
label
:
item
.
province
+
'('
+
item
.
count
+
')'
,
value
:
item
.
provinceId
}
if
(
item
.
citys
&&
item
.
citys
.
length
>
0
){
let
city
=
[],
citem
=
{
}
for
(
let
i
=
0
;
i
<
item
.
citys
.
length
;
i
++
){
citem
=
{
label
:
item
.
citys
[
i
].
city
,
value
:
item
.
citys
[
i
].
cityId
}
if
(
item
.
citys
[
i
].
areas
&&
item
.
citys
[
i
].
areas
.
length
>
0
){
let
area
=
[],
aitem
=
{
}
for
(
let
j
=
0
;
j
<
item
.
citys
[
i
].
areas
.
length
;
j
++
){
aitem
=
{
label
:
item
.
citys
[
i
].
areas
[
j
].
area
,
value
:
item
.
citys
[
i
].
areas
[
j
].
areaId
}
area
.
push
(
aitem
)
citem
.
children
=
area
}
}
city
.
push
(
citem
)
}
city
.
length
>
0
?
province
.
children
=
city
:
''
}
return
province
}
)
this
.
setFormData
(
'province'
,
region
)
}
if
(
tender
.
code
==
200
){
let
tenderStage
=
tender
.
data
.
map
(
item
=>
{
let
it
=
{
name
:
item
.
tenderStage
+
'('
+
item
.
count
+
')'
,
value
:
item
.
tenderStage
}
return
it
}
)
this
.
setFormData
(
'tenderStage'
,
tenderStage
)
}
}
,
handleQuery
(
params
)
{
async
handleQuery
(
params
)
{
this
.
tableLoading
=
true
let
param
=
params
?
params
:
this
.
queryParams
getList
(
param
).
then
((
res
)
=>
{
this
.
tableLoading
=
false
this
.
tableData
=
[
{
projectId
:
'1'
,
porjectName
:
'滨州医学院口腔医学大楼铝合金门窗供货及安装'
,
use
:
'城镇住宅用地'
,
type
:
'房地产业'
,
way
:
'挂牌出让'
,
state
:
'重庆'
,
money
:
'11234万元'
,
scale
:
'222平米'
,
unit
:
'江苏省住房和城乡建设厅'
,
date
:
'2015-08-06'
,
}
]
this
.
tableDataTotal
=
100
})
let
param
=
this
.
getAreaList
(
params
||
this
.
queryParams
)
let
res
=
await
bidNoticePage
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
){
this
.
tableData
=
res
.
rows
}
this
.
tableDataTotal
=
res
.
total
}
,
getAreaList
(
params
){
if
(
params
.
province
&&
params
.
province
.
length
>
0
){
let
provinceIds
=
[],
cityIds
=
[],
areaIds
=
[]
for
(
let
i
=
0
;
i
<
params
.
province
.
length
;
i
++
){
params
.
province
[
i
][
0
]?
provinceIds
.
push
(
params
.
province
[
i
][
0
]):
''
params
.
province
[
i
][
1
]?
cityIds
.
push
(
params
.
province
[
i
][
1
]):
''
params
.
province
[
i
][
2
]?
areaIds
.
push
(
params
.
province
[
i
][
2
]):
''
}
delete
params
.
province
params
.
provinceIds
=
provinceIds
.
filter
(
function
(
value
,
index
,
self
){
return
self
.
indexOf
(
value
)
===
index
}
)
params
.
cityIds
=
cityIds
.
filter
(
function
(
value
,
index
,
self
){
return
self
.
indexOf
(
value
)
===
index
}
)
params
.
areaIds
=
areaIds
.
filter
(
function
(
value
,
index
,
self
){
return
self
.
indexOf
(
value
)
===
index
}
)
}
return
params
}
}
}
...
...
dsk-operate-ui/src/views/detail/party-a/opport/biddingplan.vue
View file @
3286a077
<
template
>
<div
class=
"app-container detail-container"
>
biddingplan
<div
class=
"detail-container"
>
<head-form
title=
"招标计划"
:form-data=
"formData"
:query-params=
"queryParams"
:isExcel=
"true"
:total=
"tableDataTotal"
/>
<tables
:indexFixed=
"true"
:defaultSort=
"defaultSort"
:tableLoading=
"tableLoading"
:tableData=
"tableData"
:forData=
"forData"
:tableDataTotal=
"tableDataTotal"
:queryParams=
"queryParams"
@
handle-current-change=
"handleCurrentChange"
@
sort-change=
"sortChange"
>
<template
slot=
"projectName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.id&&scope.row.projectName "
v-html=
"scope.row.projectName"
></router-link>
<div
v-else
v-html=
"scope.row.projectName || '--'"
></div>
</
template
>
<
template
slot=
"province"
slot-scope=
"scope"
>
{{
scope
.
row
.
province
}}{{
`${scope.row.city?'-'+scope.row.city:''
}
`
}}
{{
`${scope.row.area?'-'+scope.row.area:''
}
`
}}
<
/template
>
<
/tables
>
<
/div
>
<
/template
>
<
script
>
import
mixin
from
'../mixins/mixin'
import
{
bidPlanPage
}
from
'@/api/detail/party-a/opport'
export
default
{
name
:
'Biddingplan'
,
props
:
[
'companyId'
],
mixins
:
[
mixin
],
components
:
{
}
,
data
()
{
return
{
queryParams
:
{
cid
:
this
.
companyId
,
sort
:
3
,
pageNum
:
1
,
pageSize
:
20
}
,
defaultSort
:
{
prop
:
'issueTime'
,
order
:
'descending'
}
,
forData
:
[
{
label
:
'项目名称'
,
prop
:
'projectName'
,
minWidth
:
'400'
,
slot
:
true
}
,
{
label
:
'发布日期'
,
prop
:
'issueTime'
,
sortable
:
'custom'
,
descending
:
'3'
,
ascending
:
'4'
,
width
:
'120'
}
,
{
label
:
'合同预估金额(万元)'
,
prop
:
'planTenderAmount'
,
sortable
:
'custom'
,
descending
:
'1'
,
ascending
:
'2'
,
width
:
'160'
}
,
{
label
:
'资金来源'
,
prop
:
'projecetCapitalSource'
,
minWidth
:
'100'
}
,
{
label
:
'项目地区'
,
prop
:
'province'
,
minWidth
:
'110'
,
slot
:
true
}
,
{
label
:
'项目类型'
,
prop
:
'buildingProjectType'
,
minWidth
:
'100'
}
,
{
label
:
'标的物类型'
,
prop
:
'objectType'
,
minWidth
:
'100'
}
,
{
label
:
'预计招标日期'
,
prop
:
'planTenderDateStart'
,
sortable
:
'custom'
,
descending
:
'15'
,
ascending
:
'16'
,
minWidth
:
'110'
}
],
formData
:
[],
//列表
tableLoading
:
false
,
tableData
:[],
tableDataTotal
:
0
}
}
,
computed
:
{
}
,
created
()
{
this
.
handleQuery
()
}
,
methods
:
{
async
handleQuery
(
params
)
{
this
.
tableLoading
=
true
let
param
=
params
?
params
:
this
.
queryParams
let
res
=
await
bidPlanPage
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
){
this
.
tableData
=
res
.
rows
}
this
.
tableDataTotal
=
res
.
total
}
}
}
<
/script
>
<
style
lang
=
"scss"
scoped
>
.
detail
-
container
{
margin
:
0
;
background
:
#
ffffff
;
border
-
radius
:
4
px
;
padding
:
16
px
;
background
:
#FFFFFF
;
}
<
/style
>
dsk-operate-ui/src/views/detail/party-a/opport/bond.vue
View file @
3286a077
...
...
@@ -11,15 +11,18 @@
<tables
:indexFixed=
"true"
:defaultSort=
"defaultSort"
:tableLoading=
"tableLoading"
:tableData=
"tableData"
:forData=
"forData"
:tableDataTotal=
"tableDataTotal"
:queryParams=
"queryParams"
@
handle-current-change=
"handleCurrentChange"
@
sort-change=
"sortChange"
>
<template
slot=
"porjectName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
>
{{
scope
.
row
.
porjectName
}}
</router-link>
<template
slot=
"projectName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.id&&scope.row.projectName "
v-html=
"scope.row.projectName"
></router-link>
<div
v-else
v-html=
"scope.row.projectName || '--'"
></div>
</
template
>
</tables>
...
...
@@ -28,7 +31,7 @@
<
script
>
import
mixin
from
'../mixins/mixin'
import
{
getList
}
from
'@/api/detail/party-a/opport'
import
{
specialDebtProjectPage
}
from
'@/api/detail/party-a/opport'
export
default
{
name
:
'Bond'
,
props
:
[
'companyId'
],
...
...
@@ -39,16 +42,16 @@ export default {
return
{
queryParams
:
{
cid
:
this
.
companyId
,
sort
:
1
,
pageNum
:
1
,
pageSize
:
1
0
pageSize
:
2
0
},
defaultSort
:
{
prop
:
'projectTotalInvestment'
,
order
:
'descending'
},
forData
:
[
{
label
:
'项目名称'
,
prop
:
'porjectName'
,
minWidth
:
'300'
,
slot
:
true
},
{
label
:
'项目总投资(亿元)'
,
prop
:
'use'
,
sortable
:
'custom'
,
width
:
'150'
},
{
label
:
'项目资本金(亿元)'
,
prop
:
'type'
,
sortable
:
'custom'
,
width
:
'150'
},
{
label
:
'项目收益倍数(倍)'
,
prop
:
'way'
,
sortable
:
'custom'
,
width
:
'150'
},
{
label
:
'专项债金额(亿元)'
,
prop
:
'state'
,
sortable
:
'custom'
,
width
:
'150'
},
{
label
:
'专项债用作资本金(亿元)'
,
prop
:
'money'
,
sortable
:
'custom'
,
width
:
'200'
}
{
label
:
'项目名称'
,
prop
:
'projectName'
,
minWidth
:
'300'
,
slot
:
true
},
{
label
:
'项目总投资(亿元)'
,
prop
:
'projectTotalInvestment'
,
sortable
:
'custom'
,
descending
:
'1'
,
ascending
:
'2'
,
width
:
'150'
},
{
label
:
'项目资本金(亿元)'
,
prop
:
'projectCapital'
,
sortable
:
'custom'
,
descending
:
'17'
,
ascending
:
'18'
,
width
:
'150'
},
{
label
:
'专项债用作资本金(亿元)'
,
prop
:
'specialBondCapital'
,
sortable
:
'custom'
,
descending
:
'19'
,
ascending
:
'20'
,
width
:
'200'
}
],
formData
:
[
{
type
:
3
,
fieldName
:
'keys'
,
value
:
''
,
placeholder
:
'输入项目名称关键词查询'
,
options
:
[]},
...
...
@@ -65,27 +68,15 @@ export default {
this
.
handleQuery
()
},
methods
:
{
handleQuery
(
params
)
{
async
handleQuery
(
params
)
{
this
.
tableLoading
=
true
let
param
=
params
?
params
:
this
.
queryParams
getList
(
param
).
then
((
res
)
=>
{
this
.
tableLoading
=
false
this
.
tableData
=
[
{
projectId
:
'1'
,
porjectName
:
'滨州医学院口腔医学大楼铝合金门窗供货及安装'
,
use
:
'城镇住宅用地'
,
type
:
'房地产业'
,
way
:
'挂牌出让'
,
state
:
'重庆'
,
money
:
'11234万元'
,
scale
:
'222平米'
,
unit
:
'江苏省住房和城乡建设厅'
,
date
:
'2015-08-06'
,
}
]
this
.
tableDataTotal
=
100
})
let
res
=
await
specialDebtProjectPage
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
){
this
.
tableData
=
res
.
rows
}
this
.
tableDataTotal
=
res
.
total
}
}
}
...
...
dsk-operate-ui/src/views/detail/party-a/opport/landtransaction.vue
View file @
3286a077
...
...
@@ -11,15 +11,18 @@
<tables
:indexFixed=
"true"
:defaultSort=
"defaultSort"
:tableLoading=
"tableLoading"
:tableData=
"tableData"
:forData=
"forData"
:tableDataTotal=
"tableDataTotal"
:queryParams=
"queryParams"
@
handle-current-change=
"handleCurrentChange"
@
sort-change=
"sortChange"
>
<template
slot=
"porjectName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
>
{{
scope
.
row
.
porjectName
}}
</router-link>
<template
slot=
"projectName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.id&&scope.row.projectName "
v-html=
"scope.row.projectName"
></router-link>
<div
v-else
v-html=
"scope.row.projectName || '--'"
></div>
</
template
>
</tables>
...
...
@@ -28,7 +31,7 @@
<
script
>
import
mixin
from
'../mixins/mixin'
import
{
getOption
,
getList
}
from
'@/api/detail/party-a/opport'
import
{
landUse
,
landTransactionPage
}
from
'@/api/detail/party-a/opport'
export
default
{
name
:
'Landtransaction'
,
props
:
[
'companyId'
],
...
...
@@ -39,29 +42,30 @@ export default {
return
{
queryParams
:
{
cid
:
this
.
companyId
,
sort
:
3
,
pageNum
:
1
,
pageSize
:
1
0
pageSize
:
2
0
},
defaultSort
:
{
prop
:
'contractSignTime'
,
order
:
'descending'
},
forData
:
[
{
label
:
'项目名称'
,
prop
:
'p
or
jectName'
,
minWidth
:
'300'
,
slot
:
true
},
{
label
:
'土地用途'
,
prop
:
'
u
se'
,
width
:
'130'
},
{
label
:
'行业分类'
,
prop
:
'
type
'
,
width
:
'100'
},
{
label
:
'供地方式'
,
prop
:
'
w
ay'
,
width
:
'100'
},
{
label
:
'土地坐落'
,
prop
:
'
state'
,
w
idth
:
'130'
},
{
label
:
'成交金额(万元)'
,
prop
:
'
money'
,
sortable
:
'custom
'
,
width
:
'140'
},
{
label
:
'总面积(㎡)'
,
prop
:
'
scale'
,
sortable
:
'custom
'
,
width
:
'130'
},
{
label
:
'批准单位'
,
prop
:
'
unit
'
,
width
:
'130'
},
{
label
:
'签订日期'
,
prop
:
'
date
'
,
width
:
'130'
}
{
label
:
'项目名称'
,
prop
:
'p
ro
jectName'
,
minWidth
:
'300'
,
slot
:
true
},
{
label
:
'土地用途'
,
prop
:
'
landU
se'
,
width
:
'130'
},
{
label
:
'行业分类'
,
prop
:
'
industry
'
,
width
:
'100'
},
{
label
:
'供地方式'
,
prop
:
'
supplyLandW
ay'
,
width
:
'100'
},
{
label
:
'土地坐落'
,
prop
:
'
landAddr'
,
minW
idth
:
'130'
},
{
label
:
'成交金额(万元)'
,
prop
:
'
transactionPrice'
,
sortable
:
'custom'
,
descending
:
'3'
,
ascending
:
'4
'
,
width
:
'140'
},
{
label
:
'总面积(㎡)'
,
prop
:
'
acreage'
,
sortable
:
'custom'
,
descending
:
'11'
,
ascending
:
'12
'
,
width
:
'130'
},
{
label
:
'批准单位'
,
prop
:
'
authority
'
,
width
:
'130'
},
{
label
:
'签订日期'
,
prop
:
'
contractSignTime'
,
sortable
:
'custom'
,
descending
:
'1'
,
ascending
:
'2
'
,
width
:
'130'
}
],
formData
:
[
{
type
:
1
,
fieldName
:
'penalizeReasonTyp
e'
,
value
:
''
,
placeholder
:
'土地用途'
,
options
:
[]},
{
type
:
4
,
fieldName
:
'landUs
e'
,
value
:
''
,
placeholder
:
'土地用途'
,
options
:
[]},
{
type
:
3
,
fieldName
:
'keys'
,
value
:
''
,
placeholder
:
'输入项目名称关键词查询'
,
options
:
[]}
],
//列表
tableLoading
:
false
,
tableData
:[],
tableDataTotal
:
0
,
showList
:[],
tableDataTotal
:
0
}
},
computed
:
{
...
...
@@ -71,37 +75,25 @@ export default {
this
.
handleQuery
()
},
methods
:
{
handleOption
(){
getOption
().
then
((
res
)
=>
{
this
.
setFormData
(
'penalizeReasonType'
,
[
{
name
:
'类别1'
,
value
:
'1'
},
{
name
:
'类别2'
,
value
:
'2'
},
{
name
:
'类别3'
,
value
:
'3'
},
{
name
:
'类别4'
,
value
:
'4'
}
]
)
}
)
async
handleOption
(){
let
res
=
await
landUse
({
cid
:
this
.
companyId
})
if
(
res
.
code
==
200
){
let
use
=
res
.
data
.
map
(
item
=>
{
let
it
=
{
name
:
item
.
landUse
+
'('
+
item
.
count
+
')'
,
value
:
item
.
landUse
}
return
it
})
this
.
setFormData
(
'landUse'
,
use
)
}
},
handleQuery
(
params
)
{
async
handleQuery
(
params
)
{
this
.
tableLoading
=
true
let
param
=
params
?
params
:
this
.
queryParams
getList
(
param
).
then
((
res
)
=>
{
this
.
tableLoading
=
false
this
.
tableData
=
[
{
projectId
:
'1'
,
porjectName
:
'滨州医学院口腔医学大楼铝合金门窗供货及安装'
,
use
:
'城镇住宅用地'
,
type
:
'房地产业'
,
way
:
'挂牌出让'
,
state
:
'重庆'
,
money
:
'11234万元'
,
scale
:
'222平米'
,
unit
:
'江苏省住房和城乡建设厅'
,
date
:
'2015-08-06'
,
}
]
this
.
tableDataTotal
=
100
})
let
res
=
await
landTransactionPage
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
){
this
.
tableData
=
res
.
rows
}
this
.
tableDataTotal
=
res
.
total
}
}
}
...
...
dsk-operate-ui/src/views/detail/party-a/opport/proposed.vue
View file @
3286a077
...
...
@@ -11,15 +11,21 @@
<tables
:indexFixed=
"true"
:defaultSort=
"defaultSort"
:tableLoading=
"tableLoading"
:tableData=
"tableData"
:forData=
"forData"
:tableDataTotal=
"tableDataTotal"
:queryParams=
"queryParams"
@
handle-current-change=
"handleCurrentChange"
@
sort-change=
"sortChange"
>
<template
slot=
"porjectName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
>
{{
scope
.
row
.
porjectName
}}
</router-link>
<template
slot=
"projectName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.id&&scope.row.projectName "
v-html=
"scope.row.projectName"
></router-link>
<div
v-else
v-html=
"scope.row.projectName || '--'"
></div>
</
template
>
<
template
slot=
"isProjcet"
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
isProjcet
==
1
?
'是'
:
'否'
}}
</span>
</
template
>
</tables>
...
...
@@ -28,7 +34,7 @@
<
script
>
import
mixin
from
'../mixins/mixin'
import
{
getList
}
from
'@/api/detail/party-a/opport'
import
{
approvalProjectPage
}
from
'@/api/detail/party-a/opport'
export
default
{
name
:
'Proposed'
,
props
:
[
'companyId'
],
...
...
@@ -39,17 +45,19 @@ export default {
return
{
queryParams
:
{
cid
:
this
.
companyId
,
sort
:
3
,
pageNum
:
1
,
pageSize
:
1
0
pageSize
:
2
0
},
defaultSort
:
{
prop
:
'planStartTime'
,
order
:
'descending'
},
forData
:
[
{
label
:
'项目名称'
,
prop
:
'p
or
jectName'
,
minWidth
:
'300'
,
slot
:
true
},
{
label
:
'成交金额(万元)'
,
prop
:
'
use'
,
sortable
:
'custom
'
,
width
:
'150'
},
{
label
:
'项目类别'
,
prop
:
'
type
'
,
width
:
'100'
},
{
label
:
'计划开工日期'
,
prop
:
'
way'
,
sortable
:
'custom
'
,
width
:
'130'
},
{
label
:
'计划完工日期'
,
prop
:
'
state'
,
sortable
:
'custom
'
,
width
:
'130'
},
{
label
:
'审批结果'
,
prop
:
'
money
'
,
width
:
'100'
},
{
label
:
'是否为民间推介项目'
,
prop
:
'
scale'
,
width
:
'150'
}
{
label
:
'项目名称'
,
prop
:
'p
ro
jectName'
,
minWidth
:
'300'
,
slot
:
true
},
{
label
:
'成交金额(万元)'
,
prop
:
'
money'
,
sortable
:
'custom'
,
descending
:
'1'
,
ascending
:
'2
'
,
width
:
'150'
},
{
label
:
'项目类别'
,
prop
:
'
projectCategories
'
,
width
:
'100'
},
{
label
:
'计划开工日期'
,
prop
:
'
planStartTime'
,
sortable
:
'custom'
,
descending
:
'3'
,
ascending
:
'4
'
,
width
:
'130'
},
{
label
:
'计划完工日期'
,
prop
:
'
planEndTime'
,
sortable
:
'custom'
,
descending
:
'13'
,
ascending
:
'14
'
,
width
:
'130'
},
{
label
:
'审批结果'
,
prop
:
'
examineStatus
'
,
width
:
'100'
},
{
label
:
'是否为民间推介项目'
,
prop
:
'
isProjcet'
,
width
:
'150'
,
slot
:
true
}
],
formData
:
[
{
type
:
3
,
fieldName
:
'keys'
,
value
:
''
,
placeholder
:
'输入项目名称关键词查询'
,
options
:
[]},
...
...
@@ -66,27 +74,15 @@ export default {
this
.
handleQuery
()
},
methods
:
{
handleQuery
(
params
)
{
async
handleQuery
(
params
)
{
this
.
tableLoading
=
true
let
param
=
params
?
params
:
this
.
queryParams
getList
(
param
).
then
((
res
)
=>
{
this
.
tableLoading
=
false
this
.
tableData
=
[
{
projectId
:
'1'
,
porjectName
:
'滨州医学院口腔医学大楼铝合金门窗供货及安装'
,
use
:
'城镇住宅用地'
,
type
:
'房地产业'
,
way
:
'挂牌出让'
,
state
:
'重庆'
,
money
:
'11234万元'
,
scale
:
'222平米'
,
unit
:
'江苏省住房和城乡建设厅'
,
date
:
'2015-08-06'
,
}
]
this
.
tableDataTotal
=
100
})
let
res
=
await
approvalProjectPage
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
){
this
.
tableData
=
res
.
rows
}
this
.
tableDataTotal
=
res
.
total
}
}
}
...
...
dsk-operate-ui/src/views/detail/party-a/opport/tencent.vue
View file @
3286a077
<
template
>
<div
class=
"app-container detail-container"
>
tencent
<div
class=
"detail-container"
>
<head-form
title=
"标讯Pro"
:form-data=
"formData"
:query-params=
"queryParams"
:total=
"tableDataTotal"
:isExcel=
"true"
@
handle-search=
"handleSearch"
/>
<tables
:indexFixed=
"true"
:tableLoading=
"tableLoading"
:tableData=
"tableData"
:forData=
"forData"
:tableDataTotal=
"tableDataTotal"
:queryParams=
"queryParams"
@
handle-current-change=
"handleCurrentChange"
>
<template
slot=
"projectName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.id&&scope.row.projectName "
v-html=
"scope.row.projectName"
></router-link>
<div
v-else
v-html=
"scope.row.projectName || '--'"
></div>
</
template
>
<
template
slot=
"tenderee"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.tendereeId&&scope.row.tenderee "
v-html=
"scope.row.tenderee"
></router-link>
<div
v-else
v-html=
"scope.row.tenderee || '--'"
></div>
</
template
>
<
template
slot=
"agency"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.agencyId&&scope.row.agency "
v-html=
"scope.row.agency"
></router-link>
<div
v-else
v-html=
"scope.row.agency || '--'"
></div>
</
template
>
<
template
slot=
"province"
slot-scope=
"scope"
>
{{
scope
.
row
.
province
}}{{
`${scope.row.city?'-'+scope.row.city:''
}
`
}}
{{
`${scope.row.area?'-'+scope.row.area:''
}
`
}}
<
/template
>
<
/tables
>
<
/div
>
<
/template
>
<
script
>
import
mixin
from
'../mixins/mixin'
import
{
bidNoticeProProjectType
,
bidNoticeProProjectPurposes
,
bidNoticeProAssessmentWay
,
bidNoticeProPage
}
from
'@/api/detail/party-a/opport'
export
default
{
name
:
'Tencent'
,
props
:
[
'companyId'
],
mixins
:
[
mixin
],
components
:
{
}
,
data
()
{
return
{
queryParams
:
{
cid
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
20
}
,
forData
:
[
{
label
:
'项目名称'
,
prop
:
'projectName'
,
minWidth
:
'320'
,
slot
:
true
}
,
{
label
:
'金额(万元)'
,
prop
:
''
,
children
:
[
{
label
:
'建安费暂估'
,
prop
:
'projectSafeAmount'
,
width
:
'88px'
}
,
{
label
:
'勘察费暂估'
,
prop
:
'projectSurveyAmount'
,
width
:
'88px'
}
,
{
label
:
'保证金'
,
prop
:
'projectEnsureAmount'
,
width
:
'88px'
}
]
}
,
{
label
:
'招标人及联系方式'
,
prop
:
''
,
children
:
[
{
label
:
'招标人'
,
prop
:
'tenderee'
,
width
:
'88px'
,
slot
:
true
}
,
{
label
:
'联系人'
,
prop
:
'tendereeTel'
,
width
:
'88px'
}
]
}
,
{
label
:
'代理机构及联系方式'
,
prop
:
''
,
children
:
[
{
label
:
'代理机构'
,
prop
:
'agency'
,
width
:
'88px'
,
slot
:
true
}
,
{
label
:
'联系人'
,
prop
:
'agencyTel'
,
width
:
'88px'
}
]
}
,
{
label
:
'项目分类'
,
prop
:
'projectType'
,
width
:
'130'
}
,
{
label
:
'工程类别'
,
prop
:
'projectPurposes'
,
width
:
'130'
}
,
{
label
:
'分部分项'
,
prop
:
'projectSub'
,
width
:
'130'
}
,
{
label
:
'项目级别'
,
prop
:
'projectLevel'
,
width
:
'130'
}
,
{
label
:
'评标办法'
,
prop
:
'bidAssessmentWay'
,
width
:
'130'
}
,
{
label
:
'项目属地'
,
prop
:
'province'
,
width
:
'130'
,
slot
:
true
}
,
{
label
:
'发布日期'
,
prop
:
'pubdate'
,
width
:
'130'
}
],
formData
:
[
{
type
:
1
,
fieldName
:
'projectType'
,
value
:
''
,
placeholder
:
'项目类别'
,
options
:
[]
}
,
{
type
:
1
,
fieldName
:
'projectPurposes'
,
value
:
''
,
placeholder
:
'工程类别'
,
options
:
[]
}
,
{
type
:
1
,
fieldName
:
'bidAssessmentWay'
,
value
:
''
,
placeholder
:
'评标办法'
,
options
:
[]
}
,
{
type
:
3
,
fieldName
:
'keys'
,
value
:
''
,
placeholder
:
'输入关键词查询'
,
options
:
[]
}
],
//列表
tableLoading
:
false
,
tableData
:[],
tableDataTotal
:
0
}
}
,
computed
:
{
}
,
created
()
{
this
.
handleOption
()
this
.
handleQuery
()
}
,
methods
:
{
async
handleOption
(){
let
[
projectType
,
projectPurposes
,
proAssessmentWay
]
=
await
Promise
.
all
([
bidNoticeProProjectType
({
cid
:
this
.
companyId
}
),
bidNoticeProProjectPurposes
({
cid
:
this
.
companyId
}
),
bidNoticeProAssessmentWay
({
cid
:
this
.
companyId
}
)
])
if
(
projectType
.
code
==
200
){
let
type
=
projectType
.
data
.
map
(
item
=>
{
let
it
=
{
name
:
item
.
projectType
+
'('
+
item
.
count
+
')'
,
value
:
item
.
projectType
}
return
it
}
)
this
.
setFormData
(
'projectType'
,
type
)
}
if
(
projectPurposes
.
code
==
200
){
let
purposes
=
projectPurposes
.
data
.
map
(
item
=>
{
let
it
=
{
name
:
item
.
projectPurposes
+
'('
+
item
.
count
+
')'
,
value
:
item
.
projectPurposes
}
return
it
}
)
this
.
setFormData
(
'projectPurposes'
,
purposes
)
}
if
(
proAssessmentWay
.
code
==
200
){
let
way
=
proAssessmentWay
.
data
.
map
(
item
=>
{
let
it
=
{
name
:
item
.
bidAssessmentWay
+
'('
+
item
.
count
+
')'
,
value
:
item
.
bidAssessmentWay
}
return
it
}
)
this
.
setFormData
(
'bidAssessmentWay'
,
way
)
}
}
,
async
handleQuery
(
params
)
{
this
.
tableLoading
=
true
let
param
=
params
?
params
:
this
.
queryParams
let
res
=
await
bidNoticeProPage
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
){
this
.
tableData
=
res
.
rows
}
this
.
tableDataTotal
=
res
.
total
}
}
}
<
/script
>
<
style
lang
=
"scss"
scoped
>
.
detail
-
container
{
margin
:
0
;
background
:
#
ffffff
;
border
-
radius
:
4
px
;
padding
:
16
px
;
background
:
#FFFFFF
;
}
<
/style
>
dsk-operate-ui/src/views/detail/party-a/overview/branch.vue
View file @
3286a077
...
...
@@ -18,10 +18,12 @@
:queryParams=
"queryParams"
@
handle-current-change=
"handleCurrentChange"
>
<template
slot=
"projectName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
>
{{
scope
.
row
.
projectName
}}
</router-link>
<div
class=
"tags"
v-if=
"scope.row.tag"
>
<span
class=
"tag style1"
>
{{
scope
.
row
.
tag
}}
</span>
<template
slot=
"name"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.id&&scope.row.name "
v-html=
"scope.row.name"
></router-link>
<div
v-else
v-html=
"scope.row.name || '--'"
></div>
<div
class=
"tags"
v-if=
"scope.row.status || scope.row.biddingAnnouncement"
>
<span
class=
"tag style1"
v-if=
"scope.row.status"
>
{{
scope
.
row
.
status
}}
</span>
<span
class=
"tag style1"
v-if=
"scope.row.biddingAnnouncement"
>
招标数
{{
scope
.
row
.
biddingAnnouncement
}}
</span>
</div>
</
template
>
</tables>
...
...
@@ -30,7 +32,7 @@
<
script
>
import
mixin
from
'../mixins/mixin'
import
{
getList
,
getOption
}
from
'@/api/detail/party-a/overview'
import
{
affiliates
}
from
'@/api/detail/party-a/overview'
export
default
{
name
:
'Branch'
,
props
:
[
'companyId'
],
...
...
@@ -40,15 +42,19 @@ export default {
queryParams
:
{
cid
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
1
0
pageSize
:
2
0
},
forData
:
[
{
label
:
'被投资企业名称'
,
prop
:
'
projectN
ame'
,
slot
:
true
},
{
label
:
'负责人'
,
prop
:
'
typ
e'
},
{
label
:
'成立日期'
,
prop
:
'
d
ate'
}
{
label
:
'被投资企业名称'
,
prop
:
'
n
ame'
,
slot
:
true
},
{
label
:
'负责人'
,
prop
:
'
operNam
e'
},
{
label
:
'成立日期'
,
prop
:
'
startD
ate'
}
],
formData
:
[
{
type
:
1
,
fieldName
:
'zbgg'
,
value
:
''
,
placeholder
:
'招标公告'
,
options
:
[]
{
type
:
1
,
fieldName
:
'hasBid'
,
value
:
''
,
placeholder
:
'招标公告'
,
options
:
[
{
name
:
'不限'
,
value
:
''
},
{
name
:
'有招标公告'
,
value
:
1
},
{
name
:
'无招标公告'
,
value
:
0
}
]
}
],
//列表
...
...
@@ -58,42 +64,18 @@ export default {
}
},
created
()
{
this
.
handleOption
()
this
.
handleQuery
()
},
methods
:
{
handleOption
(){
getOption
().
then
((
res
)
=>
{
this
.
setFormData
(
'zbgg'
,
[
{
name
:
'类别1'
,
value
:
'1'
},
{
name
:
'类别2'
,
value
:
'2'
},
{
name
:
'类别3'
,
value
:
'3'
},
{
name
:
'类别4'
,
value
:
'4'
}
])
})
},
handleQuery
(
params
)
{
async
handleQuery
(
params
)
{
this
.
tableLoading
=
true
let
param
=
params
?
params
:
this
.
queryParams
getList
(
param
).
then
((
res
)
=>
{
this
.
tableLoading
=
false
this
.
tableData
=
[
{
projectId
:
'1'
,
tag
:
'在业'
,
projectName
:
'滨州医学院口腔医学大楼铝合金门窗供货及安装'
,
use
:
'城镇住宅用地'
,
type
:
'房地产业'
,
way
:
'挂牌出让'
,
state
:
'重庆'
,
money
:
'11234万元'
,
scale
:
'222平米'
,
unit
:
'江苏省住房和城乡建设厅'
,
date
:
'2015-08-06'
,
}
]
this
.
tableDataTotal
=
100
})
let
res
=
await
affiliates
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
){
this
.
tableData
=
res
.
rows
}
this
.
tableDataTotal
=
res
.
total
}
}
}
...
...
dsk-operate-ui/src/views/detail/party-a/overview/businfo.vue
View file @
3286a077
...
...
@@ -7,14 +7,15 @@
<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>
</
template
>
</info-table>
<tables
:tableLoading=
"tableLoading"
:tableData=
"tableData"
:forData=
"forData"
:queryParams=
"queryParams"
:paging=
"false"
v-if=
"activeName=='second'"
/>
</div>
...
...
@@ -22,8 +23,9 @@
<
script
>
import
mixin
from
'../mixins/mixin'
import
dataRegion
from
'@/assets/json/dataRegion'
import
InfoTable
from
'../component/infoTable'
import
{
getList
}
from
"@/api/detail/party-a/overview"
;
import
{
icInfo
,
changeInfo
}
from
"@/api/detail/party-a/overview"
export
default
{
name
:
'Businfo'
,
props
:
[
'companyId'
],
...
...
@@ -34,39 +36,42 @@ export default {
data
()
{
return
{
activeName
:
'first'
,
baseParams
:
{
cid
:
this
.
companyId
},
queryParams
:
{
cid
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
1
0
pageSize
:
2
0
},
labelWidth
:
250
,
forInfo
:
{
projectType
:
'aaa'
,
projectPurposes
:
'222'
,
projectInvestmentAmounts
:
'222'
},
forInfo
:
{},
defaultList
:
[
{
name
:
'企业名称'
,
prop
:
'
projectTypes
'
},
{
name
:
'社会信用代码'
,
prop
:
'
projectPurposes
'
},
{
name
:
'法定代表人'
,
prop
:
'
projectInvestmentAmounts
'
},
{
name
:
'登记状态'
,
prop
:
'
projectInvestmentAmount
s'
},
{
name
:
'成立日期'
,
prop
:
'
projectInvestmentAmounts
'
},
{
name
:
'注册资本'
,
prop
:
'
projectInvestmentAmounts
'
},
{
name
:
'实缴资本'
,
prop
:
'
projectInvestmentAmounts
'
},
{
name
:
'核准日期'
,
prop
:
'
projectInvestmentAmounts
'
},
{
name
:
'组织机构代码'
,
prop
:
'
projectInvestmentAmounts
'
},
{
name
:
'工商注册号'
,
prop
:
'
projectInvestmentAmounts
'
},
{
name
:
'纳税人识别号'
,
prop
:
'
projectInvestmentAmounts
'
},
{
name
:
'企业类型'
,
prop
:
'
projectInvestmentAmounts
'
},
{
name
:
'营业期限'
,
prop
:
'
projectInvestmentAmounts
'
},
{
name
:
'纳税人资质'
,
prop
:
'
projectInvestmentAmounts
'
},
{
name
:
'所属地区'
,
prop
:
'pro
jectInvestmentAmounts'
},
{
name
:
'登记机关'
,
prop
:
'
projectInvestmentAmounts
'
},
{
name
:
'人员规模'
,
prop
:
'
projectInvestmentAmounts
'
},
{
name
:
'参保人数'
,
prop
:
'
projectInvestmentAmounts
'
},
{
name
:
'经营范围'
,
prop
:
'
projectInvestmentAmounts
'
,
style
:
true
}
{
name
:
'企业名称'
,
prop
:
'
name
'
},
{
name
:
'社会信用代码'
,
prop
:
'
creditNo
'
},
{
name
:
'法定代表人'
,
prop
:
'
operName
'
},
{
name
:
'登记状态'
,
prop
:
'
statu
s'
},
{
name
:
'成立日期'
,
prop
:
'
startDate
'
},
{
name
:
'注册资本'
,
prop
:
'
registCapi
'
},
{
name
:
'实缴资本'
,
prop
:
'
actualCapi
'
},
{
name
:
'核准日期'
,
prop
:
'
checkDate
'
},
{
name
:
'组织机构代码'
,
prop
:
'
orgNo
'
},
{
name
:
'工商注册号'
,
prop
:
'
regNo
'
},
{
name
:
'纳税人识别号'
,
prop
:
'
creditNo
'
},
{
name
:
'企业类型'
,
prop
:
'
econKind
'
},
{
name
:
'营业期限'
,
prop
:
'
termEnd
'
},
{
name
:
'纳税人资质'
,
prop
:
'
qualification
'
},
{
name
:
'所属地区'
,
prop
:
'pro
vinceCode'
,
slot
:
true
},
{
name
:
'登记机关'
,
prop
:
'
belongOrg
'
},
{
name
:
'人员规模'
,
prop
:
'
colleguesNum
'
},
{
name
:
'参保人数'
,
prop
:
'
colleguesNum
'
},
{
name
:
'经营范围'
,
prop
:
'
scope
'
,
style
:
true
}
],
forData
:
[
{
label
:
'变更日期'
,
prop
:
'
inReason'
,
width
:
'90'
,
slot
:
true
},
{
label
:
'变更事项'
,
prop
:
'
inDat
e'
},
{
label
:
'变更前'
,
prop
:
'
departm
ent'
},
{
label
:
'变更后'
,
prop
:
'
departm
ent'
}
{
label
:
'变更日期'
,
prop
:
'
changeDate'
,
width
:
'90'
},
{
label
:
'变更事项'
,
prop
:
'
typ
e'
},
{
label
:
'变更前'
,
prop
:
'
beforeCont
ent'
},
{
label
:
'变更后'
,
prop
:
'
afterCont
ent'
}
],
//列表
tableLoading
:
false
,
...
...
@@ -80,28 +85,29 @@ export default {
handleClick
(){
this
.
handleQuery
()
},
handleQuery
()
{
console
.
log
(
'索引:'
,
this
.
activeName
)
async
handleQuery
()
{
this
.
tableLoading
=
true
getList
(
this
.
queryParams
).
then
((
res
)
=>
{
this
.
tableLoading
=
false
this
.
tableData
=
[
{
projectId
:
'1'
,
tag
:
'在业'
,
projectName
:
'滨州医学院口腔医学大楼铝合金门窗供货及安装'
,
use
:
'城镇住宅用地'
,
type
:
'房地产业'
,
way
:
'挂牌出让'
,
state
:
'重庆'
,
money
:
'11234万元'
,
scale
:
'222平米'
,
unit
:
'江苏省住房和城乡建设厅'
,
date
:
'2015-08-06'
,
let
param
=
this
.
activeName
==
'first'
?
this
.
baseParams
:
this
.
queryParams
let
res
=
this
.
activeName
==
'first'
?
await
icInfo
(
param
)
:
await
changeInfo
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
)
{
this
.
activeName
==
'first'
?
this
.
forInfo
=
res
.
data
:
this
.
tableData
=
res
.
rows
}
this
.
activeName
==
'first'
?
''
:
this
.
tableDataTotal
=
res
.
total
}
,
showRegion
(
region
){
if
(
region
)
{
let
list
=
dataRegion
let
areaText
=
''
list
.
forEach
(
item
=>
{
if
(
item
.
id
==
region
)
{
areaText
=
item
.
regionName
}
]
this
.
tableDataTotal
=
100
})
})
return
areaText
}
else
{
return
'--'
}
}
}
}
...
...
dsk-operate-ui/src/views/detail/party-a/overview/execuinfo.vue
View file @
3286a077
...
...
@@ -19,7 +19,7 @@
<
script
>
import
mixin
from
'../mixins/mixin'
import
{
getList
}
from
'@/api/detail/party-a/overview'
import
{
keymembers
}
from
'@/api/detail/party-a/overview'
export
default
{
name
:
'Execuinfo'
,
props
:
[
'companyId'
],
...
...
@@ -29,11 +29,11 @@ export default {
queryParams
:
{
cid
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
1
0
pageSize
:
2
0
},
forData
:
[
{
label
:
'姓名'
,
prop
:
'
projectN
ame'
},
{
label
:
'职位'
,
prop
:
'
typ
e'
}
{
label
:
'姓名'
,
prop
:
'
n
ame'
},
{
label
:
'职位'
,
prop
:
'
jobTitl
e'
}
],
formData
:
[],
//列表
...
...
@@ -46,27 +46,15 @@ export default {
this
.
handleQuery
()
},
methods
:
{
handleQuery
(
)
{
async
handleQuery
(
params
)
{
this
.
tableLoading
=
true
getList
(
this
.
queryParams
).
then
((
res
)
=>
{
this
.
tableLoading
=
false
this
.
tableData
=
[
{
projectId
:
'1'
,
tag
:
'在业'
,
projectName
:
'滨州医学院口腔医学大楼铝合金门窗供货及安装'
,
use
:
'城镇住宅用地'
,
type
:
'房地产业'
,
way
:
'挂牌出让'
,
state
:
'重庆'
,
money
:
'11234万元'
,
scale
:
'222平米'
,
unit
:
'江苏省住房和城乡建设厅'
,
date
:
'2015-08-06'
,
}
]
this
.
tableDataTotal
=
100
})
let
param
=
params
?
params
:
this
.
queryParams
let
res
=
await
keymembers
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
){
this
.
tableData
=
res
.
rows
}
this
.
tableDataTotal
=
res
.
total
}
}
}
...
...
dsk-operate-ui/src/views/detail/party-a/overview/holderinfo.vue
View file @
3286a077
...
...
@@ -19,19 +19,23 @@
:queryParams=
"queryParams"
@
handle-current-change=
"handleCurrentChange"
>
<template
slot=
"projectName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
>
{{
scope
.
row
.
projectName
}}
</router-link>
<div
class=
"tags"
v-if=
"scope.row.tag"
>
<span
class=
"tag style1"
>
{{
scope
.
row
.
tag
}}
</span>
<template
slot=
"stockName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.stockId&&scope.row.stockName "
v-html=
"scope.row.stockName"
></router-link>
<div
v-else
v-html=
"scope.row.stockName || '--'"
></div>
<div
class=
"tags"
v-if=
"scope.row.businessStatus"
>
<span
class=
"tag style1"
v-if=
"scope.row.businessStatus"
>
{{
scope
.
row
.
businessStatus
}}
</span>
</div>
</
template
>
<
template
slot=
"stockPercent"
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
stockPercent
?
parseFloat
(
Number
(
scope
.
row
.
stockPercent
*
100
).
toFixed
(
4
))
+
'%'
:
'--'
}}
</span>
</
template
>
</tables>
</div>
</template>
<
script
>
import
mixin
from
'../mixins/mixin'
import
{
getList
}
from
'@/api/detail/party-a/overview'
import
{
bestStockPage
}
from
'@/api/detail/party-a/overview'
export
default
{
name
:
'Holderinfo'
,
props
:
[
'companyId'
],
...
...
@@ -41,16 +45,17 @@ export default {
activeName
:
'first'
,
queryParams
:
{
cid
:
this
.
companyId
,
isHistory
:
0
,
pageNum
:
1
,
pageSize
:
1
0
pageSize
:
2
0
},
forData
:
[
{
label
:
'发起人/股东'
,
prop
:
'
project
Name'
,
minWidth
:
'230'
,
slot
:
true
},
{
label
:
'持股比例'
,
prop
:
'
inDate'
},
{
label
:
'认缴出资(万)'
,
prop
:
'
department
'
},
{
label
:
'实缴出资额'
,
prop
:
'
department
'
},
{
label
:
'认缴出资
额'
,
prop
:
'department
'
},
{
label
:
'参股日期'
,
prop
:
'
department
'
,
width
:
'150'
}
{
label
:
'发起人/股东'
,
prop
:
'
stock
Name'
,
minWidth
:
'230'
,
slot
:
true
},
{
label
:
'持股比例'
,
prop
:
'
stockPercent'
,
slot
:
true
},
{
label
:
'认缴出资(万)'
,
prop
:
'
shouldCapiConv
'
},
{
label
:
'实缴出资额'
,
prop
:
'
realCapi
'
},
{
label
:
'认缴出资
日期'
,
prop
:
'conDate
'
},
{
label
:
'参股日期'
,
prop
:
'
realCapiDate
'
,
width
:
'150'
}
],
formData
:
[],
//列表
...
...
@@ -66,28 +71,16 @@ export default {
handleClick
(){
this
.
handleQuery
()
},
handleQuery
()
{
console
.
log
(
'索引:'
,
this
.
activeName
)
async
handleQuery
(
params
)
{
this
.
tableLoading
=
true
getList
(
this
.
queryParams
).
then
((
res
)
=>
{
this
.
tableLoading
=
false
this
.
tableData
=
[
{
projectId
:
'1'
,
tag
:
'在业'
,
projectName
:
'滨州医学院口腔医学大楼铝合金门窗供货及安装'
,
use
:
'城镇住宅用地'
,
type
:
'房地产业'
,
way
:
'挂牌出让'
,
state
:
'重庆'
,
money
:
'11234万元'
,
scale
:
'222平米'
,
unit
:
'江苏省住房和城乡建设厅'
,
date
:
'2015-08-06'
,
}
]
this
.
tableDataTotal
=
100
})
let
param
=
params
?
params
:
this
.
queryParams
param
.
isHistory
=
this
.
activeName
==
'first'
?
0
:
1
let
res
=
await
bestStockPage
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
){
this
.
tableData
=
res
.
rows
}
this
.
tableDataTotal
=
res
.
total
}
}
}
...
...
dsk-operate-ui/src/views/detail/party-a/overview/overseas.vue
View file @
3286a077
...
...
@@ -18,20 +18,25 @@
:queryParams=
"queryParams"
@
handle-current-change=
"handleCurrentChange"
>
<template
slot=
"gqzb"
>
<template
slot=
"investName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.id&&scope.row.investName "
v-html=
"scope.row.investName"
></router-link>
<div
v-else
v-html=
"scope.row.investName || '--'"
></div>
<div
class=
"tags"
v-if=
"scope.row.businessStatus || scope.row.biddingAnnouncement"
>
<span
class=
"tag style1"
v-if=
"scope.row.businessStatus"
>
{{
scope
.
row
.
businessStatus
}}
</span>
<span
class=
"tag style1"
v-if=
"scope.row.biddingAnnouncement"
>
招标数
{{
scope
.
row
.
biddingAnnouncement
}}
</span>
</div>
</
template
>
<
template
slot=
"proportion"
>
<div
class=
"tab-header"
>
股权占比
<el-popover
placement=
"top-start"
width=
"280"
trigger=
"hover"
>
<div
style=
"font-size: 12px;"
>
控股67%:绝对控制权67%,相当于100%的权力,修改公司章程/分立、合并、变更主营项目、重大决策
<br
/>
控股51%:相对控制权51%,控制线,绝对控制公司
<br
/>
控股34%:安全控制权,一票否决权
</div>
<img
src=
"@/assets/images/detail/overview/zbph_question.png"
slot=
"reference"
>
</el-popover></div>
<img
src=
"@/assets/images/detail/overview/zbph_question.png"
slot=
"reference"
>
</el-popover></div>
</
template
>
<
template
slot=
"projectName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
>
{{
scope
.
row
.
projectName
}}
</router-link>
<div
class=
"tags"
v-if=
"scope.row.tag"
>
<span
class=
"tag style1"
>
{{
scope
.
row
.
tag
}}
</span>
</div>
<
template
slot=
"stockPercentage"
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
stockPercentage
?
parseFloat
(
Number
(
scope
.
row
.
stockPercentage
*
100
).
toFixed
(
4
))
+
'%'
:
'--'
}}
</span>
</
template
>
</tables>
</div>
...
...
@@ -39,7 +44,7 @@
<
script
>
import
mixin
from
'../mixins/mixin'
import
{
getList
,
getOption
}
from
'@/api/detail/party-a/overview'
import
{
investment
}
from
'@/api/detail/party-a/overview'
export
default
{
name
:
'Overseas'
,
props
:
[
'companyId'
],
...
...
@@ -49,19 +54,33 @@ export default {
queryParams
:
{
cid
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
1
0
pageSize
:
2
0
},
forData
:
[
{
label
:
'被投资企业名称'
,
prop
:
'
projec
tName'
,
minWidth
:
'180'
,
slot
:
true
},
{
label
:
'法定代表人'
,
prop
:
'in
Dat
e'
},
{
label
:
'注册资本(万元)'
,
prop
:
'
department
'
},
{
label
:
'成立日期'
,
prop
:
'
department
'
},
{
label
:
'股权占比'
,
prop
:
'
department'
,
slotHeader
:
true
,
slotName
:
'gqzb
'
},
{
label
:
'认缴出资额(万元)'
,
prop
:
'
department
'
}
{
label
:
'被投资企业名称'
,
prop
:
'
inves
tName'
,
minWidth
:
'180'
,
slot
:
true
},
{
label
:
'法定代表人'
,
prop
:
'in
vestOperNam
e'
},
{
label
:
'注册资本(万元)'
,
prop
:
'
investRegistCapi
'
},
{
label
:
'成立日期'
,
prop
:
'
investStartDate
'
},
{
label
:
'股权占比'
,
prop
:
'
stockPercentage'
,
slot
:
true
,
slotHeader
:
true
,
slotName
:
'proportion
'
},
{
label
:
'认缴出资额(万元)'
,
prop
:
'
shouldCapi
'
}
],
formData
:
[
{
type
:
1
,
fieldName
:
'zbgg'
,
value
:
''
,
placeholder
:
'招标公告'
,
options
:
[]
},
{
type
:
1
,
fieldName
:
'gqzb'
,
value
:
''
,
placeholder
:
'股权占比'
,
options
:
[]
}
{
type
:
1
,
fieldName
:
'hasBid'
,
value
:
''
,
placeholder
:
'招标公告'
,
options
:
[
{
name
:
'不限'
,
value
:
''
},
{
name
:
'有招标公告'
,
value
:
1
},
{
name
:
'无招标公告'
,
value
:
0
}
]
},
{
type
:
1
,
fieldName
:
'proportion'
,
value
:
''
,
placeholder
:
'股权占比'
,
options
:
[
{
name
:
'不限'
,
value
:
''
},
{
name
:
'100%'
,
value
:
'1~1'
},
{
name
:
'66.66%以上'
,
value
:
'0.6666~1'
},
{
name
:
'50%以上'
,
value
:
'0.4~1'
},
{
name
:
'33.33%以上'
,
value
:
'0.3333~1'
},
{
name
:
'25%以上'
,
value
:
'0.05~0.25'
},
{
name
:
'不到5%'
,
value
:
'0~0.05'
}
]
}
],
//列表
tableLoading
:
false
,
...
...
@@ -70,48 +89,29 @@ export default {
}
},
created
()
{
this
.
handleOption
()
this
.
handleQuery
()
},
methods
:
{
handleOption
(){
getOption
().
then
((
res
)
=>
{
this
.
setFormData
(
'zbgg'
,
[
{
name
:
'类别1'
,
value
:
'1'
},
{
name
:
'类别2'
,
value
:
'2'
},
{
name
:
'类别3'
,
value
:
'3'
},
{
name
:
'类别4'
,
value
:
'4'
}
])
this
.
setFormData
(
'gqzb'
,
[
{
name
:
'类别1'
,
value
:
'1'
},
{
name
:
'类别2'
,
value
:
'2'
},
{
name
:
'类别3'
,
value
:
'3'
},
{
name
:
'类别4'
,
value
:
'4'
}
])
})
},
handleQuery
(
params
)
{
async
handleQuery
(
params
)
{
this
.
tableLoading
=
true
let
param
=
params
?
params
:
this
.
queryParams
getList
(
param
).
then
((
res
)
=>
{
this
.
tableLoading
=
false
this
.
tableData
=
[
{
projectId
:
'1'
,
tag
:
'在业'
,
projectName
:
'滨州医学院口腔医学大楼铝合金门窗供货及安装'
,
use
:
'城镇住宅用地'
,
type
:
'房地产业'
,
way
:
'挂牌出让'
,
state
:
'重庆'
,
money
:
'11234万元'
,
scale
:
'222平米'
,
unit
:
'江苏省住房和城乡建设厅'
,
date
:
'2015-08-06'
,
}
]
this
.
tableDataTotal
=
100
})
let
res
=
await
investment
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
){
this
.
tableData
=
res
.
rows
}
this
.
tableDataTotal
=
res
.
total
},
handleSearch
(){
let
params
=
this
.
formParams
()
if
(
params
.
proportion
){
params
.
stockPercentageMin
=
parseFloat
(
params
.
proportion
.
split
(
'~'
)[
0
])
params
.
stockPercentageMax
=
parseFloat
(
params
.
proportion
.
split
(
'~'
)[
1
])
delete
params
.
proportion
}
params
.
pageNum
=
1
this
.
queryParams
.
pageNum
=
1
this
.
handleQuery
(
params
)
}
}
}
...
...
dsk-operate-ui/src/views/detail/party-a/overview/overview.vue
View file @
3286a077
...
...
@@ -49,7 +49,7 @@ export default {
margin
:
0
;
padding
:
0
;
.view-content
{
margin-top
:
12px
;
//
margin-top: 12px;
}
}
</
style
>
dsk-operate-ui/src/views/detail/party-a/preference/index.vue
View file @
3286a077
...
...
@@ -159,6 +159,12 @@ export default {
name
:
'Preference'
,
components
:
{
},
props
:
{
customerIds
:
{
type
:
String
,
default
:
''
}
},
data
()
{
return
{
...
...
@@ -166,7 +172,7 @@ export default {
minRows
:
8
,
maxRows
:
8
},
customerId
:
'f25219e73249eea0d9fddc5c7f04f97f'
,
customerId
:
this
.
customerIds
,
queryParams
:{
customerId
:
''
,
businessCharacteristic
:
''
,
...
...
dsk-operate-ui/src/views/detail/party-a/riskInformation/businessAnomaly.vue
View file @
3286a077
...
...
@@ -42,7 +42,7 @@ export default {
data
()
{
return
{
queryParams
:
{
cid
:
382724726
,
cid
:
this
.
companyId
,
//382724726
pageNum
:
1
,
pageSize
:
10
},
...
...
dsk-operate-ui/src/views/detail/party-a/riskInformation/courtNotice.vue
View file @
3286a077
...
...
@@ -44,7 +44,7 @@ export default {
data
()
{
return
{
queryParams
:
{
cid
:
20734
,
cid
:
this
.
companyId
,
//20734
pageNum
:
1
,
pageSize
:
10
},
...
...
@@ -52,7 +52,6 @@ export default {
{
label
:
'案由'
,
prop
:
'caseReason'
},
{
label
:
'公告时间'
,
prop
:
'date'
,
width
:
'95'
},
{
label
:
'当事人'
,
prop
:
'people'
,
width
:
'240'
},
{
label
:
'案号'
,
prop
:
'objId'
,
width
:
'210'
},
{
label
:
'公告类型'
,
prop
:
'type'
,
width
:
'210'
},
{
label
:
'公告法院'
,
prop
:
'court'
,
width
:
'280'
}
],
...
...
@@ -60,8 +59,7 @@ export default {
{
type
:
1
,
fieldName
:
'type'
,
value
:
''
,
placeholder
:
'公告类型'
,
options
:
[]},
{
type
:
1
,
fieldName
:
'caseReason'
,
value
:
''
,
placeholder
:
'案由'
,
options
:
[]},
{
type
:
1
,
fieldName
:
'role'
,
value
:
''
,
placeholder
:
'身份'
,
options
:
[]},
{
type
:
2
,
fieldName
:
'time'
,
value
:
''
,
placeholder
:
''
,
startTime
:
'dateFrom'
,
endTime
:
'dateTo'
},
{
type
:
3
,
fieldName
:
'keys'
,
value
:
''
,
placeholder
:
'请输入关键词'
},
{
type
:
2
,
fieldName
:
'time'
,
value
:
''
,
placeholder
:
''
,
startTime
:
'dateFrom'
,
endTime
:
'dateTo'
}
],
//列表
tableLoading
:
false
,
...
...
dsk-operate-ui/src/views/detail/party-a/riskInformation/dishonesty.vue
View file @
3286a077
...
...
@@ -42,7 +42,7 @@ export default {
data
()
{
return
{
queryParams
:
{
cid
:
5504335
,
cid
:
this
.
companyId
,
//5504335
pageNum
:
1
,
pageSize
:
10
},
...
...
dsk-operate-ui/src/views/detail/party-a/riskInformation/ifThePerson.vue
View file @
3286a077
...
...
@@ -41,7 +41,7 @@ export default {
data
()
{
return
{
queryParams
:
{
cid
:
194738907
,
cid
:
this
.
companyId
,
//194738907
pageNum
:
1
,
pageSize
:
10
},
...
...
dsk-operate-ui/src/views/detail/party-a/riskInformation/judgment.vue
View file @
3286a077
<
template
>
<div
class=
"corePersonnel"
>
<head-form
title=
"
判决
文书"
title=
"
裁判
文书"
:form-data=
"formData"
:query-params=
"queryParams"
:total=
"tableDataTotal"
...
...
@@ -50,7 +50,7 @@ export default {
data
()
{
return
{
queryParams
:
{
cid
:
5504335
,
cid
:
this
.
companyId
,
//5504335
pageNum
:
1
,
pageSize
:
10
},
...
...
dsk-operate-ui/src/views/detail/party-a/riskInformation/openacourtsessionNotice.vue
View file @
3286a077
...
...
@@ -50,7 +50,7 @@ export default {
data
()
{
return
{
queryParams
:
{
cid
:
20734
,
cid
:
this
.
companyId
,
//20734
pageNum
:
1
,
pageSize
:
10
},
...
...
@@ -59,12 +59,12 @@ export default {
{
label
:
'开庭日期'
,
prop
:
'hearingDate'
,
width
:
'95'
},
{
label
:
'当事人'
,
prop
:
'relatedCompanies'
,
width
:
'428'
,
slot
:
true
},
{
label
:
'身份'
,
prop
:
'pureRole'
,
width
:
'120'
},
{
label
:
'公告内容'
,
prop
:
''
,
width
:
'508'
},
{
label
:
'公告内容'
,
prop
:
'
content
'
,
width
:
'508'
},
{
label
:
'案号'
,
prop
:
'caseNo'
,
width
:
'210'
},
{
label
:
'法院'
,
prop
:
'court'
,
width
:
'280'
},
{
label
:
'法庭'
,
prop
:
''
,
width
:
'180'
},
{
label
:
'承办部门'
,
prop
:
''
,
width
:
'280'
},
{
label
:
'审判长/主判人'
,
prop
:
''
,
width
:
'106'
}
{
label
:
'法庭'
,
prop
:
'
tribunal
'
,
width
:
'180'
},
{
label
:
'承办部门'
,
prop
:
'
department
'
,
width
:
'280'
},
{
label
:
'审判长/主判人'
,
prop
:
'
judge
'
,
width
:
'106'
}
],
formData
:
[
{
type
:
1
,
fieldName
:
'causeAction'
,
value
:
''
,
placeholder
:
'案由'
,
options
:
[]},
...
...
dsk-operate-ui/src/views/detail/party-a/riskInformation/punish.vue
View file @
3286a077
...
...
@@ -59,9 +59,8 @@ export default {
{
label
:
'决定日期'
,
prop
:
'punishBegin'
,
width
:
'95'
},
{
label
:
'处罚结果'
,
prop
:
'punishResult'
,
width
:
'264'
},
{
label
:
'处罚文书号'
,
prop
:
'fileNum'
,
width
:
'200'
},
{
label
:
'相关人员'
,
prop
:
''
,
width
:
'88'
},
{
label
:
'处罚机关'
,
prop
:
'office'
,
width
:
'264'
},
{
label
:
'处罚结束日期'
,
prop
:
''
,
width
:
'100'
},
{
label
:
'处罚结束日期'
,
prop
:
'
punishEnd
'
,
width
:
'100'
},
],
formData
:
[
{
type
:
1
,
fieldName
:
'penalizeReasonType'
,
value
:
''
,
placeholder
:
'处罚类别'
,
options
:
[]},
...
...
dsk-operate-ui/src/views/detail/party-a/urbanLnvestment/landAcquisition.vue
View file @
3286a077
...
...
@@ -36,11 +36,17 @@ export default {
mixins
:
[
mixin
],
components
:
{
},
props
:
{
companyId
:
{
type
:
Number
,
default
:
0
}
},
data
()
{
return
{
queryParams
:
{
cid
:
3068
,
cid
:
this
.
companyId
,
//3068
sort
:
3
,
pageNum
:
1
,
pageSize
:
10
...
...
dsk-operate-ui/src/views/detail/party-a/urbanLnvestment/regionalEconomies.vue
View file @
3286a077
...
...
@@ -4,7 +4,7 @@
<div
class=
"flex-box query-params"
>
<span
class=
"common-title"
>
区域经济
</span>
</div>
<div
class=
"params-dw"
><img
src=
"@/assets/images/addree.png"
/>
广东省-广州市
</div>
<div
class=
"params-dw"
><img
src=
"@/assets/images/addree.png"
/>
{{
addressList
}}
</div>
</div>
<div
class=
"table-item"
>
<el-table
...
...
@@ -26,16 +26,27 @@
</
template
>
<
script
>
import
dataRegion
from
'@/assets/json/dataRegion'
import
{
regionalEconomy
}
from
'@/api/detail/party-a/urbanLnvestment'
import
{
infoHeader
}
from
'@/api/detail/party-a/index'
export
default
{
name
:
'regionalEconomies'
,
components
:
{
},
props
:
{
companyId
:
{
type
:
Number
,
default
:
0
}
},
data
()
{
return
{
addressList
:
''
,
params
:
{
provinceId
:
500000
,
cityId
:
500100
...
...
@@ -61,7 +72,7 @@ export default {
},
{
prop
:
'gdpGrowth'
,
label
:
'GDP增速'
,
label
:
'GDP增速
(%)
'
,
},
{
prop
:
'gdpPerCapita'
,
...
...
@@ -117,7 +128,7 @@ export default {
},
{
prop
:
'gbrGrowth'
,
label
:
'一般公共预算收入增速'
,
label
:
'一般公共预算收入增速
(%)
'
,
},
{
prop
:
'taxIncome'
,
...
...
@@ -181,30 +192,30 @@ export default {
},
{
prop
:
'fiscalSelfSufficiencyRate'
,
label
:
'财政自给率'
,
label
:
'财政自给率
(%)
'
,
},
{
prop
:
'govDebtToGdpRate'
,
label
:
'负债率'
,
label
:
'负债率
(%)
'
,
},
{
prop
:
'govDebtToGdpRateWild'
,
label
:
'负债率-宽口径'
,
label
:
'负债率-宽口径
(%)
'
,
},
{
prop
:
'govDebtRate'
,
label
:
'债务率'
,
label
:
'债务率
(%)
'
,
},
{
prop
:
'govDebtRateWild'
,
label
:
'债务率-宽口径'
,
label
:
'债务率-宽口径
(%)
'
,
},
],
tableLoading
:
true
}
},
created
()
{
this
.
dataRegion
()
this
.
regionalEconomys
()
},
computed
:
{
getHeaders
()
{
...
...
@@ -218,12 +229,36 @@ export default {
},
methods
:
{
//地区
dataRegion
()
{
regionalEconomy
(
this
.
params
).
then
(
res
=>
{
this
.
tableData
=
res
.
data
this
.
tableLoading
=
false
regionalEconomys
()
{
this
.
tableLoading
=
true
infoHeader
({
companyId
:
this
.
companyId
}).
then
(
res
=>
{
regionalEconomy
({
provinceId
:
res
.
data
.
provinceId
,
cityId
:
res
.
data
.
cityId
}).
then
(
res
=>
{
this
.
tableData
=
res
.
data
this
.
tableLoading
=
false
})
this
.
dataRegion
(
res
.
data
.
provinceId
,
res
.
data
.
cityId
)
})
},
dataRegion
(
p
,
c
)
{
var
str
=
[];
for
(
let
x
=
0
;
x
<
2
;
x
++
)
{
for
(
let
i
=
0
;
i
<
dataRegion
.
length
;
i
++
)
{
if
(
dataRegion
[
i
].
regionLevel
==
x
+
1
&&
x
+
1
==
1
)
{
if
(
p
==
dataRegion
[
i
].
id
){
str
.
push
(
dataRegion
[
i
].
regionName
)
}
}
else
if
(
dataRegion
[
i
].
regionLevel
==
x
+
1
&&
x
+
1
==
2
)
{
if
(
c
==
dataRegion
[
i
].
id
){
str
.
push
(
dataRegion
[
i
].
regionName
)
}
}
}
}
this
.
addressList
=
str
.
join
(
' - '
);
},
}
}
</
script
>
...
...
dsk-operate-ui/src/views/detail/party-a/urbanLnvestment/sameRegion.vue
View file @
3286a077
...
...
@@ -112,17 +112,26 @@ import {
urbanInvestmentPage
,
uipGroupData
}
from
'@/api/detail/party-a/urbanLnvestment'
import
{
infoHeader
}
from
'@/api/detail/party-a/index'
export
default
{
name
:
'SameRegion'
,
mixins
:
[
mixin
],
components
:
{
},
props
:
{
companyId
:
{
type
:
Number
,
default
:
0
}
},
data
()
{
return
{
queryParams
:
{
provinceId
:
500000
,
cityId
:
500100
,
provinceId
:
''
,
cityId
:
''
,
uipExecutiveLevel
:
''
,
uipBusinessType
:
[],
bratingSubjectLevel
:
[],
...
...
@@ -191,23 +200,18 @@ export default {
}
},
created
()
{
this
.
handleQuery
()
this
.
getScreen
()
infoHeader
({
companyId
:
this
.
companyId
}).
then
(
res
=>
{
this
.
queryParams
.
provinceId
=
res
.
data
.
provinceId
this
.
queryParams
.
cityId
=
res
.
data
.
cityId
this
.
handleQuery
()
this
.
getScreen
()
})
},
computed
:
{
},
methods
:
{
dataRegion
()
{
// await axios.post("https://files.jiansheku.com/file/json/common/dataRegion.json", {}, {
// headers: {
// 'Content-Type': 'application/json'
// }
// }).then(res => {
// if (res.data.code == 200) {
// console.log(res.data.data)
// }
// })
var
str
=
[];
for
(
let
x
=
0
;
x
<
3
;
x
++
)
{
for
(
let
i
=
0
;
i
<
dataRegion
.
length
;
i
++
)
{
...
...
dsk-operate-ui/src/views/project/projectList/component/gjjl.vue
View file @
3286a077
<
template
>
<div>
<el-card
class=
"box-card noborder"
>
<div
class=
"cardtitles"
>
跟进记录
</div>
<div
class=
"cardtitles"
v-if=
"showtype != 'projectgjdt'"
>
跟进记录
</div>
<div
style=
"height: 24px"
v-if=
"showtype == 'projectgjdt'"
></div>
<div
class=
"records"
>
<div
class=
"writeIn"
>
<div
class=
"default"
v-if=
"isEdit == false"
@
click=
"getEdit"
>
...
...
@@ -18,9 +19,15 @@
<i
slot=
"prefix"
class=
"el-input__icon"
><img
src=
"@/assets/images/project/ico_1.png"
></i>
<el-option
v-for=
"(item,index) in bffslist"
:key=
"index"
:label=
"item.dictLabel"
:value=
"item.dictValue"
></el-option>
</el-select>
<el-select
v-if=
"showtype == 'gjdt'"
v-model=
"addParam.customerId"
class=
"w128"
placeholder=
"关联企业"
>
<template
v-if=
"!customerIds"
>
<el-select
v-if=
"showtype == 'gjdt'"
v-model=
"addParam.customerId"
class=
"w128"
placeholder=
"关联企业"
>
<i
slot=
"prefix"
class=
"el-input__icon"
><img
src=
"@/assets/images/project/ico_1.png"
></i>
<el-option
v-for=
"(item,index) in glqylist"
:key=
"index"
:label=
"item.companyName"
:value=
"item.customerId"
></el-option>
</el-select>
</
template
>
<el-select
v-if=
"showtype == 'projectgjdt'"
v-model=
"projectId"
class=
"w128"
placeholder=
"关联项目"
>
<i
slot=
"prefix"
class=
"el-input__icon"
><img
src=
"@/assets/images/project/ico_1.png"
></i>
<el-option
v-for=
"(item,index) in glqylist"
:key=
"index"
:label=
"item.companyName"
:value=
"item.customerI
d"
></el-option>
<el-option
v-for=
"(item,index) in projectList"
:key=
"index"
:label=
"item.projectName"
:value=
"item.i
d"
></el-option>
</el-select>
<el-input
v-model=
"addParam.name"
placeholder=
"拜访对象"
style=
"width: 100px;"
>
<i
slot=
"prefix"
class=
"el-input__icon"
><img
src=
"@/assets/images/project/ico_2.png"
></i>
...
...
@@ -55,7 +62,7 @@
<div><span>
{{item.content}}
</span></div>
<div
class=
"rec_text"
>
<span
v-if=
"item.name"
>
拜访对象:{{item.name||'--'}}
</span>
<span
v-if=
"showtype == 'gjdt' && companyName != ''"
>
关联企业:
{{
item
.
companyName
}}
</span>
<span
v-if=
"showtype == 'gjdt' &&
item.
companyName != ''"
>
关联企业:{{item.companyName}}
</span>
<span
v-if=
"item.position"
>
职位:{{item.position}}
</span>
<span
v-if=
"item.createTime"
>
拜访时间:{{item.createTime.slice(0, 10)}}
</span>
<span
v-if=
"item.nextVisitTime"
>
下次拜访时间:{{item.createTime.slice(0, 10)}}
</span>
...
...
@@ -63,7 +70,7 @@
</div>
</div>
</div>
<div
class=
"recordlist"
v-if=
"showtype=='gjjl' && recordlist.total>0"
>
<div
class=
"recordlist"
v-if=
"showtype=='gjjl'
|| showtype == 'projectgjdt'
&& recordlist.total>0"
>
<div
class=
"rec_detail"
v-for=
"(item,index) in recordlist.rows"
>
<div
class=
"rec_time"
>
...
...
@@ -114,7 +121,7 @@
<
script
>
import
"@/assets/styles/project.scss"
import
{
getFollowList
,
addFollowRecord
,
getUserList
,
delFollowRecord
}
from
'@/api/custom/custom'
import
{
getGJJL
,
addGJJL
,
delGJJL
}
from
'@/api/project/project'
import
{
getGJJL
,
addGJJL
,
delGJJL
,
relateProject
,
allRecord
}
from
'@/api/project/project'
import
{
getEnterprise
,
getDictType
,}
from
'@/api/main'
export
default
{
props
:{
...
...
@@ -122,6 +129,14 @@
type
:
String
,
default
:
""
},
customerIds
:
{
//客户id
type
:
String
,
default
:
""
},
detailId
:
{
//从企业详情跳转过来ID
type
:
Number
,
default
:
0
},
datas
:[],
//数据源
},
name
:
'gjjl'
,
...
...
@@ -146,7 +161,9 @@
recordlist
:[],
//列表数据源
isdel
:
false
,
delID
:
''
,
//删除记录的ID
projectId
:
parseInt
(
this
.
$route
.
query
.
id
),
//项目详情id
projectId
:
this
.
detailId
?
this
.
detailId
:
parseInt
(
this
.
$route
.
query
.
id
),
//项目详情id
userId
:
this
.
$store
.
state
.
user
.
userId
,
//当前用户id
projectList
:[],
//关联项目
}
},
computed
:
{
...
...
@@ -168,12 +185,29 @@
if
(
this
.
showtype
==
'gjjl'
){
this
.
getGJJL
()
}
//项目管理跟进动态
if
(
this
.
showtype
==
'projectgjdt'
){
this
.
projectId
=
null
//项目id暂时清空,必须手选id
relateProject
(
this
.
userId
).
then
(
res
=>
{
this
.
projectList
=
res
.
data
})
this
.
getGJDT
()
}
console
.
log
(
this
.
types
)
},
methods
:{
//添加跟进动态
addFollow
(){
if
(
this
.
types
==
'projectgjdt'
){
if
(
this
.
projectId
==
""
||
this
.
projectId
==
null
){
this
.
$message
.
error
(
'请选择关联项目!'
)
return
false
}
}
if
(
this
.
types
==
'gjdt'
){
if
(
this
.
customerIds
){
this
.
addParam
.
customerId
=
this
.
customerIds
}
addFollowRecord
(
this
.
addParam
).
then
(
result
=>
{
if
(
result
.
code
==
200
){
this
.
$message
.
success
(
result
.
msg
)
...
...
@@ -184,7 +218,7 @@
}
})
}
if
(
this
.
types
==
'gjjl'
){
if
(
this
.
types
==
'gjjl'
||
this
.
types
==
'projectgjdt'
){
let
param
=
{
businessId
:
this
.
projectId
,
userId
:
this
.
$store
.
state
.
user
.
userId
,
...
...
@@ -220,7 +254,7 @@
}
})
}
if
(
this
.
types
==
'gjjl'
)
{
if
(
this
.
types
==
'gjjl'
||
this
.
types
==
'projectgjdt'
)
{
delGJJL
(
this
.
delID
).
then
(
result
=>
{
if
(
result
.
code
==
200
)
{
this
.
handleCurrentChange
(
1
)
...
...
@@ -231,11 +265,15 @@
}
},
//跟进动态列表
//客户管理跟进动态
getGJDTlist
(){
let
param
=
{
pageNum
:
this
.
pageNum
,
//页码
pageSize
:
this
.
pageSize
,
}
if
(
this
.
customerIds
){
param
.
customerId
=
this
.
customerIds
}
getFollowList
(
param
).
then
(
result
=>
{
this
.
recordlist
=
result
.
code
==
200
?
result
:[]
this
.
recordlist
.
rows
.
forEach
(
item
=>
{
...
...
@@ -244,6 +282,22 @@
})
})
},
//项目管理跟进动态
getGJDT
(){
let
param
=
{
pageNum
:
this
.
pageNum
,
//页码
pageSize
:
this
.
pageSize
,
userId
:
this
.
userId
}
allRecord
(
param
).
then
(
result
=>
{
this
.
recordlist
=
result
.
code
==
200
?
result
:[]
// this.recordlist.rows.forEach(item=>{
// item.createTime = this.gettime(item.createTime)
// item.nextVisitTime = this.gettime(item.nextVisitTime)
// })
})
},
//项目管理项目详情跟进记录
getGJJL
(){
let
param
=
{
pageNum
:
this
.
pageNum
,
//页码
...
...
@@ -262,12 +316,15 @@
if
(
this
.
showtype
==
'gjjl'
){
this
.
getGJJL
()
}
if
(
this
.
showtype
==
'projectgjdt'
){
this
.
getGJDT
()
}
},
getEdit
(){
this
.
isEdit
=
true
;
this
.
value
=
""
this
.
addParam
=
{
customerId
:
''
,
//客户id
customerId
:
''
,
//客户id
visitMode
:
''
,
//拜访方式
nextVisitTime
:
''
,
//下次拜访时间
name
:
''
,
//拜访对象姓名
...
...
dsk-operate-ui/src/views/project/projectList/component/gzdb.vue
View file @
3286a077
...
...
@@ -70,19 +70,25 @@
export
default
{
name
:
'gjjl'
,
props
:
{
detailId
:
{
//从企业详情跳转过来ID
type
:
Number
,
default
:
0
}
},
data
(){
return
{
isEdit
:
false
,
value
:
''
,
status
:
0
,
queryParam
:{
businessId
:
parseInt
(
this
.
$route
.
query
.
id
),
//项目详情id
businessId
:
this
.
detailId
?
this
.
detailId
:
parseInt
(
this
.
$route
.
query
.
id
),
//项目详情id
target
:
''
,
task
:
''
,
finishTime
:
''
,
},
searchPram
:{
businessId
:
parseInt
(
this
.
$route
.
query
.
id
),
businessId
:
this
.
detailId
?
this
.
detailId
:
parseInt
(
this
.
$route
.
query
.
id
),
pageSize
:
10
,
pageNum
:
1
,
state
:
null
,
...
...
dsk-operate-ui/src/views/project/projectList/component/jsnr.vue
View file @
3286a077
...
...
@@ -203,10 +203,16 @@
import
{
getJSNR
,
editXMNR
}
from
'@/api/project/project'
export
default
{
name
:
'jsnr'
,
props
:
{
detailId
:
{
//从企业详情跳转过来ID
type
:
Number
,
default
:
0
}
},
data
(){
return
{
nowedit
:
-
1
,
//当前正在编辑的文本
id
:
parseInt
(
this
.
$route
.
query
.
id
),
id
:
this
.
detailId
?
this
.
detailId
:
parseInt
(
this
.
$route
.
query
.
id
),
investmentAmount
:
''
,
//总投资额
amountSource
:
''
,
//资金来源
buildProperty
:
''
,
//建设性质
...
...
dsk-operate-ui/src/views/project/projectList/component/lxr.vue
View file @
3286a077
...
...
@@ -113,6 +113,12 @@
import
{
getLXR
,
editLXR
,
addLXR
}
from
'@/api/project/project'
export
default
{
name
:
'lxr'
,
props
:
{
detailId
:
{
//从企业详情跳转过来ID
type
:
Number
,
default
:
0
}
},
data
(){
return
{
dialogVisible
:
false
,
...
...
@@ -125,9 +131,9 @@
searchParam
:{
pageNum
:
1
,
pageSize
:
20
,
businessId
:
this
.
$route
.
query
.
id
businessId
:
this
.
detailId
?
this
.
detailId
:
this
.
$route
.
query
.
id
},
id
:
this
.
$route
.
query
.
id
,
id
:
this
.
detailId
?
this
.
detailId
:
this
.
$route
.
query
.
id
,
total
:
0
,
projectname
:
this
.
$route
.
query
.
projectname
,
queryParam
:[],
...
...
dsk-operate-ui/src/views/project/projectList/component/xgqy.vue
View file @
3286a077
...
...
@@ -139,6 +139,12 @@
import
{
getDictType
}
from
'@/api/main'
export
default
{
name
:
'xgqy'
,
props
:
{
detailId
:
{
//从企业详情跳转过来ID
type
:
Number
,
default
:
0
}
},
data
(){
return
{
types
:
1
,
...
...
@@ -175,7 +181,7 @@
companytype
:[],
companyrole
:[],
queryParam
:{
businessId
:
this
.
$route
.
query
.
id
,
businessId
:
this
.
detailId
?
this
.
detailId
:
this
.
$route
.
query
.
id
,
companyId
:
''
,
companyName
:
''
,
companyRole
:
''
,
...
...
@@ -186,7 +192,7 @@
searchParam
:{
pageSize
:
20
,
pageNum
:
1
,
businessId
:
this
.
$route
.
query
.
id
,
businessId
:
this
.
detailId
?
this
.
detailId
:
this
.
$route
.
query
.
id
,
companyType
:
""
,
companyName
:
''
,
},
...
...
@@ -212,7 +218,7 @@
if
(
res
.
code
==
200
){
this
.
$message
.
success
(
'删除成功'
)
this
.
ondel
=
-
1
this
.
getlist
(
)
this
.
handleCurrentChange
(
1
)
}
})
},
...
...
@@ -259,7 +265,7 @@
opennew
(){
this
.
dialogVisible
=
true
this
.
queryParam
=
{
businessId
:
this
.
$route
.
query
.
id
,
businessId
:
this
.
detailId
?
this
.
detailId
:
this
.
$route
.
query
.
id
,
companyId
:
''
,
companyName
:
''
,
companyRole
:
''
,
...
...
dsk-operate-ui/src/views/project/projectList/component/xmsl.vue
View file @
3286a077
...
...
@@ -175,6 +175,10 @@
name
:
'xmsl'
,
props
:{
datas
:
''
,
detailId
:
{
//从企业详情跳转过来ID
type
:
Number
,
default
:
0
}
},
data
(){
return
{
...
...
@@ -183,7 +187,7 @@
tipsvalue
:
""
,
//标签填写内容
xmjd
:
'待添加'
,
projectStage
:[],
//项目阶段
id
:
this
.
$route
.
query
.
id
,
id
:
this
.
detailId
?
this
.
detailId
:
this
.
$route
.
query
.
id
,
xmsldata
:
this
.
datas
,
}
},
...
...
dsk-operate-ui/src/views/project/projectList/component/zlwd.vue
View file @
3286a077
...
...
@@ -5,7 +5,7 @@
<div
class=
"cardtitles"
>
资料文档
</div>
<div
class=
"searchbtns"
>
<div
class=
"searchInput"
>
<el-input
type=
"text"
placeholder=
"输入关键词查询"
></el-input>
<el-input
type=
"text"
v-model=
"param.keyword"
placeholder=
"输入关键词查询"
></el-input>
<div
class=
"btn"
@
click=
"handleCurrentChange(1)"
>
搜索
</div>
</div>
<div
class=
"btn btn_primary h32 b2"
@
click=
"getUP"
><div
class=
"img img2"
></div>
上传
</div>
...
...
@@ -20,14 +20,14 @@
:multiple=
"false"
ref=
"upload"
:file-list=
"fileList"
accept=
".word,.pdf.excel,.xlsx"
accept=
".word,.pdf.excel,.xlsx
,.doc,.docx
"
:headers=
"headers"
:show-file-list=
"false"
:on-success=
"onSuccess"
>
<div
class=
"wj wj1"
></div>
上传文件
</el-upload>
</div>
<div>
<div
style=
"display: none"
>
<el-upload
class=
"upload-demo"
:action=
"action"
...
...
@@ -105,6 +105,13 @@
</el-pagination>
</div>
</div>
<div
class=
"delform"
v-if=
"ondel != ''"
>
<div
class=
"words"
>
是否将文档删除
</div>
<div>
<div
class=
"btnsmall btn_primary h28"
@
click=
"delQY()"
>
确定
</div>
<div
class=
"btnsmall btn_cancel h28"
@
click=
"ondel = ''"
>
取消
</div>
</div>
</div>
</div>
</el-card>
</div>
...
...
@@ -116,6 +123,12 @@
import
{
getZLWD
,
delZLWD
}
from
"@/api/project/project"
;
export
default
{
name
:
'zlwd'
,
props
:
{
detailId
:
{
//从企业详情跳转过来ID
type
:
Number
,
default
:
0
}
},
data
(){
return
{
isupload
:
false
,
...
...
@@ -125,15 +138,17 @@
fileList
:
[],
headers
:
{
Authorization
:
"Bearer "
+
getToken
(),
filePath
:
this
.
$route
.
query
.
id
,
filePath
:
this
.
detailId
?
this
.
detailId
:
this
.
$route
.
query
.
id
,
},
param
:{
pageNum
:
1
,
pagesize
:
20
,
filePath
:
this
.
$route
.
query
.
id
,
filePath
:
this
.
detailId
?
this
.
detailId
:
this
.
$route
.
query
.
id
,
keyword
:
''
,
},
fileDatas
:[],
filename
:
''
,
ondel
:
""
,
}
},
created
(){
...
...
@@ -142,20 +157,24 @@
},
methods
:{
getall
(){
this
.
param
.
filePath
=
this
.
$route
.
query
.
id
this
.
param
.
filePath
=
this
.
detailId
?
this
.
detailId
:
this
.
$route
.
query
.
id
this
.
filename
=
''
this
.
headers
.
filePath
=
this
.
$route
.
query
.
id
this
.
headers
.
filePath
=
this
.
detailId
?
this
.
detailId
:
this
.
$route
.
query
.
id
this
.
handleCurrentChange
(
1
)
},
getList
(){
getZLWD
(
this
.
param
).
then
(
res
=>
{
this
.
fileDatas
=
res
if
(
this
.
fileDatas
.
rows
!=
null
&&
this
.
fileDatas
.
length
>
0
){
this
.
fileDatas
.
forEach
(
item
=>
{
let
names
=
item
.
filePath
.
split
(
'
\
\
'
)
if
(
this
.
fileDatas
.
rows
!=
null
&&
this
.
fileDatas
.
rows
.
length
>
0
){
this
.
fileDatas
.
rows
.
forEach
(
item
=>
{
let
names
=
item
.
filePath
.
split
(
'
/
'
)
item
.
name
=
names
[
names
.
length
-
1
]
let
types
=
item
.
name
.
split
(
'.'
)
item
.
type
=
types
.
length
>
1
?
types
[
1
]:
'file'
if
(
item
.
type
==
'xls'
||
item
.
type
==
'xlsx'
)
item
.
type
=
'excel'
if
(
item
.
type
==
'doc'
||
item
.
type
==
'docx'
)
item
.
type
=
'word'
})
}
})
...
...
@@ -163,7 +182,7 @@
getFile
(
row
){
if
(
row
.
type
==
'file'
){
this
.
filename
=
row
.
name
this.headers.filePath = this.
$route.query.id+'
\\
'+row.name
this
.
headers
.
filePath
=
this
.
detailId
?
this
.
detailId
:
this
.
$route
.
query
.
id
+
'/
'
+
row
.
name
this
.
param
.
filePath
=
row
.
filePath
this
.
handleCurrentChange
(
1
)
...
...
@@ -178,20 +197,33 @@
})
},
downnlod
(
row
){
let a = document.createElement("a");
a.setAttribute("href", row.filePath);
a.setAttribute("download", row.name);
document.body.appendChild(a);
a.click();
let
param
=
{
filePath
:
row
.
filePath
}
// this.$download.saveAs(row.filePath,row.name);
this
.
$download
.
exportByPost
(
'/business/file/download'
,
param
);
// // this.$download()
// let a = document.createElement("a");
// a.setAttribute("href", row.filePath);
// a.setAttribute("download", row.name);
// document.body.appendChild(a);
// a.click();
},
del(path){
delZLWD(path).then(res=>{
delQY
(){
let
param
=
{
filePath
:
this
.
ondel
}
delZLWD
(
JSON
.
stringify
(
param
)).
then
(
res
=>
{
if
(
res
.
code
==
200
){
this
.
$message
.
success
(
'删除成功!'
)
this
.
handleCurrentChange
(
1
)
this
.
ondel
=
''
}
})
},
del
(
path
){
this
.
ondel
=
path
},
handleFileListChange
(
file
,
fileList
)
{
if
(
fileList
.
length
>
0
)
{
this
.
fileList
=
[
fileList
[
fileList
.
length
-
1
]];
...
...
@@ -225,7 +257,7 @@
//翻页
handleCurrentChange
(
val
)
{
this.param.pageNum
(1)
this
.
param
.
pageNum
=
val
this
.
getList
()
},
cancel
(){
...
...
@@ -240,6 +272,10 @@
</
script
>
<
style
lang=
"scss"
scoped
>
.delform
{
position
:
fixed
;
left
:
50%
;
top
:
50%
;
transform
:translate
(
-50
%
,
-50
%
)
}
.filepath
{
font-size
:
12px
;
height
:
30px
;
...
...
@@ -274,7 +310,7 @@
.uploadbox
{
position
:
absolute
;
width
:
124px
;
height
:
73
px
;
height
:
36
px
;
background
:
#FFFFFF
;
box-shadow
:
0px
0px
4px
0px
rgba
(
0
,
0
,
0
,
0
.08
);
border-radius
:
2px
;
...
...
dsk-operate-ui/src/views/project/projectList/detail.vue
View file @
3286a077
<
template
>
<div>
<div
class=
"miantitle"
>
<span>
项目管理
</span>
<span>
/ 商机列表
</span>
<template
v-if=
"!detailId"
>
<span>
项目管理
</span>
<span>
/ 商机列表
</span>
</
template
>
<span
v-else
@
click=
"cooperateList"
>
合作情况
</span>
<span>
/ 项目详情
</span>
</div>
<div
class=
"app-container"
v-if=
"ProjectData"
>
...
...
@@ -105,19 +108,19 @@
</div>
</el-card>
<!--项目概览-->
<xmsl
v-if=
"thistag == 'xmsl'"
:datas=
"ProjectData"
></xmsl>
<xmsl
v-if=
"thistag == 'xmsl'"
:datas=
"ProjectData"
:detailId=
"detailId"
></xmsl>
<!--建设内容-->
<jsnr
v-if=
"thistag == 'jsnr'"
></jsnr>
<jsnr
v-if=
"thistag == 'jsnr'"
:detailId=
"detailId"
></jsnr>
<!--联系人-->
<lxr
v-if=
"thistag == 'lxr'"
></lxr>
<lxr
v-if=
"thistag == 'lxr'"
:detailId=
"detailId"
></lxr>
<!--跟进记录-->
<gjjl
v-if=
"thistag == 'gjjl'"
types=
"gjjl"
></gjjl>
<gjjl
v-if=
"thistag == 'gjjl'"
types=
"gjjl"
:detailId=
"detailId"
></gjjl>
<!--工作待办-->
<gzdb
v-if=
"thistag == 'gzdb'"
></gzdb>
<gzdb
v-if=
"thistag == 'gzdb'"
:detailId=
"detailId"
></gzdb>
<!--资料文档-->
<zlwd
v-if=
"thistag == 'zlwd'"
></zlwd>
<zlwd
v-if=
"thistag == 'zlwd'"
:detailId=
"detailId"
></zlwd>
<!--相关企业-->
<xgqy
v-if=
"thistag == 'xgqy'"
></xgqy>
<xgqy
v-if=
"thistag == 'xgqy'"
:detailId=
"detailId"
></xgqy>
</div>
</div>
</template>
...
...
@@ -138,6 +141,12 @@
export
default
{
name
:
'detail'
,
components
:
{
xmsl
,
jsnr
,
lxr
,
gjjl
,
gzdb
,
zlwd
,
xgqy
},
props
:
{
detailId
:
{
//从企业详情跳转过来ID
type
:
Number
,
default
:
0
}
},
data
(){
return
{
lastindex
:
0
,
//上一个点击步骤
...
...
@@ -171,7 +180,7 @@
},
created
(){
this
.
prvinceTree
()
this
.
id
=
this
.
$route
.
query
.
id
this
.
id
=
this
.
detailId
?
this
.
detailId
:
this
.
$route
.
query
.
id
//项目阶段
getDictType
(
'project_stage_type'
).
then
(
result
=>
{
this
.
projectStage
=
result
.
code
==
200
?
result
.
data
:[]
...
...
@@ -324,6 +333,11 @@
})
this
.
editXMSL
(
param
)
},
// 跳转到企业详情合作情况
cooperateList
(){
this
.
$emit
(
'close-detail'
)
}
}
}
</
script
>
...
...
dsk-operate-ui/src/views/project/projectList/index.vue
View file @
3286a077
...
...
@@ -113,12 +113,12 @@
</div>
<div
class=
"datalist"
>
<div
class=
"datali"
v-for=
"(item,index) in datalist"
>
<div
class=
"det-title"
@
click=
"toDetail(item.id)"
>
{{
item
.
projectName
}}
<span
v-if=
"activeName!='first'
"
class=
"people"
><i>
{{
item
.
nickName1
}}
</i>
{{
item
.
nickName
}}
<font
color=
"#FA8A00"
v-if=
"activeName!='first'
"
>
正在跟进
</font></span></div>
<div
class=
"det-title"
@
click=
"toDetail(item.id)"
>
{{
item
.
projectName
}}
<span
v-if=
"activeName!='first'
&& item.followTime"
class=
"people"
><i>
{{
item
.
nickName1
}}
</i>
{{
item
.
nickName
}}
<font
color=
"#FA8A00
"
>
正在跟进
</font></span></div>
<div
class=
"det-tips"
><span
class=
"tips tip1"
v-if=
"item.label"
>
{{
item
.
label
}}
</span><span
v-if=
"item.address"
class=
"tips tip2"
>
{{
item
.
address
}}
</span></div>
<div
class=
"det-contets"
>
<div
class=
"det-con"
>
<span>
项目类型:
</span>
<span>
轨道交通
</span>
<span>
{{
item
.
projectType
}}
</span>
</div>
<div
class=
"det-con"
>
<span>
投资估算(万元):
</span>
...
...
dsk-operate-ui/src/views/project/trends/index.vue
View file @
3286a077
<
template
>
<div
class=
"app-container"
>
跟进动态
<gjjl
types=
"projectgjdt"
></gjjl>
</div>
</
template
>
<
script
>
import
gjjl
from
'../projectList/component/gjjl.vue'
export
default
{
name
:
'Trends'
,
components
:
{
gjjl
,},
data
()
{
return
{
}
...
...
dsk-system/src/main/java/com/dsk/system/dskService/EnterpriseProjectService.java
View file @
3286a077
...
...
@@ -106,13 +106,13 @@ public class EnterpriseProjectService {
}
public
TableDataInfo
bidPlanPage
(
Object
body
)
throws
Exception
{
public
TableDataInfo
bidPlanPage
(
EnterpriseProjectBidPlanPageBody
body
)
throws
Exception
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/operate/enterpriseProject/bidPlanPage"
,
BeanUtil
.
beanToMap
(
body
,
false
,
false
));
return
dskOpenApiUtil
.
responsePage
(
map
);
}
public
R
bidPlanDetail
(
Object
body
)
throws
Exception
{
public
R
bidPlanDetail
(
EnterpriseProjectBidPlanDetailBody
body
)
throws
Exception
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/operate/enterpriseProject/bidPlanDetail"
,
BeanUtil
.
beanToMap
(
body
,
false
,
false
));
Map
data
=
MapUtils
.
getMap
(
map
,
"data"
,
null
);
String
contentId
=
MapUtils
.
getString
(
data
,
"contentId"
);
...
...
dsk-system/src/main/java/com/dsk/system/dskService/EnterpriseService.java
View file @
3286a077
...
...
@@ -8,6 +8,7 @@ import com.dsk.common.core.domain.R;
import
com.dsk.common.core.domain.model.*
;
import
com.dsk.common.core.page.TableDataInfo
;
import
com.dsk.common.utils.DskOpenApiUtil
;
import
com.dsk.common.utils.EncodeIdUtil
;
import
com.dsk.system.domain.customer.vo.CustomerStatusListVo
;
import
com.dsk.system.service.ICustomerService
;
import
org.apache.commons.collections4.CollectionUtils
;
...
...
@@ -188,4 +189,8 @@ public class EnterpriseService {
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/operate/enterprise/uipGroupData"
,
null
);
return
BeanUtil
.
toBean
(
map
,
R
.
class
);
}
public
R
remark
(
EnterpriseRemarkBody
vo
)
throws
Exception
{
return
R
.
ok
(
EncodeIdUtil
.
avDecode
(
EncodeIdUtil
.
binaryToUnicode
(
vo
.
mark
)));
}
}
dsk-system/src/main/java/com/dsk/system/mapper/BusinessFollowRecordMapper.java
View file @
3286a077
...
...
@@ -14,6 +14,21 @@ import java.util.List;
*/
public
interface
BusinessFollowRecordMapper
{
/**
* 查询关联项目
* @param userId
* @return
*/
List
<
String
>
selectRelateProject
(
Integer
userId
);
/**
* 查询关联业主企业
* @param userId
* @return
*/
List
<
String
>
selectRelateCompany
(
Integer
userId
);
/**
* 查询项目跟进记录
*
...
...
dsk-system/src/main/java/com/dsk/system/service/EconomicService.java
View file @
3286a077
...
...
@@ -42,6 +42,16 @@ public interface EconomicService {
AjaxResult
details
(
OpRegionalEconomicDataDetailsDto
detailsDto
);
/***
*@Description: 获取当前地区
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult
location
(
OpRegionalLocalDto
detailsDto
);
/***
*@Description: 地区经济统计
*@Param:
...
...
@@ -61,12 +71,12 @@ public interface EconomicService {
AjaxResult
regionalList
(
OpRegionalEconomicDataRegionalListDto
dto
);
/***
*@Description:
地区经济-分页列表
*@Description:
对比经济
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult
regionalCompar
ison
(
OpRegionalEconomicDataV1
Dto
dto
);
AjaxResult
regionalCompar
e
(
OpRegionalEconomicDataStatisticsRegional
Dto
dto
);
}
dsk-system/src/main/java/com/dsk/system/service/IBusinessFollowRecordService.java
View file @
3286a077
...
...
@@ -54,6 +54,20 @@ public interface IBusinessFollowRecordService
*/
public
int
insertBusinessFollowRecord
(
BusinessFollowRecord
businessFollowRecord
);
/**
* 查询关联项目
* @param userId
* @return
*/
List
<
String
>
selectRelateProject
(
Integer
userId
);
/**
* 查询关联业主企业
* @param userId
* @return
*/
List
<
String
>
selectRelateCompany
(
Integer
userId
);
/**
* 修改项目跟进记录
*
...
...
dsk-system/src/main/java/com/dsk/system/service/impl/BusinessFollowRecordServiceImpl.java
View file @
3286a077
...
...
@@ -71,6 +71,16 @@ public class BusinessFollowRecordServiceImpl implements IBusinessFollowRecordSer
return
businessFollowRecordMapper
.
insertBusinessFollowRecord
(
businessFollowRecord
);
}
@Override
public
List
<
String
>
selectRelateProject
(
Integer
userId
)
{
return
businessFollowRecordMapper
.
selectRelateProject
(
userId
);
}
@Override
public
List
<
String
>
selectRelateCompany
(
Integer
userId
)
{
return
businessFollowRecordMapper
.
selectRelateCompany
(
userId
);
}
/**
* 修改项目跟进记录
*
...
...
dsk-system/src/main/java/com/dsk/system/service/impl/EconomicServiceImpl.java
View file @
3286a077
...
...
@@ -46,6 +46,12 @@ public class EconomicServiceImpl implements EconomicService {
return
BeanUtil
.
toBean
(
map
,
AjaxResult
.
class
);
}
@Override
public
AjaxResult
location
(
OpRegionalLocalDto
detailsDto
)
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/economic/location"
,
BeanUtil
.
beanToMap
(
detailsDto
,
false
,
false
));
return
BeanUtil
.
toBean
(
map
,
AjaxResult
.
class
);
}
@Override
public
AjaxResult
statisticsRegional
(
OpRegionalEconomicDataStatisticsRegionalDto
dto
)
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/economic/statistics/regional"
,
BeanUtil
.
beanToMap
(
dto
,
false
,
false
));
...
...
@@ -59,8 +65,8 @@ public class EconomicServiceImpl implements EconomicService {
}
@Override
public
AjaxResult
regionalCompar
ison
(
OpRegionalEconomicDataV1
Dto
dto
)
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/economic/
xx
"
,
BeanUtil
.
beanToMap
(
dto
,
false
,
false
));
public
AjaxResult
regionalCompar
e
(
OpRegionalEconomicDataStatisticsRegional
Dto
dto
)
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/economic/
regional/compare
"
,
BeanUtil
.
beanToMap
(
dto
,
false
,
false
));
return
BeanUtil
.
toBean
(
map
,
AjaxResult
.
class
);
}
...
...
dsk-system/src/main/resources/mapper/business/BusinessFollowRecordMapper.xml
View file @
3286a077
...
...
@@ -87,6 +87,18 @@
</where>
ORDER BY f.creat_time DESC
</select>
<select
id=
"selectRelateProject"
resultType=
"java.lang.String"
>
select i.project_name
from business_info i
left join business_follow_record f on f.business_id = i.id
where f.user_id = #{userId}
</select>
<select
id=
"selectRelateCompany"
resultType=
"java.lang.String"
>
select i.construction_unit
from business_info i
left join business_follow_record f on f.business_id = i.id
where f.user_id = #{userId}
</select>
<insert
id=
"insertBusinessFollowRecord"
parameterType=
"com.dsk.common.core.domain.entity.BusinessFollowRecord"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
...
...
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