Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
jinfa-platform
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
黄庭坚
jinfa-platform
Commits
9463e013
Commit
9463e013
authored
Jun 25, 2021
by
alwayOnlie
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev-srm' of
http://10.0.0.22:3000/lingxi/lingxi-business-paltform
into dev-srm
parents
6ec88aa0
e7c35fdb
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
186 additions
and
37 deletions
+186
-37
index.less
src/components/AuditProcess/index.less
+14
-5
index.tsx
src/components/AuditProcess/index.tsx
+14
-2
add.tsx
src/pages/member/complaintsAndSuggests/common/schema/add.tsx
+4
-0
index.tsx
src/pages/member/memberEvaluate/tobeInformed/index.tsx
+1
-1
useBidDetail.tsx
src/pages/procurement/_public/bid/effects/useBidDetail.tsx
+9
-4
useConfirmDetail.ts
...pages/procurement/_public/bid/effects/useConfirmDetail.ts
+4
-2
index.ts
src/pages/procurement/callForBids/addNewBid/schema/index.ts
+1
-1
modal.ts
src/pages/procurement/callForBids/addNewBid/schema/modal.ts
+2
-2
useRemarkDetail.ts
.../callForBids/readyExpertRemark/effects/useRemarkDetail.ts
+4
-2
useNoticeDetail.ts
...callForBids/readySendBidNotice/effects/useNoticeDetail.ts
+4
-2
useReportDetail.ts
.../callForBids/readySubmitReport/effects/useReportDetail.ts
+4
-2
index.tsx
src/pages/procurement/components/bidDetailSection/index.tsx
+7
-5
index.tsx
src/pages/procurement/constants/index.tsx
+22
-0
index.tsx
...ity/logisticsBillSubmit/waitSbumitLogisticsBill/index.tsx
+9
-1
index.tsx
...saction/purchaseAbility/components/detail/modal/index.tsx
+5
-1
index.tsx
...ansaction/purchaseAbility/confirmOffer/contrast/index.tsx
+1
-1
index.tsx
...ction/purchaseAbility/onlineBid/readyBid/detail/index.tsx
+3
-2
index.tsx
...chaseBid/readyBid/management/components/rankRow/index.tsx
+3
-2
demand.tsx
...eAbility/purchaseInquiry/addInquiry/components/demand.tsx
+1
-1
index.ts
...s/transaction/purchaseOrder/orderCollect/effects/index.ts
+1
-1
im.tsx
src/utils/im.tsx
+73
-0
No files found.
src/components/AuditProcess/index.less
View file @
9463e013
.steps {
padding-top: 2px;
overflow: auto;
}
\ No newline at end of file
.steps {
padding-top: 2px;
overflow: auto;
:global {
.ant-steps-item-title {
margin-right: 16px;
// &:last-child {
// margin-right: 0px;
// }
}
}
}
src/components/AuditProcess/index.tsx
View file @
9463e013
...
...
@@ -8,6 +8,7 @@
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
Steps
,
Tooltip
,
}
from
'antd'
;
import
MellowCard
,
{
MellowCardProps
}
from
'@/components/MellowCard'
;
import
ButtonSwitch
from
'@/components/ButtonSwitch'
;
...
...
@@ -102,6 +103,17 @@ const AuditProcess: React.FC<AuditProcessProp> = ({
),
].
filter
(
Boolean
);
const
titleRender
=
(
stepTitle
:
string
,
stepLength
:
number
)
=>
{
if
(
stepLength
<=
6
)
{
return
<
span
>
{
stepTitle
}
</
span
>
}
return
(
<
Tooltip
placement=
"top"
title=
{
stepTitle
}
>
<
span
style=
{
{
maxWidth
:
'100px'
,
marginRight
:
'8px'
,
textAlign
:
'center'
}
}
>
{
`${stepTitle}`
}
</
span
>
</
Tooltip
>
)
}
return
(
<
MellowCard
title=
"流转进度"
...
...
@@ -120,7 +132,7 @@ const AuditProcess: React.FC<AuditProcessProp> = ({
{
outerVerifySteps
&&
outerVerifySteps
.
map
(
item
=>
(
<
Steps
.
Step
key=
{
customKey
?
item
[
customKey
]
:
item
.
step
}
title=
{
customTitleKey
?
item
[
customTitleKey
]
:
item
.
stepName
}
title=
{
titleRender
(
customTitleKey
?
item
[
customTitleKey
]
:
item
.
stepName
,
outerVerifySteps
.
length
)
}
description=
{
item
.
roleName
}
status=
{
item
.
status
}
/>
...
...
@@ -134,7 +146,7 @@ const AuditProcess: React.FC<AuditProcessProp> = ({
{
innerVerifySteps
&&
innerVerifySteps
.
map
(
item
=>
(
<
Steps
.
Step
key=
{
customKey
?
item
[
customKey
]
:
item
.
step
}
title=
{
customTitleKey
?
item
[
customTitleKey
]
:
item
.
stepName
}
title=
{
titleRender
(
customTitleKey
?
item
[
customTitleKey
]
:
item
.
stepName
,
innerVerifySteps
.
length
)
}
description=
{
item
.
roleName
}
status=
{
item
.
status
}
/>
...
...
src/pages/member/complaintsAndSuggests/common/schema/add.tsx
View file @
9463e013
...
...
@@ -192,6 +192,10 @@ export const complaintAddSchema: ISchema = {
{
limitByte
:
true
,
// 自定义校验规则
maxByte
:
60
},
{
required
:
true
,
message
:
"请填写事件描述"
}
]
},
...
...
src/pages/member/memberEvaluate/tobeInformed/index.tsx
View file @
9463e013
...
...
@@ -13,7 +13,7 @@ import { Link } from 'umi';
import
{
useAsyncSelect
}
from
'@/formSchema/effects/useAsyncSelect'
;
const
defaultColumns
=
setColumnsByLinks
({
detail
:
'/memberCenter/memberAbility/memberEvaluate/tobeInformed'
,
detail
:
'/memberCenter/memberAbility/memberEvaluate/tobeInformed
/detail
'
,
});
interface
Iprops
{};
...
...
src/pages/procurement/_public/bid/effects/useBidDetail.tsx
View file @
9463e013
...
...
@@ -3,6 +3,7 @@ import { useCallback, useState, useEffect } from 'react'
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
import
{
PublicApi
}
from
'@/services/api'
import
{
message
}
from
'antd'
import
{
processLogResponses
}
from
'@/pages/procurement/constants'
interface
OrderDetailHookProps
{
/** 招标-招标详情,投标-投标详情,招标-投标详情,投标-招标详情,custom自定义 配合requestApi字段 */
...
...
@@ -132,11 +133,15 @@ export const useBidDetail = (options: OrderDetailHookProps) => {
}
// 流程状态(内/外)
// 招投标
const
processRes
=
await
PublicApi
.
getPurchaseInviteTenderGetInviteTenderProcess
({
inviteTenderId
:
searchId
})
// 招投标 投标里面的投标流程单独调接口
const
processRes
=
type
===
'tender'
?
await
PublicApi
.
getPurchaseSubmitTenderGetSubmitTenderProcess
({
submitTenderId
:
id
})
:
await
PublicApi
.
getPurchaseInviteTenderGetInviteTenderProcess
({
inviteTenderId
:
searchId
})
if
(
processRes
.
code
===
1000
&&
processRes
.
data
)
{
setInteriorWorkflowFlowRecordLogResponses
(
processRes
.
data
.
subProcess
.
userTaskList
)
setExternalWorkflowFlowRecordLogResponses
(
processRes
.
data
.
userTaskList
)
const
{
interiorLogs
,
externalLogs
}
=
processLogResponses
(
processRes
.
data
)
setInteriorWorkflowFlowRecordLogResponses
(
interiorLogs
)
setExternalWorkflowFlowRecordLogResponses
(
externalLogs
)
}
}
},
[
id
])
...
...
src/pages/procurement/_public/bid/effects/useConfirmDetail.ts
View file @
9463e013
...
...
@@ -3,6 +3,7 @@ import { useCallback, useState, useEffect } from 'react'
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
import
{
PublicApi
}
from
'@/services/api'
import
{
message
}
from
'antd'
import
{
processLogResponses
}
from
'@/pages/procurement/constants'
/**
* 待定标(审核定标、确认定标)详情context共用逻辑
...
...
@@ -63,8 +64,9 @@ export const useConfirmDetail = (options: {}) => {
// 招投标
const
processRes
=
await
PublicApi
.
getPurchaseInviteTenderGetInviteTenderProcess
({
inviteTenderId
:
searchId
})
if
(
processRes
.
code
===
1000
&&
processRes
.
data
)
{
setInteriorWorkflowFlowRecordLogResponses
(
processRes
.
data
.
subProcess
.
userTaskList
)
setExternalWorkflowFlowRecordLogResponses
(
processRes
.
data
.
userTaskList
)
const
{
interiorLogs
,
externalLogs
}
=
processLogResponses
(
processRes
.
data
)
setInteriorWorkflowFlowRecordLogResponses
(
interiorLogs
)
setExternalWorkflowFlowRecordLogResponses
(
externalLogs
)
}
}
},
[
id
])
...
...
src/pages/procurement/callForBids/addNewBid/schema/index.ts
View file @
9463e013
...
...
@@ -753,7 +753,7 @@ const bidPattern: ISchema = {
required
:
true
,
enum
:
[
{
label
:
'{{help("公开招标", "招标发布至
企业商城招标频道
")}}'
,
label
:
'{{help("公开招标", "招标发布至
采购门户
")}}'
,
value
:
1
},
// {
...
...
src/pages/procurement/callForBids/addNewBid/schema/modal.ts
View file @
9463e013
...
...
@@ -21,8 +21,8 @@ export const publicBidModalSchema: ISchema = {
properties
:
{
publishShop
:
{
type
:
'checkbox'
,
title
:
'{{help("
发布商城", "已发布的商城为已勾选的商城,不可选择,只可以选择未勾选的商城
。")}}'
,
enum
:
shopInfo
.
filter
(
item
=>
item
.
type
===
1
).
map
(
item
=>
({
label
:
item
.
name
,
value
:
item
.
id
}))
title
:
'{{help("
已发布的采购门户", "已发布的采购门户为已勾选的采购门户,不可选择,只可以选择未勾选的采购门户
。")}}'
,
enum
:
shopInfo
.
filter
(
item
=>
item
.
type
===
6
).
map
(
item
=>
({
label
:
item
.
name
,
value
:
item
.
id
}))
}
}
}
...
...
src/pages/procurement/callForBids/readyExpertRemark/effects/useRemarkDetail.ts
View file @
9463e013
...
...
@@ -3,6 +3,7 @@ import { useCallback, useState, useEffect } from 'react'
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
import
{
PublicApi
}
from
'@/services/api'
import
{
message
}
from
'antd'
import
{
processLogResponses
}
from
'@/pages/procurement/constants'
interface
DetailHookProps
{
...
...
@@ -55,8 +56,9 @@ export const useRemarkDetail = (options: DetailHookProps) => {
// 招投标
const
processRes
=
await
PublicApi
.
getPurchaseInviteTenderGetInviteTenderProcess
({
inviteTenderId
:
searchId
})
if
(
processRes
.
code
===
1000
&&
processRes
.
data
)
{
setInteriorWorkflowFlowRecordLogResponses
(
processRes
.
data
.
subProcess
.
userTaskList
)
setExternalWorkflowFlowRecordLogResponses
(
processRes
.
data
.
userTaskList
)
const
{
interiorLogs
,
externalLogs
}
=
processLogResponses
(
processRes
.
data
)
setInteriorWorkflowFlowRecordLogResponses
(
interiorLogs
)
setExternalWorkflowFlowRecordLogResponses
(
externalLogs
)
}
}
},
[
id
])
...
...
src/pages/procurement/callForBids/readySendBidNotice/effects/useNoticeDetail.ts
View file @
9463e013
...
...
@@ -3,6 +3,7 @@ import { useCallback, useState, useEffect } from 'react'
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
import
{
PublicApi
}
from
'@/services/api'
import
{
message
}
from
'antd'
import
{
processLogResponses
}
from
'@/pages/procurement/constants'
interface
DetailHookProps
{
...
...
@@ -57,8 +58,9 @@ export const useNoticeDetail = (options: DetailHookProps) => {
// 招投标
const
processRes
=
await
PublicApi
.
getPurchaseInviteTenderGetInviteTenderProcess
({
inviteTenderId
:
searchId
})
if
(
processRes
.
code
===
1000
&&
processRes
.
data
)
{
setInteriorWorkflowFlowRecordLogResponses
(
processRes
.
data
.
subProcess
.
userTaskList
)
setExternalWorkflowFlowRecordLogResponses
(
processRes
.
data
.
userTaskList
)
const
{
interiorLogs
,
externalLogs
}
=
processLogResponses
(
processRes
.
data
)
setInteriorWorkflowFlowRecordLogResponses
(
interiorLogs
)
setExternalWorkflowFlowRecordLogResponses
(
externalLogs
)
}
}
},
[
id
])
...
...
src/pages/procurement/callForBids/readySubmitReport/effects/useReportDetail.ts
View file @
9463e013
...
...
@@ -3,6 +3,7 @@ import { useCallback, useState, useEffect } from 'react'
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
import
{
PublicApi
}
from
'@/services/api'
import
{
message
}
from
'antd'
import
{
processLogResponses
}
from
'@/pages/procurement/constants'
interface
DetailHookProps
{
...
...
@@ -59,8 +60,9 @@ export const useReportDetail = (options: DetailHookProps) => {
// 招投标
const
processRes
=
await
PublicApi
.
getPurchaseInviteTenderGetInviteTenderProcess
({
inviteTenderId
:
searchId
})
if
(
processRes
.
code
===
1000
&&
processRes
.
data
)
{
setInteriorWorkflowFlowRecordLogResponses
(
processRes
.
data
.
subProcess
.
userTaskList
)
setExternalWorkflowFlowRecordLogResponses
(
processRes
.
data
.
userTaskList
)
const
{
interiorLogs
,
externalLogs
}
=
processLogResponses
(
processRes
.
data
)
setInteriorWorkflowFlowRecordLogResponses
(
interiorLogs
)
setExternalWorkflowFlowRecordLogResponses
(
externalLogs
)
}
}
},
[
id
])
...
...
src/pages/procurement/components/bidDetailSection/index.tsx
View file @
9463e013
import
React
,
{
useEffect
}
from
'react'
import
{
findLastIndexFlowState
}
from
'@/utils'
import
{
Skeleton
}
from
'antd'
;
import
style
from
'./index.less'
import
TransferProcess
from
'../transferProcess'
import
DescriptionsInfo
from
'../descriptionsInfo'
...
...
@@ -136,11 +137,12 @@ const BidDetailSection:React.FC<BidDetailSectionProps> = ({
}
return
(
formContext
.
data
&&
<
div
className=
{
[
style
.
anchorContentWrap
,
"anchorContent"
].
join
(
' '
)
}
>
<
RenderDetailSection
componentList=
{
anchorList
}
/>
</
div
>
// formContext.data &&
<
Skeleton
active
loading=
{
!
(
formContext
.
externalWorkflowFlowRecordLogResponses
||
formContext
.
interiorWorkflowFlowRecordLogResponses
)
}
>
<
div
className=
{
[
style
.
anchorContentWrap
,
"anchorContent"
].
join
(
' '
)
}
>
<
RenderDetailSection
componentList=
{
anchorList
}
/>
</
div
>
</
Skeleton
>
)
}
...
...
src/pages/procurement/constants/index.tsx
View file @
9463e013
...
...
@@ -19,6 +19,28 @@ import { CALLFORBID_TYPE, PURCHASE_TYPE } from '@/constants/procurement'
},
{});
}
/** 根据招投标流程api返回的字段 处理成组件需要的状态数据格式 */
export
const
processLogResponses
=
(
resData
)
=>
{
const
{
currentInnerStep
,
currentOuterStep
,
externalTasks
}
=
resData
const
externalLogs
=
externalTasks
.
map
(
item
=>
({
id
:
item
.
taskStep
,
name
:
item
.
taskName
,
operationRole
:
item
.
userRoleName
,
isActive
:
item
.
taskStep
<=
currentOuterStep
}))
const
subTasks
=
externalTasks
.
filter
(
item
=>
item
.
taskStep
===
currentOuterStep
)
const
interiorLogs
=
subTasks
.
length
?
subTasks
[
0
][
'subTasks'
].
map
(
item
=>
({
id
:
item
.
taskStep
,
name
:
item
.
taskName
,
operationRole
:
item
.
userRoleName
,
isActive
:
item
.
taskStep
<=
currentInnerStep
}))
:
null
return
{
interiorLogs
,
externalLogs
}
}
// 招投标内部状态
export
const
insideStatusText
=
[
"待提交审核"
,
...
...
src/pages/transaction/logisticsAbility/logisticsBillSubmit/waitSbumitLogisticsBill/index.tsx
View file @
9463e013
...
...
@@ -21,6 +21,12 @@ const LogisticsBillQuery = () => {
})
}
const
handleSubmit
=
(
id
:
number
)
=>
{
PublicApi
.
postLogisticsOrderWaitSubmitSubmit
({
id
:
id
}).
then
(
res
=>
{
reload
.
current
.
reload
()
})
}
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'物流单号'
,
...
...
@@ -76,8 +82,10 @@ const LogisticsBillQuery = () => {
key
:
'submitOrUpdateOrDel'
,
dataIndex
:
'submitOrUpdateOrDel'
,
render
:
(
text
,
data
)
=>
text
&&
<>
<
Button
type=
'link'
>
提交
</
Button
>
<
Button
type=
'link'
onClick=
{
()
=>
history
.
push
(
`/memberCenter/logisticsAbility/logisticsBillSubmit/waitSbumitLogisticsBill/edit?id=${data.id}`
)
}
>
编辑
</
Button
>
<
Popconfirm
title=
"确定要提交吗?"
okText=
"是"
cancelText=
"否"
onConfirm=
{
()
=>
handleSubmit
(
data
.
id
)
}
>
<
Button
type=
'link'
>
提交
</
Button
>
</
Popconfirm
>
<
Popconfirm
title=
"确定要删除吗?"
okText=
"是"
cancelText=
"否"
onConfirm=
{
()
=>
handleDelete
(
data
.
id
)
}
>
<
Button
type=
'link'
>
删除
...
...
src/pages/transaction/purchaseAbility/components/detail/modal/index.tsx
View file @
9463e013
...
...
@@ -116,7 +116,11 @@ const BidModal: React.FC<IProps> = (props: any) => {
urls
:
files
,
priceParityInfos
,
}
for
(
let
i
=
0
;
i
<
dataSource
.
length
;
i
++
)
{
if
(
isEmpty
(
priceParityInfos
))
{
message
.
warning
(
'请核对比价信息授标是否勾选!'
);
return
}
for
(
let
i
=
0
;
i
<
dataSource
.
length
;
i
++
)
{
const
count
=
sumBy
(
dataSource
[
i
].
company
,
'awardTaxProbability'
);
if
(
count
>
100
||
count
<
100
)
{
message
.
warning
(
`
${
dataSource
[
i
].
number
}
授标百分比分配不准确,请核对!`
);
...
...
src/pages/transaction/purchaseAbility/confirmOffer/contrast/index.tsx
View file @
9463e013
...
...
@@ -191,7 +191,7 @@ const ContrastPrice = () => {
link
===
'preview'
?
null
:
<
Button
type=
'primary'
disabled=
{
disabled
}
//
disabled=
{
disabled
}
onClick=
{
()
=>
setVisible
(
true
)
}
>
<
CheckCircleOutlined
/>
...
...
src/pages/transaction/purchaseAbility/onlineBid/readyBid/detail/index.tsx
View file @
9463e013
...
...
@@ -7,7 +7,8 @@ import { observer } from 'mobx-react'
import
{
PublicApi
}
from
'@/services/api'
;
import
{
priceFormat
}
from
'@/utils/numberFomat'
;
import
{
formatTimeString
}
from
'@/utils'
import
{
formatTimeString
}
from
'@/utils'
;
import
{
toChatRoom
}
from
'@/utils/im'
;
import
{
usePurchaseBidStore
}
from
'@/store/purchaseBid'
;
import
StatusBox
from
'../../../purchaseBid/readyBid/management/components/statusBox'
;
...
...
@@ -98,7 +99,7 @@ const Detail = () => {
<
div
className=
{
styles
.
warp
}
>
<
div
className=
{
styles
.
header
}
>
<
ArrowLeftOutlined
className=
{
styles
.
goBack
}
onClick=
{
()
=>
history
.
goBack
()
}
/>
<
div
className=
{
styles
.
title
}
>
{
dataSource
?.
details
}
<
span
>
{
dataSource
?.
createMemberName
}
</
span
><
IMBtn
func=
{
()
=>
console
.
log
(
'ok'
)
}
/></
div
>
<
div
className=
{
styles
.
title
}
>
{
dataSource
?.
details
}
<
span
>
{
dataSource
?.
createMemberName
}
</
span
><
IMBtn
func=
{
()
=>
toChatRoom
(
dataSource
.
memberId
)
}
/></
div
>
</
div
>
<
div
className=
{
styles
.
layout
}
>
<
Row
gutter=
{
[
8
,
8
]
}
>
...
...
src/pages/transaction/purchaseAbility/purchaseBid/readyBid/management/components/rankRow/index.tsx
View file @
9463e013
...
...
@@ -5,6 +5,7 @@ import level1 from '@/assets/icons/the_first.png';
import
level2
from
'@/assets/icons/the_second.png'
;
import
level3
from
'@/assets/icons/the_third.png'
;
import
{
priceFormat
}
from
'@/utils/numberFomat'
;
import
{
toChatRoom
}
from
'@/utils/im'
;
import
IMBtn
from
'../../../../../components/detail/components/iMBtn'
;
...
...
@@ -55,7 +56,7 @@ const RankRow: React.FC<RankRowProps> = (props: any) => {
</
div
>
<
div
className=
{
styles
.
rankRowRight
}
>
{
detail
.
contacts
}
<
IMBtn
func=
{
()
=>
console
.
log
(
1
)
}
/>
<
IMBtn
func=
{
()
=>
toChatRoom
(
detail
.
memberId
)
}
/>
</
div
>
</
div
>
)
...
...
@@ -71,7 +72,7 @@ const RankRow: React.FC<RankRowProps> = (props: any) => {
<
div
>
<
div
className=
{
styles
.
rankRowRight
}
>
{
detail
.
contacts
}
<
IMBtn
func=
{
()
=>
console
.
log
(
1
)
}
/>
<
IMBtn
func=
{
()
=>
toChatRoom
(
detail
.
memberId
)
}
/>
</
div
>
</
div
>
</
div
>
...
...
src/pages/transaction/purchaseAbility/purchaseInquiry/addInquiry/components/demand.tsx
View file @
9463e013
...
...
@@ -262,7 +262,7 @@ const Demand: React.FC<Iprops> = (props: any) => {
rules=
{
[{
required
:
true
,
message
:
'请选择对接方式'
}]
}
>
<
Radio
.
Group
onChange=
{
changeRadio
}
>
<
Radio
value=
{
1
}
><
Tooltip
placement=
"topLeft"
title=
{
<>
需求发布至
企业商城求购频道
</>
}
>
发布至平台
<
QuestionCircleOutlined
style=
{
{
marginLeft
:
'5px'
}
}
/></
Tooltip
></
Radio
>
<
Radio
value=
{
1
}
><
Tooltip
placement=
"topLeft"
title=
{
<>
需求发布至
采购门户
</>
}
>
发布至平台
<
QuestionCircleOutlined
style=
{
{
marginLeft
:
'5px'
}
}
/></
Tooltip
></
Radio
>
<
Radio
value=
{
2
}
><
Tooltip
placement=
"topLeft"
title=
{
<>
系统通过需求单品类、商品属性、适用地市与平台会员发布的商品品类、商品属性、归属地区进行匹配,推荐满足条件的平台会员
</>
}
>
系统匹配
<
QuestionCircleOutlined
style=
{
{
marginLeft
:
'5px'
}
}
/></
Tooltip
></
Radio
>
<
Radio
value=
{
3
}
><
Tooltip
placement=
"topLeft"
title=
{
<>
选择与当前会员有归属关系的会员且角色类型为服务提供的会员(供应商),需求只发送给指定会员
</>
}
>
邀请会员
<
QuestionCircleOutlined
style=
{
{
marginLeft
:
'5px'
}
}
/></
Tooltip
></
Radio
>
</
Radio
.
Group
>
...
...
src/pages/transaction/purchaseOrder/orderCollect/effects/index.ts
View file @
9463e013
...
...
@@ -146,7 +146,7 @@ export const useProductTableChangeForPay = (ctx: ISchemaFormActions | ISchemaFor
export
const
useOrderFormInitEffect
=
(
ctx
:
ISchemaFormActions
|
ISchemaFormAsyncActions
)
=>
{
const
{
modelType
=
0
,
spam_id
}
=
history
.
location
.
query
const
typeEnums
=
parseInt
(
modelType
)
let
auth
=
JSON
.
parse
(
localStorage
.
getItem
(
'auth'
))
let
auth
=
JSON
.
parse
(
localStorage
.
getItem
(
'auth'
)
||
localStorage
.
getItem
(
'AUTH'
)
)
FormEffectHooks
.
onFormMount$
().
subscribe
(
async
()
=>
{
ctx
.
setFieldState
(
'orderModel'
,
state
=>
{
...
...
src/utils/im.tsx
0 → 100644
View file @
9463e013
import
React
from
'react'
;
import
{
Button
,
notification
,
message
}
from
'antd'
;
import
BASE_CONFIG
from
'../../config/base.config.json'
import
{
PublicApi
}
from
'@/services/api'
;
import
{
SHOP_TYPE
}
from
'@/constants'
;
import
{
getAuth
}
from
'@/utils/auth'
;
const
DOMAIN
=
{...
BASE_CONFIG
}.
global
.
siteInfo
.
siteUrl
.
replace
(
'www'
,
''
);
//document.domain
const
CHATROOM_URL
=
`http://chatroom
${
DOMAIN
}
/chatRoom`
;
const
COOKIEPREFIX
=
'CHATROOM_'
;
// 主动调起聊天室 mmeberId 为接收人的memberId
export
const
toChatRoom
=
(
memberId
:
string
=
''
,
shopType
:
number
=
1
)
=>
{
const
_curUserInfo
=
getAuth
();
if
(
!
memberId
){
document
.
cookie
=
`
${
COOKIEPREFIX
}
userInfo=
${
JSON
.
stringify
(
_curUserInfo
)}
;path=/;domain=
${
DOMAIN
}
`
;
document
.
cookie
=
`
${
COOKIEPREFIX
}
shopType=
${
shopType
}
;path=/;domain=
${
DOMAIN
}
`
;
window
.
open
(
CHATROOM_URL
);
return
;
}
PublicApi
.
getMessageImHistorySession
({
memberId
:
memberId
,
currMemberId
:
String
(
_curUserInfo
.
memberId
)
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
const
_userId
=
res
.
data
.
data
?.[
0
]?.
userList
?.[
0
]?.
userId
if
(
_userId
)
{
document
.
cookie
=
`
${
COOKIEPREFIX
}
curMemberId=
${
memberId
}
;path=/;domain=
${
DOMAIN
}
`
;
document
.
cookie
=
`
${
COOKIEPREFIX
}
curUserId=
${
_userId
}
;path=/;domain=
${
DOMAIN
}
`
;
document
.
cookie
=
`
${
COOKIEPREFIX
}
userInfo=
${
JSON
.
stringify
(
_curUserInfo
)}
;path=/;domain=
${
DOMAIN
}
`
;
document
.
cookie
=
`
${
COOKIEPREFIX
}
shopType=
${
shopType
}
;path=/;domain=
${
DOMAIN
}
`
;
window
.
open
(
CHATROOM_URL
);
}
else
{
message
.
error
(
'该会员底下没有客服!'
);
}
}
})
}
interface
NotificationChatRoomProps
{
//通知消息
detail
:
any
}
// 被动从websocket调起聊天室
export
const
notificationChatRoom
=
(
props
:
NotificationChatRoomProps
)
=>
{
const
{
detail
}
=
props
const
_curUserInfo
=
getAuth
();
const
close
=
()
=>
{
console
.
log
(
'Notification was closed. Either the close button was clicked or duration time elapsed.'
,
);
};
const
key
=
`open
${
Date
.
now
()}
`
;
const
btn
=
(
<
Button
type=
"primary"
size=
"small"
onClick=
{
()
=>
{
document
.
cookie
=
`${COOKIEPREFIX}userInfo=${JSON.stringify(_curUserInfo)};path=/;domain=${DOMAIN}`
;
document
.
cookie
=
`${COOKIEPREFIX}shopType=${shopType};path=/;domain=${DOMAIN}`
;
window
.
open
(
CHATROOM_URL
);
notification
.
close
(
key
)
}
}
>
查看
</
Button
>
);
notification
.
open
({
message
:
'你收到一条消息'
,
description
:
'A function will be be called after the notification is closed (automatically after the "duration" time of manually).'
,
btn
,
key
,
duration
:
10
,
onClose
:
close
,
});
}
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