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
linweijiong
jinfa-platform
Commits
d9500dd4
Commit
d9500dd4
authored
Jul 06, 2021
by
前端-许佳敏
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
c48b1bc3
7004544a
Hide whitespace changes
Inline
Side-by-side
Showing
30 changed files
with
440 additions
and
265 deletions
+440
-265
index.tsx
src/components/AuditProcess/index.tsx
+15
-19
ButtonTabs.tsx
src/components/ButtonTabs/ButtonTabs.tsx
+71
-0
ButtonTabsItem.tsx
src/components/ButtonTabs/ButtonTabsItem.tsx
+31
-0
context.ts
src/components/ButtonTabs/context.ts
+16
-0
index.tsx
src/components/ButtonTabs/index.tsx
+19
-23
interface.ts
src/components/ButtonTabs/interface.ts
+39
-0
index.tsx
src/components/FlowRecords/index.tsx
+13
-17
usePageStatus.ts
src/hooks/usePageStatus.ts
+1
-1
index.less
...pages/member/components/MemberDocQualification/index.less
+1
-1
index.tsx
...ifyComingData/components/ChangeComingDataDrawer/index.tsx
+16
-5
index.tsx
...omingData/components/UploadQualificationsDrawer/index.tsx
+40
-6
detail.tsx
src/pages/member/memberPrVerifyComingData/detail.tsx
+4
-4
verify.tsx
src/pages/member/memberPrVerifyComingData/verify.tsx
+23
-10
index.tsx
src/pages/member/memberQuery/applyMember/index.tsx
+27
-10
schema.ts
src/pages/member/memberQuery/applyMember/schema.ts
+35
-24
index.tsx
src/pages/member/memberQuery/detailed/index.tsx
+0
-4
index.tsx
...callForBids/addNewBid/components/publicBidModal/index.tsx
+6
-6
index.tsx
...ages/procurement/callForBids/addNewBid/constant/index.tsx
+0
-1
index.tsx
src/pages/procurement/callForBids/addNewBid/index.tsx
+21
-9
index.ts
...s/procurement/callForBids/firstCheckedBid/schema/index.ts
+0
-3
index.tsx
src/pages/procurement/callForBids/secondCheckedBid/index.tsx
+1
-1
index.ts
.../procurement/callForBids/secondCheckedBid/schema/index.ts
+6
-23
index.tsx
src/pages/procurement/components/descriptionsInfo/index.tsx
+7
-7
index.tsx
src/pages/procurement/constants/index.tsx
+1
-1
index.tsx
...tender/addTender/components/relateProductDrawer/index.tsx
+29
-4
index.tsx
src/pages/procurement/tender/addTender/index.tsx
+2
-1
useProductTable.tsx
...es/procurement/tender/addTender/model/useProductTable.tsx
+6
-5
modal.ts
src/pages/procurement/tender/addTender/schema/modal.ts
+2
-72
index.tsx
...ges/procurement/tender/callForBidsSearch/detail/index.tsx
+4
-4
index.tsx
src/pages/procurement/tender/tenderSearch/detail/index.tsx
+4
-4
No files found.
src/components/AuditProcess/index.tsx
View file @
d9500dd4
...
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-09-15 17:48:36
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-0
5-18 15:08:09
* @LastEditTime: 2021-0
7-05 18:18:12
* @Description: 内外部流转记录组件
*/
import
React
,
{
useState
,
useEffect
}
from
'react'
;
...
...
@@ -10,8 +10,7 @@ import {
Steps
,
Tooltip
,
}
from
'antd'
;
import
MellowCard
,
{
MellowCardProps
}
from
'@/components/MellowCard'
;
import
ButtonSwitch
from
'@/components/ButtonSwitch'
;
import
ButtonTabs
,
{
ButtonTabsProps
}
from
'../ButtonTabs'
;
import
styles
from
'./index.less'
;
export
interface
StepsItem
{
...
...
@@ -33,7 +32,7 @@ export interface StepsItem {
status
?:
'wait'
|
'process'
|
'finish'
|
'error'
,
}
interface
AuditProcessProp
extends
MellowCardProps
{
interface
AuditProcessProp
extends
Omit
<
ButtonTabsProps
,
'options'
>
{
/**
* 当前外部流程步骤
*/
...
...
@@ -104,7 +103,7 @@ const AuditProcess: React.FC<AuditProcessProp> = ({
].
filter
(
Boolean
);
const
titleRender
=
(
stepTitle
:
string
,
stepLength
:
number
)
=>
{
if
(
stepLength
<=
6
)
{
if
(
stepLength
<=
6
)
{
return
<
span
>
{
stepTitle
}
</
span
>
}
return
(
...
...
@@ -115,18 +114,15 @@ const AuditProcess: React.FC<AuditProcessProp> = ({
}
return
(
<
MellowCard
title=
"流转进度"
extra=
{
(
<
ButtonSwitch
options=
{
options
}
onChange=
{
handleRadioChange
}
value=
{
radioValue
}
/>
)
}
<
ButtonTabs
options=
{
options
}
extra=
"流转进度"
defaultValue=
"inner"
onChange=
{
handleRadioChange
}
value=
{
radioValue
}
{
...
rest
}
>
{
radioValue
===
'outer'
?
(
<
ButtonTabs
.
Item
activeKey=
"outer"
>
<
div
className=
{
styles
.
steps
}
>
<
Steps
progressDot
current=
{
outerVerifyCurrent
}
>
{
outerVerifySteps
&&
outerVerifySteps
.
map
(
item
=>
(
...
...
@@ -139,8 +135,8 @@ const AuditProcess: React.FC<AuditProcessProp> = ({
))
}
</
Steps
>
</
div
>
)
:
null
}
{
radioValue
===
'inner'
?
(
</
ButtonTabs
.
Item
>
<
ButtonTabs
.
Item
activeKey=
"inner"
>
<
div
className=
{
styles
.
steps
}
>
<
Steps
progressDot
current=
{
innerVerifyCurrent
}
>
{
innerVerifySteps
&&
innerVerifySteps
.
map
(
item
=>
(
...
...
@@ -153,8 +149,8 @@ const AuditProcess: React.FC<AuditProcessProp> = ({
))
}
</
Steps
>
</
div
>
)
:
null
}
</
MellowCard
>
</
ButtonTabs
.
Item
>
</
ButtonTabs
>
)
};
...
...
src/components/ButtonTabs/ButtonTabs.tsx
0 → 100644
View file @
d9500dd4
/*
* @Author: XieZhiXiong
* @Date: 2021-06-15 17:13:25
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-06-15 17:19:58
* @Description: Radio.Button 选项卡
*/
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
ButtonTabsProps
,
KeyType
}
from
'./interface'
;
import
{
ButtonTabsContextProvider
}
from
'./context'
;
import
ButtonSwitch
from
'../ButtonSwitch'
;
import
MellowCard
from
'../MellowCard'
;
const
ButtonTabs
:
React
.
FC
<
ButtonTabsProps
>
=
(
props
)
=>
{
const
{
options
=
[],
onChange
=
undefined
,
value
,
size
=
'small'
,
extra
,
defaultValue
,
children
,
...
rest
}
=
props
;
const
initValue
=
'value'
in
props
?
props
.
value
:
defaultValue
;
const
[
switchValue
,
setSwitchValue
]
=
useState
<
KeyType
>
(
initValue
);
useEffect
(()
=>
{
if
(
'value'
in
props
)
{
setSwitchValue
(
value
);
}
},
[
value
]);
const
triggerChange
=
(
next
:
KeyType
)
=>
{
if
(
onChange
)
{
onChange
(
next
);
}
};
const
handleButtonSwitchChange
=
(
next
:
KeyType
)
=>
{
if
(
!
(
'value'
in
props
))
{
setSwitchValue
(
next
);
}
triggerChange
(
next
);
};
return
(
<
MellowCard
title=
{
extra
}
extra=
{
(
<
ButtonSwitch
options=
{
options
}
onChange=
{
handleButtonSwitchChange
}
value=
{
switchValue
}
size=
{
size
}
/>
)
}
{
...
rest
}
>
<
ButtonTabsContextProvider
value=
{
{
current
:
switchValue
,
}
}
>
{
children
}
</
ButtonTabsContextProvider
>
</
MellowCard
>
);
};
export
default
ButtonTabs
;
src/components/ButtonTabs/ButtonTabsItem.tsx
0 → 100644
View file @
d9500dd4
/*
* @Author: XieZhiXiong
* @Date: 2021-07-05 17:08:26
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-07-05 18:06:08
* @Description:
*/
import
React
from
'react'
;
import
{
ButtonTabsItemProps
}
from
'./interface'
;
import
ButtonTabsContext
from
'./context'
;
const
ButtonTabsItem
:
React
.
FC
<
ButtonTabsItemProps
>
=
(
props
)
=>
{
const
{
activeKey
,
children
,
style
,
...
rest
}
=
props
;
const
context
=
React
.
useContext
(
ButtonTabsContext
);
return
(
<
div
{
...
rest
}
key=
{
activeKey
}
style=
{
{
...
style
,
display
:
context
.
current
===
activeKey
?
'block'
:
'none'
,
}
}
>
{
children
}
</
div
>
);
};
export
default
ButtonTabsItem
;
src/components/ButtonTabs/context.ts
0 → 100644
View file @
d9500dd4
/*
* @Author: XieZhiXiong
* @Date: 2021-07-05 17:30:25
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-07-05 17:30:25
* @Description:
*/
import
*
as
React
from
'react'
;
import
{
ButtonTabsContextProps
}
from
'./interface'
;
const
ButtonTabsContext
=
React
.
createContext
<
ButtonTabsContextProps
|
null
>
(
null
);
export
const
ButtonTabsContextProvider
=
ButtonTabsContext
.
Provider
;
export
default
ButtonTabsContext
;
\ No newline at end of file
src/components/ButtonTabs/index.tsx
View file @
d9500dd4
/*
* @Author: XieZhiXiong
* @Date: 2021-0
6-15 17:13:25
* @Date: 2021-0
7-05 17:10:21
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-0
6-15 17:19:58
* @Description:
Radio.Button 选项卡
* @LastEditTime: 2021-0
7-05 17:10:21
* @Description:
*/
import
React
from
'react'
;
import
ButtonSwitch
,
{
ButtonSwitchProps
}
from
'../ButtonSwitch'
;
import
styles
from
'./index.less'
;
import
*
as
React
from
'react'
;
import
InternalButtonTabs
from
'./ButtonTabs'
;
import
Item
from
'./ButtonTabsItem'
;
import
{
ButtonTabsProps
,
}
from
'./interface'
;
interface
IProps
extends
ButtonSwitchProps
{
export
*
from
'./interface'
;
interface
CompoundedComponent
extends
React
.
ForwardRefExoticComponent
<
ButtonTabsProps
>
{
Item
:
typeof
Item
;
}
const
ButtonTabs
:
React
.
FC
=
()
=>
{
return
(
<
div
className=
{
styles
[
'button-tabs'
]
}
>
<
div
className=
{
styles
[
'button-tabs-head'
]
}
>
<
div
className=
{
styles
[
'button-tabs-head-extra'
]
}
>
我是拓展
</
div
>
<
div
className=
{
styles
[
'button-tabs-head-nav'
]
}
>
我是拓展
</
div
>
</
div
>
</
div
>
);
const
ButtonTabs
=
InternalButtonTabs
as
CompoundedComponent
;
ButtonTabs
.
Item
=
Item
;
export
{
Item
,
};
export
default
ButtonTabs
;
export
default
ButtonTabs
;
\ No newline at end of file
src/components/ButtonTabs/interface.ts
0 → 100644
View file @
d9500dd4
/*
* @Author: XieZhiXiong
* @Date: 2021-07-05 17:06:56
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-07-05 17:06:57
* @Description:
*/
import
{
HTMLAttributes
}
from
'react'
;
import
{
ButtonSwitchProps
}
from
'../ButtonSwitch'
;
import
{
MellowCardProps
}
from
'../MellowCard'
;
export
type
KeyType
=
string
|
number
;
export
interface
ButtonTabsItemProps
extends
Omit
<
HTMLAttributes
<
HTMLDivElement
>
,
'onChange'
>
{
/**
* 标识
*/
activeKey
:
KeyType
,
children
?:
React
.
ReactNode
,
}
export
interface
ButtonTabsProps
extends
ButtonSwitchProps
,
Omit
<
MellowCardProps
,
'extra'
|
'onChange'
|
'size'
>
{
/**
* 头部左侧自定义拓展
*/
extra
?:
React
.
ReactNode
,
/**
* 默认值
*/
defaultValue
?:
KeyType
,
children
?:
React
.
ReactNode
,
}
export
interface
ButtonTabsContextProps
{
current
:
KeyType
;
}
\ No newline at end of file
src/components/FlowRecords/index.tsx
View file @
d9500dd4
...
...
@@ -8,8 +8,7 @@
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
PolymericTable
from
'@/components/PolymericTable'
;
import
{
EditableColumns
}
from
'@/components/PolymericTable/interface'
;
import
MellowCard
,
{
MellowCardProps
}
from
'@/components/MellowCard'
;
import
ButtonSwitch
from
'@/components/ButtonSwitch'
;
import
ButtonTabs
,
{
ButtonTabsProps
}
from
'../ButtonTabs'
;
const
PAGE_SIZE
=
10
;
...
...
@@ -35,7 +34,7 @@ export interface FetchListParams {
pageSize
:
number
,
}
interface
IProps
extends
MellowCardProps
{
interface
IProps
extends
Omit
<
ButtonTabsProps
,
'options'
>
{
/**
* 外部流转记录数据源,与 fetchOuterList 不能共存
* 如果两个同时存在 outerDataSource 优先
...
...
@@ -202,18 +201,15 @@ const FlowRecords: React.FC<IProps> = (props: IProps) => {
].
filter
(
Boolean
);
return
(
<
MellowCard
title=
"流转记录"
extra=
{
(
<
ButtonSwitch
options=
{
options
}
onChange=
{
handleRadioChange
}
value=
{
radioValue
}
/>
)
}
<
ButtonTabs
options=
{
options
}
extra=
"流转记录"
defaultValue=
"inner"
onChange=
{
handleRadioChange
}
value=
{
radioValue
}
{
...
rest
}
>
{
radioValue
===
'outer'
?
(
<
ButtonTabs
.
Item
activeKey=
"outer"
>
<
PolymericTable
rowKey=
{
outerRowkey
}
dataSource=
{
outerList
?
outerList
.
data
:
[]
}
...
...
@@ -230,8 +226,8 @@ const FlowRecords: React.FC<IProps> = (props: IProps) => {
)
}
onPaginationChange=
{
handleOuterPaginationChange
}
/>
)
:
null
}
{
radioValue
===
'inner'
?
(
</
ButtonTabs
.
Item
>
<
ButtonTabs
.
Item
activeKey=
"inner"
>
<
PolymericTable
rowKey=
{
innerRowkey
}
dataSource=
{
innerList
?
innerList
.
data
:
[]
}
...
...
@@ -248,8 +244,8 @@ const FlowRecords: React.FC<IProps> = (props: IProps) => {
)
}
onPaginationChange=
{
handleInnerPaginationChange
}
/>
)
:
null
}
</
MellowCard
>
</
ButtonTabs
.
Item
>
</
ButtonTabs
>
);
}
;
...
...
src/hooks/usePageStatus.ts
View file @
d9500dd4
...
...
@@ -13,7 +13,7 @@ type resultData = {
lastTypeParams
:
string
,
preview
:
any
,
}
&
{
[
key
:
string
]:
string
|
number
,
[
key
:
string
]:
any
,
}
export
const
usePageStatus
=
():
resultData
=>
{
...
...
src/pages/member/components/MemberDocQualification/index.less
View file @
d9500dd4
...
...
@@ -25,7 +25,7 @@
> img {
width: 100%;
height: 100%;
object-fit: co
ntain
;
object-fit: co
ver
;
}
}
...
...
src/pages/member/memberPrVerifyComingData/components/ChangeComingDataDrawer/index.tsx
View file @
d9500dd4
...
...
@@ -2,16 +2,17 @@
* @Author: XieZhiXiong
* @Date: 2021-06-01 18:15:20
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-0
6-10 16:05:26
* @LastEditTime: 2021-0
7-05 15:40:34
* @Description: 修改入库资料抽屉
*/
import
React
from
'react'
;
import
React
,
{
useEffect
,
useImperativeHandle
}
from
'react'
;
import
{
Drawer
,
Button
,
}
from
'antd'
;
import
{
Radio
,
Checkbox
}
from
'@formily/antd-components'
;
import
{
createAsyncFormActions
}
from
'@formily/antd'
;
import
{
ValidateNodeResult
}
from
'@formily/validator'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
schema
,
GroupItem
}
from
'./schema'
;
import
AreaSelect
from
'../../../components/AreaSelect'
;
...
...
@@ -37,9 +38,13 @@ interface IProps {
onClose
:
()
=>
void
,
}
export
interface
RefHandle
{
validate
:
()
=>
Promise
<
Promise
<
ValidateNodeResult
>>
,
}
const
formActions
=
createAsyncFormActions
();
const
ChangeComingDataDrawer
:
React
.
F
C
<
IProps
>
=
(
props
:
IProps
)
=>
{
const
ChangeComingDataDrawer
:
React
.
F
orwardRefRenderFunction
<
RefHandle
,
IProps
>
=
((
props
,
ref
)
=>
{
const
{
groups
,
visible
,
...
...
@@ -59,6 +64,10 @@ const ChangeComingDataDrawer: React.FC<IProps> = (props: IProps) => {
}
};
useImperativeHandle
(
ref
,
()
=>
({
validate
:
()
=>
formActions
.
validate
(
'*'
),
}));
return
(
<
Drawer
title=
"修改入库信息"
...
...
@@ -96,6 +105,8 @@ const ChangeComingDataDrawer: React.FC<IProps> = (props: IProps) => {
/>
</
Drawer
>
);
};
});
const
ChangeComingDataDrawerForWard
=
React
.
forwardRef
<
RefHandle
,
IProps
>
(
ChangeComingDataDrawer
);
export
default
ChangeComingDataDrawer
;
export
default
ChangeComingDataDrawer
ForWard
;
src/pages/member/memberPrVerifyComingData/components/UploadQualificationsDrawer/index.tsx
View file @
d9500dd4
...
...
@@ -2,10 +2,10 @@
* @Author: XieZhiXiong
* @Date: 2021-06-01 20:03:23
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-0
6-15 13:54:42
* @LastEditTime: 2021-0
7-05 16:15:48
* @Description: 补充资质证明抽屉
*/
import
React
from
'react'
;
import
React
,
{
useMemo
}
from
'react'
;
import
{
Drawer
,
Button
,
...
...
@@ -13,7 +13,8 @@ import {
import
{
createFormActions
,
}
from
'@formily/antd'
;
import
{
DatePicker
,
Checkbox
}
from
'@formily/antd-components'
import
{
DatePicker
,
Checkbox
}
from
'@formily/antd-components'
;
import
{
normalizeFiledata
}
from
'@/utils'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
schema
}
from
'./schema'
;
import
{
useBusinessEffects
}
from
'../../../components/QualitiesUploadFormItem/effects'
;
...
...
@@ -43,7 +44,7 @@ export type FileType = {
url
:
string
,
}
export
type
ValueType
=
{
export
type
Submit
ValueType
=
{
/**
* 文件
*/
...
...
@@ -58,15 +59,38 @@ export type ValueType = {
permanent
:
number
[],
}
export
type
ValueType
=
{
/**
* 文件name
*/
name
:
string
,
/**
* 文件url
*/
url
:
string
,
/**
* 到期日
*/
expireDay
:
string
,
/**
* 有效期
*/
permanent
:
number
,
}
interface
IProps
{
/**
* 值
*/
value
:
ValueType
[],
/**
* 是否可见
*/
visible
:
boolean
,
/**
* Form 确认事件
*/
onSubmit
:
(
values
:
ValueType
[])
=>
void
,
onSubmit
:
(
values
:
Submit
ValueType
[])
=>
void
,
/**
* 抽屉关闭事件
*/
...
...
@@ -77,6 +101,7 @@ const formActions = createFormActions();
const
UploadQualificationsDrawer
:
React
.
FC
<
IProps
>
=
(
props
:
IProps
)
=>
{
const
{
value
=
[],
visible
,
onSubmit
,
onClose
,
...
...
@@ -88,12 +113,20 @@ const UploadQualificationsDrawer: React.FC<IProps> = (props: IProps) => {
}
};
const
handleSubmit
=
(
values
:
{
qualities
:
ValueType
[]
})
=>
{
const
handleSubmit
=
(
values
:
{
qualities
:
Submit
ValueType
[]
})
=>
{
if
(
onSubmit
)
{
onSubmit
(
values
.
qualities
);
}
};
const
initialValues
=
useMemo
(()
=>
({
qualities
:
value
.
map
((
item
)
=>
({
file
:
item
.
url
?
[
normalizeFiledata
(
item
.
url
)]
:
[],
expireDay
:
item
.
expireDay
,
permanent
:
item
.
permanent
===
1
?
[
item
.
permanent
]
:
[],
})),
}),
[
value
]);
return
(
<
Drawer
title=
"补充资质证明"
...
...
@@ -117,6 +150,7 @@ const UploadQualificationsDrawer: React.FC<IProps> = (props: IProps) => {
>
<
NiceForm
previewPlaceholder=
" "
initialValues=
{
initialValues
}
components=
{
{
DatePicker
,
Checkbox
,
...
...
src/pages/member/memberPrVerifyComingData/detail.tsx
View file @
d9500dd4
...
...
@@ -25,12 +25,12 @@ import {
MEMBER_INNER_COLUMNS
,
}
from
'../constant'
;
import
MemberBasicInfo
from
'../components/MemberBasicInfo'
;
import
MemberDocIncomingInfo
from
'../components/MemberDocIncomingInfo'
;
import
PicWrap
from
'../components/PicWrap'
;
import
DepositDetailsCard
from
'./components/DepositDetailsCard'
;
const
MemberPrVerifyComingDataDetail
:
React
.
FC
<
{}
>
=
()
=>
{
const
{
validateId
}
=
usePageStatus
();
const
[
memberInfo
,
setMemberInfo
]
=
useState
<
GetMemberDepositVerifyDetailResponse
>
(
null
);
const
[
memberInfo
,
setMemberInfo
]
=
useState
<
GetMemberDepositVerifyDetailResponse
&
{
depositDetailTexts
:
any
}
>
(
null
);
const
[
infoLoading
,
setInfoLoaading
]
=
useState
(
false
);
const
getBasicInfo
=
()
=>
{
...
...
@@ -157,8 +157,8 @@ const MemberPrVerifyComingDataDetail: React.FC<{}> = () => {
{
/* 入库信息 */
}
<
Col
span=
{
24
}
>
<
DepositDetailsCard
groups=
{
memberInfo
?.
depositDetail
s
}
<
MemberDocIncomingInfo
dataSource=
{
memberInfo
?.
depositDetailText
s
}
id=
"incomingInfo"
/>
</
Col
>
...
...
src/pages/member/memberPrVerifyComingData/verify.tsx
View file @
d9500dd4
...
...
@@ -2,10 +2,10 @@
* @Author: XieZhiXiong
* @Date: 2021-05-24 17:01:57
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-0
6-21 14:31:52
* @LastEditTime: 2021-0
7-05 16:43:55
* @Description: 审核入库资料
*/
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
;
import
{
Row
,
Col
,
...
...
@@ -32,15 +32,15 @@ import {
MEMBER_INNER_COLUMNS
,
}
from
'../constant'
;
import
MemberBasicInfo
from
'../components/MemberBasicInfo'
;
import
DepositDetailsCard
from
'./components/DepositDetailsCard
'
;
import
MemberDocIncomingInfo
from
'../components/MemberDocIncomingInfo
'
;
import
PicWrap
from
'../components/PicWrap'
;
import
VerifyComingDataDrawer
,
{
ValueType
as
VerifyData
}
from
'./components/VerifyComingDataDrawer'
;
import
ChangeComingDataDrawer
,
{
ValueType
as
ComingData
}
from
'./components/ChangeComingDataDrawer'
;
import
UploadQualificationsDrawer
,
{
ValueType
as
QualificationData
}
from
'./components/UploadQualificationsDrawer'
;
import
ChangeComingDataDrawer
,
{
ValueType
as
ComingData
,
RefHandle
}
from
'./components/ChangeComingDataDrawer'
;
import
UploadQualificationsDrawer
,
{
Submit
ValueType
as
QualificationData
}
from
'./components/UploadQualificationsDrawer'
;
const
MemberPrVerifyComingDataVerify
:
React
.
FC
<
{}
>
=
()
=>
{
const
{
validateId
}
=
usePageStatus
();
const
[
memberInfo
,
setMemberInfo
]
=
useState
<
GetMemberDepositVerifyDetailResponse
>
(
null
);
const
[
memberInfo
,
setMemberInfo
]
=
useState
<
GetMemberDepositVerifyDetailResponse
&
{
depositDetailTexts
:
any
}
>
(
null
);
const
[
infoLoading
,
setInfoLoaading
]
=
useState
(
false
);
const
[
visibleVerifyDrawer
,
setVisibleVerifyDrawer
]
=
useState
(
false
);
const
[
visibleComingDrawer
,
setVisibleComingDrawer
]
=
useState
(
false
);
...
...
@@ -49,13 +49,15 @@ const MemberPrVerifyComingDataVerify: React.FC<{}> = () => {
const
[
qualifications
,
setQualifications
]
=
useState
<
QualificationData
[]
>
([]);
const
[
submitLoading
,
setSubmitLoading
]
=
useState
(
false
);
const
depositRef
=
useRef
<
RefHandle
|
null
>
(
null
);
const
getBasicInfo
=
()
=>
{
if
(
!
validateId
)
{
return
;
}
setInfoLoaading
(
true
);
PublicApi
.
getMemberDepositVerifyDetail
({
validateId
,
validateId
:
validateId
as
string
,
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setMemberInfo
(
res
.
data
);
...
...
@@ -128,6 +130,15 @@ const MemberPrVerifyComingDataVerify: React.FC<{}> = () => {
handleVisibleQualificationsDrawer
(
false
);
};
const
handleVerify
=
()
=>
{
depositRef
?.
current
?.
validate
().
then
(()
=>
{
handleVisibleVerifyDrawer
(
true
);
}).
catch
(()
=>
{
handleVisibleComingDrawer
(
true
);
message
.
warning
(
'请填写必要的入库资料'
);
});
};
const
anchorsArr
=
[
{
key
:
'verifySteps'
,
...
...
@@ -186,7 +197,7 @@ const MemberPrVerifyComingDataVerify: React.FC<{}> = () => {
<
Button
type=
"primary"
icon=
{
<
CheckCircleOutlined
/>
}
onClick=
{
()
=>
handleVisibleVerifyDrawer
(
true
)
}
onClick=
{
handleVerify
}
>
单据审核
</
Button
>
...
...
@@ -255,8 +266,8 @@ const MemberPrVerifyComingDataVerify: React.FC<{}> = () => {
{
/* 入库信息 */
}
<
Col
span=
{
24
}
>
<
DepositDetailsCard
groups=
{
memberInfo
?.
depositDetail
s
}
<
MemberDocIncomingInfo
dataSource=
{
memberInfo
?.
depositDetailText
s
}
id=
"incomingInfo"
/>
</
Col
>
...
...
@@ -299,9 +310,11 @@ const MemberPrVerifyComingDataVerify: React.FC<{}> = () => {
visible=
{
visibleComingDrawer
}
onClose=
{
()
=>
handleVisibleComingDrawer
(
false
)
}
onSubmit=
{
handleComingSubmit
}
ref=
{
depositRef
}
/>
<
UploadQualificationsDrawer
value=
{
memberInfo
?.
qualities
}
visible=
{
visibleQualificationsDrawer
}
onClose=
{
()
=>
handleVisibleQualificationsDrawer
(
false
)
}
onSubmit=
{
handleQualificationsSubmit
}
...
...
src/pages/member/memberQuery/applyMember/index.tsx
View file @
d9500dd4
...
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2021-05-26 16:52:48
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-07-0
5 10:40:46
* @LastEditTime: 2021-07-0
6 10:22:59
* @Description: 申请会员
*/
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
;
...
...
@@ -21,6 +21,7 @@ import { usePageStatus } from '@/hooks/usePageStatus';
import
ReutrnEle
from
'@/components/ReturnEle'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
MellowCard
from
'@/components/MellowCard'
;
import
NoData
from
'@/components/NoData'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
normalizeFiledata
,
FileData
}
from
'@/utils'
;
import
schema
,
{
GroupItem
}
from
'./schema'
;
...
...
@@ -92,7 +93,7 @@ const MemberQueryApplyMember: React.FC<RouteComponentProps> = (props: any) => {
const
{
route
}
=
props
;
const
{
upperMemberId
,
upperRoleId
,
validateId
}
=
usePageStatus
();
const
[
ticktack
,
setTicktack
]
=
useState
(
countDownLen
);
const
[
currenStep
,
setCurrenStep
]
=
useState
(
!
validateId
?
0
:
1
);
const
[
currenStep
,
setCurrenStep
]
=
useState
(
!
validateId
?
0
:
2
);
const
[
submitLoading
,
setSubmitLoading
]
=
useState
(
false
);
const
[
unsaved
,
setUnsaved
]
=
useState
(
false
);
const
[
depositInfo
,
setDepositInfo
]
=
useState
<
GroupItem
[]
>
([]);
...
...
@@ -101,7 +102,7 @@ const MemberQueryApplyMember: React.FC<RouteComponentProps> = (props: any) => {
const
[
agreementLoading
,
setAgreementLoading
]
=
useState
(
false
);
const
[
memberInfo
,
setMemberInfo
]
=
useState
<
MemberInfo
>
();
const
stepRef
=
useRef
(
!
validateId
?
0
:
1
);
const
stepRef
=
useRef
(
!
validateId
?
0
:
2
);
// eslint-disable-next-line no-undef
let
timer
:
NodeJS
.
Timeout
|
null
=
null
;
...
...
@@ -130,6 +131,11 @@ const MemberQueryApplyMember: React.FC<RouteComponentProps> = (props: any) => {
});
if
(
res
.
code
===
1000
)
{
setDepositInfo
(
res
.
data
.
depositDetails
);
if
(
!
res
.
data
.
depositDetails
||
!
res
.
data
.
depositDetails
.
length
)
{
formActions
.
setFieldState
(
'step3.NO_DEPOSIT'
,
state
=>
{
state
.
visible
=
true
;
});
}
}
setLoading
(
false
);
};
...
...
@@ -156,12 +162,20 @@ const MemberQueryApplyMember: React.FC<RouteComponentProps> = (props: any) => {
}))
},
});
if
(
!
res
.
data
.
groups
||
!
res
.
data
.
groups
.
length
)
{
formActions
.
setFieldState
(
'step3.NO_DEPOSIT'
,
state
=>
{
state
.
visible
=
true
;
});
}
}
setLoading
(
false
);
};
// 获取入库协议
const
getDepositAgreement
=
async
()
=>
{
if
(
validateId
)
{
return
;
}
setAgreementLoading
(
true
);
const
res
=
await
PublicApi
.
getManageContentNoticeFindAllByColumnType
({
columnType
:
`
${
3
}
`
,
...
...
@@ -293,13 +307,15 @@ const MemberQueryApplyMember: React.FC<RouteComponentProps> = (props: any) => {
>
保存为草稿
</Button> */
}
<
Button
onClick=
{
()
=>
{
formActions
.
dispatch
(
'onStepPrevious'
,
{})
}
}
>
上一步:确认注册信息
</
Button
>
{
!
validateId
&&
(
<
Button
onClick=
{
()
=>
{
formActions
.
dispatch
(
'onStepPrevious'
,
{})
}
}
>
上一步:确认注册信息
</
Button
>
)
}
<
Button
type=
"primary"
onClick=
{
async
()
=>
{
...
...
@@ -353,6 +369,7 @@ const MemberQueryApplyMember: React.FC<RouteComponentProps> = (props: any) => {
AreaSelect
,
QualitiesUpload
,
QualitiesUploadFormItem
,
NoData
,
}
}
expressionScope=
{
{
currenStep
,
...
...
src/pages/member/memberQuery/applyMember/schema.ts
View file @
d9500dd4
...
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2021-05-26 17:00:39
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-0
6-30 09:55:17
* @LastEditTime: 2021-0
7-05 14:59:46
* @Description:
*/
import
{
ISchema
}
from
'@formily/antd'
;
...
...
@@ -19,13 +19,21 @@ export type GroupItem = {
elements
:
ElementType
[],
};
const
schema
=
(
groups
:
GroupItem
[],
validateId
?:
number
):
ISchema
=>
{
const
depositSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{},
};
const
depositSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
NO_DEPOSIT
:
{
type
:
'object'
,
visible
:
false
,
'x-component'
:
'NoData'
,
'x-component-props'
:
{
content
:
'您当前无可变更的入库信息'
,
},
},
},
};
const
schema
=
(
groups
:
GroupItem
[],
validateId
?:
number
):
ISchema
=>
{
(
groups
||
[]).
forEach
((
item
,
index
)
=>
{
depositSchema
.
properties
[
`CARD_BOX_
${
index
}
`
]
=
{
type
:
'object'
,
...
...
@@ -77,10 +85,13 @@ const schema = (groups: GroupItem[], validateId?: number): ISchema => {
}
:
null
,
{
title
:
'确认注册信息'
,
name
:
'step2'
,
},
!
validateId
?
{
title
:
'确认注册信息'
,
name
:
'step2'
,
}
:
null
,
{
title
:
'填写入库信息'
,
name
:
'step3'
,
...
...
@@ -110,22 +121,22 @@ const schema = (groups: GroupItem[], validateId?: number): ISchema => {
},
},
},
}
},
step2
:
{
type
:
'object'
,
properties
:
{
registerInfo
:
{
type
:
'object'
,
'x-component'
:
'Children'
,
'x-component-props'
:
{
children
:
'{{RegisterInfo}}'
},
},
},
},
}
:
{}
),
step2
:
{
type
:
'object'
,
properties
:
{
registerInfo
:
{
type
:
'object'
,
'x-component'
:
'Children'
,
'x-component-props'
:
{
children
:
'{{RegisterInfo}}'
},
},
},
},
step3
:
depositSchema
,
step4
:
{
type
:
'object'
,
...
...
src/pages/member/memberQuery/detailed/index.tsx
View file @
d9500dd4
...
...
@@ -201,10 +201,6 @@ const MemberQueryDetailed: React.FC<QueryProps> = props => {
name
:
'资质证明'
,
},
{
key
:
'inspectInfo'
,
name
:
'考察信息'
,
},
{
key
:
'appraisalInfo'
,
name
:
'考评信息'
,
},
...
...
src/pages/procurement/callForBids/addNewBid/components/publicBidModal/index.tsx
View file @
d9500dd4
import
React
,
{
useContext
,
useEffect
}
from
'react'
import
{
useModalTable
}
from
'../../model/useModalTable'
import
React
,
{
useContext
}
from
'react'
import
{
createFormActions
,
ISchemaFormActions
,
ISchemaFormAsyncActions
}
from
'@formily/antd'
import
{
Tooltip
}
from
"antd"
import
{
PublicApi
}
from
'@/services/api'
import
{
fetchOrderApi
}
from
'../../api'
import
ModalForm
,
{
ModalFormProps
}
from
'@/components/ModalForm'
import
ModalForm
from
'@/components/ModalForm'
import
{
BidDetailContext
}
from
'@/pages/procurement/_public/bid/context'
import
{
useHttpRequest
}
from
'@/hooks/useHttpRequest'
import
{
history
}
from
'umi'
import
{
publicBidModalSchema
}
from
'../../schema/modal'
import
{
QuestionCircleOutlined
}
from
'@ant-design/icons'
import
BASE_CONFIG
from
'../../../../../../../config/base.config.json'
...
...
@@ -35,7 +32,10 @@ const PublicBidModal:React.FC<PublicBidModalProps> = (props) => {
const
{
publishShop
}
=
value
const
result
=
shopInfo
.
filter
(
item
=>
publishShop
.
includes
(
item
.
id
))
if
(
pageStatus
===
PageStatus
.
ADD
)
pageAction
.
setFieldValue
(
'inviteTenderShopList'
,
result
.
map
(
item
=>
omit
(
item
,
[
'id'
])))
pageAction
.
setFieldValue
(
'inviteTenderShopList'
,
result
.
map
(
item
=>
{
item
.
shopId
=
item
[
'id'
]
return
omit
(
item
,
[
'id'
])
}))
else
if
(
pageStatus
===
PageStatus
.
EDIT
)
pageAction
.
setFieldValue
(
'inviteTenderShopList'
,
result
)
currentRef
.
current
.
setVisible
(
false
)
...
...
src/pages/procurement/callForBids/addNewBid/constant/index.tsx
View file @
d9500dd4
...
...
@@ -90,7 +90,6 @@ export const paramsConversionFn = (value) => {
cityName
:
item
.
city
,
isAllCity
:
item
?.
cityCode
?
false
:
true
}
console
.
log
(
pageStatus
,
'gan'
)
if
(
pageStatus
===
PageStatus
.
ADD
)
{
delete
param
.
id
}
...
...
src/pages/procurement/callForBids/addNewBid/index.tsx
View file @
d9500dd4
...
...
@@ -134,17 +134,29 @@ const AddNewBid:React.FC<AddNewBidProps> = (props) => {
if
(
id
)
{
params
[
'id'
]
=
id
}
addSchemaAction
.
getFieldState
(
'deliverAddressId'
,
state
=>
{
if
(
params
?.
deliverAddressId
)
{
params
[
'deliverAddress'
]
=
state
.
props
.
enum
.
filter
(
item
=>
item
[
'value'
]
===
params
[
'deliverAddressId'
])[
0
][
'label'
]
try
{
addSchemaAction
.
getFieldState
(
'deliverAddressId'
,
state
=>
{
if
(
params
?.
deliverAddressId
)
{
params
[
'deliverAddress'
]
=
state
.
props
.
enum
.
filter
(
item
=>
item
[
'value'
]
===
params
[
'deliverAddressId'
])[
0
][
'label'
]
}
})
addSchemaAction
.
getFieldState
(
'templateId'
,
state
=>
{
if
(
params
?.
templateId
)
{
const
filtered
=
state
.
props
.
enum
.
filter
(
item
=>
item
[
'value'
]
===
params
[
'templateId'
])[
0
]
if
(
filtered
[
'label'
])
{
params
[
'templateId'
]
=
filtered
[
'value'
]
}
}
})
let
res
=
await
PublicApi
.
postPurchaseInviteTenderSaveOrUpdateInviteTender
(
params
)
if
(
res
.
code
===
1000
)
{
history
.
goBack
()
}
else
{
setBtnLoading
(
false
)
}
})
let
res
=
await
PublicApi
.
postPurchaseInviteTenderSaveOrUpdateInviteTender
(
params
)
if
(
res
.
code
===
1000
)
{
history
.
goBack
()
}
else
{
}
catch
(
error
)
{
setBtnLoading
(
false
)
return
message
.
error
(
'交付地址或评标模板异常'
)
}
}
...
...
src/pages/procurement/callForBids/firstCheckedBid/schema/index.ts
View file @
d9500dd4
import
{
ISchema
}
from
'@formily/antd'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
/**
* 除了订单必填字段, 默认
*/
export
const
tableListSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
...
...
src/pages/procurement/callForBids/secondCheckedBid/index.tsx
View file @
d9500dd4
...
...
@@ -67,7 +67,7 @@ const SecondCheckedBid:React.FC<SecondCheckedBidProps> = (props) => {
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'
orderNo
'
,
'
inviteTenderCode
'
,
FORM_FILTER_PATH
,
);
},
...
...
src/pages/procurement/callForBids/secondCheckedBid/schema/index.ts
View file @
d9500dd4
import
{
ISchema
}
from
'@formily/antd'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
// import { OrderTypeMap } from '@/constants/order';
export
const
tableListSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
orderNo
:
{
inviteTenderCode
:
{
type
:
'string'
,
"x-component"
:
'SearchFilter'
,
'x-component-props'
:
{
placeholder
:
'请输入
订单
编号'
,
placeholder
:
'请输入
招标
编号'
,
align
:
'flex-end'
,
},
},
...
...
@@ -23,33 +22,17 @@ export const tableListSchema: ISchema = {
}
},
properties
:
{
orderTh
e
:
{
projectNam
e
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'请输入
订单摘要
'
,
placeholder
:
'请输入
招标项目
'
,
}
},
"supplyMembersName"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请输入供应会员名称'
}
},
"type"
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'请选择订单类型'
},
// enum: Object.keys(OrderTypeMap).map(item => ({
// label: OrderTypeMap[item],
// value: item,
// }))
},
"[startCreateTime,endCreateTime]"
:
{
"[startTime,endTime]"
:
{
type
:
'array'
,
"x-component"
:
'DateRangePickerUnix'
,
'x-component-props'
:
{
placeholder
:
[
'
开始时间'
,
'
结束时间'
],
placeholder
:
[
'
发布开始时间'
,
'发布
结束时间'
],
},
},
submit
:
{
...
...
src/pages/procurement/components/descriptionsInfo/index.tsx
View file @
d9500dd4
...
...
@@ -48,8 +48,8 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
span
:
8
,
fieldList
:
[
{
title
:
'招标编号:'
,
name
:
'code'
},
{
title
:
'外部状态:'
,
name
:
'inviteTenderOutStatusValue'
},
{
title
:
'内部状态:'
,
name
:
'inviteTenderInStatusValue'
},
{
title
:
'外部状态:'
,
name
:
'inviteTenderOutStatusValue'
,
render
:
()
=>
apiType
===
'callForBid'
?
data
[
'inviteTenderOutStatusValue'
]
:
_data
[
'submitTenderOutStatusValue'
]
},
{
title
:
'内部状态:'
,
name
:
'inviteTenderInStatusValue'
,
render
:
()
=>
apiType
===
'callForBid'
?
data
[
'inviteTenderInStatusValue'
]
:
_data
[
'submitTenderInStatusValue'
]
},
{
title
:
'发布时间:'
,
name
:
'createTime'
,
render
:
(
text
)
=>
formatTimeString
(
text
)
},
]
},
...
...
@@ -208,15 +208,15 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
span
:
8
,
fieldList
:
[
{
title
:
'投标会员:'
,
name
:
'memberName'
,
render
:
()
=>
_data
.
memberName
},
{
title
:
'联系人姓名:'
,
name
:
'name'
,
render
:
()
=>
_data
.
submitTenderRegister
.
name
},
{
title
:
'联系人电话:'
,
name
:
'phone'
,
render
:
()
=>
_data
.
submitTenderRegister
.
phone
},
{
title
:
'联系人姓名:'
,
name
:
'name'
,
render
:
()
=>
_data
?.
submitTenderRegister
?
.
name
},
{
title
:
'联系人电话:'
,
name
:
'phone'
,
render
:
()
=>
_data
?.
submitTenderRegister
?
.
phone
},
]
},
{
span
:
8
,
fieldList
:
[
{
title
:
'电子邮箱:'
,
name
:
'email'
,
render
:
()
=>
_data
.
submitTenderRegister
.
email
},
{
title
:
'单位地址:'
,
name
:
'address'
,
render
:
()
=>
`
${
_data
.
submitTenderRegister
.
provinceName
}${
_data
.
submitTenderRegister
.
cityName
}${
_data
.
submitTenderRegister
.
regionName
}${
_data
.
submitTenderRegister
.
address
}
`
},
{
title
:
'电子邮箱:'
,
name
:
'email'
,
render
:
()
=>
_data
?.
submitTenderRegister
?
.
email
},
{
title
:
'单位地址:'
,
name
:
'address'
,
render
:
()
=>
_data
?.
submitTenderRegister
&&
`
${
_data
.
submitTenderRegister
.
provinceName
}${
_data
.
submitTenderRegister
.
cityName
}${
_data
.
submitTenderRegister
.
regionName
}${
_data
.
submitTenderRegister
.
address
}
`
},
]
}
]
...
...
@@ -231,7 +231,7 @@ const DescriptionsInfo: React.FC<BasicInfoProps> = ({cardTitle, type}) => {
name
:
'registerFile'
,
render
:
(
t
,
r
)
=>
(<
div
>
{
_data
[
'submitTenderRegister'
][
'registerFile'
].
map
((
_item
,
_i
)
=>
<
p
><
a
key=
{
`registerFile${_i}`
}
target=
"_blank"
href=
{
_item
.
url
}
><
FileFilled
/>
{
_item
.
name
}
</
a
></
p
>)
_data
?.
submitTenderRegister
&&
_data
[
'submitTenderRegister'
][
'registerFile'
].
map
((
_item
,
_i
)
=>
<
p
><
a
key=
{
`registerFile${_i}`
}
target=
"_blank"
href=
{
_item
.
url
}
><
FileFilled
/>
{
_item
.
name
}
</
a
></
p
>)
}
</
div
>)
},
...
...
src/pages/procurement/constants/index.tsx
View file @
d9500dd4
...
...
@@ -26,7 +26,7 @@ export const processLogResponses = (resData) => {
id
:
item
.
taskStep
,
name
:
item
.
taskName
,
operationRole
:
item
.
memberRoleName
,
isActive
:
currentOuterStep
===
0
?
true
:
(
item
.
taskStep
<
currentOuterStep
)
isActive
:
currentOuterStep
===
0
?
true
:
(
item
.
taskStep
<
=
currentOuterStep
)
}))
const
subTasks
=
externalTasks
.
filter
(
item
=>
item
.
taskStep
===
currentOuterStep
)
const
interiorLogs
=
subTasks
.
length
?
subTasks
[
0
][
'subTasks'
].
map
(
item
=>
({
...
...
src/pages/procurement/tender/addTender/components/relateProductDrawer/index.tsx
View file @
d9500dd4
...
...
@@ -63,6 +63,30 @@ export const RelevanceTenderProduct: React.FC<RelateProductDrawerProps> = ({
}
},
[])
useEffect
(()
=>
{
if
(
visible
)
{
// 清空之前的数据并重置schema
formActions
.
reset
()
setDataIdList
([
{
title
:
'基本信息'
,
idName
:
'basicInfo'
,
},
{
title
:
'附件'
,
idName
:
'file'
,
}
])
setOuterSchema
(()
=>
{
let
tempSchema
:
any
=
{...
relevanceSchema
}
return
{
type
:
"object"
,
properties
:
{
"Text_0"
:
tempSchema
[
'properties'
][
'Text_0'
],
"Text_99"
:
tempSchema
[
'properties'
][
'Text_99'
]
}
}
})
}
},
[
visible
])
// 显示当前投标物料信息
useEffect
(()
=>
{
if
(
currentMaterial
)
{
...
...
@@ -197,17 +221,16 @@ export const RelevanceTenderProduct: React.FC<RelateProductDrawerProps> = ({
formActions
.
submit
(
v
=>
{
// 点击确定 设置商品id和商品文件到对应物料行中
let
submitMateriel
=
schemaAction
.
getFieldValue
(
'submitTenderMateriel'
)
console
.
log
(
v
,
submitMateriel
,
selectRow
,
currentMaterial
)
submitMateriel
.
map
(
item
=>
{
if
(
item
=>
item
.
id
===
currentMaterial
[
0
]
[
'id'
])
{
if
(
item
.
id
===
currentMaterial
[
'id'
])
{
item
.
file
=
v
[
'file'
]
item
.
commodityId
=
selectRow
[
0
][
'id'
]
item
.
commoditySkuId
=
selectRow
[
0
][
'commodityId'
]
// item.commodityId = selectRow[0]['commodityId']
}
return
item
})
console
.
log
(
v
,
submitMateriel
,
selectRow
)
schemaAction
.
setFieldValue
(
'submitTenderMateriel'
,
submitMateriel
)
})
}
...
...
@@ -237,7 +260,7 @@ export const RelevanceTenderProduct: React.FC<RelateProductDrawerProps> = ({
// 子级抽屉点击确定 ~生成动态schema和dataList
const
onConfirm
=
()
=>
{
setChildVisible
(
false
)
console
.
log
(
'确定'
,
selectRow
)
// console.log('确定', selectRow)//////////
formActions
.
setFieldValue
(
'tenderProduct'
,
selectRow
[
0
])
PublicApi
.
getProductCommodityGetCommodityAttributeByUnitPriceAndPicId
({
unitPriceAndPicId
:
selectRow
[
0
][
'id'
]
}).
then
(
res
=>
{
console
.
log
(
res
.
data
)
...
...
@@ -256,6 +279,7 @@ export const RelevanceTenderProduct: React.FC<RelateProductDrawerProps> = ({
res
.
data
.
map
((
item
,
index
)
=>
{
let
tempObj
=
{
type
:
"object"
,
"x-index"
:
++
index
,
"x-component"
:
"CustomTitle"
,
"x-component-props"
:
{
text
:
item
.
customerAttribute
.
name
...
...
@@ -276,6 +300,7 @@ export const RelevanceTenderProduct: React.FC<RelateProductDrawerProps> = ({
for
(
let
i
=
0
;
i
<
sortArr
.
length
;
i
++
){
sortAfter
[
'properties'
][
sortArr
[
i
]]
=
origin
[
'properties'
][
sortArr
[
i
]]
}
console
.
log
(
sortAfter
,
'sortAfter'
)
return
sortAfter
})
})
...
...
src/pages/procurement/tender/addTender/index.tsx
View file @
d9500dd4
...
...
@@ -124,7 +124,8 @@ const AddTender:React.FC<AddTenderProps> = (props) => {
}
})
if
(
!
judgementByCount
||
judgementByCount
.
includes
(
false
)){
throw
new
Error
(
'请填写商品单价'
)
// throw new Error('请填写商品单价')
return
message
.
error
(
'请填写商品单价'
)
}
if
(
value
?.
id
)
params
.
id
=
value
.
id
const
res
=
await
PublicApi
.
postPurchaseSubmitTenderSaveSubmitTender
(
params
)
...
...
src/pages/procurement/tender/addTender/model/useProductTable.tsx
View file @
d9500dd4
import
React
,
{
useState
}
from
'react'
import
{
ISchemaFormActions
,
ISchemaFormAsyncActions
}
from
'@formily/antd'
;
import
{
Button
,
message
}
from
'antd'
;
import
{
Button
,
message
,
Spin
}
from
'antd'
;
import
{
productInfoColumns
}
from
'../constant'
;
import
ProductTableCell
,
{
ProductEditableRow
}
from
'../components/productTableCell'
;
import
{
CaretDownOutlined
,
CaretRightOutlined
}
from
'@ant-design/icons'
;
...
...
@@ -142,13 +142,14 @@ export const useProductTable = (ctx: ISchemaFormActions | ISchemaFormAsyncAction
</
Row
>
</
div
>)
ctx
.
setFieldValue
(
'submitTenderMateriel'
,
newData
)
console
.
log
(
item
,
data
)
//
console.log(item, data)
}
}
// 嵌套子表格
const
productChildren
=
{
expandedRowRender
:
record
=>
<
p
style=
{
{
margin
:
0
}
}
>
{
record
.
description
}
</
p
>,
// expandedRowRender: record => <p style={{ margin: 0 }}>{record.description}</p>,
expandedRowRender
:
record
=>
<
p
style=
{
{
margin
:
0
}
}
>
{
record
.
description
||
<
Spin
size=
"small"
style=
{
{
margin
:
'15px auto'
,
width
:
'100%'
}
}
/>
}
</
p
>,
rowExpandable
:
record
=>
record
.
name
!==
'Not Expandable'
,
expandIcon
:
({
expanded
,
onExpand
,
record
})
=>
expanded
?
(
...
...
@@ -157,8 +158,8 @@ export const useProductTable = (ctx: ISchemaFormActions | ISchemaFormAsyncAction
<
CaretRightOutlined
onClick=
{
e
=>
onExpand
(
record
,
e
)
}
/>
),
onExpand
:
(
expanded
,
record
)
=>
{
console
.
log
(
'通过商品Id 查询商品信息显示在嵌套中'
,
record
)
if
(
!
record
?.
commodityId
)
{
console
.
log
(
'通过商品Id 查询商品信息显示在嵌套中'
,
record
,
expanded
)
if
(
!
record
?.
commodityId
&&
expanded
)
{
return
message
.
error
(
'请先选择关联商品'
)
}
if
(
expanded
)
{
...
...
src/pages/procurement/tender/addTender/schema/modal.ts
View file @
d9500dd4
...
...
@@ -7,6 +7,7 @@ export const relevanceSchema: ISchema = {
properties
:
{
Text_0
:
{
type
:
"object"
,
"x-index"
:
0
,
"x-component"
:
"CustomTitle"
,
"x-component-props"
:
{
text
:
"基本信息"
...
...
@@ -44,80 +45,9 @@ export const relevanceSchema: ISchema = {
}
}
},
// @todo 动态拼接这里的属性schema
// Text_2: {
// type: "object",
// "x-component": "CustomTitle",
// "x-component-props": {
// text: "产地"
// },
// properties: {
// chan: {
// title: '产地',
// type: 'string',
// readOnly: true,
// }
// }
// },
// Text_3: {
// type: "object",
// "x-component": "CustomTitle",
// "x-component-props": {
// text: "外观尺寸"
// },
// properties: {
// mian: {
// title: '面料',
// type: 'string',
// readOnly: true,
// },
// yan: {
// title: '颜色',
// type: 'string',
// readOnly: true,
// },
// ci: {
// title: '尺码',
// type: 'string',
// readOnly: true,
// }
// }
// },
// Text_4: {
// type: "object",
// "x-component": "CustomTitle",
// "x-component-props": {
// text: "工艺"
// },
// properties: {
// hua: {
// title: '化学处理',
// type: 'string',
// readOnly: true,
// },
// biao: {
// title: '表批量化',
// type: 'string',
// readOnly: true,
// }
// }
// },
// Text_5: {
// type: "object",
// "x-component": "CustomTitle",
// "x-component-props": {
// text: "特殊说明"
// },
// properties: {
// specificInfo: {
// title: '特殊说明',
// type: 'string',
// readOnly: true,
// }
// }
// },
Text_99
:
{
type
:
"object"
,
"x-index"
:
99
,
"x-component"
:
"CustomTitle"
,
"x-component-props"
:
{
text
:
"附件"
...
...
src/pages/procurement/tender/callForBidsSearch/detail/index.tsx
View file @
d9500dd4
...
...
@@ -27,10 +27,10 @@ const CallForBidsSearchDetailInTender: React.FC = () => {
{
title
:
'流转记录'
,
id
:
'transferRecord'
,
componentName
:
"BidTransformRecord"
},
]
// 没有报名的标 隐藏报名信息、报名文件
if
(
data
?.
submitTenderOutStatus
===
TenderOutWorkState
.
Not_Invite_Tender_Register
)
{
anchorTitleList
.
splice
(
5
,
2
)
}
//
// 没有报名的标 隐藏报名信息、报名文件
//
if(data?.submitTenderOutStatus === TenderOutWorkState.Not_Invite_Tender_Register) {
//
anchorTitleList.splice(5, 2)
//
}
return
(
<
div
>
...
...
src/pages/procurement/tender/tenderSearch/detail/index.tsx
View file @
d9500dd4
...
...
@@ -25,10 +25,10 @@ const TenderSearchDetail: React.FC = () => {
{
title
:
'流转记录'
,
id
:
'transferRecord'
,
componentName
:
"BidTransformRecord"
},
]
// 没有完成的标 隐藏中标结果、中标明细
if
(
data
?.
inviteTender
?.
inviteTenderOutStatus
!==
BidOuterWorkState
.
Finish_Invite_Tender
)
{
anchorTitleList
.
splice
(
1
,
2
)
}
//
//
没有完成的标 隐藏中标结果、中标明细
//
if(data?.inviteTender?.inviteTenderOutStatus !== BidOuterWorkState.Finish_Invite_Tender) {
//
anchorTitleList.splice(1, 2)
//
}
return
(
<
div
>
...
...
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