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
4cad5044
Commit
4cad5044
authored
Jun 06, 2023
by
远方不远
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://192.168.60.201/root/dsk-operate-sys
parents
474a8a9c
fbfb6af1
Changes
70
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
70 changed files
with
3133 additions
and
275 deletions
+3133
-275
BusinessFollowRecordController.java
...b/controller/business/BusinessFollowRecordController.java
+25
-22
BusinessInfoController.java
...m/dsk/web/controller/business/BusinessInfoController.java
+4
-2
RegionalEconomicDataController.java
...er/search/macroMarket/RegionalEconomicDataController.java
+17
-6
SpecialBondProjectsController.java
...ler/search/macroMarket/SpecialBondProjectsController.java
+6
-3
application-dev.yml
dsk-admin/src/main/resources/application-dev.yml
+1
-1
pom.xml
dsk-common/pom.xml
+12
-0
BusinessInfo.java
.../java/com/dsk/common/core/domain/entity/BusinessInfo.java
+78
-0
EnterpriseUipSearchBody.java
...dsk/common/core/domain/model/EnterpriseUipSearchBody.java
+1
-1
OpRegionalEconomicDataDetailsDto.java
...com/dsk/common/dtos/OpRegionalEconomicDataDetailsDto.java
+22
-0
OpRegionalEconomicDataV1PageDto.java
.../com/dsk/common/dtos/OpRegionalEconomicDataV1PageDto.java
+3
-5
OpRegionalEconomicDataYearsListDto.java
...m/dsk/common/dtos/OpRegionalEconomicDataYearsListDto.java
+16
-0
SpecialBondInformationDetailsDto.java
...com/dsk/common/dtos/SpecialBondInformationDetailsDto.java
+22
-0
DateUtils.java
dsk-common/src/main/java/com/dsk/common/utils/DateUtils.java
+13
-0
FileUtils.java
...on/src/main/java/com/dsk/common/utils/file/FileUtils.java
+213
-2
SecurityConfig.java
...rc/main/java/com/dsk/framework/config/SecurityConfig.java
+1
-1
SysLoginService.java
...n/java/com/dsk/framework/web/service/SysLoginService.java
+1
-1
dealings.js
dsk-operate-ui/src/api/detail/party-a/dealings.js
+82
-0
financial.js
dsk-operate-ui/src/api/detail/party-a/financial.js
+5
-4
opport.js
dsk-operate-ui/src/api/detail/party-a/opport.js
+127
-8
overview.js
dsk-operate-ui/src/api/detail/party-a/overview.js
+136
-8
project.js
dsk-operate-ui/src/api/project/project.js
+34
-0
ico_pdf.png
dsk-operate-ui/src/assets/images/detail/ico_pdf.png
+0
-0
ico_title.png
dsk-operate-ui/src/assets/images/detail/ico_title.png
+0
-0
CustomMoneySelect.vue
.../src/views/detail/party-a/component/CustomMoneySelect.vue
+364
-0
CustomTimeSelect.vue
...i/src/views/detail/party-a/component/CustomTimeSelect.vue
+320
-0
HeadDetailForm.vue
...-ui/src/views/detail/party-a/component/HeadDetailForm.vue
+213
-0
HeadForm.vue
...perate-ui/src/views/detail/party-a/component/HeadForm.vue
+23
-0
Sidebar.vue
...operate-ui/src/views/detail/party-a/component/Sidebar.vue
+5
-5
Tables.vue
dsk-operate-ui/src/views/detail/party-a/component/Tables.vue
+2
-2
bidagency.vue
...perate-ui/src/views/detail/party-a/dealings/bidagency.vue
+107
-0
bidrecords.vue
...erate-ui/src/views/detail/party-a/dealings/bidrecords.vue
+94
-0
bidagencyDetail.vue
...ews/detail/party-a/dealings/component/bidagencyDetail.vue
+124
-0
customDetail.vue
.../views/detail/party-a/dealings/component/customDetail.vue
+138
-0
supplierDetail.vue
...iews/detail/party-a/dealings/component/supplierDetail.vue
+138
-0
custom.vue
dsk-operate-ui/src/views/detail/party-a/dealings/custom.vue
+132
-0
hiscontract.vue
...rate-ui/src/views/detail/party-a/dealings/hiscontract.vue
+112
-0
supplier.vue
...operate-ui/src/views/detail/party-a/dealings/supplier.vue
+106
-0
index.vue
dsk-operate-ui/src/views/detail/party-a/index.vue
+16
-0
mixin.js
dsk-operate-ui/src/views/detail/party-a/mixins/mixin.js
+5
-0
administrative.vue
...ate-ui/src/views/detail/party-a/opport/administrative.vue
+1
-1
announcement.vue
...erate-ui/src/views/detail/party-a/opport/announcement.vue
+3
-3
bond.vue
dsk-operate-ui/src/views/detail/party-a/opport/bond.vue
+6
-6
landtransaction.vue
...te-ui/src/views/detail/party-a/opport/landtransaction.vue
+3
-3
proposed.vue
dsk-operate-ui/src/views/detail/party-a/opport/proposed.vue
+4
-4
branch.vue
dsk-operate-ui/src/views/detail/party-a/overview/branch.vue
+1
-1
businfo.vue
dsk-operate-ui/src/views/detail/party-a/overview/businfo.vue
+1
-1
execuinfo.vue
...perate-ui/src/views/detail/party-a/overview/execuinfo.vue
+1
-1
holderinfo.vue
...erate-ui/src/views/detail/party-a/overview/holderinfo.vue
+1
-1
overseas.vue
...operate-ui/src/views/detail/party-a/overview/overseas.vue
+1
-1
index.vue
dsk-operate-ui/src/views/detail/party-b/index.vue
+2
-2
jsnr.vue
...erate-ui/src/views/project/projectList/component/jsnr.vue
+2
-1
lxr.vue
...perate-ui/src/views/project/projectList/component/lxr.vue
+1
-1
xgqy.vue
...erate-ui/src/views/project/projectList/component/xgqy.vue
+30
-26
xmsl.vue
...erate-ui/src/views/project/projectList/component/xmsl.vue
+91
-41
detail.vue
dsk-operate-ui/src/views/project/projectList/detail.vue
+88
-68
index.vue
dsk-operate-ui/src/views/project/projectList/index.vue
+1
-1
BusinessBrowseVo.java
.../main/java/com/dsk/system/domain/vo/BusinessBrowseVo.java
+33
-4
BusinessFollowRecordMapper.java
...ava/com/dsk/system/mapper/BusinessFollowRecordMapper.java
+2
-1
BusinessUserMapper.java
...c/main/java/com/dsk/system/mapper/BusinessUserMapper.java
+7
-0
EconomicService.java
...src/main/java/com/dsk/system/service/EconomicService.java
+13
-5
IBusinessFollowRecordService.java
.../com/dsk/system/service/IBusinessFollowRecordService.java
+2
-1
SpecialPurposeBondsService.java
...va/com/dsk/system/service/SpecialPurposeBondsService.java
+2
-1
BusinessFollowRecordServiceImpl.java
.../system/service/impl/BusinessFollowRecordServiceImpl.java
+3
-1
BusinessInfoServiceImpl.java
.../com/dsk/system/service/impl/BusinessInfoServiceImpl.java
+18
-7
BusinessRelateCompanyServiceImpl.java
...system/service/impl/BusinessRelateCompanyServiceImpl.java
+2
-2
EconomicServiceImpl.java
...java/com/dsk/system/service/impl/EconomicServiceImpl.java
+14
-9
SpecialPurposeBondsServiceImpl.java
...k/system/service/impl/SpecialPurposeBondsServiceImpl.java
+3
-5
UrbanInvestmentPlatformServiceImpl.java
...stem/service/impl/UrbanInvestmentPlatformServiceImpl.java
+40
-0
BusinessInfoMapper.xml
...src/main/resources/mapper/business/BusinessInfoMapper.xml
+31
-6
BusinessUserMapper.xml
...src/main/resources/mapper/business/BusinessUserMapper.xml
+8
-0
No files found.
dsk-admin/src/main/java/com/dsk/web/controller/business/BusinessFollowRecordController.java
View file @
4cad5044
...
...
@@ -4,6 +4,7 @@ import java.util.List;
import
javax.servlet.http.HttpServletResponse
;
import
com.dsk.common.core.domain.entity.BusinessFollowRecord
;
import
com.dsk.system.domain.BusinessIdDto
;
import
com.dsk.system.service.IBusinessFollowRecordService
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -39,11 +40,12 @@ public class BusinessFollowRecordController extends BaseController
* 根据项目id查询项目跟进记录
*/
// @PreAuthorize("@ss.hasPermi('system:record:list')")
@GetMapping
(
"/list/{businessId}"
)
public
AjaxResult
list
(
@PathVariable
Integer
businessId
)
{
return
success
(
businessFollowRecordService
.
selectBusinessFollowRecordList
(
businessId
));
}
// @GetMapping("/list/{businessId}")
// public TableDataInfo list(@PathVariable("businessId") Integer businessId)
// {
// startPage();
// return getDataTable(businessFollowRecordService.selectBusinessFollowRecordList(businessId));
// }
/**
* 新增项目跟进记录
...
...
@@ -60,13 +62,24 @@ public class BusinessFollowRecordController extends BaseController
* 分页查询项目跟进记录
*/
// @PreAuthorize("@ss.hasPermi('system:record:list')")
// @GetMapping("/list")
// public TableDataInfo list(BusinessFollowRecord businessFollowRecord)
// {
// startPage();
// List<BusinessFollowRecord> list = businessFollowRecordService.selectBusinessFollowRecordList(businessFollowRecord);
// return getDataTable(list);
// }
@GetMapping
(
"/list"
)
public
TableDataInfo
list
(
@RequestBody
(
required
=
false
)
BusinessIdDto
businessId
)
{
startPage
();
List
<
BusinessFollowRecord
>
list
=
businessFollowRecordService
.
selectBusinessFollowRecordList
(
businessId
);
return
getDataTable
(
list
);
}
/**
* 删除项目跟进记录
*/
// @PreAuthorize("@ss.hasPermi('system:record:remove')")
// @Log(title = "项目跟进记录", businessType = BusinessType.DELETE)
@DeleteMapping
(
"remove/{ids}"
)
public
AjaxResult
remove
(
@PathVariable
(
value
=
"ids"
,
required
=
false
)
Long
[]
ids
)
{
return
toAjax
(
businessFollowRecordService
.
deleteBusinessFollowRecordByIds
(
ids
));
}
// /**
// * 导出项目跟进记录列表
...
...
@@ -102,14 +115,4 @@ public class BusinessFollowRecordController extends BaseController
// return toAjax(businessFollowRecordService.updateBusinessFollowRecord(businessFollowRecord));
// }
// /**
// * 删除项目跟进记录
// */
// @PreAuthorize("@ss.hasPermi('system:record:remove')")
// @Log(title = "项目跟进记录", businessType = BusinessType.DELETE)
// @DeleteMapping("/{ids}")
// public AjaxResult remove(@PathVariable Long[] ids)
// {
// return toAjax(businessFollowRecordService.deleteBusinessFollowRecordByIds(ids));
// }
}
dsk-admin/src/main/java/com/dsk/web/controller/business/BusinessInfoController.java
View file @
4cad5044
...
...
@@ -4,6 +4,8 @@ import java.util.List;
import
com.dsk.common.core.domain.entity.BusinessInfo
;
import
com.dsk.common.dtos.BusinessInfoDto
;
import
com.dsk.common.exception.base.BaseException
;
import
com.dsk.common.utils.CheckUtils
;
import
com.dsk.system.domain.BusinessAddDto
;
import
com.dsk.system.domain.BusinessListDto
;
import
com.dsk.system.domain.vo.BusinessBrowseVo
;
...
...
@@ -69,9 +71,9 @@ public class BusinessInfoController extends BaseController
*/
// @PreAuthorize("@ss.hasPermi('system:business:query')")
@GetMapping
(
"/browse/{businessId}"
)
public
AjaxResult
browse
(
@PathVariable
Integer
i
d
)
public
AjaxResult
browse
(
@PathVariable
(
"businessId"
)
Integer
businessI
d
)
{
return
success
(
businessInfoService
.
browse
(
i
d
));
return
success
(
businessInfoService
.
browse
(
businessI
d
));
}
/**
...
...
dsk-admin/src/main/java/com/dsk/web/controller/search/macroMarket/RegionalEconomicDataController.java
View file @
4cad5044
package
com
.
dsk
.
web
.
controller
.
search
.
macroMarket
;
import
com.dsk.common.core.domain.AjaxResult
;
import
com.dsk.common.dtos.OpRegionalEconomicDataRegionalListDto
;
import
com.dsk.common.dtos.OpRegionalEconomicDataStatisticsRegionalDto
;
import
com.dsk.common.dtos.OpRegionalEconomicDataV1PageDto
;
import
com.dsk.common.dtos.*
;
import
com.dsk.system.service.EconomicService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
...
...
@@ -37,6 +35,19 @@ public class RegionalEconomicDataController {
return
economicService
.
nationalPage
(
dto
);
}
/***
*@Description: 获取年份
*@Param:
*@return: com.dsk.acc.security.common.msg.RestResponse
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@PostMapping
(
"/years/list"
)
public
AjaxResult
yearsList
(
@RequestBody
OpRegionalEconomicDataYearsListDto
dto
)
{
return
economicService
.
yearsList
(
dto
);
}
/***
*@Description: 全国经济大全详情
*@Param:
...
...
@@ -44,9 +55,9 @@ public class RegionalEconomicDataController {
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@
GetMapping
(
"/details/{id}
"
)
public
AjaxResult
details
(
@
PathVariable
(
"id"
)
Integer
id
)
{
return
economicService
.
details
(
id
);
@
PostMapping
(
"/details
"
)
public
AjaxResult
details
(
@
RequestBody
@Valid
OpRegionalEconomicDataDetailsDto
detailsDto
)
{
return
economicService
.
details
(
detailsDto
);
}
...
...
dsk-admin/src/main/java/com/dsk/web/controller/search/macroMarket/SpecialBondProjectsController.java
View file @
4cad5044
package
com
.
dsk
.
web
.
controller
.
search
.
macroMarket
;
import
com.dsk.common.core.domain.AjaxResult
;
import
com.dsk.common.dtos.SpecialBondInformationDetailsDto
;
import
com.dsk.common.dtos.SpecialBondInformationPageDto
;
import
com.dsk.common.dtos.SpecialPurposeBondsDto
;
import
com.dsk.common.dtos.SpecialPurposeBondsPageDto
;
...
...
@@ -8,6 +9,8 @@ import com.dsk.system.service.SpecialPurposeBondsService;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
javax.validation.Valid
;
/**
* @ClassName SpecialBondProjectsController
* @Description 专项债项目
...
...
@@ -42,9 +45,9 @@ public class SpecialBondProjectsController {
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@
GetMapping
(
"/details/{id}
"
)
public
AjaxResult
details
(
@
PathVariable
(
"id"
)
String
id
)
{
return
specialPurposeBondsService
.
details
(
id
);
@
PostMapping
(
"/details
"
)
public
AjaxResult
details
(
@
RequestBody
@Valid
SpecialBondInformationDetailsDto
detailsDto
)
{
return
specialPurposeBondsService
.
details
(
detailsDto
);
}
...
...
dsk-admin/src/main/resources/application-dev.yml
View file @
4cad5044
...
...
@@ -9,7 +9,7 @@ ruoyi:
# 实例演示开关
demoEnabled
:
true
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
profile
:
D:/dsk-operate-sys/uploadPath
profile
:
D:/dsk-operate-sys/uploadPath
/
# 获取ip地址开关
addressEnabled
:
false
# 验证码类型 math 数组计算 char 字符验证
...
...
dsk-common/pom.xml
View file @
4cad5044
...
...
@@ -150,6 +150,18 @@
<artifactId>
dsk-acc-open-sdk-java
</artifactId>
<version>
${dsk-openapi-sdk.version}
</version>
</dependency>
<dependency>
<groupId>
org.apache.httpcomponents
</groupId>
<artifactId>
httpclient
</artifactId>
<version>
4.5.13
</version>
</dependency>
<dependency>
<groupId>
org.apache.httpcomponents
</groupId>
<artifactId>
httpmime
</artifactId>
<version>
4.5.13
</version>
</dependency>
</dependencies>
</project>
dsk-common/src/main/java/com/dsk/common/core/domain/entity/BusinessInfo.java
View file @
4cad5044
...
...
@@ -142,6 +142,78 @@ public class BusinessInfo extends BaseEntity
@Excel
(
name
=
"评标委员会"
)
private
String
evaluationBidCouncil
;
/** 建设单位 */
@Excel
(
name
=
"建设单位"
)
private
String
constructionUnit
;
/** 建设单位负责人 */
@Excel
(
name
=
"建设单位负责人"
)
private
String
constructionPrincipal
;
/** 建设单位联系电话 */
@Excel
(
name
=
"建设单位联系电话"
)
private
String
constructionPhone
;
/** 主管单位 */
@Excel
(
name
=
"主管单位"
)
private
String
supervisorUnit
;
/** 主管单位负责人 */
@Excel
(
name
=
"主管单位负责人"
)
private
String
supervisorPrincipal
;
/** 主管单位联系电话 */
@Excel
(
name
=
"主管单位联系电话"
)
private
String
supervisorPhone
;
public
String
getConstructionUnit
()
{
return
constructionUnit
;
}
public
void
setConstructionUnit
(
String
constructionUnit
)
{
this
.
constructionUnit
=
constructionUnit
;
}
public
String
getConstructionPrincipal
()
{
return
constructionPrincipal
;
}
public
void
setConstructionPrincipal
(
String
constructionPrincipal
)
{
this
.
constructionPrincipal
=
constructionPrincipal
;
}
public
String
getConstructionPhone
()
{
return
constructionPhone
;
}
public
void
setConstructionPhone
(
String
constructionPhone
)
{
this
.
constructionPhone
=
constructionPhone
;
}
public
String
getSupervisorUnit
()
{
return
supervisorUnit
;
}
public
void
setSupervisorUnit
(
String
supervisorUnit
)
{
this
.
supervisorUnit
=
supervisorUnit
;
}
public
String
getSupervisorPrincipal
()
{
return
supervisorPrincipal
;
}
public
void
setSupervisorPrincipal
(
String
supervisorPrincipal
)
{
this
.
supervisorPrincipal
=
supervisorPrincipal
;
}
public
String
getSupervisorPhone
()
{
return
supervisorPhone
;
}
public
void
setSupervisorPhone
(
String
supervisorPhone
)
{
this
.
supervisorPhone
=
supervisorPhone
;
}
public
String
getEvaluationBidWay
()
{
return
evaluationBidWay
;
}
...
...
@@ -437,6 +509,12 @@ public class BusinessInfo extends BaseEntity
.
append
(
"earnestMoneyPay"
,
getEarnestMoneyPay
())
.
append
(
"earnestMoney"
,
getEarnestMoney
())
.
append
(
"evaluationBidCouncil"
,
getEvaluationBidCouncil
())
.
append
(
"constructionUnit"
,
getConstructionUnit
())
.
append
(
"constructionPrincipal"
,
getConstructionPrincipal
())
.
append
(
"constructionPhone"
,
getConstructionPhone
())
.
append
(
"supervisorUnit"
,
getSupervisorUnit
())
.
append
(
"supervisorPrincipal"
,
getSupervisorPrincipal
())
.
append
(
"supervisorPhone"
,
getSupervisorPhone
())
.
toString
();
}
}
dsk-common/src/main/java/com/dsk/common/core/domain/model/EnterpriseUipSearchBody.java
View file @
4cad5044
...
...
@@ -21,7 +21,7 @@ public class EnterpriseUipSearchBody extends BasePage {
/*
* 1
金额倒序,2金额正序,3时间倒序,4时间
正序
* 1
供应商倒序,2供应商正序,3拟建项目倒序,4拟建项目正序,5招标公告倒序,6招标公告正序,7土地倒序,8土地
正序
*/
@NotNull
(
message
=
"排序条件不能为空"
)
private
Integer
sort
;
...
...
dsk-common/src/main/java/com/dsk/common/dtos/OpRegionalEconomicDataDetailsDto.java
0 → 100644
View file @
4cad5044
package
com
.
dsk
.
common
.
dtos
;
import
lombok.Data
;
import
javax.validation.constraints.NotNull
;
/**
* @ClassName OpRegionalEconomicDataV1Dto
* @Description 区域经济大全-详情
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public
class
OpRegionalEconomicDataDetailsDto
{
/**
* id
*/
@NotNull
(
message
=
"id 不能为空"
)
private
Integer
id
;
}
dsk-common/src/main/java/com/dsk/common/dtos/OpRegionalEconomicDataV1PageDto.java
View file @
4cad5044
...
...
@@ -3,7 +3,6 @@ package com.dsk.common.dtos;
import
com.dsk.common.core.domain.model.BasePage
;
import
lombok.Data
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
/**
...
...
@@ -19,20 +18,19 @@ public class OpRegionalEconomicDataV1PageDto extends BasePage {
/**
* 年份
*/
@NotNull
(
message
=
"year 不能为空"
)
private
Integer
year
;
/**
* 省
*/
private
List
<
String
>
provinceIds
;
private
List
<
Integer
>
provinceIds
;
/**
* 市
*/
private
List
<
String
>
cityIds
;
private
List
<
Integer
>
cityIds
;
/**
* 区
*/
private
List
<
String
>
areaIds
;
private
List
<
Integer
>
areaIds
;
/**
* 全国宏观经济:1 / 辖区经济:2 / 地区对比:3
...
...
dsk-common/src/main/java/com/dsk/common/dtos/OpRegionalEconomicDataYearsListDto.java
0 → 100644
View file @
4cad5044
package
com
.
dsk
.
common
.
dtos
;
import
lombok.Data
;
/**
* @ClassName OpRegionalEconomicDataYearsListDto
* @Description 获取年份
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public
class
OpRegionalEconomicDataYearsListDto
{
private
Integer
year
;
}
dsk-common/src/main/java/com/dsk/common/dtos/SpecialBondInformationDetailsDto.java
0 → 100644
View file @
4cad5044
package
com
.
dsk
.
common
.
dtos
;
import
lombok.Data
;
import
javax.validation.constraints.NotNull
;
/**
* @ClassName SpecialBondInformationDetailsDto
* @Description 专项债-详情
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public
class
SpecialBondInformationDetailsDto
{
/**
* 专项债券唯一标识
*/
@NotNull
(
message
=
"id 不能为空"
)
private
Integer
id
;
}
dsk-common/src/main/java/com/dsk/common/utils/DateUtils.java
View file @
4cad5044
...
...
@@ -188,4 +188,17 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
ZonedDateTime
zdt
=
localDateTime
.
atZone
(
ZoneId
.
systemDefault
());
return
Date
.
from
(
zdt
.
toInstant
());
}
/***
*@Description: 获取当前年份
*@Param:
*@return: int
*@Author: Dgm
*@date: 2023/5/29 16:05
*/
public
static
int
getYear
()
{
LocalDate
localDate
=
LocalDate
.
now
();
int
year
=
localDate
.
getYear
();
return
year
;
}
}
dsk-common/src/main/java/com/dsk/common/utils/file/FileUtils.java
View file @
4cad5044
...
...
@@ -7,13 +7,20 @@ import java.io.FileOutputStream;
import
java.io.IOException
;
import
java.io.OutputStream
;
import
java.io.UnsupportedEncodingException
;
import
java.net.HttpURLConnection
;
import
java.net.URL
;
import
java.net.URLEncoder
;
import
java.nio.charset.StandardCharsets
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.zip.ZipEntry
;
import
java.util.zip.ZipInputStream
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
com.dsk.common.utils.DateUtils
;
import
com.dsk.common.utils.StringUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.io.IOUtils
;
import
org.apache.commons.lang3.ArrayUtils
;
import
com.dsk.common.config.RuoYiConfig
;
...
...
@@ -25,10 +32,51 @@ import org.apache.commons.io.FilenameUtils;
*
* @author dsk
*/
@Slf4j
public
class
FileUtils
{
public
static
String
FILENAME_PATTERN
=
"[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+"
;
/**
* 检查目录是否存在,如果不存在,则创建目录,如果创建失败则返回false
*
* @param path 文件夹路径
* @return boolean
*/
public
static
boolean
newFolder
(
String
path
)
{
File
file
=
new
File
(
path
);
if
(!
file
.
exists
())
{
boolean
isSuccess
=
file
.
mkdir
();
if
(!
isSuccess
)
file
.
mkdirs
();
return
!
isSuccess
;
}
else
{
return
true
;
}
}
/**
*
*
* @param folderPath 文件夹路径
* @return 文件夹路径
*/
public
static
String
newFolder1
(
String
folderPath
)
{
String
filePath
=
folderPath
;
try
{
File
myFilePath
=
new
File
(
filePath
);
if
(!
myFilePath
.
exists
())
{
myFilePath
.
mkdirs
();
}
}
catch
(
Exception
e
)
{
log
.
error
(
"创建文件夹失败"
);
filePath
=
""
;
e
.
printStackTrace
();
}
return
filePath
;
}
/**
* 输出指定文件的byte数组
*
...
...
@@ -104,12 +152,12 @@ public class FileUtils
return
FileUploadUtils
.
getPathFileName
(
uploadDir
,
pathName
);
}
/**
/* */
/**
* 删除文件
*
* @param filePath 文件
* @return
*/
*/
/*
public static boolean deleteFile(String filePath)
{
boolean flag = false;
...
...
@@ -120,8 +168,171 @@ public class FileUtils
flag = file.delete();
}
return flag;
}*/
/**
* 删除整个文件夹或者文某个文件
*
* @param filePath 文件
* @return
*/
public
static
boolean
deleteFile
(
String
filePath
)
{
try
{
if
(
StringUtils
.
isNotEmpty
(
delAllFile
(
filePath
)))
return
false
;
File
file
=
new
File
(
filePath
);
return
file
.
delete
();
}
catch
(
Exception
e
)
{
log
.
info
(
"删除文件失败"
);
e
.
printStackTrace
();
return
false
;
}
}
/**
* 文件夹过滤
*
* @param path 文件夹路径
*/
public
static
String
delAllFile
(
String
path
)
{
String
hint
=
"这是一个根目录,请更换目录!"
;
File
file
=
new
File
(
path
);
if
(!
file
.
exists
())
{
return
hint
;
}
// if (!file.isDirectory()) {
// return false;
// }
if
(
file
.
getAbsolutePath
().
equalsIgnoreCase
(
"/"
))
{
return
hint
;
}
if
(
file
.
getAbsolutePath
().
equalsIgnoreCase
(
"/root"
))
{
return
hint
;
}
if
(
file
.
getAbsolutePath
().
equalsIgnoreCase
(
"/usr"
)
||
file
.
getAbsolutePath
().
equalsIgnoreCase
(
"/opt"
)
||
file
.
getAbsolutePath
().
equalsIgnoreCase
(
"/bin"
)
||
file
.
getAbsolutePath
().
equalsIgnoreCase
(
"/sbin"
)
||
file
.
getAbsolutePath
().
equalsIgnoreCase
(
"/etc"
)
||
file
.
getAbsolutePath
().
equalsIgnoreCase
(
"/selinux"
)
||
file
.
getAbsolutePath
().
equalsIgnoreCase
(
"/sys"
)
||
file
.
getAbsolutePath
().
equalsIgnoreCase
(
"/var"
)
||
file
.
getAbsolutePath
().
equalsIgnoreCase
(
"/home"
)
||
file
.
getAbsolutePath
().
equalsIgnoreCase
(
"/net"
))
{
return
hint
;
}
if
(
file
.
getAbsolutePath
().
equalsIgnoreCase
(
"C://"
)
||
file
.
getAbsolutePath
().
equalsIgnoreCase
(
"C:\\\\"
))
{
return
hint
;
}
return
""
;
}
/**
* 获取文件夹中所有文件
* @param filePath 全路径
* @return
*/
public
static
List
<
String
>
getAllFiles
(
String
filePath
)
{
List
<
String
>
fileList
=
new
ArrayList
<
String
>();
File
file
=
new
File
(
filePath
);
if
(!
file
.
exists
())
{
return
fileList
;
}
if
(!
file
.
isDirectory
())
{
return
fileList
;
}
// 获取当前目录下的文件和文件夹
File
[]
files
=
file
.
listFiles
();
if
(
files
!=
null
)
{
for
(
File
directory
:
files
)
{
// 如果是文件夹则递归调用此方法
if
(
directory
.
isDirectory
())
{
fileList
.
add
(
directory
.
getPath
());
getAllFiles
(
directory
.
getPath
());
}
else
{
// 如果是文件则直接输出路径
fileList
.
add
(
directory
.
getPath
());
}
}
return
fileList
;
}
return
fileList
;
}
/**
* 获取文件夹中的所有文件,不包括文件夹
*
* @param path 文件夹路径
* @return List<File>
*/
public
static
List
<
File
>
getAllFileNames
(
String
path
)
{
List
<
File
>
fileList
=
new
ArrayList
<
File
>();
File
file
=
new
File
(
path
);
if
(!
file
.
exists
())
{
return
fileList
;
}
if
(!
file
.
isDirectory
())
{
return
fileList
;
}
String
[]
tempList
=
file
.
list
();
File
tempFile
;
for
(
String
fileName
:
tempList
)
{
if
(
path
.
endsWith
(
File
.
separator
))
{
tempFile
=
new
File
(
path
+
fileName
);
}
else
{
tempFile
=
new
File
(
path
+
File
.
separator
+
fileName
);
}
if
(
tempFile
.
isFile
())
{
fileList
.
add
(
tempFile
);
}
if
(
tempFile
.
isDirectory
())
{
List
<
File
>
allFiles
=
getAllFileNames
(
tempFile
.
getAbsolutePath
());
fileList
.
addAll
(
allFiles
);
}
}
return
fileList
;
}
/**
* 下载文件
*
* @param url 要下载的文件链接
* @param targetFolder 目标文件
* @throws IOException
*/
public
static
void
downloadFolder
(
String
url
,
String
targetFolder
)
throws
IOException
{
URL
downloadUrl
=
new
URL
(
url
);
HttpURLConnection
connection
=
(
HttpURLConnection
)
downloadUrl
.
openConnection
();
connection
.
setRequestMethod
(
"GET"
);
connection
.
connect
();
if
(
connection
.
getResponseCode
()
!=
HttpURLConnection
.
HTTP_OK
)
{
throw
new
RuntimeException
(
"下载文件夹失败: "
+
connection
.
getResponseMessage
());
}
try
(
ZipInputStream
zipInputStream
=
new
ZipInputStream
(
connection
.
getInputStream
()))
{
ZipEntry
entry
;
while
((
entry
=
zipInputStream
.
getNextEntry
())
!=
null
)
{
String
entryName
=
entry
.
getName
();
if
(
StringUtils
.
isBlank
(
entryName
))
{
continue
;
}
File
entryFile
=
new
File
(
targetFolder
,
entryName
);
if
(
entry
.
isDirectory
())
{
entryFile
.
mkdirs
();
}
else
{
File
parent
=
entryFile
.
getParentFile
();
if
(!
parent
.
exists
())
{
parent
.
mkdirs
();
}
try
(
FileOutputStream
outputStream
=
new
FileOutputStream
(
entryFile
))
{
IOUtils
.
copy
(
zipInputStream
,
outputStream
);
}
}
}
}
}
/**
* 文件名称验证
*
...
...
dsk-framework/src/main/java/com/dsk/framework/config/SecurityConfig.java
View file @
4cad5044
...
...
@@ -111,7 +111,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
// 过滤请求
.
authorizeRequests
()
// 对于登录login 注册register 验证码captchaImage 允许匿名访问
.
antMatchers
(
"/login"
,
"/register"
,
"/captchaImage"
).
permitAll
()
.
antMatchers
(
"/login"
,
"/register"
,
"/captchaImage"
,
"/economic/**"
,
"/enterprises/**"
,
"/specialPurposeBonds/**"
,
"/urbanInvestment/**"
).
permitAll
()
// 静态资源,可匿名访问
.
antMatchers
(
HttpMethod
.
GET
,
"/"
,
"/*.html"
,
"/**/*.html"
,
"/**/*.css"
,
"/**/*.js"
,
"/profile/**"
).
permitAll
()
.
antMatchers
(
"/swagger-ui.html"
,
"/swagger-resources/**"
,
"/webjars/**"
,
"/*/api-docs"
,
"/druid/**"
).
permitAll
()
...
...
dsk-framework/src/main/java/com/dsk/framework/web/service/SysLoginService.java
View file @
4cad5044
...
...
@@ -64,7 +64,7 @@ public class SysLoginService
public
String
login
(
String
username
,
String
password
,
String
code
,
String
uuid
)
{
// 验证码校验
validateCaptcha
(
username
,
code
,
uuid
);
//
validateCaptcha(username, code, uuid);
// 登录前置校验
loginPreCheck
(
username
,
password
);
// 用户验证
...
...
dsk-operate-ui/src/api/detail/party-a/dealings.js
0 → 100644
View file @
4cad5044
import
request
from
"@/utils/request"
;
// 客户信息列表
export
function
clientPage
(
data
)
{
return
request
({
url
:
'/enterpriseBussiness/clientPage'
,
method
:
'post'
,
data
:
data
})
}
// 客户项目列表
export
function
clientProjectPage
(
data
)
{
return
request
({
url
:
'/enterpriseBussiness/clientProjectPage'
,
method
:
'post'
,
data
:
data
})
}
// 供应商列表
export
function
supplierPage
(
data
)
{
return
request
({
url
:
'/enterpriseBussiness/supplierPage'
,
method
:
'post'
,
data
:
data
})
}
// 供应商项目列表
export
function
supplierProjectPage
(
data
)
{
return
request
({
url
:
'/enterpriseBussiness/supplierProjectPage'
,
method
:
'post'
,
data
:
data
})
}
// 招标-常合作代理机构列表
export
function
oftenAgencyPage
(
data
)
{
return
request
({
url
:
'/enterpriseBussiness/oftenAgencyPage'
,
method
:
'post'
,
data
:
data
})
}
// 招标-合作明细列表
export
function
bidCooperatePage
(
data
)
{
return
request
({
url
:
'/enterpriseBussiness/bidCooperatePage'
,
method
:
'post'
,
data
:
data
})
}
// 历史发包列表
export
function
historySendPage
(
data
)
{
return
request
({
url
:
'/enterpriseBussiness/historySendPage'
,
method
:
'post'
,
data
:
data
})
}
// 历史发包省份
export
function
historySendProvince
(
data
)
{
return
request
({
url
:
'/enterpriseBussiness/historySendProvince'
,
method
:
'post'
,
data
:
data
})
}
// 投标记录列表
export
function
tenderPage
(
data
)
{
return
request
({
url
:
'/enterpriseBussiness/tenderPage'
,
method
:
'post'
,
data
:
data
})
}
dsk-operate-ui/src/api/detail/party-a/financial.js
View file @
4cad5044
import
request
from
"@/utils/request"
;
//
获取页面数据
export
function
getList
(
data
)
{
//
财务简析
export
function
financial
(
data
)
{
return
request
({
url
:
'/getInfo'
,
method
:
'get'
url
:
'/enterprise/financial'
,
method
:
'post'
,
data
:
data
})
}
dsk-operate-ui/src/api/detail/party-a/opport.js
View file @
4cad5044
import
request
from
"@/utils/request"
;
//
获取查询下拉选项
export
function
getOption
(
)
{
//
招标公告列表
export
function
bidNoticePage
(
data
)
{
return
request
({
url
:
'/getInfo'
,
method
:
'get'
url
:
'/enterpriseProject/bidNoticePage'
,
method
:
'post'
,
data
:
data
})
}
//
获取列表数据
export
function
getList
(
data
)
{
//
招标公告招标类别
export
function
bidNoticeTenderStage
(
data
)
{
return
request
({
url
:
'/getInfo'
,
method
:
'get'
url
:
'/enterpriseProject/bidNoticeTenderStage'
,
method
:
'post'
,
data
:
data
})
}
// 招标公告地区
export
function
bidNoticeArea
(
data
)
{
return
request
({
url
:
'/enterpriseProject/bidNoticeArea'
,
method
:
'post'
,
data
:
data
})
}
// 土地交易列表
export
function
landTransactionPage
(
data
)
{
return
request
({
url
:
'/enterpriseProject/landTransactionPage'
,
method
:
'post'
,
data
:
data
})
}
// 土地交易用途
export
function
landUse
(
data
)
{
return
request
({
url
:
'/enterpriseProject/landUse'
,
method
:
'post'
,
data
:
data
})
}
// 拟建项目列表
export
function
approvalProjectPage
(
data
)
{
return
request
({
url
:
'/enterpriseProject/approvalProjectPage'
,
method
:
'post'
,
data
:
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
({
url
:
'/enterpriseProject/bidNoticeProPage'
,
method
:
'post'
,
data
:
data
})
}
// 标讯PRO招标公告项目类别
export
function
bidNoticeProProjectType
(
data
)
{
return
request
({
url
:
'/enterpriseProject/bidNoticeProProjectType'
,
method
:
'post'
,
data
:
data
})
}
// 标讯PRO招标公告工程类别
export
function
bidNoticeProProjectPurposes
(
data
)
{
return
request
({
url
:
'/enterpriseProject/bidNoticeProProjectPurposes'
,
method
:
'post'
,
data
:
data
})
}
// 标讯PRO招标公告评标办法
export
function
bidNoticeProAssessmentWay
(
data
)
{
return
request
({
url
:
'/enterpriseProject/bidNoticeProAssessmentWay'
,
method
:
'post'
,
data
:
data
})
}
// 行政许可列表
export
function
creditXzxkPage
(
data
)
{
return
request
({
url
:
'/enterpriseProject/creditXzxkPage'
,
method
:
'post'
,
data
:
data
})
}
// 专项债项目列表
export
function
specialDebtProjectPage
(
data
)
{
return
request
({
url
:
'/enterpriseProject/specialDebtProjectPage'
,
method
:
'post'
,
data
:
data
})
}
// 专项债列表
export
function
specialDebtPage
(
data
)
{
return
request
({
url
:
'/enterpriseProject/specialDebtPage'
,
method
:
'post'
,
data
:
data
})
}
dsk-operate-ui/src/api/detail/party-a/overview.js
View file @
4cad5044
import
request
from
"@/utils/request"
;
//
获取查询下拉选项
export
function
getOption
(
)
{
//
甲方详情-公司概要
export
function
infoHeader
(
data
)
{
return
request
({
url
:
'/getInfo'
,
method
:
'get'
url
:
'/enterprise/infoHeader'
,
method
:
'post'
,
data
:
data
})
}
//
获取列表数据
export
function
getList
(
data
)
{
//
企业数据统计
export
function
statistic
(
data
)
{
return
request
({
url
:
'/getInfo'
,
method
:
'get'
url
:
'/enterprise/statistic'
,
method
:
'post'
,
data
:
data
})
}
// 招标偏好信息
export
function
bidDataGroup
(
data
)
{
return
request
({
url
:
'/enterprise/bidDataGroup'
,
method
:
'post'
,
data
:
data
})
}
// 供应商列表
export
function
supplierPage
(
data
)
{
return
request
({
url
:
'/enterpriseBussiness/supplierPage'
,
method
:
'post'
,
data
:
data
})
}
// 甲方业绩数据
export
function
projectTenderDataGroup
(
data
)
{
return
request
({
url
:
'/enterprise/projectTenderDataGroup'
,
method
:
'post'
,
data
:
data
})
}
// 关系企业-股东信息
export
function
yyy
(
data
)
{
return
request
({
url
:
'xxx'
,
method
:
'post'
,
data
:
data
})
}
// 关系企业-对外投资
export
function
testinvestment
(
data
)
{
return
request
({
url
:
'/enterprise/investment'
,
method
:
'post'
,
data
:
data
})
}
// 关系企业-分支机构
export
function
testaffiliates
(
data
)
{
return
request
({
url
:
'/enterprise/affiliates'
,
method
:
'post'
,
data
:
data
})
}
// 招标公告
export
function
bidNoticePage
(
data
)
{
return
request
({
url
:
'/enterpriseProject/bidNoticePage'
,
method
:
'post'
,
data
:
data
})
}
// 企业动态
export
function
dynamicPage
(
data
)
{
return
request
({
url
:
'/enterprise/dynamicPage'
,
method
:
'post'
,
data
:
data
})
}
// 工商基础信息
export
function
icInfo
(
data
)
{
return
request
({
url
:
'/enterprise/icInfo'
,
method
:
'post'
,
data
:
data
})
}
// 工商变更信息
export
function
changeInfo
(
data
)
{
return
request
({
url
:
'/enterprise/changeInfo'
,
method
:
'post'
,
data
:
data
})
}
// 工商股东信息列表
export
function
bestStockPage
(
data
)
{
return
request
({
url
:
'/enterprise/bestStockPage'
,
method
:
'post'
,
data
:
data
})
}
// 工商高管信息
export
function
keymembers
(
data
)
{
return
request
({
url
:
'/enterprise/keymembers'
,
method
:
'post'
,
data
:
data
})
}
// 工商对外投资
export
function
investment
(
data
)
{
return
request
({
url
:
'/enterprise/investment'
,
method
:
'post'
,
data
:
data
})
}
// 工商分支机构
export
function
affiliates
(
data
)
{
return
request
({
url
:
'/enterprise/affiliates'
,
method
:
'post'
,
data
:
data
})
}
dsk-operate-ui/src/api/project/project.js
View file @
4cad5044
...
...
@@ -44,6 +44,23 @@ export function editXMNR(param) {
data
:
param
})
}
//项目标签新增
export
function
addLabel
(
param
)
{
return
request
({
url
:
'/business/label/add'
,
method
:
'POST'
,
data
:
param
})
}
//项目标签删除
export
function
removeLabel
(
param
)
{
return
request
({
url
:
'/business/label/remove'
,
method
:
'POST'
,
data
:
param
})
}
//查询项目联系人
export
function
getLXR
(
param
)
{
...
...
@@ -124,3 +141,20 @@ export function editGZDB(param) {
data
:
param
})
}
//查询相关企业
export
function
getXGQY
(
param
)
{
return
request
({
url
:
'/business/company/list'
,
method
:
'GET'
,
params
:
param
})
}
//新增相关企业
export
function
addXGQY
(
param
)
{
return
request
({
url
:
'/business/company/add'
,
method
:
'POST'
,
data
:
param
})
}
dsk-operate-ui/src/assets/images/detail/ico_pdf.png
0 → 100644
View file @
4cad5044
517 Bytes
dsk-operate-ui/src/assets/images/detail/ico_title.png
0 → 100644
View file @
4cad5044
848 Bytes
dsk-operate-ui/src/views/detail/party-a/component/CustomMoneySelect.vue
0 → 100644
View file @
4cad5044
<
template
>
<div
:ref=
"refStr"
class=
"custom-money-select screen-popper"
id=
"custom-money-select"
>
<div
:class=
"['input-block', isSelectOption?'rote':'']"
>
<div
class=
"block"
@
click=
"isSelectOption=!isSelectOption"
@
mouseenter=
"handleMouseenter"
@
mouseleave=
"handleMouseleave"
>
<el-input
class=
"custom-money-input"
v-model=
"value"
:placeholder=
"placeholder"
readonly
>
<template
slot=
"suffix"
>
<span
@
click
.
stop=
"handleClear"
:class=
"[isClear&&isHover?'el-icon-circle-close':'el-icon-arrow-down']"
></span>
</
template
>
</el-input>
</div>
<div
class=
"options-block"
v-if=
"isSelectOption"
>
<div
class=
"arrow"
></div>
<div
@
click=
"handleClick(option)"
:class=
"['option', value==option?'active':'']"
:key=
"i"
v-for=
"(option, i) in options"
>
<
template
v-if=
"option == '自定义'"
>
<div
class=
"number-box"
>
<input
type=
"number"
v-model=
"startMoney"
class=
"number-input"
clearable
>
至
<input
v-model=
"endMoney"
class=
"number-input"
type=
"text"
clearable
>
万元
<el-button
@
click
.
stop=
"handleConfirm"
class=
"number-button"
type=
"primary"
>
确定
</el-button>
</div>
</
template
>
<
template
v-else
>
<span>
{{
option
}}
</span>
<span
v-if=
"value==option"
class=
"el-icon-check"
></span>
</
template
>
</div>
</div>
</div>
</div>
</template>
<
script
>
export
default
{
props
:
{
'placeholder'
:
{
type
:
String
,
default
:
'请选择'
},
'ref-str'
:
{
type
:
String
,
default
:
`timeselect
${
String
(
Math
.
random
(
0
,
100
)).
slice
(
2
)}
`
,
},
permissions
:
{
//文本权限相关字段
type
:
Array
,
default
:
()
=>
{},
},
powerLabel
:
{
type
:
String
,
default
:
''
},
moneyList
:
{
type
:
Array
,
default
:
()
=>
[],
}
},
computed
:
{
isClear
()
{
if
(
!
this
.
isSelectOption
&&
this
.
value
)
{
return
true
}
else
{
return
false
}
}
},
data
()
{
return
{
value
:
''
,
options
:
[
'一亿以上'
,
'5000万-1亿'
,
'1000万-5000万'
,
'1000万以下'
,
'自定义'
],
isSelectOption
:
false
,
startMoney
:
''
,
endMoney
:
''
,
isHover
:
false
}
},
mounted
()
{
this
.
handleAppClick
()
if
(
this
.
moneyList
&&
this
.
moneyList
.
length
>
0
){
this
.
options
=
this
.
moneyList
}
},
destroyed
()
{
const
app
=
document
.
getElementById
(
'app'
)
app
.
removeEventListener
(
'click'
,
()
=>
{},
true
)
},
methods
:
{
// 判断是否点击的为组件内部
handleAppClick
()
{
const
app
=
document
.
getElementById
(
'app'
)
app
.
addEventListener
(
'click'
,
(
e
)
=>
{
const
dom
=
this
.
$refs
[
this
.
refStr
]
const
flag
=
dom
&&
dom
.
contains
(
e
.
target
)
// const flag = document.getElementById('custom-money-select').contains(e.target)
!
flag
?
this
.
isSelectOption
=
false
:
''
if
(
this
.
value
==
'自定义'
&&
!
this
.
startMoney
&&
!
this
.
endMoney
)
{
this
.
value
=
''
this
.
$emit
(
'input'
,
''
)
this
.
$emit
(
'handle-search'
)
}
},
true
)
},
// 清除
handleClear
()
{
if
(
this
.
isClear
&&
this
.
isHover
)
{
this
.
value
=
''
this
.
startMoney
=
''
this
.
endMoney
=
''
this
.
$emit
(
'input'
,
''
)
this
.
$emit
(
'handle-search'
)
}
else
{
this
.
isSelectOption
=
true
}
},
// 鼠标移入后的回调
handleMouseenter
()
{
this
.
isHover
=
true
},
// 鼠标离开后的回调
handleMouseleave
()
{
this
.
isHover
=
false
},
// 选项点击后的回调
handleClick
(
value
)
{
this
.
value
=
value
let
moneyStr
=
''
if
(
value
==
'自定义'
)
{
this
.
value
=
'自定义'
}
else
{
this
.
startMoney
=
''
this
.
endMoney
=
''
this
.
isSelectOption
=
false
switch
(
value
)
{
case
'一亿以上'
:
moneyStr
=
[
10000
]
break
;
case
'5000万-1亿'
:
moneyStr
=
[
5000
,
10000
]
break
;
case
'1000万-5000万'
:
moneyStr
=
[
1000
,
5000
]
break
;
case
'10亿以上'
:
moneyStr
=
[
100000
]
break
;
case
'1亿-10亿'
:
moneyStr
=
[
10000
,
100000
]
break
;
case
'2000万-1亿'
:
moneyStr
=
[
2000
,
10000
]
break
;
case
'400万-2000万'
:
moneyStr
=
[
400
,
2000
]
break
;
case
'400万以下'
:
moneyStr
=
[,
400
]
break
;
default
:
moneyStr
=
[,
1000
]
break
;
}
this
.
$emit
(
'input'
,
moneyStr
)
this
.
$emit
(
'handle-search'
)
}
},
// 自定义确认点击后的回调
handleConfirm
()
{
this
.
isSelectOption
=
false
if
(
!
this
.
startMoney
&&
!
this
.
endMoney
)
{
this
.
value
=
''
this
.
$emit
(
'input'
,
''
)
}
else
{
if
(
this
.
endMoney
&&
this
.
startMoney
)
{
this
.
value
=
`
${
this
.
startMoney
}
-
${
this
.
endMoney
}
万`
}
else
{
if
(
this
.
startMoney
)
{
this
.
value
=
`大于等于
${
this
.
startMoney
}
万`
}
if
(
this
.
endMoney
)
{
this
.
value
=
`小于等于
${
this
.
endMoney
}
万`
}
}
let
moneyStr
=
[
this
.
startMoney
,
this
.
endMoney
]
this
.
$emit
(
'input'
,
moneyStr
)
}
this
.
$emit
(
'handle-search'
)
}
}
}
</
script
>
<
style
lang=
"scss"
>
.custom-money-select
{
width
:
120px
;
height
:
34px
;
position
:
relative
;
.input-block
{
margin
:
0
;
width
:
100%
;
height
:
100%
;
cursor
:
pointer
;
.block
{
width
:
100%
;
height
:
100%
;
>
.custom-money-input.el-input
{
width
:
100%
;
height
:
100%
;
>
input
{
width
:
100%
;
height
:
100%
;
overflow
:
hidden
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
border-radius
:
2px
;
}
}
}
.el-input__suffix
{
transform
:
rotateZ
(
0
);
width
:
25px
;
height
:
100%
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
}
&
.rote
{
.el-input__suffix
{
transform
:
rotateZ
(
180deg
);
}
}
}
.options-block
{
position
:
absolute
;
margin-top
:
12px
;
min-width
:
120px
;
font-size
:
14px
;
color
:
#666666
;
background-color
:
#fff
;
border
:
1px
solid
#E4E7ED
;
padding
:
6px
0
;
border-radius
:
4px
;
z-index
:
9
;
// .arrow {
// position: absolute;
// width: 0;
// height: 0;
// top: -12px;
// left: 35px;
// border: 6px solid transparent;
// border-bottom-color: #E4E7ED;
// &::after {
// position: absolute;
// display: inline-block;
// left: -4px;
// top: -2px;
// content: '';
// width: 0;
// height: 0;
// border: 4px solid transparent;
// border-bottom-color: #fff;
// z-index: 9;
// }
// }
.option
{
padding
:
0
24px
0
16px
;
box-sizing
:
border-box
;
width
:
400px
;
height
:
36px
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
.number-box
{
display
:
flex
;
align-items
:
center
;
>
span
{
margin
:
0
10px
;
}
.number-input
{
padding
:
0
24px
0
10px
;
width
:
100px
!
important
;
height
:
30px
;
line-height
:
30px
;
border
:
none
;
overflow
:
hidden
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
width
:
206px
;
border
:
1px
solid
#DCDCDC
;
border-radius
:
2px
;
&
:
:-
webkit-outer-spin-button
,
&::-
webkit-inner-spin-button
{
-webkit-appearance
:
none
;
}
&
[
type
=
"number"
]
{
-moz-appearance
:
textfield
;
}
}
.number-button
{
padding
:
0
;
width
:
60px
;
height
:
30px
;
line-height
:
30px
;
margin-left
:
10px
;
}
}
>
span
{
display
:
inline-block
;
}
&
.active
{
background-color
:
#F2F7FF
;
color
:
#0381FA
;
}
&
:hover
{
background-color
:
#F5F7FA
;
}
}
}
.number-input
{
padding
:
0
24px
0
10px
;
width
:
60px
!
important
;
height
:
30px
;
line-height
:
30px
;
border
:
none
;
overflow
:
hidden
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
width
:
206px
;
border
:
1px
solid
#DCDCDC
;
border-radius
:
2px
;
&
:
:-
webkit-outer-spin-button
,
&::-
webkit-inner-spin-button
{
-webkit-appearance
:
none
;
}
&
[
type
=
"number"
]
{
-moz-appearance
:
textfield
;
}
}
.number-button
{
padding
:
0
;
width
:
60px
;
height
:
30px
;
line-height
:
30px
;
margin-left
:
10px
;
}
}
</
style
>
dsk-operate-ui/src/views/detail/party-a/component/CustomTimeSelect.vue
0 → 100644
View file @
4cad5044
<
template
>
<div
:ref=
"refStr"
class=
"custom-time-select screen-popper"
id=
"custom-time-select"
>
<div
:class=
"['input-block', isSelectOption?'rote':'']"
>
<div
class=
"block"
@
click=
"isSelectOption=!isSelectOption"
@
mouseenter=
"handleMouseenter"
@
mouseleave=
"handleMouseleave"
>
<el-input
class=
"custom-time-input"
v-model=
"value"
:placeholder=
"placeholder"
readonly
>
<template
slot=
"suffix"
>
<span
@
click
.
stop=
"handleClear"
:class=
"[isClear&&isHover?'el-icon-circle-close':'el-icon-arrow-down']"
></span>
</
template
>
</el-input>
</div>
<div
class=
"options-block"
v-if=
"isSelectOption"
>
<div
class=
"arrow"
></div>
<div
@
click=
"handleClick(option)"
:class=
"['option', value==option?'active':'']"
:key=
"i"
v-for=
"(option, i) in options"
>
<
template
v-if=
"option == '自定义'"
>
<div
style=
"position: relative"
>
自定义
<el-date-picker
ref=
"picker"
:default-value=
"defaultValue"
style=
"position: absolute;opacity: 0;"
v-model=
"pickerValue"
type=
"daterange"
range-separator=
"至"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
value-format=
"yyyy-MM-dd"
:picker-options=
"pickerOptions"
@
change=
"changePicker"
>
</el-date-picker>
</div>
</
template
>
<
template
v-else
>
<span>
{{
option
}}
</span>
<span
v-if=
"value==option"
class=
"el-icon-check"
></span>
</
template
>
</div>
</div>
</div>
<div
v-if=
"isSelectOption"
class=
"picker-block"
ref=
"picker-block"
></div>
</div>
</template>
<
script
>
export
default
{
props
:
{
'placeholder'
:
{
type
:
String
,
default
:
'请选择'
,
},
'ref-str'
:
{
type
:
String
,
default
:
`timeselect
${
String
(
Math
.
random
(
0
,
100
)).
slice
(
2
)}
`
,
},
dateFrom
:
{
type
:
String
,
default
:
''
},
dateTo
:
{
type
:
String
,
default
:
''
}
},
computed
:
{
isClear
()
{
if
(
!
this
.
isSelectOption
&&
this
.
value
)
{
return
true
}
else
{
return
false
}
},
pickerOptions
()
{
// 用计算属性
let
_this
=
this
// 此时 this指向的就是vue实例
return
{
disabledDate
(
time
)
{
if
(
_this
.
dateFrom
){
return
time
.
getTime
()
<
new
Date
(
_this
.
dateFrom
.
replace
(
/-/g
,
'/'
)).
getTime
()
-
8.64e6
;
//如果没有后面的-8.64e6就是不可以选择今天的
}
if
(
_this
.
dateTo
){
return
time
.
getTime
()
>
new
Date
(
_this
.
dateTo
.
replace
(
/-/g
,
'/'
)).
getTime
();
//如果没有后面的-8.64e7就是不可以选择今天的
}
}
}
},
},
watch
:
{
refStr
(
refStr
)
{
return
refStr
}
},
data
()
{
return
{
value
:
''
,
options
:
[
'近1年'
,
'近2年'
,
'近3年'
,
'近5年'
,
'自定义'
,],
isSelectOption
:
false
,
isHover
:
false
,
pickerValue
:
[],
defaultValue
:
new
Date
()
}
},
mounted
()
{
if
(
this
.
dateTo
){
this
.
defaultValue
=
new
Date
(
this
.
dateTo
)
}
this
.
handleAppClick
()
},
methods
:
{
// 时间格式化
formatDate
(
timeStr
)
{
let
date
=
new
Date
(
Number
(
timeStr
))
let
year
=
date
.
getFullYear
()
let
month
=
String
(
date
.
getMonth
()
+
1
).
padStart
(
2
,
0
)
let
day
=
String
(
date
.
getDate
()).
padStart
(
2
,
0
)
return
`
${
year
}
-
${
month
}
-
${
day
}
`
},
// 判断是否点击的为组件内部
handleAppClick
()
{
const
app
=
document
.
getElementById
(
'app'
)
app
.
addEventListener
(
'click'
,
(
e
)
=>
{
const
dom
=
this
.
$refs
[
this
.
refStr
]
const
flag
=
dom
&&
dom
.
contains
(
e
.
target
)
// const flag = document.getElementById('custom-time-select').contains(e.target)
!
flag
?
this
.
isSelectOption
=
false
:
''
if
(
this
.
value
==
'自定义'
&&
(
!
this
.
pickerValue
||
!
this
.
pickerValue
.
length
))
{
this
.
value
=
''
this
.
$emit
(
'input'
,
''
)
this
.
$emit
(
'handle-search'
)
}
},
true
)
},
handleMouseenter
()
{
this
.
isHover
=
true
},
handleMouseleave
()
{
this
.
isHover
=
false
},
handleClear
()
{
if
(
this
.
isClear
&&
this
.
isHover
)
{
this
.
value
=
''
this
.
pickerValue
=
[]
this
.
$emit
(
'input'
,
''
)
this
.
$emit
(
'handle-search'
)
}
else
{
this
.
isSelectOption
=
true
}
},
handleClick
(
value
)
{
this
.
value
=
value
if
(
value
==
'自定义'
)
{
this
.
value
=
'自定义'
this
.
$refs
.
picker
&&
this
.
$refs
.
picker
.
length
&&
this
.
$refs
.
picker
[
0
].
focus
()
this
.
$nextTick
(()
=>
{
this
.
$refs
[
'picker-block'
].
appendChild
(
this
.
$refs
.
picker
[
0
].
popperElm
)
})
}
else
{
this
.
pickerValue
=
[]
this
.
isSelectOption
=
false
let
timeStr
=
[]
let
startTime
=
''
let
endTime
=
new
Date
()
switch
(
value
)
{
case
'近1年'
:
startTime
=
new
Date
().
setFullYear
(
new
Date
().
getFullYear
()
-
1
)
if
(
this
.
dateTo
){
startTime
=
new
Date
(
this
.
dateTo
).
setFullYear
(
new
Date
(
this
.
dateTo
).
getFullYear
()
-
1
)
}
timeStr
=
[
this
.
formatDate
(
startTime
),
this
.
formatDate
(
endTime
)]
break
;
case
'近2年'
:
startTime
=
new
Date
().
setFullYear
(
new
Date
().
getFullYear
()
-
2
)
if
(
this
.
dateTo
){
startTime
=
new
Date
(
this
.
dateTo
).
setFullYear
(
new
Date
(
this
.
dateTo
).
getFullYear
()
-
2
)
}
timeStr
=
[
this
.
formatDate
(
startTime
),
this
.
formatDate
(
endTime
)]
break
;
case
'近3年'
:
startTime
=
new
Date
().
setFullYear
(
new
Date
().
getFullYear
()
-
3
)
if
(
this
.
dateTo
){
startTime
=
new
Date
(
this
.
dateTo
).
setFullYear
(
new
Date
(
this
.
dateTo
).
getFullYear
()
-
3
)
}
timeStr
=
[
this
.
formatDate
(
startTime
),
this
.
formatDate
(
endTime
)]
break
;
case
'近5年'
:
startTime
=
new
Date
().
setFullYear
(
new
Date
().
getFullYear
()
-
5
)
if
(
this
.
dateTo
){
startTime
=
new
Date
(
this
.
dateTo
).
setFullYear
(
new
Date
(
this
.
dateTo
).
getFullYear
()
-
5
)
}
timeStr
=
[
this
.
formatDate
(
startTime
),
this
.
formatDate
(
endTime
)]
break
;
default
:
if
(
this
.
pickerValue
&&
this
.
pickerValue
.
length
)
{
timeStr
=
this
.
pickerValue
}
else
{
timeStr
=
[]
this
.
value
=
''
}
break
;
}
this
.
$emit
(
'input'
,
timeStr
)
this
.
$emit
(
'handle-search'
)
}
},
// 时间选择改变后的回调
changePicker
(
value
)
{
this
.
isSelectOption
=
false
if
(
value
&&
value
.
length
)
{
// this.value = '自定义'
this
.
value
=
String
(
this
.
pickerValue
)
this
.
$emit
(
'input'
,
this
.
pickerValue
)
}
else
{
this
.
value
=
''
this
.
$emit
(
'input'
,
''
)
}
this
.
$emit
(
'handle-search'
)
}
}
}
</
script
>
<
style
lang=
"scss"
>
.custom-time-select
{
width
:
120px
;
height
:
34px
;
.input-block
{
width
:
100%
;
height
:
100%
;
margin
:
0
;
cursor
:
pointer
;
.block
{
width
:
100%
;
height
:
100%
;
>
.custom-time-input.el-input
{
width
:
100%
;
height
:
100%
;
>
input
{
width
:
100%
;
height
:
100%
;
overflow
:
hidden
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
border-radius
:
2px
;
}
}
}
.el-input__suffix
{
transform
:
rotateZ
(
0
);
width
:
25px
;
height
:
100%
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
}
&
.rote
{
.el-input__suffix
{
transform
:
rotateZ
(
180deg
);
}
}
}
.options-block
{
position
:
absolute
;
margin-top
:
12px
;
min-width
:
120px
;
font-size
:
14px
;
color
:
#666666
;
background-color
:
#fff
;
border
:
1px
solid
#E4E7ED
;
padding
:
6px
0
;
border-radius
:
4px
;
z-index
:
9
;
.option
{
padding
:
0
24px
0
16px
;
box-sizing
:
border-box
;
height
:
36px
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
>
span
{
display
:
inline-block
;
}
&
.active
{
background-color
:
#F2F7FF
;
color
:
#0381FA
;
}
&
:hover
{
background-color
:
#F5F7FA
;
}
}
}
.picker-block
{
position
:
relative
;
&
:
:
after
{
content
:
""
;
display
:block
;
visibility
:hidden
;
clear
:both
;
}
.el-picker-panel.el-date-range-picker.el-popper
{
left
:
0
!
important
;
top
:
205px
!
important
;
}
.popper__arrow
{
left
:
30px
!
important
;
}
}
}
</
style
>
dsk-operate-ui/src/views/detail/party-a/component/HeadDetailForm.vue
0 → 100644
View file @
4cad5044
<
template
>
<div
class=
"headForm"
>
<div
class=
"flex-box query-box"
>
<div
class=
"flex-box query-params"
>
<div
class=
"flex-box headForm-text"
>
<img
v-if=
"title"
src=
"@/assets/images/detail/ico_title.png"
/>
<span
class=
"drawer-title"
v-if=
"title"
>
{{
title
}}
</span>
<template
v-if=
"slots"
>
<slot
name=
"slot"
></slot>
</
template
>
<div
v-else
>
<span
class=
"ability-total"
v-if=
"isTotal"
>
{{ total }}条数据
</span>
<span
class=
"ability-total"
v-if=
"amountTotal"
>
,共计合作总金额:
<i>
{{ amountTotal }}
</i>
万元
</span>
</div>
</div>
<div
class=
"headForm-from"
>
<div
class=
"from-item"
:key=
"i"
v-for=
"(form, i) in formData"
>
<!-- 单选 -->
<
template
v-if=
"form.type==1"
>
<el-select
v-model=
"form.value"
clearable
class=
"form-content-width"
style=
"max-width: 110px"
:placeholder=
"form.placeholder"
@
change=
"changeSelect"
>
<el-option
v-for=
"(item, index) in form.options"
:key=
"index"
:label=
"item.name"
:value=
"item.value"
/>
</el-select>
</
template
>
<!-- 年月日 -->
<
template
v-if=
"form.type==2"
>
<el-date-picker
@
change=
"changeSelect"
class=
"fromTime"
style=
"width: 210px"
v-model=
"form.value"
type=
"daterange"
prefix-icon=
"fromTime-icon"
value-format=
"yyyy-MM-dd"
range-separator=
"至"
start-placeholder=
"开始月份"
end-placeholder=
"结束月份"
>
</el-date-picker>
</
template
>
<!-- 输入框 -->
<
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>
</div>
</
template
>
<!-- 多选 -->
<
template
v-if=
"form.type==4"
>
<el-select
class=
"form-content-width"
v-model=
"form.value"
multiple
collapse-tags
clearable
style=
"max-width: 170px"
:placeholder=
"form.placeholder"
@
change=
"changeSelect"
>
<el-option
v-for=
"(item, index) in form.options"
:key=
"index"
:label=
"item.name"
:value=
"item.value"
/>
</el-select>
</
template
>
<!-- 自定义 -->
<
template
v-if=
"form.type==0"
>
<slot
name=
"slot"
></slot>
</
template
>
</div>
</div>
</div>
</div>
</div>
</template>
<
script
>
export
default
{
name
:
"HeadDetailForm"
,
props
:
{
title
:
{
type
:
String
,
default
:
''
},
queryParams
:
{
type
:
Object
,
default
:
{}
},
formData
:
{
type
:
Array
,
default
:
[]
},
isTotal
:
{
type
:
Boolean
,
default
:
true
},
total
:
{
type
:
Number
,
default
:
0
},
amountTotal
:
{
type
:
Number
,
default
:
0
},
slots
:
{
type
:
Boolean
,
default
:
false
}
},
data
()
{
return
{
}
},
methods
:
{
changeSelect
(){
this
.
$emit
(
'handle-search'
)
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.headForm
{
.query-params
{
width
:
100%
;
padding
:
8px
17px
8px
13px
;
justify-content
:
space-between
;
border-bottom
:
1px
solid
#E1E1E1
;
}
::v-deep
.el-input__inner
{
border
:
1px
solid
#EFEFEF
;
height
:
32px
;
line-height
:
32px
;
}
::v-deep
.el-form-item
{
margin-right
:
8px
!
important
;
}
::v-deep
.el-input--medium
.el-input__icon
{
line-height
:
32px
;
}
.headForm-text
{
img
{
width
:
17px
;
height
:
17px
;
margin-right
:
8px
;
}
.drawer-title
{
font-size
:
16px
;
color
:
#232323
;
font-weight
:
bold
;
margin-right
:
4px
;
}
.ability-total
{
font-size
:
12px
;
color
:
rgba
(
35
,
35
,
35
,
0
.8
);
position
:
relative
;
i
{
color
:
#FF3C3C
;
}
}
}
.headForm-from
{
display
:
flex
;
.from-item
{
margin-right
:
8px
;
&
:last-child
{
margin-right
:
0
;
}
.cooperate-name
{
display
:
flex
;
span
{
width
:
60px
;
height
:
32px
;
line-height
:
32px
;
font-size
:
14px
;
background
:
#F5F5F5
;
text-align
:
center
;
color
:
#0081FF
;
border
:
1px
solid
#EFEFEF
;
border-left
:
0
;
cursor
:
pointer
;
}
::v-deep
.el-input
{
flex
:
1
;
}
::v-deep
.el-input__inner
{
border-right
:
0
;
border-radius
:
2px
0
2px
0
;
width
:
259px
;
}
}
.fromTime
{
::v-deep
.el-range-input
{
width
:
100%
;
}
::v-deep
.el-range-separator
,
::v-deep
.el-range__close-icon
{
line-height
:
24px
;
width
:
20px
;
}
}
.fromTime-icon
{
display
:
none
;
}
}
::v-deep
.form-content-width
{
width
:
170px
;
}
}
}
</
style
>
dsk-operate-ui/src/views/detail/party-a/component/HeadForm.vue
View file @
4cad5044
...
...
@@ -53,6 +53,23 @@
<el-option
v-for=
"(item, index) in form.options"
:key=
"index"
:label=
"item.name"
:value=
"item.value"
/>
</el-select>
</
template
>
<!-- 时间、自定义 -->
<
template
v-else-if=
"form.type==5"
>
<custom-time-select
v-model=
"form.value"
:placeholder=
"form.placeholder"
:dateFrom=
"form.dateFrom ? form.dateFrom : ''"
:dateTo=
"form.dateTo ? form.dateTo : ''"
@
handle-search=
"changeSelect"
/>
</
template
>
<!-- 金额 -->
<
template
v-else-if=
"form.type==6"
>
<custom-money-select
:moneyList=
"form.moneyList"
v-model=
"form.value"
:placeholder=
"form.placeholder"
@
handle-search=
"changeSelect"
/>
</
template
>
<!-- 自定义 -->
<
template
v-if=
"form.type==0"
>
<slot
name=
"slot"
></slot>
...
...
@@ -74,6 +91,8 @@
</template>
<
script
>
import
CustomTimeSelect
from
'./CustomTimeSelect'
import
CustomMoneySelect
from
'./CustomMoneySelect'
export
default
{
name
:
"HeadForm"
,
props
:
{
...
...
@@ -111,6 +130,10 @@ export default {
}
},
components
:
{
CustomTimeSelect
,
CustomMoneySelect
},
methods
:
{
changeSelect
(){
this
.
$emit
(
'handle-search'
)
...
...
dsk-operate-ui/src/views/detail/party-a/component/Sidebar.vue
View file @
4cad5044
...
...
@@ -59,11 +59,11 @@ export default {
{
title
:
'行政许可'
,
pathName
:
'administrative'
}
]},
{
title
:
'业务往来'
,
pathName
:
''
,
children
:
[
{
title
:
'客户'
,
pathName
:
''
},
{
title
:
'供应商'
,
pathName
:
''
},
{
title
:
'招标代理'
,
pathName
:
''
},
{
title
:
'历史发包'
,
pathName
:
''
},
{
title
:
'开标记录'
,
pathName
:
''
}
{
title
:
'客户'
,
pathName
:
'
custom
'
},
{
title
:
'供应商'
,
pathName
:
'
supplier
'
},
{
title
:
'招标代理'
,
pathName
:
'
bidagency
'
},
{
title
:
'历史发包'
,
pathName
:
'
hiscontract
'
},
{
title
:
'开标记录'
,
pathName
:
'
bidrecords
'
}
]},
{
title
:
'城投分析'
,
pathName
:
''
,
children
:
[
{
title
:
'区域经济'
,
pathName
:
'regionalEconomies'
},
...
...
dsk-operate-ui/src/views/detail/party-a/component/Tables.vue
View file @
4cad5044
...
...
@@ -25,7 +25,7 @@
:prop=
"item.prop"
:width=
"item.width"
:min-width=
"item.minWidth"
align=
"left
"
:align=
"item.align?item.align:'left'
"
:fixed=
"item.fixed"
:sortable=
"item.sortable"
:resizable=
"false"
>
...
...
@@ -35,7 +35,7 @@
<
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
]
}}
{{
scope
.
row
[
item
.
prop
]
||
'--'
}}
</span>
</
template
>
</el-table-column>
...
...
dsk-operate-ui/src/views/detail/party-a/dealings/bidagency.vue
0 → 100644
View file @
4cad5044
<
template
>
<div
class=
"detail-container"
>
<head-form
title=
"常合作招标代理单位"
: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"
@
sort-change=
"sortChange"
>
<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=
"projectInfo"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.projectInfo.bid&&scope.row.projectInfo.dealTitle"
v-html=
"scope.row.projectInfo.dealTitle"
></router-link>
<div
v-else
v-html=
"scope.row.projectInfo.dealTitle || '--'"
></div>
<div
v-if=
"scope.row.count>1"
@
click=
"handleClick($event, scope.row)"
style=
"color: #FF7E38;cursor: pointer;"
>
有
{{
scope
.
row
.
count
}}
个合作项目/工程 >
</div>
</
template
>
</tables>
<client-detail
v-if=
"isDetails"
:data=
"rowData"
:title=
"'合作项目/工程明细'"
@
cancel=
"isDetails=false"
/>
</div>
</template>
<
script
>
import
mixin
from
'../mixins/mixin'
import
{
oftenAgencyPage
}
from
'@/api/detail/party-a/dealings'
import
ClientDetail
from
'./component/bidagencyDetail'
export
default
{
name
:
'Bidagency'
,
props
:
[
'companyId'
],
mixins
:
[
mixin
],
components
:
{
ClientDetail
},
data
()
{
return
{
queryParams
:
{
cid
:
this
.
companyId
,
sort
:
3
,
pageNum
:
1
,
pageSize
:
10
},
forData
:
[
{
label
:
'招标代理单位名称'
,
prop
:
'agency'
,
minWidth
:
'350'
,
slot
:
true
},
{
label
:
'合作项目/工程名称'
,
prop
:
'projectInfo'
,
minWidth
:
'400'
,
sortable
:
'custom'
,
slot
:
true
},
{
label
:
'最近一次合作时间'
,
prop
:
'issueTime'
,
minWidth
:
'140'
,
sortable
:
'custom'
}
],
formData
:
[
{
type
:
3
,
fieldName
:
'keys'
,
value
:
''
,
placeholder
:
'输入企业名称查询'
,
options
:
[]},
],
//列表
tableLoading
:
false
,
tableData
:[],
tableDataTotal
:
0
,
isDetails
:
false
,
rowData
:
{}
}
},
computed
:
{
},
created
()
{
this
.
handleQuery
()
},
methods
:
{
async
handleQuery
(
params
)
{
this
.
tableLoading
=
true
let
param
=
params
?
params
:
this
.
queryParams
let
res
=
await
oftenAgencyPage
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
){
this
.
tableData
=
res
.
rows
.
map
((
item
)
=>
{
item
.
projectInfo
=
typeof
item
.
projectInfo
==
'string'
?
JSON
.
parse
(
item
.
projectInfo
)
:
item
.
projectInfo
return
item
})
}
this
.
tableDataTotal
=
res
.
total
},
handleClick
(
e
,
data
)
{
this
.
rowData
=
data
this
.
isDetails
=
true
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.detail-container
{
background
:
#ffffff
;
border-radius
:
4px
;
padding
:
16px
;
}
</
style
>
dsk-operate-ui/src/views/detail/party-a/dealings/bidrecords.vue
0 → 100644
View file @
4cad5044
<
template
>
<div
class=
"detail-container"
>
<head-form
title=
"开标记录"
: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=
"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>
</
template
>
<
template
slot=
"source"
slot-scope=
"scope"
>
<span
class=
"a-link"
v-if=
"scope.row.url&&scope.row.source"
@
click=
"handlePic(scope.row.url)"
style=
"cursor: pointer;"
>
{{
scope
.
row
.
source
}}
</span>
<div
v-else
>
{{
scope
.
row
.
source
||
'--'
}}
</div>
</
template
>
</tables>
</div>
</template>
<
script
>
import
mixin
from
'../mixins/mixin'
import
{
tenderPage
}
from
'@/api/detail/party-a/dealings'
export
default
{
name
:
'Bidrecords'
,
props
:
[
'companyId'
],
mixins
:
[
mixin
],
components
:
{
},
data
()
{
return
{
queryParams
:
{
cid
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
10
},
forData
:
[
{
label
:
'项目名称'
,
prop
:
'name'
,
minWidth
:
'320'
,
slot
:
true
},
{
label
:
'本企业投标报价(万元)'
,
prop
:
'tenderOffer'
,
minWidth
:
'160'
},
{
label
:
'发布日期'
,
prop
:
'publishTime'
,
minWidth
:
'100'
},
{
label
:
'项目地区'
,
prop
:
'province'
,
minWidth
:
'160'
},
{
label
:
'信息来源'
,
prop
:
'source'
,
minWidth
:
'280'
,
slot
:
true
}
],
formData
:
[
{
type
:
3
,
fieldName
:
'keys'
,
value
:
''
,
placeholder
:
'输入项目名称查询'
,
options
:
[]},
],
//列表
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
tenderPage
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
){
this
.
tableData
=
res
.
rows
}
this
.
tableDataTotal
=
res
.
total
},
handlePic
(
url
){
window
.
open
(
url
,
"_blank"
)
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.detail-container
{
background
:
#ffffff
;
border-radius
:
4px
;
padding
:
16px
;
}
</
style
>
dsk-operate-ui/src/views/detail/party-a/dealings/component/bidagencyDetail.vue
0 → 100644
View file @
4cad5044
<
template
>
<div
class=
"client-details"
>
<el-drawer
:visible
.
sync=
"drawer"
size=
"60%"
custom-class=
"client-drawer"
:with-header=
"false"
@
closed=
"cancel"
>
<head-detail-form
:title=
"title"
:form-data=
"formData"
:query-params=
"queryParams"
:total=
"tableDataTotal"
:amountTotal=
"amountTotal"
@
handle-search=
"handleSearch"
/>
<tables
:indexFixed=
"true"
:tableLoading=
"tableLoading"
:tableData=
"tableData"
:forData=
"forData"
:tableDataTotal=
"tableDataTotal"
:queryParams=
"queryParams"
@
handle-current-change=
"handleCurrentChange"
style=
"margin: 12px;"
>
<template
slot=
"dealTitle"
slot-scope=
"scope"
>
<div
class=
"flex-box"
>
<img
class=
"tip-img"
src=
"@/assets/images/detail/ico_pdf.png"
v-if=
"scope.row.fileUrlL"
@
click=
"handlePic(scope.row.fileUrlL)"
/>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.bid&&scope.row.dealTitle"
v-html=
"scope.row.dealTitle"
></router-link>
<span
v-else
v-html=
"scope.row.dealTitle || '--'"
></span>
</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
>
<
/el-drawer
>
<
/div
>
<
/template
>
<
script
>
import
mixin
from
'../../mixins/mixin'
import
{
bidCooperatePage
}
from
'@/api/detail/party-a/dealings'
import
HeadDetailForm
from
"../../component/HeadDetailForm"
export
default
{
props
:
{
'data'
:
{
type
:
Object
,
default
:
()
=>
{
return
{
}
}
}
,
'title'
:
{
type
:
String
,
default
:
()
=>
{
return
''
}
}
}
,
components
:
{
HeadDetailForm
}
,
mixins
:
[
mixin
],
data
()
{
return
{
drawer
:
false
,
queryParams
:
{
tendereeId
:
this
.
data
.
tendereeId
,
agencyId
:
this
.
data
.
agencyId
,
pageNum
:
1
,
pageSize
:
10
}
,
formData
:
[
{
type
:
3
,
fieldName
:
'keys'
,
value
:
''
,
placeholder
:
'输入企业名称查询'
,
options
:
[]
}
,
],
forData
:
[
{
label
:
'合作项目/工程名称'
,
prop
:
'dealTitle'
,
width
:
'720'
,
slot
:
true
}
,
{
label
:
'项目/工程金额(万元)'
,
prop
:
'projectAmount'
,
width
:
'160'
}
,
{
label
:
'合作时间'
,
prop
:
'issueTime'
,
width
:
'100'
}
,
{
label
:
'项目地区'
,
prop
:
'province'
,
width
:
'160'
,
slot
:
true
}
,
{
label
:
'项目类型'
,
prop
:
'projectCategory'
,
width
:
'130'
}
],
//列表
tableLoading
:
false
,
tableData
:[],
tableDataTotal
:
0
,
amountTotal
:
0
}
}
,
created
()
{
this
.
drawer
=
true
this
.
handleQuery
()
}
,
methods
:
{
async
handleQuery
(
params
)
{
this
.
tableLoading
=
true
let
param
=
params
?
params
:
this
.
queryParams
let
res
=
await
bidCooperatePage
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
){
this
.
tableData
=
res
.
rows
}
this
.
tableDataTotal
=
res
.
total
this
.
amountTotal
=
res
.
totalAmount
}
,
handlePic
(
url
){
window
.
open
(
url
,
"_blank"
)
}
,
cancel
()
{
this
.
$emit
(
'cancel'
)
}
}
}
<
/script
>
<
style
lang
=
"scss"
scoped
>
.
client
-
details
{
::
v
-
deep
.
client
-
drawer
{
background
:
#
FFFFFF
;
}
}
<
/style
>
dsk-operate-ui/src/views/detail/party-a/dealings/component/customDetail.vue
0 → 100644
View file @
4cad5044
<
template
>
<div
class=
"client-details"
>
<el-drawer
:visible
.
sync=
"drawer"
size=
"60%"
custom-class=
"client-drawer"
:with-header=
"false"
@
closed=
"cancel"
>
<head-detail-form
:title=
"title"
:form-data=
"formData"
:query-params=
"queryParams"
:total=
"tableDataTotal"
:amountTotal=
"amountTotal"
@
handle-search=
"handleSearch"
/>
<tables
:indexFixed=
"true"
:tableLoading=
"tableLoading"
:tableData=
"tableData"
:forData=
"forData"
:tableDataTotal=
"tableDataTotal"
:queryParams=
"queryParams"
@
handle-current-change=
"handleCurrentChange"
style=
"margin: 12px;"
>
<template
slot=
"projectAllName"
slot-scope=
"scope"
>
<div
class=
"flex-box"
>
<img
class=
"tip-img"
src=
"@/assets/images/detail/ico_pdf.png"
v-if=
"scope.row.sourceUrl"
@
click=
"handlePic(scope.row.sourceUrl)"
/>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.id&&scope.row.projectAllName"
v-html=
"scope.row.projectAllName"
></router-link>
<span
v-else
v-html=
"scope.row.projectAllName || '--'"
></span>
</div>
</
template
>
<
template
slot=
"province"
slot-scope=
"scope"
>
{{
scope
.
row
.
province
}}{{
`${scope.row.city?'-'+scope.row.city:''
}
`
}}
<
/template
>
<
/tables
>
<
/el-drawer
>
<
/div
>
<
/template
>
<
script
>
import
mixin
from
'../../mixins/mixin'
import
{
clientProjectPage
}
from
'@/api/detail/party-a/dealings'
import
HeadDetailForm
from
"../../component/HeadDetailForm"
export
default
{
props
:
{
'data'
:
{
type
:
Object
,
default
:
()
=>
{
return
{
}
}
}
,
'company-id'
:
{
type
:
Number
,
default
:
()
=>
{
return
0
}
}
,
'title'
:
{
type
:
String
,
default
:
()
=>
{
return
''
}
}
}
,
components
:
{
HeadDetailForm
}
,
mixins
:
[
mixin
],
data
()
{
return
{
drawer
:
false
,
queryParams
:
{
cid
:
this
.
companyId
,
unitId
:
this
.
data
.
projectUnitId
,
pageNum
:
1
,
pageSize
:
10
}
,
formData
:
[
{
type
:
3
,
fieldName
:
'keys'
,
value
:
''
,
placeholder
:
'输入企业名称查询'
,
options
:
[]
}
,
],
forData
:
[
{
label
:
'合作项目/工程名称'
,
prop
:
'projectAllName'
,
width
:
'720'
,
slot
:
true
}
,
{
label
:
'项目/工程金额(万元)'
,
prop
:
'winBidAmount'
,
width
:
'160'
}
,
{
label
:
'合作时间'
,
prop
:
'winBidTime'
,
width
:
'100'
}
,
{
label
:
'项目地区'
,
prop
:
'province'
,
width
:
'160'
,
slot
:
true
}
,
{
label
:
'项目类型'
,
prop
:
'boundType'
,
width
:
'130'
}
,
{
label
:
'工期(天)'
,
prop
:
'period'
,
width
:
'90'
}
,
{
label
:
'下浮率'
,
prop
:
'lowerRate'
,
width
:
'90'
}
],
//列表
tableLoading
:
false
,
tableData
:[],
tableDataTotal
:
0
,
amountTotal
:
0
}
}
,
created
()
{
this
.
drawer
=
true
this
.
handleQuery
()
}
,
methods
:
{
async
handleQuery
(
params
)
{
this
.
tableLoading
=
true
let
param
=
params
?
params
:
this
.
queryParams
let
res
=
await
clientProjectPage
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
){
this
.
tableData
=
res
.
rows
}
this
.
tableDataTotal
=
res
.
total
this
.
amountTotal
=
res
.
totalAmount
}
,
handlePic
(
url
){
window
.
open
(
url
,
"_blank"
)
}
,
cancel
()
{
this
.
$emit
(
'cancel'
)
}
}
}
<
/script
>
<
style
lang
=
"scss"
scoped
>
.
client
-
details
{
::
v
-
deep
.
client
-
drawer
{
background
:
#
FFFFFF
;
}
.
tip
-
img
{
width
:
14
px
;
height
:
14
px
;
margin
-
right
:
4
px
;
cursor
:
pointer
;
}
}
<
/style
>
dsk-operate-ui/src/views/detail/party-a/dealings/component/supplierDetail.vue
0 → 100644
View file @
4cad5044
<
template
>
<div
class=
"client-details"
>
<el-drawer
:visible
.
sync=
"drawer"
size=
"60%"
custom-class=
"client-drawer"
:with-header=
"false"
@
closed=
"cancel"
>
<head-detail-form
:title=
"title"
:form-data=
"formData"
:query-params=
"queryParams"
:total=
"tableDataTotal"
:amountTotal=
"amountTotal"
@
handle-search=
"handleSearch"
/>
<tables
:indexFixed=
"true"
:tableLoading=
"tableLoading"
:tableData=
"tableData"
:forData=
"forData"
:tableDataTotal=
"tableDataTotal"
:queryParams=
"queryParams"
@
handle-current-change=
"handleCurrentChange"
style=
"margin: 12px;"
>
<template
slot=
"projectAllName"
slot-scope=
"scope"
>
<div
class=
"flex-box"
>
<img
class=
"tip-img"
src=
"@/assets/images/detail/ico_pdf.png"
v-if=
"scope.row.sourceUrl"
@
click=
"handlePic(scope.row.sourceUrl)"
/>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.id&&scope.row.projectAllName"
v-html=
"scope.row.projectAllName"
></router-link>
<span
v-else
v-html=
"scope.row.projectAllName || '--'"
></span>
</div>
</
template
>
<
template
slot=
"province"
slot-scope=
"scope"
>
{{
scope
.
row
.
province
}}{{
`${scope.row.city?'-'+scope.row.city:''
}
`
}}
<
/template
>
<
/tables
>
<
/el-drawer
>
<
/div
>
<
/template
>
<
script
>
import
mixin
from
'../../mixins/mixin'
import
{
supplierProjectPage
}
from
'@/api/detail/party-a/dealings'
import
HeadDetailForm
from
"../../component/HeadDetailForm"
export
default
{
props
:
{
'data'
:
{
type
:
Object
,
default
:
()
=>
{
return
{
}
}
}
,
'company-id'
:
{
type
:
Number
,
default
:
()
=>
{
return
0
}
}
,
'title'
:
{
type
:
String
,
default
:
()
=>
{
return
''
}
}
}
,
components
:
{
HeadDetailForm
}
,
mixins
:
[
mixin
],
data
()
{
return
{
drawer
:
false
,
queryParams
:
{
cid
:
this
.
data
.
companyId
,
unitId
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
10
}
,
formData
:
[
{
type
:
3
,
fieldName
:
'keys'
,
value
:
''
,
placeholder
:
'输入企业名称查询'
,
options
:
[]
}
,
],
forData
:
[
{
label
:
'合作项目/工程名称'
,
prop
:
'projectAllName'
,
width
:
'720'
,
slot
:
true
}
,
{
label
:
'项目/工程金额(万元)'
,
prop
:
'winBidAmount'
,
width
:
'160'
}
,
{
label
:
'合作时间'
,
prop
:
'winBidTime'
,
width
:
'100'
}
,
{
label
:
'项目地区'
,
prop
:
'province'
,
width
:
'160'
,
slot
:
true
}
,
{
label
:
'项目类型'
,
prop
:
'boundType'
,
width
:
'130'
}
,
{
label
:
'工期(天)'
,
prop
:
'period'
,
width
:
'90'
}
,
{
label
:
'下浮率'
,
prop
:
'lowerRate'
,
width
:
'90'
}
],
//列表
tableLoading
:
false
,
tableData
:[],
tableDataTotal
:
0
,
amountTotal
:
0
}
}
,
created
()
{
this
.
drawer
=
true
this
.
handleQuery
()
}
,
methods
:
{
async
handleQuery
(
params
)
{
this
.
tableLoading
=
true
let
param
=
params
?
params
:
this
.
queryParams
let
res
=
await
supplierProjectPage
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
){
this
.
tableData
=
res
.
rows
}
this
.
tableDataTotal
=
res
.
total
this
.
amountTotal
=
res
.
totalAmount
}
,
handlePic
(
url
){
window
.
open
(
url
,
"_blank"
)
}
,
cancel
()
{
this
.
$emit
(
'cancel'
)
}
}
}
<
/script
>
<
style
lang
=
"scss"
scoped
>
.
client
-
details
{
::
v
-
deep
.
client
-
drawer
{
background
:
#
FFFFFF
;
}
.
tip
-
img
{
width
:
14
px
;
height
:
14
px
;
margin
-
right
:
4
px
;
cursor
:
pointer
;
}
}
<
/style
>
dsk-operate-ui/src/views/detail/party-a/dealings/custom.vue
0 → 100644
View file @
4cad5044
<
template
>
<div
class=
"detail-container"
>
<head-form
title=
"客户"
: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"
@
sort-change=
"sortChange"
>
<template
slot=
"companyName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.companyId&&scope.row.companyName"
v-html=
"scope.row.companyName"
></router-link>
<div
v-else
v-html=
"scope.row.companyName || '--'"
></div>
</
template
>
<
template
slot=
"projectAllName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.projectId&&scope.row.projectAllName"
v-html=
"scope.row.projectAllName"
></router-link>
<div
v-else
v-html=
"scope.row.projectAllName || '--'"
></div>
<div
v-if=
"scope.row.count>1"
@
click=
"handleClick($event, scope.row)"
style=
"color: #FF7E38;cursor: pointer;"
>
有
{{
scope
.
row
.
count
}}
个合作项目/工程 >
</div>
</
template
>
</tables>
<client-detail
v-if=
"isDetails"
:data=
"rowData"
:title=
"'合作项目/工程明细'"
:company-id=
"companyId"
@
cancel=
"isDetails=false"
/>
</div>
</template>
<
script
>
import
mixin
from
'../mixins/mixin'
import
{
clientPage
}
from
'@/api/detail/party-a/dealings'
import
ClientDetail
from
'./component/customDetail'
export
default
{
name
:
'Custom'
,
props
:
[
'companyId'
],
mixins
:
[
mixin
],
components
:
{
ClientDetail
},
data
()
{
return
{
queryParams
:
{
cid
:
this
.
companyId
,
sort
:
3
,
pageNum
:
1
,
pageSize
:
10
},
forData
:
[
{
label
:
'客户名称'
,
prop
:
'companyName'
,
minWidth
:
'350'
,
slot
:
true
},
{
label
:
'合作项目/工程名称'
,
prop
:
'projectAllName'
,
minWidth
:
'400'
,
sortable
:
'custom'
,
slot
:
true
},
{
label
:
'合作总金额(万元)'
,
prop
:
'amount'
,
minWidth
:
'150'
,
sortable
:
'custom'
},
{
label
:
'最近一次合作时间'
,
prop
:
'time'
,
minWidth
:
'140'
,
sortable
:
'custom'
}
],
formData
:
[
{
type
:
3
,
fieldName
:
'keys'
,
value
:
''
,
placeholder
:
'输入企业名称查询'
,
options
:
[]},
],
//列表
tableLoading
:
false
,
tableData
:[],
tableDataTotal
:
0
,
isDetails
:
false
,
rowData
:
{}
}
},
computed
:
{
},
created
()
{
this
.
handleQuery
()
},
methods
:
{
async
handleQuery
(
params
)
{
this
.
tableLoading
=
true
let
param
=
params
?
params
:
this
.
queryParams
let
res
=
await
clientPage
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
){
this
.
tableData
=
res
.
rows
}
this
.
tableDataTotal
=
res
.
total
},
//排序-测试
sortChange
(
e
){
this
.
tableData
=
[]
let
sortRule
=
e
.
prop
+
','
+
e
.
order
switch
(
sortRule
){
case
'amount,descending'
:
this
.
queryParams
.
sort
=
1
break
case
'amount,ascending'
:
this
.
queryParams
.
sort
=
2
break
case
'time,descending'
:
this
.
queryParams
.
sort
=
3
break
case
'time,ascending'
:
this
.
queryParams
.
sort
=
4
break
case
'projectAllName,descending'
:
this
.
queryParams
.
sort
=
5
break
case
'projectAllName,ascending'
:
this
.
queryParams
.
sort
=
6
break
}
this
.
handleSearch
()
},
handleClick
(
e
,
data
)
{
this
.
rowData
=
data
this
.
isDetails
=
true
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.detail-container
{
background
:
#ffffff
;
border-radius
:
4px
;
padding
:
16px
;
}
</
style
>
dsk-operate-ui/src/views/detail/party-a/dealings/hiscontract.vue
0 → 100644
View file @
4cad5044
<
template
>
<div
class=
"detail-container"
>
<head-form
title=
"历史发包"
: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"
@
sort-change=
"sortChange"
>
<template
slot=
"projectAllName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.id&&scope.row.projectAllName "
>
{{
scope
.
row
.
projectAllName
}}
</router-link>
<div
v-else
>
{{
scope
.
row
.
projectAllName
||
'--'
}}
</div>
</
template
>
<
template
slot=
"companyName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.companyId&&scope.row.companyName"
>
{{
scope
.
row
.
companyName
}}
</router-link>
<div
v-else
>
{{
scope
.
row
.
companyName
||
'--'
}}
</div>
</
template
>
</tables>
</div>
</template>
<
script
>
import
mixin
from
'../mixins/mixin'
import
{
historySendProvince
,
historySendPage
}
from
'@/api/detail/party-a/dealings'
export
default
{
name
:
'Hiscontract'
,
props
:
[
'companyId'
],
mixins
:
[
mixin
],
components
:
{
},
data
()
{
return
{
queryParams
:
{
cid
:
this
.
companyId
,
sort
:
3
,
pageNum
:
1
,
pageSize
:
10
},
forData
:
[
{
label
:
'项目名称'
,
prop
:
'projectAllName'
,
minWidth
:
'560'
,
slot
:
true
},
{
label
:
'中标时间'
,
prop
:
'winBidTime'
,
minWidth
:
'100'
,
sortable
:
'custom'
},
{
label
:
'中标企业'
,
prop
:
'companyName'
,
minWidth
:
'320'
,
slot
:
true
},
{
label
:
'中标金额(万元)'
,
prop
:
'winBidAmount'
,
minWidth
:
'140'
,
sortable
:
'custom'
},
{
label
:
'下浮率(%)'
,
prop
:
'lowerRate'
,
minWidth
:
'120'
,
sortable
:
'custom'
},
{
label
:
'项目经理 / 负责人'
,
prop
:
'staffName'
,
minWidth
:
'130'
},
{
label
:
'中标地区'
,
prop
:
'region'
,
minWidth
:
'160'
},
{
label
:
'工期(天)'
,
prop
:
'period'
,
minWidth
:
'110'
,
sortable
:
'custom'
},
{
label
:
'业绩类别'
,
prop
:
'boundType'
,
minWidth
:
'110'
}
],
formData
:
[
{
type
:
1
,
fieldName
:
'provinceId'
,
value
:
''
,
placeholder
:
'项目地区'
,
options
:
[]
},
{
type
:
5
,
fieldName
:
'time'
,
value
:
''
,
placeholder
:
'中标时间'
,
startTime
:
'dateFrom'
,
endTime
:
'dateTo'
},
{
type
:
6
,
fieldName
:
'money'
,
value
:
''
,
placeholder
:
'中标金额'
,
startMoney
:
'amountMin'
,
endMoney
:
'amountMax'
},
{
type
:
3
,
fieldName
:
'keys'
,
value
:
''
,
placeholder
:
'输入关键词查询'
,
options
:
[]
}
],
//列表
tableLoading
:
false
,
tableData
:[],
tableDataTotal
:
0
}
},
computed
:
{
},
created
()
{
this
.
handleOption
()
this
.
handleQuery
()
},
methods
:
{
async
handleOption
(){
let
res
=
await
historySendProvince
({
cid
:
this
.
companyId
})
if
(
res
.
code
==
200
){
let
region
=
res
.
data
.
map
(
item
=>
{
let
it
=
{
name
:
item
.
province
+
'('
+
item
.
count
+
')'
,
value
:
item
.
provinceId
}
return
it
})
this
.
setFormData
(
'provinceId'
,
region
)
}
},
async
handleQuery
(
params
)
{
this
.
tableLoading
=
true
let
param
=
params
?
params
:
this
.
queryParams
let
res
=
await
historySendPage
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
){
this
.
tableData
=
res
.
rows
}
this
.
tableDataTotal
=
res
.
total
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.detail-container
{
background
:
#ffffff
;
border-radius
:
4px
;
padding
:
16px
;
}
</
style
>
dsk-operate-ui/src/views/detail/party-a/dealings/supplier.vue
0 → 100644
View file @
4cad5044
<
template
>
<div
class=
"detail-container"
>
<head-form
title=
"供应商"
: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"
@
sort-change=
"sortChange"
>
<template
slot=
"companyName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.companyId&&scope.row.companyName"
v-html=
"scope.row.companyName"
></router-link>
<div
v-else
v-html=
"scope.row.companyName || '--'"
></div>
</
template
>
<
template
slot=
"projectAllName"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.projectId&&scope.row.projectAllName"
v-html=
"scope.row.projectAllName"
></router-link>
<div
v-else
v-html=
"scope.row.projectAllName || '--'"
></div>
<div
v-if=
"scope.row.count>1"
@
click=
"handleClick($event, scope.row)"
style=
"color: #FF7E38;cursor: pointer;"
>
有
{{
scope
.
row
.
count
}}
个合作项目/工程 >
</div>
</
template
>
</tables>
<client-detail
v-if=
"isDetails"
:data=
"rowData"
:title=
"'合作项目/工程明细'"
:company-id=
"companyId"
@
cancel=
"isDetails=false"
/>
</div>
</template>
<
script
>
import
mixin
from
'../mixins/mixin'
import
{
supplierPage
}
from
'@/api/detail/party-a/dealings'
import
ClientDetail
from
'./component/supplierDetail'
export
default
{
name
:
'Supplier'
,
props
:
[
'companyId'
],
mixins
:
[
mixin
],
components
:
{
ClientDetail
},
data
()
{
return
{
queryParams
:
{
cid
:
this
.
companyId
,
sort
:
3
,
pageNum
:
1
,
pageSize
:
10
},
forData
:
[
{
label
:
'供应商'
,
prop
:
'companyName'
,
minWidth
:
'350'
,
slot
:
true
},
{
label
:
'合作项目/工程名称'
,
prop
:
'projectAllName'
,
minWidth
:
'400'
,
sortable
:
'custom'
,
slot
:
true
},
{
label
:
'合作总金额(万元)'
,
prop
:
'amount'
,
minWidth
:
'150'
,
sortable
:
'custom'
},
{
label
:
'最近一次合作时间'
,
prop
:
'time'
,
minWidth
:
'140'
,
sortable
:
'custom'
}
],
formData
:
[
{
type
:
3
,
fieldName
:
'keys'
,
value
:
''
,
placeholder
:
'输入企业名称查询'
,
options
:
[]},
],
//列表
tableLoading
:
false
,
tableData
:[],
tableDataTotal
:
0
,
isDetails
:
false
,
rowData
:
{}
}
},
computed
:
{
},
created
()
{
this
.
handleQuery
()
},
methods
:
{
async
handleQuery
(
params
)
{
this
.
tableLoading
=
true
let
param
=
params
?
params
:
this
.
queryParams
let
res
=
await
supplierPage
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
){
this
.
tableData
=
res
.
rows
}
this
.
tableDataTotal
=
res
.
total
},
handleClick
(
e
,
data
)
{
this
.
rowData
=
data
this
.
isDetails
=
true
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.detail-container
{
background
:
#ffffff
;
border-radius
:
4px
;
padding
:
16px
;
}
</
style
>
dsk-operate-ui/src/views/detail/party-a/index.vue
View file @
4cad5044
...
...
@@ -24,6 +24,12 @@
<Announcement
v-if=
"currentPath.pathName=='announcement'"
:company-id=
"companyId"
/>
<Tencent
v-if=
"currentPath.pathName=='tencent'"
:company-id=
"companyId"
/>
<Administrative
v-if=
"currentPath.pathName=='administrative'"
:company-id=
"companyId"
/>
<!-- 业务往来 -->
<Custom
v-if=
"currentPath.pathName=='custom'"
:company-id=
"companyId"
/>
<Supplier
v-if=
"currentPath.pathName=='supplier'"
:company-id=
"companyId"
/>
<Bidagency
v-if=
"currentPath.pathName=='bidagency'"
:company-id=
"companyId"
/>
<Hiscontract
v-if=
"currentPath.pathName=='hiscontract'"
:company-id=
"companyId"
/>
<Bidrecords
v-if=
"currentPath.pathName=='bidrecords'"
:company-id=
"companyId"
/>
<!-- 投诚分析 -->
<LandAcquisition
v-if=
"currentPath.pathName=='landAcquisition'"
:company-id=
"companyId"
/>
<RegionalEconomies
v-if=
"currentPath.pathName=='regionalEconomies'"
:company-id=
"companyId"
/>
...
...
@@ -70,6 +76,11 @@ import Biddingplan from "./opport/biddingplan" //项目商机-招标计划
import
Announcement
from
"./opport/announcement"
//项目商机-招标公告
import
Tencent
from
"./opport/tencent"
//项目商机-标讯Pro
import
Administrative
from
"./opport/administrative"
//项目商机-行政许可
import
Custom
from
"./dealings/custom"
//业务往来-客户
import
Supplier
from
"./dealings/supplier"
//业务往来-供应商
import
Bidagency
from
"./dealings/bidagency"
//业务往来-招标代理
import
Hiscontract
from
"./dealings/hiscontract"
//业务往来-历史发包
import
Bidrecords
from
"./dealings/bidrecords"
//业务往来-开标记录
import
LandAcquisition
from
"./urbanLnvestment/landAcquisition"
//投诚分析-城投拿地
import
RegionalEconomies
from
"./urbanLnvestment/regionalEconomies"
//投诚分析-区域经济
import
SameRegion
from
"./urbanLnvestment/sameRegion"
//投诚分析-同地区城投
...
...
@@ -104,6 +115,11 @@ export default {
Announcement
,
Tencent
,
Administrative
,
Custom
,
Supplier
,
Bidagency
,
Hiscontract
,
Bidrecords
,
LandAcquisition
,
RegionalEconomies
,
SameRegion
,
...
...
dsk-operate-ui/src/views/detail/party-a/mixins/mixin.js
View file @
4cad5044
...
...
@@ -30,6 +30,11 @@ export default {
condtion
[
item
.
endTime
]
=
item
.
value
[
1
];
return
}
if
(
item
.
fieldName
==
'money'
)
{
condtion
[
item
.
startMoney
]
=
item
.
value
[
0
];
condtion
[
item
.
endMoney
]
=
item
.
value
[
1
];
return
}
condtion
[
item
.
fieldName
]
=
item
.
value
}
})
...
...
dsk-operate-ui/src/views/detail/party-a/opport/administrative.vue
View file @
4cad5044
...
...
@@ -40,7 +40,7 @@ export default {
data
()
{
return
{
queryParams
:
{
c
ompanyI
d
:
this
.
companyId
,
c
i
d
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
10
},
...
...
dsk-operate-ui/src/views/detail/party-a/opport/announcement.vue
View file @
4cad5044
...
...
@@ -38,14 +38,14 @@ export default {
data
()
{
return
{
queryParams
:
{
c
ompanyI
d
:
this
.
companyId
,
c
i
d
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
10
},
forData
:
[
{
label
:
'项目名称'
,
prop
:
'porjectName'
,
minWidth
:
'300'
,
slot
:
true
},
{
label
:
'发布日期'
,
prop
:
'use'
,
sortable
:
true
,
width
:
'120'
},
{
label
:
'预算金额(万元)'
,
prop
:
'type'
,
sortable
:
true
,
width
:
'140'
},
{
label
:
'发布日期'
,
prop
:
'use'
,
sortable
:
'custom'
,
width
:
'120'
},
{
label
:
'预算金额(万元)'
,
prop
:
'type'
,
sortable
:
'custom'
,
width
:
'140'
},
{
label
:
'项目地区'
,
prop
:
'way'
,
width
:
'120'
},
{
label
:
'项目类别'
,
prop
:
'state'
,
width
:
'90'
},
{
label
:
'招采单位联系人'
,
prop
:
'money'
,
width
:
'110'
},
...
...
dsk-operate-ui/src/views/detail/party-a/opport/bond.vue
View file @
4cad5044
...
...
@@ -38,17 +38,17 @@ export default {
data
()
{
return
{
queryParams
:
{
c
ompanyI
d
:
this
.
companyId
,
c
i
d
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
10
},
forData
:
[
{
label
:
'项目名称'
,
prop
:
'porjectName'
,
minWidth
:
'300'
,
slot
:
true
},
{
label
:
'项目总投资(亿元)'
,
prop
:
'use'
,
sortable
:
true
,
width
:
'150'
},
{
label
:
'项目资本金(亿元)'
,
prop
:
'type'
,
sortable
:
true
,
width
:
'150'
},
{
label
:
'项目收益倍数(倍)'
,
prop
:
'way'
,
sortable
:
true
,
width
:
'150'
},
{
label
:
'专项债金额(亿元)'
,
prop
:
'state'
,
sortable
:
true
,
width
:
'150'
},
{
label
:
'专项债用作资本金(亿元)'
,
prop
:
'money'
,
sortable
:
true
,
width
:
'200'
}
{
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'
}
],
formData
:
[
{
type
:
3
,
fieldName
:
'keys'
,
value
:
''
,
placeholder
:
'输入项目名称关键词查询'
,
options
:
[]},
...
...
dsk-operate-ui/src/views/detail/party-a/opport/landtransaction.vue
View file @
4cad5044
...
...
@@ -38,7 +38,7 @@ export default {
data
()
{
return
{
queryParams
:
{
c
ompanyI
d
:
this
.
companyId
,
c
i
d
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
10
},
...
...
@@ -48,8 +48,8 @@ export default {
{
label
:
'行业分类'
,
prop
:
'type'
,
width
:
'100'
},
{
label
:
'供地方式'
,
prop
:
'way'
,
width
:
'100'
},
{
label
:
'土地坐落'
,
prop
:
'state'
,
width
:
'130'
},
{
label
:
'成交金额(万元)'
,
prop
:
'money'
,
sortable
:
true
,
width
:
'140'
},
{
label
:
'总面积(㎡)'
,
prop
:
'scale'
,
sortable
:
true
,
width
:
'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'
}
],
...
...
dsk-operate-ui/src/views/detail/party-a/opport/proposed.vue
View file @
4cad5044
...
...
@@ -38,16 +38,16 @@ export default {
data
()
{
return
{
queryParams
:
{
c
ompanyI
d
:
this
.
companyId
,
c
i
d
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
10
},
forData
:
[
{
label
:
'项目名称'
,
prop
:
'porjectName'
,
minWidth
:
'300'
,
slot
:
true
},
{
label
:
'成交金额(万元)'
,
prop
:
'use'
,
sortable
:
true
,
width
:
'150'
},
{
label
:
'成交金额(万元)'
,
prop
:
'use'
,
sortable
:
'custom'
,
width
:
'150'
},
{
label
:
'项目类别'
,
prop
:
'type'
,
width
:
'100'
},
{
label
:
'计划开工日期'
,
prop
:
'way'
,
sortable
:
true
,
width
:
'130'
},
{
label
:
'计划完工日期'
,
prop
:
'state'
,
sortable
:
true
,
width
:
'130'
},
{
label
:
'计划开工日期'
,
prop
:
'way'
,
sortable
:
'custom'
,
width
:
'130'
},
{
label
:
'计划完工日期'
,
prop
:
'state'
,
sortable
:
'custom'
,
width
:
'130'
},
{
label
:
'审批结果'
,
prop
:
'money'
,
width
:
'100'
},
{
label
:
'是否为民间推介项目'
,
prop
:
'scale'
,
width
:
'150'
}
],
...
...
dsk-operate-ui/src/views/detail/party-a/overview/branch.vue
View file @
4cad5044
...
...
@@ -38,7 +38,7 @@ export default {
data
()
{
return
{
queryParams
:
{
c
ompanyI
d
:
this
.
companyId
,
c
i
d
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
10
},
...
...
dsk-operate-ui/src/views/detail/party-a/overview/businfo.vue
View file @
4cad5044
...
...
@@ -35,7 +35,7 @@ export default {
return
{
activeName
:
'first'
,
queryParams
:
{
c
ompanyI
d
:
this
.
companyId
,
c
i
d
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
10
},
...
...
dsk-operate-ui/src/views/detail/party-a/overview/execuinfo.vue
View file @
4cad5044
...
...
@@ -27,7 +27,7 @@ export default {
data
()
{
return
{
queryParams
:
{
c
ompanyI
d
:
this
.
companyId
,
c
i
d
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
10
},
...
...
dsk-operate-ui/src/views/detail/party-a/overview/holderinfo.vue
View file @
4cad5044
...
...
@@ -40,7 +40,7 @@ export default {
return
{
activeName
:
'first'
,
queryParams
:
{
c
ompanyI
d
:
this
.
companyId
,
c
i
d
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
10
},
...
...
dsk-operate-ui/src/views/detail/party-a/overview/overseas.vue
View file @
4cad5044
...
...
@@ -47,7 +47,7 @@ export default {
data
()
{
return
{
queryParams
:
{
c
ompanyI
d
:
this
.
companyId
,
c
i
d
:
this
.
companyId
,
pageNum
:
1
,
pageSize
:
10
},
...
...
dsk-operate-ui/src/views/detail/party-b/index.vue
View file @
4cad5044
...
...
@@ -15,13 +15,13 @@ export default {
loading
:
false
,
// 是否加载中
iframeHight
:
window
.
innerHeight
,
// iframe高度
scrollTop
:
0
,
// 滚动条距离内部页面顶部距离
secret
i
d
:
''
// 需要携带的sdkId
secret
I
d
:
''
// 需要携带的sdkId
}
},
created
()
{
if
(
this
.
$route
.
query
.
companyId
)
{
// 获取companyId
this
.
loading
=
true
this
.
src
=
`https://pre-plug.jiansheku.com/enterprise/
${
this
.
$route
.
query
.
companyId
}
?secret
id=
${
this
.
secreti
d
}
`
this
.
src
=
`https://pre-plug.jiansheku.com/enterprise/
${
this
.
$route
.
query
.
companyId
}
?secret
Id=
${
this
.
secretI
d
}
`
}
},
mounted
()
{
...
...
dsk-operate-ui/src/views/project/projectList/component/jsnr.vue
View file @
4cad5044
...
...
@@ -251,8 +251,9 @@
param
.
id
=
this
.
id
editXMNR
(
param
).
then
(
result
=>
{
if
(
result
.
code
==
200
)
this
.
$message
.
success
(
'修改成功'
)
this
.
$message
.
success
(
'修改成功
!
'
)
else
{
this
.
$message
.
error
(
res
.
msg
)
this
.
getJSNR
()
}
})
...
...
dsk-operate-ui/src/views/project/projectList/component/lxr.vue
View file @
4cad5044
...
...
@@ -61,7 +61,7 @@
</el-table>
<div
class=
"bottems"
>
<div
class=
"btn btn_primary h28"
@
click=
"opennew"
><div
class=
"img img1"
></div>
新增联系人
</div>
<el-pagination
<el-pagination
v-if=
"total>searchParam.pageSize"
background
:page-size=
"searchParam.pageSize"
:current-page=
"searchParam.pageNum"
...
...
dsk-operate-ui/src/views/project/projectList/component/xgqy.vue
View file @
4cad5044
...
...
@@ -4,8 +4,10 @@
<el-card
class=
"box-card noborder"
>
<div
class=
"cardtitles"
>
相关企业
</div>
<div
class=
"searchbtns"
>
<el-select
class=
"select"
placeholder=
"企业角色"
>
<option
label=
"111"
value=
"222"
></option>
<el-select
class=
"select"
placeholder=
"企业类型"
>
<el-select
placeholder=
"请选择"
>
<el-option
v-for=
"(item,index) in companytype"
:label=
"item.dictLabel"
:value=
"item.dictValue"
></el-option>
</el-select>
</el-select>
<div
class=
"searchInput"
>
<el-input
type=
"text"
placeholder=
"输入关键词查询"
></el-input>
...
...
@@ -85,9 +87,7 @@
<span>
新建相关企业
</span>
</div>
<div
class=
"types"
>
<div
:class=
"{'on':types==1}"
@
click=
"types=1"
><i></i>
业主单位
</div>
<div
:class=
"{'on':types==2}"
@
click=
"types=2"
><i></i>
合作伙伴
</div>
<div
:class=
"{'on':types==3}"
@
click=
"types=3"
><i></i>
竞争对手
</div>
<div
v-for=
"(item,index) in companytype"
:class=
"{'on':types==item.dictValue}"
@
click=
"types=item.dictLabel"
><i></i>
{{item.dictLabel}}
</div>
</div>
<div
class=
"popform"
>
<div
class=
"popbot"
style=
"padding-right: 0"
>
...
...
@@ -102,34 +102,24 @@
width=
"464px"
>
<div
class=
"poptitle"
>
<img
src=
"@/assets/images/economies/icon.png"
>
<span>
新建相关企业-{{types
==1?"业主单位":""}}{{types==2?"合作伙伴":""}}{{types==3?"竞争对手":""
}}
</span>
<span>
新建相关企业-{{types}}
</span>
</div>
<el-form
class=
"popform i"
label-width=
"85px"
:rules=
"rules"
ref=
"ruleForm"
>
<el-form-item
label=
"企业名称:"
prop=
"projectName"
class=
"row"
>
<el-input
type=
"text"
placeholder=
"请输入"
></el-input>
</el-form-item>
<el-form-item
v-if=
"types == 1"
label=
"对接深度:"
class=
"row"
>
<el-select
placeholder=
"请选择"
>
<el-option
label=
"cccc"
value=
"11"
></el-option>
<el-option
label=
"cccc"
value=
"121"
></el-option>
</el-select>
<el-form-item
v-if=
"types == companytype[0].dictValue"
label=
"对接深度:"
class=
"row"
>
<el-input
type=
"text"
placeholder=
"请输入"
></el-input>
</el-form-item>
<el-form-item
v-if=
"types == 2"
label=
"合作阶段:"
class=
"row"
>
<el-select
placeholder=
"请选择"
>
<el-option
label=
"cccc"
value=
"11"
></el-option>
<el-option
label=
"cccc"
value=
"121"
></el-option>
</el-select>
<el-form-item
v-if=
"types == companytype[1].dictValue"
label=
"合作阶段:"
class=
"row"
>
<el-input
type=
"text"
placeholder=
"请输入"
></el-input>
</el-form-item>
<el-form-item
v-if=
"types == 3"
label=
"竞争力度:"
prop=
"projectName"
class=
"row"
>
<el-select
placeholder=
"请选择"
>
<el-option
label=
"cccc"
value=
"11"
></el-option>
<el-option
label=
"cccc"
value=
"121"
></el-option>
</el-select>
<el-form-item
v-if=
"types == companytype[2].dictValue"
label=
"竞争力度:"
class=
"row"
>
<el-input
type=
"text"
placeholder=
"请输入"
></el-input>
</el-form-item>
<el-form-item
label=
"企业角色:"
prop=
"projectName"
class=
"row"
>
<el-form-item
label=
"企业角色:"
class=
"row"
>
<el-select
placeholder=
"请选择"
>
<el-option
label=
"cccc"
value=
"11"
></el-option>
<el-option
label=
"cccc"
value=
"121"
></el-option>
<el-option
v-for=
"(item,index) in companyrole"
:key=
"index"
:label=
"item.dictLabel"
:value=
"item.dictValue"
></el-option>
</el-select>
</el-form-item>
<el-form-item
label=
"负责人:"
class=
"row"
>
...
...
@@ -147,8 +137,10 @@
<
script
>
import
"@/assets/styles/project.scss"
import
{
getXGQY
,
addXGQY
}
from
'@/api/project/project'
import
{
getDictType
}
from
'@/api/main'
export
default
{
name
:
'
zlwd
'
,
name
:
'
xgqy
'
,
data
(){
return
{
types
:
1
,
...
...
@@ -180,10 +172,22 @@
rules
:{
projectName
:[{
required
:
true
,
message
:
'请输入非空格字符!'
,
trigger
:
'blur'
},],
ownerCompany
:[{
required
:
true
,
message
:
'请输入非空格字符!'
,
trigger
:
'blur'
},],
},
companytype
:[],
companyrole
:[],
}
},
created
(){
//企业类型
getDictType
(
'company_type'
).
then
(
result
=>
{
this
.
companytype
=
result
.
code
==
200
?
result
.
data
:[]
this
.
types
=
this
.
companytype
[
0
].
dictValue
})
//企业角色
getDictType
(
'company_role'
).
then
(
result
=>
{
this
.
companyrole
=
result
.
code
==
200
?
result
.
data
:[]
})
},
methods
:{
//翻页
handleCurrentChange
(
val
)
{
...
...
dsk-operate-ui/src/views/project/projectList/component/xmsl.vue
View file @
4cad5044
This diff is collapsed.
Click to expand it.
dsk-operate-ui/src/views/project/projectList/detail.vue
View file @
4cad5044
...
...
@@ -12,17 +12,18 @@
<img
src=
"@/assets/images/project/headimg.png"
class=
"headimg"
>
<strong
class=
"text"
>
{{
ProjectData
.
projectName
}}
</strong>
<div
class=
"locks"
>
<div
@
click=
"islock=true"
>
<img
v-if=
"ProjectData.isPrivate == 0"
src=
"@/assets/images/project/lock.png"
>
<img
v-else
src=
"@/assets/images/project/lockopen.png"
>
{{
ProjectData
.
isPrivate
==
0
?
"仅自己可见"
:
"他人可见"
}}
<
!--
<div
class=
"delform"
>
--
>
<
!--
<div
class=
"words"
>
{{
ProjectData
.
isPrivate
==
0
?
"是否将项目权限修改为他人可见?"
:
"是否将项目权限修改为仅自己可见?"
}}
</div>
--
>
<
!--
<div>
--
>
<
!--
<div
class=
"btnsmall btn_primary h28"
>
确定
</div>
--
>
<
!--
<div
class=
"btnsmall btn_cancel h28"
>
取消
</div>
--
>
<
!--
</div>
--
>
<
!--
</div>
--
>
</div>
<
div
class=
"delform"
v-if=
"islock"
>
<
div
class=
"words"
>
{{
ProjectData
.
isPrivate
==
0
?
"是否将项目权限修改为他人可见?"
:
"是否将项目权限修改为仅自己可见?"
}}
</div
>
<
div
>
<
div
class=
"btnsmall btn_primary h28"
@
click=
"locks(ProjectData.isPrivate)"
>
确定
</div
>
<
div
class=
"btnsmall btn_cancel h28"
@
click=
"islock=false"
>
取消
</div
>
<
/div
>
<
/div
>
</div>
</div>
<div
class=
"contets row"
>
...
...
@@ -33,7 +34,7 @@
{{
xmlx
}}
<i
class=
"el-icon-caret-bottom"
></i>
</span>
<el-select
v-model=
"xmlx"
class=
"select-multiple"
placeholder=
"请选择"
@
change=
"
{}
">
<el-select
v-model=
"xmlx"
class=
"select-multiple"
placeholder=
"请选择"
@
change=
"
editXMSL(
{projectType:xmlx})
">
<el-option
v-for=
"(item,index) in projectType"
:key=
"index"
:label=
"item.dictLabel"
:value=
"item.dictValue"
></el-option>
</el-select>
</div>
...
...
@@ -46,7 +47,7 @@
{{
xmlb
}}
<i
class=
"el-icon-caret-bottom"
></i>
</span>
<el-select
v-model=
"xmlb"
class=
"select-multiple"
placeholder=
"请选择"
>
<el-select
v-model=
"xmlb"
class=
"select-multiple"
placeholder=
"请选择"
@
change=
"editXMSL(
{projectCategory:xmlb})"
>
<el-option
v-for=
"(item,index) in projectCategory"
:key=
"index"
:label=
"item.dictLabel"
:value=
"item.dictValue"
></el-option>
</el-select>
</div>
...
...
@@ -58,7 +59,7 @@
<div
class=
"flex"
v-if=
"nowedit == 3"
>
<el-input
v-model=
"ProjectData.investmentAmount"
placeholder=
"待添加"
@
input=
"number"
></el-input>
<div
class=
"flex"
>
<div
class=
"btnsmall btn_primary h28"
style=
"width: 56px"
>
确定
</div>
<div
class=
"btnsmall btn_primary h28"
style=
"width: 56px"
@
click=
"editXMSL(
{investmentAmount:ProjectData.investmentAmount})"
>确定
</div>
<div
class=
"cancels h28"
@
click=
"nowedit = -1"
style=
""
>
取消
</div>
</div>
</div>
...
...
@@ -69,11 +70,11 @@
<span>
建设地点:
</span>
<div
class=
"select-popper"
>
<span
:class=
"
{ color_text:address != '待添加'}">
{{
address
}}
<span
:class=
"
{ color_text:address
txt
!= '待添加'}">
{{
address
txt
}}
<i
class=
"el-icon-caret-bottom"
></i>
</span>
<el-cascader
class=
"cascader-region select-location"
<el-cascader
class=
"cascader-region select-location"
v-model=
"ProjectData.address"
ref=
"myCascader"
:props=
"props"
:options=
"addressList"
@
change=
"handleChange"
></el-cascader>
...
...
@@ -133,7 +134,7 @@
import
zlwd
from
'./component/zlwd.vue'
import
xgqy
from
'./component/xgqy.vue'
import
prvinceTree
from
'@/assets/json/provinceTree'
import
{
getXMSL
}
from
'@/api/project/project'
import
{
getXMSL
,
editXMNR
}
from
'@/api/project/project'
export
default
{
name
:
'detail'
,
components
:
{
xmsl
,
jsnr
,
lxr
,
gjjl
,
gzdb
,
zlwd
,
xgqy
},
...
...
@@ -153,12 +154,13 @@
thistag
:
'xmsl'
,
xmlx
:
'请选择'
,
//项目类型
xmlb
:
'请选择'
,
//项目类别
islock
:
true
,
//仅自己可见
islock
:
false
,
projectStage
:[],
//项目阶段
projectType
:[],
//项目类型
projectCategory
:[],
//项目类别
nowedit
:
-
1
,
address
:
'待添加'
,
address
:[],
addresstxt
:
'待添加'
,
//项目地区
addressList
:[],
domicile
:[],
...
...
@@ -183,27 +185,53 @@
this
.
projectCategory
=
result
.
code
==
200
?
result
.
data
:[]
})
//获取基本信息
getXMSL
(
this
.
id
).
then
(
result
=>
{
this
.
ProjectData
=
result
.
code
==
200
?
result
.
data
:{}
this
.
$route
.
query
.
projectname
=
result
.
data
.
projectName
this
.
xmlx
=
result
.
data
.
projectType
==
""
||
result
.
data
.
projectType
==
null
?
"请选择"
:
result
.
data
.
projectType
this
.
xmlb
=
result
.
data
.
projectCategory
==
""
||
result
.
data
.
projectCategory
==
null
?
"请选择"
:
result
.
data
.
projectCategory
this
.
thisindex
=
result
.
data
.
projectStage
let
list
=
[]
if
(
result
.
data
.
provinceName
){
list
.
push
(
result
.
data
.
provinceName
)
}
if
(
result
.
data
.
cityName
){
list
.
push
(
result
.
data
.
cityName
)
}
if
(
result
.
data
.
districtName
){
list
.
push
(
result
.
data
.
districtName
)
}
this
.
address
=
list
console
.
log
(
this
.
ProjectData
.
team
)
})
this
.
getXMSL
()
},
methods
:
{
getXMSL
(){
getXMSL
(
this
.
id
).
then
(
result
=>
{
this
.
ProjectData
=
result
.
code
==
200
?
result
.
data
:{}
this
.
$route
.
query
.
projectname
=
result
.
data
.
projectName
this
.
xmlx
=
result
.
data
.
projectType
==
""
||
result
.
data
.
projectType
==
null
?
"请选择"
:
result
.
data
.
projectType
this
.
xmlb
=
result
.
data
.
projectCategory
==
""
||
result
.
data
.
projectCategory
==
null
?
"请选择"
:
result
.
data
.
projectCategory
this
.
thisindex
=
result
.
data
.
projectStage
let
list
=
[]
let
txt
=
''
if
(
result
.
data
.
provinceId
){
list
.
push
(
result
.
data
.
provinceId
)
txt
+=
result
.
data
.
provinceName
}
if
(
result
.
data
.
cityId
){
list
.
push
(
result
.
data
.
cityId
)
txt
+=
'/'
+
result
.
data
.
cityName
}
if
(
result
.
data
.
districtId
){
list
.
push
(
result
.
data
.
districtId
)
txt
+=
'/'
+
result
.
data
.
districtName
}
this
.
address
=
list
.
length
>
0
?
list
:
"待添加"
this
.
addresstxt
=
txt
==
""
?
"待添加"
:
txt
})
},
locks
(
isPrivate
){
isPrivate
=
isPrivate
==
0
?
1
:
0
this
.
editXMSL
({
isPrivate
:
isPrivate
})
this
.
lock
=
false
},
editXMSL
(
param
){
let
params
=
param
params
.
id
=
this
.
id
editXMNR
(
JSON
.
stringify
(
params
)).
then
(
res
=>
{
if
(
res
.
code
==
200
){
this
.
$message
.
success
(
'修改成功!'
)
}
else
{
this
.
$message
.
error
(
res
.
msg
)
this
.
getXMSL
()
}
})
this
.
nowedit
=
-
1
},
//地区
async
prvinceTree
()
{
// await axios.post("https://files.jiansheku.com/file/json/common/provinceTree.json", {}, {
...
...
@@ -238,11 +266,10 @@
},
choose
(
value
){
this
.
thisindex
=
value
console
.
log
(
value
)
this
.
editXMSL
({
projectStage
:
value
}
)
},
//内容组件切换
getCom
(
tag
){
console
.
log
(
tag
)
this
.
thistag
=
tag
},
//输入数字
...
...
@@ -251,40 +278,33 @@
},
handleChange
(
value
)
{
console
.
log
(
value
);
let
str
=
''
var
labelString
=
this
.
$refs
.
myCascader
.
getCheckedNodes
()[
0
].
pathLabels
;
let
txt
=
''
labelString
.
forEach
((
item
,
index
)
=>
{
if
(
index
==
0
)
str
+=
item
else
str
+=
'-'
+
item
})
this
.
address
=
str
let
arr
=
this
.
$refs
.
myCascader
.
getCheckedNodes
();
// console.log(arr)
let
province
=
[],
city
=
[],
area
=
[];
this
.
domicile
=
[];
for
(
var
i
in
arr
)
{
if
(
arr
[
i
].
parent
)
{
if
(
!
arr
[
i
].
parent
.
checked
)
{
arr
[
i
].
hasChildren
&&
city
.
push
(
arr
[
i
].
value
);
arr
[
i
].
hasChildren
&&
this
.
domicile
.
push
(
arr
[
i
].
label
);
!
arr
[
i
].
hasChildren
&&
area
.
push
(
arr
[
i
].
value
);
!
arr
[
i
].
hasChildren
&&
this
.
domicile
.
push
(
arr
[
i
].
label
);
}
}
else
{
province
.
push
(
arr
[
i
].
value
);
this
.
domicile
.
push
(
arr
[
i
].
label
);
let
str
=
''
if
(
index
>
0
){
str
=
'/'
}
txt
+=
str
+
item
})
this
.
addresstxt
=
txt
let
param
=
{
provinceId
:
null
,
cityId
:
null
,
districtId
:
null
}
// var obj = JSON.parse(JSON.stringify(this.searchParam));
// obj.province = province;
// obj.city = city;
// obj.area = area;
// this.searchParam = obj;
value
.
forEach
((
item
,
index
)
=>
{
if
(
index
==
0
){
param
.
provinceId
=
parseInt
(
item
)
}
if
(
index
==
1
){
param
.
cityId
=
parseInt
(
item
)
}
if
(
index
==
2
){
param
.
districtId
=
parseInt
(
item
)
}
})
this
.
editXMSL
(
param
)
},
}
}
...
...
dsk-operate-ui/src/views/project/projectList/index.vue
View file @
4cad5044
...
...
@@ -149,7 +149,7 @@
</div>
</div>
<div
class=
"tables"
>
<div
class=
"bottems"
v-if=
"total>
0
"
>
<div
class=
"bottems"
v-if=
"total>
searchParam.pageSize
"
>
<el-pagination
background
:page-size=
"searchParam.pageSize"
...
...
dsk-system/src/main/java/com/dsk/system/domain/vo/BusinessBrowseVo.java
View file @
4cad5044
package
com
.
dsk
.
system
.
domain
.
vo
;
import
com.dsk.common.annotation.Excel
;
import
com.dsk.common.core.domain.entity.BusinessRelateCompany
;
import
lombok.Data
;
...
...
@@ -53,6 +54,21 @@ public class BusinessBrowseVo {
*/
private
String
districtName
;
/**
* 省id
*/
private
Integer
provinceId
;
/**
* 市id
*/
private
Integer
cityId
;
/**
* 区id
*/
private
Integer
districtId
;
/**
* 商务团队
*/
...
...
@@ -73,10 +89,23 @@ public class BusinessBrowseVo {
*/
private
List
<
String
>
labelList
;
/**
* 关键企业
*/
private
List
<
BusinessRelateCompany
>
relateCompany
;
/** 建设单位 */
private
String
constructionUnit
;
/** 建设单位负责人 */
private
String
constructionPrincipal
;
/** 建设单位联系电话 */
private
String
constructionPhone
;
/** 主管单位 */
private
String
supervisorUnit
;
/** 主管单位负责人 */
private
String
supervisorPrincipal
;
/** 主管单位联系电话 */
private
String
supervisorPhone
;
/**
* 联系人统计
...
...
dsk-system/src/main/java/com/dsk/system/mapper/BusinessFollowRecordMapper.java
View file @
4cad5044
package
com
.
dsk
.
system
.
mapper
;
import
com.dsk.common.core.domain.entity.BusinessFollowRecord
;
import
com.dsk.system.domain.BusinessIdDto
;
import
java.util.List
;
...
...
@@ -34,7 +35,7 @@ public interface BusinessFollowRecordMapper
* @param businessId 项目id
* @return 项目跟进记录集合
*/
public
List
<
BusinessFollowRecord
>
selectBusinessFollowRecordList
(
Integer
businessId
);
public
List
<
BusinessFollowRecord
>
selectBusinessFollowRecordList
(
BusinessIdDto
businessId
);
/**
* 新增项目跟进记录
...
...
dsk-system/src/main/java/com/dsk/system/mapper/BusinessUserMapper.java
View file @
4cad5044
...
...
@@ -58,4 +58,11 @@ public interface BusinessUserMapper
* @return 结果
*/
public
int
deleteBusinessUserByIds
(
Long
[]
ids
);
/**
* 根据项目id查询项目的创建人
* @param businessId
* @return
*/
String
selectCreatorByBusinessId
(
Integer
businessId
);
}
dsk-system/src/main/java/com/dsk/system/service/EconomicService.java
View file @
4cad5044
package
com
.
dsk
.
system
.
service
;
import
com.dsk.common.core.domain.AjaxResult
;
import
com.dsk.common.dtos.OpRegionalEconomicDataRegionalListDto
;
import
com.dsk.common.dtos.OpRegionalEconomicDataStatisticsRegionalDto
;
import
com.dsk.common.dtos.OpRegionalEconomicDataV1Dto
;
import
com.dsk.common.dtos.OpRegionalEconomicDataV1PageDto
;
import
com.dsk.common.dtos.*
;
/**
* @ClassName EconomicService
...
...
@@ -24,6 +21,17 @@ public interface EconomicService {
*/
AjaxResult
nationalPage
(
OpRegionalEconomicDataV1PageDto
dto
);
/***
*@Description: 全国经济大全分页列表
*@Param:
*@return: com.dsk.common.core.domain.AjaxResult
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult
yearsList
(
OpRegionalEconomicDataYearsListDto
dataYearsListDto
);
/***
*@Description: 全国经济大全详情
*@Param:
...
...
@@ -31,7 +39,7 @@ public interface EconomicService {
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult
details
(
Integer
id
);
AjaxResult
details
(
OpRegionalEconomicDataDetailsDto
detailsDto
);
/***
...
...
dsk-system/src/main/java/com/dsk/system/service/IBusinessFollowRecordService.java
View file @
4cad5044
package
com
.
dsk
.
system
.
service
;
import
com.dsk.common.core.domain.entity.BusinessFollowRecord
;
import
com.dsk.system.domain.BusinessIdDto
;
import
java.util.List
;
...
...
@@ -26,7 +27,7 @@ public interface IBusinessFollowRecordService
* @param businessId 项目跟进记录
* @return 项目跟进记录集合
*/
public
List
<
BusinessFollowRecord
>
selectBusinessFollowRecordList
(
Integer
businessId
);
public
List
<
BusinessFollowRecord
>
selectBusinessFollowRecordList
(
BusinessIdDto
businessId
);
/**
* 分页查询项目跟进记录列表
...
...
dsk-system/src/main/java/com/dsk/system/service/SpecialPurposeBondsService.java
View file @
4cad5044
package
com
.
dsk
.
system
.
service
;
import
com.dsk.common.core.domain.AjaxResult
;
import
com.dsk.common.dtos.SpecialBondInformationDetailsDto
;
import
com.dsk.common.dtos.SpecialBondInformationPageDto
;
import
com.dsk.common.dtos.SpecialPurposeBondsDto
;
import
com.dsk.common.dtos.SpecialPurposeBondsPageDto
;
...
...
@@ -30,7 +31,7 @@ public interface SpecialPurposeBondsService {
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult
details
(
S
tring
id
);
AjaxResult
details
(
S
pecialBondInformationDetailsDto
detailsDto
);
/***
*@Description: 项目类别统计
...
...
dsk-system/src/main/java/com/dsk/system/service/impl/BusinessFollowRecordServiceImpl.java
View file @
4cad5044
...
...
@@ -4,6 +4,7 @@ import java.util.List;
import
com.dsk.common.core.domain.entity.BusinessFollowRecord
;
import
com.dsk.common.utils.DateUtils
;
import
com.dsk.system.domain.BusinessIdDto
;
import
com.dsk.system.mapper.BusinessFollowRecordMapper
;
import
com.dsk.system.service.IBusinessFollowRecordService
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -35,7 +36,7 @@ public class BusinessFollowRecordServiceImpl implements IBusinessFollowRecordSer
}
@Override
public
List
<
BusinessFollowRecord
>
selectBusinessFollowRecordList
(
Integer
businessId
)
public
List
<
BusinessFollowRecord
>
selectBusinessFollowRecordList
(
BusinessIdDto
businessId
)
{
return
businessFollowRecordMapper
.
selectBusinessFollowRecordList
(
businessId
);
}
...
...
@@ -78,6 +79,7 @@ public class BusinessFollowRecordServiceImpl implements IBusinessFollowRecordSer
* @return 结果
*/
@Override
@Transactional
public
int
deleteBusinessFollowRecordByIds
(
Long
[]
ids
)
{
return
businessFollowRecordMapper
.
deleteBusinessFollowRecordByIds
(
ids
);
...
...
dsk-system/src/main/java/com/dsk/system/service/impl/BusinessInfoServiceImpl.java
View file @
4cad5044
...
...
@@ -8,6 +8,7 @@ import cn.hutool.core.bean.BeanUtil;
import
cn.hutool.core.util.ObjectUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.dsk.common.config.RuoYiConfig
;
import
com.dsk.common.constant.HttpStatus
;
import
com.dsk.common.core.domain.AjaxResult
;
import
com.dsk.common.core.domain.entity.BusinessInfo
;
...
...
@@ -15,8 +16,11 @@ import com.dsk.common.core.domain.entity.BusinessLabel;
import
com.dsk.common.core.domain.entity.BusinessRelateCompany
;
import
com.dsk.common.core.domain.entity.BusinessUser
;
import
com.dsk.common.exception.base.BaseException
;
import
com.dsk.common.utils.CheckUtils
;
import
com.dsk.common.utils.DateUtils
;
import
com.dsk.common.utils.SecurityUtils
;
import
com.dsk.common.utils.StringUtils
;
import
com.dsk.common.utils.file.FileUtils
;
import
com.dsk.system.domain.BusinessExcelDto
;
import
com.dsk.system.domain.BusinessAddDto
;
import
com.dsk.system.domain.BusinessListDto
;
...
...
@@ -82,11 +86,11 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
*/
@Override
public
List
<
BusinessListVo
>
selectBusinessInfoList
(
BusinessListDto
dto
)
{
if
(
dto
.
getUserId
()
==
null
)
{
Long
deptId
=
SecurityUtils
.
getLoginUser
().
getDeptId
();
if
(
deptId
==
null
)
throw
new
BaseException
(
"请登录"
);
dto
.
setDeptId
(
deptId
.
intValue
());
}
//
if (dto.getUserId() == null) {
//
Long deptId = SecurityUtils.getLoginUser().getDeptId();
//
if (deptId == null) throw new BaseException("请登录");
//
dto.setDeptId(deptId.intValue());
//
}
return
businessInfoMapper
.
selectBusinessInfoList
(
dto
);
}
...
...
@@ -96,15 +100,18 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
//查询项目基本信息
BusinessInfo
businessInfo
=
businessInfoMapper
.
selectBusinessInfoById
(
businessId
);
BeanUtil
.
copyProperties
(
businessInfo
,
businessBrowseVo
);
//商务团队
businessBrowseVo
.
setTeam
(
businessUserMapper
.
selectCreatorByBusinessId
(
businessId
));
//查询项目标签
businessBrowseVo
.
setLabelList
(
businessLabelMapper
.
selectBusinessLabelList
(
new
BusinessLabel
(
businessId
)).
stream
().
map
(
p
->
p
.
getLabel
()).
collect
(
Collectors
.
toList
()));
//查询关键企业
businessBrowseVo
.
setRelateCompany
(
businessRelateCompanyMapper
.
selectBusinessRelateCompanyList
(
new
BusinessRelateCompany
(
businessId
)));
//相关数据统计
BusinessBrowseVo
total
=
businessInfoMapper
.
selectTotal
(
businessId
);
businessBrowseVo
.
setBacklogCount
(
total
.
getBacklogCount
());
businessBrowseVo
.
setContactsCount
(
total
.
getContactsCount
());
businessBrowseVo
.
setFollowRecordCount
(
total
.
getFollowRecordCount
());
businessBrowseVo
.
setRelateCompanyCount
(
total
.
getRelateCompanyCount
());
//资料文档统计
businessBrowseVo
.
setRelateCompanyCount
(
FileUtils
.
getAllFileNames
(
RuoYiConfig
.
getProfile
()+
businessId
).
size
());
return
businessBrowseVo
;
}
...
...
@@ -186,6 +193,10 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
@Override
@Transactional
public
int
updateBusinessInfo
(
BusinessInfo
businessInfo
)
{
if
(
StringUtils
.
isNotEmpty
(
businessInfo
.
getConstructionPhone
())
&&
StringUtils
.
isNotEmpty
(
businessInfo
.
getSupervisorPhone
()))
{
if
(!
CheckUtils
.
isPhone
(
businessInfo
.
getConstructionPhone
())
||
!
CheckUtils
.
isPhone
(
businessInfo
.
getSupervisorPhone
()))
throw
new
BaseException
(
"500"
,
"请输入正确的手机号码"
);
}
businessInfo
.
setUpdateTime
(
DateUtils
.
getNowDate
());
return
businessInfoMapper
.
updateBusinessInfo
(
businessInfo
);
}
...
...
dsk-system/src/main/java/com/dsk/system/service/impl/BusinessRelateCompanyServiceImpl.java
View file @
4cad5044
...
...
@@ -63,7 +63,7 @@ public class BusinessRelateCompanyServiceImpl implements IBusinessRelateCompanyS
@Transactional
public
int
insertBusinessRelateCompany
(
BusinessRelateCompany
businessRelateCompany
)
{
if
(!
CheckUtils
.
isPhone
(
businessRelateCompany
.
getPhone
()))
throw
new
BaseException
(
"500"
,
"请输入正确的手机号码"
);
//
if(!CheckUtils.isPhone(businessRelateCompany.getPhone())) throw new BaseException("500","请输入正确的手机号码");
businessRelateCompany
.
setCreateTime
(
DateUtils
.
getNowDate
());
return
businessRelateCompanyMapper
.
insertBusinessRelateCompany
(
businessRelateCompany
);
}
...
...
@@ -78,7 +78,7 @@ public class BusinessRelateCompanyServiceImpl implements IBusinessRelateCompanyS
@Transactional
public
int
updateBusinessRelateCompany
(
BusinessRelateCompany
businessRelateCompany
)
{
if
(!
CheckUtils
.
isPhone
(
businessRelateCompany
.
getPhone
()))
throw
new
BaseException
(
"500"
,
"请输入正确的手机号码"
);
//
if(!CheckUtils.isPhone(businessRelateCompany.getPhone())) throw new BaseException("500","请输入正确的手机号码");
businessRelateCompany
.
setUpdateTime
(
DateUtils
.
getNowDate
());
return
businessRelateCompanyMapper
.
updateBusinessRelateCompany
(
businessRelateCompany
);
}
...
...
dsk-system/src/main/java/com/dsk/system/service/impl/EconomicServiceImpl.java
View file @
4cad5044
package
com
.
dsk
.
system
.
service
.
impl
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.dsk.common.core.domain.AjaxResult
;
import
com.dsk.common.dtos.OpRegionalEconomicDataRegionalListDto
;
import
com.dsk.common.dtos.OpRegionalEconomicDataStatisticsRegionalDto
;
import
com.dsk.common.dtos.OpRegionalEconomicDataV1Dto
;
import
com.dsk.common.dtos.OpRegionalEconomicDataV1PageDto
;
import
com.dsk.common.dtos.*
;
import
com.dsk.common.utils.DateUtils
;
import
com.dsk.common.utils.DskOpenApiUtil
;
import
com.dsk.system.service.EconomicService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
...
...
@@ -29,15 +27,22 @@ public class EconomicServiceImpl implements EconomicService {
@Override
public
AjaxResult
nationalPage
(
OpRegionalEconomicDataV1PageDto
dto
)
{
if
(
ObjectUtil
.
isEmpty
(
dto
.
getYear
()))
{
dto
.
setYear
(
DateUtils
.
getYear
()
-
1
);
}
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/economic/national/nationalPage"
,
BeanUtil
.
beanToMap
(
dto
,
false
,
false
));
return
BeanUtil
.
toBean
(
map
,
AjaxResult
.
class
);
}
@Override
public
AjaxResult
details
(
Integer
id
)
{
Map
<
String
,
Object
>
bodyMap
=
new
HashMap
<>(
1
);
bodyMap
.
put
(
"id"
,
id
);
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/economic/details"
,
bodyMap
);
public
AjaxResult
yearsList
(
OpRegionalEconomicDataYearsListDto
dto
)
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/economic/years/list"
,
BeanUtil
.
beanToMap
(
dto
,
false
,
false
));
return
BeanUtil
.
toBean
(
map
,
AjaxResult
.
class
);
}
@Override
public
AjaxResult
details
(
OpRegionalEconomicDataDetailsDto
detailsDto
)
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/economic/details"
,
BeanUtil
.
beanToMap
(
detailsDto
,
false
,
false
));
return
BeanUtil
.
toBean
(
map
,
AjaxResult
.
class
);
}
...
...
dsk-system/src/main/java/com/dsk/system/service/impl/SpecialPurposeBondsServiceImpl.java
View file @
4cad5044
...
...
@@ -2,6 +2,7 @@ package com.dsk.system.service.impl;
import
cn.hutool.core.bean.BeanUtil
;
import
com.dsk.common.core.domain.AjaxResult
;
import
com.dsk.common.dtos.SpecialBondInformationDetailsDto
;
import
com.dsk.common.dtos.SpecialBondInformationPageDto
;
import
com.dsk.common.dtos.SpecialPurposeBondsDto
;
import
com.dsk.common.dtos.SpecialPurposeBondsPageDto
;
...
...
@@ -10,7 +11,6 @@ import com.dsk.system.service.SpecialPurposeBondsService;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
...
...
@@ -33,10 +33,8 @@ public class SpecialPurposeBondsServiceImpl implements SpecialPurposeBondsServic
}
@Override
public
AjaxResult
details
(
String
id
)
{
Map
<
String
,
Object
>
bodyMap
=
new
HashMap
<>(
1
);
bodyMap
.
put
(
"id"
,
id
);
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/specialPurposeBonds/details"
,
bodyMap
);
public
AjaxResult
details
(
SpecialBondInformationDetailsDto
detailsDto
)
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/specialPurposeBonds/details"
,
BeanUtil
.
beanToMap
(
detailsDto
,
false
,
false
));
return
BeanUtil
.
toBean
(
map
,
AjaxResult
.
class
);
}
...
...
dsk-system/src/main/java/com/dsk/system/service/impl/UrbanInvestmentPlatformServiceImpl.java
View file @
4cad5044
package
com
.
dsk
.
system
.
service
.
impl
;
import
cn.hutool.core.bean.BeanUtil
;
import
com.dsk.acc.openapi.client.util.CommonUtils
;
import
com.dsk.common.core.domain.AjaxResult
;
import
com.dsk.common.dtos.UrbanInvestmentPlatformDto
;
import
com.dsk.common.utils.DskOpenApiUtil
;
import
com.dsk.system.domain.customer.vo.CustomerStatusListVo
;
import
com.dsk.system.service.ICustomerService
;
import
com.dsk.system.service.UrbanInvestmentPlatformService
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.MapUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
...
...
@@ -24,9 +32,41 @@ public class UrbanInvestmentPlatformServiceImpl implements UrbanInvestmentPlatfo
@Autowired
private
DskOpenApiUtil
dskOpenApiUtil
;
@Autowired
private
ICustomerService
iCustomerService
;
@Override
public
AjaxResult
page
(
UrbanInvestmentPlatformDto
pageDto
)
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/urbanInvestment/page"
,
BeanUtil
.
beanToMap
(
pageDto
,
false
,
false
));
Integer
code
=
MapUtils
.
getInteger
(
map
,
"code"
,
300
);
if
(
HttpStatus
.
OK
.
value
()
!=
code
)
{
throw
new
RuntimeException
();
}
Map
data
=
MapUtils
.
getMap
(
map
,
"data"
,
null
);
List
<
Object
>
list
=
CommonUtils
.
assertAsArray
(
MapUtils
.
getObject
(
data
,
"list"
,
""
));
if
(
CollectionUtils
.
isEmpty
(
list
))
{
return
BeanUtil
.
toBean
(
map
,
AjaxResult
.
class
);
}
ArrayList
<
String
>
uipIds
=
new
ArrayList
<>();
for
(
Object
dataMap
:
list
)
{
uipIds
.
add
(
MapUtils
.
getString
(
CommonUtils
.
assertAsMap
(
dataMap
),
"uipId"
));
}
List
<
CustomerStatusListVo
>
claimStatusList
=
iCustomerService
.
selectStatusList
(
uipIds
);
//按照城投企业id合并两个list
for
(
Object
companyObj
:
list
)
{
Map
<
String
,
Object
>
companyMap
=
CommonUtils
.
assertAsMap
(
companyObj
);
String
uipId
=
MapUtils
.
getString
(
companyMap
,
"uipId"
);
if
(
CollectionUtils
.
isEmpty
(
claimStatusList
))
{
companyMap
.
put
(
"claimStatus"
,
0
);
}
for
(
CustomerStatusListVo
vo
:
claimStatusList
)
{
if
(
uipId
.
equals
(
vo
.
getUipId
()))
{
companyMap
.
put
(
"claimStatus"
,
1
);
}
}
}
return
BeanUtil
.
toBean
(
map
,
AjaxResult
.
class
);
}
...
...
dsk-system/src/main/resources/mapper/business/BusinessInfoMapper.xml
View file @
4cad5044
...
...
@@ -24,7 +24,6 @@
<result
property=
"districtId"
column=
"district_id"
/>
<result
property=
"projectType"
column=
"project_type"
/>
<result
property=
"projectCategory"
column=
"project_category"
/>
<result
property=
"team"
column=
"team"
/>
<result
property=
"isPrivate"
column=
"is_private"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
...
...
@@ -35,6 +34,12 @@
<result
property=
"earnestMoneyPay"
column=
"earnest_money_pay"
/>
<result
property=
"earnestMoney"
column=
"earnest_money"
/>
<result
property=
"evaluationBidCouncil"
column=
"evaluation_bid_council"
/>
<result
property=
"constructionUnit"
column=
"construction_unit"
/>
<result
property=
"constructionPrincipal"
column=
"construction_principal"
/>
<result
property=
"constructionPhone"
column=
"construction_phone"
/>
<result
property=
"supervisorUnit"
column=
"supervisor_unit"
/>
<result
property=
"supervisorPrincipal"
column=
"supervisor_principal"
/>
<result
property=
"supervisorPhone"
column=
"supervisor_phone"
/>
</resultMap>
<sql
id=
"selectBusinessInfoVo"
>
...
...
@@ -57,7 +62,6 @@
district_id,
project_type,
project_category,
team,
is_private,
create_time,
update_time,
...
...
@@ -68,7 +72,13 @@
bid_open_place,
earnest_money_pay,
earnest_money,
evaluation_bid_council
evaluation_bid_council,
construction_unit,
construction_principal,
construction_phone,
supervisor_unit,
supervisor_principal,
supervisor_phone
from business_info
</sql>
...
...
@@ -246,7 +256,6 @@
<if
test=
"districtId != null"
>
district_id,
</if>
<if
test=
"projectType != null"
>
project_type,
</if>
<if
test=
"projectCategory != null"
>
project_category,
</if>
<if
test=
"team != null"
>
team,
</if>
<if
test=
"isPrivate != null"
>
is_private,
</if>
<if
test=
"createTime != null"
>
create_time,
</if>
<if
test=
"updateTime != null"
>
update_time,
</if>
...
...
@@ -257,6 +266,12 @@
<if
test=
"earnestMoneyPay != null"
>
earnest_money_pay,
</if>
<if
test=
"earnestMoney != null"
>
earnest_money,
</if>
<if
test=
"evaluationBidCouncil != null"
>
evaluation_bid_council,
</if>
<if
test=
"constructionUnit != null"
>
construction_unit,
</if>
<if
test=
"constructionPrincipal != null"
>
construction_principal,
</if>
<if
test=
"constructionPhone != null"
>
construction_phone,
</if>
<if
test=
"supervisorUnit != null"
>
supervisor_unit,
</if>
<if
test=
"supervisorPrincipal != null"
>
supervisor_principal,
</if>
<if
test=
"supervisorPhone != null"
>
supervisor_phone,
</if>
</trim>
<trim
prefix=
"values ("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"projectName != null"
>
#{projectName},
</if>
...
...
@@ -277,7 +292,6 @@
<if
test=
"districtId != null"
>
#{districtId},
</if>
<if
test=
"projectType != null"
>
#{projectType},
</if>
<if
test=
"projectCategory != null"
>
#{projectCategory},
</if>
<if
test=
"team != null"
>
#{team},
</if>
<if
test=
"isPrivate != null"
>
#{isPrivate},
</if>
<if
test=
"createTime != null"
>
#{createTime},
</if>
<if
test=
"updateTime != null"
>
#{updateTime},
</if>
...
...
@@ -289,6 +303,12 @@
<if
test=
"earnestMoneyPay != null"
>
#{earnestMoneyPay},
</if>
<if
test=
"earnestMoney != null"
>
#{earnestMoney},
</if>
<if
test=
"evaluationBidCouncil != null"
>
#{evaluationBidCouncil},
</if>
<if
test=
"constructionUnit != null"
>
#{constructionUnit},
</if>
<if
test=
"constructionPrincipal != null"
>
#{constructionPrincipal},
</if>
<if
test=
"constructionPhone != null"
>
#{constructionPhone},
</if>
<if
test=
"supervisorUnit != null"
>
#{supervisorUnit},
</if>
<if
test=
"supervisorPrincipal != null"
>
#{supervisorPrincipal},
</if>
<if
test=
"supervisorPhone != null"
>
#{supervisorPhone},
</if>
</trim>
</insert>
...
...
@@ -313,7 +333,6 @@
<if
test=
"districtId != null"
>
district_id = #{districtId},
</if>
<if
test=
"projectType != null"
>
project_type = #{projectType},
</if>
<if
test=
"projectCategory != null"
>
project_category = #{projectCategory},
</if>
<if
test=
"team != null"
>
team = #{team},
</if>
<if
test=
"isPrivate != null"
>
is_private = #{isPrivate},
</if>
<if
test=
"createTime != null"
>
create_time = #{createTime},
</if>
<if
test=
"updateTime != null"
>
update_time = #{updateTime},
</if>
...
...
@@ -325,6 +344,12 @@
<if
test=
"earnestMoneyPay != null"
>
earnest_money_pay = #{earnestMoneyPay},
</if>
<if
test=
"earnestMoney != null"
>
earnest_money = #{earnestMoney},
</if>
<if
test=
"evaluationBidCouncil != null"
>
evaluation_bid_council = #{evaluationBidCouncil},
</if>
<if
test=
"constructionUnit != null"
>
construction_unit = #{constructionUnit},
</if>
<if
test=
"constructionPrincipal != null"
>
construction_principal = #{constructionPrincipal},
</if>
<if
test=
"constructionPhone != null"
>
construction_phone = #{constructionPhone},
</if>
<if
test=
"supervisorUnit != null"
>
supervisor_unit = #{supervisorUnit},
</if>
<if
test=
"supervisorPrincipal != null"
>
supervisor_principal = #{supervisorPrincipal},
</if>
<if
test=
"supervisorPhone != null"
>
evaluation_bid_council = #{supervisorPhone},
</if>
</trim>
where id = #{id}
</update>
...
...
dsk-system/src/main/resources/mapper/business/BusinessUserMapper.xml
View file @
4cad5044
...
...
@@ -33,6 +33,14 @@
<include
refid=
"selectBusinessUserVo"
/>
where id = #{id}
</select>
<select
id=
"selectCreatorByBusinessId"
resultType=
"java.lang.String"
>
select u.nick_name
from business_user bu
left join business_info i on i.id = bu.business_id
left join sys_user u on u.user_id = bu.user_id
where bu.is_founder = 1
and i.id = #{BusinessId}
</select>
<insert
id=
"insertBusinessUser"
parameterType=
"com.dsk.common.core.domain.entity.BusinessUser"
useGeneratedKeys=
"true"
keyProperty=
"id"
>
insert into business_user
...
...
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