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
c48647da
Commit
c48647da
authored
Dec 04, 2020
by
前端-黄佳鑫
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化需求单发布模块
parent
8b9ca25d
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
501 additions
and
281 deletions
+501
-281
demandPosts.ts
config/routes/tranactionRoute/demandPosts.ts
+0
-115
index.tsx
src/components/ModalTable/index.tsx
+12
-12
auditModel.tsx
src/pages/transaction/demandPosts/components/auditModel.tsx
+112
-0
detail.tsx
src/pages/transaction/demandPosts/components/detail.tsx
+55
-4
tableList.tsx
src/pages/transaction/demandPosts/components/tableList.tsx
+1
-1
addForm.tsx
src/pages/transaction/demandPosts/demandAdd/addForm.tsx
+49
-18
modalAnchor.tsx
...on/demandPosts/demandAdd/components/Modal/modalAnchor.tsx
+57
-30
modalGoods.tsx
...ion/demandPosts/demandAdd/components/Modal/modalGoods.tsx
+3
-2
addGoods.tsx
...transaction/demandPosts/demandAdd/components/addGoods.tsx
+15
-15
basicInfo.tsx
...ransaction/demandPosts/demandAdd/components/basicInfo.tsx
+16
-6
demandDbutted.tsx
...action/demandPosts/demandAdd/components/demandDbutted.tsx
+144
-62
flowRecord.tsx
...ansaction/demandPosts/demandAdd/components/flowRecord.tsx
+10
-2
index.tsx
src/pages/transaction/demandPosts/demandAdd/index.tsx
+9
-2
detail.tsx
src/pages/transaction/demandPosts/demandAuditOne/detail.tsx
+5
-0
index.tsx
src/pages/transaction/demandPosts/demandAuditOne/index.tsx
+1
-1
detail.tsx
src/pages/transaction/demandPosts/demandAuditTwo/detail.tsx
+5
-0
index.tsx
src/pages/transaction/demandPosts/demandAuditTwo/index.tsx
+1
-1
index.tsx
src/pages/transaction/demandPosts/demandSubmit/index.tsx
+6
-10
No files found.
config/routes/tranactionRoute/demandPosts.ts
View file @
c48647da
...
...
@@ -4,121 +4,6 @@
* @return {type}
*/
export
default
[
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit',
// name: 'enquirySubmit',
// routes: [
// // 需求单查询 - 列表
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/enquirySearch',
// name: 'enquirySearch',
// component: '@/pages/transaction/enquirySubmit/enquirySearch'
// },
// // 需求单查询 - 查看需求单号
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/enquirySearch/preview',
// name: 'enquirySearchPreview',
// component: '@/pages/transaction/enquirySubmit/components/detail',
// hideInMenu: true,
// },
// // 待新建需求单 - 列表
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/addDemandOrder',
// name: 'toAddSubmitList',
// component: '@/pages/transaction/enquirySubmit/addDemandOrder'
// },
// // 待新增需求单-新增
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/addDemandOrder/add',
// name: 'addEnquiry',
// component: '@/pages/transaction/enquirySubmit/addDemandOrder/addForm',
// hideInMenu: true,
// },
// // 待新增需求单-编辑
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/addDemandOrder/edit',
// name: 'editEnquiry',
// component: '@/pages/transaction/enquirySubmit/addDemandOrder/addForm',
// hideInMenu: true,
// },
// // 待新建需求单 - 查看需求单号
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/toAddSubmitList/preview',
// name: 'toAddSubmitListPreview',
// component: '@/pages/transaction/enquirySubmit/components/detail',
// hideInMenu: true,
// },
// // 待新建需求单 - 详情
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/toAddSubmitList/detail',
// name: 'toAddSubmitListDetail',
// component: '@/pages/transaction/enquirySubmit/components/detail',
// hideInMenu: true,
// },
// // 待审核需求单(一级)
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/enquiryOne',
// name: 'enquiryOne',
// component: '@/pages/transaction/enquirySubmit/enquiryOne'
// },
// // 待审核需求单(一级)- 查看需求单
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/enquiryOne/preview',
// name: 'enquiryOnePreview',
// component: '@/pages/transaction/enquirySubmit/enquiryOne/detail',
// hideInMenu: true,
// },
// // 待审核需求单(一级)-详情
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/enquiryOne/detail',
// name: 'enquiryOneDetail',
// component: '@/pages/transaction/enquirySubmit/enquiryOne/detail',
// hideInMenu: true,
// },
// // 待审核需求单(二级)
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/enquiryTwo',
// name: 'enquiryTwo',
// component: '@/pages/transaction/enquirySubmit/enquiryTwo'
// },
// // 待审核需求单(二级)-查看需求单
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/enquiryTwo/preview',
// name: 'enquiryTwoPreview',
// component: '@/pages/transaction/enquirySubmit/enquiryTwo/detail',
// hideInMenu: true,
// },
// // 待审核需求单(二级)-详情
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/enquiryTwo/detail',
// name: 'enquiryTwoDetail',
// component: '@/pages/transaction/enquirySubmit/enquiryTwo/detail',
// hideInMenu: true,
// },
// // 待提交需求单
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/toSubmit',
// name: 'toSubmit',
// component: '@/pages/transaction/enquirySubmit/toSubmit'
// },
// // 待提交需求单 - 查看需求单
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/toSubmit/preview',
// name: 'toSubmitPreview',
// component: '@/pages/transaction/enquirySubmit/toSubmit/detail',
// hideInMenu: true,
// },
// // 待提交需求单-详情
// {
// path: '/memberCenter/tranactionAbility/enquirySubmit/toSubmit/detail',
// name: 'toSubmitDetail',
// component: '@/pages/transaction/enquirySubmit/toSubmit/detail',
// hideInMenu: true,
// },
// ],
// },
{
path
:
'/memberCenter/tranactionAbility/demandPosts'
,
name
:
'enquirySubmit'
,
...
...
src/components/ModalTable/index.tsx
View file @
c48647da
import
React
,
{
ReactText
,
useRef
,
useEffect
,
useLayoutEffect
}
from
'react'
import
{
StandardTable
}
from
'god'
import
NestTable
from
'@/components/NestTable'
import
{
IStandardTableProps
}
from
'god/dist/src/standard-table'
import
{
Row
,
Col
,
Modal
}
from
'antd'
import
{
productModalSchema
,
productModalByMemberSchema
,
memberModalSchema
,
inquirySchema
,
demandSchema
,
enquirySchema
,
mergeOrderSchema
,
goodsModalSchema
,
demandNumberSchema
}
from
'./schema'
import
Search
from
'../NiceForm/components/Search'
import
SearchSelect
from
'../NiceForm/components/SearchSelect'
import
Submit
from
'../NiceForm/components/Submit'
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
DateSelect
from
'../NiceForm/components/DateSelect'
import
React
,
{
ReactText
,
useRef
,
useEffect
,
useLayoutEffect
}
from
'react'
;
import
{
StandardTable
}
from
'god'
;
import
NestTable
from
'@/components/NestTable'
;
import
{
IStandardTableProps
}
from
'god/dist/src/standard-table'
;
import
{
Row
,
Col
,
Modal
}
from
'antd'
;
import
{
productModalSchema
,
productModalByMemberSchema
,
memberModalSchema
,
inquirySchema
,
demandSchema
,
enquirySchema
,
mergeOrderSchema
,
goodsModalSchema
,
demandNumberSchema
}
from
'./schema'
;
import
Search
from
'../NiceForm/components/Search'
;
import
SearchSelect
from
'../NiceForm/components/SearchSelect'
;
import
Submit
from
'../NiceForm/components/Submit'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
DateSelect
from
'../NiceForm/components/DateSelect'
;
export
interface
ModalTableProps
extends
IStandardTableProps
<
any
>
{
width
?:
number
,
...
...
src/pages/transaction/demandPosts/components/auditModel.tsx
0 → 100644
View file @
c48647da
import
React
from
'react'
;
import
{
Modal
}
from
'antd'
;
import
{
SchemaForm
,
SchemaMarkupField
as
Field
,
createFormActions
,
FormEffectHooks
}
from
'@formily/antd'
import
{
Input
,
Radio
,
FormMegaLayout
}
from
'@formily/antd-components'
import
{
PublicApi
}
from
'@/services/api'
;
const
actions
=
createFormActions
()
const
{
onFieldChange$
}
=
FormEffectHooks
;
export
interface
Params
{
id
:
number
|
string
;
type
:
number
|
string
;
//1是待提交询价单 2是一级 3是二级
dialogVisible
:
boolean
;
onCancel
:
Function
;
onOK
?:
Function
;
}
const
AuditModal
:
React
.
FC
<
Params
>
=
(
props
)
=>
{
const
useFormEffects
=
()
=>
{
const
{
setFieldState
}
=
createFormActions
()
onFieldChange$
(
'state'
).
subscribe
(({
value
})
=>
{
setFieldState
(
'cause'
,
state
=>
{
if
(
value
==
1
)
{
state
.
visible
=
false
}
else
{
state
.
visible
=
true
}
})
})
}
const
handletOk
=
(
values
:
any
)
=>
{
let
value
=
{
...
values
}
value
.
id
=
props
.
id
switch
(
props
.
type
)
{
case
3
:
PublicApi
.
postOrderRequisitionFormAudit
(
value
).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
props
.
onOK
()
}
})
break
;
case
4
:
PublicApi
.
postOrderRequisitionFormAuditTwo
(
value
).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
props
.
onOK
()
}
})
break
;
}
}
return
(
<
Modal
title=
'单据审核'
width=
{
576
}
visible=
{
props
.
dialogVisible
}
onOk=
{
()
=>
actions
.
submit
()
}
onCancel=
{
()
=>
props
.
onCancel
()
}
destroyOnClose
afterClose=
{
()
=>
actions
.
reset
()
}
okText=
'确定'
cancelText=
{
`取消`
}
>
<
SchemaForm
layout=
"vertical"
labelCol=
{
6
}
components=
{
{
Input
,
Radio
:
Radio
.
Group
,
TextArea
:
Input
.
TextArea
}
}
actions=
{
actions
}
effects=
{
()
=>
useFormEffects
()
}
onSubmit=
{
(
values
)
=>
handletOk
(
values
)
}
initialValues=
{
{
state
:
1
}
}
>
<
Field
enum=
{
[
{
label
:
'审核通过'
,
value
:
1
},
{
label
:
'审核不通过'
,
value
:
0
}
]
}
name=
'state'
required
x
-
component=
"Radio"
x
-
component
-
props=
{
{
}
}
/>
<
Field
title=
'审核不通过原因'
name=
"cause"
x
-
component=
"TextArea"
required
x
-
component
-
props=
{
{
placeholder
:
'在此输入你的内容,最多60个汉字'
}
}
x
-
rules=
{
{
max
:
60
,
// maximum:10,//最大数值
message
:
'原因最多60个汉字'
}
}
/>
</
SchemaForm
>
</
Modal
>
)
}
export
default
AuditModal
src/pages/transaction/demandPosts/components/detail.tsx
View file @
c48647da
import
React
,
{
useEffect
,
useState
,
useRef
}
from
'react'
;
import
{
Tabs
,
Steps
,
Table
,
Radio
,
Tooltip
,
Form
,
Checkbox
,
Row
,
Col
,
Space
,
Avatar
}
from
'antd'
;
import
{
Tabs
,
Steps
,
Table
,
Radio
,
Tooltip
,
Form
,
Checkbox
,
Row
,
Col
,
Space
,
Avatar
,
Button
}
from
'antd'
;
import
{
history
}
from
'umi'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
style
from
'./index.less'
;
...
...
@@ -9,11 +9,16 @@ import GeneralInteriorState from '@/pages/transaction/common/interiorState';
import
moment
from
'moment'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
GlobalConfig
}
from
'@/global/config'
import
{
QuestionCircleOutlined
}
from
'@ant-design/icons'
;
import
{
CheckSquareOutlined
,
QuestionCircleOutlined
}
from
'@ant-design/icons'
;
import
{
StandardTable
}
from
'god'
;
import
AuditModal
from
'./auditModel'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
ModalAnchor
from
'../demandAdd/components/Modal/modalAnchor'
;
interface
detailParams
{
id
?:
any
,
path
?:
string
,
type
?:
number
}
const
{
TabPane
}
=
Tabs
;
const
{
Step
}
=
Steps
;
...
...
@@ -27,7 +32,10 @@ const styl: any = {
const
detailInfo
:
React
.
FC
<
detailParams
>
=
(
props
)
=>
{
const
ref
=
useRef
<
any
>
({});
const
[
form
]
=
Form
.
useForm
();
const
{
id
}
=
props
;
const
{
id
,
path
,
type
}
=
props
;
const
[
visible
,
setvisible
]
=
useState
<
boolean
>
(
false
);
const
[
editdata
,
seteditdata
]
=
useState
<
any
>
({});
const
[
anchorvisible
,
setanchorvisible
]
=
useState
<
boolean
>
(
false
);
const
[
externalState
,
setExternalState
]
=
useState
<
any
>
([]);
const
[
interiorState
,
setInteriorState
]
=
useState
<
any
>
([]);
const
[
goodAllIds
,
setgoodAllIds
]
=
useState
<
Array
<
any
>>
([]);
...
...
@@ -219,7 +227,7 @@ const detailInfo: React.FC<detailParams> = (props) => {
useEffect
(()
=>
{
new
Promise
(
resolve
=>
{
PublicApi
.
getOrderRequisitionFormDetails
({
id
,
current
:
'1'
,
pageSize
:
'1000'
}).
then
(
res
=>
{
PublicApi
.
getOrderRequisitionFormDetails
({
id
,
current
:
'1'
,
pageSize
:
'1000'
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
)
}
...
...
@@ -252,6 +260,7 @@ const detailInfo: React.FC<detailParams> = (props) => {
title
:
'商品名称'
,
key
:
'name'
,
dataIndex
:
'name'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
type=
'button'
handleClick=
{
()
=>
{
setanchorvisible
(
true
);
seteditdata
(
record
)}
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'规格型号'
,
...
...
@@ -319,6 +328,18 @@ const detailInfo: React.FC<detailParams> = (props) => {
})
}
/** 提交后返回 */
const
handleModalOK
=
()
=>
{
setvisible
(
false
)
setTimeout
(()
=>
{
history
.
goBack
()
},
1000
)
}
const
handleSubmit
=
(
data
)
=>
{
setanchorvisible
(
false
);
}
return
(
<
PageHeaderWrapper
className=
{
style
.
header
}
...
...
@@ -334,6 +355,18 @@ const detailInfo: React.FC<detailParams> = (props) => {
</
div
>
</>
}
extra=
{
<>
{
(
path
===
'detail'
&&
(
Number
(
type
)
===
3
||
Number
(
type
)
===
4
))
&&
<>
<
Button
type=
'primary'
className=
{
style
[
'saveBtn'
]
}
onClick=
{
()
=>
setvisible
(
true
)
}
>
<
CheckSquareOutlined
/>
单据审核
</
Button
>
</>
}
</>
}
content=
{
<
div
className=
{
style
[
'headerMain'
]
}
>
<
div
className=
{
style
[
'headerMain-left'
]
}
>
...
...
@@ -527,6 +560,24 @@ const detailInfo: React.FC<detailParams> = (props) => {
</
TabPane
>
</
Tabs
>
</
div
>
<
AuditModal
id=
{
id
}
type=
{
type
}
dialogVisible=
{
visible
}
onCancel=
{
()
=>
setvisible
(
false
)
}
onOK=
{
handleModalOK
}
/>
<
ModalAnchor
fetchdata=
{
editdata
}
isEdit=
{
true
}
visible=
{
anchorvisible
}
onOk=
{
handleSubmit
}
disable=
{
true
}
onCancel=
{
()
=>
setanchorvisible
(
false
)
}
/>
</
PageHeaderWrapper
>
)
}
...
...
src/pages/transaction/demandPosts/components/tableList.tsx
View file @
c48647da
...
...
@@ -141,7 +141,7 @@ const TableListInfo: React.FC<tableListParams> = (props) => {
</
Col
>
}
{
type
===
3
&&
(
type
!==
1
&&
type
!==
2
)
&&
<
Col
span=
{
6
}
>
<
Button
onClick=
{
()
=>
batch
()
}
loading=
{
loading
}
>
批量提交审核
</
Button
>
</
Col
>
...
...
src/pages/transaction/demandPosts/demandAdd/addForm.tsx
View file @
c48647da
...
...
@@ -14,9 +14,36 @@ const { TabPane } = Tabs;
const
AddDemandOrder
:
React
.
FC
<
{}
>
=
()
=>
{
const
{
id
}
=
history
.
location
.
query
;
const
[
fetchdata
,
setfetchdata
]
=
useState
<
any
>
({});
const
[
goodsInfo
,
setGoodsInfo
]
=
useState
<
any
>
({});
/**0选择系统所需要的参数 */
const
[
attribute
,
setattribute
]
=
useState
<
Array
<
any
>>
([]);
const
[
externalState
,
setExternalState
]
=
useState
<
any
>
([]);
const
[
interiorState
,
setInteriorState
]
=
useState
<
any
>
([]);
useEffect
(()
=>
{
const
external
=
new
Promise
(
resolve
=>
{
//查询需求单外部状态枚举列表
PublicApi
.
getOrderRequisitionFormExternalStateEnum
().
then
((
res
:
any
)
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
)
}
})
})
const
interior
=
new
Promise
(
resolve
=>
{
// 查询需求单内部状态枚举列表
PublicApi
.
getOrderRequisitionFormInteriorStateEnum
().
then
((
res
:
any
)
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
)
}
})
})
Promise
.
all
([
external
,
interior
]).
then
(
res
=>
{
setExternalState
(
res
[
0
])
setInteriorState
(
res
[
1
])
})
},
[])
const
basic
=
useRef
<
any
>
();
const
goods
=
useRef
<
any
>
();
const
trading
=
useRef
<
any
>
();
const
dbutted
=
useRef
<
any
>
();
/**get子组件的数据 */
/**提交数据 */
...
...
@@ -24,13 +51,13 @@ const AddDemandOrder: React.FC<{}> = () => {
const
basicRef
=
await
basic
.
current
.
get
();
const
goodsRef
=
await
goods
.
current
.
get
();
const
tradingRef
=
await
trading
.
current
.
get
();
if
(
basicRef
.
state
&&
tradingRef
.
state
&&
goodsRef
.
state
)
{
const
dbuttedRef
=
await
dbutted
.
current
.
get
();
if
(
basicRef
.
state
&&
tradingRef
.
state
&&
goodsRef
.
state
&&
dbuttedRef
.
state
)
{
const
data
=
{
...
basicRef
.
data
,
...
tradingRef
.
data
,
...
goodsRef
.
data
,
type
:
1
,
shopIds
:
[
1
]
...
dbuttedRef
.
data
}
if
(
basicRef
.
data
.
requisitionFormAddress
.
length
>
0
)
{
data
.
defaultAddres
=
0
...
...
@@ -69,25 +96,21 @@ const AddDemandOrder: React.FC<{}> = () => {
}
},
[
id
])
/**获取所有地址 */
const
getAreaCode
=
(
record
:
any
)
=>
{
setGoodsInfo
({...
goodsInfo
,
record
})
}
/**获取添加的商品品类id */
const
getCategoryIds
=
(
ids
:
any
)
=>
{
const
categoryIds
:
any
=
[];
const
attributeList
:
any
=
[];
ids
.
forEach
(
v
=>
{
let
id
=
v
.
ids
[
v
.
ids
.
length
-
1
];
categoryIds
.
push
([...
categoryIds
,
...
id
])
let
productAttributeJson
=
JSON
.
parse
(
v
.
productAttributeJson
);
productAttributeJson
.
forEach
(
vs
=>
{
console
.
log
(
vs
)
attributeList
.
push
({
attributeValue
:
vs
})
})
console
.
log
(
categoryIds
,
attributeList
)
const
getCategoryIds
=
(
data
:
any
,
record
:
any
)
=>
{
const
categoryIds
:
Array
<
any
>
[]
=
[]
data
.
forEach
((
item
:
any
)
=>
{
categoryIds
.
push
(...
item
.
ids
)
})
console
.
log
(
ids
)
setGoodsInfo
({...
goodsInfo
,
categoryIds
})
setattribute
([...
attribute
,
...
record
])
}
console
.
log
(
goodsInfo
,
10086
)
return
(
<
PageHeaderWrapper
onBack=
{
()
=>
history
.
goBack
()
}
...
...
@@ -101,7 +124,10 @@ const AddDemandOrder: React.FC<{}> = () => {
<
TabPane
forceRender
tab=
'基本信息'
key=
'1'
>
<
BasicInfo
set=
{
fetchdata
}
onGet=
{
getAreaCode
}
currentRef=
{
basic
}
externalState=
{
externalState
}
interiorState=
{
interiorState
}
/>
</
TabPane
>
<
TabPane
forceRender
tab=
'添加商品'
key=
'2'
>
...
...
@@ -120,11 +146,16 @@ const AddDemandOrder: React.FC<{}> = () => {
<
TabPane
forceRender
tab=
'需求对接'
key=
'4'
>
<
DemandDbutted
set=
{
fetchdata
}
goodsInfo=
{
goodsInfo
}
attribute=
{
attribute
}
currentRef=
{
dbutted
}
/>
</
TabPane
>
<
TabPane
forceRender
tab=
'流转记录'
key=
'5'
>
<
FlowRecord
set=
{
fetchdata
}
externalState=
{
externalState
}
interiorState=
{
interiorState
}
/>
</
TabPane
>
</
Tabs
>
...
...
src/pages/transaction/demandPosts/demandAdd/components/Modal/modalAnchor.tsx
View file @
c48647da
...
...
@@ -18,7 +18,8 @@ interface anchorParams {
onOk
?:
Function
,
onCancel
?:
Function
,
fetchdata
?:
any
,
isEdit
?:
boolean
isEdit
?:
boolean
,
disable
?:
boolean
}
const
{
Option
}
=
Select
;
...
...
@@ -30,6 +31,7 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
const
[
categoryById
,
setCategoryById
]
=
useState
<
any
>
({});
const
[
selected
,
setselected
]
=
useState
<
string
>
(
''
)
const
[
category
,
setcategory
]
=
useState
<
Array
<
any
>>
([]);
const
[
attribute
,
setattribute
]
=
useState
<
Array
<
any
>>
([]);
/**查询品类树 */
const
searchCategoryTree
=
(
id
:
any
)
=>
{
return
new
Promise
(
resolve
=>
{
...
...
@@ -44,15 +46,15 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
}
/**查询品类信息--包括品类、属性、属性值 */
const
getCategoryById
=
(
val
:
any
,
selectedOptions
?:
any
)
=>
{
const
id
=
val
[
val
.
length
-
1
];
if
(
!
isEdit
&&
selectedOptions
.
length
>
0
)
{
const
name
=
selectedOptions
[
selectedOptions
.
length
-
1
];
const
getCategoryById
=
(
val
:
any
,
selectedOptions
?:
any
)
=>
{
const
id
=
val
[
val
.
length
-
1
];
if
(
!
isEdit
&&
selectedOptions
.
length
>
0
)
{
const
name
=
selectedOptions
[
selectedOptions
.
length
-
1
];
setselected
(
name
.
title
)
}
PublicApi
.
getProductPlatformGetCategoryById
({
id
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
PublicApi
.
getProductPlatformGetCategoryById
({
id
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setCategoryById
(
res
.
data
)
}
...
...
@@ -61,17 +63,19 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
useEffect
(()
=>
{
form
.
resetFields
();
searchCategoryTree
(
'0'
)
if
(
Object
.
keys
(
fetchdata
).
length
>
0
&&
isEdit
)
{
if
(
Object
.
keys
(
fetchdata
).
length
>
0
&&
isEdit
)
{
getCategoryById
(
fetchdata
.
ids
)
const
productAttributeJson
=
JSON
.
parse
(
fetchdata
.
productAttributeJson
);
let
obj
:
any
=
{}
let
obj
:
any
=
{}
let
newObj
:
any
=
{}
productAttributeJson
.
forEach
((
item
:
any
)
=>
{
obj
=
{...
obj
,
...
item
}
for
(
let
key
in
obj
)
{
newObj
=
{...
newObj
,
...{
productAttributeJson
.
forEach
((
item
:
any
)
=>
{
obj
=
{
...
obj
,
...
item
}
for
(
let
key
in
obj
)
{
newObj
=
{
...
newObj
,
...{
[
`
${
key
}
__`
]:
obj
[
key
].
join
(
','
)
}}
}
}
}
})
form
.
setFieldsValue
({
...
...
@@ -88,18 +92,17 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
}
},
[
visible
])
const
onSubmit
=
(
value
:
any
)
=>
{
const
onSubmit
=
(
value
:
any
)
=>
{
form
.
validateFields
().
then
(
res
=>
{
const
productAttributeJson
:
Array
<
any
>
=
[];
for
(
let
key
in
res
)
{
if
(
key
.
split
(
'__'
).
length
>
1
)
{
const
productAttributeJson
:
Array
<
any
>
=
[];
for
(
let
key
in
res
)
{
if
(
key
.
split
(
'__'
).
length
>
1
)
{
const
name
=
key
.
replace
(
/__/g
,
''
)
productAttributeJson
.
push
({
[
name
]:
[
res
[
key
]]
})
}
}
const
data
=
{
model
:
res
.
model
,
brand
:
res
.
brand
,
...
...
@@ -113,7 +116,7 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
urls
:
files
,
specialExplain
:
res
.
specialExplain
,
}
onOk
(
data
)
onOk
(
data
,
attribute
)
form
.
resetFields
();
setCategoryById
([])
}).
catch
(
error
=>
{
...
...
@@ -121,6 +124,22 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
})
}
/**获取类型参数id */
const
onSelect
=
(
value
,
option
,
idx
)
=>
{
attribute
[
idx
]
=
{
attributeId
:
option
.
key
,
attributeValue
:
option
.
value
}
setattribute
([...
attribute
])
}
/**获取类型输入文字 */
const
onSearch
=
(
value
,
idx
)
=>
{
attribute
[
idx
]
=
{
attributeValue
:
value
}
setattribute
([...
attribute
])
}
return
(
<
Modal
title=
'通过平台属性添加'
...
...
@@ -163,6 +182,7 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
<
div
className=
{
style
.
affix_title
}
><
Divider
type=
"vertical"
className=
{
style
.
divider_style
}
/>
基本信息
</
div
>
<
Form
.
Item
label=
'商品品类'
name=
'category'
rules=
{
[{
required
:
true
,
message
:
'请选择商品品类'
}]
}
>
<
Cascader
disabled=
{
props
.
disable
}
options=
{
category
}
fieldNames=
{
{
label
:
'title'
,
value
:
'id'
,
children
:
'children'
}
}
placeholder=
"请选择品类"
...
...
@@ -170,10 +190,10 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
onChange=
{
getCategoryById
}
/>
</
Form
.
Item
>
<
Form
.
Item
label=
'商品编号'
name=
'goodsNo'
rules=
{
[{
required
:
true
,
message
:
'请输入商品编号'
}]
}
><
Input
/></
Form
.
Item
>
<
Form
.
Item
label=
'商品名称'
name=
'name'
rules=
{
[{
required
:
true
,
message
:
'请输入商品名称'
}]
}
><
Input
/></
Form
.
Item
>
<
Form
.
Item
label=
'规格型号'
name=
'model'
rules=
{
[{
required
:
true
,
message
:
'请输入规格型号'
}]
}
><
Input
/></
Form
.
Item
>
<
Form
.
Item
label=
'规格品牌'
name=
'brand'
><
Input
/></
Form
.
Item
>
<
Form
.
Item
label=
'商品编号'
name=
'goodsNo'
rules=
{
[{
required
:
true
,
message
:
'请输入商品编号'
}]
}
><
Input
disabled=
{
props
.
disable
}
/></
Form
.
Item
>
<
Form
.
Item
label=
'商品名称'
name=
'name'
rules=
{
[{
required
:
true
,
message
:
'请输入商品名称'
}]
}
><
Input
disabled=
{
props
.
disable
}
/></
Form
.
Item
>
<
Form
.
Item
label=
'规格型号'
name=
'model'
rules=
{
[{
required
:
true
,
message
:
'请输入规格型号'
}]
}
><
Input
disabled=
{
props
.
disable
}
/></
Form
.
Item
>
<
Form
.
Item
label=
'规格品牌'
name=
'brand'
><
Input
disabled=
{
props
.
disable
}
/></
Form
.
Item
>
</
div
>
{
Object
.
keys
(
categoryById
).
length
>
0
&&
...
...
@@ -181,16 +201,20 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
<
div
className=
{
style
.
affix_title
}
><
Divider
type=
"vertical"
className=
{
style
.
divider_style
}
/>
{
categoryById
.
name
}
</
div
>
{
categoryById
.
attributeList
.
length
>
0
&&
categoryById
.
attributeList
.
map
((
item
:
any
,
index
:
number
)
=>
(
categoryById
.
attributeList
.
map
((
item
:
any
,
index
:
number
)
=>
(
<
Form
.
Item
label=
{
item
.
groupName
}
name=
{
`${item.groupName}__`
}
key=
{
item
.
groupId
}
rules=
{
[{
required
:
item
.
isEmpty
,
message
:
`请选择${item.groupName}`
}]
}
>
<
AutoComplete
>
<
AutoComplete
disabled=
{
props
.
disable
}
onSelect=
{
(
value
,
option
)
=>
onSelect
(
value
,
option
,
index
)
}
onSearch=
{
(
value
)
=>
onSearch
(
value
,
index
)
}
>
{
item
.
attributeValueList
.
map
((
items
:
any
)
=>
(
item
.
attributeValueList
.
map
((
items
:
any
)
=>
(
<
AutoComplete
.
Option
value=
{
items
.
value
}
key=
{
items
.
id
}
>
{
items
.
value
}
</
AutoComplete
.
Option
>
))
}
...
...
@@ -202,7 +226,7 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
}
<
div
id=
'other_demand'
>
<
div
className=
{
style
.
affix_title
}
><
Divider
type=
"vertical"
className=
{
style
.
divider_style
}
/>
其他要求
</
div
>
<
Form
.
Item
label=
'特殊说明'
name=
'specialExplain'
><
Input
.
TextArea
rows=
{
4
}
/></
Form
.
Item
>
<
Form
.
Item
label=
'特殊说明'
name=
'specialExplain'
><
Input
.
TextArea
rows=
{
4
}
disabled=
{
props
.
disable
}
/></
Form
.
Item
>
<
Form
.
Item
label=
'附件'
name=
'upload'
>
<
div
className=
{
style
.
upload_data
}
>
{
files
.
length
>
0
&&
files
.
map
((
v
,
index
)
=>
(
...
...
@@ -217,6 +241,8 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
</
div
>
))
}
</
div
>
{
!
props
.
disable
&&
<
Upload
action=
"/api/file/file/upload"
data=
{
{
fileType
:
UPLOAD_TYPE
}
}
...
...
@@ -226,12 +252,13 @@ const ModalAnchor: React.FC<anchorParams> = (props) => {
<
Button
loading=
{
loading
}
icon=
{
<
UploadOutlined
/>
}
>
上传文件
</
Button
>
<
div
style=
{
{
marginTop
:
'8px'
}
}
>
一次上传一个文件,每个附件大小不能超过 20M
</
div
>
</
Upload
>
}
</
Form
.
Item
>
</
div
>
<
div
id=
'procured_amount'
>
<
div
className=
{
style
.
affix_title
}
><
Divider
type=
"vertical"
className=
{
style
.
divider_style
}
/>
采购数量
</
div
>
<
Form
.
Item
label=
'单位'
name=
'unit'
rules=
{
[{
required
:
true
,
message
:
'请选择单位'
}]
}
><
Input
/></
Form
.
Item
>
<
Form
.
Item
label=
'采购数量'
name=
'purchaseCount'
rules=
{
[{
required
:
true
,
message
:
'请输入采购数量'
}]
}
><
InputNumber
min=
{
1
}
style=
{
{
width
:
'100%'
}
}
/></
Form
.
Item
>
<
Form
.
Item
label=
'单位'
name=
'unit'
rules=
{
[{
required
:
true
,
message
:
'请选择单位'
}]
}
><
Input
disabled=
{
props
.
disable
}
/></
Form
.
Item
>
<
Form
.
Item
label=
'采购数量'
name=
'purchaseCount'
rules=
{
[{
required
:
true
,
message
:
'请输入采购数量'
}]
}
><
InputNumber
disabled=
{
props
.
disable
}
min=
{
1
}
style=
{
{
width
:
'100%'
}
}
/></
Form
.
Item
>
</
div
>
</
Form
>
</
Content
>
...
...
src/pages/transaction/demandPosts/demandAdd/components/Modal/modalGoods.tsx
View file @
c48647da
...
...
@@ -108,13 +108,13 @@ const ModalGoods: React.FC<goodsParams> = (props) => {
title
:
'品类'
,
key
:
'customerCategory'
,
dataIndex
:
'customerCategory'
,
render
:
(
text
:
any
)
=>
<
span
>
{
text
.
name
}
</
span
>
render
:
(
text
:
any
)
=>
<
span
>
{
Object
.
keys
(
text
).
length
>
0
&&
text
.
name
}
</
span
>
},
{
title
:
'品牌'
,
key
:
'brand'
,
dataIndex
:
'brand'
,
render
:
(
text
:
any
)
=>
<
span
>
{
text
.
name
}
</
span
>
render
:
(
text
:
any
)
=>
<
span
>
{
Object
.
keys
(
text
).
length
>
0
&&
text
.
name
}
</
span
>
},
{
title
:
'单位'
,
...
...
@@ -154,6 +154,7 @@ const ModalGoods: React.FC<goodsParams> = (props) => {
<
Modal
title=
'通过平台属性添加'
width=
'800px'
destroyOnClose
wrapClassName=
{
style
.
modal_wrap_className
}
bodyStyle=
{
{
padding
:
'0px'
}
}
visible=
{
visible
}
...
...
src/pages/transaction/demandPosts/demandAdd/components/addGoods.tsx
View file @
c48647da
...
...
@@ -21,10 +21,10 @@ export interface faceSetData {
const
AddGoods
:
React
.
FC
<
faceSetData
>
=
(
props
)
=>
{
const
{
set
,
currentRef
,
onGet
}
=
props
const
[
form
]
=
Form
.
useForm
();
const
[
type
,
setTyp
e
]
=
useState
<
number
>
(
0
);
const
[
addMode
,
setaddMod
e
]
=
useState
<
number
>
(
0
);
const
btnname
:
Array
<
string
>
=
[
'添加商品'
,
'选择货品'
,
'导入货品'
]
const
[
visible
,
setvisible
]
=
useState
<
Array
<
boolean
>>
([
false
,
false
,
false
,
false
]);
const
[
tabledata
,
settabledata
]
=
useState
<
any
>
([])
const
[
tabledata
,
settabledata
]
=
useState
<
any
>
([])
;
/**存放编辑的商品数据 */
const
[
editdata
,
seteditdata
]
=
useState
<
any
>
({});
/**是否编辑 */
...
...
@@ -78,7 +78,7 @@ const AddGoods: React.FC<faceSetData> = (props) => {
/** 切换添加方式 */
const
changeRadio
=
(
e
:
any
)
=>
{
const
{
value
}
=
e
.
target
;
set
Typ
e
(
value
);
set
addMod
e
(
value
);
settabledata
([]);
}
/** 按钮的文字 */
...
...
@@ -105,15 +105,15 @@ const AddGoods: React.FC<faceSetData> = (props) => {
settabledata
([...
newdata
]);
setidx
(
-
1
);
}
onGet
([...
tabledata
,
data
])
handleModal
(
typ
e
);
onGet
([...
tabledata
,
data
]
,
record
)
handleModal
(
addMod
e
);
}
/** 编辑商品 */
const
handleEdit
=
(
record
:
any
,
index
:
number
)
=>
{
setidx
(
index
);
seteditdata
(
record
)
setisEdit
(
true
)
handleModal
(
typ
e
)
handleModal
(
addMod
e
)
}
useEffect
(()
=>
{
...
...
@@ -124,7 +124,7 @@ const AddGoods: React.FC<faceSetData> = (props) => {
state
:
true
,
name
:
'addGoods'
,
data
:
{
typ
e
,
addMod
e
,
requisitionFormProducts
:
tabledata
,
}
})
...
...
@@ -139,9 +139,9 @@ const AddGoods: React.FC<faceSetData> = (props) => {
/**编辑回显数据 */
if
(
Object
.
keys
(
set
).
length
>
0
)
{
form
.
setFieldsValue
({
type
:
set
.
typ
e
addMode
:
set
.
addMod
e
})
set
Type
(
set
.
typ
e
)
set
addMode
(
set
.
addMod
e
)
settabledata
(
set
.
requisitionFormProducts
)
}
},
[
set
])
...
...
@@ -151,17 +151,17 @@ const AddGoods: React.FC<faceSetData> = (props) => {
{
...
layout
}
form=
{
form
}
>
<
Form
.
Item
label=
'添加方式'
name=
'
typ
e'
rules=
{
[{
required
:
true
,
message
:
'请选择添加方式'
}]
}
>
<
Form
.
Item
label=
'添加方式'
name=
'
addMod
e'
rules=
{
[{
required
:
true
,
message
:
'请选择添加方式'
}]
}
>
<
Radio
.
Group
onChange=
{
changeRadio
}
>
<
Radio
value=
{
1
}
>
通过平台属性添加
</
Radio
>
<
Radio
value=
{
2
}
>
选择货品添加
</
Radio
>
<
Radio
value=
{
3
}
>
导入货品生成
</
Radio
>
</
Radio
.
Group
>
</
Form
.
Item
>
{
typ
e
>
0
&&
{
addMod
e
>
0
&&
<
Form
.
Item
noStyle
>
<
Button
onClick=
{
()
=>
{
handleModal
(
type
);
setisEdit
(
false
)
}
}
type=
'dashed'
block
style=
{
{
marginBottom
:
'24px'
}
}
><
PlusOutlined
/>
{
handleText
(
typ
e
)
}
</
Button
>
<
Table
columns=
{
columns
}
dataSource=
{
tabledata
}
rowKey=
{
(
record
,
index
)
=>
index
}
/>
<
Button
onClick=
{
()
=>
{
handleModal
(
addMode
);
setisEdit
(
false
)
}
}
type=
'dashed'
block
style=
{
{
marginBottom
:
'24px'
}
}
><
PlusOutlined
/>
{
handleText
(
addMod
e
)
}
</
Button
>
<
Table
columns=
{
columns
}
dataSource=
{
tabledata
}
rowKey=
{
(
record
:
any
,
index
:
number
)
=>
record
.
id
?
record
.
id
:
index
}
/>
</
Form
.
Item
>
}
<
ModalAnchor
...
...
@@ -169,14 +169,14 @@ const AddGoods: React.FC<faceSetData> = (props) => {
isEdit=
{
isEdit
}
visible=
{
visible
[
1
]
}
onOk=
{
handleSubmit
}
onCancel=
{
()
=>
handleModal
(
typ
e
)
}
onCancel=
{
()
=>
handleModal
(
addMod
e
)
}
/>
<
ModalGoods
fetchdata=
{
editdata
}
isEdit=
{
isEdit
}
visible=
{
visible
[
2
]
}
onOk=
{
handleSubmit
}
onCancel=
{
()
=>
handleModal
(
typ
e
)
}
onCancel=
{
()
=>
handleModal
(
addMod
e
)
}
/>
</
Form
>
)
...
...
src/pages/transaction/demandPosts/demandAdd/components/basicInfo.tsx
View file @
c48647da
...
...
@@ -3,6 +3,9 @@ import { Form, Input, Tooltip, Button, Select, Row, Col, message } from 'antd';
import
{
QuestionCircleOutlined
}
from
'@ant-design/icons'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
style
from
'./index.less'
;
import
GeneralExternalState
from
'@/pages/transaction/common/externalState'
;
import
GeneralInteriorState
from
'@/pages/transaction/common/interiorState'
;
import
moment
from
'moment'
;
const
layout
:
any
=
{
colon
:
false
,
...
...
@@ -13,14 +16,16 @@ const layout: any = {
export
interface
faceSetData
{
set
?:
any
,
get
?:
Function
,
currentRef
?:
any
onGet
?:
Function
,
currentRef
?:
any
,
externalState
?:
any
,
interiorState
?:
any
}
const
{
Option
}
=
Select
;
const
BasicInfo
:
React
.
FC
<
faceSetData
>
=
(
props
)
=>
{
const
[
form
]
=
Form
.
useForm
();
const
{
set
,
get
,
currentRef
}
=
props
const
{
set
,
onGet
,
currentRef
,
externalState
,
interiorState
}
=
props
const
[
province
,
setprovince
]
=
useState
<
any
>
([]);
// 省列表
const
[
city
,
setcity
]
=
useState
<
any
>
([]);
// 市列表
const
[
requisitionFormAddress
,
setrequisitionFormAddress
]
=
useState
<
any
>
([{
...
...
@@ -30,6 +35,9 @@ const BasicInfo: React.FC<faceSetData> = (props) => {
city
:
''
}]);
const
[
code
,
setcode
]
=
useState
<
any
>
([]);
const
format
=
(
text
)
=>
{
return
<>
{
moment
(
text
).
format
(
"YYYY-MM-DD HH:mm:ss"
)
}
</>
}
//获取所有得地区
const
manageProvince
=
()
=>
{
return
new
Promise
(
resolve
=>
{
...
...
@@ -80,6 +88,7 @@ const BasicInfo: React.FC<faceSetData> = (props) => {
setcity
([...
city
])
}
setrequisitionFormAddress
(
result
);
}
// 选择城市的时候下拉就调用方
const
onDropdownVisibleChange
=
()
=>
{
...
...
@@ -180,6 +189,7 @@ const BasicInfo: React.FC<faceSetData> = (props) => {
})
})
}
onGet
(
requisitionFormAddress
)
},
[
requisitionFormAddress
])
return
(
...
...
@@ -266,17 +276,17 @@ const BasicInfo: React.FC<faceSetData> = (props) => {
<
Form
.
Item
label=
'单据时间'
>
<
span
>
{
set
.
voucherTime
&&
set
.
voucherTime
}
</
span
>
<
span
>
{
set
.
voucherTime
&&
format
(
set
.
voucherTime
)
}
</
span
>
</
Form
.
Item
>
<
Form
.
Item
label=
'外部状态'
>
<
span
>
{
set
.
externalState
&&
set
.
externalState
}
</
span
>
<
span
>
{
set
.
externalState
&&
<
GeneralExternalState
colorType=
{
1
}
state=
{
set
.
externalState
}
data=
{
externalState
}
/>
}
</
span
>
</
Form
.
Item
>
<
Form
.
Item
label=
'内部状态'
>
<
span
>
{
set
.
interiorState
&&
set
.
interiorState
}
</
span
>
<
span
>
{
set
.
interiorState
&&
<
GeneralInteriorState
colorType=
{
1
}
state=
{
set
.
interiorState
}
data=
{
interiorState
}
/>
}
</
span
>
</
Form
.
Item
>
</
Form
>
)
...
...
src/pages/transaction/demandPosts/demandAdd/components/demandDbutted.tsx
View file @
c48647da
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
{
Form
,
Radio
,
Tooltip
,
Row
,
Col
,
Checkbox
,
Avatar
,
Space
,
Button
,
Input
}
from
'antd'
;
import
React
,
{
use
Effect
,
use
Ref
,
useState
}
from
'react'
;
import
{
Form
,
Radio
,
Tooltip
,
Row
,
Col
,
Checkbox
,
Avatar
,
Space
,
Button
,
Table
,
message
}
from
'antd'
;
import
{
QuestionCircleOutlined
,
PlusOutlined
}
from
'@ant-design/icons'
;
import
style
from
'./index.less'
;
import
{
StandardTable
}
from
'god'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
GlobalConfig
}
from
'@/global/config'
import
{
PublicApi
}
from
'@/services/api'
;
import
ModalTable
from
'@/components/ModalTable'
;
import
{
ISchema
}
from
'@formily/antd'
;
import
{
useRowSelectionTable
}
from
'@/hooks/useRowSelectionTable'
;
const
layout
:
any
=
{
colon
:
false
,
...
...
@@ -15,33 +18,28 @@ const layout: any = {
};
export
interface
faceSetData
{
set
?:
any
,
get
?:
Function
get
?:
Function
,
goodsInfo
?:
any
,
attribute
?:
any
,
currentRef
?:
any
}
const
DemandDbutted
:
React
.
FC
<
faceSetData
>
=
(
props
)
=>
{
const
{
set
,
get
}
=
props
const
[
shopId
,
setShopId
]
=
useState
<
Number
>
(
0
);
const
{
set
,
get
,
currentRef
,
goodsInfo
,
attribute
}
=
props
;
const
[
form
]
=
Form
.
useForm
();
const
[
type
,
setType
]
=
useState
<
Number
>
(
0
);
const
ref
=
useRef
<
any
>
({});
const
[
filterParams
,
setFilterParams
]
=
useState
<
any
>
({});
const
[
visible
,
setvisible
]
=
useState
<
boolean
>
(
false
);
const
[
memberRowSelection
,
memberRowCtl
]
=
useRowSelectionTable
({
customKey
:
'memberId'
});
const
[
memberIds
,
setmemberIds
]
=
useState
<
Array
<
any
>>
([])
const
[
memberList
,
setmemberList
]
=
useState
([]);
const
[
goodAllIds
,
setgoodAllIds
]
=
useState
<
Array
<
any
>>
([]);
// 搜索
const
handleSearch
=
(
val
:
string
)
=>
{
let
obj
=
{
...
filterParams
,
name
:
val
}
setFilterParams
(
obj
)
ref
.
current
.
reload
(
obj
)
}
// 重置
const
handleReset
=
()
=>
{
setFilterParams
({})
setTimeout
(()
=>
{
ref
.
current
.
reload
()
},
500
)
}
// 系统匹配表头
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'序号'
,
key
:
'
i
d'
,
dataIndex
:
'
i
d'
,
key
:
'
memberI
d'
,
dataIndex
:
'
memberI
d'
,
},
{
title
:
'会员名称'
,
...
...
@@ -73,11 +71,6 @@ const DemandDbutted: React.FC<faceSetData> = (props) => {
key
:
'state'
,
dataIndex
:
'state'
,
},
{
title
:
'操作'
,
key
:
'options'
,
dataIndex
:
'options'
,
},
]
// 指定会员表头
const
memberColumns
:
ColumnType
<
any
>
[]
=
[
...
...
@@ -121,10 +114,9 @@ const DemandDbutted: React.FC<faceSetData> = (props) => {
v
=>
v
)
setgoodAllIds
(
shopList
)
}
else
{
setType
(
value
)
}
set
ShopId
(
value
)
set
Type
(
value
)
}
// 请求系统匹配列表数据
...
...
@@ -132,10 +124,16 @@ const DemandDbutted: React.FC<faceSetData> = (props) => {
if
(
index
===
1
)
{
console
.
log
(
params
,
index
)
}
else
if
(
index
===
2
)
{
return
new
Promise
(
resolve
=>
{
PublicApi
.
postOrderSystemMatchingMemberInitializeList
({
categoryIds
:
goodsInfo
.
categoryIds
,
areaRequestList
:
goodsInfo
.
record
,
attributeList
:
attribute
,
...
params
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
)
}
})
})
}
else
{
return
new
Promise
(
resolve
=>
{
PublicApi
.
getMemberManageUpperProviderPage
({
...
filterParams
,
...
params
}).
then
(
res
=>
{
PublicApi
.
getMemberManageUpperProviderPage
({
...
params
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
)
}
...
...
@@ -143,25 +141,114 @@ const DemandDbutted: React.FC<faceSetData> = (props) => {
})
}
}
const
formSearch
:
ISchema
=
{
type
:
'object'
,
properties
:
{
name
:
{
type
:
'string'
,
"x-component"
:
'Search'
,
"x-component-props"
:
{
placeholder
:
'请输入会员名称'
}
}
}
}
const
onConfirm
=
()
=>
{
const
demandDockings
:
any
[]
=
[];
memberRowCtl
.
selectRow
.
forEach
((
v
)
=>
{
demandDockings
.
push
({
memberId
:
v
.
memberId
,
memberName
:
v
.
name
,
memberTypeName
:
v
.
memberTypeName
,
roleId
:
v
.
roleId
,
roleName
:
v
.
roleName
,
levelTag
:
v
.
levelTag
,
type
})
})
setvisible
(
false
);
setmemberIds
(
memberRowCtl
.
selectedRowKeys
)
setmemberList
(
demandDockings
)
}
useEffect
(()
=>
{
currentRef
.
current
=
{
get
:
()
=>
new
Promise
((
resolve
:
any
)
=>
{
form
.
validateFields
().
then
(
res
=>
{
let
buttedObj
:
any
=
{}
if
(
type
===
1
)
{
buttedObj
=
{
shopIds
:
res
.
shopIds
,
}
}
else
if
(
type
===
2
)
{
buttedObj
=
{}
}
else
{
buttedObj
=
{
memberIds
,
demandDockings
:
memberList
}
}
console
.
log
(
buttedObj
)
resolve
({
state
:
true
,
name
:
'demandDbutted'
,
data
:
{
type
,
...
buttedObj
}
})
}).
catch
(
error
=>
{
console
.
log
(
error
)
})
})
}
console
.
log
(
attribute
.
length
)
},[
type
,
memberIds
,
memberList
])
/** 数据回显 */
useEffect
(()
=>
{
if
(
Object
.
keys
(
set
).
length
>
0
)
{
if
(
set
.
type
===
1
)
{
form
.
setFieldsValue
({
type
:
set
.
type
,
shopIds
:
set
.
shopIds
})
let
shopList
=
GlobalConfig
.
web
.
shopInfo
.
filter
(
v
=>
v
.
type
==
1
).
map
(
v
=>
v
)
setgoodAllIds
(
shopList
)
}
else
if
(
type
===
3
)
{
PublicApi
.
getOrderRequisitionFormProductAll
({
id
:
set
.
id
,
current
:
'1'
,
pageSize
:
'100'
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setmemberList
(
res
.
data
);
}
})
}
setType
(
set
.
type
)
}
},
[
set
])
return
(
<
Form
{
...
layout
}
form=
{
form
}
>
<
Form
.
Item
label=
'添加方式'
required
>
<
Form
.
Item
label=
'添加方式'
required
name=
'type'
>
<
Radio
.
Group
onChange=
{
changeRadio
}
>
<
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=
{
2
}
disabled=
{
attribute
.
length
===
0
}
><
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
>
</
Form
.
Item
>
{
shopId
===
1
&&
{
type
===
1
&&
// 发布至平台
<
Form
.
Item
label=
'发布至平台'
name=
'shopId'
wrapperCol=
{
{
span
:
24
}
}
>
<
Form
.
Item
label=
'发布至平台'
name=
'shopId
s
'
wrapperCol=
{
{
span
:
24
}
}
>
<
Checkbox
.
Group
className=
{
style
.
checkbox_wrap_style
}
onChange=
{
(
e
)
=>
fetchSystemMateData
(
e
,
1
)
}
>
<
Row
>
{
goodAllIds
.
map
((
v
:
any
,
i
:
number
)
=>
{
console
.
log
(
v
,
1002
)
return
(
<
Col
span=
{
6
}
key=
{
`col_${i}`
}
>
<
Checkbox
value=
{
v
.
id
}
>
...
...
@@ -179,47 +266,42 @@ const DemandDbutted: React.FC<faceSetData> = (props) => {
</
Form
.
Item
>
}
{
shopId
===
2
&&
type
===
2
&&
// 系统匹配
<
Form
.
Item
noStyle
>
<
StandardTable
rowSelection=
{
rowSelection
}
columns=
{
columns
}
// fetchTableData=
{(
params
)
=
>
fetchSystemMateData(params
)}
fetchTableData=
{
(
params
)
=>
fetchSystemMateData
(
params
,
2
)
}
/>
</
Form
.
Item
>
}
{
shopId
===
3
&&
type
===
3
&&
// 指定会员
<
Form
.
Item
noStyle
>
{
/* <Button type='dashed' block style={{ marginBottom: '24px' }}><PlusOutlined />选择会员</Button> */
}
<
StandardTable
tableProps=
{
{
rowKey
:
'id'
,
}
}
currentRef=
{
ref
}
rowSelection=
{
rowSelection
}
<
Button
type=
'dashed'
block
style=
{
{
marginBottom
:
'24px'
}
}
onClick=
{
()
=>
setvisible
(
true
)
}
><
PlusOutlined
/>
选择会员
</
Button
>
<
Table
columns=
{
columns
}
dataSource=
{
memberList
}
rowKey=
{
record
=>
record
.
memberId
}
/>
</
Form
.
Item
>
}
<
ModalTable
modalTitle=
'选择会员'
confirm=
{
onConfirm
}
cancel=
{
()
=>
setvisible
(
false
)
}
visible=
{
visible
}
forceRender=
{
true
}
columns=
{
memberColumns
}
rowSelection=
{
memberRowSelection
}
fetchTableData=
{
(
params
)
=>
fetchSystemMateData
(
params
,
3
)
}
controlRender=
{
<
Row
>
<
Col
span=
{
12
}
>
<
Input
.
Search
style=
{
{
width
:
'256px'
,
marginRight
:
'24px'
,
marginBottom
:
'24px'
}
}
placeholder=
'搜索'
value=
{
filterParams
.
name
}
onChange=
{
(
e
)
=>
setFilterParams
({
...
filterParams
,
name
:
e
.
target
.
value
})
}
onSearch=
{
(
val
)
=>
handleSearch
(
val
)
}
/>
<
Button
onClick=
{
handleReset
}
>
重置
</
Button
>
</
Col
>
</
Row
>
formilyProps=
{
{
ctx
:
{
schema
:
formSearch
}
}
/>
</
Form
.
Item
>
}
tableProps=
{
{
rowKey
:
'memberId'
}
}
/>
</
Form
>
)
}
...
...
src/pages/transaction/demandPosts/demandAdd/components/flowRecord.tsx
View file @
c48647da
...
...
@@ -3,14 +3,20 @@ import styles from './index.less';
import
{
Radio
}
from
'antd'
;
import
PolymericTable
from
'@/components/PolymericTable'
;
import
{
EditableColumns
}
from
'@/components/PolymericTable/interface'
;
import
GeneralExternalState
from
'@/pages/transaction/common/externalState'
;
import
GeneralInteriorState
from
'@/pages/transaction/common/interiorState'
;
import
moment
from
'moment'
;
import
{
PublicApi
}
from
'@/services/api'
;
export
interface
faceSetData
{
set
?:
any
,
get
?:
Function
get
?:
Function
,
externalState
?:
any
,
interiorState
?:
any
}
const
FlowRecord
:
React
.
FC
<
faceSetData
>
=
(
props
)
=>
{
const
{
set
,
get
}
=
props
const
{
set
,
get
,
externalState
,
interiorState
}
=
props
const
[
radio
,
setRadio
]
=
useState
<
string
>
(
'outer'
);
//切换单据
const
format
=
(
text
)
=>
{
return
<>
{
moment
(
text
).
format
(
"YYYY-MM-DD HH:mm:ss"
)
}
</>
}
...
...
@@ -25,6 +31,7 @@ const FlowRecord: React.FC<faceSetData> = (props) => {
},
{
title
:
'状态'
,
dataIndex
:
'state'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
GeneralExternalState
colorType=
{
1
}
state=
{
text
}
data=
{
externalState
}
/>
},
{
title
:
'操作'
,
dataIndex
:
'operationalProcess'
,
...
...
@@ -52,6 +59,7 @@ const FlowRecord: React.FC<faceSetData> = (props) => {
},
{
title
:
'状态'
,
dataIndex
:
'state'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
GeneralInteriorState
colorType=
{
1
}
state=
{
text
}
data=
{
interiorState
}
/>
},
{
title
:
'操作'
,
dataIndex
:
'operationalProcess'
,
...
...
src/pages/transaction/demandPosts/demandAdd/index.tsx
View file @
c48647da
...
...
@@ -34,10 +34,11 @@ const DemandAdd: React.FC<{}> = () => {
const
fetchData
=
(
params
?:
any
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getOrderRequisitionFormAwaitList
({
...
params
}).
then
(
res
=>
{
resolve
(
res
.
data
)
resolve
(
res
.
data
)
;
})
})
}
/** 批量删除 */
const
batchDel
=
()
=>
{
if
(
selectRow
.
length
>
0
)
{
...
...
@@ -51,6 +52,12 @@ const DemandAdd: React.FC<{}> = () => {
/** 删除 -> 单个 */
const
handleDelete
=
(
id
:
any
)
=>
{
PublicApi
.
getOrderRequisitionFormIsDelete
({
id
,
current
:
'1'
,
pageSize
:
'100'
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
message
.
error
(
'删除成功'
)
ref
.
current
.
reload
();
}
})
console
.
log
(
id
)
}
...
...
@@ -63,7 +70,7 @@ const DemandAdd: React.FC<{}> = () => {
<>
{
(
record
.
interiorState
!==
3
&&
<
Button
type=
"link"
onClick=
{
()
=>
history
.
push
(
`/memberCenter/tranactionAbility/
enquirySubmit/addDemandOrder
/edit?id=${record.id}`
)
}
>
编辑
</
Button
>
<
Button
type=
"link"
onClick=
{
()
=>
history
.
push
(
`/memberCenter/tranactionAbility/
demandPosts/demandAdd
/edit?id=${record.id}`
)
}
>
编辑
</
Button
>
)
}
{
...
...
src/pages/transaction/demandPosts/demandAuditOne/detail.tsx
View file @
c48647da
...
...
@@ -4,9 +4,14 @@ import { history } from 'umi';
const
DemandAuditOneDetail
:
React
.
FC
<
{}
>
=
(
props
)
=>
{
const
{
id
}
=
history
.
location
.
query
;
const
{
pathname
}
=
history
.
location
;
const
type
=
pathname
.
split
(
'/'
)[
pathname
.
split
(
'/'
).
length
-
1
];
console
.
log
(
type
)
return
(
<
DatailCmonent
id=
{
id
}
path=
{
type
}
type=
{
3
}
/>
)
}
...
...
src/pages/transaction/demandPosts/demandAuditOne/index.tsx
View file @
c48647da
...
...
@@ -47,7 +47,7 @@ const DemandAuditOne: React.FC<{}> = () => {
<
Button
type=
"link"
onClick=
{
()
=>
history
.
push
(
`/memberCenter/tranactionAbility/
enquirySubmit/enquiryTwo
/detail?id=${record.id}`
)
history
.
push
(
`/memberCenter/tranactionAbility/
demandPosts/demandAuditOne
/detail?id=${record.id}`
)
}
>
审核
...
...
src/pages/transaction/demandPosts/demandAuditTwo/detail.tsx
View file @
c48647da
...
...
@@ -4,9 +4,14 @@ import { history } from 'umi';
const
DemandAuditTwoDetail
:
React
.
FC
<
{}
>
=
(
props
)
=>
{
const
{
id
}
=
history
.
location
.
query
;
const
{
pathname
}
=
history
.
location
;
const
type
=
pathname
.
split
(
'/'
)[
pathname
.
split
(
'/'
).
length
-
1
];
console
.
log
(
type
)
return
(
<
DatailCmonent
id=
{
id
}
path=
{
type
}
type=
{
4
}
/>
)
}
...
...
src/pages/transaction/demandPosts/demandAuditTwo/index.tsx
View file @
c48647da
...
...
@@ -46,7 +46,7 @@ const DemandAuditTwo: React.FC<{}> = () => {
<
Button
type=
"link"
onClick=
{
()
=>
history
.
push
(
`/memberCenter/tranactionAbility/
enquirySubmit/enquiry
Two/detail?id=${record.id}`
)
history
.
push
(
`/memberCenter/tranactionAbility/
demandPosts/demandAudit
Two/detail?id=${record.id}`
)
}
>
审核
...
...
src/pages/transaction/demandPosts/demandSubmit/index.tsx
View file @
c48647da
import
React
,
{
useState
,
useRef
}
from
'react'
;
import
{
message
,
Button
}
from
'antd'
;
import
{
history
}
from
'umi'
;
import
{
message
,
Button
,
Popconfirm
}
from
'antd'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
TableListInfo
from
'../components/tableList'
;
...
...
@@ -44,14 +43,11 @@ const DemandSubmit: React.FC<{}> = () => {
key
:
'options'
,
dataIndex
:
'options'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
Button
type=
"link"
onClick=
{
()
=>
history
.
push
(
`/memberCenter/tranactionAbility/enquirySubmit/enquiryTwo/detail?id=${record.id}`
)
}
>
提交
</
Button
>
<
Popconfirm
title=
"确定要提交吗?"
okText=
"是"
cancelText=
"否"
onConfirm=
{
()
=>
PublicApi
.
postOrderSubmitRequisitionForm
({
id
:
record
.
id
}).
then
(
res
=>
{
ref
.
current
.
reload
()
})
}
>
<
Button
type=
'link'
>
提交
</
Button
>
</
Popconfirm
>
}
return
(
...
...
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