Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
web-ci-test
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
test-ci
web-ci-test
Commits
9504e90b
提交
9504e90b
authored
6月 12, 2023
作者:
翁进城
浏览文件
操作
浏览文件
下载
差异文件
Merge remote-tracking branch 'origin/caoyun'
上级
2f6aff8c
d9226c99
显示空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
410 行增加
和
109 行删除
+410
-109
index.tsx
components/filter/compoents/typeInfo/index.tsx
+5
-5
index.tsx
...quipmentLeasing/detail/components/orderForGoods/index.tsx
+10
-9
index.tsx
pages/home/waterfallFlowBody/components/map/index.tsx
+1
-1
index.page.tsx
...lFlowBody/components/map/moreServicePoints/index.page.tsx
+8
-8
styled.tsx
pages/home/waterfallFlowBody/components/map/styled.tsx
+4
-9
index.tsx
pages/home/waterfallFlowBody/index.tsx
+28
-28
index.tsx
pages/jobServices/api/index.tsx
+26
-19
[id].page.tsx
pages/jobServices/detail/[id].page.tsx
+135
-28
index.tsx
pages/jobServices/detail/api/index.tsx
+9
-2
index.tsx
pages/jobServices/detail/components/map/index.tsx
+155
-0
styled.tsx
pages/jobServices/detail/components/map/styled.tsx
+29
-0
没有找到文件。
components/filter/compoents/typeInfo/index.tsx
浏览文件 @
9504e90b
...
...
@@ -23,7 +23,7 @@ export default function CategoryItem(props: Props) {
})
}
const
showCount
=
1
4
;
//展示数量
const
showCount
=
1
2
//展示数量
return
(
<
div
className=
{
styles
.
filterItem
}
>
...
...
@@ -37,7 +37,7 @@ export default function CategoryItem(props: Props) {
ghost
collapsible=
"icon"
expandIconPosition=
"end"
style=
{
{
width
:
"100%"
}
}
style=
{
{
width
:
'100%'
}
}
>
<
Collapse
.
Panel
header=
{
...
...
@@ -51,7 +51,7 @@ export default function CategoryItem(props: Props) {
>
{
item
.
name
}
</
Button
>
)
;
)
})
}
</
Space
>
}
...
...
@@ -67,12 +67,12 @@ export default function CategoryItem(props: Props) {
>
{
item
.
name
}
</
Button
>
)
;
)
})
}
</
Space
>
</
Collapse
.
Panel
>
</
Collapse
>
</
div
>
</
div
>
)
;
)
}
pages/equipmentLeasing/detail/components/orderForGoods/index.tsx
浏览文件 @
9504e90b
...
...
@@ -47,25 +47,25 @@ export default function OrderForGoods(props: PropsBox) {
if
(
detailData
&&
shopDetail
&&
list
&&
wareSkuList
)
{
const
pushList
=
{
actualPay
:
discount
?.
specPrice
[
0
].
price
!
*
shopDetail
?.
num
!
*
days
!
||
0
,
discount
?.
specPrice
[
0
]
?
.
price
!
*
shopDetail
?.
num
!
*
days
!
||
0
,
deposit
:
0
,
endDate
:
moment
(
new
Date
(
shopDetail
.
dateDetail
[
1
])).
format
(
'YYYY-MM-DD'
),
orderReceipt
:
{
detailAddress
:
list
[
value
].
takeAddress
,
detailAddress
:
list
[
value
]
?
.
takeAddress
,
receiptMethod
:
0
,
region
:
list
[
value
].
takeRegion
,
takeName
:
list
[
value
].
takeName
,
takePhone
:
Number
(
list
[
value
].
takePhone
),
},
rentPrice
:
discount
?.
specPrice
[
0
].
price
!
*
shopDetail
?.
num
!
*
days
!
||
0
,
discount
?.
specPrice
[
0
]
?
.
price
!
*
shopDetail
?.
num
!
*
days
!
||
0
,
returnDate
:
moment
(
new
Date
(
shopDetail
.
dateDetail
[
1
]).
getTime
()
+
864
e5
).
format
(
'YYYY-MM-DD'
),
shouldPay
:
discount
?.
specPrice
[
0
].
price
!
*
shopDetail
?.
num
!
*
days
!
||
0
,
discount
?.
specPrice
[
0
]
?
.
price
!
*
shopDetail
?.
num
!
*
days
!
||
0
,
specsId
:
wareSkuList
[
0
].
productSpec
,
startDate
:
moment
(
new
Date
(
shopDetail
.
dateDetail
[
0
]
!
)).
format
(
'YYYY-MM-DD'
...
...
@@ -228,7 +228,7 @@ export default function OrderForGoods(props: PropsBox) {
</
div
>
</
div
>
<
div
className=
"body-item"
style=
{
{
width
:
130
}
}
>
{
discount
?.
specPrice
[
0
].
price
||
0
}
{
discount
?.
specPrice
[
0
]
?
.
price
||
0
}
</
div
>
<
div
className=
"body-item"
style=
{
{
width
:
130
}
}
>
{
shopDetail
?.
num
||
1
}
...
...
@@ -243,7 +243,7 @@ export default function OrderForGoods(props: PropsBox) {
)
}
</
div
>
<
div
className=
"body-item total-price"
style=
{
{
width
:
135
}
}
>
{
discount
?.
specPrice
[
0
].
price
!
*
shopDetail
?.
num
!
*
days
!
||
0
}
{
discount
?.
specPrice
[
0
]
?
.
price
!
*
shopDetail
?.
num
!
*
days
!
||
0
}
</
div
>
</
div
>
</
div
>
...
...
@@ -282,13 +282,14 @@ export default function OrderForGoods(props: PropsBox) {
<
div
className=
"top"
>
<
div
className=
"label"
>
实付款
</
div
>
<
div
className=
"price"
>
¥
{
discount
?.
specPrice
[
0
].
price
!
*
shopDetail
?.
num
!
*
days
!
||
0
}
¥
{
discount
?.
specPrice
[
0
]?.
price
!
*
shopDetail
?.
num
!
*
days
!
||
0
}
</
div
>
</
div
>
<
div
className=
"bottom"
>
<
div
className=
"value"
>
寄送至
</
div
>
{
list
?
(
<
div
className=
"value-content"
>
{
list
!
[
value
].
takeAddress
}
</
div
>
<
div
className=
"value-content"
>
{
list
!
[
value
]
?
.
takeAddress
}
</
div
>
)
:
null
}
</
div
>
</
div
>
...
...
@@ -321,7 +322,7 @@ export default function OrderForGoods(props: PropsBox) {
]
}
>
<
div
className=
"title"
>
¥
{
discount
?.
specPrice
[
0
].
price
!
*
shopDetail
?.
num
!
*
days
!
||
0
}
¥
{
discount
?.
specPrice
[
0
]
?
.
price
!
*
shopDetail
?.
num
!
*
days
!
||
0
}
</
div
>
<
div
>
云享飞账号:
{
userInfo
?.
uid
}
</
div
>
<
div
>
付款方式: 可用(¥
{
paymentDetail
?.
balance
}
)
</
div
>
...
...
pages/home/waterfallFlowBody/components/map/index.tsx
浏览文件 @
9504e90b
...
...
@@ -92,7 +92,7 @@ export default function MapComponent() {
const
markerList
:
any
=
[]
if
(
list
?.
length
)
{
list
?.
map
((
item
)
=>
{
const
EntiyValue
=
addEntiy
(
item
.
lon
,
item
.
lat
,
item
.
address
)
const
EntiyValue
=
addEntiy
(
item
.
lon
,
item
.
lat
,
item
.
name
)
markerList
.
push
(
EntiyValue
)
})
if
(
markerList
.
length
)
MAP
?.
add
(
markerList
)
...
...
pages/home/waterfallFlowBody/components/map/moreServicePoints/index.page.tsx
浏览文件 @
9504e90b
...
...
@@ -94,7 +94,7 @@ export default function MoreServicePoints() {
const
markerList
:
any
=
[]
if
(
list
?.
length
)
{
list
?.
map
((
item
)
=>
{
const
EntiyValue
=
addEntiy
(
item
.
lon
,
item
.
lat
,
item
.
address
)
const
EntiyValue
=
addEntiy
(
item
.
lon
,
item
.
lat
,
item
.
name
)
markerList
.
push
(
EntiyValue
)
})
setServicePoints
(
list
)
...
...
@@ -144,7 +144,7 @@ export default function MoreServicePoints() {
const
markerList
:
any
=
[]
if
(
list
?.
length
)
{
list
?.
map
((
item
)
=>
{
const
EntiyValue
=
addEntiy
(
item
.
lon
,
item
.
lat
,
item
.
address
)
const
EntiyValue
=
addEntiy
(
item
.
lon
,
item
.
lat
,
item
.
name
)
markerList
.
push
(
EntiyValue
)
})
setServicePoints
(
list
)
...
...
@@ -215,12 +215,12 @@ export default function MoreServicePoints() {
var
infoWindow
=
new
Amap
.
InfoWindow
({
position
:
p
,
offset
:
new
Amap
.
Pixel
(
20
,
-
10
),
content
:
item
.
dizhi
||
item
.
flyerName
||
item
.
uavName
||
item
.
address
,
content
:
item
.
dizhi
||
item
.
flyerName
||
item
.
uavName
||
item
.
name
,
})
infoWindow
.
open
(
MAP
)
if
(
item
.
dizhi
)
{
return
MAP
?.
setCenter
([
item
.
jd
,
item
.
wd
])
}
else
if
(
item
.
flyerName
||
item
.
uavName
||
item
.
address
)
{
}
else
if
(
item
.
flyerName
||
item
.
uavName
||
item
.
name
)
{
return
MAP
?.
setCenter
([
item
.
lon
,
item
.
lat
])
}
return
message
.
warning
(
'暂无位置信息'
)
...
...
@@ -259,7 +259,7 @@ export default function MoreServicePoints() {
onClick=
{
()
=>
mapEntiy
(
3
)
}
className=
{
`item ${mapItem === 3 ? 'active' : ''}`
}
>
机构
网点
维修
网点
</
div
>
</
div
>
<
div
className=
"content"
>
...
...
@@ -267,7 +267,7 @@ export default function MoreServicePoints() {
{
mapItem
===
0
&&
<
div
className=
"left-title"
>
服务网点
</
div
>
}
{
mapItem
===
1
&&
<
div
className=
"left-title"
>
培训网点
</
div
>
}
{
mapItem
===
2
&&
<
div
className=
"left-title"
>
租赁网点
</
div
>
}
{
mapItem
===
3
&&
<
div
className=
"left-title"
>
机构
网点
</
div
>
}
{
mapItem
===
3
&&
<
div
className=
"left-title"
>
维修
网点
</
div
>
}
<
div
className=
"left-content"
>
{
servicePoints
.
map
((
item
:
any
,
index
:
number
)
=>
(
<
div
...
...
@@ -275,10 +275,10 @@ export default function MoreServicePoints() {
onClick=
{
()
=>
moveTo
(
item
,
index
)
}
className=
"left-content-item"
title=
{
item
.
dizhi
||
item
.
flyerName
||
item
.
uavName
||
item
.
address
item
.
dizhi
||
item
.
flyerName
||
item
.
uavName
||
item
.
name
}
>
{
item
.
dizhi
||
item
.
flyerName
||
item
.
uavName
||
item
.
address
}
{
item
.
dizhi
||
item
.
flyerName
||
item
.
uavName
||
item
.
name
}
</
div
>
))
}
</
div
>
...
...
pages/home/waterfallFlowBody/components/map/styled.tsx
浏览文件 @
9504e90b
import
styled
from
"styled-components"
;
import
styled
from
'styled-components'
export
default
function
Style
()
{
return
<></>
;
return
<></>
}
export
const
Box
=
styled
.
div
`
...
...
@@ -12,7 +12,7 @@ export const Box = styled.div`
position: relative;
padding: 0px;
margin: 0px;
width:
384px
;
width:
100%
;
height: 220px;
}
...
...
@@ -46,9 +46,4 @@ export const Box = styled.div`
color: #ff552d;
}
}
#container {
padding: 0px;
margin: 0px;
width: 100%;
}
`
;
`
pages/home/waterfallFlowBody/index.tsx
浏览文件 @
9504e90b
...
...
@@ -102,28 +102,28 @@ export default function WaterfallFlowBody() {
const
[
rightTopDomList
,
setRightTopDomList
]
=
useState
<
JSX
.
Element
>
()
const
[
rightBottomDomList
,
setRightBottomDomList
]
=
useState
<
JSX
.
Element
>
()
const
{
deviceBrand
,
deviceModel
}
=
equipmentLeasingApi
const
eqApiTypeList
=
[
'brandId'
,
'categoryId'
,
'modelId'
]
//
const { deviceBrand, deviceModel } = equipmentLeasingApi
//
const eqApiTypeList = ['brandId', 'categoryId', 'modelId']
const
{
listAllModel
,
listAllBrand
,
listAllCategory
,
listAllParts
,
listAllQuality
,
}
=
mallApi
const
mallApiTypeList
=
[
'brandId'
,
'productCategoryId'
,
'partsId'
,
'modelId'
,
'qualityId'
,
]
const
{
IndustryFlightSkills
,
InDronePilotLicense
}
=
flightSkillsApi
const
flightApiTypeList
=
[
'licenseId'
,
'flightSkillsId'
]
//
const {
//
listAllModel,
//
listAllBrand,
//
listAllCategory,
//
listAllParts,
//
listAllQuality,
//
} = mallApi
//
const mallApiTypeList = [
//
'brandId',
//
'productCategoryId',
//
'partsId',
//
'modelId',
//
'qualityId',
//
]
//
const { IndustryFlightSkills, InDronePilotLicense } = flightSkillsApi
//
const flightApiTypeList = ['licenseId', 'flightSkillsId']
const
{
listAllIndustry
,
listAllAppType
}
=
jobServicesApi
const
jobApiTypeList
=
[
'industryId'
,
'appTypeId'
]
//
const { listAllIndustry, listAllAppType } = jobServicesApi
//
const jobApiTypeList = ['industryId', 'appTypeId']
const
onMoreChange
=
(
value
:
{
value
:
string
;
label
:
number
},
...
...
@@ -228,35 +228,35 @@ export default function WaterfallFlowBody() {
useEffect
(()
=>
{
;(
async
()
=>
{
const
res1
=
await
api
.
HomeCategories
({
type
:
1
})
//无人机出租
const
res4
=
await
api
.
HomeCategories
({
type
:
4
})
//无人机销售
const
res2
=
await
api
.
HomeCategories
({
type
:
2
})
//无人机培训
const
res4
=
await
api
.
HomeCategories
({
type
:
4
})
//无人机销售
const
res1
=
await
api
.
HomeCategories
({
type
:
1
})
//无人机出租
const
res3
=
await
api
.
HomeCategories
({
type
:
3
})
//无人机服务
console
.
log
(
res1
,
res2
,
res3
,
res4
)
const
listOption
=
JSON
.
parse
(
JSON
.
stringify
(
list
)).
map
(
(
item
:
string
,
index
:
number
)
=>
{
return
{
id
:
index
,
n
ame
:
item
,
value
:
index
}
return
{
id
:
index
,
categoryN
ame
:
item
,
value
:
index
}
}
)
const
list2Option
=
JSON
.
parse
(
JSON
.
stringify
(
list2
)).
map
(
(
item
:
string
,
index
:
number
)
=>
{
return
{
id
:
index
,
n
ame
:
item
,
value
:
index
}
return
{
id
:
index
,
categoryN
ame
:
item
,
value
:
index
}
}
)
const
optionList
=
[
res
1
.
result
,
res
2
.
result
,
res4
.
result
,
listOption
,
res3
.
result
,
res
2
.
result
,
res
1
.
result
,
list2Option
,
]
const
listValue
:
any
=
[
res
1
.
result
,
res
2
.
result
,
res4
.
result
,
[],
res3
.
result
,
res
2
.
result
,
res
1
.
result
,
[],
]
setLeftDomList
(
...
...
pages/jobServices/api/index.tsx
浏览文件 @
9504e90b
import
request
,
{
Response
}
from
'~/api/request'
;
import
request
,
{
Response
}
from
'~/api/request'
export
interface
ListPageJobInfoParams
{
pageNo
:
number
,
pageSize
:
number
,
appTypeId
?:
number
,
industryId
?:
number
,
inspectionName
?:
string
,
string
?:
number
,
regionId
?:
number
,
pageNo
:
number
pageSize
:
number
appTypeId
?:
number
industryId
?:
number
inspectionName
?:
string
string
?:
number
regionId
?:
number
}
export
interface
Job
{
id
:
number
,
serviceName
:
string
,
teamName
:
string
,
price
:
number
,
id
:
number
serviceName
:
string
teamName
:
string
price
:
number
}
export
interface
ListPageJobInfoResp
{
pageNo
:
1
,
pageSize
:
10
,
list
:
Array
<
Job
>
,
totalCount
:
0
,
pageNo
:
1
pageSize
:
10
list
:
Array
<
Job
>
totalCount
:
0
totalPage
:
0
}
export
default
{
//web-作业服务-分页
listPageJobServicesInfo
:
(
params
:
ListPageJobInfoParams
,
option
:{}):
Promise
<
Response
<
ListPageJobInfoResp
>>
=>
{
return
request
(
'/release/work/queryTaskServiceList'
,
'post'
,
params
,
option
)
listPageJobServicesInfo
:
(
params
:
ListPageJobInfoParams
,
option
:
{}
):
Promise
<
Response
<
ListPageJobInfoResp
>>
=>
{
return
request
(
'/pms/backstage/work/queryWorkServiceList'
,
'post'
,
params
,
option
)
},
}
pages/jobServices/detail/[id].page.tsx
浏览文件 @
9504e90b
...
...
@@ -11,6 +11,7 @@ import {
DatePicker
,
Image
as
AImage
,
Input
,
Cascader
,
}
from
'antd'
import
{
RangePickerProps
}
from
'antd/es/date-picker'
import
type
{
TabsProps
}
from
'antd'
...
...
@@ -18,6 +19,8 @@ import Evaluate from './components/evaluate'
import
{
useRouter
}
from
'next/router'
import
api
,
{
ListPageJobInfoResp
}
from
'./api'
import
Image
from
'next/image'
import
{
RegionResp
}
from
'~/components/filter/api'
import
AddressMap
from
'./components/map'
const
{
RangePicker
}
=
DatePicker
const
{
TextArea
}
=
Input
export
default
function
JobServicesDetail
()
{
...
...
@@ -38,18 +41,19 @@ export default function JobServicesDetail() {
children
:
(
<
div
className=
"teamIntroduction"
>
{
/* <Image width={1100} height={800} src={detail?.teamPoster ? detail?.teamPoster : ''} alt='error'/> */
}
<
img
{
/*
<img
style={{ width: '100%' }}
src={detail?.teamPoster ? detail?.teamPoster : ''}
alt="error"
/>
/> */
}
{
detail
?.
serviceIntroduction
}
</
div
>
),
},
{
key
:
'2'
,
label
:
`团队评价`
,
children
:
<
Evaluate
evaluateInfo=
{
detail
?.
evaluateInfo
||
[]
}
/>,
children
:
<
Evaluate
evaluateInfo=
{
detail
?.
inspComtList
||
[]
}
/>,
},
]
...
...
@@ -75,34 +79,60 @@ export default function JobServicesDetail() {
const
[
isModalOpen
,
setIsModalOpen
]
=
useState
(
false
)
const
[
loading
,
setLoading
]
=
useState
(
false
)
const
[
areaValue
,
setAreaValue
]
=
useState
<
string
>
()
const
[
provinceList
,
setProvinceList
]
=
useState
<
RegionResp
[]
>
([])
const
[
isAddressMapShow
,
setIsAddressMapShow
]
=
useState
(
false
)
const
[
addressContent
,
setAddressContent
]
=
useState
<
any
>
()
useEffect
(()
=>
{
api
.
region
().
then
((
res
)
=>
{
console
.
log
(
res
)
console
.
log
(
res
?.
result
?.
map
((
item
)
=>
item
.
childInfo
).
flat
())
setProvinceList
(
res
?.
result
||
[])
})
},
[])
const
disabledDate
:
RangePickerProps
[
'disabledDate'
]
=
(
current
)
=>
{
return
current
&&
current
<
moment
().
endOf
(
'day'
)
}
useEffect
(()
=>
{
//选择地点后重新验证
formDate
.
setFieldValue
(
'latitudeAndLongitude'
,
addressContent
)
formDate
.
validateFields
()
},
[
addressContent
])
const
handleOk
=
()
=>
{
setLoading
(
true
)
formDate
.
validateFields
()
.
then
(
async
(
values
)
=>
{
console
.
log
(
values
)
if
(
!
addressContent
)
{
return
message
.
warning
(
'请选择地点'
)
}
const
res
=
await
api
.
insertOrderTask
({
address
:
'西丽街道'
,
city
:
'深圳'
,
inspectionId
:
1
,
lat
:
30
,
lon
:
120
,
province
:
'广东'
,
address
:
values
.
address
,
city
:
addressContent
.
city
,
inspectionId
:
detail
?.
id
||
1
,
lat
:
addressContent
.
lat
,
lon
:
addressContent
.
lon
,
province
:
addressContent
.
province
,
startTime
:
moment
(
new
Date
(
values
.
dateDetail
[
0
])).
format
(
'YYYY-MM-DD HH
-MM-
SS'
'YYYY-MM-DD HH
:MM:
SS'
),
endTime
:
moment
(
new
Date
(
values
.
dateDetail
[
1
])).
format
(
'YYYY-MM-DD HH
-MM-
SS'
'YYYY-MM-DD HH
:MM:
SS'
),
})
console
.
log
(
res
)
// formDate.resetFields()
// setLoading(false)
// setIsModalOpen(false)
if
(
res
.
code
===
'200'
)
{
message
.
success
(
'提交成功'
)
formDate
.
resetFields
()
setAddressContent
(
undefined
)
setLoading
(
false
)
setIsModalOpen
(
false
)
}
else
{
message
.
error
(
res
.
message
)
setLoading
(
false
)
}
})
.
catch
((
err
)
=>
{
message
...
...
@@ -117,15 +147,6 @@ export default function JobServicesDetail() {
setIsModalOpen
(
false
)
formDate
.
resetFields
()
}
const
onchanges
=
(
values
:
any
)
=>
{
if
(
values
)
{
const
day
=
new
Date
(
values
[
1
]).
getTime
()
-
new
Date
(
values
[
0
]).
getTime
()
const
totalDays
=
Math
.
floor
(
day
/
(
1000
*
3600
*
24
))
// setDays(totalDays)
}
else
{
// setDays(undefined)
}
}
return
(
<
Layout
>
...
...
@@ -134,7 +155,7 @@ export default function JobServicesDetail() {
<
div
className=
"top-image"
>
<
Image
fill
src=
{
detail
?.
pictureUrl
?
detail
?.
pictureUrl
:
''
}
src=
{
detail
?.
coverPlan
?
detail
?.
coverPlan
:
''
}
alt=
"error"
/>
</
div
>
...
...
@@ -199,7 +220,7 @@ export default function JobServicesDetail() {
<
div
className=
"left"
>
<
AImage
preview=
{
{
visible
:
false
}
}
src=
{
detail
?.
pictureUrl
?
detail
?.
pictureUrl
:
''
}
src=
{
detail
?.
coverPlan
?
detail
?.
coverPlan
:
''
}
onClick=
{
()
=>
setVisible
(
true
)
}
style=
{
{
width
:
58
,
height
:
58
}
}
/>
...
...
@@ -210,7 +231,7 @@ export default function JobServicesDetail() {
onVisibleChange
:
(
vis
)
=>
setVisible
(
vis
),
}
}
>
<
AImage
src=
{
detail
?.
pictureUrl
?
detail
?.
pictureUrl
:
''
}
/>
<
AImage
src=
{
detail
?.
coverPlan
?
detail
?.
coverPlan
:
''
}
/>
</
AImage
.
PreviewGroup
>
</
div
>
</
div
>
...
...
@@ -224,6 +245,7 @@ export default function JobServicesDetail() {
className=
"form-data"
>
<
Form
.
Item
label=
"选择日期"
style=
{
{
flex
:
1
,
marginRight
:
16
}
}
name=
"dateDetail"
rules=
{
[{
required
:
true
,
message
:
'请选择日期'
}]
}
...
...
@@ -231,10 +253,75 @@ export default function JobServicesDetail() {
<
RangePicker
style=
{
{
width
:
376
,
marginTop
:
10
}
}
disabledDate=
{
disabledDate
}
onChange=
{
onchanges
}
showTime
/>
</
Form
.
Item
>
{
/* <Form.Item
label="经度"
style={{ flex: 1, marginRight: 16 }}
name="lon"
rules={[{ required: true, message: '请输入经度' }]}
>
<Input placeholder="请输入经度" />
</Form.Item>
<Form.Item
label="纬度"
style={{ flex: 1, marginRight: 16 }}
name="lat"
rules={[{ required: true, message: '请输入纬度' }]}
>
<Input placeholder="请输入纬度" />
</Form.Item>
<Form.Item
label="选择省市"
style={{ flex: 1, marginRight: 16 }}
name="province"
rules={[{ required: true, message: '请选择省市' }]}
>
<Cascader
allowClear
placeholder="选择省市"
className="selectItem"
size="large"
fieldNames={{
label: 'name',
value: 'name',
children: 'childInfo',
}}
options={provinceList}
changeOnSelect
/>
</Form.Item> */
}
<
Form
.
Item
label=
"选择地点"
style=
{
{
flex
:
1
,
marginRight
:
16
}
}
name=
"latitudeAndLongitude"
rules=
{
[{
required
:
true
,
message
:
'请选择地点'
}]
}
>
{
addressContent
?
(
<
div
>
已选择:
{
addressContent
.
province
+
addressContent
.
city
}
</
div
>
)
:
(
<
Button
onClick=
{
()
=>
setIsAddressMapShow
(
true
)
}
type=
"text"
>
点击从地图选择地点
</
Button
>
)
}
</
Form
.
Item
>
<
Form
.
Item
label=
"详细地址"
style=
{
{
flex
:
1
,
marginRight
:
16
}
}
name=
"address"
rules=
{
[{
required
:
true
,
message
:
'请输入详情地址'
}]
}
>
<
TextArea
value=
{
areaValue
}
onChange=
{
(
e
)
=>
setAreaValue
(
e
.
target
.
value
)
}
placeholder=
"请输入详情地址"
autoSize=
{
{
minRows
:
3
,
maxRows
:
5
}
}
style=
{
{
width
:
385
,
height
:
72
}
}
/>
</
Form
.
Item
>
<
div
>
任务描述(选填) 项目号、 业务负责人、
客户名称、演示设备(注明飞机、挂载、地面站)、现场联系人及电话
...
...
@@ -253,6 +340,26 @@ export default function JobServicesDetail() {
</
Form
.
Item
>
</
Form
>
</
Modal
>
{
isAddressMapShow
?
(
<
Modal
wrapClassName=
"reservation"
open=
{
isAddressMapShow
}
onCancel=
{
()
=>
setIsAddressMapShow
(
false
)
}
getContainer=
{
false
}
maskClosable=
{
false
}
width=
{
850
}
footer=
{
false
}
>
<
div
style=
{
{
textAlign
:
'center'
,
fontWeight
:
'700'
}
}
>
选择地点
</
div
>
<
AddressMap
setAddressContent=
{
setAddressContent
}
setIsAddressMapShow=
{
setIsAddressMapShow
}
/>
</
Modal
>
)
:
null
}
</
Box
>
</
Layout
>
)
...
...
pages/jobServices/detail/api/index.tsx
浏览文件 @
9504e90b
import
request
,
{
Response
}
from
'~/api/request'
import
{
RegionResp
}
from
'~/components/filter/api'
export
interface
ListPageJobInfoParams
{
pageNo
:
number
pageSize
:
number
...
...
@@ -30,6 +30,9 @@ export interface ListPageJobInfoResp {
teamPoster
:
string
evaluateInfo
:
Array
<
JobDetail
>
item
:
number
coverPlan
:
string
serviceIntroduction
:
string
inspComtList
:
[]
}
export
interface
GetJobServicesDetailParams
{
...
...
@@ -53,10 +56,14 @@ export default {
listDetailJobServicesInfo
:
(
params
:
GetJobServicesDetailParams
):
Promise
<
Response
<
ListPageJobInfoResp
>>
=>
{
return
request
(
'/
release/work/selectInspection
'
,
'get'
,
params
)
return
request
(
'/
pms/backstage/work/queryWorkService
'
,
'get'
,
params
)
},
//web-作业服务-详情-立即预约
insertOrderTask
:
(
params
:
GetOrderTaskParams
):
Promise
<
Response
<
null
>>
=>
{
return
request
(
'/oms/serviceOrderTask/insertOrderTask'
,
'post'
,
params
)
},
//区域
region
:
():
Promise
<
Response
<
Array
<
RegionResp
>>>
=>
{
return
request
(
'/pms/webDevice/getSecondDistrictInfo'
)
},
}
pages/jobServices/detail/components/map/index.tsx
0 → 100644
浏览文件 @
9504e90b
import
React
,
{
Component
,
Dispatch
,
SetStateAction
,
useEffect
,
useState
,
}
from
'react'
import
{
message
}
from
'antd'
import
{
Box
}
from
'./styled'
import
{
useRouter
}
from
'next/router'
let
MAP
:
any
let
Amap
:
any
interface
UserInfoType
{
lat
:
number
lon
:
number
pageNo
?:
number
pageSize
?:
number
}
interface
BoxProps
{
setAddressContent
:
Dispatch
<
SetStateAction
<
any
>>
setIsAddressMapShow
:
Dispatch
<
SetStateAction
<
boolean
>>
}
export
default
function
MapComponent
(
props
:
BoxProps
)
{
const
{
setAddressContent
,
setIsAddressMapShow
}
=
props
const
router
=
useRouter
()
const
[
mapItem
,
setMapItem
]
=
useState
(
0
)
const
[
userPositioning
,
setUserPositioning
]
=
useState
<
UserInfoType
>
()
const
[
markerCol
,
setMarkerCol
]
=
useState
<
any
>
([])
//初始化地图
const
init
=
async
()
=>
{
try
{
const
AMapLoader
=
await
import
(
/* webpackChunkName: "amap" */
'@amap/amap-jsapi-loader'
)
await
AMapLoader
.
load
({
key
:
'87b424e68754efc3ba9d11ae07475091'
,
// 申请好的Web端开发者Key,首次调用 load 时必填
version
:
'2.0'
,
// 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
plugins
:
[
''
],
// 需要使用的的插件列表,如比例尺'AMap.Scale'等
})
.
then
(
async
(
AMap
)
=>
{
Amap
=
AMap
MAP
=
new
AMap
.
Map
(
'container'
,
{
// 设置地图容器id
viewMode
:
'3D'
,
// 是否为3D地图模式
zoom
:
9
,
// 初始化地图级别
center
:
[
113.93029
,
22.53291
],
// 初始化地图中心点位置
})
//用户定位
AMap
.
plugin
(
'AMap.Geolocation'
,
function
()
{
const
geolocation
=
new
AMap
.
Geolocation
({
enableHighAccuracy
:
true
,
//是否使用高精度定位,默认:true
timeout
:
10000
,
//超过10秒后停止定位,默认:5s
position
:
'RB'
,
//定位按钮的停靠位置
offset
:
[
10
,
20
],
//定位按钮与设置的停靠位置的偏移量,默认:[10, 20]
zoomToAccuracy
:
true
,
//定位成功后是否自动调整地图视野到定位点
})
MAP
.
addControl
(
geolocation
)
geolocation
.
getCurrentPosition
(
function
(
status
:
string
,
result
:
any
)
{
if
(
status
==
'complete'
)
{
onComplete
(
result
)
}
else
{
onError
(
result
)
}
})
})
//解析定位结果
async
function
onComplete
(
data
:
any
)
{
console
.
log
(
'定位成功'
)
setUserPositioning
(
data
.
position
)
// return await mapEntiy(0,data.position);
}
//解析定位错误信息
async
function
onError
(
data
:
any
)
{
// message.error(`定位失败
// 失败原因排查信息:${data.message}
// 浏览器返回信息:${data.originMessage}
// `)
}
await
mapEntiy
(
0
)
})
.
catch
((
e
)
=>
{
console
.
log
(
e
)
})
}
catch
(
error
)
{
console
.
log
(
error
)
}
}
//选择点位
const
mapEntiy
=
async
(
index
:
number
,
data
?:
UserInfoType
)
=>
{
MAP
.
on
(
'click'
,
mapGet
)
setMapItem
(
index
)
}
const
mapGet
=
(
e
:
any
)
=>
{
console
.
log
(
e
)
// 在这里获取点位信息
const
lnglat
=
e
.
lnglat
console
.
log
(
lnglat
)
const
geocoder
=
new
Amap
.
Geocoder
({
radius
:
1000
,
extensions
:
'all'
,
})
geocoder
.
getAddress
(
lnglat
,
function
(
status
:
any
,
result
:
any
)
{
if
(
status
===
'complete'
&&
result
.
regeocode
)
{
const
address
=
result
.
regeocode
.
addressComponent
console
.
log
(
address
.
province
)
console
.
log
(
address
.
city
)
setAddressContent
({
province
:
address
.
province
,
city
:
address
.
city
,
lon
:
lnglat
.
lng
,
lat
:
lnglat
.
lat
,
})
setIsAddressMapShow
(
false
)
// console.log(address.province + address.city + address.district) // 打印省市区信息
}
})
// MAP.off('click', mapGet); // 移除click事件
}
const
addEntiy
=
(
lon
:
any
,
lat
:
any
,
name
:
string
)
=>
{
if
(
!
Amap
)
return
const
icons
=
new
Amap
.
Icon
({
size
:
new
Amap
.
Size
(
60
,
60
),
// 图标尺寸
imageSize
:
new
Amap
.
Size
(
60
,
60
),
// 根据所设置的大小拉伸或压缩图片
})
const
marker
=
new
Amap
.
Marker
({
position
:
new
Amap
.
LngLat
(
lon
,
lat
),
offset
:
new
Amap
.
Pixel
(
-
10
,
-
10
),
icon
:
icons
,
// 添加 Icon 实例
title
:
name
,
zoom
:
13
,
})
return
marker
}
useEffect
(()
=>
{
;(
async
()
=>
{
await
init
()
})()
return
MAP
&&
MAP
.
destroy
()
},
[])
return
(
<
Box
className=
"right-box-item"
>
<
div
id=
"container"
className=
"map"
></
div
>
</
Box
>
)
}
pages/jobServices/detail/components/map/styled.tsx
0 → 100644
浏览文件 @
9504e90b
import
styled
from
'styled-components'
export
default
function
Style
()
{
return
<></>
}
export
const
Box
=
styled
.
div
`
box-sizing: border-box;
width: 800px;
height: 800px;
#container {
position: relative;
padding: 0px;
margin: 0px;
width: 100%;
height: 800px;
}
.amap-logo {
//去除高德地图水印
display: none !important;
visibility: hidden !important;
}
.amap-copyright {
//去除高德地图水印
display: none !important;
visibility: hidden !important;
}
`
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论