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
f88a84a4
Commit
f88a84a4
authored
Mar 01, 2021
by
前端-黄佳鑫
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 新增采购询价页面
parent
aafd9e85
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
2385 additions
and
26 deletions
+2385
-26
index.ts
config/routes/index.ts
+46
-2
index.ts
config/routes/procurementRoute/index.ts
+3
-1
purchaseInquiry.ts
config/routes/procurementRoute/purchaseInquiry.ts
+48
-0
menu.ts
src/locales/zh-CN/menu.ts
+1
-1
tableList.tsx
src/pages/transaction/demandPosts/components/tableList.tsx
+22
-22
addForm.tsx
src/pages/transaction/demandPosts/demandAdd/addForm.tsx
+0
-0
index.tsx
src/pages/transaction/enquiryOffer/toAddSubmit/index.tsx
+0
-0
index.tsx
...es/transaction/purchaseAbility/components/table/index.tsx
+80
-0
addForm.tsx
...on/purchaseAbility/purchaseInquiry/addInquiry/addForm.tsx
+193
-0
modalAnchor.tsx
...rchaseInquiry/addInquiry/components/Modal/modalAnchor.tsx
+0
-0
modalGoods.tsx
...urchaseInquiry/addInquiry/components/Modal/modalGoods.tsx
+277
-0
addGoods.tsx
...bility/purchaseInquiry/addInquiry/components/addGoods.tsx
+196
-0
basicInfo.tsx
...ility/purchaseInquiry/addInquiry/components/basicInfo.tsx
+299
-0
demandDbutted.tsx
...y/purchaseInquiry/addInquiry/components/demandDbutted.tsx
+313
-0
flowRecord.tsx
...lity/purchaseInquiry/addInquiry/components/flowRecord.tsx
+103
-0
index.less
...eAbility/purchaseInquiry/addInquiry/components/index.less
+143
-0
tradingConditions.tsx
...rchaseInquiry/addInquiry/components/tradingConditions.tsx
+142
-0
index.tsx
...tion/purchaseAbility/purchaseInquiry/addInquiry/index.tsx
+87
-0
index.tsx
...purchaseAbility/purchaseInquiry/auditInquiryOne/index.tsx
+65
-0
index.tsx
...purchaseAbility/purchaseInquiry/auditInquiryTwo/index.tsx
+65
-0
index.tsx
...saction/purchaseAbility/purchaseInquiry/inquiry/index.tsx
+53
-0
index.tsx
...n/purchaseAbility/purchaseInquiry/submitInquiry/index.tsx
+65
-0
index.ts
src/pages/transaction/purchaseAbility/schema/index.ts
+184
-0
No files found.
config/routes/index.ts
View file @
f88a84a4
...
...
@@ -46,6 +46,8 @@ const memberCenterRoute = {
// srm开发临时使用...
{
path
:
"/memberCenter/procurementAbility"
,
name
:
"采购能力"
,
icon
:
"commodity"
,
routes
:
[
// 招标
{
...
...
@@ -82,9 +84,51 @@ const memberCenterRoute = {
},
]
},
// 采购询价
{
path
:
'/memberCenter/procurementAbility/purchaseInquiry'
,
name
:
'采购询价'
,
routes
:
[
{
// 采购需求单查询
path
:
'/memberCenter/procurementAbility/purchaseInquiry/inquiry'
,
name
:
'采购需求单查询'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseInquiry/inquiry'
},
{
// 待新增采购需求单
path
:
'/memberCenter/procurementAbility/purchaseInquiry/addInquiry'
,
name
:
'待新增采购需求单'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseInquiry/addInquiry'
},
{
// 新增采购需求单
path
:
'/memberCenter/procurementAbility/purchaseInquiry/add'
,
name
:
'新增采购需求单'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseInquiry/addInquiry/addForm'
,
hideInMenu
:
true
,
},
{
// 待审核采购需求单(一级)
path
:
'/memberCenter/procurementAbility/purchaseInquiry/auditInquiryOne'
,
name
:
'待审核采购需求单(一级)'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseInquiry/auditInquiryOne'
},
{
// 待审核采购需求单(二级)
path
:
'/memberCenter/procurementAbility/purchaseInquiry/auditInquiryTwo'
,
name
:
'待审核采购需求单(二级)'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseInquiry/auditInquiryTwo'
},
{
// 待提交采购需求单
path
:
'/memberCenter/procurementAbility/purchaseInquiry/submitInquiry'
,
name
:
'待提交采购需求单'
,
component
:
'@/pages/transaction/purchaseAbility/purchaseInquiry/submitInquiry'
}
]
},
],
name
:
"采购能力"
,
icon
:
"commodity"
,
},
//...
...
asyncRoutes
,
...
...
config/routes/procurementRoute/index.ts
View file @
f88a84a4
import
callForBids
from
'./callForBids'
;
import
purchaseInquiry
from
'./purchaseInquiry'
;
/**
* 采购能力路由
...
...
@@ -10,7 +11,8 @@ const ProcurementRoute = {
routes
:
[
// 招标
...
callForBids
,
// 采购询价
...
purchaseInquiry
,
]
}
...
...
config/routes/procurementRoute/purchaseInquiry.ts
0 → 100644
View file @
f88a84a4
/**
* @description: 采购能力 采购询价
* @param {type}
* @return {type}
*/
// export default [
// {
// // 采购询价
// path:'/memberCenter/procurementAbility/purchaseInquiry',
// name:'purchaseInquiry',
// routes:[
// // 招标查询
// {
// path: '/memberCenter/procurementAbility/callForBids/callForBidsSearch',
// name: 'callForBidsSearch',
// component: '@/pages/procurement/callForBids/callForBidsSearch'
// },
// // // 招标查询-详情
// // {
// // path: '/memberCenter/procurementAbility/callForBids/callForBidsSearch/preview',
// // name: 'callForBidsSearchPreview',
// // hideInMenu: true,
// // component: '@/pages/procurement/callForBids/callForBidsSearch/details'
// // },
// ]
// }
// ]
export
default
[
{
path
:
'/memberCenter/procurementAbility/callForBids'
,
name
:
'purchaseInquiry'
,
routes
:[
// 招标查询
{
path
:
'/memberCenter/procurementAbility/callForBids/callForBidsSearch'
,
name
:
'callForBidsSearch'
,
component
:
'@/pages/procurement/callForBids/callForBidsSearch'
},
// // 招标查询-详情
// {
// path: '/memberCenter/procurementAbility/callForBids/callForBidsSearch/preview',
// name: 'callForBidsSearchPreview',
// hideInMenu: true,
// component: '@/pages/procurement/callForBids/callForBidsSearch/details'
// },
]
}
]
src/locales/zh-CN/menu.ts
View file @
f88a84a4
...
...
@@ -637,5 +637,5 @@ export default {
// 采购能力
'menu.procurementAbility'
:
'采购能力'
,
'menu.procurementAbility.callForBids'
:
'招标'
,
'menu.procurementAbility.purchaseInquiry'
:
'采购询价'
,
};
src/pages/transaction/demandPosts/components/tableList.tsx
View file @
f88a84a4
...
...
@@ -35,28 +35,28 @@ const TableListInfo: React.FC<tableListParams> = (props) => {
const
[
externalState
,
setExternalState
]
=
useState
<
any
>
([]);
const
[
interiorState
,
setInteriorState
]
=
useState
<
any
>
([]);
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
Array
<
number
>>
([]);
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
])
})
},
[])
//
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
format
=
(
text
)
=>
{
return
<>
{
moment
(
text
).
format
(
"YYYY-MM-DD HH:mm:ss"
)
}
</>
...
...
src/pages/transaction/demandPosts/demandAdd/addForm.tsx
View file @
f88a84a4
This diff is collapsed.
Click to expand it.
src/pages/transaction/enquiryOffer/toAddSubmit/index.tsx
View file @
f88a84a4
This diff is collapsed.
Click to expand it.
src/pages/transaction/purchaseAbility/components/table/index.tsx
0 → 100644
View file @
f88a84a4
import
React
,
{
useRef
}
from
'react'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
Card
}
from
'antd'
;
import
{
StandardTable
}
from
'god'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
createFormActions
,
FormEffectHooks
}
from
'@formily/antd'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
searchSelectGetSelectCategoryOptionEffect
}
from
'../../../effect/index'
import
{
PurchaseDemandSchema
,
PurchaseDemandPublicSchema
,
}
from
'../../schema'
;
interface
Iprops
{
fetch
?:
()
=>
Promise
<
unknown
>
,
controllerBtns
?:
React
.
ReactNode
,
schemaType
?:
'PurchaseDemand'
|
'PurchaseDemandPublic'
,
columns
:
ColumnType
<
any
>
[],
effects
?:
string
,
}
const
formActions
=
createFormActions
();
const
Table
:
React
.
FC
<
Iprops
>
=
(
props
:
any
)
=>
{
const
{
schemaType
,
columns
,
effects
,
fetch
,
controllerBtns
,
}
=
props
;
const
ref
=
useRef
<
any
>
({});
/** Schema */
const
SchemaRender
=
()
=>
{
switch
(
schemaType
)
{
case
'PurchaseDemand'
:
return
PurchaseDemandSchema
case
'PurchaseDemandPublic'
:
return
PurchaseDemandPublicSchema
}
}
/** 列表数据 */
const
fetchData
=
(
params
?:
any
)
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
fetch
({
...
params
}).
then
(
res
=>
{
resolve
(
res
.
data
)
})
})
}
return
(
<
PageHeaderWrapper
>
<
Card
>
<
StandardTable
currentRef=
{
ref
}
columns=
{
columns
}
tableProps=
{
{
rowKew
:
'id'
}
}
fetchTableData=
{
(
params
:
any
)
=>
fetchData
(
params
)
}
controlRender=
{
<
NiceForm
actions=
{
formActions
}
expressionScope=
{
{
controllerBtns
}
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
effects
,
FORM_FILTER_PATH
)
FormEffectHooks
.
onFieldChange$
(
'category'
).
subscribe
(
state
=>
{
searchSelectGetSelectCategoryOptionEffect
(
actions
,
'category'
)
})
}
}
schema=
{
schemaType
&&
SchemaRender
()
}
>
</
NiceForm
>
}
/>
</
Card
>
</
PageHeaderWrapper
>
)
}
export
default
Table
;
src/pages/transaction/purchaseAbility/purchaseInquiry/addInquiry/addForm.tsx
0 → 100644
View file @
f88a84a4
import
React
,
{
useState
,
useRef
,
useEffect
}
from
'react'
;
import
{
history
}
from
'umi'
;
import
ReutrnEle
from
'@/components/ReturnEle'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
Button
,
Card
,
Tabs
,
Badge
}
from
'antd'
;
import
BasicInfo
from
'./components/basicInfo'
;
import
TradingConditions
from
'./components/tradingConditions'
import
FlowRecord
from
'./components/flowRecord'
;
import
AddGoods
from
'./components/addGoods'
;
import
DemandDbutted
from
'./components/demandDbutted'
;
import
{
PublicApi
}
from
'@/services/api'
;
const
{
TabPane
}
=
Tabs
;
const
TabFormErrors
=
(
props
)
=>
{
return
(
<
Badge
size=
"small"
count=
{
props
.
dot
}
offset=
{
[
6
,
-
5
]
}
>
{
props
.
children
}
</
Badge
>
)
}
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
>
([]);
const
[
badge
,
setbadge
]
=
useState
<
any
>
([
0
,
0
,
0
,
0
]);
// 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子组件的数据 */
/**提交数据 */
const
onSubmit
=
async
()
=>
{
const
basicRef
=
await
basic
.
current
.
get
();
const
goodsRef
=
await
goods
.
current
.
get
();
const
tradingRef
=
await
trading
.
current
.
get
();
const
dbuttedRef
=
await
dbutted
.
current
.
get
();
if
(
basicRef
.
state
&&
tradingRef
.
state
&&
goodsRef
.
state
&&
dbuttedRef
.
state
)
{
const
data
=
{
...
basicRef
.
data
,
...
tradingRef
.
data
,
...
goodsRef
.
data
,
...
dbuttedRef
.
data
}
if
(
basicRef
.
data
.
requisitionFormAddress
.
length
>
0
)
{
data
.
defaultAddres
=
0
}
else
{
data
.
defaultAddres
=
1
}
if
(
id
)
{
data
.
id
=
fetchdata
.
id
;
PublicApi
.
postOrderRequisitionFormUpdate
(
data
).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
history
.
goBack
()
}
})
}
else
{
PublicApi
.
postOrderRequisitionFormAdd
(
data
).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
history
.
goBack
()
}
})
}
}
}
useEffect
(()
=>
{
if
(
id
)
{
new
Promise
(
resolve
=>
{
PublicApi
.
getOrderRequisitionFormDetails
({
id
,
current
:
'1'
,
pageSize
:
'10'
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
)
}
})
}).
then
((
res
:
any
)
=>
{
setfetchdata
(
res
)
})
}
},
[
id
])
/**获取所有地址 */
const
getAreaCode
=
(
record
:
any
)
=>
{
setGoodsInfo
({
...
goodsInfo
,
record
})
}
/**获取添加的商品品类id */
const
getCategoryIds
=
(
data
:
any
,
index
:
number
,
record
?:
any
)
=>
{
if
(
index
===
1
)
{
const
categoryIds
:
Array
<
any
>
[]
=
[]
data
.
forEach
((
item
:
any
)
=>
{
categoryIds
.
push
(...
item
.
ids
)
})
setGoodsInfo
({
...
goodsInfo
,
categoryIds
})
if
(
record
)
{
setattribute
([...
attribute
,
...
record
])
}
}
else
if
(
index
===
2
)
{
console
.
log
(
data
,
10086
)
}
}
/**必填没填写出现角标 */
const
getError
=
(
num
:
number
,
idx
:
number
)
=>
{
const
data
=
[...
badge
];
data
[
idx
]
=
num
;
setbadge
(
data
);
}
return
(
<
PageHeaderWrapper
onBack=
{
()
=>
history
.
goBack
()
}
backIcon=
{
<
ReutrnEle
description=
"返回"
/>
}
extra=
{
<
Button
type=
"primary"
onClick=
{
onSubmit
}
>
保存
</
Button
>
}
>
<
Card
>
<
Tabs
type=
'card'
>
<
TabPane
forceRender
tab=
{
<
TabFormErrors
dot=
{
badge
[
0
]
}
>
基本信息
</
TabFormErrors
>
}
key=
'1'
>
<
BasicInfo
set=
{
fetchdata
}
onBadge=
{
getError
}
onGet=
{
getAreaCode
}
currentRef=
{
basic
}
externalState=
{
externalState
}
interiorState=
{
interiorState
}
/>
</
TabPane
>
<
TabPane
forceRender
tab=
{
<
TabFormErrors
dot=
{
badge
[
1
]
}
>
添加商品
</
TabFormErrors
>
}
key=
'2'
>
<
AddGoods
set=
{
fetchdata
}
onBadge=
{
getError
}
onGet=
{
getCategoryIds
}
currentRef=
{
goods
}
/>
</
TabPane
>
<
TabPane
forceRender
tab=
{
<
TabFormErrors
dot=
{
badge
[
2
]
}
>
交易条件
</
TabFormErrors
>
}
key=
'3'
>
<
TradingConditions
set=
{
fetchdata
}
onBadge=
{
getError
}
currentRef=
{
trading
}
/>
</
TabPane
>
<
TabPane
forceRender
tab=
{
<
TabFormErrors
dot=
{
badge
[
3
]
}
>
需求对接
</
TabFormErrors
>
}
key=
'4'
>
<
DemandDbutted
set=
{
fetchdata
}
onBadge=
{
getError
}
goodsInfo=
{
goodsInfo
}
attribute=
{
attribute
}
currentRef=
{
dbutted
}
/>
</
TabPane
>
<
TabPane
forceRender
tab=
'流转记录'
key=
'5'
>
<
FlowRecord
set=
{
fetchdata
}
externalState=
{
externalState
}
interiorState=
{
interiorState
}
/>
</
TabPane
>
</
Tabs
>
</
Card
>
</
PageHeaderWrapper
>
)
}
export
default
AddDemandOrder
;
src/pages/transaction/purchaseAbility/purchaseInquiry/addInquiry/components/Modal/modalAnchor.tsx
0 → 100644
View file @
f88a84a4
This diff is collapsed.
Click to expand it.
src/pages/transaction/purchaseAbility/purchaseInquiry/addInquiry/components/Modal/modalGoods.tsx
0 → 100644
View file @
f88a84a4
This diff is collapsed.
Click to expand it.
src/pages/transaction/purchaseAbility/purchaseInquiry/addInquiry/components/addGoods.tsx
0 → 100644
View file @
f88a84a4
import
React
,
{
useState
,
ReactNode
,
useEffect
}
from
'react'
;
import
{
Form
,
Radio
,
Button
,
Table
}
from
'antd'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
ModalAnchor
from
'./Modal/modalAnchor'
;
import
ModalGoods
from
'./Modal/modalGoods'
;
import
{
PlusOutlined
}
from
'@ant-design/icons'
;
import
{
PublicApi
}
from
'@/services/api'
;
const
layout
:
any
=
{
colon
:
false
,
labelCol
:
{
style
:
{
width
:
'174px'
}
},
wrapperCol
:
{
span
:
9
},
labelAlign
:
"left"
};
export
interface
faceSetData
{
set
?:
any
,
onGet
?:
Function
,
currentRef
:
any
,
onBadge
?:
Function
}
const
AddGoods
:
React
.
FC
<
faceSetData
>
=
(
props
)
=>
{
const
{
set
,
currentRef
,
onGet
,
onBadge
}
=
props
const
[
form
]
=
Form
.
useForm
();
const
[
addMode
,
setaddMode
]
=
useState
<
number
>
(
0
);
const
btnname
:
Array
<
string
>
=
[
'添加商品'
,
'选择货品'
,
'导入货品'
]
const
[
visible
,
setvisible
]
=
useState
<
Array
<
boolean
>>
([
false
,
false
,
false
,
false
]);
const
[
tabledata
,
settabledata
]
=
useState
<
any
>
([]);
/**存放编辑的商品数据 */
const
[
editdata
,
seteditdata
]
=
useState
<
any
>
({});
/**是否编辑 */
const
[
isEdit
,
setisEdit
]
=
useState
<
boolean
>
(
false
);
/**编辑的下标 */
const
[
idx
,
setidx
]
=
useState
<
number
>
(
-
1
);
/** 平台属性添加表头 */
const
columns
:
ColumnType
<
Object
>
[]
=
[
{
title
:
'商品编号'
,
key
:
'goodsNo'
,
dataIndex
:
'goodsNo'
,
},
{
title
:
'商品名称'
,
key
:
'name'
,
dataIndex
:
'name'
,
},
{
title
:
'规格型号'
,
key
:
'model'
,
dataIndex
:
'model'
,
},
{
title
:
'品类'
,
key
:
'category'
,
dataIndex
:
'category'
,
},
{
title
:
'品牌'
,
key
:
'brand'
,
dataIndex
:
'brand'
,
},
{
title
:
'采购数量'
,
key
:
'purchaseCount'
,
dataIndex
:
'purchaseCount'
,
},
{
title
:
'操作'
,
key
:
'options'
,
dataIndex
:
'options'
,
render
:
(
text
:
any
,
record
:
any
,
index
:
number
)
=>
<>
<
Button
type=
'link'
onClick=
{
()
=>
handleEdit
(
record
,
index
)
}
>
编辑
</
Button
>
<
Button
type=
'link'
onClick=
{
()
=>
handleDel
(
record
,
index
)
}
>
删除
</
Button
>
</>
}
]
/** 切换添加方式 */
const
changeRadio
=
(
e
:
any
)
=>
{
const
{
value
}
=
e
.
target
;
setaddMode
(
value
);
settabledata
([]);
}
/** 按钮的文字 */
const
handleText
=
(
num
:
any
)
=>
{
let
text
:
ReactNode
=
null
;
text
=
btnname
[
num
-
1
];
return
text
}
/**
* @name: 操作弹窗
* @arg: 1.通过平台属性添加 2.选择货品添加 3.导入货品生成
* */
const
handleModal
=
(
arg
:
number
)
=>
{
visible
[
arg
]
=
!
visible
[
arg
]
setvisible
([...
visible
])
}
/** 商品添加确定 */
const
handleSubmit
=
(
data
:
any
,
record
?:
any
)
=>
{
if
(
idx
===
-
1
)
{
settabledata
([...
tabledata
,
data
])
onGet
([...
tabledata
,
data
],
1
,
record
)
}
else
{
const
newdata
=
[...
tabledata
]
newdata
[
idx
]
=
data
settabledata
([...
newdata
]);
setidx
(
-
1
);
onGet
([...
tabledata
,
data
],
2
)
}
handleModal
(
addMode
);
}
/** 编辑商品 */
const
handleEdit
=
(
record
:
any
,
index
:
number
)
=>
{
setidx
(
index
);
seteditdata
(
record
)
setisEdit
(
true
)
handleModal
(
addMode
)
}
/** 删除商品 */
const
handleDel
=
(
record
:
any
,
index
:
number
)
=>
{
const
list
=
[...
tabledata
];
list
.
splice
(
index
,
1
);
settabledata
(
list
)
}
useEffect
(()
=>
{
currentRef
.
current
=
{
get
:
()
=>
new
Promise
((
resolve
:
any
)
=>
{
form
.
validateFields
().
then
(
res
=>
{
resolve
({
state
:
true
,
name
:
'addGoods'
,
data
:
{
addMode
,
requisitionFormProducts
:
tabledata
,
}
})
onBadge
(
0
,
1
)
}).
catch
(
error
=>
{
if
(
error
&&
error
.
errorFields
)
{
onBadge
(
error
.
errorFields
.
length
,
1
)
}
})
})
}
},
[
tabledata
])
useEffect
(()
=>
{
/**编辑回显数据 */
if
(
Object
.
keys
(
set
).
length
>
0
)
{
form
.
setFieldsValue
({
addMode
:
set
.
addMode
})
setaddMode
(
set
.
addMode
)
settabledata
(
set
.
requisitionFormProducts
)
}
},
[
set
])
return
(
<
Form
{
...
layout
}
form=
{
form
}
>
<
Form
.
Item
label=
'添加方式'
name=
'addMode'
rules=
{
[{
required
:
true
,
message
:
'请选择添加方式'
}]
}
>
<
Radio
.
Group
onChange=
{
changeRadio
}
>
{
/* <Radio value={1}>通过平台属性添加</Radio> */
}
<
Radio
value=
{
2
}
>
选择货品添加
</
Radio
>
<
Radio
value=
{
3
}
>
导入货品生成
</
Radio
>
</
Radio
.
Group
>
</
Form
.
Item
>
{
addMode
>
0
&&
<
Form
.
Item
noStyle
>
<
Button
onClick=
{
()
=>
{
handleModal
(
addMode
);
setisEdit
(
false
)
}
}
type=
'dashed'
block
style=
{
{
marginBottom
:
'24px'
}
}
><
PlusOutlined
/>
{
handleText
(
addMode
)
}
</
Button
>
<
Table
columns=
{
columns
}
dataSource=
{
tabledata
}
rowKey=
{
(
record
:
any
,
index
:
number
)
=>
record
.
id
?
record
.
id
:
index
}
/>
</
Form
.
Item
>
}
<
ModalAnchor
fetchdata=
{
editdata
}
isEdit=
{
isEdit
}
visible=
{
visible
[
1
]
}
onOk=
{
handleSubmit
}
onCancel=
{
()
=>
handleModal
(
addMode
)
}
/>
<
ModalGoods
fetchdata=
{
editdata
}
isEdit=
{
isEdit
}
visible=
{
visible
[
2
]
}
onOk=
{
handleSubmit
}
onCancel=
{
()
=>
handleModal
(
addMode
)
}
/>
</
Form
>
)
}
export
default
AddGoods
;
src/pages/transaction/purchaseAbility/purchaseInquiry/addInquiry/components/basicInfo.tsx
0 → 100644
View file @
f88a84a4
This diff is collapsed.
Click to expand it.
src/pages/transaction/purchaseAbility/purchaseInquiry/addInquiry/components/demandDbutted.tsx
0 → 100644
View file @
f88a84a4
import
React
,
{
useEffect
,
useRef
,
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
,
labelCol
:
{
style
:
{
width
:
'174px'
}
},
wrapperCol
:
{
span
:
9
},
labelAlign
:
"left"
};
export
interface
faceSetData
{
set
?:
any
,
get
?:
Function
,
goodsInfo
?:
any
,
attribute
?:
any
,
currentRef
?:
any
,
onBadge
?:
Function
}
const
DemandDbutted
:
React
.
FC
<
faceSetData
>
=
(
props
)
=>
{
const
{
set
,
get
,
currentRef
,
goodsInfo
,
attribute
,
onBadge
}
=
props
;
const
[
form
]
=
Form
.
useForm
();
const
[
type
,
setType
]
=
useState
<
Number
>
(
0
);
const
ref
=
useRef
<
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
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'序号'
,
key
:
'memberId'
,
dataIndex
:
'memberId'
,
},
{
title
:
'会员名称'
,
key
:
'memberName'
,
dataIndex
:
'memberName'
,
},
{
title
:
'会员类型'
,
key
:
'memberTypeName'
,
dataIndex
:
'memberTypeName'
,
},
{
title
:
'会员角色'
,
key
:
'roleName'
,
dataIndex
:
'roleName'
,
},
{
title
:
'会员等级'
,
key
:
'levelTag'
,
dataIndex
:
'levelTag'
,
},
{
title
:
'是否归属会员'
,
key
:
'membershipOrNot'
,
dataIndex
:
'membershipOrNot'
,
},
{
title
:
'状态'
,
key
:
'state'
,
dataIndex
:
'state'
,
},
]
// 指定会员表头
const
memberColumns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'序号'
,
key
:
'memberId'
,
dataIndex
:
'memberId'
,
},
{
title
:
'会员名称'
,
key
:
'name'
,
dataIndex
:
'name'
,
},
{
title
:
'会员类型'
,
key
:
'memberTypeName'
,
dataIndex
:
'memberTypeName'
,
},
{
title
:
'会员角色'
,
key
:
'roleName'
,
dataIndex
:
'roleName'
,
},
{
title
:
'会员等级'
,
key
:
'levelTag'
,
dataIndex
:
'levelTag'
,
}
]
// 选择系统匹配的列表数据
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
Array
<
any
>>
([]);
const
rowSelection
=
{
selectedRowKeys
,
onChange
:
setSelectedRowKeys
};
// 切换添加方式
const
changeRadio
=
(
e
:
any
)
=>
{
const
{
value
}
=
e
.
target
;
if
(
value
===
1
)
{
let
shopList
=
GlobalConfig
.
web
.
shopInfo
.
filter
(
v
=>
v
.
type
==
1
).
map
(
v
=>
v
)
setgoodAllIds
(
shopList
)
setType
(
value
)
}
setType
(
value
)
}
// 请求系统匹配列表数据
const
fetchSystemMateData
=
(
params
:
any
,
index
:
number
)
=>
{
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
({
...
params
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
)
}
})
})
}
}
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
}
})
onBadge
(
0
,
3
)
}).
catch
(
error
=>
{
if
(
error
&&
error
.
errorFields
)
{
onBadge
(
error
.
errorFields
.
length
,
3
)
}
})
})
}
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
name=
'type'
>
<
Radio
.
Group
onChange=
{
changeRadio
}
>
<
Radio
value=
{
1
}
><
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
>
{
type
===
1
&&
// 发布至平台
<
Form
.
Item
label=
'发布至平台'
name=
'shopIds'
wrapperCol=
{
{
span
:
24
}
}
>
<
Checkbox
.
Group
className=
{
style
.
checkbox_wrap_style
}
onChange=
{
(
e
)
=>
fetchSystemMateData
(
e
,
1
)
}
>
<
Row
>
{
goodAllIds
.
map
((
v
:
any
,
i
:
number
)
=>
{
return
(
<
Col
span=
{
6
}
key=
{
`col_${i}`
}
>
<
Checkbox
value=
{
v
.
id
}
>
<
Space
>
<
Avatar
src=
{
v
.
logoUrl
}
>
LOGO
</
Avatar
>
<
span
>
{
v
.
name
}
</
span
>
</
Space
>
</
Checkbox
>
</
Col
>
)
})
}
</
Row
>
</
Checkbox
.
Group
>
</
Form
.
Item
>
}
{
type
===
2
&&
// 系统匹配
<
Form
.
Item
noStyle
>
<
StandardTable
rowSelection=
{
rowSelection
}
columns=
{
columns
}
fetchTableData=
{
(
params
)
=>
fetchSystemMateData
(
params
,
2
)
}
/>
</
Form
.
Item
>
}
{
type
===
3
&&
// 指定会员
<
Form
.
Item
noStyle
>
<
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
)
}
formilyProps=
{
{
ctx
:
{
schema
:
formSearch
}
}
}
tableProps=
{
{
rowKey
:
'memberId'
}
}
/>
</
Form
>
)
}
export
default
DemandDbutted
;
src/pages/transaction/purchaseAbility/purchaseInquiry/addInquiry/components/flowRecord.tsx
0 → 100644
View file @
f88a84a4
import
React
,
{
useState
,
useEffect
}
from
'react'
;
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
,
externalState
?:
any
,
interiorState
?:
any
}
const
FlowRecord
:
React
.
FC
<
faceSetData
>
=
(
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"
)
}
</>
}
const
outerColumns
:
EditableColumns
[]
=
[{
title
:
'序号'
,
dataIndex
:
'inquiryListId'
,
render
:
(
texr
:
any
,
record
:
any
,
index
:
number
)
=>
<
span
>
{
index
+
1
}
</
span
>
},
{
title
:
'操作角色'
,
dataIndex
:
'roleName'
,
},
{
title
:
'状态'
,
dataIndex
:
'state'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
GeneralExternalState
colorType=
{
1
}
state=
{
text
}
data=
{
externalState
}
/>
},
{
title
:
'操作'
,
dataIndex
:
'operationalProcess'
,
},
{
title
:
'操作时间'
,
dataIndex
:
'operationTime'
,
render
:
(
text
:
any
,
record
:
any
)
=>
format
(
text
)
},
{
title
:
'审核意见'
,
dataIndex
:
'auditOpinion'
,
}]
const
insideColumns
:
EditableColumns
[]
=
[{
title
:
'序号'
,
dataIndex
:
'inquiryListId'
,
render
:
(
texr
:
any
,
record
:
any
,
index
:
number
)
=>
<
span
>
{
index
+
1
}
</
span
>
},
{
title
:
'操作人'
,
dataIndex
:
'roleName'
,
},
{
title
:
'部门'
,
dataIndex
:
'department'
,
},
{
title
:
'职位'
,
dataIndex
:
'position'
,
},
{
title
:
'状态'
,
dataIndex
:
'state'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
GeneralInteriorState
colorType=
{
1
}
state=
{
text
}
data=
{
interiorState
}
/>
},
{
title
:
'操作'
,
dataIndex
:
'operationalProcess'
,
},
{
title
:
'操作时间'
,
dataIndex
:
'operationTime'
,
render
:
(
text
:
any
,
record
:
any
)
=>
format
(
text
)
},
{
title
:
'审核意见'
,
dataIndex
:
'auditOpinion'
,
}]
const
onChange
=
(
e
:
any
)
=>
{
setRadio
(
e
.
target
.
value
)
}
return
(
<
div
>
<
Radio
.
Group
defaultValue=
"outer"
buttonStyle=
"solid"
onChange=
{
onChange
}
>
<
Radio
.
Button
value=
"outer"
>
外部单据
</
Radio
.
Button
>
<
Radio
.
Button
value=
"inside"
>
内部单据
</
Radio
.
Button
>
</
Radio
.
Group
>
{
radio
===
'outer'
?
<
PolymericTable
columns=
{
outerColumns
}
loading=
{
false
}
pagination=
{
null
}
dataSource=
{
Object
.
keys
(
set
).
length
>
0
&&
set
.
externalRequisitionFormStateResponses
}
/>
:
<
PolymericTable
columns=
{
insideColumns
}
loading=
{
false
}
pagination=
{
null
}
dataSource=
{
Object
.
keys
(
set
).
length
>
0
&&
set
.
interiorRequisitionFormStateResponses
}
/>
}
</
div
>
)
}
export
default
FlowRecord
src/pages/transaction/purchaseAbility/purchaseInquiry/addInquiry/components/index.less
0 → 100644
View file @
f88a84a4
.formwrap {
position: relative;
.formbutton {
position: absolute;
right: -95px;
display: flex;
width: 90px;
:global {
.ant-form-item {
width: 32px;
margin-right: 10px;
.ant-btn {
width: 32px;
padding: 0;
margin-right: 10px;
}
}
}
}
}
.modal_wrap_className {
.site_layout_background {
background-color: #fff;
border-right: 1px solid #EEF0F3;
}
.site_content_style {
background-color: #fff;
padding: 24px;
height: 600px;
overflow-y: scroll;
.affix_title {
font-size: 14px;
margin-bottom: 24px;
.divider_style {
width: 2px;
height: 16px;
margin: 0px 5px 0px 0px ;
background-color: #00B37A;
}
}
.upload_item {
padding: 5px 8px;
margin-bottom: 16px;
display: flex;
align-items: center;
justify-content: space-between;
background-color: #FAFBFC;
.upload_left {
display: flex;
align-items: center;
color: #303133;
:global {
.anticon-file-word {
color: #4279df;
font-size: 20px;
margin-right: 8px;
}
}
}
.upload_right {
color: #00B37A;
cursor: pointer;
:global {
.anticon-delete {
margin-left: 19px;
color: #C0C4CC;
}
}
}
}
}
:global {
.ant-anchor-wrapper {
margin-left: 0 !important;
padding-left: 0 !important;
}
.ant-menu-item {
margin-top: 0 !important;
margin-bottom: 0 !important;
&:after {
left: 0;
border-right: none;
border-left: 2px solid #00B37A;
height: 80%;
margin: auto;
}
.ant-anchor-link {
padding: 0px !important;
line-height: 40px !important;
}
}
.ant-menu-item-selected {
color: #303133;
font-weight: 600;
background-color: transparent !important;
}
}
}
.checkbox_wrap_style {
width: 100%;
:global {
.ant-checkbox-wrapper {
width: 100%;
border: 1px solid #ccc;
padding: 8px 18px;
.ant-checkbox {
display: none;
}
> span {
display: flex;
align-items: center;
padding: 0px 0px;
.checkbox_avatar {
width: 32px;
height: 32px;
margin-right: 8px;
}
}
}
.ant-checkbox-wrapper-checked {
border-color: #00b37a!important;
color: #00b37a;
position: relative;
&:after {
content: "";
position: absolute;
width: 12px;
height: 11px;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAALCAYAAABLcGxfAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAADKADAAQAAAABAAAACwAAAAChLCZNAAAA6klEQVQoFWNgIAVsruliJkr9/1XMDCZqcxkY/mczEtSwv4GD4euvlQz/GfxAavFr2N3Bz/Dz8yaG///tYAbj1rC1QYLh/+8dQMX6MMW4bdjSoMTA8Gs30BlAGhUwoXKBvM21QBN/H0VWbMovzXDSOgOsFFXD1mo7Bsa/B5U5BSVgBoEUrzaOZMi5shkshAjWLTWgUNgINJlnh1k8AysTEzhEQIpDzy5nOP3xKVgDxNNbqxIY/jHMAYqADRBi5WTYY5HEIMbGzRB4ZilcMUgHI8PWqlKg4i6wdiRCgIWDQYSNi+HOt3dIogwMANgLQif9hMeFAAAAAElFTkSuQmCC);
right: 0;
bottom: 0;
}
}
}
}
\ No newline at end of file
src/pages/transaction/purchaseAbility/purchaseInquiry/addInquiry/components/tradingConditions.tsx
0 → 100644
View file @
f88a84a4
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
moment
from
'moment'
;
import
{
Form
,
Input
,
Select
,
Row
,
Col
,
DatePicker
,
message
}
from
'antd'
;
import
{
PublicApi
}
from
'@/services/api'
;
const
layout
:
any
=
{
colon
:
false
,
labelCol
:
{
style
:
{
width
:
'174px'
}
},
wrapperCol
:
{
span
:
24
},
labelAlign
:
"left"
};
export
interface
faceSetData
{
set
?:
any
,
get
?:
Function
,
currentRef
?:
any
,
onBadge
?:
Function
}
const
TradingConditions
:
React
.
FC
<
faceSetData
>
=
(
props
)
=>
{
const
{
set
,
get
,
currentRef
,
onBadge
}
=
props
const
[
TradingConditionsForm
]
=
Form
.
useForm
();
const
[
address
,
setAddress
]
=
useState
([]);
const
[
selectAddress
,
setselectAddress
]
=
useState
<
any
>
({});
useEffect
(()
=>
{
// 获取交付地址
PublicApi
.
getLogisticsSelectListReceiverAddress
().
then
(
res
=>
{
setAddress
(
res
.
data
)
})
},
[])
useEffect
(()
=>
{
currentRef
.
current
=
{
get
:
()
=>
new
Promise
((
resolve
:
any
)
=>
{
TradingConditionsForm
.
validateFields
().
then
(
res
=>
{
console
.
log
(
res
,
selectAddress
)
resolve
({
state
:
true
,
name
:
'tradingConditions'
,
data
:
{
deliveryTime
:
moment
(
res
.
deliveryTime
).
format
(
'x'
),
quotationAsTime
:
moment
(
res
.
quotationAsTime
).
format
(
'x'
),
addresId
:
res
.
addresId
,
addres
:
selectAddress
.
children
,
logistics
:
res
.
logistics
,
offer
:
res
.
offer
,
otherRequire
:
res
.
otherRequire
,
packRequire
:
res
.
packRequire
,
paymentType
:
res
.
paymentType
,
taxes
:
res
.
taxes
,
}
})
onBadge
(
0
,
2
)
}).
catch
(
error
=>
{
if
(
error
&&
error
.
errorFields
)
{
onBadge
(
error
.
errorFields
.
length
,
2
)
}
})
})
}
},
[
selectAddress
])
const
disabledDate
=
(
current
)
=>
{
return
current
&&
current
<
moment
().
endOf
(
'day'
);
}
const
onSelect
=
(
val
:
any
,
option
:
any
)
=>
{
console
.
log
(
option
)
setselectAddress
(
option
)
}
useEffect
(()
=>
{
if
(
Object
.
keys
(
set
).
length
>
0
)
{
TradingConditionsForm
.
setFieldsValue
({
deliveryTime
:
moment
(
set
.
deliveryTime
),
addresId
:
set
.
addresId
,
quotationAsTime
:
moment
(
set
.
quotationAsTime
),
offer
:
set
.
offer
,
paymentType
:
set
.
paymentType
,
taxes
:
set
.
taxes
,
logistics
:
set
.
logistics
,
packRequire
:
set
.
packRequire
,
otherRequire
:
set
.
otherRequire
})
setselectAddress
({
children
:
set
.
addres
});
}
},
[
set
])
return
(
<
Form
{
...
layout
}
form=
{
TradingConditionsForm
}
>
<
Row
gutter=
{
70
}
>
<
Col
span=
{
12
}
>
<
Form
.
Item
label=
'交付日期'
name=
'deliveryTime'
rules=
{
[{
required
:
true
,
message
:
'请选择交付日期'
}]
}
>
<
DatePicker
style=
{
{
width
:
'100%'
}
}
disabledDate=
{
disabledDate
}
format=
"YYYY-MM-DD HH:mm:ss"
/>
</
Form
.
Item
>
<
Form
.
Item
label=
'交付地址'
name=
'addresId'
rules=
{
[{
required
:
true
,
message
:
'请选择交付地址'
}]
}
>
<
Select
onSelect=
{
onSelect
}
>
{
address
.
map
(
v
=>
(
<
Select
.
Option
key=
{
v
.
id
}
value=
{
v
.
id
}
>
{
v
.
fullAddress
}
</
Select
.
Option
>
))
}
</
Select
>
</
Form
.
Item
>
<
Form
.
Item
label=
'报价截止时间'
name=
'quotationAsTime'
rules=
{
[{
required
:
true
,
message
:
'请选择报价截止时间'
}]
}
>
<
DatePicker
style=
{
{
width
:
'100%'
}
}
format=
"YYYY-MM-DD HH:mm:ss"
disabledDate=
{
disabledDate
}
/>
</
Form
.
Item
>
<
Form
.
Item
label=
'报价要求'
name=
'offer'
>
<
Input
.
TextArea
placeholder=
'最长100个字符,50个汉字'
/>
</
Form
.
Item
>
<
Form
.
Item
label=
'付款方式'
name=
'paymentType'
>
<
Input
.
TextArea
placeholder=
'最长100个字符,50个汉字'
/>
</
Form
.
Item
>
<
Form
.
Item
label=
'税费要求'
name=
'taxes'
>
<
Input
.
TextArea
placeholder=
'最长100个字符,50个汉字'
/>
</
Form
.
Item
>
<
Form
.
Item
label=
'物流要求'
name=
'logistics'
>
<
Input
.
TextArea
placeholder=
'最长100个字符,50个汉字'
/>
</
Form
.
Item
>
</
Col
>
<
Col
span=
{
12
}
>
<
Form
.
Item
label=
'包装要求'
name=
'packRequire'
>
<
Input
.
TextArea
placeholder=
'最长100个字符,50个汉字'
/>
</
Form
.
Item
>
<
Form
.
Item
label=
'其他要求'
name=
'otherRequire'
>
<
Input
.
TextArea
placeholder=
'最长100个字符,50个汉字'
/>
</
Form
.
Item
>
</
Col
>
</
Row
>
</
Form
>
)
}
export
default
TradingConditions
src/pages/transaction/purchaseAbility/purchaseInquiry/addInquiry/index.tsx
0 → 100644
View file @
f88a84a4
import
React
from
'react'
;
import
Table
from
'../../components/table'
import
{
history
}
from
'umi'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
format
}
from
'util'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
Row
,
Col
,
Space
,
Button
,
Dropdown
,
Menu
}
from
'antd'
;
import
{
DeleteOutlined
,
DownOutlined
,
PlusOutlined
}
from
'@ant-design/icons'
;
const
AddInquiry
=
()
=>
{
console
.
log
(
'待新增采购需求单'
);
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'需求单号'
,
key
:
'requisitionFormNo'
,
dataIndex
:
'requisitionFormNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/goodsOffer/enquiryOrder/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'需求摘要'
,
key
:
'details'
,
dataIndex
:
'details'
,
},
{
title
:
'交付日期'
,
key
:
'deliveryTime'
,
dataIndex
:
'deliveryTime'
,
},
{
title
:
'报价截止时间'
,
key
:
'quotationAsTime'
,
dataIndex
:
'quotationAsTime'
,
render
:
(
text
:
any
,
record
:
any
)
=>
format
(
text
)
},
{
title
:
'单据时间'
,
key
:
'voucherTime'
,
dataIndex
:
'voucherTime'
,
render
:
(
text
:
any
,
record
:
any
)
=>
format
(
text
)
},
{
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
format
(
text
)
},
{
title
:
'内部状态'
,
key
:
'interiorState'
,
dataIndex
:
'interiorState'
,
},
{
title
:
'操作'
,
key
:
'operate'
,
dataIndex
:
'operate'
,
}];
return
(
<
Table
schemaType=
"PurchaseDemandPublic"
columns=
{
columns
}
effects=
"requisitionFormNo"
fetch=
{
PublicApi
.
getOrderRequisitionFormAwaitList
}
controllerBtns=
{
<
Row
>
<
Col
span=
{
24
}
>
<
Space
direction=
"horizontal"
size=
{
16
}
>
<
Button
onClick=
{
()
=>
history
.
push
(
'/memberCenter/procurementAbility/purchaseInquiry/add'
)
}
type=
"primary"
icon=
{
<
PlusOutlined
/>
}
>
新建
</
Button
>
<
Button
>
批量提交审核
</
Button
>
<
Dropdown
.
Button
overlay=
{
<
Menu
>
<
Menu
.
Item
key=
'1'
icon=
{
<
DeleteOutlined
/>
}
>
批量删除
</
Menu
.
Item
>
</
Menu
>
}
trigger=
{
[
'click'
]
}
icon=
{
<
DownOutlined
/>
}
>
更多
</
Dropdown
.
Button
>
</
Space
>
</
Col
>
</
Row
>
}
/>
)
}
export
default
AddInquiry
src/pages/transaction/purchaseAbility/purchaseInquiry/auditInquiryOne/index.tsx
0 → 100644
View file @
f88a84a4
import
React
from
'react'
;
import
Table
from
'../../components/table'
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
format
}
from
'util'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
Row
,
Col
,
Button
}
from
'antd'
;
const
auditInquiryOne
=
()
=>
{
console
.
log
(
'待新增采购需求单'
);
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'需求单号'
,
key
:
'requisitionFormNo'
,
dataIndex
:
'requisitionFormNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/goodsOffer/enquiryOrder/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'需求摘要'
,
key
:
'details'
,
dataIndex
:
'details'
,
},
{
title
:
'交付日期'
,
key
:
'deliveryTime'
,
dataIndex
:
'deliveryTime'
,
},
{
title
:
'报价截止时间'
,
key
:
'quotationAsTime'
,
dataIndex
:
'quotationAsTime'
,
render
:
(
text
:
any
,
record
:
any
)
=>
format
(
text
)
},
{
title
:
'单据时间'
,
key
:
'voucherTime'
,
dataIndex
:
'voucherTime'
,
render
:
(
text
:
any
,
record
:
any
)
=>
format
(
text
)
},
{
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
format
(
text
)
},
{
title
:
'内部状态'
,
key
:
'interiorState'
,
dataIndex
:
'interiorState'
,
},
{
title
:
'操作'
,
key
:
'operate'
,
dataIndex
:
'operate'
,
}];
return
(
<
Table
schemaType=
"PurchaseDemandPublic"
columns=
{
columns
}
effects=
"requisitionFormNo"
fetch=
{
PublicApi
.
getOrderRequisitionFormAuditList
}
controllerBtns=
{
<
Row
>
<
Col
span=
{
6
}
>
<
Button
>
批量提交审核
</
Button
>
</
Col
>
</
Row
>
}
/>
)
}
export
default
auditInquiryOne
src/pages/transaction/purchaseAbility/purchaseInquiry/auditInquiryTwo/index.tsx
0 → 100644
View file @
f88a84a4
import
React
from
'react'
;
import
Table
from
'../../components/table'
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
format
}
from
'util'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
Row
,
Col
,
Button
}
from
'antd'
;
const
auditInquiryTwo
=
()
=>
{
console
.
log
(
'待新增采购需求单'
);
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'需求单号'
,
key
:
'requisitionFormNo'
,
dataIndex
:
'requisitionFormNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/goodsOffer/enquiryOrder/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'需求摘要'
,
key
:
'details'
,
dataIndex
:
'details'
,
},
{
title
:
'交付日期'
,
key
:
'deliveryTime'
,
dataIndex
:
'deliveryTime'
,
},
{
title
:
'报价截止时间'
,
key
:
'quotationAsTime'
,
dataIndex
:
'quotationAsTime'
,
render
:
(
text
:
any
,
record
:
any
)
=>
format
(
text
)
},
{
title
:
'单据时间'
,
key
:
'voucherTime'
,
dataIndex
:
'voucherTime'
,
render
:
(
text
:
any
,
record
:
any
)
=>
format
(
text
)
},
{
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
format
(
text
)
},
{
title
:
'内部状态'
,
key
:
'interiorState'
,
dataIndex
:
'interiorState'
,
},
{
title
:
'操作'
,
key
:
'operate'
,
dataIndex
:
'operate'
,
}];
return
(
<
Table
schemaType=
"PurchaseDemandPublic"
columns=
{
columns
}
effects=
"requisitionFormNo"
fetch=
{
PublicApi
.
getOrderRequisitionFormAuditTwoList
}
controllerBtns=
{
<
Row
>
<
Col
span=
{
6
}
>
<
Button
>
批量提交审核
</
Button
>
</
Col
>
</
Row
>
}
/>
)
}
export
default
auditInquiryTwo
src/pages/transaction/purchaseAbility/purchaseInquiry/inquiry/index.tsx
0 → 100644
View file @
f88a84a4
import
React
from
'react'
;
import
Table
from
'../../components/table'
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
format
}
from
'util'
;
import
{
PublicApi
}
from
'@/services/api'
;
const
Inquiry
=
()
=>
{
console
.
log
(
'采购需求单查询'
);
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'需求单号'
,
key
:
'requisitionFormNo'
,
dataIndex
:
'requisitionFormNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/goodsOffer/enquiryOrder/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'需求摘要'
,
key
:
'details'
,
dataIndex
:
'details'
,
},
{
title
:
'交付日期'
,
key
:
'deliveryTime'
,
dataIndex
:
'deliveryTime'
,
},
{
title
:
'报价截止时间'
,
key
:
'quotationAsTime'
,
dataIndex
:
'quotationAsTime'
,
render
:
(
text
:
any
,
record
:
any
)
=>
format
(
text
)
},
{
title
:
'单据时间'
,
key
:
'voucherTime'
,
dataIndex
:
'voucherTime'
,
render
:
(
text
:
any
,
record
:
any
)
=>
format
(
text
)
},
{
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
format
(
text
)
},
{
title
:
'内部状态'
,
key
:
'interiorState'
,
dataIndex
:
'interiorState'
,
}];
return
(
<
Table
schemaType=
"PurchaseDemand"
columns=
{
columns
}
effects=
"requisitionFormNo"
fetch=
{
PublicApi
.
getOrderRequisitionFormList
}
/>
)
}
export
default
Inquiry
src/pages/transaction/purchaseAbility/purchaseInquiry/submitInquiry/index.tsx
0 → 100644
View file @
f88a84a4
import
React
from
'react'
;
import
Table
from
'../../components/table'
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
format
}
from
'util'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
Row
,
Col
,
Button
}
from
'antd'
;
const
submitInquiry
=
()
=>
{
console
.
log
(
'待新增采购需求单'
);
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'需求单号'
,
key
:
'requisitionFormNo'
,
dataIndex
:
'requisitionFormNo'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/goodsOffer/enquiryOrder/preview?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'需求摘要'
,
key
:
'details'
,
dataIndex
:
'details'
,
},
{
title
:
'交付日期'
,
key
:
'deliveryTime'
,
dataIndex
:
'deliveryTime'
,
},
{
title
:
'报价截止时间'
,
key
:
'quotationAsTime'
,
dataIndex
:
'quotationAsTime'
,
render
:
(
text
:
any
,
record
:
any
)
=>
format
(
text
)
},
{
title
:
'单据时间'
,
key
:
'voucherTime'
,
dataIndex
:
'voucherTime'
,
render
:
(
text
:
any
,
record
:
any
)
=>
format
(
text
)
},
{
title
:
'外部状态'
,
key
:
'externalState'
,
dataIndex
:
'externalState'
,
render
:
(
text
:
any
,
record
:
any
)
=>
format
(
text
)
},
{
title
:
'内部状态'
,
key
:
'interiorState'
,
dataIndex
:
'interiorState'
,
},
{
title
:
'操作'
,
key
:
'operate'
,
dataIndex
:
'operate'
,
}];
return
(
<
Table
schemaType=
"PurchaseDemandPublic"
columns=
{
columns
}
effects=
"requisitionFormNo"
fetch=
{
PublicApi
.
getOrderRequisitionFormSubmitList
}
controllerBtns=
{
<
Row
>
<
Col
span=
{
6
}
>
<
Button
>
批量提交审核
</
Button
>
</
Col
>
</
Row
>
}
/>
)
}
export
default
submitInquiry
src/pages/transaction/purchaseAbility/schema/index.ts
0 → 100644
View file @
f88a84a4
import
{
ISchema
}
from
'@formily/antd'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
{
PublicApi
}
from
'@/services/api'
/** 采购需求单查询 */
export
const
PurchaseDemandSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
megalayout
:
{
type
:
'object'
,
"x-component"
:
'mega-layout'
,
properties
:
{
requisitionFormNo
:
{
type
:
'string'
,
"x-component"
:
"Search"
,
"x-mega-props"
:
{
},
"x-component-props"
:
{
placeholder
:
'需求单号'
,
align
:
'flex-left'
,
}
}
}
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
"x-component"
:
"flex-layout"
,
"x-component-props"
:
{
rowStyle
:
{
justifyContent
:
'flex-start'
,
flexWrap
:
'nowrap'
},
colStyle
:
{
//改变间隔
marginRight
:
20
}
},
properties
:
{
PRO_LAYOUT
:
{
type
:
'object'
,
"x-component"
:
'mega-layout'
,
"x-mega-props"
:
{
span
:
5
},
"x-component-props"
:
{
inline
:
true
},
properties
:
{
"[startDocumentsTime,endDocumentsTime]"
:
{
type
:
'string'
,
"x-component"
:
"dateSelect"
,
"x-component-props"
:
{
placeholder
:
'单据时间(全部)'
,
}
},
externalState
:
{
type
:
'string'
,
"x-component"
:
'Select'
,
"x-component-props"
:
{
placeholder
:
'外部状态'
,
className
:
'fixed-ant-selected-down'
,
// 该类强制将显示的下拉框出现在s
style
:
{
width
:
160
}
},
},
interiorState
:
{
type
:
'string'
,
"x-component"
:
'Select'
,
"x-component-props"
:
{
placeholder
:
'内部状态'
,
className
:
'fixed-ant-selected-down'
,
// 该类强制将显示的下拉框出现在s
style
:
{
width
:
160
}
},
},
}
},
sumbit
:
{
"x-component"
:
'Submit'
,
"x-mega-props"
:
{
span
:
1
},
"x-component-props"
:
{
children
:
'查询'
}
}
}
}
}
}
/**待新建需求单 & 待审核需求单一级 & 待审核需求单二级 & 待提交需求单 */
export
const
PurchaseDemandPublicSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
megalayout
:
{
type
:
'object'
,
"x-component"
:
'mega-layout'
,
"x-component-props"
:
{
grid
:
true
},
properties
:
{
ctl
:
{
type
:
'object'
,
"x-component"
:
"Children"
,
"x-component-props"
:
{
children
:
"{{controllerBtns}}"
}
},
requisitionFormNo
:
{
type
:
'string'
,
"x-component"
:
"Search"
,
"x-mega-props"
:
{
},
"x-component-props"
:
{
placeholder
:
'需求单号'
}
}
}
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
"x-component"
:
"flex-layout"
,
"x-component-props"
:
{
rowStyle
:
{
flexWrap
:
'nowrap'
},
colStyle
:
{
marginLeft
:
20
}
},
properties
:
{
PRO_LAYOUT
:
{
type
:
'object'
,
"x-component"
:
'mega-layout'
,
"x-mega-props"
:
{
span
:
5
},
"x-component-props"
:
{
inline
:
true
},
properties
:
{
details
:
{
type
:
'string'
,
"x-component-props"
:
{
placeholder
:
'需求摘要'
}
},
category
:
{
type
:
'string'
,
"x-component"
:
'SearchSelect'
,
"x-component-props"
:
{
placeholder
:
'请选择品类'
,
className
:
'fixed-ant-selected-down'
,
// 该类强制将显示的下拉框出现在select下, 只有这里出现问题, ??
fetchSearch
:
PublicApi
.
getProductSelectGetSelectCustomerCategory
,
style
:
{
width
:
160
}
}
},
"[startDocumentsTime,endDocumentsTime]"
:
{
type
:
'string'
,
"x-component"
:
"dateSelect"
,
"x-component-props"
:
{
placeholder
:
'单据时间(全部)'
,
}
},
}
},
sumbit
:
{
"x-component"
:
'Submit'
,
"x-mega-props"
:
{
span
:
1
},
"x-component-props"
:
{
children
:
'查询'
}
}
}
}
}
}
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