Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
web-ci-test
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
test-ci
web-ci-test
Commits
0b24ec1d
提交
0b24ec1d
authored
6月 12, 2023
作者:
曹云
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
ssh://git.mmcuav.cn:8222/iuav/csf-web
into caoyun
上级
3d05695e
6b960fcd
隐藏空白字符变更
内嵌
并排
正在显示
10 个修改的文件
包含
318 行增加
和
329 行删除
+318
-329
index.tsx
components/NavHeader/publishModal/index.tsx
+0
-1
index.page.tsx
pages/certification/index.page.tsx
+6
-2
[id].page.tsx
pages/mall/detail/[id].page.tsx
+207
-214
index.tsx
pages/mall/detail/components/intentionModal/index.tsx
+62
-99
index.tsx
pages/mall/detail/components/orderForGoods/index.tsx
+1
-1
index.tsx
pages/personalCenter/components/sider/index.tsx
+3
-3
index.page.tsx
pages/personalCenter/leasingOrders/index.page.tsx
+10
-1
index.page.tsx
pages/personalCenter/mallOrders/index.page.tsx
+13
-2
index.ts
pages/personalCenter/servicesOrders/api/index.ts
+2
-0
index.page.tsx
pages/personalCenter/servicesOrders/index.page.tsx
+14
-6
没有找到文件。
components/NavHeader/publishModal/index.tsx
浏览文件 @
0b24ec1d
...
...
@@ -23,7 +23,6 @@ export default function PublishModal(props: Props) {
const
position
=
useGeolocation
();
const
{
reloadRequirements
,
setReloadRequirements
}
=
useContext
(
CommonContext
);
console
.
log
(
"position"
,
position
);
useEffect
(()
=>
{
api
.
listType
().
then
((
res
)
=>
{
...
...
pages/certification/index.page.tsx
浏览文件 @
0b24ec1d
...
...
@@ -21,9 +21,13 @@ import Router from "next/router";
import
{
UserContext
}
from
"~/lib/userProvider"
;
const
beforeUpload
=
(
file
:
RcFile
)
=>
{
const
isJpgOrPng
=
file
.
type
===
"image/jpeg"
||
file
.
type
===
"image/png"
;
const
isJpgOrPng
=
file
.
type
===
"image/jpeg"
||
file
.
type
===
"image/png"
||
file
.
type
===
"image/bmp"
||
file
.
type
===
"image/gif"
if
(
!
isJpgOrPng
)
{
message
.
error
(
"
You can only upload JPG/PNG file!
"
);
message
.
error
(
"
请上传10M以内的JPG、JPEG、BMP、GIF、PNG格式图片
"
);
}
//限制上传10M
const
isLt2M
=
file
.
size
/
1024
/
1024
<
10
;
...
...
pages/mall/detail/[id].page.tsx
浏览文件 @
0b24ec1d
import
styles
from
'./index.module.scss'
import
Layout
from
'~/components/layout'
import
{
Space
,
Image
as
AImage
,
Row
,
Col
,
Button
,
Divider
,
Badge
}
from
'antd'
import
{
useContext
,
useEffect
,
useState
}
from
'react'
import
{
DownOutlined
,
RightOutlined
}
from
'@ant-design/icons'
import
Image
from
'next/image'
import
errImg
from
'~/assets/errImg'
import
{
useRouter
}
from
'next/router'
import
styles
from
"./index.module.scss"
;
import
Layout
from
"~/components/layout"
;
import
{
Space
,
Image
as
AImage
,
Row
,
Col
,
Button
,
Divider
,
Badge
}
from
"antd"
;
import
{
useContext
,
useEffect
,
useState
}
from
"react"
;
import
{
DownOutlined
,
RightOutlined
}
from
"@ant-design/icons"
;
import
Image
from
"next/image"
;
import
errImg
from
"~/assets/errImg"
;
import
{
useRouter
}
from
"next/router"
;
// Import Swiper React components
import
{
Swiper
,
SwiperSlide
}
from
'swiper/react'
import
{
Navigation
}
from
'swiper'
import
OrderForGoods
from
'./components/orderForGoods'
import
{
Swiper
,
SwiperSlide
}
from
"swiper/react"
;
import
{
Navigation
}
from
"swiper"
;
// Import Swiper styles
import
'swiper/css'
import
'swiper/css/navigation'
import
api
,
{
GetLeaseGoodsDetailResp
}
from
'./api'
import
IntentionModal
from
'./components/intentionModal'
import
{
UserContext
}
from
'~/lib/userProvider'
import
"swiper/css"
;
import
"swiper/css/navigation"
;
import
api
,
{
GetLeaseGoodsDetailResp
,
ProductSpecList
}
from
"./api"
;
import
IntentionModal
from
"./components/intentionModal"
;
import
{
UserContext
}
from
"~/lib/userProvider"
;
export
default
function
MallDetail
()
{
const
{
userInfo
,
setNeedLogin
}
=
useContext
(
UserContext
)
const
[
visible
,
setVisible
]
=
useState
(
false
)
//商品图预览
const
router
=
useRouter
()
const
[
id
,
setId
]
=
useState
<
number
|
null
>
(
null
)
const
[
detail
,
setDetail
]
=
useState
<
GetLeaseGoodsDetailResp
|
null
>
(
null
)
//详情数据
const
[
intentionModalOpen
,
setIntentionModalOpen
]
=
useState
(
false
)
//意向弹窗
const
[
productImg
,
setProductImg
]
=
useState
(
''
)
//展示的商品图
const
{
userInfo
,
setNeedLogin
}
=
useContext
(
UserContext
);
const
[
visible
,
setVisible
]
=
useState
(
false
);
//商品图预览
const
router
=
useRouter
();
const
[
id
,
setId
]
=
useState
<
number
|
null
>
(
null
);
const
[
detail
,
setDetail
]
=
useState
<
GetLeaseGoodsDetailResp
|
null
>
(
null
);
//详情数据
const
[
intentionModalOpen
,
setIntentionModalOpen
]
=
useState
(
false
);
//意向弹窗
const
[
productImg
,
setProductImg
]
=
useState
(
""
);
//展示的商品图
const
[
previewIndex
,
setPreviewIndex
]
=
useState
(
0
);
//预览开始索引
const
[
checkItems
,
setCheckItems
]
=
useState
<
ProductSpecList
[]
>
([]);
//选中的规格
const
[
specCount
,
setSpecCount
]
=
useState
(
0
);
//规格数量
useEffect
(()
=>
{
if
(
detail
)
{
let
count
=
0
;
detail
.
goodsSpec
?.
forEach
((
good
)
=>
{
good
.
productSpecList
?.
forEach
((
product
)
=>
{
count
++
;
});
});
setSpecCount
(
count
);
}
},
[
detail
]);
//打开意向modal
const
openIntentionModal
=
()
=>
{
if
(
userInfo
)
{
setIntentionModalOpen
(
true
)
setIntentionModalOpen
(
true
)
;
}
else
{
setNeedLogin
(
true
)
setNeedLogin
(
true
)
;
}
}
}
;
//提交意向
const
handleIntentionOk
=
()
=>
{
setIntentionModalOpen
(
false
)
}
setIntentionModalOpen
(
false
)
;
}
;
const
handleIntentionCancel
=
()
=>
{
setIntentionModalOpen
(
false
)
}
setIntentionModalOpen
(
false
)
;
}
;
useEffect
(()
=>
{
setId
(
Number
(
router
.
query
.
id
))
},
[
router
])
setId
(
Number
(
router
.
query
.
id
))
;
},
[
router
])
;
useEffect
(()
=>
{
if
(
id
)
{
...
...
@@ -57,23 +71,12 @@ export default function MallDetail() {
type
:
0
,
})
.
then
((
res
)
=>
{
setDetail
(
res
.
result
||
null
)
setProductImg
(
res
.
result
?.
images
?.[
0
]?.
imgUrl
||
''
)
const
wareList
=
res
.
result
?.
goodsSpec
.
map
(
(
item
)
=>
item
.
productSpecList
)
if
(
wareList
)
{
const
List
:
any
=
wareList
.
flat
()
setWareSkuList
(
List
)
}
})
setDetail
(
res
.
result
||
null
);
setProductImg
(
res
.
result
?.
images
?.[
0
]?.
imgUrl
||
""
);
});
}
},
[
id
])
},
[
id
])
;
//订单弹框
const
[
isorderForGoods
,
setIsorderForGoods
]
=
useState
(
false
)
const
[
wareSkuList
,
setWareSkuList
]
=
useState
<
any
>
()
const
[
mallDetail
,
setMallDetail
]
=
useState
<
any
>
()
return
(
<
Layout
>
{
/* 意向弹窗 */
}
...
...
@@ -82,189 +85,179 @@ export default function MallDetail() {
detail=
{
detail
}
onOk=
{
handleIntentionOk
}
onCancel=
{
handleIntentionCancel
}
setIsorderForGoods=
{
setIsorderForGoods
}
setMallDetail=
{
setMallDetail
}
onChange=
{
(
items
:
ProductSpecList
[])
=>
setCheckItems
(
items
)
}
></
IntentionModal
>
{
!
isorderForGoods
?
(
<
div
className=
"page"
style=
{
{
marginTop
:
20
,
backgroundColor
:
'#fff'
}
}
<
div
className=
"page"
style=
{
{
marginTop
:
20
,
backgroundColor
:
"#fff"
}
}
>
<
div
style=
{
{
display
:
"none"
}
}
>
<
AImage
.
PreviewGroup
preview=
{
{
visible
,
onVisibleChange
:
(
vis
)
=>
setVisible
(
vis
),
current
:
previewIndex
,
}
}
>
{
detail
?.
images
?.
map
((
item
)
=>
{
return
<
AImage
key=
{
item
.
id
}
src=
{
item
.
imgUrl
}
/>;
})
}
</
AImage
.
PreviewGroup
>
</
div
>
<
Space
size=
{
30
}
style=
{
{
padding
:
"22px 24px 0"
,
alignItems
:
"start"
}
}
>
<
div
style=
{
{
display
:
'none'
}
}
>
<
AImage
.
PreviewGroup
preview=
{
{
visible
,
onVisibleChange
:
(
vis
)
=>
setVisible
(
vis
)
}
}
{
/* 商品图 */
}
<
Space
size=
{
17
}
direction=
"vertical"
style=
{
{
width
:
300
}
}
>
<
AImage
preview=
{
{
visible
:
false
}
}
width=
{
300
}
height=
{
300
}
src=
{
productImg
}
onClick=
{
()
=>
setVisible
(
true
)
}
fallback=
{
errImg
}
style=
{
{
borderRadius
:
6
,
}
}
/>
<
Swiper
modules=
{
[
Navigation
]
}
spaceBetween=
{
6
}
slidesPerView=
{
5
}
onSlideChange=
{
()
=>
console
.
log
(
"slide change"
)
}
onSwiper=
{
(
swiper
)
=>
console
.
log
(
swiper
)
}
>
{
detail
?.
images
?.
map
((
item
)
=>
{
return
<
AImage
key=
{
item
.
id
}
src=
{
item
.
imgUrl
}
/>
{
detail
?.
images
?.
map
((
item
,
i
)
=>
{
return
(
<
SwiperSlide
key=
{
item
.
id
}
>
<
AImage
preview=
{
false
}
width=
{
50
}
height=
{
50
}
src=
{
item
.
imgUrl
}
fallback=
{
errImg
}
style=
{
{
cursor
:
"pointer"
}
}
onClick=
{
()
=>
{
setProductImg
(
item
.
imgUrl
),
setPreviewIndex
(
i
);
}
}
/>
</
SwiperSlide
>
);
})
}
</
AImage
.
PreviewGroup
>
</
div
>
<
Space
size=
{
30
}
style=
{
{
padding
:
'22px 24px 0'
,
alignItems
:
'start'
}
}
>
{
/* 商品图 */
}
<
Space
size=
{
17
}
direction=
"vertical"
style=
{
{
width
:
300
}
}
>
<
AImage
preview=
{
{
visible
:
false
}
}
width=
{
300
}
height=
{
300
}
src=
{
productImg
}
onClick=
{
()
=>
setVisible
(
true
)
}
fallback=
{
errImg
}
style=
{
{
borderRadius
:
6
,
}
}
/>
<
Swiper
modules=
{
[
Navigation
]
}
spaceBetween=
{
6
}
slidesPerView=
{
5
}
onSlideChange=
{
()
=>
console
.
log
(
'slide change'
)
}
onSwiper=
{
(
swiper
)
=>
console
.
log
(
swiper
)
}
>
{
detail
?.
images
?.
map
((
item
)
=>
{
return
(
<
SwiperSlide
key=
{
item
.
id
}
>
<
AImage
preview=
{
false
}
width=
{
50
}
height=
{
50
}
src=
{
item
.
imgUrl
}
fallback=
{
errImg
}
style=
{
{
cursor
:
'pointer'
}
}
onClick=
{
()
=>
setProductImg
(
item
.
imgUrl
)
}
</
Swiper
>
</
Space
>
<
Space
direction=
"vertical"
size=
{
17
}
>
<
div
className=
{
`${styles.font1} ${styles.ellipsis}`
}
>
{
detail
?.
goodsName
}
</
div
>
<
div
className=
{
`${styles.font2} ${styles.ellipsis2}`
}
style=
{
{}
}
>
{
detail
?.
goodsDetail
?.
goodsDesc
}
</
div
>
<
Space
size=
{
24
}
direction=
"vertical"
style=
{
{
padding
:
"24px 40px 0px 0"
,
width
:
470
,
}
}
>
<
Row
wrap=
{
false
}
justify=
"space-between"
>
<
Col
span=
{
12
}
>
<
Row
>
<
Col
flex=
"60px"
className=
{
styles
.
font3
}
>
选择
</
Col
>
<
Col
flex=
"auto"
className=
{
styles
.
font4
}
style=
{
{}
}
>
已选:
{
checkItems
.
length
}
件
</
Col
>
</
Row
>
</
Col
>
<
Col
>
<
Row
align=
"middle"
style=
{
{
cursor
:
"pointer"
}
}
>
<
Col
className=
{
styles
.
font4
}
onClick=
{
openIntentionModal
}
>
共
{
specCount
}
种可选
</
Col
>
<
Col
style=
{
{
marginLeft
:
9
}
}
>
<
DownOutlined
style=
{
{
fontSize
:
12
,
color
:
"RGBA(219, 219, 219, 1)"
,
}
}
/>
</
SwiperSlide
>
)
})
}
</
Swiper
>
</
Col
>
</
Row
>
</
Col
>
</
Row
>
<
Row
wrap=
{
false
}
>
<
Col
flex=
"60px"
className=
{
styles
.
font3
}
>
送至
</
Col
>
<
Col
flex=
"auto"
style=
{
{
cursor
:
"pointer"
}
}
>
<
Space
size=
{
5
}
>
<
Image
alt=
""
width=
{
18
}
height=
{
18
}
src=
{
require
(
"./assets/locate.png"
)
}
></
Image
>
<
span
className=
{
`${styles.font3} ${styles.ellipsis}`
}
>
广东深圳市南山区万科云城创新谷6栋A座…
</
span
>
</
Space
>
<
div
className=
{
styles
.
font4
}
style=
{
{
marginTop
:
7
}
}
>
现货,22:00前下单,预计后天(8月30日)送达
</
div
>
</
Col
>
</
Row
>
</
Space
>
<
Space
direction=
"vertical"
size=
{
17
}
>
<
div
className=
{
`${styles.font1} ${styles.ellipsis}`
}
>
{
detail
?.
goodsName
}
</
div
>
<
div
className=
{
`${styles.font2} ${styles.ellipsis2}`
}
style=
{
{}
}
>
{
detail
?.
goodsDetail
?.
goodsDesc
}
</
div
>
<
Space
size=
{
24
}
direction=
"vertical"
style=
{
{
padding
:
'24px 40px 0px 0'
,
width
:
470
,
}
}
<
Space
size=
{
12
}
style=
{
{
marginTop
:
123
}
}
>
<
Button
className=
{
styles
.
btn1
}
onClick=
{
openIntentionModal
}
>
加入购物车
</
Button
>
<
Button
className=
{
styles
.
btn2
}
type=
"primary"
onClick=
{
openIntentionModal
}
>
<
Row
wrap=
{
false
}
justify=
"space-between"
>
<
Col
span=
{
12
}
>
<
Row
>
<
Col
flex=
"60px"
className=
{
styles
.
font3
}
>
选择
</
Col
>
<
Col
flex=
"auto"
className=
{
styles
.
font4
}
style=
{
{}
}
>
已选:1件
</
Col
>
</
Row
>
</
Col
>
<
Col
>
<
Row
align=
"middle"
style=
{
{
cursor
:
'pointer'
}
}
>
<
Col
className=
{
styles
.
font4
}
onClick=
{
openIntentionModal
}
>
共3种可选
</
Col
>
<
Col
style=
{
{
marginLeft
:
9
}
}
>
<
DownOutlined
style=
{
{
fontSize
:
12
,
color
:
'RGBA(219, 219, 219, 1)'
,
}
}
/>
</
Col
>
</
Row
>
</
Col
>
</
Row
>
<
Row
wrap=
{
false
}
>
<
Col
flex=
"60px"
className=
{
styles
.
font3
}
>
送至
</
Col
>
<
Col
flex=
"auto"
style=
{
{
cursor
:
'pointer'
}
}
>
<
Space
size=
{
5
}
>
<
Image
alt=
""
width=
{
18
}
height=
{
18
}
src=
{
require
(
'./assets/locate.png'
)
}
></
Image
>
<
span
className=
{
`${styles.font3} ${styles.ellipsis}`
}
>
广东深圳市南山区万科云城创新谷6栋A座…
</
span
>
</
Space
>
<
div
className=
{
styles
.
font4
}
style=
{
{
marginTop
:
7
}
}
>
现货,22:00前下单,预计后天(8月30日)送达
</
div
>
</
Col
>
</
Row
>
</
Space
>
<
Space
size=
{
12
}
style=
{
{
marginTop
:
123
}
}
>
<
Button
className=
{
styles
.
btn1
}
onClick=
{
openIntentionModal
}
>
加入购物车
</
Button
>
<
Button
className=
{
styles
.
btn2
}
type=
"primary"
onClick=
{
openIntentionModal
}
>
提交意向
</
Button
>
<
Space
size=
{
20
}
style=
{
{
marginLeft
:
19
}
}
>
<
div
style=
{
{
textAlign
:
'center'
,
cursor
:
'pointer'
}
}
>
提交意向
</
Button
>
<
Space
size=
{
20
}
style=
{
{
marginLeft
:
19
}
}
>
<
div
style=
{
{
textAlign
:
"center"
,
cursor
:
"pointer"
}
}
>
<
Image
alt=
""
src=
{
require
(
"./assets/phone.png"
)
}
width=
{
20
}
height=
{
20
}
></
Image
>
<
div
className=
{
styles
.
font5
}
style=
{
{
marginTop
:
5
}
}
>
电话
</
div
>
</
div
>
<
div
style=
{
{
textAlign
:
"center"
,
cursor
:
"pointer"
}
}
>
<
Badge
count=
{
55
}
size=
"small"
>
<
Image
alt=
""
src=
{
require
(
'./assets/phone.png'
)
}
src=
{
require
(
"./assets/car.png"
)
}
width=
{
20
}
height=
{
20
}
></
Image
>
<
div
className=
{
styles
.
font5
}
style=
{
{
marginTop
:
5
}
}
>
电话
</
div
>
</
Badge
>
<
div
className=
{
styles
.
font5
}
style=
{
{
marginTop
:
5
}
}
>
购物车
</
div
>
<
div
style=
{
{
textAlign
:
'center'
,
cursor
:
'pointer'
}
}
>
<
Badge
count=
{
55
}
size=
"small"
>
<
Image
alt=
""
src=
{
require
(
'./assets/car.png'
)
}
width=
{
20
}
height=
{
20
}
></
Image
>
</
Badge
>
<
div
className=
{
styles
.
font5
}
style=
{
{
marginTop
:
5
}
}
>
购物车
</
div
>
</
div
>
</
Space
>
</
div
>
</
Space
>
</
Space
>
</
Space
>
<
Divider
className=
{
styles
.
divider
}
>
商品详情
</
Divider
>
<
div
style=
{
{
textAlign
:
'center'
}
}
>
<
div
dangerouslySetInnerHTML=
{
{
__html
:
detail
?.
goodsDetail
?.
content
||
''
,
}
}
></
div
>
</
div
>
</
Space
>
<
Divider
className=
{
styles
.
divider
}
>
商品详情
</
Divider
>
<
div
style=
{
{
textAlign
:
"center"
}
}
>
<
div
dangerouslySetInnerHTML=
{
{
__html
:
detail
?.
goodsDetail
?.
content
||
""
,
}
}
>
</
div
>
</
div
>
)
:
(
//订单
<
OrderForGoods
setIsorderForGoods=
{
setIsorderForGoods
}
detailData=
{
detail
}
mallDetail=
{
mallDetail
}
/>
)
}
</
div
>
</
Layout
>
)
)
;
}
pages/mall/detail/components/intentionModal/index.tsx
浏览文件 @
0b24ec1d
import
{
Button
,
Col
,
Image
,
message
,
Modal
,
Row
,
Space
,
InputNumber
,
}
from
'antd'
import
{
Dispatch
,
SetStateAction
,
useEffect
,
useState
}
from
'react'
import
errImg
from
'~/assets/errImg'
import
{
GetLeaseGoodsDetailResp
,
ProductSpecList
}
from
'../../api'
import
styles
from
'./index.module.scss'
import
api
from
'./api'
import
Item
from
'antd/es/list/Item'
import
{
Button
,
Col
,
Image
,
message
,
Modal
,
Row
,
Space
}
from
"antd"
;
import
{
useEffect
,
useState
}
from
"react"
;
import
errImg
from
"~/assets/errImg"
;
import
{
GetLeaseGoodsDetailResp
,
ProductSpecList
}
from
"../../api"
;
import
styles
from
"./index.module.scss"
;
import
api
from
"./api"
;
import
Item
from
"antd/es/list/Item"
;
type
Props
=
{
open
?:
boolean
onOk
?:
()
=>
void
onCancel
:
()
=>
void
detail
:
GetLeaseGoodsDetailResp
|
null
setIsorderForGoods
:
Dispatch
<
SetStateAction
<
boolean
>>
setMallDetail
:
Dispatch
<
SetStateAction
<
any
>>
}
open
?:
boolean
;
onOk
?:
()
=>
void
;
onCancel
:
()
=>
void
;
detail
:
GetLeaseGoodsDetailResp
|
null
;
onChange
?:
(
checkItems
:
ProductSpecList
[])
=>
void
;
};
export
default
function
IntentionModal
(
props
:
Props
)
{
const
[
checkedMap
,
setCheckedMap
]
=
useState
<
{
string
?:
boolean
}
>
({})
//通过索引记录选中的产品规格 例: {'1,1': true|false} props.detail?.goodsSpec[1].productSpecList[1]
const
[
checkItems
,
setCheckItems
]
=
useState
<
ProductSpecList
[]
>
([])
//选中的规格
const
[
loading
,
setLoading
]
=
useState
(
false
)
//下单中
const
[
numValue
,
setNumValue
]
=
useState
<
number
|
null
>
(
1
)
//数量
const
[
checkedMap
,
setCheckedMap
]
=
useState
<
{
string
?:
boolean
}
>
({});
//通过索引记录选中的产品规格 例: {'1,1': true|false} props.detail?.goodsSpec[1].productSpecList[1]
const
[
checkItems
,
setCheckItems
]
=
useState
<
ProductSpecList
[]
>
([]);
//选中的规格
const
[
loading
,
setLoading
]
=
useState
(
false
);
//下单中
useEffect
(()
=>
{
let
list
:
ProductSpecList
[]
=
[]
let
list
:
ProductSpecList
[]
=
[]
;
Object
.
keys
(
checkedMap
).
forEach
((
key
)
=>
{
if
(
checkedMap
[
key
as
keyof
typeof
checkedMap
])
{
let
arr
=
key
.
split
(
','
)
let
arr
=
key
.
split
(
","
);
let
item
=
props
.
detail
?.
goodsSpec
[
Number
(
arr
[
0
])].
productSpecList
[
Number
(
arr
[
1
])
]
]
;
if
(
item
)
{
list
.
push
(
item
)
list
.
push
(
item
)
;
}
}
})
setCheckItems
(
list
)
setNumValue
(
1
)
},
[
checkedMap
])
})
;
setCheckItems
(
list
)
;
props
.
onChange
&&
props
.
onChange
(
list
);
},
[
checkedMap
])
;
//添加规格到购物车
function
addProductSpec
(
goodsSpecIndex
:
number
,
productSpecIndex
:
number
)
{
let
temp
=
{}
let
temp
=
{}
;
//@ts-ignore
temp
[
`
${
goodsSpecIndex
}
,
${
productSpecIndex
}
`
]
=
//@ts-ignore
!
checkedMap
[
`
${
goodsSpecIndex
}
,
${
productSpecIndex
}
`
]
!
checkedMap
[
`
${
goodsSpecIndex
}
,
${
productSpecIndex
}
`
]
;
setCheckedMap
({
...
checkedMap
,
...
temp
,
})
}
//数量
const
onChangeNum
=
(
value
:
number
|
null
)
=>
{
console
.
log
(
'changed'
,
value
)
setNumValue
(
value
)
});
}
//提交
function
onSubmit
()
{
let
buyNum
=
0
let
mallSpecIds
:
number
[]
=
[]
let
buyNum
=
0
;
let
mallSpecIds
:
number
[]
=
[]
;
Object
.
keys
(
checkedMap
).
forEach
((
key
)
=>
{
if
(
checkedMap
[
key
as
keyof
typeof
checkedMap
])
{
buyNum
++
let
arr
=
key
.
split
(
','
)
buyNum
++
;
let
arr
=
key
.
split
(
","
);
let
specId
=
props
.
detail
?.
goodsSpec
[
Number
(
arr
[
0
])].
productSpecList
[
Number
(
arr
[
1
])
].
id
].
id
;
if
(
specId
)
{
mallSpecIds
.
push
(
specId
)
mallSpecIds
.
push
(
specId
)
;
}
}
})
})
;
if
(
buyNum
>
0
)
{
setLoading
(
true
)
setLoading
(
true
)
;
api
.
commitMallOrder
({
buyNum
:
numValue
||
1
,
buyNum
,
directoryId
:
1
,
goodsInfoId
:
props
.
detail
!
.
id
,
mallSpecIds
,
userAddressId
:
1
,
})
.
then
((
res
)
=>
{
if
(
res
.
code
==
'200'
)
{
message
.
success
(
'提交意向成功'
)
if
(
res
.
code
==
"200"
)
{
message
.
success
(
"提交意向成功"
);
//重置为未选中
let
temp
=
{
...
checkedMap
,
}
}
;
Object
.
keys
(
temp
).
forEach
((
key
)
=>
{
temp
[
key
as
keyof
typeof
temp
]
=
false
})
setCheckedMap
(
temp
)
props
.
onCancel
()
props
.
setIsorderForGoods
(
true
)
props
.
setMallDetail
({
...
res
.
result
,
buyNum
:
numValue
||
1
,
directoryId
:
1
,
goodsInfoId
:
props
.
detail
!
.
id
,
mallSpecIds
,
userAddressId
:
1
,
})
temp
[
key
as
keyof
typeof
temp
]
=
false
;
});
setCheckedMap
(
temp
);
props
.
onCancel
();
}
else
{
}
setLoading
(
false
)
setLoading
(
false
)
;
})
.
catch
((
err
)
=>
{
message
.
error
(
'提交意向失败'
)
console
.
log
(
'err'
,
err
)
setLoading
(
false
)
})
message
.
error
(
"提交意向失败"
);
console
.
log
(
"err"
,
err
);
setLoading
(
false
)
;
})
;
}
}
...
...
@@ -136,20 +111,21 @@ export default function IntentionModal(props: Props) {
style=
{
{
padding
:
0
}
}
className=
{
styles
.
model
}
footer=
{
<
div
style=
{
{
padding
:
'13px 36px'
}
}
>
<
div
style=
{
{
padding
:
"13px 36px"
}
}
>
<
Button
type=
"primary"
className=
{
styles
.
font5
}
style=
{
{
width
:
'100%'
,
height
:
44
}
}
style=
{
{
width
:
"100%"
,
height
:
44
}
}
onClick=
{
onSubmit
}
loading=
{
loading
}
disabled=
{
checkItems
.
length
==
0
}
>
提交意向
</
Button
>
</
div
>
}
>
<
Row
style=
{
{
padding
:
'22px 39px 12px 39px'
}
}
wrap=
{
false
}
>
<
Row
style=
{
{
padding
:
"22px 39px 12px 39px"
}
}
wrap=
{
false
}
>
<
Col
>
<
Image
width=
{
100
}
...
...
@@ -170,12 +146,12 @@ export default function IntentionModal(props: Props) {
className=
{
`${styles.font2} ${styles.ellipsis2}`
}
style=
{
{
marginTop
:
7
}
}
>
已选:
{
' '
}
已选:
{
" "
}
{
checkItems
.
map
((
item
)
=>
{
return
item
.
specName
return
item
.
specName
;
})
.
join
(
'+'
)
}
.
join
(
"+"
)
}
</
div
>
</
Col
>
</
Row
>
...
...
@@ -193,7 +169,7 @@ export default function IntentionModal(props: Props) {
>
{
item
.
goodsSpecName
}
</
div
>
<
Space
size=
{
10
}
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Space
size=
{
10
}
direction=
"vertical"
style=
{
{
width
:
"100%"
}
}
>
{
item
.
productSpecList
?.
map
((
product
,
productSpecIndex
)
=>
{
return
(
<
Row
...
...
@@ -206,10 +182,10 @@ export default function IntentionModal(props: Props) {
border
:
checkedMap
[
`${goodsSpecIndex},${productSpecIndex}`
]
?
'1px solid #FF552D'
:
'1px solid #d6d6d6'
,
?
"1px solid #FF552D"
:
"1px solid #d6d6d6"
,
height
:
50
,
cursor
:
'pointer'
,
cursor
:
"pointer"
,
}
}
onClick=
{
()
=>
addProductSpec
(
goodsSpecIndex
,
productSpecIndex
)
...
...
@@ -231,27 +207,14 @@ export default function IntentionModal(props: Props) {
{
product
.
specName
}
</
Col
>
</
Row
>
)
)
;
})
}
</
Space
>
</
div
>
)
)
;
})
}
<
div
className=
{
styles
.
numBox
}
>
<
div
className=
{
styles
.
numLeft
}
>
<
div
className=
{
styles
.
label
}
>
租赁数量
</
div
>
</
div
>
<
div
className=
{
styles
.
numRight
}
>
<
InputNumber
min=
{
1
}
max=
{
100
}
value=
{
numValue
}
onChange=
{
onChangeNum
}
/>
</
div
>
</
div
>
</
div
>
</
div
>
</
Modal
>
)
)
;
}
pages/mall/detail/components/orderForGoods/index.tsx
浏览文件 @
0b24ec1d
...
...
@@ -177,7 +177,7 @@ export default function OrderForGoods(props: PropsBox) {
</
div
>
</
div
>
{
mallDetail
.
orderGoodsProdDetailDTOS
.
map
((
item
:
any
)
=>
(
<
div
className=
"table-body"
>
<
div
className=
"table-body"
key=
{
item
.
id
}
>
<
div
className=
"body-item article"
style=
{
{
width
:
290
}
}
>
<
div
className=
"image"
>
<
Image
...
...
pages/personalCenter/components/sider/index.tsx
浏览文件 @
0b24ec1d
...
...
@@ -26,15 +26,15 @@ const items: MenuItem[] = [
getItem
(
"服务订单"
,
"/personalCenter/servicesOrders"
),
getItem
(
"租赁订单"
,
"/personalCenter/leasingOrders"
),
getItem
(
"商城订单"
,
"/personalCenter/mallOrders"
),
getItem
(
"培训订单"
,
"/personalCenter/trainOrders"
),
//
getItem("培训订单", "/personalCenter/trainOrders"),
]),
getItem
(
"账户信息"
,
"2"
),
/*
getItem("账户信息", "2"),
getItem("优惠券卡包", "3"),
getItem("福利活动", "4"),
getItem("身份认证", "5"),
getItem("客服中心", "6"),
getItem("推广海报", "7"),
getItem
(
"副业赚钱"
,
"8"
),
getItem("副业赚钱", "8"),
*/
];
type
MenuItem
=
Required
<
MenuProps
>
[
"items"
][
number
];
...
...
pages/personalCenter/leasingOrders/index.page.tsx
浏览文件 @
0b24ec1d
...
...
@@ -20,6 +20,7 @@ import api, { LeasingList, ListTranStatusResp } from "./api";
import
moment
from
"moment"
;
import
PayModal
from
"./components/payModal"
;
import
RefundModal
from
"./components/refundModal"
;
import
Moment
from
'moment'
;
const
items
:
TabsProps
[
"items"
]
=
[
{
...
...
@@ -221,7 +222,15 @@ export default function LeasingOrders() {
background
:
"#EBF8FF"
,
}
}
>
<
div
className=
{
styles
.
font2
}
>
2021-10-21 12:21:10
</
div
>
<
div
className=
{
styles
.
font2
}
>
<
Space
size=
{
10
}
>
<
div
>
{
Moment
(
item
.
startDate
).
format
(
"YYYY-MM-DD"
)
}
至
{
" "
}
{
Moment
(
item
.
endDate
).
format
(
"YYYY-MM-DD"
)
}
</
div
>
<
div
>
订单编号:
{
item
.
orderNo
}
</
div
>
</
Space
>
{
" "
}
</
div
>
<
div
className=
{
styles
.
font3
}
>
{
tranStatusMap
.
find
(
...
...
pages/personalCenter/mallOrders/index.page.tsx
浏览文件 @
0b24ec1d
...
...
@@ -141,8 +141,19 @@ export default function LeasingOrder() {
background
:
"#EBF8FF"
,
}
}
>
<
div
className=
{
styles
.
font2
}
>
{
item
.
createTime
}
</
div
>
<
div
className=
{
styles
.
font3
}
>
{
tranStatusMap
.
find
(
status
=>
status
.
code
===
item
.
statusCode
)?.
status
}
</
div
>
<
div
className=
{
styles
.
font2
}
>
<
Space
size=
{
10
}
>
<
div
>
{
item
.
createTime
}
</
div
>
<
div
>
订单编号:
{
item
.
orderNo
}
</
div
>
</
Space
>
</
div
>
<
div
className=
{
styles
.
font3
}
>
{
tranStatusMap
.
find
(
(
status
)
=>
status
.
code
===
item
.
statusCode
)?.
status
}
</
div
>
</
Row
>
<
Row
style=
{
{
minHeight
:
100
,
border
:
"1px solid #D0EAF5"
}
}
...
...
pages/personalCenter/servicesOrders/api/index.ts
浏览文件 @
0b24ec1d
...
...
@@ -15,6 +15,7 @@ export interface QueryOrderTaskListResp {
}
export
interface
OrderList
{
id
:
number
;
address
:
string
;
city
:
string
;
endTime
:
string
;
...
...
@@ -29,6 +30,7 @@ export interface OrderList {
province
:
string
;
startTime
:
string
;
taskDescription
:
string
;
coverPlan
:
string
;
}
...
...
pages/personalCenter/servicesOrders/index.page.tsx
浏览文件 @
0b24ec1d
...
...
@@ -18,7 +18,7 @@ import LayoutView from "~/components/layout";
import
Sider
from
"../components/sider"
;
import
api
,
{
OrderList
,
GetServiceOrderStatusResp
}
from
"./api"
;
import
styles
from
"./index.module.scss"
;
import
Moment
from
'moment'
;
import
Moment
from
"moment"
;
const
items
:
TabsProps
[
"items"
]
=
[
{
...
...
@@ -55,7 +55,9 @@ export default function ServicesOrder() {
const
[
orderList
,
setOrderList
]
=
useState
<
OrderList
[]
>
([]);
const
[
loading
,
setLoading
]
=
useState
(
false
);
const
[
orderNo
,
setOrderNo
]
=
useState
<
string
|
undefined
>
();
const
[
tranStatusMap
,
setTranStatusMap
]
=
useState
<
GetServiceOrderStatusResp
[]
>
([]);
//订单状态字典
const
[
tranStatusMap
,
setTranStatusMap
]
=
useState
<
GetServiceOrderStatusResp
[]
>
([]);
//订单状态字典
//获取订单状态字典
useEffect
(()
=>
{
...
...
@@ -87,6 +89,7 @@ export default function ServicesOrder() {
}
)
.
then
((
res
)
=>
{
console
.
log
(
", res.result?.list"
,
res
.
result
?.
list
);
setOrderList
(
res
.
result
?.
list
||
[]);
setTotal
(
res
.
result
?.
totalCount
||
0
);
setLoading
(
false
);
...
...
@@ -132,7 +135,7 @@ export default function ServicesOrder() {
<
ul
className=
{
styles
.
orderList
}
style=
{
{
minHeight
:
650
}
}
>
{
orderList
.
map
((
item
)
=>
{
return
(
<
li
key=
{
item
.
i
nspectionI
d
}
className=
{
styles
.
orderItem
}
>
<
li
key=
{
item
.
id
}
className=
{
styles
.
orderItem
}
>
<
Row
justify=
"space-between"
align=
"middle"
...
...
@@ -143,8 +146,13 @@ export default function ServicesOrder() {
}
}
>
<
div
className=
{
styles
.
font2
}
>
{
Moment
(
item
.
startTime
).
format
(
"YYYY/MM/DD"
)
}
-
{
" "
}
{
Moment
(
item
.
endTime
).
format
(
"YYYY/MM/DD"
)
}
<
Space
size=
{
10
}
>
<
div
>
{
Moment
(
item
.
startTime
).
format
(
"YYYY-MM-DD"
)
}
至
{
" "
}
{
Moment
(
item
.
endTime
).
format
(
"YYYY-MM-DD"
)
}
</
div
>
<
div
>
订单编号:
{
item
.
orderNo
}
</
div
>
</
Space
>
</
div
>
<
div
className=
{
styles
.
font3
}
>
{
...
...
@@ -165,7 +173,7 @@ export default function ServicesOrder() {
height=
{
80
}
preview=
{
false
}
fallback=
{
errImg
}
src=
{
item
.
images
[
0
]
}
src=
{
item
.
coverPlan
}
></
Image
>
</
div
>
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论