Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
jinfa-platform
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linweijiong
jinfa-platform
Commits
d959bffa
Commit
d959bffa
authored
Apr 19, 2021
by
alwayOnlie
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev-srm' of
http://10.0.0.22:3000/lingxi/lingxi-business-paltform
into dev-srm
parents
3d71db09
10a6ce93
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
474 additions
and
26 deletions
+474
-26
index.ts
config/routes/index.ts
+2
-2
index.tsx
...seAbility/components/detail/components/bidTable/index.tsx
+14
-4
index.tsx
...lity/components/detail/components/contrastLyout/index.tsx
+3
-1
index.tsx
...ility/components/detail/components/demandLayout/index.tsx
+15
-1
index.tsx
...ity/components/detail/components/materialLayout/index.tsx
+67
-3
index.less
...on/purchaseAbility/offter/addOffter/components/index.less
+73
-0
crossSellProducts.tsx
...chaseAbility/offter/addOffter/modal/crossSellProducts.tsx
+61
-1
index.less
...saction/purchaseAbility/offter/addOffter/modal/index.less
+34
-0
add.tsx
...action/purchaseAbility/purchaseInquiry/addInquiry/add.tsx
+13
-1
basic.tsx
...seAbility/purchaseInquiry/addInquiry/components/basic.tsx
+4
-3
file.tsx
...aseAbility/purchaseInquiry/addInquiry/components/file.tsx
+113
-0
index.less
...eAbility/purchaseInquiry/addInquiry/components/index.less
+73
-0
index.tsx
...nsaction/purchaseAbility/purchaseInquiry/detail/index.tsx
+2
-10
No files found.
config/routes/index.ts
View file @
d959bffa
...
...
@@ -58,11 +58,11 @@ const memberCenterRoute = {
// ShopRoute,
// CommodityRoute,
// srm开发临时使用...
//
ProcurementRoute,
ProcurementRoute
,
// // 合同能力
// contracRoute,
//...
...
asyncRoutes
,
//
...asyncRoutes,
{
path
:
'/memberCenter/noAuth'
,
auth
:
false
,
...
...
src/pages/transaction/purchaseAbility/components/detail/components/bidTable/index.tsx
View file @
d959bffa
...
...
@@ -64,6 +64,7 @@ const BidTable: React.FC<ReduxProps> = (props: any) => {
}
const
bidDetailContext
=
useContext
(
BidDetailContext
);
console
.
log
(
bidDetailContext
,
10086
)
const
onChangeInput
=
(
v
,
index
,
idx
)
=>
{
setAwardTaxProbability
(
v
,
index
,
idx
)
...
...
@@ -113,7 +114,7 @@ const BidTable: React.FC<ReduxProps> = (props: any) => {
))
}
</
Row
>
{
bidDetailContext
.
map
((
item
:
any
,
index
:
number
)
=>
(
<
Row
key=
{
`row${index + 1}`
}
wrap=
{
false
}
gutter=
{
[
0
,
4
]
}
>
<
Row
key=
{
`row${index + 1}`
}
wrap=
{
false
}
gutter=
{
[
0
,
4
]
}
style=
{
{
backgroundColor
:
'#FFFFFF'
,
marginBottom
:
'4px'
}
}
>
<
Col
span=
{
4
}
>
<
div
className=
{
style
.
materialInfo
}
>
<
span
className=
{
style
.
rankNumber
}
>
{
index
+
1
}
</
span
>
...
...
@@ -228,12 +229,12 @@ const BidTable: React.FC<ReduxProps> = (props: any) => {
))
}
</
Row
>
))
}
<
Row
wrap=
{
false
}
gutter=
{
[
0
,
4
]
}
>
<
Row
wrap=
{
false
}
gutter=
{
[
0
,
4
]
}
style=
{
{
backgroundColor
:
'#FFFFFF'
}
}
>
<
Col
span=
{
4
}
/>
<
Col
span=
{
4
}
/>
{
bidDetailContext
[
0
].
company
.
map
((
it
:
any
,
idx
:
number
)
=>
(
<
Col
span=
{
4
}
key=
{
`company${idx + 1}`
}
>
<
div
className=
{
style
.
throwBidInfo
}
>
<
div
className=
{
style
.
throwBidInfo
}
style=
{
{
height
:
'auto'
,
paddingBottom
:
'0'
}
}
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
报价小计:
</
p
></
Col
>
...
...
@@ -252,7 +253,16 @@ const BidTable: React.FC<ReduxProps> = (props: any) => {
<
Col
><
p
>
{
it
.
minimum
}
</
p
></
Col
>
</
Row
>
</
div
>
<
Divider
dashed=
{
true
}
style=
{
{
margin
:
0
,
marginBottom
:
8
}
}
/>
</
div
>
</
Col
>
))
}
</
Row
>
<
Row
wrap=
{
false
}
gutter=
{
[
0
,
4
]
}
style=
{
{
backgroundColor
:
'#FFFFFF'
,
borderTop
:
'1px dashed #F4F5F7'
}
}
>
<
Col
span=
{
4
}
/>
<
Col
span=
{
4
}
/>
{
bidDetailContext
[
0
].
company
.
map
((
it
:
any
,
idx
:
number
)
=>
(
<
Col
span=
{
4
}
key=
{
`company${idx + 1}`
}
>
<
div
className=
{
style
.
throwBidInfo
}
style=
{
{
height
:
'auto'
,
paddingTop
:
'5px'
}
}
>
<
div
className=
{
style
[
'card-list'
]
}
>
<
Row
>
<
Col
span=
{
8
}
><
p
className=
{
style
[
'card-list_title'
]
}
>
授标数量:
</
p
></
Col
>
...
...
src/pages/transaction/purchaseAbility/components/detail/components/contrastLyout/index.tsx
View file @
d959bffa
...
...
@@ -150,7 +150,9 @@ const ContrastLyout: React.FC<ContrastProps> = (props: any) => {
}
companyArr
.
push
(
cItem
)
})
item
.
company
=
companyArr
;
/** 排名排序 */
const
companySort
=
companyArr
.
sort
((
a
,
b
)
=>
a
.
ranking
-
b
.
ranking
)
item
.
company
=
companySort
;
params
.
push
(
item
);
})
setDataSource
(
params
);
...
...
src/pages/transaction/purchaseAbility/components/detail/components/demandLayout/index.tsx
View file @
d959bffa
import
React
,
{
useContext
}
from
'react'
;
import
{
Row
,
Col
,
Image
,
Table
,
Tooltip
}
from
'antd'
;
import
{
Row
,
Col
,
Image
,
Table
,
Tooltip
,
Switch
,
Typography
}
from
'antd'
;
import
Card
from
'../../../card'
;
import
{
Context
}
from
'../context'
;
import
style
from
'./index.less'
;
...
...
@@ -63,6 +63,12 @@ const DemandLayout: React.FC<DemandLayoutIProps> = (props: any) => {
title
:
'是否归属会员'
,
key
:
'membershipOrNot'
,
dataIndex
:
'membershipOrNot'
,
render
:
(
text
:
any
)
=>
(
<>
{
Number
(
text
)
===
1
&&
<
Typography
.
Text
type=
'success'
>
是
</
Typography
.
Text
>
}
{
Number
(
text
)
===
0
&&
<
Typography
.
Text
type=
'warning'
>
否
</
Typography
.
Text
>
}
</>
)
},
{
title
:
(
...
...
@@ -81,11 +87,19 @@ const DemandLayout: React.FC<DemandLayoutIProps> = (props: any) => {
),
key
:
'state'
,
dataIndex
:
'state'
,
render
:
(
text
:
any
)
=>
(
<
Switch
checked=
{
text
}
disabled=
{
true
}
/>
)
},
{
title
:
'操作'
,
key
:
'operate'
,
dataIndex
:
'operate'
,
render
:
(
_text
:
any
,
_record
:
any
)
=>
(
<
Typography
.
Link
href=
{
`/shop?shopId=${btoa(JSON.stringify({ roleId: _record.roleId, memberId: _record.memberId }))}`
}
target=
"_blank"
>
进入店铺
</
Typography
.
Link
>
)
},
]
...
...
src/pages/transaction/purchaseAbility/components/detail/components/materialLayout/index.tsx
View file @
d959bffa
import
React
,
{
useRef
}
from
'react'
;
import
React
,
{
useRef
,
useState
}
from
'react'
;
import
{
StandardTable
}
from
'god'
;
import
Card
from
'../../../card'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
DetailDrawer
from
'../../../detailDrawer'
;
export
interface
IPROPS
{
id
?:
number
,
...
...
@@ -11,7 +12,64 @@ export interface IPROPS {
const
MaterialLayout
:
React
.
FC
<
IPROPS
>
=
(
props
:
any
)
=>
{
const
{
id
,
number
,
fetch
}
=
props
;
const
[
visible
,
setVisible
]
=
useState
<
boolean
>
(
false
)
const
currentRef
=
useRef
({});
const
[
dataSource
,
setDataSource
]
=
useState
<
any
>
([])
const
handleClick
=
(
item
:
any
)
=>
{
setDataSource
([
{
linkTitle
:
'基本信息'
,
linkContent
:
[
{
label
:
'物料编号'
,
content
:
item
.
number
},
{
label
:
'物料名称'
,
content
:
item
.
name
},
{
label
:
'规格型号'
,
content
:
item
.
model
},
{
label
:
'品类'
,
content
:
item
.
category
},
{
label
:
'品牌'
,
content
:
item
.
brand
},
]
},
{
linkTitle
:
'采购数量'
,
linkContent
:
[
{
label
:
'单位'
,
content
:
item
.
unit
},
{
label
:
'采购数量'
,
content
:
item
.
purchaseCount
},
]
},
{
linkTitle
:
'附件'
,
linkContent
:
[
{
label
:
'附件'
,
file
:
item
.
urls
?
true
:
false
,
content
:
item
.
urls
},
]
}
])
setVisible
(
true
);
}
const
columns
=
[
{
title
:
'物料编号'
,
...
...
@@ -22,7 +80,7 @@ const MaterialLayout: React.FC<IPROPS> = (props: any) => {
title
:
'物料名称'
,
key
:
'name'
,
dataIndex
:
'name'
,
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
type=
'button'
>
{
text
}
</
EyePreview
>
render
:
(
text
:
any
,
record
:
any
)
=>
<
EyePreview
type=
'button'
handleClick=
{
()
=>
handleClick
(
record
)
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'规格型号'
,
...
...
@@ -53,7 +111,7 @@ const MaterialLayout: React.FC<IPROPS> = (props: any) => {
const
productlist
=
(
params
:
any
)
=>
{
return
new
Promise
(
resolve
=>
{
fetch
({
id
,
number
,
...
params
}).
then
((
res
:
any
)
=>
{
fetch
({
id
,
number
,
...
params
}).
then
((
res
:
any
)
=>
{
resolve
(
res
.
data
)
})
})
...
...
@@ -70,6 +128,12 @@ const MaterialLayout: React.FC<IPROPS> = (props: any) => {
tableProps=
{
{
rowKew
:
'id'
}
}
fetchTableData=
{
(
params
:
any
)
=>
productlist
(
params
)
}
/>
<
DetailDrawer
title=
'物料信息'
visible=
{
visible
}
dataSource=
{
dataSource
}
onCalcel=
{
()
=>
setVisible
(
false
)
}
/>
</
Card
>
)
}
...
...
src/pages/transaction/purchaseAbility/offter/addOffter/components/index.less
View file @
d959bffa
...
...
@@ -76,4 +76,77 @@
}
}
}
.revise_style {
:global {
.ant-form-item-label {
width: 174px;
label {
color:#6B778C
}
}
.ant-form-item-control {
width: 500px;
.ant-form-item-control-input-content {
position: relative;
.ant-btn-link {
position: absolute;
right: -120px;
}
.ant-picker {
width: 100%;
}
}
.ant-input-group-addon {
.ant-input-search-button {
background-color: #6B778C;
border-color: #6B778C;
}
}
}
.ant-radio-group-solid {
.ant-radio-button-wrapper-checked {
background: #6B778C;
border-color: #6B778C;
&:hover {
background: #6B778C;
border-color: #6B778C;
}
}
}
}
.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;
}
}
}
}
}
src/pages/transaction/purchaseAbility/offter/addOffter/modal/crossSellProducts.tsx
View file @
d959bffa
...
...
@@ -8,12 +8,15 @@ import {
Form
,
Divider
,
Typography
,
Upload
,
message
}
from
'antd'
;
import
cx
from
'classnames'
import
style
from
'./index.less'
;
import
{
PlusSquare
Outlined
}
from
'@ant-design/icons'
;
import
{
DeleteOutlined
,
LinkOutlined
,
PlusSquareOutlined
,
Upload
Outlined
}
from
'@ant-design/icons'
;
import
SelectProduct
from
'./selectProduct'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
UPLOAD_TYPE
}
from
'@/constants'
const
{
Sider
,
Content
}
=
Layout
;
const
{
Text
}
=
Typography
;
...
...
@@ -43,6 +46,8 @@ const CrossSellProducts: React.FC<IProps> = (props: any) => {
const
[
flag
,
setFlag
]
=
useState
<
boolean
>
(
false
);
const
[
product
,
setProduct
]
=
useState
<
any
>
({});
const
[
attribute
,
setAttribute
]
=
useState
<
any
>
([]);
const
[
files
,
setFiles
]
=
useState
([]);
const
[
loading
,
setloading
]
=
useState
(
false
);
const
handleAnchorClick
=
(
e
)
=>
{
e
.
preventDefault
()
};
...
...
@@ -75,6 +80,32 @@ const CrossSellProducts: React.FC<IProps> = (props: any) => {
attribute
})
}
/**判断文件类型和大小 */
const
beforeDocUpload
=
(
file
:
any
)
=>
{
const
isLt20M
=
file
.
size
/
1024
/
1024
<
20
;
if
(
!
isLt20M
)
{
message
.
error
(
'上传文件大小不超过 20M!'
);
}
return
isLt20M
;
}
// 上传回调
const
handleChange
=
({
file
})
=>
{
const
arr
:
any
=
files
;
setloading
(
true
);
if
(
file
.
response
)
{
if
(
file
.
response
.
code
===
1000
)
{
arr
.
push
({
name
:
file
.
name
,
url
:
file
.
response
.
data
})
setloading
(
false
);
}
}
setFiles
([...
arr
])
}
return
(
<>
<
Drawer
...
...
@@ -273,6 +304,35 @@ const CrossSellProducts: React.FC<IProps> = (props: any) => {
</>
}
/>
<
Form
.
Item
label=
'附件'
name=
'upload'
>
<
div
className=
{
style
.
upload_data
}
>
{
files
.
length
>
0
&&
files
.
map
((
v
,
index
)
=>
(
<
div
key=
{
index
}
className=
{
style
.
upload_item
}
>
<
div
className=
{
style
.
upload_left
}
>
<
LinkOutlined
/>
<
span
>
{
v
.
name
}
</
span
>
</
div
>
<
div
className=
{
style
.
upload_right
}
>
<
DeleteOutlined
/>
</
div
>
</
div
>
))
}
</
div
>
<
Upload
action=
"/api/file/file/upload"
data=
{
{
fileType
:
UPLOAD_TYPE
}
}
showUploadList=
{
false
}
accept=
'.doc,.docx,.pdf,.ppt,.pptx,.xls,.xlsx'
beforeUpload=
{
beforeDocUpload
}
onChange=
{
handleChange
}
>
<
Button
loading=
{
loading
}
icon=
{
<
UploadOutlined
/>
}
>
上传文件
</
Button
>
<
div
style=
{
{
marginTop
:
'8px'
}
}
>
一次上传一个文件,每个附件大小不能超过 20M
</
div
>
</
Upload
>
</
Form
.
Item
>
</
div
>
</
Form
>
</
Content
>
...
...
src/pages/transaction/purchaseAbility/offter/addOffter/modal/index.less
View file @
d959bffa
...
...
@@ -39,6 +39,40 @@
}
}
}
.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;
}
}
}
}
}
.box {
width: 100%;
...
...
src/pages/transaction/purchaseAbility/purchaseInquiry/addInquiry/add.tsx
View file @
d959bffa
...
...
@@ -6,6 +6,7 @@ import Basic from './components/basic';
import
Material
from
'./components/material'
;
import
Condition
from
'./components/condition'
;
import
Demand
from
'./components/demand'
;
import
File
from
'./components/file'
;
import
ReutrnEle
from
'@/components/ReturnEle'
;
import
{
PostPurchasePurchaseInquiryAddRequest
,
...
...
@@ -34,6 +35,8 @@ const AddForm = () => {
const
[
condition
,
setCondition
]
=
useState
<
any
>
({});
/** 需求对接 */
const
[
demand
,
setDemand
]
=
useState
<
any
>
({});
/** 附件 */
const
[
file
,
setfile
]
=
useState
<
any
>
([]);
const
[
badge
,
setbadge
]
=
useState
<
any
>
([
0
,
0
,
0
,
0
]);
const
[
loading
,
setLoading
]
=
useState
<
boolean
>
(
false
);
...
...
@@ -42,6 +45,7 @@ const AddForm = () => {
const
currentMaterial
=
useRef
<
any
>
({});
const
currentCondition
=
useRef
<
any
>
({});
const
currentDemand
=
useRef
<
any
>
({});
const
currentFile
=
useRef
<
any
>
({});
/** 提交&修改 */
const
handleSubmit
=
async
()
=>
{
...
...
@@ -50,7 +54,8 @@ const AddForm = () => {
const
materialRef
=
await
currentMaterial
.
current
.
get
();
const
conditionRef
=
await
currentCondition
.
current
.
get
();
const
demandRef
=
await
currentDemand
.
current
.
get
();
if
(
basicRef
.
state
&&
materialRef
.
state
&&
conditionRef
.
state
&&
demandRef
.
state
)
{
const
fileRef
=
await
currentFile
.
current
.
get
();
if
(
basicRef
.
state
&&
materialRef
.
state
&&
conditionRef
.
state
&&
demandRef
.
state
&&
fileRef
.
state
)
{
const
params
:
PostPurchasePurchaseInquiryAddRequest
=
{
memberId
,
memberRoleId
,
...
...
@@ -62,6 +67,7 @@ const AddForm = () => {
...
materialRef
.
data
,
...
conditionRef
.
data
,
...
demandRef
.
data
,
transactionUurls
:
fileRef
.
data
,
}
let
res
:
{
code
:
number
,
...
...
@@ -187,6 +193,12 @@ const AddForm = () => {
onBadge=
{
getError
}
/>
</
TabPane
>
<
TabPane
key=
'5'
tab=
'附件'
forceRender
>
<
File
fetchdata=
{
file
}
currentRef=
{
currentFile
}
/>
</
TabPane
>
</
Tabs
>
</
Card
>
</
PageHeaderWrapper
>
...
...
src/pages/transaction/purchaseAbility/purchaseInquiry/addInquiry/components/basic.tsx
View file @
d959bffa
...
...
@@ -194,10 +194,7 @@ const BasicInfo: React.FC<Iprops> = (props: any) => {
},
[])
useEffect
(()
=>
{
if
(
Object
.
keys
(
fetchdata
).
length
>
0
)
{
if
(
flag
)
{
setrequisitionFormAddress
([...
fetchdata
.
areas
]);
flag
=
false
;
}
fetchdata
.
areas
.
forEach
((
item
:
any
,
index
:
number
)
=>
{
PublicApi
.
getManageAreaByPcodeAll
({
pcode
:
item
.
provinceCode
}).
then
((
res
:
any
)
=>
{
if
(
res
.
code
===
1000
)
{
...
...
@@ -205,6 +202,8 @@ const BasicInfo: React.FC<Iprops> = (props: any) => {
citydata
:
res
.
data
}
city
[
index
]
=
{
...
citydata
}
Promise
.
resolve
().
then
(()
=>
{
setTimeout
(()
=>
{
setcity
([...
city
])
setcode
([...
code
,
item
.
cityCode
])
form
.
setFieldsValue
({
...
...
@@ -214,6 +213,8 @@ const BasicInfo: React.FC<Iprops> = (props: any) => {
[
'province_'
+
index
]:
item
.
provinceCode
,
[
'city_'
+
index
]:
item
.
cityCode
,
});
},
350
);
});
}
})
})
...
...
src/pages/transaction/purchaseAbility/purchaseInquiry/addInquiry/components/file.tsx
0 → 100644
View file @
d959bffa
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
Form
,
Button
,
Upload
,
message
}
from
'antd'
;
import
{
UPLOAD_TYPE
}
from
'@/constants'
import
styles
from
'./index.less'
;
import
{
UploadOutlined
,
DeleteOutlined
,
LinkOutlined
}
from
'@ant-design/icons'
;
const
layout
:
any
=
{
colon
:
false
,
labelCol
:
{
style
:
{
width
:
'174px'
}
},
wrapperCol
:
{
span
:
9
},
labelAlign
:
"left"
};
export
interface
IProps
{
fetchdata
:
any
,
currentRef
:
any
}
const
File
:
React
.
FC
<
IProps
>
=
(
props
)
=>
{
const
{
fetchdata
,
currentRef
}
=
props
;
const
[
form
]
=
Form
.
useForm
();
const
[
files
,
setFiles
]
=
useState
([]);
const
[
loading
,
setloading
]
=
useState
(
false
);
/**判断文件类型和大小 */
const
beforeDocUpload
=
(
file
:
any
)
=>
{
const
isLt20M
=
file
.
size
/
1024
/
1024
<
20
;
if
(
!
isLt20M
)
{
message
.
error
(
'上传文件大小不超过 20M!'
);
}
return
isLt20M
;
}
// 上传回调
const
handleChange
=
({
file
})
=>
{
const
arr
:
any
=
files
;
setloading
(
true
);
if
(
file
.
response
)
{
if
(
file
.
response
.
code
===
1000
)
{
arr
.
push
({
name
:
file
.
name
,
url
:
file
.
response
.
data
})
setloading
(
false
);
}
}
setFiles
([...
arr
])
}
// 删除附件
const
removeFiles
=
(
index
:
any
)
=>
{
const
arr
=
[...
files
];
arr
.
splice
(
index
,
1
);
setFiles
(
arr
);
}
// useEffect(() => {
// if (Object.keys(editData).length > 0) {
// setFiles(editData.enclosureUrls)
// }
// }, [editData])
useEffect
(()
=>
{
currentRef
.
current
=
{
get
:
()
=>
new
Promise
((
resolve
:
any
)
=>
{
form
.
validateFields
().
then
(
res
=>
{
resolve
({
state
:
true
,
name
:
'explain'
,
data
:
files
,
})
}).
catch
(
error
=>
{
if
(
error
&&
error
.
errorFields
)
{
}
})
})
}
})
return
(
<
Form
form=
{
form
}
{
...
layout
}
className=
{
styles
.
revise_style
}
>
<
Form
.
Item
label=
'附件'
name=
'upload'
>
<
div
className=
{
styles
.
upload_data
}
>
{
files
.
length
>
0
&&
files
.
map
((
v
,
index
)
=>
(
<
div
key=
{
index
}
className=
{
styles
.
upload_item
}
>
<
div
className=
{
styles
.
upload_left
}
>
<
LinkOutlined
/>
<
span
>
{
v
.
name
}
</
span
>
</
div
>
<
div
className=
{
styles
.
upload_right
}
onClick=
{
()
=>
removeFiles
(
index
)
}
>
<
DeleteOutlined
/>
</
div
>
</
div
>
))
}
</
div
>
<
Upload
action=
"/api/file/file/upload"
data=
{
{
fileType
:
UPLOAD_TYPE
}
}
showUploadList=
{
false
}
accept=
'.doc,.docx,.pdf,.ppt,.pptx,.xls,.xlsx'
beforeUpload=
{
beforeDocUpload
}
onChange=
{
handleChange
}
>
<
Button
loading=
{
loading
}
icon=
{
<
UploadOutlined
/>
}
>
上传文件
</
Button
>
<
div
style=
{
{
marginTop
:
'8px'
}
}
>
一次上传一个文件,每个附件大小不能超过 20M
</
div
>
</
Upload
>
</
Form
.
Item
>
</
Form
>
)
}
export
default
File
;
src/pages/transaction/purchaseAbility/purchaseInquiry/addInquiry/components/index.less
View file @
d959bffa
...
...
@@ -31,3 +31,76 @@
}
}
}
.revise_style {
:global {
.ant-form-item-label {
width: 174px;
label {
color:#6B778C
}
}
.ant-form-item-control {
width: 500px;
.ant-form-item-control-input-content {
position: relative;
.ant-btn-link {
position: absolute;
right: -120px;
}
.ant-picker {
width: 100%;
}
}
.ant-input-group-addon {
.ant-input-search-button {
background-color: #6B778C;
border-color: #6B778C;
}
}
}
.ant-radio-group-solid {
.ant-radio-button-wrapper-checked {
background: #6B778C;
border-color: #6B778C;
&:hover {
background: #6B778C;
border-color: #6B778C;
}
}
}
}
.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;
}
}
}
}
}
src/pages/transaction/purchaseAbility/purchaseInquiry/detail/index.tsx
View file @
d959bffa
...
...
@@ -54,7 +54,6 @@ const DemandDetailed = () => {
const
[
dataSource
,
setDataSource
]
=
useState
<
any
>
({});
const
[
basicEffect
,
setBasicEffect
]
=
useState
<
any
>
([]);
const
[
conditionEffect
,
setConditionEffect
]
=
useState
<
any
>
([]);
const
[
areas
,
setAreas
]
=
useState
<
any
>
([]);
const
[
storeList
,
setStoreList
]
=
useState
<
Array
<
any
>>
([]);
const
handleBasicEffect
=
(
data
:
any
)
=>
{
setBasicEffect
([
...
...
@@ -91,8 +90,8 @@ const DemandDetailed = () => {
{
label
:
'适用地市'
,
extra
:
(
<
div
>
{
areas
.
map
((
item
:
any
,
inde
x
:
number
)
=>
(
<
p
key=
{
`areas${i
ndex + 1}`
}
>
{
item
}
</
p
>
{
data
.
areas
.
map
((
it
:
any
,
id
x
:
number
)
=>
(
<
p
key=
{
`areas${i
dx + 1}`
}
>
{
`${it.province}/${it.city}`
}
</
p
>
))
}
</
div
>
)
...
...
@@ -144,13 +143,6 @@ const DemandDetailed = () => {
return
;
}
const
{
data
}
=
res
;
const
areas
:
string
[]
=
[];
if
(
data
.
areas
)
{
data
.
areas
.
forEach
(
item
=>
{
areas
.
push
(
`
${
item
.
province
}
/
${
item
.
city
}
`
)
})
setAreas
(
areas
);
}
if
(
data
.
shopIds
)
{
const
ids
=
data
.
shopIds
;
const
filterStore
=
shopList
.
filter
(
item
=>
ids
.
indexOf
(
item
.
id
)
!==
-
1
);
...
...
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