Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
jinfa-admin
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
shenshaokai
jinfa-admin
Commits
a7754ee3
Commit
a7754ee3
authored
Dec 31, 2020
by
XieZhiXiong
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' into test
parents
b4b621b1
7f97fee0
Show whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
705 additions
and
105 deletions
+705
-105
index.tsx
src/components/MellowCard/index.tsx
+1
-1
index.tsx
src/components/NiceForm/components/AntUpload/index.tsx
+292
-0
shared.tsx
src/components/NiceForm/components/AntUpload/shared.tsx
+126
-0
style.ts
src/components/NiceForm/components/AntUpload/style.ts
+2
-0
index.tsx
src/components/NiceForm/index.tsx
+2
-0
index.less
src/pages/comment/manage/index.less
+6
-0
index.tsx
src/pages/comment/manage/index.tsx
+4
-3
advertisementInfo.tsx
src/pages/content/advertisement/advertisementInfo.tsx
+42
-2
advertisementInfoSchema.tsx
.../content/advertisement/schema/advertisementInfoSchema.tsx
+17
-12
index.tsx
src/pages/content/advertisement/schema/index.tsx
+3
-2
utils.tsx
src/pages/content/utils/utils.tsx
+9
-2
index.tsx
src/pages/member/components/SincerityInfo/index.tsx
+4
-3
index.tsx
src/pages/member/memberLevel/schema/index.tsx
+1
-0
index.tsx
src/pages/member/memberMaintain/schema/index.tsx
+1
-0
auditSchema.ts
src/pages/member/schema/auditSchema.ts
+1
-0
index.tsx
src/pages/message/index.tsx
+24
-15
index.tsx
src/pages/orderSystem/index.tsx
+9
-9
index.tsx
src/pages/returnManage/components/DetailInfo/index.tsx
+4
-1
index.tsx
...ges/returnManage/components/RefundModal/Balance/index.tsx
+39
-20
index.tsx
...turnManage/components/RefundModal/UploadVoucher/index.tsx
+46
-11
index.tsx
src/pages/returnManage/components/RefundModal/index.tsx
+15
-4
index.tsx
src/pages/returnManage/components/ReturnDetailInfo/index.tsx
+45
-8
yarn.lock
yarn.lock
+12
-12
No files found.
src/components/MellowCard/index.tsx
View file @
a7754ee3
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Author: XieZhiXiong
* @Date: 2020-08-26 17:32:45
* @Date: 2020-08-26 17:32:45
* @LastEditors: XieZhiXiong
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-
09-29 14:47:49
* @LastEditTime: 2020-
12-29 15:06:05
* @Description: 基于 antd Card 封装的适合项目 UI 的 Card,使用方式跟 antd Card 一样,这里只是修改了样式
* @Description: 基于 antd Card 封装的适合项目 UI 的 Card,使用方式跟 antd Card 一样,这里只是修改了样式
*/
*/
import
React
from
'react'
;
import
React
from
'react'
;
...
...
src/components/NiceForm/components/AntUpload/index.tsx
0 → 100644
View file @
a7754ee3
import
React
from
'react'
import
{
connect
}
from
'@formily/react-schema-renderer'
import
{
Button
,
Upload
as
AntdUpload
}
from
'antd'
import
styled
from
'styled-components'
import
{
toArr
,
isArr
,
isEqual
,
mapStyledProps
}
from
'./shared'
import
{
LoadingOutlined
,
PlusOutlined
,
UploadOutlined
,
InboxOutlined
}
from
'@ant-design/icons'
const
{
Dragger
:
UploadDragger
}
=
AntdUpload
const
exts
=
[
{
ext
:
/
\.
docx
?
$/i
,
icon
:
'//img.alicdn.com/tfs/TB1n8jfr1uSBuNjy1XcXXcYjFXa-200-200.png'
},
{
ext
:
/
\.
pptx
?
$/i
,
icon
:
'//img.alicdn.com/tfs/TB1ItgWr_tYBeNjy1XdXXXXyVXa-200-200.png'
},
{
ext
:
/
\.
jpe
?
g$/i
,
icon
:
'//img.alicdn.com/tfs/TB1wrT5r9BYBeNjy0FeXXbnmFXa-200-200.png'
},
{
ext
:
/
\.
pdf$/i
,
icon
:
'//img.alicdn.com/tfs/TB1GwD8r9BYBeNjy0FeXXbnmFXa-200-200.png'
},
{
ext
:
/
\.
png$/i
,
icon
:
'//img.alicdn.com/tfs/TB1BHT5r9BYBeNjy0FeXXbnmFXa-200-200.png'
},
{
ext
:
/
\.
eps$/i
,
icon
:
'//img.alicdn.com/tfs/TB1G_iGrVOWBuNjy0FiXXXFxVXa-200-200.png'
},
{
ext
:
/
\.
ai$/i
,
icon
:
'//img.alicdn.com/tfs/TB1B2cVr_tYBeNjy1XdXXXXyVXa-200-200.png'
},
{
ext
:
/
\.
gif$/i
,
icon
:
'//img.alicdn.com/tfs/TB1DTiGrVOWBuNjy0FiXXXFxVXa-200-200.png'
},
{
ext
:
/
\.
svg$/i
,
icon
:
'//img.alicdn.com/tfs/TB1uUm9rY9YBuNjy0FgXXcxcXXa-200-200.png'
},
{
ext
:
/
\.
xlsx
?
$/i
,
icon
:
'//img.alicdn.com/tfs/TB1any1r1OSBuNjy0FdXXbDnVXa-200-200.png'
},
{
ext
:
/
\.
psd
?
$/i
,
icon
:
'//img.alicdn.com/tfs/TB1_nu1r1OSBuNjy0FdXXbDnVXa-200-200.png'
},
{
ext
:
/
\.(
wav|aif|aiff|au|mp1|mp2|mp3|ra|rm|ram|mid|rmi
)
$/i
,
icon
:
'//img.alicdn.com/tfs/TB1jPvwr49YBuNjy0FfXXXIsVXa-200-200.png'
},
{
ext
:
/
\.(
avi|wmv|mpg|mpeg|vob|dat|3gp|mp4|mkv|rm|rmvb|mov|flv
)
$/i
,
icon
:
'//img.alicdn.com/tfs/TB1FrT5r9BYBeNjy0FeXXbnmFXa-200-200.png'
},
{
ext
:
/
\.(
zip|rar|arj|z|gz|iso|jar|ace|tar|uue|dmg|pkg|lzh|cab
)
$/i
,
icon
:
'//img.alicdn.com/tfs/TB10jmfr29TBuNjy0FcXXbeiFXa-200-200.png'
},
{
ext
:
/
\.[^
.
]
+$/i
,
icon
:
'//img.alicdn.com/tfs/TB10.R4r3mTBuNjy1XbXXaMrVXa-200-200.png'
}
]
const
UploadPlaceholder
=
styled
(
props
=>
(
<
div
>
{
props
.
loading
?
<
LoadingOutlined
/>
:
<
PlusOutlined
/>
}
<
div
className=
{
'ant-upload-text'
}
>
上传
</
div
>
</
div
>
))
``
const
testOpts
=
(
ext
,
options
)
=>
{
if
(
options
&&
isArr
(
options
.
include
))
{
return
options
.
include
.
some
(
url
=>
ext
.
test
(
url
))
}
if
(
options
&&
isArr
(
options
.
exclude
))
{
return
!
options
.
exclude
.
some
(
url
=>
ext
.
test
(
url
))
}
return
true
}
const
getImageByUrl
=
(
url
,
options
)
=>
{
for
(
let
i
=
0
;
i
<
exts
.
length
;
i
++
)
{
if
(
exts
[
i
].
ext
.
test
(
url
)
&&
testOpts
(
exts
[
i
].
ext
,
options
))
{
return
exts
[
i
].
icon
||
url
}
}
return
url
}
const
normalizeFileList
=
fileList
=>
{
if
(
fileList
&&
fileList
.
length
)
{
return
fileList
.
map
(
file
=>
{
return
file
.
response
?
{
uid
:
file
.
uid
,
status
:
file
.
status
,
name
:
file
.
name
,
url
:
file
.
downloadURL
||
file
.
imgURL
||
file
.
url
,
...
file
.
response
,
thumbUrl
:
file
.
imgURL
||
getImageByUrl
(
file
.
downloadURL
||
file
.
url
,
{
exclude
:
[
'.png'
,
'.jpg'
,
'.jpeg'
,
'.gif'
]
})
}
:
file
;
})
}
return
[]
}
const
shallowClone
=
val
=>
{
let
result
=
isArr
(
val
)
?
[...
val
]
:
typeof
val
===
'object'
?
{
...
val
}
:
val
if
(
isArr
(
result
))
{
result
=
result
.
map
(
item
=>
({
...
item
,
// 必须要有一个不重复的uid
uid
:
item
.
uid
||
Math
.
random
()
.
toFixed
(
16
)
.
slice
(
2
,
10
)
}))
}
return
result
}
export
interface
IUploaderState
{
value
:
any
[]
}
// TODO 能不能直接引用 antd 里面的接口定义呢 ?
export
declare
type
UploadListType
=
'text'
|
'picture'
|
'picture-card'
export
interface
IUploaderProps
{
onChange
:
(
value
:
any
[])
=>
void
locale
:
{
[
name
:
string
]:
any
}
value
:
any
[]
listType
?:
UploadListType
}
export
const
Upload
=
connect
({
getProps
:
mapStyledProps
})(
class
Uploader
extends
React
.
Component
<
IUploaderProps
,
IUploaderState
>
{
public
static
defaultProps
=
{
action
:
'https://www.easy-mock.com/mock/5b713974309d0d7d107a74a3/alifd/upload'
,
listType
:
'text'
,
multiple
:
true
,
className
:
'antd-uploader'
}
readonly
state
:
IUploaderState
constructor
(
props
)
{
super
(
props
)
this
.
state
=
{
value
:
shallowClone
(
toArr
(
props
.
value
))
}
}
public
onRemoveHandler
=
file
=>
{
const
{
value
}
=
this
.
state
const
fileList
=
[]
value
.
forEach
(
item
=>
{
if
(
item
.
uid
!==
file
.
uid
)
{
fileList
.
push
(
item
)
}
})
this
.
props
.
onChange
(
fileList
)
}
public
onChangeHandler
=
({
fileList
})
=>
{
const
{
onChange
}
=
this
.
props
fileList
=
toArr
(
fileList
)
if
(
fileList
.
every
(
file
=>
{
if
(
file
.
status
===
'done'
||
file
.
imgURL
||
file
.
downloadURL
||
file
.
url
||
file
.
thumbUrl
)
return
true
if
(
file
.
response
)
{
if
(
file
.
response
.
imgURL
||
file
.
response
.
downloadURL
||
file
.
response
.
url
||
file
.
response
.
thumbUrl
)
return
true
}
return
false
})
&&
fileList
.
length
)
{
fileList
=
normalizeFileList
(
fileList
)
this
.
setState
(
{
value
:
fileList
},
()
=>
{
onChange
(
fileList
.
length
>
0
?
fileList
:
undefined
)
}
)
}
else
{
this
.
setState
({
value
:
fileList
})
}
}
public
componentDidUpdate
(
preProps
)
{
if
(
this
.
props
.
value
&&
!
isEqual
(
this
.
props
.
value
,
preProps
.
value
))
{
this
.
setState
({
value
:
shallowClone
(
this
.
props
.
value
)
})
}
}
public
render
()
{
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const
{
listType
,
locale
,
onChange
,
value
,
...
others
}
=
this
.
props
if
(
listType
.
indexOf
(
'card'
)
>
-
1
)
{
return
(
<
AntdUpload
{
...
others
}
fileList=
{
this
.
state
.
value
}
onChange=
{
this
.
onChangeHandler
}
onRemove=
{
this
.
onRemoveHandler
}
listType=
{
'picture-card'
}
>
<
UploadPlaceholder
/>
</
AntdUpload
>
)
}
if
(
listType
.
indexOf
(
'dragger'
)
>
-
1
)
{
return
(
<
UploadDragger
{
...
others
}
fileList=
{
this
.
state
.
value
}
onChange=
{
this
.
onChangeHandler
}
onRemove=
{
this
.
onRemoveHandler
}
// TODO image 类型是跟 picture 一样 ?
listType=
{
listType
.
indexOf
(
'image'
)
>
-
1
?
'picture'
:
'text'
}
>
<
p
className=
{
'ant-upload-drag-icon'
}
>
<
InboxOutlined
/>
</
p
>
<
p
className=
{
'ant-upload-text'
}
>
拖拽上传
</
p
>
</
UploadDragger
>
)
}
return
(
<
AntdUpload
{
...
others
}
fileList=
{
this
.
state
.
value
}
onChange=
{
this
.
onChangeHandler
}
onRemove=
{
this
.
onRemoveHandler
}
listType=
{
listType
}
>
<
Button
style=
{
{
margin
:
'0 0 10px'
}
}
>
<
UploadOutlined
/>
{
(
locale
&&
locale
.
uploadText
)
||
'上传文件'
}
</
Button
>
</
AntdUpload
>
)
}
}
)
export
default
Upload
src/components/NiceForm/components/AntUpload/shared.tsx
0 → 100644
View file @
a7754ee3
import
React
from
'react'
import
{
mapTextComponent
,
mapStyledProps
,
normalizeCol
}
from
'@formily/antd'
import
{
Select
as
AntSelect
}
from
'antd'
import
{
SelectProps
as
AntSelectProps
}
from
'antd/lib/select'
import
styled
from
'styled-components'
import
{
isArr
,
FormPath
}
from
'@formily/shared'
export
*
from
'@formily/shared'
export
const
compose
=
(...
args
:
any
[])
=>
{
return
(
payload
:
any
,
...
extra
:
any
[])
=>
{
return
args
.
reduce
((
buf
,
fn
)
=>
{
return
buf
!==
undefined
?
fn
(
buf
,
...
extra
)
:
fn
(
payload
,
...
extra
)
},
payload
)
}
}
interface
SelectOption
{
label
:
React
.
ReactText
value
:
any
[
key
:
string
]:
any
}
type
SelectProps
=
AntSelectProps
&
{
dataSource
?:
SelectOption
[]
}
const
createEnum
=
(
enums
:
any
)
=>
{
if
(
isArr
(
enums
))
{
return
enums
.
map
(
item
=>
{
if
(
typeof
item
===
'object'
)
{
return
{
...
item
}
}
else
{
return
{
label
:
item
,
value
:
item
}
}
})
}
return
[]
}
export
const
Select
:
React
.
FC
<
SelectProps
>
=
styled
((
props
:
SelectProps
)
=>
{
const
{
dataSource
=
[],
onChange
,
...
others
}
=
props
const
children
=
createEnum
(
dataSource
).
map
(
item
=>
{
const
{
label
,
value
,
...
others
}
=
item
return
(
<
AntSelect
.
Option
key=
{
value
}
{
...
others
}
title=
{
label
as
string
}
value=
{
value
}
>
{
label
}
</
AntSelect
.
Option
>
)
})
return
(
<
AntSelect
className=
{
props
.
className
}
{
...
others
}
onChange=
{
(
value
:
any
,
options
:
any
)
=>
{
onChange
(
value
,
isArr
(
options
)
?
options
.
map
(
item
=>
({
...
item
,
props
:
undefined
}))
:
{
...
options
,
props
:
undefined
//干掉循环引用
}
)
}
}
>
{
children
}
</
AntSelect
>
)
})
`
min-width: 100px;
width: 100%;
`
export
const
acceptEnum
=
(
component
:
React
.
JSXElementConstructor
<
any
>
)
=>
{
return
({
dataSource
,
...
others
})
=>
{
if
(
dataSource
)
{
return
React
.
createElement
(
Select
,
{
dataSource
,
...
others
})
}
else
{
return
React
.
createElement
(
component
,
others
)
}
}
}
export
const
transformDataSourceKey
=
(
component
,
dataSourceKey
)
=>
{
return
({
dataSource
,
...
others
})
=>
{
return
React
.
createElement
(
component
,
{
[
dataSourceKey
]:
dataSource
,
...
others
})
}
}
export
const
createMatchUpdate
=
(
name
:
string
,
path
:
string
)
=>
(
targetName
:
string
,
targetPath
:
string
,
callback
:
()
=>
void
)
=>
{
if
(
targetName
||
targetPath
)
{
if
(
targetName
)
{
if
(
FormPath
.
parse
(
targetName
).
matchAliasGroup
(
name
,
path
))
{
callback
()
}
}
else
if
(
targetPath
)
{
if
(
FormPath
.
parse
(
targetPath
).
matchAliasGroup
(
name
,
path
))
{
callback
()
}
}
}
else
{
callback
()
}
}
export
{
mapTextComponent
,
mapStyledProps
,
normalizeCol
}
src/components/NiceForm/components/AntUpload/style.ts
0 → 100644
View file @
a7754ee3
import
'antd/lib/upload/style/index'
\ No newline at end of file
src/components/NiceForm/index.tsx
View file @
a7754ee3
...
@@ -26,6 +26,7 @@ import { Checkbox } from '@formily/antd-components';
...
@@ -26,6 +26,7 @@ import { Checkbox } from '@formily/antd-components';
import
DateSelect
from
'./components/DateSelect'
;
import
DateSelect
from
'./components/DateSelect'
;
import
DateRangePickerUnix
from
'./components/DateRangePickerUnix'
;
import
DateRangePickerUnix
from
'./components/DateRangePickerUnix'
;
import
SmilingFace
from
'./components/SmilingFace'
;
import
SmilingFace
from
'./components/SmilingFace'
;
import
AntUpload
from
'./components/AntUpload'
;
import
'./index.less'
import
'./index.less'
export
interface
NiceFormProps
extends
IAntdSchemaFormProps
{}
export
interface
NiceFormProps
extends
IAntdSchemaFormProps
{}
...
@@ -96,6 +97,7 @@ export const componentExport = {
...
@@ -96,6 +97,7 @@ export const componentExport = {
DateSelect
,
DateSelect
,
DateRangePickerUnix
,
DateRangePickerUnix
,
SmilingFace
,
SmilingFace
,
AntUpload
,
}
}
const
NiceForm
:
React
.
FC
<
NiceFormProps
>
=
props
=>
{
const
NiceForm
:
React
.
FC
<
NiceFormProps
>
=
props
=>
{
const
{
children
,
components
,
...
reset
}
=
props
;
const
{
children
,
components
,
...
reset
}
=
props
;
...
...
src/pages/comment/manage/index.less
View file @
a7754ee3
@import '../../../global/styles/utils.less';
.productName {
.textOverflow();
}
\ No newline at end of file
src/pages/comment/manage/index.tsx
View file @
a7754ee3
import
React
,
{
useState
,
useRef
}
from
'react'
;
import
React
,
{
useState
,
useRef
}
from
'react'
;
import
{
Card
,
Rate
,
Button
,
Space
,
Modal
,
message
}
from
'antd'
;
import
{
Card
,
Rate
,
Button
,
Space
,
Modal
,
message
,
Tooltip
}
from
'antd'
;
import
{
ClockCircleOutlined
,
QuestionCircleOutlined
}
from
'@ant-design/icons'
;
import
{
ClockCircleOutlined
,
QuestionCircleOutlined
}
from
'@ant-design/icons'
;
import
{
Link
}
from
'umi'
;
import
{
Link
}
from
'umi'
;
import
{
StandardTable
}
from
'god'
;
import
{
StandardTable
}
from
'god'
;
...
@@ -61,10 +61,11 @@ const CommentManage: React.FC = () => {
...
@@ -61,10 +61,11 @@ const CommentManage: React.FC = () => {
dataIndex
:
'product'
,
dataIndex
:
'product'
,
align
:
'center'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
{
render
:
(
text
,
record
)
=>
{
const
product
=
isJSONStr
(
text
)
||
{};
return
(
return
(
<>
<>
<
div
>
{
product
.
productName
}
</
div
>
<
Tooltip
title=
{
text
}
>
<
div
className=
{
styles
.
productName
}
>
{
text
}
</
div
>
</
Tooltip
>
<
div
<
div
style=
{
{
style=
{
{
marginTop
:
4
,
marginTop
:
4
,
...
...
src/pages/content/advertisement/advertisementInfo.tsx
View file @
a7754ee3
...
@@ -3,8 +3,8 @@ import { PageHeaderWrapper } from "@ant-design/pro-layout";
...
@@ -3,8 +3,8 @@ import { PageHeaderWrapper } from "@ant-design/pro-layout";
import
ReutrnEle
from
'@/components/ReturnEle'
;
import
ReutrnEle
from
'@/components/ReturnEle'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
history
,
Prompt
}
from
'umi'
;
import
{
history
,
Prompt
}
from
'umi'
;
import
{
Card
,
Modal
}
from
'antd'
;
import
{
Card
}
from
'antd'
;
import
{
SchemaForm
,
createFormActions
,
FormButtonGroup
,
Submit
,
Reset
}
from
'@formily/antd'
import
{
SchemaForm
,
createFormActions
,
FormButtonGroup
,
Submit
,
FormEffectHooks
}
from
'@formily/antd'
import
advertisementInfoSchema
from
'./schema/advertisementInfoSchema'
;
import
advertisementInfoSchema
from
'./schema/advertisementInfoSchema'
;
import
{
Input
,
Select
,
Button
}
from
'antd'
;
import
{
Input
,
Select
,
Button
}
from
'antd'
;
// import CustomUpload from '@/components/NiceForm/components/CustomUpload';
// import CustomUpload from '@/components/NiceForm/components/CustomUpload';
...
@@ -12,8 +12,28 @@ import { PublicApi } from '@/services/api';
...
@@ -12,8 +12,28 @@ import { PublicApi } from '@/services/api';
import
{
useInitialValues
}
from
'../hooks/useInitialValues'
;
import
{
useInitialValues
}
from
'../hooks/useInitialValues'
;
import
CustomUpload
from
'../components/WrapCustomUpload'
;
import
CustomUpload
from
'../components/WrapCustomUpload'
;
import
useCustomValidator
from
'../hooks/useValidator'
import
useCustomValidator
from
'../hooks/useValidator'
import
{
sortedList
,
ADVERTISE_WEB_COLUMN_TYPE
,
ADVERTISE_APP_COLUMN_TYPE
}
from
'../utils/utils'
;
enum
ChannelEnum
{
WEB
=
1
,
APP
=
2
,
}
const
WEB_COLUMN_TYPE
=
Object
.
keys
(
ADVERTISE_WEB_COLUMN_TYPE
).
map
((
item
)
=>
{
return
{
label
:
ADVERTISE_WEB_COLUMN_TYPE
[
item
],
value
:
parseInt
(
item
)
}
})
const
APP_COLUMN_TYPE
=
Object
.
keys
(
ADVERTISE_APP_COLUMN_TYPE
).
map
((
item
)
=>
{
return
{
label
:
ADVERTISE_APP_COLUMN_TYPE
[
item
],
value
:
parseInt
(
item
)
}
})
const
actions
=
createFormActions
();
const
actions
=
createFormActions
();
const
{
onFieldValueChange$
}
=
FormEffectHooks
;
const
AdvertisementInfo
=
()
=>
{
const
AdvertisementInfo
=
()
=>
{
useCustomValidator
()
useCustomValidator
()
...
@@ -44,6 +64,25 @@ const AdvertisementInfo = () => {
...
@@ -44,6 +64,25 @@ const AdvertisementInfo = () => {
})
})
}
}
const
formEffects
=
()
=>
()
=>
{
onFieldValueChange$
(
'channel'
).
subscribe
(
fieldState
=>
{
const
isActive
=
fieldState
.
active
;
let
options
:
{
label
:
string
,
value
:
number
|
string
}[]
=
[]
if
(
fieldState
.
value
===
ChannelEnum
.
WEB
)
{
options
=
WEB_COLUMN_TYPE
}
else
{
options
=
APP_COLUMN_TYPE
}
actions
.
setFieldState
(
'columnType'
,
(
state
)
=>
{
state
.
props
[
"x-component-props"
][
"options"
]
=
options
;
if
(
isActive
)
{
state
.
value
=
""
;
}
})
})
}
const
handleCancel
=
()
=>
{
const
handleCancel
=
()
=>
{
history
.
push
(
'/content/advertisement'
)
history
.
push
(
'/content/advertisement'
)
}
}
...
@@ -64,6 +103,7 @@ const AdvertisementInfo = () => {
...
@@ -64,6 +103,7 @@ const AdvertisementInfo = () => {
initialValues=
{
initialValues
?.
data
}
initialValues=
{
initialValues
?.
data
}
onSubmit=
{
handleSubmit
}
onSubmit=
{
handleSubmit
}
editable=
{
isAdd
||
isEdit
}
editable=
{
isAdd
||
isEdit
}
effects=
{
formEffects
()
}
expressionScope=
{
{
expressionScope=
{
{
label
:
(
label
:
(
<
div
>
<
div
>
...
...
src/pages/content/advertisement/schema/advertisementInfoSchema.tsx
View file @
a7754ee3
import
{
sortedList
,
ADVERTISE_COLUMN_TYPE
}
from
'../../utils/utils'
;
import
{
sortedList
,
}
from
'../../utils/utils'
;
const
columnType
=
(()
=>
{
const
res
=
Object
.
keys
(
ADVERTISE_COLUMN_TYPE
).
map
((
item
)
=>
{
return
{
label
:
ADVERTISE_COLUMN_TYPE
[
item
],
value
:
parseInt
(
item
)
}
})
return
res
;
})()
const
sortListOptions
=
sortedList
(
1
,
6
);
const
sortListOptions
=
sortedList
(
1
,
6
);
...
@@ -42,12 +32,27 @@ const schema = {
...
@@ -42,12 +32,27 @@ const schema = {
}
}
]
]
},
},
channel
:
{
title
:
'投放渠道'
,
type
:
'string'
,
"x-component"
:
'Select'
,
'x-component-props'
:
{
options
:
[
{
label
:
'Web'
,
value
:
1
},
{
label
:
'App'
,
value
:
2
},
],
},
"x-rules"
:
[{
"required"
:
true
,
"message"
:
"请选择投放渠道"
}],
},
columnType
:
{
columnType
:
{
title
:
'栏目'
,
title
:
'栏目'
,
type
:
'string'
,
type
:
'string'
,
'x-component'
:
'Select'
,
'x-component'
:
'Select'
,
'x-component-props'
:
{
'x-component-props'
:
{
options
:
columnType
options
:
[]
},
},
"x-rules"
:
[{
"x-rules"
:
[{
"required"
:
true
,
"required"
:
true
,
...
...
src/pages/content/advertisement/schema/index.tsx
View file @
a7754ee3
...
@@ -3,7 +3,8 @@ import { DownOutlined } from '@ant-design/icons';
...
@@ -3,7 +3,8 @@ import { DownOutlined } from '@ant-design/icons';
import
{
TimeList
}
from
'../../statusList'
;
import
{
TimeList
}
from
'../../statusList'
;
import
moment
from
'moment'
;
import
moment
from
'moment'
;
import
React
from
'react'
;
import
React
from
'react'
;
import
{
ADVERTISE_COLUMN_TYPE
}
from
'../../utils/utils'
;
import
{
ADVERTISE_WEB_COLUMN_TYPE
,
ADVERTISE_APP_COLUMN_TYPE
}
from
'../../utils/utils'
;
const
ALL_TYPE
=
Object
.
assign
({},
ADVERTISE_WEB_COLUMN_TYPE
,
ADVERTISE_APP_COLUMN_TYPE
);
const
CustomTimeList
=
[{
label
:
'全部'
,
value
:
0
}].
concat
(
TimeList
.
slice
(
1
));
const
CustomTimeList
=
[{
label
:
'全部'
,
value
:
0
}].
concat
(
TimeList
.
slice
(
1
));
...
@@ -23,7 +24,7 @@ const columns = [
...
@@ -23,7 +24,7 @@ const columns = [
title
:
'栏目'
,
dataIndex
:
'columnType'
,
title
:
'栏目'
,
dataIndex
:
'columnType'
,
render
:
(
text
,
record
)
=>
{
render
:
(
text
,
record
)
=>
{
return
(
return
(
<
div
>
{
A
DVERTISE_COLUMN
_TYPE
[
text
]
}
</
div
>
<
div
>
{
A
LL
_TYPE
[
text
]
}
</
div
>
)
)
},
},
},
},
...
...
src/pages/content/utils/utils.tsx
View file @
a7754ee3
...
@@ -56,12 +56,17 @@ const sortedList = (start, end) => {
...
@@ -56,12 +56,17 @@ const sortedList = (start, end) => {
}
}
// 内容管理 - 广告栏目
// 内容管理 - 广告栏目
const
ADVERTISE_COLUMN_TYPE
=
{
const
ADVERTISE_
WEB_
COLUMN_TYPE
=
{
"1"
:
"会员首页-活动广告1"
,
"1"
:
"会员首页-活动广告1"
,
"2"
:
"会员首页-活动广告2"
,
"2"
:
"会员首页-活动广告2"
,
"3"
:
"会员首页-活动广告3"
"3"
:
"会员首页-活动广告3"
}
}
const
ADVERTISE_APP_COLUMN_TYPE
=
{
"4"
:
'找店铺广告图'
,
"5"
:
"人气店铺广告图"
}
// 内容管理 - 公告栏目
// 内容管理 - 公告栏目
const
ANNOUNCE_COLUMN_TYPE
=
{
const
ANNOUNCE_COLUMN_TYPE
=
{
'1'
:
'会员首页公告'
,
'1'
:
'会员首页公告'
,
...
@@ -101,7 +106,9 @@ export {
...
@@ -101,7 +106,9 @@ export {
setTableDataSource
,
setTableDataSource
,
getTableDataSource
,
getTableDataSource
,
sortedList
,
sortedList
,
ADVERTISE_COLUMN_TYPE
,
ADVERTISE_WEB_COLUMN_TYPE
,
ADVERTISE_APP_COLUMN_TYPE
,
// ADVERTISE_COLUMN_TYPE,
ANNOUNCE_COLUMN_TYPE
,
ANNOUNCE_COLUMN_TYPE
,
transfer2Options
,
transfer2Options
,
SCENE
,
SCENE
,
...
...
src/pages/member/components/SincerityInfo/index.tsx
View file @
a7754ee3
...
@@ -550,9 +550,10 @@ const SincerityInfo: React.FC<SincerityInfoProps> = ({
...
@@ -550,9 +550,10 @@ const SincerityInfo: React.FC<SincerityInfoProps> = ({
<
Col
span=
{
24
}
>
<
Col
span=
{
24
}
>
<
Spin
spinning=
{
Boolean
(
basicInfo
.
loading
)
}
>
<
Spin
spinning=
{
Boolean
(
basicInfo
.
loading
)
}
>
<
Row
gutter=
{
24
}
>
<
Row
gutter=
{
24
}
>
<
Col
span=
{
8
}
>
<
Col
flex=
"386px"
>
<
MellowCard
<
MellowCard
title=
"信用积分"
title=
"信用积分"
fullHeight
>
>
<
Pie
<
Pie
hasLegend
hasLegend
...
@@ -566,9 +567,9 @@ const SincerityInfo: React.FC<SincerityInfoProps> = ({
...
@@ -566,9 +567,9 @@ const SincerityInfo: React.FC<SincerityInfoProps> = ({
</
Col
>
</
Col
>
{
basicInfo
.
loading
===
false
&&
(
{
basicInfo
.
loading
===
false
&&
(
<
Col
span=
{
16
}
>
<
Col
flex=
"1"
>
<
div
className=
{
styles
.
tofo
}
>
<
div
className=
{
styles
.
tofo
}
>
<
MellowCard
>
<
MellowCard
fullHeight
>
{
integralItems
.
map
((
item
,
index
)
=>
(
{
integralItems
.
map
((
item
,
index
)
=>
(
<
Card
.
Grid
key=
{
item
.
id
}
className=
{
styles
[
'tofo-item'
]
}
>
<
Card
.
Grid
key=
{
item
.
id
}
className=
{
styles
[
'tofo-item'
]
}
>
<
ContentBox
<
ContentBox
...
...
src/pages/member/memberLevel/schema/index.tsx
View file @
a7754ee3
...
@@ -20,6 +20,7 @@ export const levelSchema: ISchema = {
...
@@ -20,6 +20,7 @@ export const levelSchema: ISchema = {
'x-component'
:
'Search'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
'x-component-props'
:
{
placeholder
:
'搜索'
,
placeholder
:
'搜索'
,
tip
:
'输入 会员等级标签 进行搜索'
,
},
},
},
},
},
},
...
...
src/pages/member/memberMaintain/schema/index.tsx
View file @
a7754ee3
...
@@ -29,6 +29,7 @@ export const importSchema: ISchema = {
...
@@ -29,6 +29,7 @@ export const importSchema: ISchema = {
'x-component'
:
'Search'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
'x-component-props'
:
{
placeholder
:
'搜索'
,
placeholder
:
'搜索'
,
tip
:
'输入 会员名称 进行搜索'
,
},
},
},
},
},
},
...
...
src/pages/member/schema/auditSchema.ts
View file @
a7754ee3
...
@@ -27,6 +27,7 @@ export const auditSchema: ISchema = {
...
@@ -27,6 +27,7 @@ export const auditSchema: ISchema = {
'x-component'
:
'Search'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
'x-component-props'
:
{
placeholder
:
'搜索'
,
placeholder
:
'搜索'
,
tip
:
'输入 会员名称 进行搜索'
,
},
},
},
},
},
},
...
...
src/pages/message/index.tsx
View file @
a7754ee3
...
@@ -36,24 +36,33 @@ const Message: React.FC<{}> = () => {
...
@@ -36,24 +36,33 @@ const Message: React.FC<{}> = () => {
}
}
const
handleRead
=
(
id
,
url
:
string
)
=>
{
const
handleRead
=
(
id
,
url
:
string
)
=>
{
console
.
log
(
"当前功能还未开发"
)
PublicApi
.
postReportMessagePlatformRead
({
id
:
id
})
// PublicApi.getReportMessageMemberRead({id: id})
.
then
((
data
)
=>
{
// .then((data) => {
if
(
url
)
{
// if(url) {
if
(
/http/
.
test
(
url
))
{
// if(/http/.test(url)) {
location
.
href
=
url
// location.href = url
}
else
{
// } else {
history
.
push
(
url
);
// history.push(url);
}
// }
return
;
// } else {
}
// getList(pagination);
if
(
data
.
code
===
1000
)
{
// }
getList
(
pagination
)
// })
}
})
}
const
handleAllMessageRead
=
()
=>
{
PublicApi
.
postReportMessagePlatformReadAll
()
.
then
(({
code
,
data
})
=>
{
if
(
code
===
1000
)
{
getList
(
pagination
);
}
})
}
}
const
renderMessage
=
(
data
)
=>
{
const
renderMessage
=
(
data
)
=>
{
return
(
return
(
<
div
onClick=
{
()
=>
handleRead
(
data
.
id
,
data
.
url
)
}
>
<
div
onClick=
{
()
=>
handleRead
(
data
.
id
,
data
.
url
)
}
style=
{
{
cursor
:
"pointer"
}
}
>
<
StatusTag
type=
{
data
.
type
==
1
?
'primary'
:
'success'
}
title=
{
data
.
type
===
1
?
'系统消息'
:
'平台消息'
}
/>
<
StatusTag
type=
{
data
.
type
==
1
?
'primary'
:
'success'
}
title=
{
data
.
type
===
1
?
'系统消息'
:
'平台消息'
}
/>
<
span
className=
{
styles
.
messageTitle
}
>
{
data
.
title
||
''
}
</
span
>
<
span
className=
{
styles
.
messageTitle
}
>
{
data
.
title
||
''
}
</
span
>
<
span
className=
{
styles
.
messageText
}
>
{
data
.
content
||
''
}
</
span
>
<
span
className=
{
styles
.
messageText
}
>
{
data
.
content
||
''
}
</
span
>
...
@@ -69,7 +78,7 @@ const Message: React.FC<{}> = () => {
...
@@ -69,7 +78,7 @@ const Message: React.FC<{}> = () => {
<
Card
>
<
Card
>
<
div
className=
{
styles
.
header
}
>
<
div
className=
{
styles
.
header
}
>
<
Button
type=
"primary"
icon=
{
<
PlusOutlined
/>
}
onClick=
{
()
=>
history
.
push
(
'/message/messageList/add'
)
}
>
新建
</
Button
>
<
Button
type=
"primary"
icon=
{
<
PlusOutlined
/>
}
onClick=
{
()
=>
history
.
push
(
'/message/messageList/add'
)
}
>
新建
</
Button
>
<
Button
type=
"link"
>
全部已读
</
Button
>
<
Button
type=
"link"
onClick=
{
handleAllMessageRead
}
>
全部已读
</
Button
>
</
div
>
</
div
>
<
List
<
List
itemLayout=
"horizontal"
itemLayout=
"horizontal"
...
...
src/pages/orderSystem/index.tsx
View file @
a7754ee3
...
@@ -186,15 +186,15 @@ export const baseOrderListColumns: any[] = [
...
@@ -186,15 +186,15 @@ export const baseOrderListColumns: any[] = [
filters
:
Object
.
entries
(
PurchaseOrderOutWorkStateTexts
).
map
(([
key
,
value
])
=>
({
text
:
value
,
value
:
Number
(
key
)})),
filters
:
Object
.
entries
(
PurchaseOrderOutWorkStateTexts
).
map
(([
key
,
value
])
=>
({
text
:
value
,
value
:
Number
(
key
)})),
onFilter
:
(
value
,
record
)
=>
value
===
record
.
externalState
,
onFilter
:
(
value
,
record
)
=>
value
===
record
.
externalState
,
},
},
{
//
{
title
:
'内部状态'
,
//
title: '内部状态',
align
:
'center'
,
//
align: 'center',
dataIndex
:
'interiorState'
,
//
dataIndex: 'interiorState',
key
:
'interiorState'
,
//
key: 'interiorState',
render
:
(
text
)
=>
<
StatusColors
status=
{
text
}
type=
'inside'
/>,
//
render: (text) => <StatusColors status={text} type='inside'/>,
filters
:
Object
.
entries
(
PurchaseOrderInsideWorkStateTexts
).
map
(([
key
,
value
])
=>
({
text
:
value
,
value
:
Number
(
key
)})),
//
filters: Object.entries(PurchaseOrderInsideWorkStateTexts).map(([key, value]) => ({text: value, value: Number(key)})),
onFilter
:
(
value
,
record
)
=>
value
===
record
.
interiorState
,
//
onFilter: (value, record) => value === record.interiorState,
},
//
},
]
]
// 销售订单查询
// 销售订单查询
...
...
src/pages/returnManage/components/DetailInfo/index.tsx
View file @
a7754ee3
...
@@ -282,7 +282,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({
...
@@ -282,7 +282,7 @@ const DetailInfo: React.FC<DetailInfoProps> = ({
// 退款
// 退款
const
handleRefund
=
(
values
):
Promise
<
any
>
=>
{
const
handleRefund
=
(
values
):
Promise
<
any
>
=>
{
const
{
id
,
...
rest
}
=
values
;
const
{
id
,
refundAmount
,
...
rest
}
=
values
;
return
PublicApi
.
postAsReturnGoodsRefund
({
return
PublicApi
.
postAsReturnGoodsRefund
({
dataId
:
id
,
dataId
:
id
,
...
rest
,
...
rest
,
...
@@ -400,6 +400,9 @@ const DetailInfo: React.FC<DetailInfoProps> = ({
...
@@ -400,6 +400,9 @@ const DetailInfo: React.FC<DetailInfoProps> = ({
dataSource=
{
detailInfo
&&
detailInfo
.
refundList
?
detailInfo
.
refundList
:
[]
}
dataSource=
{
detailInfo
&&
detailInfo
.
refundList
?
detailInfo
.
refundList
:
[]
}
onRefund=
{
handleRefund
}
onRefund=
{
handleRefund
}
isPurchaser=
{
isPurchaser
}
isPurchaser=
{
isPurchaser
}
innerStatus=
{
detailInfo
?.
innerStatus
}
purchaserId=
{
detailInfo
?.
memberId
}
purchaserRoleId=
{
detailInfo
?.
roleId
}
/>
/>
</
Suspense
>
</
Suspense
>
</
Col
>
</
Col
>
...
...
src/pages/returnManage/components/RefundModal/Balance/index.tsx
View file @
a7754ee3
import
React
,
{
useState
}
from
'react'
;
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
Descriptions
,
Space
,
Button
}
from
'antd'
;
import
{
Descriptions
,
Space
,
Button
,
Spin
}
from
'antd'
;
import
{
PublicApi
}
from
'@/services/api'
;
interface
bankAccount
{
id
:
number
,
name
:
string
,
bankAccount
:
string
,
bankDeposit
:
string
,
memberId
:
number
,
};
interface
BalanceProps
{
interface
BalanceProps
{
/**
/**
...
@@ -26,6 +19,14 @@ interface BalanceProps {
...
@@ -26,6 +19,14 @@ interface BalanceProps {
* 弹窗提交 loading
* 弹窗提交 loading
*/
*/
submitLoading
:
boolean
;
submitLoading
:
boolean
;
/**
* 采购商id
*/
purchaserId
:
number
,
/**
* 采购商角色id
*/
purchaserRoleId
:
number
,
};
};
const
Balance
:
React
.
FC
<
BalanceProps
>
=
({
const
Balance
:
React
.
FC
<
BalanceProps
>
=
({
...
@@ -33,21 +34,39 @@ const Balance: React.FC<BalanceProps> = ({
...
@@ -33,21 +34,39 @@ const Balance: React.FC<BalanceProps> = ({
handleConfirm
,
handleConfirm
,
value
,
value
,
submitLoading
,
submitLoading
,
purchaserId
,
purchaserRoleId
,
})
=>
{
})
=>
{
const
[
bankAccount
,
setBankAccount
]
=
useState
<
bankAccount
>
({
const
[
balance
,
setBalance
]
=
useState
(
0
);
id
:
0
,
const
[
loading
,
setLoading
]
=
useState
(
false
);
name
:
''
,
bankAccount
:
''
,
const
getPayAssetAccountGetUserBalance
=
()
=>
{
bankDeposit
:
''
,
if
(
!
purchaserId
||
!
purchaserRoleId
)
{
memberId
:
0
,
return
;
}
setLoading
(
true
);
PublicApi
.
getPayAssetAccountGetChildUserBalance
({
childMemberId
:
`
${
purchaserId
}
`
,
childMemberRoleId
:
`
${
purchaserRoleId
}
`
,
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setBalance
(
res
.
data
);
}
}).
finally
(()
=>
{
setLoading
(
false
);
});
});
};
useEffect
(()
=>
{
getPayAssetAccountGetUserBalance
();
},
[]);
return
(
return
(
<
>
<
Spin
spinning=
{
loading
}
>
<
Descriptions
title=
"账户余额信息"
column=
{
1
}
>
<
Descriptions
title=
"账户余额信息"
column=
{
1
}
>
<
Descriptions
.
Item
label=
"账户可用余额"
>
¥
500000.00
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"账户可用余额"
>
¥
{
balance
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"当前退款金额"
>
<
Descriptions
.
Item
label=
"当前退款金额"
>
<
span
style=
{
{
color
:
'#EF6260'
}
}
>
¥
6000.00
</
span
>
<
span
style=
{
{
color
:
'#EF6260'
}
}
>
¥
{
value
.
refundAmount
}
</
span
>
</
Descriptions
.
Item
>
</
Descriptions
.
Item
>
</
Descriptions
>
</
Descriptions
>
...
@@ -65,7 +84,7 @@ const Balance: React.FC<BalanceProps> = ({
...
@@ -65,7 +84,7 @@ const Balance: React.FC<BalanceProps> = ({
</
Button
>
</
Button
>
</
Space
>
</
Space
>
</
div
>
</
div
>
</
>
</
Spin
>
)
)
};
};
...
...
src/pages/returnManage/components/RefundModal/UploadVoucher/index.tsx
View file @
a7754ee3
import
React
,
{
useState
}
from
'react'
;
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
Button
,
Space
,
message
}
from
'antd'
;
import
{
Button
,
Space
,
message
,
Spin
}
from
'antd'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
uploadVoucherModalSchema
}
from
'./schema'
;
import
{
uploadVoucherModalSchema
}
from
'./schema'
;
const
uploadVoucherFormActions
=
createFormActions
();
const
uploadVoucherFormActions
=
createFormActions
();
interface
bankAccount
{
interface
BankAccount
{
name
:
string
,
name
:
string
,
bankAccount
:
string
,
bankAccount
:
string
,
bankDeposit
:
string
,
bankDeposit
:
string
,
id
:
number
,
};
};
interface
UploadVoucherProps
{
interface
UploadVoucherProps
{
...
@@ -29,6 +31,14 @@ interface UploadVoucherProps {
...
@@ -29,6 +31,14 @@ interface UploadVoucherProps {
* 弹窗提交 loading
* 弹窗提交 loading
*/
*/
submitLoading
:
boolean
;
submitLoading
:
boolean
;
/**
* 采购商id
*/
purchaserId
:
number
,
/**
* 采购商角色id
*/
purchaserRoleId
:
number
,
};
};
const
UploadVoucher
:
React
.
FC
<
UploadVoucherProps
>
=
({
const
UploadVoucher
:
React
.
FC
<
UploadVoucherProps
>
=
({
...
@@ -36,15 +46,40 @@ const UploadVoucher: React.FC<UploadVoucherProps> = ({
...
@@ -36,15 +46,40 @@ const UploadVoucher: React.FC<UploadVoucherProps> = ({
handleModalVisible
,
handleModalVisible
,
value
,
value
,
submitLoading
,
submitLoading
,
purchaserId
,
purchaserRoleId
,
})
=>
{
})
=>
{
const
[
bankAccount
,
setBankAccount
]
=
useState
<
bankAccount
>
({
const
[
bankAccount
,
setBankAccount
]
=
useState
<
BankAccount
>
({
name
:
''
,
name
:
''
,
bankAccount
:
''
,
bankAccount
:
''
,
bankDeposit
:
''
,
bankDeposit
:
''
,
id
:
0
,
});
});
const
[
loading
,
setLoading
]
=
useState
(
false
);
// 获取对公账户信息
const
getSettleAccountsGetMemberAccountConfig
=
()
=>
{
if
(
!
purchaserId
||
!
purchaserRoleId
)
{
return
;
}
setLoading
(
true
);
PublicApi
.
getSettleAccountsGetMemberAccountConfig
({
memberId
:
`
${
purchaserId
}
`
,
roleId
:
`
${
purchaserRoleId
}
`
,
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setBankAccount
(
res
.
data
);
}
}).
finally
(()
=>
{
setLoading
(
false
);
});
};
useEffect
(()
=>
{
getSettleAccountsGetMemberAccountConfig
();
},
[]);
const
beforeUploadVoucher
=
file
=>
{
const
beforeUploadVoucher
=
file
=>
{
console
.
log
(
file
.
size
)
if
(
file
.
size
/
1024
>
200
)
{
if
(
file
.
size
/
1024
>
200
)
{
message
.
warning
(
'图片大小超过200K'
);
message
.
warning
(
'图片大小超过200K'
);
return
Promise
.
reject
();
return
Promise
.
reject
();
...
@@ -52,17 +87,17 @@ const UploadVoucher: React.FC<UploadVoucherProps> = ({
...
@@ -52,17 +87,17 @@ const UploadVoucher: React.FC<UploadVoucherProps> = ({
};
};
const
handleUploadVoucherSubmit
=
values
=>
{
const
handleUploadVoucherSubmit
=
values
=>
{
const
{
fileList
=
[]
}
=
values
;
const
{
fileList
=
[]
,
id
,
...
rest
}
=
values
;
if
(
handleConfirm
)
{
if
(
handleConfirm
)
{
if
(
!
bankAccount
||
!
bankAccount
.
name
)
{
if
(
!
bankAccount
||
!
bankAccount
.
id
)
{
message
.
error
(
'没有收款账户相关信息,无法退款'
);
message
.
error
(
'没有收款账户相关信息,无法退款'
);
return
;
return
;
}
}
handleConfirm
({
handleConfirm
({
...
value
,
...
value
,
payProve
:
{
payProve
:
{
...
values
,
...
rest
,
fileList
:
fileList
.
map
(
item
=>
item
.
status
===
'done'
&&
({
fileList
:
fileList
.
map
(
item
=>
item
.
status
===
'done'
&&
({
name
:
item
.
name
,
name
:
item
.
name
,
proveUrl
:
item
.
data
.
url
,
proveUrl
:
item
.
data
.
url
,
...
@@ -73,10 +108,10 @@ const UploadVoucher: React.FC<UploadVoucherProps> = ({
...
@@ -73,10 +108,10 @@ const UploadVoucher: React.FC<UploadVoucherProps> = ({
};
};
return
(
return
(
<
>
<
Spin
spinning=
{
loading
}
>
<
NiceForm
<
NiceForm
previewPlaceholder=
""
previewPlaceholder=
""
initialValues=
{
bankAccount
}
value=
{
bankAccount
}
effects=
{
(
$
,
{
setFieldState
})
=>
{
effects=
{
(
$
,
{
setFieldState
})
=>
{
}
}
}
}
...
@@ -102,7 +137,7 @@ const UploadVoucher: React.FC<UploadVoucherProps> = ({
...
@@ -102,7 +137,7 @@ const UploadVoucher: React.FC<UploadVoucherProps> = ({
</
Button
>
</
Button
>
</
Space
>
</
Space
>
</
div
>
</
div
>
</
>
</
Spin
>
)
)
};
};
...
...
src/pages/returnManage/components/RefundModal/index.tsx
View file @
a7754ee3
...
@@ -41,6 +41,13 @@ const RefundModal: React.FC<RefundModalProps> = ({
...
@@ -41,6 +41,13 @@ const RefundModal: React.FC<RefundModalProps> = ({
value
,
value
,
submitLoading
,
submitLoading
,
})
=>
{
})
=>
{
const
{
purchaserId
,
purchaserRoleId
,
supplierId
,
supplierRoleId
,
...
rest
}
=
value
;
const
tempMap
=
{
const
tempMap
=
{
uploadVoucher
:
{
uploadVoucher
:
{
...
@@ -49,7 +56,9 @@ const RefundModal: React.FC<RefundModalProps> = ({
...
@@ -49,7 +56,9 @@ const RefundModal: React.FC<RefundModalProps> = ({
render
:
()
=>
(
render
:
()
=>
(
<
Suspense
fallback=
{
null
}
>
<
Suspense
fallback=
{
null
}
>
<
UploadVoucher
<
UploadVoucher
value=
{
value
}
value=
{
rest
}
purchaserId=
{
purchaserId
}
purchaserRoleId=
{
purchaserRoleId
}
handleConfirm=
{
handleConfirm
}
handleConfirm=
{
handleConfirm
}
handleModalVisible=
{
handleModalVisible
}
handleModalVisible=
{
handleModalVisible
}
submitLoading=
{
submitLoading
}
submitLoading=
{
submitLoading
}
...
@@ -63,7 +72,9 @@ const RefundModal: React.FC<RefundModalProps> = ({
...
@@ -63,7 +72,9 @@ const RefundModal: React.FC<RefundModalProps> = ({
render
:
()
=>
(
render
:
()
=>
(
<
Suspense
fallback=
{
null
}
>
<
Suspense
fallback=
{
null
}
>
<
Balance
<
Balance
value=
{
value
}
value=
{
rest
}
purchaserId=
{
purchaserId
}
purchaserRoleId=
{
purchaserRoleId
}
handleConfirm=
{
handleConfirm
}
handleConfirm=
{
handleConfirm
}
handleModalVisible=
{
handleModalVisible
}
handleModalVisible=
{
handleModalVisible
}
submitLoading=
{
submitLoading
}
submitLoading=
{
submitLoading
}
...
@@ -77,7 +88,7 @@ const RefundModal: React.FC<RefundModalProps> = ({
...
@@ -77,7 +88,7 @@ const RefundModal: React.FC<RefundModalProps> = ({
render
:
()
=>
(
render
:
()
=>
(
<
Suspense
fallback=
{
null
}
>
<
Suspense
fallback=
{
null
}
>
<
Credit
<
Credit
value=
{
value
}
value=
{
rest
}
handleConfirm=
{
handleConfirm
}
handleConfirm=
{
handleConfirm
}
handleModalVisible=
{
handleModalVisible
}
handleModalVisible=
{
handleModalVisible
}
submitLoading=
{
submitLoading
}
submitLoading=
{
submitLoading
}
...
@@ -91,7 +102,7 @@ const RefundModal: React.FC<RefundModalProps> = ({
...
@@ -91,7 +102,7 @@ const RefundModal: React.FC<RefundModalProps> = ({
render
:
()
=>
(
render
:
()
=>
(
<
Suspense
fallback=
{
null
}
>
<
Suspense
fallback=
{
null
}
>
<
COD
<
COD
value=
{
value
}
value=
{
rest
}
handleConfirm=
{
handleConfirm
}
handleConfirm=
{
handleConfirm
}
handleModalVisible=
{
handleModalVisible
}
handleModalVisible=
{
handleModalVisible
}
submitLoading=
{
submitLoading
}
submitLoading=
{
submitLoading
}
...
...
src/pages/returnManage/components/ReturnDetailInfo/index.tsx
View file @
a7754ee3
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Author: XieZhiXiong
* @Date: 2020-11-05 18:02:18
* @Date: 2020-11-05 18:02:18
* @LastEditors: XieZhiXiong
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-12-
15 10:26:44
* @LastEditTime: 2020-12-
29 13:50:18
* @Description: 退款明细
* @Description: 退款明细
*/
*/
import
React
,
{
useState
}
from
'react'
;
import
React
,
{
useState
}
from
'react'
;
...
@@ -18,6 +18,8 @@ import {
...
@@ -18,6 +18,8 @@ import {
PAY_CHANNEL_BALANCE
,
PAY_CHANNEL_BALANCE
,
PAY_CHANNEL_CREDIT
,
PAY_CHANNEL_CREDIT
,
PAY_CHANNEL_COD
,
PAY_CHANNEL_COD
,
RETURN_INNER_STATUS_TO_BE_REFUNDED
,
RETURN_INNER_STATUS_UNCONFIRMED_REFUNDED
,
}
from
'@/constants'
;
}
from
'@/constants'
;
import
Stamp
from
'../Stamp'
;
import
Stamp
from
'../Stamp'
;
import
CheckVoucherModal
from
'../CheckVoucherModal'
;
import
CheckVoucherModal
from
'../CheckVoucherModal'
;
...
@@ -51,6 +53,18 @@ interface ReturnDetailInfoProps {
...
@@ -51,6 +53,18 @@ interface ReturnDetailInfoProps {
* 是否是采购商
* 是否是采购商
*/
*/
isPurchaser
?:
boolean
;
isPurchaser
?:
boolean
;
/**
* 退货申请单内部状态
*/
innerStatus
:
number
;
/**
* 采购商id
*/
purchaserId
:
number
,
/**
* 采购商角色id
*/
purchaserRoleId
:
number
,
};
};
const
ReturnDetailInfo
:
React
.
FC
<
ReturnDetailInfoProps
>
=
({
const
ReturnDetailInfo
:
React
.
FC
<
ReturnDetailInfoProps
>
=
({
...
@@ -58,6 +72,9 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
...
@@ -58,6 +72,9 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
onRefund
,
onRefund
,
onConfirm
,
onConfirm
,
isPurchaser
=
false
,
isPurchaser
=
false
,
innerStatus
,
purchaserId
,
purchaserRoleId
,
})
=>
{
})
=>
{
const
[
visibleResult
,
setVisibleResult
]
=
useState
(
false
);
const
[
visibleResult
,
setVisibleResult
]
=
useState
(
false
);
const
[
notReceivedLoading
,
setNotReceivedLoading
]
=
useState
(
false
);
const
[
notReceivedLoading
,
setNotReceivedLoading
]
=
useState
(
false
);
...
@@ -135,20 +152,29 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
...
@@ -135,20 +152,29 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
},
},
];
];
const
handleRefund
=
(
id
,
channel
)
=>
{
const
handleRefund
=
(
id
,
channel
,
amount
)
=>
{
switch
(
channel
)
{
switch
(
channel
)
{
// 余额支付
// 余额支付
case
PAY_CHANNEL_BALANCE
:
{
case
PAY_CHANNEL_BALANCE
:
{
setModalName
(
'balance'
);
setModalName
(
'balance'
);
setRefundModalVisible
(
true
);
setRefundModalVisible
(
true
);
setRefundModalValue
({
id
});
setRefundModalValue
({
id
,
refundAmount
:
amount
,
purchaserId
,
purchaserRoleId
,
});
break
;
break
;
};
};
// 线下支付
// 线下支付
case
PAY_CHANNEL_OFFLINE
:
{
case
PAY_CHANNEL_OFFLINE
:
{
setModalName
(
'uploadVoucher'
);
setModalName
(
'uploadVoucher'
);
setRefundModalVisible
(
true
);
setRefundModalVisible
(
true
);
setRefundModalValue
({
id
});
setRefundModalValue
({
id
,
purchaserId
,
purchaserRoleId
,
});
break
;
break
;
};
};
// 授信支付
// 授信支付
...
@@ -207,9 +233,11 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
...
@@ -207,9 +233,11 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
const
handleRefundConfirm
=
(
values
,
modalName
)
=>
{
const
handleRefundConfirm
=
(
values
,
modalName
)
=>
{
setSubmitLoading
(
true
);
setSubmitLoading
(
true
);
if
(
onRefund
)
{
onRefund
(
values
).
finally
(()
=>
{
onRefund
(
values
).
finally
(()
=>
{
setSubmitLoading
(
false
);
setSubmitLoading
(
false
);
});
});
}
};
};
return
(
return
(
...
@@ -219,7 +247,7 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
...
@@ -219,7 +247,7 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
dataSource=
{
dataSource
}
dataSource=
{
dataSource
}
columns=
{
columns
}
columns=
{
columns
}
loading=
{
false
}
loading=
{
false
}
pagination=
{
null
}
pagination=
{
false
}
expandable=
{
{
expandable=
{
{
expandIcon
:
({
expanded
,
onExpand
,
record
})
=>
expandIcon
:
({
expanded
,
onExpand
,
record
})
=>
expanded
?
(
expanded
?
(
...
@@ -255,24 +283,33 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
...
@@ -255,24 +283,33 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
<
div
className=
{
styles
[
'deliver-item-actions'
]
}
>
<
div
className=
{
styles
[
'deliver-item-actions'
]
}
>
{
{
!
isPurchaser
&&
(
!
isPurchaser
&&
innerStatus
===
RETURN_INNER_STATUS_TO_BE_REFUNDED
&&
!!
item
.
canRefund
&&
(
item
.
outerStatus
===
REFUND_OUTER_STATUS_NOT_RECEIVED
||
item
.
outerStatus
===
REFUND_OUTER_STATUS_NOT_RECEIVED
||
item
.
innerStatus
===
REFUND_INNER_STATUS_NO_REFUND
||
item
.
innerStatus
===
REFUND_INNER_STATUS_NO_REFUND
||
item
.
innerStatus
===
REFUND_INNER_STATUS_REFUND_FAILED
item
.
innerStatus
===
REFUND_INNER_STATUS_REFUND_FAILED
)
&&
(
)
&&
(
<
div
<
div
className=
{
styles
[
'deliver-item-return'
]
}
className=
{
styles
[
'deliver-item-return'
]
}
onClick=
{
()
=>
handleRefund
(
item
.
refundId
,
item
.
channel
)
}
onClick=
{
()
=>
handleRefund
(
item
.
refundId
,
item
.
channel
,
item
.
refundAmount
)
}
>
>
退款
退款
</
div
>
</
div
>
)
)
}
}
<
div
className=
{
styles
[
'deliver-item-return'
]
}
onClick=
{
()
=>
handleRefund
(
item
.
refundId
,
PAY_CHANNEL_OFFLINE
,
item
.
refundAmount
)
}
>
退款
</
div
>
{
/* 线下支付 才有确认 与 查看功能 */
}
{
/* 线下支付 才有确认 与 查看功能 */
}
{
item
.
channel
===
PAY_CHANNEL_OFFLINE
&&
(
{
item
.
channel
===
PAY_CHANNEL_OFFLINE
&&
(
<>
<>
{
{
isPurchaser
&&
(
isPurchaser
&&
innerStatus
===
RETURN_INNER_STATUS_UNCONFIRMED_REFUNDED
&&
(
item
.
outerStatus
===
REFUND_OUTER_STATUS_UNCONFIRMED_REFUND
||
item
.
outerStatus
===
REFUND_OUTER_STATUS_UNCONFIRMED_REFUND
||
item
.
outerStatus
===
REFUND_OUTER_STATUS_NOT_RECEIVED
item
.
outerStatus
===
REFUND_OUTER_STATUS_NOT_RECEIVED
)
&&
(
)
&&
(
...
...
yarn.lock
View file @
a7754ee3
...
@@ -7545,10 +7545,10 @@ glogg@^1.0.0:
...
@@ -7545,10 +7545,10 @@ glogg@^1.0.0:
dependencies:
dependencies:
sparkles "^1.0.0"
sparkles "^1.0.0"
god-upload-scp@1.
2.0:
god-upload-scp@1.
0.1:
version "1.
2.0"
version "1.
0.1"
resolved "http://10.0.0.
21:8081/repository/node-group/god-upload-scp/-/god-upload-scp-1.2.0.tgz#8e2469e608c4a3c682beedc95b2a2834d7b940c6"
resolved "http://10.0.0.
19:4873/god-upload-scp/-/god-upload-scp-1.0.1.tgz#347aaaa8c4e97e0441d5abd30ac87139df9ea9fc"
integrity sha512-
La0VTFPq9kYHKNW/QkAOyVAI1htL37xqT8U4jy3XQm0gDrdgSu+BxW8dHFXv4cGZH9AkAIXjqFkx4S3Ti17oCA==
integrity sha512-
NoHcdv7brMq8lWyIMFbJvwB9bDza9h3rPPNRVN7d1BiRr25n0E5LiSl+m5BOkpq4hO1oUAJqusJrkOwfVKM8Nw==
dependencies:
dependencies:
async "^3.2.0"
async "^3.2.0"
chalk "^4.1.0"
chalk "^4.1.0"
...
@@ -7559,10 +7559,10 @@ god-upload-scp@1.2.0:
...
@@ -7559,10 +7559,10 @@ god-upload-scp@1.2.0:
ssh2 "^0.8.9"
ssh2 "^0.8.9"
util "^0.12.3"
util "^0.12.3"
god-yapi2ts@^1.
9.0:
god-yapi2ts@^1.
0.0:
version "1.
9.0"
version "1.
0.0"
resolved "http://10.0.0.
21:8081/repository/node-group/god-yapi2ts/-/god-yapi2ts-1.9.0.tgz#2417e21efcf55fc8c00675200b2020800943790e"
resolved "http://10.0.0.
19:4873/god-yapi2ts/-/god-yapi2ts-1.0.0.tgz#d8c955009fd23a8cd18d1af5f31d24531b74378d"
integrity sha512-
/SnmScN+TO/IHwJc3mFyk5nK58QfCtMblvqM8q6ETs5G6Jp9FBmi7DNeTifSYtqdyb6NWi6vjWgG9+qRonDehw==
integrity sha512-
54pQ8j/LzAVLJ3E9HoiYbirAOEvElvogPr5rdWnGQespOmW9RnSdVcTkAz8iM8s4UwOIsgjtRA17VnrvtgRbVQ==
dependencies:
dependencies:
"@types/react" "^16.9.2"
"@types/react" "^16.9.2"
"@vtils/date" "^2.55.0"
"@vtils/date" "^2.55.0"
...
@@ -7583,10 +7583,10 @@ god-yapi2ts@^1.9.0:
...
@@ -7583,10 +7583,10 @@ god-yapi2ts@^1.9.0:
tslib "^1.9.3"
tslib "^1.9.3"
vtils "^2.55.0"
vtils "^2.55.0"
god@^0.
1.29:
god@^0.
2.4:
version "0.
1.30"
version "0.
2.4"
resolved "http://10.0.0.
21:8081/repository/node-group/god/-/god-0.1.30.tgz#6949c9108f410c8a0c622ff023402a396815ae9c"
resolved "http://10.0.0.
19:4873/god/-/god-0.2.4.tgz#232270a776d321780c3ca42682087cf258858e24"
integrity sha512-
ObuPhi5ikcOwSo/aQbolfV0CfzN65l0jqwwawHtOg85KohhOk+zxrCulmGQ0JC2wKdLz/W5XXdcK7HpaCw1FLw==
integrity sha512-
VL6fJcBweSaHQNrlVyDg2M6r3a3g9PSjytXDZXbs9QEBLeq1EDBV8CU9AgP4MP+hPQ1/Wq3JCkWtaICQTEyvqA==
dependencies:
dependencies:
"@ant-design/icons" "^4.1.0"
"@ant-design/icons" "^4.1.0"
"@umijs/route-utils" "^1.0.12"
"@umijs/route-utils" "^1.0.12"
...
...
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