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
fbfb6af1
Commit
fbfb6af1
authored
Jun 06, 2023
by
MyName
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://192.168.60.201/root/dsk-operate-sys
parents
7e8e848d
f26896b3
Changes
22
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
891 additions
and
118 deletions
+891
-118
BusinessInfoController.java
...m/dsk/web/controller/business/BusinessInfoController.java
+0
-1
RegionalEconomicDataController.java
...er/search/macroMarket/RegionalEconomicDataController.java
+3
-6
pom.xml
dsk-common/pom.xml
+12
-0
OpRegionalEconomicDataYearsListDto.java
...m/dsk/common/dtos/OpRegionalEconomicDataYearsListDto.java
+16
-0
FileUtils.java
...on/src/main/java/com/dsk/common/utils/file/FileUtils.java
+46
-4
dealings.js
dsk-operate-ui/src/api/detail/party-a/dealings.js
+9
-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
HeadForm.vue
...perate-ui/src/views/detail/party-a/component/HeadForm.vue
+23
-0
bidagency.vue
...perate-ui/src/views/detail/party-a/dealings/bidagency.vue
+2
-2
bidrecords.vue
...erate-ui/src/views/detail/party-a/dealings/bidrecords.vue
+27
-28
custom.vue
dsk-operate-ui/src/views/detail/party-a/dealings/custom.vue
+3
-3
hiscontract.vue
...rate-ui/src/views/detail/party-a/dealings/hiscontract.vue
+38
-56
supplier.vue
...operate-ui/src/views/detail/party-a/dealings/supplier.vue
+3
-3
mixin.js
dsk-operate-ui/src/views/detail/party-a/mixins/mixin.js
+5
-0
announcement.vue
...erate-ui/src/views/detail/party-a/opport/announcement.vue
+2
-2
bond.vue
dsk-operate-ui/src/views/detail/party-a/opport/bond.vue
+5
-5
landtransaction.vue
...te-ui/src/views/detail/party-a/opport/landtransaction.vue
+2
-2
proposed.vue
dsk-operate-ui/src/views/detail/party-a/opport/proposed.vue
+3
-3
EconomicService.java
...src/main/java/com/dsk/system/service/EconomicService.java
+1
-1
BusinessInfoServiceImpl.java
.../com/dsk/system/service/impl/BusinessInfoServiceImpl.java
+5
-0
EconomicServiceImpl.java
...java/com/dsk/system/service/impl/EconomicServiceImpl.java
+2
-2
No files found.
dsk-admin/src/main/java/com/dsk/web/controller/business/BusinessInfoController.java
View file @
fbfb6af1
...
...
@@ -116,7 +116,6 @@ public class BusinessInfoController extends BaseController
@PostMapping
(
"/edit"
)
public
AjaxResult
edit
(
@RequestBody
BusinessInfo
businessInfo
)
{
if
(!
CheckUtils
.
isPhone
(
businessInfo
.
getConstructionPhone
())
||
!
CheckUtils
.
isPhone
(
businessInfo
.
getSupervisorPhone
()))
throw
new
BaseException
(
"500"
,
"请输入正确的手机号码"
);
return
toAjax
(
businessInfoService
.
updateBusinessInfo
(
businessInfo
));
}
...
...
dsk-admin/src/main/java/com/dsk/web/controller/search/macroMarket/RegionalEconomicDataController.java
View file @
fbfb6af1
package
com
.
dsk
.
web
.
controller
.
search
.
macroMarket
;
import
com.dsk.common.core.domain.AjaxResult
;
import
com.dsk.common.dtos.OpRegionalEconomicDataDetailsDto
;
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.*
;
...
...
@@ -46,8 +43,8 @@ public class RegionalEconomicDataController {
*@date: 2023/5/18 10:29
*/
@PostMapping
(
"/years/list"
)
public
AjaxResult
yearsList
()
{
return
economicService
.
yearsList
();
public
AjaxResult
yearsList
(
@RequestBody
OpRegionalEconomicDataYearsListDto
dto
)
{
return
economicService
.
yearsList
(
dto
);
}
...
...
dsk-common/pom.xml
View file @
fbfb6af1
...
...
@@ -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/dtos/OpRegionalEconomicDataYearsListDto.java
0 → 100644
View file @
fbfb6af1
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/utils/file/FileUtils.java
View file @
fbfb6af1
...
...
@@ -7,10 +7,14 @@ 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
;
...
...
@@ -252,10 +256,6 @@ public class FileUtils
return
fileList
;
}
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
getAllFileNames
(
"D:/dsk-operate-sys/uploadPath/10"
).
size
());
}
/**
* 获取文件夹中的所有文件,不包括文件夹
*
...
...
@@ -290,6 +290,48 @@ public class FileUtils
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-operate-ui/src/api/detail/party-a/dealings.js
View file @
fbfb6af1
...
...
@@ -71,3 +71,12 @@ export function historySendProvince(data) {
data
:
data
})
}
// 投标记录列表
export
function
tenderPage
(
data
)
{
return
request
({
url
:
'/enterpriseBussiness/tenderPage'
,
method
:
'post'
,
data
:
data
})
}
dsk-operate-ui/src/views/detail/party-a/component/CustomMoneySelect.vue
0 → 100644
View file @
fbfb6af1
<
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 @
fbfb6af1
<
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/HeadForm.vue
View file @
fbfb6af1
...
...
@@ -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/dealings/bidagency.vue
View file @
fbfb6af1
...
...
@@ -58,8 +58,8 @@ export default {
},
forData
:
[
{
label
:
'招标代理单位名称'
,
prop
:
'agency'
,
minWidth
:
'350'
,
slot
:
true
},
{
label
:
'合作项目/工程名称'
,
prop
:
'projectInfo'
,
minWidth
:
'400'
,
sortable
:
true
,
slot
:
true
},
{
label
:
'最近一次合作时间'
,
prop
:
'issueTime'
,
minWidth
:
'140'
,
sortable
:
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
:
[]},
...
...
dsk-operate-ui/src/views/detail/party-a/dealings/bidrecords.vue
View file @
fbfb6af1
...
...
@@ -6,6 +6,7 @@
:query-params=
"queryParams"
:total=
"tableDataTotal"
:isExcel=
"true"
@
handle-search=
"handleSearch"
/>
<tables
...
...
@@ -17,13 +18,13 @@
:queryParams=
"queryParams"
@
handle-current-change=
"handleCurrentChange"
>
<template
slot=
"
customN
ame"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.
customId&&scope.row.customName"
>
{{
scope
.
row
.
customName
}}
</router-link>
<div
v-else
>
{{
scope
.
row
.
customName
||
'--'
}}
</div>
<template
slot=
"
n
ame"
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=
"
us
e"
slot-scope=
"scope"
>
<
router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.useId&&scope.row.use"
>
{{
scope
.
row
.
use
}}
</router-link
>
<div
v-else
>
{{
scope
.
row
.
us
e
||
'--'
}}
</div>
<
template
slot=
"
sourc
e"
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
.
sourc
e
||
'--'
}}
</div>
</
template
>
</tables>
</div>
...
...
@@ -31,7 +32,7 @@
<
script
>
import
mixin
from
'../mixins/mixin'
import
{
getList
}
from
'@/api/detail/party-a/dealings'
import
{
tenderPage
}
from
'@/api/detail/party-a/dealings'
export
default
{
name
:
'Bidrecords'
,
props
:
[
'companyId'
],
...
...
@@ -47,13 +48,15 @@ export default {
pageSize
:
10
},
forData
:
[
{
label
:
'招标代理单位名称'
,
prop
:
'customName'
,
minWidth
:
'320'
,
slot
:
true
},
{
label
:
'本企业投标报价(万元)'
,
prop
:
'way'
,
minWidth
:
'160'
},
{
label
:
'发布日期'
,
prop
:
'way'
,
minWidth
:
'100'
},
{
label
:
'中标地区'
,
prop
:
'way'
,
minWidth
:
'160'
},
{
label
:
'信息来源'
,
prop
:
'use'
,
minWidth
:
'280'
,
slot
:
true
}
{
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
:
[]},
],
formData
:
[],
//列表
tableLoading
:
false
,
tableData
:[],
...
...
@@ -66,22 +69,18 @@ export default {
this
.
handleQuery
()
},
methods
:
{
handleQuery
(
)
{
async
handleQuery
(
params
)
{
this
.
tableLoading
=
true
getList
(
this
.
queryParams
).
then
((
res
)
=>
{
this
.
tableLoading
=
false
this
.
tableData
=
[
{
customId
:
'1'
,
customName
:
'滨州医学院口腔医学大楼铝合金门窗供货及安装'
,
use
:
'城镇住宅用地'
,
type
:
'房地产业'
,
way
:
'挂牌出让'
,
count
:
4
}
]
this
.
tableDataTotal
=
100
})
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"
)
}
}
}
...
...
dsk-operate-ui/src/views/detail/party-a/dealings/custom.vue
View file @
fbfb6af1
...
...
@@ -59,9 +59,9 @@ export default {
},
forData
:
[
{
label
:
'客户名称'
,
prop
:
'companyName'
,
minWidth
:
'350'
,
slot
:
true
},
{
label
:
'合作项目/工程名称'
,
prop
:
'projectAllName'
,
minWidth
:
'400'
,
sortable
:
true
,
slot
:
true
},
{
label
:
'合作总金额(万元)'
,
prop
:
'amount'
,
minWidth
:
'150'
,
sortable
:
true
},
{
label
:
'最近一次合作时间'
,
prop
:
'time'
,
minWidth
:
'140'
,
sortable
:
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
:
[]},
...
...
dsk-operate-ui/src/views/detail/party-a/dealings/hiscontract.vue
View file @
fbfb6af1
...
...
@@ -19,13 +19,13 @@
@
handle-current-change=
"handleCurrentChange"
@
sort-change=
"sortChange"
>
<template
slot=
"
custom
Name"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.
customId&&scope.row.customName"
>
{{
scope
.
row
.
custom
Name
}}
</router-link>
<div
v-else
>
{{
scope
.
row
.
customName
||
'--'
}}
</div>
<template
slot=
"
projectAll
Name"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.
id&&scope.row.projectAllName "
>
{{
scope
.
row
.
projectAll
Name
}}
</router-link>
<div
v-else
>
{{
scope
.
row
.
projectAllName
||
'--'
}}
</div>
</
template
>
<
template
slot=
"
us
e"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.
useId&&scope.row.use"
>
{{
scope
.
row
.
us
e
}}
</router-link>
<div
v-else
>
{{
scope
.
row
.
us
e
||
'--'
}}
</div>
<
template
slot=
"
companyNam
e"
slot-scope=
"scope"
>
<router-link
to=
""
tag=
"a"
class=
"a-link"
v-if=
"scope.row.
companyId&&scope.row.companyName"
>
{{
scope
.
row
.
companyNam
e
}}
</router-link>
<div
v-else
>
{{
scope
.
row
.
companyNam
e
||
'--'
}}
</div>
</
template
>
</tables>
</div>
...
...
@@ -33,7 +33,7 @@
<
script
>
import
mixin
from
'../mixins/mixin'
import
{
getOption
,
getList
}
from
'@/api/detail/party-a/dealings'
import
{
historySendProvince
,
historySendPage
}
from
'@/api/detail/party-a/dealings'
export
default
{
name
:
'Hiscontract'
,
props
:
[
'companyId'
],
...
...
@@ -45,25 +45,26 @@ export default {
return
{
queryParams
:
{
cid
:
this
.
companyId
,
sort
:
3
,
pageNum
:
1
,
pageSize
:
10
},
forData
:
[
{
label
:
'项目名称'
,
prop
:
'
custom
Name'
,
minWidth
:
'560'
,
slot
:
true
},
{
label
:
'中标时间'
,
prop
:
'w
ay'
,
minWidth
:
'100'
,
sortable
:
true
},
{
label
:
'中标企业'
,
prop
:
'
us
e'
,
minWidth
:
'320'
,
slot
:
true
},
{
label
:
'中标金额(万元)'
,
prop
:
'w
ay'
,
minWidth
:
'140'
,
sortable
:
true
},
{
label
:
'下浮率(%)'
,
prop
:
'
way'
,
minWidth
:
'120'
,
sortable
:
true
},
{
label
:
'项目经理 / 负责人'
,
prop
:
'
way
'
,
minWidth
:
'130'
},
{
label
:
'中标地区'
,
prop
:
'
way
'
,
minWidth
:
'160'
},
{
label
:
'工期(天)'
,
prop
:
'
way'
,
minWidth
:
'110'
,
sortable
:
true
},
{
label
:
'业绩类别'
,
prop
:
'
way
'
,
minWidth
:
'110'
}
{
label
:
'项目名称'
,
prop
:
'
projectAll
Name'
,
minWidth
:
'560'
,
slot
:
true
},
{
label
:
'中标时间'
,
prop
:
'w
inBidTime'
,
minWidth
:
'100'
,
sortable
:
'custom'
},
{
label
:
'中标企业'
,
prop
:
'
companyNam
e'
,
minWidth
:
'320'
,
slot
:
true
},
{
label
:
'中标金额(万元)'
,
prop
:
'w
inBidAmount'
,
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
:
'
region'
,
value
:
''
,
placeholder
:
'项目地区'
,
options
:
[]
},
{
type
:
1
,
fieldName
:
'time'
,
value
:
''
,
placeholder
:
'中标时间'
,
options
:
[]
},
{
type
:
1
,
fieldName
:
'amount'
,
value
:
''
,
placeholder
:
'中标金额'
,
options
:
[]
},
{
type
:
3
,
fieldName
:
'keys'
,
value
:
''
,
placeholder
:
'输入关键词查询'
,
options
:
[]
},
{
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
,
...
...
@@ -78,45 +79,26 @@ export default {
this
.
handleQuery
()
},
methods
:
{
handleOption
(){
getOption
().
then
((
res
)
=>
{
this
.
setFormData
(
'region'
,
[
{
name
:
'类别1'
,
value
:
'1'
},
{
name
:
'类别2'
,
value
:
'2'
},
{
name
:
'类别3'
,
value
:
'3'
},
{
name
:
'类别4'
,
value
:
'4'
}
])
this
.
setFormData
(
'time'
,
[
{
name
:
'类别1'
,
value
:
'1'
},
{
name
:
'类别2'
,
value
:
'2'
},
{
name
:
'类别3'
,
value
:
'3'
},
{
name
:
'类别4'
,
value
:
'4'
}
])
this
.
setFormData
(
'amount'
,
[
{
name
:
'类别1'
,
value
:
'1'
},
{
name
:
'类别2'
,
value
:
'2'
},
{
name
:
'类别3'
,
value
:
'3'
},
{
name
:
'类别4'
,
value
:
'4'
}
])
})
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
)
}
},
handleQuery
(
params
)
{
async
handleQuery
(
params
)
{
this
.
tableLoading
=
true
let
param
=
params
?
params
:
this
.
queryParams
getList
(
param
).
then
((
res
)
=>
{
this
.
tableLoading
=
false
this
.
tableData
=
[
{
customId
:
'1'
,
customName
:
'滨州医学院口腔医学大楼铝合金门窗供货及安装'
,
use
:
'城镇住宅用地'
,
type
:
'房地产业'
,
way
:
'挂牌出让'
,
count
:
4
}
]
this
.
tableDataTotal
=
100
})
let
res
=
await
historySendPage
(
param
)
this
.
tableLoading
=
false
if
(
res
.
code
==
200
){
this
.
tableData
=
res
.
rows
}
this
.
tableDataTotal
=
res
.
total
}
}
}
...
...
dsk-operate-ui/src/views/detail/party-a/dealings/supplier.vue
View file @
fbfb6af1
...
...
@@ -59,9 +59,9 @@ export default {
},
forData
:
[
{
label
:
'供应商'
,
prop
:
'companyName'
,
minWidth
:
'350'
,
slot
:
true
},
{
label
:
'合作项目/工程名称'
,
prop
:
'projectAllName'
,
minWidth
:
'400'
,
sortable
:
true
,
slot
:
true
},
{
label
:
'合作总金额(万元)'
,
prop
:
'amount'
,
minWidth
:
'150'
,
sortable
:
true
},
{
label
:
'最近一次合作时间'
,
prop
:
'time'
,
minWidth
:
'140'
,
sortable
:
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
:
[]},
...
...
dsk-operate-ui/src/views/detail/party-a/mixins/mixin.js
View file @
fbfb6af1
...
...
@@ -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/announcement.vue
View file @
fbfb6af1
...
...
@@ -44,8 +44,8 @@ export default {
},
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 @
fbfb6af1
...
...
@@ -44,11 +44,11 @@ export default {
},
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 @
fbfb6af1
...
...
@@ -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 @
fbfb6af1
...
...
@@ -44,10 +44,10 @@ export default {
},
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-system/src/main/java/com/dsk/system/service/EconomicService.java
View file @
fbfb6af1
...
...
@@ -29,7 +29,7 @@ public interface EconomicService {
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult
yearsList
();
AjaxResult
yearsList
(
OpRegionalEconomicDataYearsListDto
dataYearsListDto
);
/***
...
...
dsk-system/src/main/java/com/dsk/system/service/impl/BusinessInfoServiceImpl.java
View file @
fbfb6af1
...
...
@@ -19,6 +19,7 @@ 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
;
...
...
@@ -192,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/EconomicServiceImpl.java
View file @
fbfb6af1
...
...
@@ -35,8 +35,8 @@ public class EconomicServiceImpl implements EconomicService {
}
@Override
public
AjaxResult
yearsList
()
{
Map
<
String
,
Object
>
map
=
dskOpenApiUtil
.
requestBody
(
"/economic/years/list"
,
null
);
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
);
}
...
...
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