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
52088727
Commit
52088727
authored
Sep 23, 2020
by
前端-钟卫鹏
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
http://10.0.0.22:3000/lingxi/lingxi-business-paltform
into dev
parents
f48b3497
6c478b5f
Hide whitespace changes
Inline
Side-by-side
Showing
60 changed files
with
2321 additions
and
102 deletions
+2321
-102
tranactionRoute.ts
config/routes/tranactionRoute.ts
+47
-2
index.less
src/components/AvatarWrap/index.less
+22
-0
index.tsx
src/components/AvatarWrap/index.tsx
+39
-0
index.tsx
src/components/MellowCard/index.tsx
+3
-3
index.tsx
src/components/Mood/index.tsx
+43
-0
Search.tsx
src/components/NiceForm/components/Search.tsx
+18
-11
SmilingFace.tsx
src/components/NiceForm/components/SmilingFace.tsx
+53
-0
index.tsx
src/components/NiceForm/index.tsx
+4
-2
index.less
src/components/StatusTag/index.less
+35
-0
index.tsx
src/components/StatusTag/index.tsx
+25
-0
BasicLayout.tsx
src/layouts/BasicLayout.tsx
+1
-1
Roles.tsx
src/layouts/components/Roles.tsx
+14
-13
menu.ts
src/locales/zh-CN/menu.ts
+10
-2
index.tsx
src/pages/lxMall/order/index.tsx
+31
-5
index.tsx
src/pages/member/components/SincerityInfo/index.tsx
+1
-30
index.tsx
src/pages/member/memberImport/index.tsx
+16
-2
index.tsx
src/pages/member/memberMaintain/index.tsx
+16
-2
index.tsx
src/pages/member/memberPr1/index.tsx
+17
-2
index.tsx
src/pages/member/memberPr2/index.tsx
+17
-2
index.tsx
src/pages/member/memberPrConfirm/index.tsx
+17
-2
index.tsx
src/pages/member/memberPrSubmit/index.tsx
+17
-2
commodity.tsx
src/pages/systemSetting/collection/commodity.tsx
+65
-3
index.less
src/pages/systemSetting/collection/index.less
+189
-0
index.tsx
src/pages/systemSetting/collection/index.tsx
+1
-1
index.less
src/pages/transaction/electronicContracts/apply/index.less
+39
-0
index.tsx
src/pages/transaction/electronicContracts/apply/index.tsx
+66
-3
index.tsx
...ges/transaction/electronicContracts/classSearch/index.tsx
+39
-2
index.tsx
...ansaction/electronicContracts/components/alipay/index.tsx
+21
-0
index.tsx
...action/electronicContracts/components/corporate/index.tsx
+34
-0
index.tsx
...ctronicContracts/components/enterpriseInfoCheck/index.tsx
+64
-0
index.less
...ges/transaction/electronicContracts/components/index.less
+128
-0
index.less
...ansaction/electronicContracts/components/steps/index.less
+28
-0
index.tsx
...ransaction/electronicContracts/components/steps/index.tsx
+19
-0
index.tsx
...saction/electronicContracts/enterpriseCertified/index.tsx
+24
-0
index.tsx
...ansaction/electronicContracts/personalCertified/index.tsx
+18
-0
index.tsx
src/pages/transaction/electronicContracts/template/index.tsx
+60
-2
useBusinessEffects.ts
...kSellStorage/bills/addBills/effects/useBusinessEffects.ts
+4
-2
index.tsx
...s/transaction/stockSellStorage/billsType/schema/index.tsx
+13
-2
index.tsx
...s/transaction/stockSellStorage/warehouse/schema/index.tsx
+17
-6
index.less
src/pages/transaction/supplierEvaluation/analysis/index.less
+12
-0
index.tsx
src/pages/transaction/supplierEvaluation/analysis/index.tsx
+173
-0
index.ts
...s/transaction/supplierEvaluation/analysis/schema/index.ts
+56
-0
index.less
...n/supplierEvaluation/components/EvaluationList/index.less
+0
-0
index.tsx
...on/supplierEvaluation/components/EvaluationList/index.tsx
+171
-0
index.less
...ction/supplierEvaluation/components/RecordList/index.less
+84
-0
index.tsx
...action/supplierEvaluation/components/RecordList/index.tsx
+59
-0
index.less
...nsaction/supplierEvaluation/components/Shelves/index.less
+29
-0
index.tsx
...ansaction/supplierEvaluation/components/Shelves/index.tsx
+24
-0
constans.tsx
src/pages/transaction/supplierEvaluation/constans.tsx
+0
-0
index.less
src/pages/transaction/supplierEvaluation/index.less
+0
-0
index.tsx
src/pages/transaction/supplierEvaluation/index.tsx
+11
-0
index.less
src/pages/transaction/supplierEvaluation/received/index.less
+0
-0
index.tsx
src/pages/transaction/supplierEvaluation/received/index.tsx
+11
-0
index.less
src/pages/transaction/supplierEvaluation/sent/index.less
+0
-0
index.tsx
src/pages/transaction/supplierEvaluation/sent/index.tsx
+11
-0
evaluate.less
.../transaction/supplierEvaluation/unevaluated/evaluate.less
+0
-0
evaluate.tsx
...s/transaction/supplierEvaluation/unevaluated/evaluate.tsx
+86
-0
index.less
...ges/transaction/supplierEvaluation/unevaluated/index.less
+0
-0
index.tsx
...ages/transaction/supplierEvaluation/unevaluated/index.tsx
+172
-0
index.tsx
...ansaction/supplierEvaluation/unevaluated/schema/index.tsx
+147
-0
No files found.
config/routes/tranactionRoute.ts
View file @
52088727
/*
* @Author: LeeJiancong
* @Date: 2020-07-31 19:56:22
* @LastEditors:
jiaxin
* @LastEditors:
XieZhiXiong
* @Copyright: 1549414730@qq.com
* @LastEditTime: 2020-09-2
1 18:32:55
* @LastEditTime: 2020-09-2
3 09:35:27
*/
const
TranactionRoute
=
{
...
...
@@ -36,6 +36,18 @@ const TranactionRoute = {
path
:
'/memberCenter/tranactionAbility/electronicContracts/template'
,
name
:
'template'
,
component
:
'@/pages/transaction/electronicContracts/template/index'
,
},
{
path
:
'/memberCenter/tranactionAbility/electronicContracts/enterpriseCertified'
,
name
:
'enterpriseCertified'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/electronicContracts/enterpriseCertified/index'
,
},
{
path
:
'/memberCenter/tranactionAbility/electronicContracts/personalCertified'
,
name
:
'personalCertified'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/electronicContracts/personalCertified/index'
,
}
]
},
...
...
@@ -325,6 +337,39 @@ const TranactionRoute = {
hideInMenu
:
true
,
component
:
'@/pages/transaction/transactionRules/addRule'
,
},
// 供应会员评价管理
{
path
:
'/memberCenter/tranactionAbility/supplierEvaluation'
,
name
:
'supplierEvaluation'
,
routes
:
[
{
path
:
'/memberCenter/tranactionAbility/supplierEvaluation/unevaluated'
,
name
:
'unevaluated'
,
component
:
'@/pages/transaction/supplierEvaluation/unevaluated'
,
},
{
path
:
'/memberCenter/tranactionAbility/supplierEvaluation/unevaluated/evaluate'
,
name
:
'evaluate'
,
component
:
'@/pages/transaction/supplierEvaluation/unevaluated/evaluate'
,
hideInMenu
:
true
,
},
{
path
:
'/memberCenter/tranactionAbility/supplierEvaluation/analysis'
,
name
:
'analysis'
,
component
:
'@/pages/transaction/supplierEvaluation/analysis'
,
},
// {
// path: '/memberCenter/tranactionAbility/supplierEvaluation/received',
// name: 'received',
// component: '@/pages/transaction/supplierEvaluation/received',
// },
// {
// path: '/memberCenter/tranactionAbility/supplierEvaluation/sent',
// name: 'sent',
// component: '@/pages/transaction/supplierEvaluation/sent',
// },
],
},
]
}
...
...
src/components/AvatarWrap/index.less
0 → 100644
View file @
52088727
.head {
display: flex;
align-items: center;
font-size: 20px;
font-weight: 500;
&-prefix {
width: 48px;
height: 48px;
line-height: 48px;
border-radius: 4px;
border: 1px solid #DFE1E6;
color: #fff;
text-align: center;
background-color: #8777D9;
}
&-name {
color: #172B4D;
margin: 0 8px 0 12px;
}
}
src/components/AvatarWrap/index.tsx
0 → 100644
View file @
52088727
/*
* @Author: XieZhiXiong
* @Date: 2020-09-22 11:48:53
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-09-22 11:53:03
* @Description: 详情页头像与名字结合组件
*/
import
React
from
'react'
;
import
styles
from
'./index.less'
;
export
interface
AvatarWrapProps
{
info
:
{
aloneTxt
?:
string
,
// 单独显示在头像中间的文件,不传的话从 name 从截取第一个字符
name
:
string
,
level
?:
number
,
};
extra
?:
React
.
ReactNode
;
};
const
AvatarWrap
:
React
.
FC
<
AvatarWrapProps
>
=
({
info
=
{},
extra
})
=>
(
<
div
className=
{
styles
.
head
}
>
<
div
className=
{
styles
[
'head-prefix'
]
}
>
{
info
.
aloneTxt
?
info
.
aloneTxt
:
info
.
name
&&
info
.
name
.
length
?
info
.
name
[
0
]
:
''
}
</
div
>
<
div
className=
{
styles
[
'head-name'
]
}
>
{
info
.
name
||
''
}
</
div
>
{
extra
}
</
div
>
);
export
default
AvatarWrap
;
\ No newline at end of file
src/components/MellowCard/index.tsx
View file @
52088727
...
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-08-26 17:32:45
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-0
8-26 17:33:28
* @LastEditTime: 2020-0
9-22 20:54:42
* @Description: 基于 antd Card 封装的适合项目 UI 的 Card,使用方式跟 antd Card 一样,这里只是修改了样式
*/
import
React
from
'react'
;
...
...
@@ -19,8 +19,8 @@ const MellowCard: React.FC<MellowCardProps> = props => {
const
{
children
,
blockClassName
,
...
rest
}
=
props
;
return
(
<
div
className=
{
cx
(
styles
.
mellow
,
blockClassName
)
}
>
<
Card
{
...
rest
}
>
<
div
className=
{
styles
.
mellow
}
>
<
Card
bordered=
{
false
}
{
...
rest
}
>
{
children
}
</
Card
>
</
div
>
...
...
src/components/Mood/index.tsx
0 → 100644
View file @
52088727
/*
* @Author: XieZhiXiong
* @Date: 2020-09-22 17:41:45
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-09-22 18:04:44
* @Description: 评价笑脸组件
*/
import
React
from
'react'
;
import
{
SmileFilled
,
MehFilled
,
FrownFilled
,
}
from
'@ant-design/icons'
;
interface
MoodProps
{
type
:
'smile'
|
'notBad'
|
'sad'
;
};
const
Mood
:
React
.
FC
<
MoodProps
>
=
({
type
=
'smile'
})
=>
{
let
node
=
null
;
switch
(
type
)
{
case
'smile'
:
node
=
<><
SmileFilled
style=
{
{
color
:
'#41CC9E'
,
marginRight
:
4
}
}
/></>;
break
;
case
'notBad'
:
node
=
<><
MehFilled
style=
{
{
color
:
'#FFC400'
,
marginRight
:
4
}
}
/></>;
break
;
case
'sad'
:
node
=
<><
FrownFilled
style=
{
{
color
:
'#EF6260'
,
marginRight
:
4
}
}
/></>;
break
;
default
:
break
;
}
return
node
;
};
export
default
Mood
;
\ No newline at end of file
src/components/NiceForm/components/Search.tsx
View file @
52088727
import
React
,
{
useState
}
from
'react'
;
import
{
Input
,
Space
,
Button
}
from
'antd'
;
import
{
Input
,
Space
,
Button
,
Tooltip
}
from
'antd'
;
import
{
CaretUpOutlined
,
CaretDownOutlined
}
from
'@ant-design/icons'
;
import
{
useFieldState
,
FormPath
,
FormEffectHooks
}
from
'@formily/antd'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
...
...
@@ -15,7 +15,12 @@ const Search = props => {
const
[
state
,
setState
]
=
useFieldState
({
filterSearch
:
false
,
});
const
{
align
,
advanced
=
true
,
...
rest
}
=
props
.
props
[
'x-component-props'
];
const
{
align
,
advanced
=
true
,
// 是否展示高级筛选
tip
,
// 搜索框悬浮提示
...
rest
}
=
props
.
props
[
'x-component-props'
];
const
justifyAlign
=
align
||
'flex-end'
;
const
changeFilterVisible
=
()
=>
{
...
...
@@ -31,15 +36,17 @@ const Search = props => {
};
return
(
<
Space
size=
{
20
}
style=
{
{
justifyContent
:
justifyAlign
,
width
:
'100%'
}
}
>
<
Input
.
Search
value=
{
props
.
value
||
''
}
onChange=
{
e
=>
props
.
mutators
.
change
(
e
.
target
.
value
)
}
onSearch=
{
(
_
,
e
)
=>
{
e
.
preventDefault
();
props
.
form
.
submit
();
}
}
{
...
rest
}
/>
<
Tooltip
title=
{
tip
}
>
<
Input
.
Search
value=
{
props
.
value
||
''
}
onChange=
{
e
=>
props
.
mutators
.
change
(
e
.
target
.
value
)
}
onSearch=
{
(
_
,
e
)
=>
{
e
.
preventDefault
();
props
.
form
.
submit
();
}
}
{
...
rest
}
/>
</
Tooltip
>
{
advanced
&&
(
<
Button
onClick=
{
changeFilterVisible
}
>
高级筛选
...
...
src/components/NiceForm/components/SmilingFace.tsx
0 → 100644
View file @
52088727
import
React
from
'react'
;
import
Mood
from
'@/components/Mood'
;
interface
SmilingFaceProps
{
value
:
number
;
};
const
SmilingFace
:
React
.
FC
<
SmilingFaceProps
>
=
({
value
,
})
=>
{
let
node
=
null
;
switch
(
value
)
{
case
1
:
case
2
:
{
node
=
(
<>
<
Mood
type=
"sad"
/>
<
span
>
差评
</
span
>
</>
);
break
;
}
case
3
:
{
node
=
(
<>
<
Mood
type=
"notBad"
/>
<
span
>
中评
</
span
>
</>
);
break
;
}
case
4
:
case
5
:
{
node
=
(
<>
<
Mood
type=
"smile"
/>
<
span
>
好评
</
span
>
</>
);
break
;
}
default
:
break
;
}
return
node
;
};
export
default
SmilingFace
;
\ No newline at end of file
src/components/NiceForm/index.tsx
View file @
52088727
...
...
@@ -24,7 +24,8 @@ import TableTagList from './components/TableTagList';
import
'./index.less'
import
{
Checkbox
,
Radio
}
from
'@formily/antd-components'
;
import
DateSelect
from
'./components/DateSelect'
;
import
VirtualChildren
from
'./components/VirtualChildren'
import
VirtualChildren
from
'./components/VirtualChildren'
;
import
SmilingFace
from
'./components/SmilingFace'
;
import
{
useLinkComponentProps
}
from
'./linkages/linkComponentProps'
;
import
Loading
from
'../Loading'
;
...
...
@@ -95,7 +96,8 @@ export const componentExport = {
DateRangePicker
:
DatePicker
.
RangePicker
,
TableTagList
,
DateSelect
,
VirtualChildren
,
VirtualChildren
,
SmilingFace
,
RadioGroup
:
Radio
.
Group
}
const
NiceForm
:
React
.
FC
<
NiceFormProps
>
=
props
=>
{
...
...
src/components/StatusTag/index.less
0 → 100644
View file @
52088727
.tag {
line-height: 22px;
padding: 0 8px;
font-size: 14px;
font-weight: 400;
color: #00B37A;
background: #EBF7F2;
border-radius: 4px;
&__success {
color: #00B37A;
background: #EBF7F2;
}
&__warnning {
color: #FF991F;
background: #FFFAE6;
}
&__default {
color: #42526E;
background: #F4F5F7;
}
&__danger {
color: #E63F3B;
background: #FFEBE6;
}
&__primary {
color: #3F7ED2;
background: #F0F8FF;
}
}
\ No newline at end of file
src/components/StatusTag/index.tsx
0 → 100644
View file @
52088727
/*
* @Author: XieZhiXiong
* @Date: 2020-08-31 17:52:14
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-08-31 18:59:18
* @Description: 状态 tag
*/
import
React
from
'react'
;
import
classNames
from
'classnames'
;
import
styles
from
'./index.less'
;
interface
StatusTagProps
{
type
:
'success'
|
'warnning'
|
'default'
|
'danger'
|
'primary'
;
title
:
string
;
};
const
StatusTag
:
React
.
FC
<
StatusTagProps
>
=
({
type
,
title
})
=>
{
const
cls
=
classNames
(
styles
.
tag
,
styles
[
`tag__
${
type
}
`
]);
return
(
<
span
className=
{
cls
}
>
{
title
}
</
span
>
);
};
export
default
StatusTag
;
\ No newline at end of file
src/layouts/BasicLayout.tsx
View file @
52088727
...
...
@@ -141,7 +141,7 @@ const BasicLayout: React.FC<BasicLayoutProps> = (props) => {
)
}
collapsed=
{
collapsed
}
onCollapse=
{
handleMenuCollapse
}
disableContentMargin=
{
currentRouter
.
noMargin
!==
undefined
}
disableContentMargin=
{
currentRouter
?
.
noMargin
!==
undefined
}
breadcrumbRender=
{
(
routers
=
[])
=>
[
]
}
...
...
src/layouts/components/Roles.tsx
View file @
52088727
...
...
@@ -5,8 +5,8 @@ import { getAuth, setAuth, setRouters } from '@/utils/auth';
import
{
PublicApi
}
from
'@/services/api'
;
interface
MemberRole
{
memberRoleId
:
number
;
memberRoleName
:
string
;
memberRoleId
:
number
;
memberRoleName
:
string
;
};
const
Roles
:
React
.
FC
=
()
=>
{
...
...
@@ -14,12 +14,12 @@ const Roles: React.FC = () => {
const
[
roles
,
setRoles
]
=
useState
<
MemberRole
[]
>
([]);
useEffect
(()
=>
{
const
userInfo
=
getAuth
();
setRoles
(
userInfo
.
roles
||
[]);
const
userInfo
=
getAuth
()
||
{}
;
setRoles
(
userInfo
.
roles
||
[]);
if
(
userInfo
.
roles
&&
userInfo
.
roles
.
length
)
{
const
current
=
userInfo
.
roles
.
find
(
item
=>
item
.
memberRoleId
===
userInfo
.
memberRoleId
);
setCurRole
(
current
);
setCurRole
(
current
);
}
},
[]);
...
...
@@ -30,19 +30,19 @@ const Roles: React.FC = () => {
}
const
msg
=
message
.
loading
({
content
:
'正在切换角色...'
,
duration
:
0
,
content
:
'正在切换角色...'
,
duration
:
0
,
});
PublicApi
.
postMemberLoginSwitchrole
({
memberRoleId
,
memberRoleId
,
}).
then
(
res
=>
{
if
(
res
.
code
!==
1000
)
{
return
;
}
msg
();
setAuth
(
res
.
data
);
setRouters
(
res
.
data
.
urls
);
setRouters
(
res
.
data
.
urls
);
setTimeout
(()
=>
{
window
.
location
.
replace
(
'/memberCenter/home'
);
},
800
);
...
...
@@ -62,9 +62,9 @@ const Roles: React.FC = () => {
);
return
(
<
Dropdown
overlay=
{
menuHeaderDropdown
}
placement=
"bottomRight"
<
Dropdown
overlay=
{
menuHeaderDropdown
}
placement=
"bottomRight"
>
<
Space
size=
{
5
}
style=
{
{
cursor
:
'pointer'
,
padding
:
'0 15px'
}
}
>
{
curRole
?.
memberRoleName
}
...
...
@@ -72,6 +72,6 @@ const Roles: React.FC = () => {
</
Space
>
</
Dropdown
>
)
};
};
export
default
Roles
;
\ No newline at end of file
src/locales/zh-CN/menu.ts
View file @
52088727
...
...
@@ -2,7 +2,7 @@
* @Author: LeeJiancong
* @Date: 2020-07-13 14:08:50
* @LastEditors: jiaxin
* @LastEditTime: 2020-09-2
1 18:33:27
* @LastEditTime: 2020-09-2
2 16:35:11
*/
export
default
{
...
...
@@ -116,6 +116,8 @@ export default {
//电子合同
'menu.tranactionAbility.electronicContracts'
:
'电子合同'
,
'menu.tranactionAbility.electronicContracts.apply'
:
'电子签章申请'
,
'menu.tranactionAbility.electronicContracts.enterpriseCertified'
:
'企业信息核验'
,
'menu.tranactionAbility.electronicContracts.personalCertified'
:
'个人信息核验'
,
'menu.tranactionAbility.electronicContracts.classSearch'
:
'合同模板参数查询'
,
'menu.tranactionAbility.electronicContracts.template'
:
'合同模板'
,
//进销存
...
...
@@ -173,7 +175,13 @@ export default {
'menu.tranactionAbility.enquiryOffer.enquiryTwo'
:
'待审核报价单(二级)'
,
'menu.tranactionAbility.enquiryOffer.toSubmit'
:
'待提交报价单'
,
// 供应商评价
'menu.tranactionAbility.supplierEvaluation'
:
'供应会员评价管理'
,
'menu.tranactionAbility.supplierEvaluation.unevaluated'
:
'待评价订单'
,
'menu.tranactionAbility.supplierEvaluation.evaluate'
:
'评价'
,
'menu.tranactionAbility.supplierEvaluation.analysis'
:
'评价统计'
,
'menu.tranactionAbility.supplierEvaluation.received'
:
'收到的评价'
,
'menu.tranactionAbility.supplierEvaluation.sent'
:
'发出的评价'
,
//物流能力
'menu.logisticsAbility'
:
'物流'
,
...
...
src/pages/lxMall/order/index.tsx
View file @
52088727
...
...
@@ -42,6 +42,8 @@ const Order: React.FC<OrderPropsType> = (props) => {
const
[
selectAddressInfo
,
setSelectAddressInfo
]
=
useState
<
GetLogisticsReceiverAddressGetResponse
>
()
const
[
selectInvoiceInfo
,
setSelectInvoiceInfo
]
=
useState
<
any
>
()
const
[
logisticsFee
,
setLogisticsFee
]
=
useState
<
number
>
(
0
)
const
[
isElectronicContract
,
setIsElectronicContract
]
=
useState
<
boolean
>
(
false
)
// 是否选用电子合同
const
[
contractInfo
,
setContractInfo
]
=
useState
()
useEffect
(()
=>
{
if
(
!
spam_id
)
{
...
...
@@ -75,12 +77,28 @@ const Order: React.FC<OrderPropsType> = (props) => {
item
.
orderList
=
tempOrderList
result
.
push
(
item
)
}
const
productId
=
sessionOrderInfo
?.
orderList
[
0
]?.
orderList
[
0
].
id
if
(
productId
)
{
try
{
const
rulesRes
=
await
PublicApi
.
getOrderTradingRulesByProductId
({
productId
})
const
{
data
}
=
rulesRes
if
(
data
)
{
// 是否选用电子合同
if
(
data
.
isElectronicContract
)
{
setIsElectronicContract
(
true
)
}
}
}
catch
(
error
)
{
console
.
log
(
"获取交易规则失败"
)
}
}
setOrderList
(
result
)
setOrderInfo
(
sessionOrderInfo
)
setSpinningState
(
false
)
}
const
renderLogisticsInfo
=
(
type
,
logisticsInfo
)
=>
{
switch
(
type
)
{
case
1
:
...
...
@@ -245,6 +263,7 @@ const Order: React.FC<OrderPropsType> = (props) => {
}
const
checkOrder
=
()
=>
{
message
.
destroy
()
if
(
isEmpty
(
selectPayWay
))
{
message
.
info
(
'请选择支付方式'
)
return
...
...
@@ -256,12 +275,17 @@ const Order: React.FC<OrderPropsType> = (props) => {
}
}
if
(
!
needTheContract
)
{
if
(
isElectronicContract
&&
!
needTheContract
)
{
message
.
info
(
'请先同意签订电子合同'
)
return
}
setSignModalVisible
(
true
)
// submitOrder()
// 根据状态判断是否需要签订电子合同
if
(
isElectronicContract
)
{
setSignModalVisible
(
true
)
}
else
{
submitOrder
()
}
}
const
handleSignModalConfirm
=
()
=>
{
...
...
@@ -287,7 +311,9 @@ const Order: React.FC<OrderPropsType> = (props) => {
<
PayWay
selectItem=
{
selectPayWay
}
payWayList=
{
orderInfo
.
payWayList
}
onChange=
{
(
val
)
=>
setSelectPayWay
(
val
)
}
/>
{
/* <Delivery /> */
}
<
Invoice
state=
{
needTheInvoice
}
onChange=
{
(
val
)
=>
setNeedTheInvoice
(
val
)
}
onSelect=
{
(
val
)
=>
setSelectInvoiceInfo
(
val
)
}
/>
<
Contract
state=
{
needTheContract
}
onChange=
{
(
val
)
=>
setneedTheContract
(
val
)
}
/>
{
isElectronicContract
&&
<
Contract
state=
{
needTheContract
}
onChange=
{
(
val
)
=>
setneedTheContract
(
val
)
}
/>
}
<
div
className=
{
styles
.
common_title
}
>
<
span
>
订单信息
</
span
>
</
div
>
...
...
src/pages/member/components/SincerityInfo/index.tsx
View file @
52088727
...
...
@@ -10,14 +10,12 @@ import {
}
from
'antd'
;
import
{
QuestionCircleOutlined
,
SmileFilled
,
MehFilled
,
FrownFilled
,
}
from
'@ant-design/icons'
;
import
PolymericTable
from
'@/components/PolymericTable'
;
import
{
EditableColumns
}
from
'@/components/PolymericTable/interface'
;
import
{
Pie
}
from
'@/components/Charts'
;
import
MellowCard
from
'@/components/MellowCard'
;
import
Mood
from
'@/components/Mood'
;
import
equity5
from
'@/assets/imgs/equity-5.png'
;
import
styles
from
'./index.less'
;
...
...
@@ -54,33 +52,6 @@ const ContentBox: React.FC<ContentBoxProps> = ({
</
div
>
);
interface
MoodProps
{
type
:
'smile'
|
'notBad'
|
'sad'
;
};
const
Mood
:
React
.
FC
<
MoodProps
>
=
({
type
=
'smile'
})
=>
{
let
node
=
null
;
switch
(
type
)
{
case
'smile'
:
node
=
<><
SmileFilled
style=
{
{
color
:
'#41CC9E'
,
marginRight
:
4
}
}
/>
好评
</>;
break
;
case
'notBad'
:
node
=
<><
MehFilled
style=
{
{
color
:
'#FFC400'
,
marginRight
:
4
}
}
/>
中评
</>;
break
;
case
'sad'
:
node
=
<><
FrownFilled
style=
{
{
color
:
'#EF6260'
,
marginRight
:
4
}
}
/>
差评
</>;
break
;
default
:
break
;
}
return
node
;
};
const
PAGE_SIZE
=
5
;
export
interface
BasicInfo
{
...
...
src/pages/member/memberImport/index.tsx
View file @
52088727
...
...
@@ -16,6 +16,7 @@ import {
DownOutlined
,
}
from
'@ant-design/icons'
;
import
{
StandardTable
}
from
'god'
;
import
moment
from
'moment'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
EyePreview
from
'@/components/EyePreview'
;
...
...
@@ -41,8 +42,21 @@ import { MEMBER_OUTER_STATUS_TYPE, MEMBER_STATUS_TAG_MAP } from '../constant';
const
formActions
=
createFormActions
();
const
fetchListData
=
async
(
params
:
any
)
=>
{
let
res
=
await
PublicApi
.
getMemberAbilitySubPage
(
params
);
return
res
.
data
;
const
{
startDate
=
null
,
endDate
=
null
}
=
params
;
const
payload
=
{
...
params
};
if
(
startDate
)
{
payload
.
startDate
=
moment
(
+
startDate
).
format
(
'YYYY-MM-DD'
);
}
if
(
endDate
)
{
payload
.
endDate
=
moment
(
+
endDate
).
format
(
'YYYY-MM-DD'
);
}
const
res
=
await
PublicApi
.
getMemberAbilitySubPage
(
payload
);
if
(
res
.
code
===
1000
)
{
return
res
.
data
;
}
return
[];
};
const
MemberMaintain
:
React
.
FC
<
[]
>
=
()
=>
{
...
...
src/pages/member/memberMaintain/index.tsx
View file @
52088727
...
...
@@ -12,6 +12,7 @@ import {
DownOutlined
,
}
from
'@ant-design/icons'
;
import
{
StandardTable
}
from
'god'
;
import
moment
from
'moment'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
createFormActions
,
FormEffectHooks
}
from
'@formily/antd'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
...
...
@@ -38,8 +39,21 @@ import { coverColFiltersItem } from '../utils';
const
formActions
=
createFormActions
();
const
fetchData
=
async
(
params
:
any
)
=>
{
let
res
=
await
PublicApi
.
getMemberAbilityMaintenancePage
(
params
);
return
res
.
data
;
const
{
startDate
=
null
,
endDate
=
null
}
=
params
;
const
payload
=
{
...
params
};
if
(
startDate
)
{
payload
.
startDate
=
moment
(
+
startDate
).
format
(
'YYYY-MM-DD'
);
}
if
(
endDate
)
{
payload
.
endDate
=
moment
(
+
endDate
).
format
(
'YYYY-MM-DD'
);
}
const
res
=
await
PublicApi
.
getMemberAbilityMaintenancePage
(
payload
);
if
(
res
.
code
===
1000
)
{
return
res
.
data
;
}
return
[];
};
const
MemberMaintain
:
React
.
FC
<
[]
>
=
()
=>
{
...
...
src/pages/member/memberPr1/index.tsx
View file @
52088727
...
...
@@ -3,6 +3,7 @@ import { history } from 'umi';
import
{
Card
,
Space
,
Button
,
Badge
,
Modal
,
message
}
from
'antd'
;
import
{
ClockCircleOutlined
,
QuestionCircleOutlined
}
from
'@ant-design/icons'
;
import
{
StandardTable
}
from
'god'
;
import
moment
from
'moment'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
EyePreview
from
'@/components/EyePreview'
;
...
...
@@ -126,8 +127,22 @@ const MemberPr1: React.FC<{}> = props => {
};
const
fetchListData
=
async
(
params
:
any
)
=>
{
let
res
=
await
PublicApi
.
getMemberAbilityValidateStep1Page
(
params
);
return
res
.
data
;
const
{
startDate
=
null
,
endDate
=
null
}
=
params
;
const
payload
=
{
...
params
};
if
(
startDate
)
{
payload
.
startDate
=
moment
(
+
startDate
).
format
(
'YYYY-MM-DD'
);
}
if
(
endDate
)
{
payload
.
endDate
=
moment
(
+
endDate
).
format
(
'YYYY-MM-DD'
);
}
const
res
=
await
PublicApi
.
getMemberAbilityValidateStep1Page
(
payload
);
if
(
res
.
code
===
1000
)
{
return
res
.
data
;
}
return
[];
};
const
handleBatch
=
()
=>
{
...
...
src/pages/member/memberPr2/index.tsx
View file @
52088727
...
...
@@ -3,6 +3,7 @@ import { history } from 'umi';
import
{
Card
,
Space
,
Button
,
Badge
,
Modal
,
message
}
from
'antd'
;
import
{
ClockCircleOutlined
,
QuestionCircleOutlined
}
from
'@ant-design/icons'
;
import
{
StandardTable
}
from
'god'
;
import
moment
from
'moment'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
EyePreview
from
'@/components/EyePreview'
;
...
...
@@ -126,8 +127,22 @@ const MemberPr2: React.FC<{}> = props => {
};
const
fetchListData
=
async
(
params
:
any
)
=>
{
let
res
=
await
PublicApi
.
getMemberAbilityValidateStep2Page
(
params
);
return
res
.
data
;
const
{
startDate
=
null
,
endDate
=
null
}
=
params
;
const
payload
=
{
...
params
};
if
(
startDate
)
{
payload
.
startDate
=
moment
(
+
startDate
).
format
(
'YYYY-MM-DD'
);
}
if
(
endDate
)
{
payload
.
endDate
=
moment
(
+
endDate
).
format
(
'YYYY-MM-DD'
);
}
const
res
=
await
PublicApi
.
getMemberAbilityValidateStep2Page
(
payload
);
if
(
res
.
code
===
1000
)
{
return
res
.
data
;
}
return
[];
};
const
handleBatch
=
()
=>
{
...
...
src/pages/member/memberPrConfirm/index.tsx
View file @
52088727
...
...
@@ -3,6 +3,7 @@ import { history } from 'umi';
import
{
Card
,
Space
,
Button
,
Badge
,
Modal
,
message
}
from
'antd'
;
import
{
ClockCircleOutlined
,
QuestionCircleOutlined
}
from
'@ant-design/icons'
;
import
{
StandardTable
}
from
'god'
;
import
moment
from
'moment'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
EyePreview
from
'@/components/EyePreview'
;
...
...
@@ -129,8 +130,22 @@ const MemberPrConfirm: React.FC<{}> = props => {
};
const
fetchListData
=
async
(
params
:
any
)
=>
{
let
res
=
await
PublicApi
.
getMemberAbilityValidateConfirmPage
(
params
);
return
res
.
data
;
const
{
startDate
=
null
,
endDate
=
null
}
=
params
;
const
payload
=
{
...
params
};
if
(
startDate
)
{
payload
.
startDate
=
moment
(
+
startDate
).
format
(
'YYYY-MM-DD'
);
}
if
(
endDate
)
{
payload
.
endDate
=
moment
(
+
endDate
).
format
(
'YYYY-MM-DD'
);
}
const
res
=
await
PublicApi
.
getMemberAbilityValidateConfirmPage
(
payload
);
if
(
res
.
code
===
1000
)
{
return
res
.
data
;
}
return
[];
};
const
handleBatch
=
()
=>
{
...
...
src/pages/member/memberPrSubmit/index.tsx
View file @
52088727
...
...
@@ -3,6 +3,7 @@ import { history } from 'umi';
import
{
Card
,
Space
,
Button
,
Badge
,
Modal
,
message
}
from
'antd'
;
import
{
ClockCircleOutlined
,
QuestionCircleOutlined
}
from
'@ant-design/icons'
;
import
{
StandardTable
}
from
'god'
;
import
moment
from
'moment'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
EyePreview
from
'@/components/EyePreview'
;
...
...
@@ -126,8 +127,22 @@ const MemberPrSubmit: React.FC<{}> = props => {
};
const
fetchListData
=
async
(
params
:
any
)
=>
{
let
res
=
await
PublicApi
.
getMemberAbilityValidateCommitPage
(
params
);
return
res
.
data
;
const
{
startDate
=
null
,
endDate
=
null
}
=
params
;
const
payload
=
{
...
params
};
if
(
startDate
)
{
payload
.
startDate
=
moment
(
+
startDate
).
format
(
'YYYY-MM-DD'
);
}
if
(
endDate
)
{
payload
.
endDate
=
moment
(
+
endDate
).
format
(
'YYYY-MM-DD'
);
}
const
res
=
await
PublicApi
.
getMemberAbilityValidateCommitPage
(
payload
);
if
(
res
.
code
===
1000
)
{
return
res
.
data
;
}
return
[];
};
const
handleBatch
=
()
=>
{
...
...
src/pages/systemSetting/collection/commodity.tsx
View file @
52088727
import
React
from
'react'
import
cx
from
'classnames'
import
{
Button
,
Pagination
}
from
'antd'
import
{
StarFilled
}
from
'@ant-design/icons'
import
shop_icon
from
'@/assets/imgs/shop_icon.png'
import
credit_icon
from
'@/assets/imgs/credit_icon.png'
import
styles
from
'./index.less'
const
Commodity
:
React
.
FC
=
()
=>
{
let
CommodityList
=
Array
.
apply
({},
new
Array
(
7
))
return
(
<
div
>
Commodity
</
div
>
<>
<
div
className=
{
styles
.
commodity_list
}
>
{
CommodityList
.
map
((
item
,
index
)
=>
(
<
div
className=
{
styles
.
commodity_list_item
}
key=
{
`commodity_list_item_${index}`
}
>
<
div
className=
{
cx
(
styles
.
commodity_list_item_item
,
styles
.
morehalf
)
}
>
<
div
className=
{
styles
.
shop_header_info
}
>
<
div
className=
{
styles
.
shop_header_info_logo
}
>
<
img
src=
"https://shushangyun01.oss-cn-shenzhen.aliyuncs.com/69f3f329d5a848119dc89029a10acb081600332395671.jpg"
/>
</
div
>
<
div
className=
{
styles
.
shop_header_info_content
}
>
<
p
className=
{
styles
.
commodity_name
}
>
0.8-1.0mm黑色手折纹胎水牛皮
</
p
>
<
ul
className=
{
styles
.
tags_list
}
>
<
li
className=
{
styles
.
tags_list_item
}
key=
{
`tags_list_item`
}
>
黄牛头皮层自然摔纹
</
li
>
<
li
className=
{
styles
.
tags_list_item
}
key=
{
`tags_list_item`
}
>
硬度适中偏软
</
li
>
<
li
className=
{
styles
.
tags_list_item
}
key=
{
`tags_list_item`
}
>
手感舒适
</
li
>
</
ul
>
</
div
>
</
div
>
</
div
>
<
div
className=
{
cx
(
styles
.
commodity_list_item_item
)
}
>
<
div
className=
{
styles
.
shop_header_info_content_about_item
}
>
<
i
className=
{
styles
.
icon
}
><
img
src=
{
credit_icon
}
/></
i
>
<
span
>
1288
</
span
>
</
div
>
<
div
className=
{
styles
.
commodity_shopname
}
>
温州市龙昌皮业有限公司
</
div
>
</
div
>
<
div
className=
{
cx
(
styles
.
commodity_list_item_item
)
}
>
{
/* <div className={styles.commodity_price}>
<span>¥</span>
<label>79.00</label>
</div> */
}
{
/* <div className={styles.commodity_tag}>在线询价</div> */
}
<
div
className=
{
styles
.
commodity_point
}
>
2,000~3,000积分
</
div
>
</
div
>
<
div
className=
{
cx
(
styles
.
commodity_list_item_item
)
}
>
<
span
className=
{
styles
.
date
}
>
2020-10-25 10:58
</
span
>
</
div
>
<
div
className=
{
cx
(
styles
.
commodity_list_item_item
)
}
>
<
div
className=
{
styles
.
collection_state_wrap
}
>
<
div
className=
{
cx
(
styles
.
collection_state
)
}
>
<
StarFilled
/>
<
label
>
收藏
</
label
>
</
div
>
<
Button
className=
{
styles
.
collection_state_wrap_btn
}
type=
"primary"
>
再次购买
</
Button
>
</
div
>
</
div
>
</
div
>
))
}
</
div
>
<
div
className=
{
styles
.
pagination_wrap
}
>
<
Pagination
showSizeChanger=
{
false
}
defaultCurrent=
{
1
}
total=
{
100
}
/>
</
div
>
</>
)
}
...
...
src/pages/systemSetting/collection/index.less
View file @
52088727
...
...
@@ -152,6 +152,195 @@
}
}
.commodity_list {
&_item {
position: relative;
display: flex;
margin-bottom: 16px;
&_item {
flex: 1;
display: flex;
justify-content: center;
flex-direction: column;
.commodity_shopname {
color: #909399;
font-size: 12px;
margin-top: 4px;
}
.commodity_price {
color: #D32F2F;
}
.commodity_point {
color: #EA8000;
}
.commodity_tag {
width: 68px;
height: 24px;
line-height: 24px;
text-align: center;
background-color: #F0F8FF;
color: #3F7ED2;
font-size: 12px;
}
&.morehalf {
flex: 1.5;
}
.shop_header_info {
position: relative;
display: flex;
&_logo {
border-radius: 4px;
overflow: hidden;
width: 72px;
height: 72px;
margin-right: 16px;
&>img {
width: 72px;
height: 72px;
}
}
&_content {
position: relative;
display: flex;
flex-direction: column;
justify-content: center;
.commodity_name {
color: #303133;
margin-bottom: 4px;
max-width: 300px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.tags_list {
padding: 0;
margin: 0;
&_item {
display: inline-block;
list-style: none;
color: #999999;
font-size: 12px;
margin-right: 20px;
}
}
&_name {
font-size: 14px;
color: #333333;
font-weight: 500;
}
&_about {
display: flex;
margin-top: 10px;
&_item {
// flex: 1;
display: flex;
align-items: center;
margin-right: 16px;
&>span {
font-size: 14px;
color: #333333;
line-height: 20px;
&.red {
color: #D32F2F;
margin-right: 4px;
}
}
&>.icon {
position: relative;
top: -1px;
overflow: hidden;
margin-right: 5px;
&>img {
width: 20px;
height: 20px;
}
}
}
}
&_icon {
color: #cccccc;
font-size: 12px;
margin-left: 6px;
}
}
}
.date {
color: #909399;
font-size: 12px;
}
.collection_state_wrap {
display: flex;
align-items: center;
&_btn {
margin-left: 28px;
}
}
.collection_state {
font-size: 14px;
color: #00B37A;
cursor: pointer;
&>label {
margin-left: 4px;
cursor: pointer;
}
}
.rate_wrap {
font-size: 12px;
:global {
.ant-rate {
font-size: 14px;
}
}
}
.level_icon {
width: 54px;
height: 16px;
margin-bottom: 4px;
display: block;
background-size: 100% 100%;
background-repeat: no-repeat;
&.level3 {
background-image: url(/static/imgs/level2@2x.png);
}
}
}
}
}
.information_list {
&_item {
position: relative;
...
...
src/pages/systemSetting/collection/index.tsx
View file @
52088727
...
...
@@ -15,7 +15,7 @@ const Collection: React.FC = () => {
return
(
<
PageHeaderWrapper
>
<
div
className=
{
styles
.
collection_wrap
}
>
<
Tabs
defaultActiveKey=
"
information
"
className=
{
styles
.
collection_tabs
}
>
<
Tabs
defaultActiveKey=
"
commodity
"
className=
{
styles
.
collection_tabs
}
>
<
TabPane
tab=
"商品收藏"
key=
"commodity"
>
<
Commodity
/>
</
TabPane
>
...
...
src/pages/transaction/electronicContracts/apply/index.less
0 → 100644
View file @
52088727
.apply_info {
.apply_status {
padding: 24px;
border-radius: 8px;
margin-bottom: 24px;
display: flex;
align-items: center;
.status {
color: #FFFFFF;
font-size: 16px;
width: 195px;
}
.apply_status_btn {
&>button {
&:first-child {
margin-right: 24px;
}
}
}
}
&>.apply_item {
padding: 24px;
border-radius: 8px;
background-color: #FFF;
:global {
.ant-descriptions-item-label {
color: #909399;
width: 200px;
}
}
}
}
\ No newline at end of file
src/pages/transaction/electronicContracts/apply/index.tsx
View file @
52088727
import
React
from
'react'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
styles
from
'./index.less'
import
{
Link
}
from
'umi'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
ExclamationCircleFilled
,
CheckCircleFilled
,
ClockCircleFilled
,
CloseCircleFilled
}
from
'@ant-design/icons'
;
import
{
Descriptions
,
Button
}
from
'antd'
;
import
div
from
'./../../../editor/configs/componentConfigs/HTML/div'
;
const
Apply
=
()
=>
{
/**头部状态的颜色值 */
const
applyStaus
=
[{
status
:
1
,
name
:
'未申请'
,
icon
:
<
ExclamationCircleFilled
/>,
color
:
'#6B778C'
,
},
{
status
:
2
,
name
:
'申请通过'
,
icon
:
<
CheckCircleFilled
/>,
color
:
'#00B37A'
,
},
{
status
:
3
,
name
:
'申请中'
,
icon
:
<
ClockCircleFilled
/>,
color
:
'#4279DF'
,
},
{
status
:
4
,
name
:
'申请不通过'
,
icon
:
<
CloseCircleFilled
/>,
color
:
'#D32F2F'
,
}]
const
num
=
1
return
(
<
PageHeaderWrapper
>
<
div
>
123
</
div
>
<
div
className=
{
styles
.
apply_info
}
>
{
applyStaus
.
map
(
item
=>
(
<
div
key=
{
item
.
status
}
>
{
num
===
item
.
status
&&
<
div
className=
{
styles
.
apply_status
}
style=
{
{
backgroundColor
:
item
.
color
}
}
>
<
div
>
<
div
className=
{
styles
.
status
}
style=
{
{
opacity
:
.
6
,
fontSize
:
'12px'
}
}
>
申请状态
</
div
>
<
div
className=
{
styles
.
status
}
>
{
item
.
icon
}
{
item
.
name
}
</
div
>
</
div
>
<
div
className=
{
styles
.
apply_status_btn
}
>
<
Link
to=
{
`/memberCenter/tranactionAbility/electronicContracts/enterpriseCertified`
}
><
Button
size=
'middle'
style=
{
{
color
:
item
.
color
}
}
>
{
item
.
status
===
1
?
'立即申请'
:
'重新申请'
}
</
Button
></
Link
>
{
item
.
status
===
3
&&
<
Button
size=
'middle'
ghost
>
查看进度
</
Button
>
}
</
div
>
</
div
>
}
</
div
>
))
}
<
div
className=
{
styles
.
apply_item
}
>
<
Descriptions
title=
"申请信息"
column=
{
1
}
>
<
Descriptions
.
Item
label=
"公司名称"
>
温州市隆昌皮业有限公司
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"统一社会信用代码"
>
4324324325425435
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"法人姓名"
>
张三
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"法人手机号"
>
+86 185 2929 6758
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"法人身份证号"
>
321023 19891205 3746
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"认证方式"
>
-
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"验证方式"
>
-
</
Descriptions
.
Item
>
</
Descriptions
>
</
div
>
</
div
>
</
PageHeaderWrapper
>
)
}
...
...
src/pages/transaction/electronicContracts/classSearch/index.tsx
View file @
52088727
import
React
from
'react'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
Card
,
Row
,
Col
,
Input
,
Button
}
from
'antd'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
StandardTable
}
from
'god'
;
const
ClassSearch
=
()
=>
{
//表头
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'ID'
,
dataIndex
:
'id'
,
width
:
'128px'
},
{
title
:
'参数名称'
,
dataIndex
:
'name'
,
},
{
title
:
'参数描述'
,
dataIndex
:
'describe'
,
},
{
title
:
'状态'
,
dataIndex
:
'status'
,
}]
return
(
<
PageHeaderWrapper
>
<
div
>
123
</
div
>
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
'id'
,
}
}
columns=
{
columns
}
controlRender=
{
<
Row
>
<
Col
span=
{
12
}
>
<
Input
.
Search
style=
{
{
width
:
'256px'
,
marginRight
:
'24px'
,
marginBottom
:
'24px'
}
}
placeholder=
'搜索'
/>
<
Button
>
重置
</
Button
>
</
Col
>
</
Row
>
}
/>
</
Card
>
</
PageHeaderWrapper
>
)
}
...
...
src/pages/transaction/electronicContracts/components/alipay/index.tsx
0 → 100644
View file @
52088727
import
React
from
'react'
import
{
Result
}
from
'antd'
import
styles
from
'../index.less'
const
Alipay
=
()
=>
{
return
(
<
div
className=
{
styles
.
info_wrap
}
>
<
Result
title=
"请使用法人手机号注册的支付宝账号登录支付"
extra=
{
[
<
div
className=
{
styles
.
info_wran
}
>
并使用支付宝首页的扫一扫功能
</
div
>,
<
div
className=
{
styles
.
info_wran
}
>
扫描下面的二维码,然后按照支付宝APP的
</
div
>,
<
div
className=
{
styles
.
alipay_qrcode
}
/>,
<
div
><
AlipayCircleOutlined
/>
支付宝扫一扫
</
div
>
]
}
/>
</
div
>
)
}
export
default
Alipay
src/pages/transaction/electronicContracts/components/corporate/index.tsx
0 → 100644
View file @
52088727
import
React
from
'react'
import
{
Button
,
Row
,
Col
}
from
'antd'
import
styles
from
'../index.less'
import
cx
from
'classnames'
import
{
QuestionCircleOutlined
}
from
'@ant-design/icons'
;
const
Corporate
=
()
=>
{
return
(
<
div
className=
{
styles
.
info_wrap
}
>
<
div
className=
{
styles
.
info_item
}
>
<
div
className=
{
styles
.
info_item_con
}
>
<
div
className=
{
styles
.
item_con
}
>
<
div
className=
{
styles
.
item_label
}
>
认证方式
<
QuestionCircleOutlined
style=
{
{
color
:
'#C0C4CC'
}
}
/></
div
>
<
div
className=
{
styles
.
item_control
}
>
<
Row
className=
{
styles
.
card_checkbox
}
>
<
Col
className=
{
cx
(
styles
.
card_checkbox_item
,
styles
.
active
)
}
>
支付宝验证
</
Col
>
<
Col
className=
{
cx
(
styles
.
card_checkbox_item
,
styles
.
active
)
}
>
手机验证码验证
</
Col
>
</
Row
>
</
div
>
</
div
>
<
div
className=
{
styles
.
item_con
}
>
<
div
className=
{
styles
.
item_label
}
></
div
>
<
div
className=
{
styles
.
item_control
}
>
<
Button
type=
'primary'
>
下一步
</
Button
>
<
Button
>
上一步
</
Button
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
)
}
export
default
Corporate
src/pages/transaction/electronicContracts/components/enterpriseInfoCheck/index.tsx
0 → 100644
View file @
52088727
import
React
from
'react'
import
styles
from
'../index.less'
import
{
Button
,
Row
,
Col
}
from
'antd'
import
cx
from
'classnames'
import
{
QuestionCircleOutlined
}
from
'@ant-design/icons'
;
const
EnterpriseInfoCheck
=
()
=>
{
return
(
<
div
className=
{
styles
.
info_wrap
}
>
<
div
className=
{
styles
.
info_item
}
>
<
div
className=
{
styles
.
info_item_title
}
>
企业信息核验
</
div
>
<
div
className=
{
styles
.
info_item_con
}
>
<
div
className=
{
styles
.
item_con
}
>
<
div
className=
{
styles
.
item_label
}
>
公司名称:
</
div
>
<
div
className=
{
styles
.
item_control
}
>
温州市隆昌皮业有限公司
</
div
>
</
div
>
<
div
className=
{
styles
.
item_con
}
>
<
div
className=
{
styles
.
item_label
}
>
统一社会信用代码:
</
div
>
<
div
className=
{
styles
.
item_control
}
>
4324324325425435
</
div
>
</
div
>
</
div
>
</
div
>
<
div
className=
{
styles
.
info_item
}
>
<
div
className=
{
styles
.
info_item_title
}
>
法人信息核验
</
div
>
<
div
className=
{
styles
.
info_item_con
}
>
<
div
className=
{
styles
.
item_con
}
>
<
div
className=
{
styles
.
item_label
}
>
法人姓名:
</
div
>
<
div
className=
{
styles
.
item_control
}
>
张三
</
div
>
</
div
>
<
div
className=
{
styles
.
item_con
}
>
<
div
className=
{
styles
.
item_label
}
>
法人手机号:
</
div
>
<
div
className=
{
styles
.
item_control
}
>
+86 185 2929 6758
</
div
>
</
div
>
<
div
className=
{
styles
.
item_con
}
>
<
div
className=
{
styles
.
item_label
}
>
法人身份证号:
</
div
>
<
div
className=
{
styles
.
item_control
}
>
321023 19891205 3746
</
div
>
</
div
>
</
div
>
</
div
>
<
div
className=
{
cx
(
styles
.
info_item
,
styles
.
info_dashed
)
}
>
<
div
className=
{
styles
.
info_item_con
}
>
<
div
className=
{
styles
.
item_con
}
>
<
div
className=
{
styles
.
item_label
}
>
认证方式
<
QuestionCircleOutlined
style=
{
{
color
:
'#C0C4CC'
}
}
/></
div
>
<
div
className=
{
styles
.
item_control
}
>
<
Row
className=
{
styles
.
card_checkbox
}
>
<
Col
className=
{
cx
(
styles
.
card_checkbox_item
,
styles
.
active
)
}
>
法人认证
</
Col
>
<
Col
className=
{
cx
(
styles
.
card_checkbox_item
,
styles
.
active
)
}
>
经办人认证
</
Col
>
</
Row
>
</
div
>
</
div
>
<
div
className=
{
styles
.
item_con
}
>
<
div
className=
{
styles
.
item_label
}
></
div
>
<
div
className=
{
styles
.
item_control
}
>
<
Button
type=
'primary'
>
下一步
</
Button
>
</
div
>
</
div
>
</
div
>
</
div
>
</
div
>
)
}
export
default
EnterpriseInfoCheck
\ No newline at end of file
src/pages/transaction/electronicContracts/components/index.less
0 → 100644
View file @
52088727
.info_wrap {
padding: 24px;
min-height: 668px;
border-top: #EEF0F3 solid 1px;
background-color: #FFFFFF;
:global {
.ant-result-icon {
display: none;
}
}
.info_wran {
color: #909399;
font-size: 14px;
padding-bottom: 8px;
}
.alipay_qrcode {
width: 240px;
height: 240px;
margin: 24px auto !important;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid #EBECF0;
box-sizing: border-box;
}
.info_item {
.info_item_title {
position: relative;
padding: 12px 0px 12px 8px;
font-size: 14px;
color: #606266;
border-bottom: 1px solid #EEF0F3;
&::after {
content: '';
position: absolute;
left: 0;
top: 0;
bottom: 0;
margin: auto;
height: 16px;
width: 2px;
background-color: #00B37A;
}
}
.info_item_con {
padding: 12px 0px;
.item_con {
padding: 12px 0px;
display: flex;
font-size: 14px;
.item_label {
width: 176px;
color: #909399;
}
.item_control {
color: #303133;
button {
&:last-child {
margin-left: 24px;
}
}
}
}
}
.card_checkbox {
display: flex;
flex-wrap: wrap;
}
.card_checkbox_item {
min-width: 112px;
height: 32px;
margin-right: 32px;
margin-bottom: 16px;
border: 1px solid rgba(235, 236, 240, 1);
padding: 0 16px;
display: flex;
justify-content: center;
align-items: center;
cursor: pointer;
}
.card_checkbox_item.active {
border-color: #00B382;
position: relative;
color: #00B382;
}
.card_checkbox_item.active::after {
content: '';
position: absolute;
bottom: 0;
right: 0;
width: 0;
height: 0;
border: 6px solid transparent;
border-right: 6px solid #00B382;
border-bottom: 6px solid #00B382;
}
}
.info_dashed {
position: relative;
&::after {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
margin: auto;
width: 96%;
border-top: 1px dashed #EBECF0;
}
}
}
src/pages/transaction/electronicContracts/components/steps/index.less
0 → 100644
View file @
52088727
.step_info {
padding: 24px 128px;
background-color: #FAFBFC;
:global {
.ant-steps-item-finish {
.ant-steps-item-icon {
background-color: #00B37A;
.ant-steps-icon {
color: #FFFFFF;
}
}
}
.ant-steps-item-wait {
.ant-steps-item-icon {
background-color: #DFE1E6;
border-color: #DCDCDC;
.ant-steps-icon {
color: #606266;
}
}
}
}
}
\ No newline at end of file
src/pages/transaction/electronicContracts/components/steps/index.tsx
0 → 100644
View file @
52088727
import
React
from
'react'
import
styles
from
'./index.less'
import
{
Steps
}
from
'antd'
const
{
Step
}
=
Steps
;
const
StepComponents
=
()
=>
{
return
(
<
div
className=
{
styles
.
step_info
}
>
<
Steps
size=
"small"
current=
{
0
}
>
<
Step
title=
"企业信息核验"
/>
<
Step
title=
"经办人/法人认证"
/>
<
Step
title=
"企业认证"
/>
</
Steps
>
</
div
>
)
}
export
default
StepComponents
\ No newline at end of file
src/pages/transaction/electronicContracts/enterpriseCertified/index.tsx
0 → 100644
View file @
52088727
import
React
from
'react'
import
{
history
}
from
'umi'
import
ReutrnEle
from
'@/components/ReturnEle'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
StepComponents
from
'../components/steps'
import
EnterpriseInfoCheck
from
'../components/enterpriseInfoCheck'
import
Corporate
from
'../components/Corporate'
import
Alipay
from
'../components/Alipay'
const
EnterpriseCertified
=
()
=>
{
return
(
<
PageHeaderWrapper
onBack=
{
()
=>
history
.
goBack
()
}
backIcon=
{
<
ReutrnEle
description=
"返回"
/>
}
>
<
StepComponents
/>
<
EnterpriseInfoCheck
/>
<
Corporate
/>
<
Alipay
/>
</
PageHeaderWrapper
>
)
}
export
default
EnterpriseCertified
src/pages/transaction/electronicContracts/personalCertified/index.tsx
0 → 100644
View file @
52088727
import
React
from
'react'
import
{
history
}
from
'umi'
import
ReutrnEle
from
'@/components/ReturnEle'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
const
PersonalCertified
=
()
=>
{
return
(
<
PageHeaderWrapper
onBack=
{
()
=>
history
.
goBack
()
}
backIcon=
{
<
ReutrnEle
description=
"返回"
/>
}
>
<
div
>
123
</
div
>
</
PageHeaderWrapper
>
)
}
export
default
PersonalCertified
\ No newline at end of file
src/pages/transaction/electronicContracts/template/index.tsx
View file @
52088727
import
React
from
'react'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
Card
,
Row
,
Col
,
Input
,
Button
}
from
'antd'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
StandardTable
}
from
'god'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
{
PlusOutlined
}
from
'@ant-design/icons'
;
const
Template
=
()
=>
{
//表头
const
columns
:
ColumnType
<
any
>
[]
=
[{
title
:
'ID'
,
dataIndex
:
'id'
,
width
:
'128px'
},
{
title
:
'合同模板名称'
,
dataIndex
:
'name'
,
render
:
(
text
:
any
,
record
:
any
)
=>
{
return
(
<
EyePreview
url=
{
`/memberCenter/tranactionAbility/stockSellStorage/addWarehouse?id=${record.id}&preview=1`
}
>
名称
</
EyePreview
>
);
},
},
{
title
:
'版本号'
,
dataIndex
:
'version'
,
},
{
title
:
'模板说明'
,
dataIndex
:
'description'
,
},
{
title
:
'状态'
,
dataIndex
:
'status'
,
sorter
:
(
a
,
b
)
=>
a
.
state
-
b
.
state
,
},
{
title
:
'操作'
,
dataIndex
:
'action'
,
}]
return
(
<
PageHeaderWrapper
>
<
div
>
123
</
div
>
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
'id'
,
}
}
columns=
{
columns
}
controlRender=
{
<
Row
justify=
'space-between'
>
<
Col
>
<
Button
type=
'primary'
><
PlusOutlined
/>
新增
</
Button
>
</
Col
>
<
Col
>
<
Input
.
Search
style=
{
{
width
:
'256px'
,
marginRight
:
'24px'
,
marginBottom
:
'24px'
}
}
placeholder=
'搜索'
/>
<
Button
>
重置
</
Button
>
</
Col
>
</
Row
>
}
/>
</
Card
>
</
PageHeaderWrapper
>
)
}
...
...
src/pages/transaction/stockSellStorage/bills/addBills/effects/useBusinessEffects.ts
View file @
52088727
...
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-09-16 15:16:47
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-09-2
1 11:58:49
* @LastEditTime: 2020-09-2
2 09:53:36
* @Description: 联动逻辑相关
*/
import
{
FormEffectHooks
,
FormPath
}
from
'@formily/antd'
;
...
...
@@ -24,6 +24,7 @@ import {
DOC_TYPE_RETURN_RECEIPT
,
DOC_TYPE_EXCHANGE_INVOICE
,
DOC_TYPE_EXCHANGE_RECEIPT
,
PurchaseOrderInsideWorkStateTexts
,
}
from
'@/constants'
;
import
Search
from
'@/components/NiceForm/components/Search'
;
import
Submit
from
'@/components/NiceForm/components/Submit'
;
...
...
@@ -68,7 +69,8 @@ const orderColumns: any[] = [
{
title
:
'订单状态'
,
align
:
'center'
,
dataIndex
:
'externalState'
,
dataIndex
:
'interiorState'
,
render
:
text
=>
PurchaseOrderInsideWorkStateTexts
[
text
],
},
];
...
...
src/pages/transaction/stockSellStorage/billsType/schema/index.tsx
View file @
52088727
...
...
@@ -24,9 +24,20 @@ export const billsTypeDetailSchema: ISchema = {
title
:
'单据类型编号'
,
'x-component-props'
:
{
placeholder
:
'最长10个字符'
,
maxLength
:
5
,
maxLength
:
10
,
},
required
:
true
,
'x-rules'
:
[
{
required
:
true
,
message
:
'请输入单据类型编号'
,
},
{
validator
:
value
=>
{
const
CNReg
=
/
[\u
4E00-
\u
9FA5
]
/g
;
return
CNReg
.
test
(
value
)
?
'请输入非中文字符,可以是字母 + 数字 + 字符的组合'
:
''
;
},
},
],
},
name
:
{
type
:
'string'
,
...
...
src/pages/transaction/stockSellStorage/warehouse/schema/index.tsx
View file @
52088727
...
...
@@ -110,7 +110,16 @@ export const warehouseDetailSchema: ISchema = {
'x-component-props'
:
{
label
:
'仓库名称'
,
wrapperCol
:
24
,
required
:
true
,
'x-rules'
:
[
{
required
:
true
,
message
:
'请输入仓库名称'
,
},
{
limitByte
:
true
,
// 自定义校验规则
maxByte
:
20
,
}
],
},
properties
:
{
MEGA_LAYOUT1_1
:
{
...
...
@@ -185,7 +194,13 @@ export const warehouseDetailSchema: ISchema = {
principal
:
{
type
:
'string'
,
title
:
'仓库负责人'
,
'x-component-props'
:
{},
'x-component-props'
:
{},
'x-rules'
:
[
{
limitByte
:
true
,
// 自定义校验规则
maxByte
:
16
,
}
],
},
MEGA_LAYOUT2
:
{
type
:
'object'
,
...
...
@@ -221,10 +236,6 @@ export const warehouseDetailSchema: ISchema = {
},
'x-rules'
:
[
{
required
:
true
,
message
:
'请输入你的手机号码'
,
},
{
pattern
:
PATTERN_MAPS
.
phone
,
message
:
'请输入正确格式的手机号'
,
},
...
...
src/pages/transaction/supplierEvaluation/analysis/index.less
0 → 100644
View file @
52088727
.tabs {
:global {
.ant-tabs-nav {
margin: 0 0 24px 0;
&::before {
border-bottom: none;
}
}
}
}
\ No newline at end of file
src/pages/transaction/supplierEvaluation/analysis/index.tsx
0 → 100644
View file @
52088727
import
React
from
'react'
;
import
{
Tabs
,
Row
,
Col
,
Button
}
from
'antd'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
MellowCard
from
'@/components/MellowCard'
;
import
PolymericTable
from
'@/components/PolymericTable'
;
import
{
EditableColumns
}
from
'@/components/PolymericTable/interface'
;
import
{
Pie
}
from
'@/components/Charts'
;
import
Mood
from
'@/components/Mood'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
searchSchema
}
from
'./schema'
;
import
Shelves
from
'../components/Shelves'
;
import
RecordList
from
'../components/RecordList'
;
import
styles
from
'./index.less'
;
const
{
TabPane
}
=
Tabs
;
const
receivedFormActions
=
createFormActions
();
const
sentFormActions
=
createFormActions
();
const
Analysis
:
React
.
FC
=
()
=>
{
const
evaluateColumns
:
EditableColumns
[]
=
[
{
title
:
' '
,
dataIndex
:
'title'
,
align
:
'center'
,
},
{
title
:
'最近7天'
,
dataIndex
:
'last7days'
,
align
:
'center'
,
},
{
title
:
'最近30天'
,
dataIndex
:
'last30days'
,
align
:
'center'
,
},
{
title
:
'最近180天'
,
dataIndex
:
'last180days'
,
align
:
'center'
,
},
{
title
:
'180天前'
,
dataIndex
:
'before180days'
,
align
:
'center'
,
},
];
const
evaluatePie
=
[
{
x
:
`好评 30%`
,
y
:
100
,
},
{
x
:
`中评 20%`
,
y
:
50
,
},
{
x
:
`差评 10%`
,
y
:
10
,
},
];
const
evaluate
=
[
{
id
:
1
,
title
:
(<
Mood
type=
"smile"
/>),
last7days
:
10
,
last30days
:
20
,
last180days
:
30
,
before180days
:
30
,
},
{
id
:
2
,
title
:
(<
Mood
type=
"notBad"
/>),
last7days
:
10
,
last30days
:
20
,
last180days
:
30
,
before180days
:
30
,
},
{
id
:
3
,
title
:
(<
Mood
type=
"sad"
/>),
last7days
:
10
,
last30days
:
20
,
last180days
:
30
,
before180days
:
30
,
},
];
return
(
<
PageHeaderWrapper
>
<
MellowCard
bodyStyle=
{
{
padding
:
'0 24px 24px'
,
}
}
>
<
Tabs
className=
{
styles
.
tabs
}
>
<
TabPane
tab=
"概览"
key=
"1"
>
<
Shelves
title=
"评价统计"
>
<
Row
gutter=
{
24
}
>
<
Col
flex=
"399px"
>
<
Pie
hasLegend
subTitle=
"累计评价"
total=
{
()
=>
evaluatePie
.
reduce
((
pre
,
now
)
=>
now
.
y
+
pre
,
0
)
}
data=
{
evaluatePie
}
height=
{
200
}
colProps=
{
{
span
:
8
,
}
}
colors=
{
[
'#41CC9E'
,
'#FFC400'
,
'#EF6260'
]
}
/>
</
Col
>
<
Col
flex=
"auto"
>
<
PolymericTable
dataSource=
{
evaluate
}
columns=
{
evaluateColumns
}
loading=
{
false
}
pagination=
{
null
}
rowClassName=
{
()
=>
styles
[
'record-row'
]
}
/>
</
Col
>
</
Row
>
</
Shelves
>
<
Shelves
title=
"评价记录"
>
<
RecordList
list=
{
[]
}
/>
<
div
style=
{
{
padding
:
'24px 0'
,
textAlign
:
'center'
,
}
}
>
<
Button
>
查看更多评论
</
Button
>
</
div
>
</
Shelves
>
</
TabPane
>
<
TabPane
tab=
"收到的评价"
key=
"2"
>
<
NiceForm
actions=
{
receivedFormActions
}
onSubmit=
{
values
=>
{}
}
effects=
{
(
$
,
actions
)
=>
{
}
}
schema=
{
searchSchema
}
/>
<
RecordList
list=
{
[]
}
/>
</
TabPane
>
<
TabPane
tab=
"发出的评价"
key=
"3"
>
<
NiceForm
actions=
{
sentFormActions
}
onSubmit=
{
values
=>
{}
}
effects=
{
(
$
,
actions
)
=>
{
}
}
schema=
{
searchSchema
}
/>
<
RecordList
list=
{
[]
}
/>
</
TabPane
>
</
Tabs
>
</
MellowCard
>
</
PageHeaderWrapper
>
);
};
export
default
Analysis
;
\ No newline at end of file
src/pages/transaction/supplierEvaluation/analysis/schema/index.ts
0 → 100644
View file @
52088727
/*
* @Author: XieZhiXiong
* @Date: 2020-09-22 20:34:49
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-09-22 20:52:53
* @Description:
*/
import
{
ISchema
}
from
'@formily/antd'
;
export
const
searchSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
megaLayout
:
{
type
:
'object'
,
'x-component'
:
'Mega-Layout'
,
'x-component-props'
:
{
inline
:
true
,
},
properties
:
{
star
:
{
type
:
'string'
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'评论星级'
,
allowClear
:
true
,
style
:
{
width
:
206
,
},
},
},
'[startDate, endDate]'
:
{
type
:
'string'
,
default
:
''
,
'x-component'
:
'dateSelect'
,
'x-component-props'
:
{
placeholder
:
'交易时间'
,
allowClear
:
true
,
style
:
{
width
:
206
,
},
},
},
name
:
{
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'搜索'
,
align
:
'flex-left'
,
advanced
:
false
,
},
},
},
},
},
};
\ No newline at end of file
src/pages/transaction/supplierEvaluation/components/EvaluationList/index.less
0 → 100644
View file @
52088727
src/pages/transaction/supplierEvaluation/components/EvaluationList/index.tsx
0 → 100644
View file @
52088727
import
React
from
'react'
;
import
{
Row
,
Col
,
Button
,
}
from
'antd'
;
import
styled
from
'styled-components'
;
import
{
SchemaForm
,
SchemaField
,
SchemaMarkupField
as
Field
}
from
'@formily/antd'
;
import
{
ArrayList
}
from
'@formily/react-shared-components'
;
import
{
toArr
,
isFn
,
FormPath
}
from
'@formily/shared'
;
import
SmilingFace
from
'@/components/NiceForm/components/SmilingFace'
;
const
ArrayComponents
=
{
CircleButton
:
props
=>
<
Button
{
...
props
}
/>,
TextButton
:
props
=>
<
Button
text
{
...
props
}
/>,
AdditionIcon
:
()
=>
<
div
>
+Add
</
div
>,
RemoveIcon
:
()
=>
<
div
>
Remove
</
div
>,
MoveDownIcon
:
()
=>
<
div
>
Down
</
div
>,
MoveUpIcon
:
()
=>
<
div
>
Up
</
div
>
};
const
RowStyleLayout
=
styled
(
props
=>
<
div
{
...
props
}
/>)
`
padding: 24px 64px 24px 24px;
background: #ffffff;
.ant-btn {
margin-right: 16px;
}
.ant-form-item {
display: flex;
margin-right: 16px;
margin-bottom: 16px;
}
> .ant-form-item {
margin-bottom: 0;
margin-right: 0;
}
.goodInfo {
display: flex;
align-items: align;
&-left {
flex-shrink: 0;
margin-right: 16px;
width: 100px;
height: 100px;
> img {
width: 100%;
height: 100%;
object-fit: cover;
}
}
&-right {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
}
&-title {
line-height: 14px;
margin-bottom: 18px;
font-size: 14px;
font-weight: 400;
color: #303133;
}
&-desc {
line-height: 12px;
margin-bottom: 16px;
font-size: 12px;
font-weight: 400;
color: #909399;
}
&-price {
line-height: 14px;
font-size: 14px;
font-weight: 500;
color: #303133;
}
}
.main {
position: relative;
padding-left: 24px;
> .ant-form-item {
margin-bottom: 0;
margin-right: 0;
}
::after {
content: ' ';
display: block;
position: absolute;
top: 6%;
left: 0;
bottom: 6%;
border-left: 1px dashed #EEF0F3;
}
}
`
;
const
EvaluationList
=
props
=>
{
const
{
value
,
schema
,
className
,
editable
,
path
,
mutators
}
=
props
;
const
{
renderAddition
,
renderRemove
,
renderMoveDown
,
renderMoveUp
,
renderEmpty
,
renderExtraOperations
,
...
componentProps
}
=
schema
.
getExtendsComponentProps
()
||
{};
return
(
<
ArrayList
value=
{
value
}
minItems=
{
schema
.
minItems
}
maxItems=
{
schema
.
maxItems
}
editable=
{
editable
}
components=
{
ArrayComponents
}
>
{
toArr
(
value
).
map
((
item
,
index
)
=>
{
return
(
<
RowStyleLayout
{
...
componentProps
}
key=
{
index
}
>
<
Row
align=
"middle"
>
<
Col
span=
{
10
}
>
<
div
className=
"goodInfo"
>
<
div
className=
"goodInfo-left"
>
<
img
src=
{
item
.
good
?
item
.
good
.
pic
:
''
}
/>
</
div
>
<
div
className=
"goodInfo-right"
>
<
div
className=
"goodInfo-title"
>
进口头层黄牛皮荔枝纹/红色/XL
</
div
>
<
div
className=
"goodInfo-desc"
>
20 平方英尺
</
div
>
<
div
className=
"goodInfo-price"
>
¥ 400.00
</
div
>
</
div
>
</
div
>
</
Col
>
<
Col
span=
{
10
}
>
<
div
className=
"main"
>
<
SchemaField
path=
{
FormPath
.
parse
(
path
).
concat
(
index
)
}
/>
</
div
>
</
Col
>
<
Col
span=
{
4
}
>
<
div
style=
{
{
textAlign
:
'right'
}
}
>
<
SmilingFace
value=
{
2
}
/>
</
div
>
</
Col
>
</
Row
>
</
RowStyleLayout
>
)
})
}
</
ArrayList
>
)
}
EvaluationList
.
isFieldComponent
=
true
;
export
default
EvaluationList
;
\ No newline at end of file
src/pages/transaction/supplierEvaluation/components/RecordList/index.less
0 → 100644
View file @
52088727
@import '../../../../../global/styles/utils.less';
.record {
padding: 0;
margin: 0;
&-item {
padding: 14px 16px;
line-height: 14px;
display: flex;
align-items: center;
background: #FAFBFC;
color: #303133;
&-good {
width: 25%;
&-name {
line-height: 14px;
margin-bottom: 13px;
font-size: 14px;
font-weight: 400;
}
&-price {
margin-right: 16px;
font-weight: 500;
}
&-desc {
line-height: 12px;
font-weight: 400;
color: #909399;
}
}
&-extra {
width: 20%;
&-item {
display: flex;
align-items: center;
&-label {
flex: 0 0 60px;
line-height: 12px;
font-size: 12px;
font-weight: 400;
color: #909399;
}
&-control {
flex: 1;
}
&:not(:last-child) {
margin-bottom: 13px;
}
}
}
&-comment {
width: 40%;
&-main {
margin-top: 6px;
line-height: 14px;
font-weight: 400;
color: #303133;
.textOverflow();
}
}
&-actions {
flex: 1;
text-align: center;
}
&:not(:last-child) {
margin-bottom: 16px;
}
}
}
\ No newline at end of file
src/pages/transaction/supplierEvaluation/components/RecordList/index.tsx
0 → 100644
View file @
52088727
import
React
from
'react'
;
import
{
Button
,
Rate
}
from
'antd'
;
import
styles
from
'./index.less'
;
interface
RecordListProps
{
list
:
[];
};
const
RecordList
:
React
.
FC
<
RecordListProps
>
=
()
=>
{
return
(
<
ul
className=
{
styles
.
record
}
>
<
li
className=
{
styles
[
'record-item'
]
}
>
<
div
className=
{
styles
[
'record-item-good'
]
}
>
<
div
className=
{
styles
[
'record-item-good-name'
]
}
>
进口头层黄牛皮荔枝纹/红色/XL
</
div
>
<
div
>
<
span
className=
{
styles
[
'record-item-good-price'
]
}
>
¥400.00
</
span
>
<
span
className=
{
styles
[
'record-item-good-desc'
]
}
>
20 平方英尺
</
span
>
</
div
>
</
div
>
<
div
className=
{
styles
[
'record-item-extra'
]
}
>
<
div
className=
{
styles
[
'record-item-extra-item'
]
}
>
<
div
className=
{
styles
[
'record-item-extra-item-label'
]
}
>
交易时间:
</
div
>
<
div
className=
{
styles
[
'record-item-extra-item-control'
]
}
>
2020-05-20 17:09
</
div
>
</
div
>
<
div
className=
{
styles
[
'record-item-extra-item'
]
}
>
<
div
className=
{
styles
[
'record-item-extra-item-label'
]
}
>
评价方:
</
div
>
<
div
className=
{
styles
[
'record-item-extra-item-control'
]
}
>
温州龙昌手袋有限公司
</
div
>
</
div
>
</
div
>
<
div
className=
{
styles
[
'record-item-comment'
]
}
>
<
Rate
value=
{
2
}
disabled
/>
<
div
className=
{
styles
[
'record-item-comment-main'
]
}
>
付款准时,合作愉快。付款准时,合作愉快。付款准时,合作愉快。付款准时,合作愉快。付款准时…
</
div
>
</
div
>
<
div
className=
{
styles
[
'record-item-actions'
]
}
>
<
Button
type=
"link"
>
查看
</
Button
>
</
div
>
</
li
>
</
ul
>
);
};
export
default
RecordList
;
\ No newline at end of file
src/pages/transaction/supplierEvaluation/components/Shelves/index.less
0 → 100644
View file @
52088727
@import '../../../../../global/styles/index.less';
.shelves {
&-title {
line-height: 14px;
padding: 12px;
position: relative;
font-size: 14px;
font-weight: 400;
color: #606266;
border-bottom: 1px solid #EEF0F3;
&::after {
content: ' ';
display: block;
width: 2px;
position: absolute;
top: 30%;
left: 0;
bottom: 30%;
background: @primary-color;
}
}
&-content {
padding: 30px 0;
}
}
\ No newline at end of file
src/pages/transaction/supplierEvaluation/components/Shelves/index.tsx
0 → 100644
View file @
52088727
import
React
from
'react'
;
import
styles
from
'./index.less'
;
interface
ShelvesProps
{
title
?:
string
;
children
?:
React
.
ReactNode
;
};
const
Shelves
:
React
.
FC
<
ShelvesProps
>
=
({
title
=
'标题'
,
children
,
})
=>
{
return
(
<
div
className=
{
styles
.
shelves
}
>
<
div
className=
{
styles
[
'shelves-title'
]
}
>
{
title
}
</
div
>
<
div
className=
{
styles
[
'shelves-content'
]
}
>
{
children
}
</
div
>
</
div
>
);
};
export
default
Shelves
;
\ No newline at end of file
src/pages/transaction/supplierEvaluation/constans.tsx
0 → 100644
View file @
52088727
src/pages/transaction/supplierEvaluation/index.less
0 → 100644
View file @
52088727
src/pages/transaction/supplierEvaluation/index.tsx
0 → 100644
View file @
52088727
import
React
from
'react'
;
import
styles
from
'./index.less'
;
const
SupplierEvaluation
:
React
.
FC
=
()
=>
{
return
(
<
div
>
123
</
div
>
);
};
export
default
SupplierEvaluation
;
\ No newline at end of file
src/pages/transaction/supplierEvaluation/received/index.less
0 → 100644
View file @
52088727
src/pages/transaction/supplierEvaluation/received/index.tsx
0 → 100644
View file @
52088727
import
React
from
'react'
;
import
styles
from
'./index.less'
;
const
Received
:
React
.
FC
=
()
=>
{
return
(
<
div
>
Received
</
div
>
);
};
export
default
Received
;
\ No newline at end of file
src/pages/transaction/supplierEvaluation/sent/index.less
0 → 100644
View file @
52088727
src/pages/transaction/supplierEvaluation/sent/index.tsx
0 → 100644
View file @
52088727
import
React
from
'react'
;
import
styles
from
'./index.less'
;
const
Sent
:
React
.
FC
=
()
=>
{
return
(
<
div
>
Sent
</
div
>
);
};
export
default
Sent
;
\ No newline at end of file
src/pages/transaction/supplierEvaluation/unevaluated/evaluate.less
0 → 100644
View file @
52088727
src/pages/transaction/supplierEvaluation/unevaluated/evaluate.tsx
0 → 100644
View file @
52088727
import
React
from
'react'
;
import
{
PageHeader
,
Descriptions
,
Card
,
Spin
,
Button
,
}
from
'antd'
;
import
{
FormOutlined
}
from
'@ant-design/icons'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
history
}
from
'umi'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
{
Rating
}
from
'@formily/antd-components'
;
import
AvatarWrap
from
'@/components/AvatarWrap'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
evaluateSchema
}
from
'./schema'
;
import
EvaluationList
from
'../components/EvaluationList'
;
import
styles
from
'./evaluate.less'
;
const
formActions
=
createFormActions
();
const
EvaluateOrder
:
React
.
FC
=
()
=>
{
const
handleSubmit
=
values
=>
{
console
.
log
(
'values'
,
values
);
};
return
(
<
PageHeaderWrapper
title=
{
<>
<
PageHeader
style=
{
{
padding
:
'0'
}
}
onBack=
{
()
=>
history
.
goBack
()
}
title=
{
<
AvatarWrap
info=
{
{
aloneTxt
:
'单'
,
name
:
'订单号:DPTY12'
}
}
/>
}
extra=
{
(
<>
<
Button
type=
"primary"
icon=
{
<
FormOutlined
/>
}
onClick=
{
()
=>
{}
}
>
发布
</
Button
>
</>
)
}
>
<
Descriptions
size=
"small"
column=
{
3
}
style=
{
{
padding
:
'0 32px'
,
}
}
>
<
Descriptions
.
Item
label=
"采购会员"
>
BPTY12
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"下单时间"
span=
{
2
}
>
2020-08-25 08:49
</
Descriptions
.
Item
>
</
Descriptions
>
</
PageHeader
>
</>
}
>
<
NiceForm
actions=
{
formActions
}
onSubmit=
{
handleSubmit
}
components=
{
{
EvaluationList
,
Rating
,
}
}
effects=
{
(
$
,
actions
)
=>
{
}
}
schema=
{
evaluateSchema
}
/>
</
PageHeaderWrapper
>
);
};
export
default
EvaluateOrder
;
\ No newline at end of file
src/pages/transaction/supplierEvaluation/unevaluated/index.less
0 → 100644
View file @
52088727
src/pages/transaction/supplierEvaluation/unevaluated/index.tsx
0 → 100644
View file @
52088727
import
React
,
{
useState
,
useRef
}
from
'react'
;
import
{
Card
,
Badge
,
Button
}
from
'antd'
;
import
{
StandardTable
}
from
'god'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
useAsyncInitSelect
}
from
'@/formSchema/effects/useAsyncInitSelect'
;
import
{
Link
}
from
'umi'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
StatusTag
from
'@/components/StatusTag'
;
import
{
listSearchSchema
}
from
'./schema'
;
import
styles
from
'./index.less'
;
const
formActions
=
createFormActions
();
const
mock
=
[
{
orderNo
:
'DPTY12'
,
abstract
:
'进口头层黄牛皮荔枝纹'
,
member
:
'广州白马皮具交易有限公司'
,
created
:
'2020-09-22 11:16:00'
,
amount
:
'¥ 50,000.00'
,
orderType
:
'现货采购'
,
outerStatusName
:
'已完成'
,
innerStatusName
:
'已完成'
,
},
{
orderNo
:
'DPTY13'
,
abstract
:
'进口头层黄牛皮荔枝纹'
,
member
:
'广州白马皮具交易有限公司'
,
created
:
'2020-09-22 11:16:00'
,
amount
:
'¥ 50,000.00'
,
orderType
:
'现货采购'
,
outerStatusName
:
'已完成'
,
innerStatusName
:
'已完成'
,
},
];
const
Unevaluated
:
React
.
FC
=
()
=>
{
const
ref
=
useRef
<
any
>
({});
const
defaultColumns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'订单号'
,
dataIndex
:
'orderNo'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
(
<
EyePreview
url=
{
``
}
>
{
text
}
</
EyePreview
>
),
},
{
title
:
'订单摘要'
,
dataIndex
:
'abstract'
,
align
:
'center'
,
},
{
title
:
'采购会员'
,
dataIndex
:
'member'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
<>
{
text
}
</>,
},
{
title
:
'下单时间'
,
dataIndex
:
'created'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
<>
{
text
}
</>,
},
{
title
:
'订单总额'
,
dataIndex
:
'amount'
,
align
:
'center'
,
},
{
title
:
'订单类型'
,
dataIndex
:
'orderType'
,
align
:
'center'
,
},
{
title
:
'外部状态'
,
dataIndex
:
'outerStatusName'
,
align
:
'center'
,
filters
:
[],
onFilter
:
(
value
,
record
)
=>
record
.
outerStatus
===
value
,
render
:
(
text
,
record
)
=>
(
<
StatusTag
type=
"warnning"
title=
"已完成"
/>
),
},
{
title
:
'内部状态'
,
dataIndex
:
'innerStatusName'
,
align
:
'center'
,
filters
:
[],
onFilter
:
(
value
,
record
)
=>
record
.
innerStatus
===
value
,
render
:
(
text
,
record
)
=>
<
Badge
color=
"#42526E"
text=
"已完成"
/>,
},
{
title
:
'操作'
,
dataIndex
:
'option'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
(
<>
<
Link
to=
{
`/memberCenter/tranactionAbility/supplierEvaluation/unevaluated/evaluate`
}
>
<
Button
type=
"link"
>
评价
</
Button
>
</
Link
>
</>
),
},
];
const
[
columns
,
setColumns
]
=
useState
<
any
[]
>
(
defaultColumns
);
const
fetchListData
=
(
params
:
any
)
=>
{
return
Promise
.
resolve
({
total
:
2
,
data
:
mock
,
});
};
// 初始化高级筛选选项
const
fetchSelectOptions
=
async
()
=>
{
return
{};
};
return
(
<
PageHeaderWrapper
>
<
Card
>
<
StandardTable
tableProps=
{
{
rowKey
:
'orderNo'
,
}
}
columns=
{
columns
}
currentRef=
{
ref
}
fetchTableData=
{
(
params
:
any
)
=>
fetchListData
(
params
)
}
controlRender=
{
<
NiceForm
actions=
{
formActions
}
onSubmit=
{
values
=>
ref
.
current
.
reload
(
values
)
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'name'
,
FORM_FILTER_PATH
,
);
useAsyncInitSelect
(
[
'innerStatus'
,
'outerStatus'
],
fetchSelectOptions
,
);
}
}
schema=
{
listSearchSchema
}
/>
}
/>
</
Card
>
</
PageHeaderWrapper
>
);
};
export
default
Unevaluated
;
\ No newline at end of file
src/pages/transaction/supplierEvaluation/unevaluated/schema/index.tsx
0 → 100644
View file @
52088727
import
{
ISchema
}
from
'@formily/antd'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
export
const
listSearchSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
megaLayout
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
properties
:
{
name
:
{
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'搜索'
,
align
:
'flex-left'
,
tip
:
'输入 订单号、订单摘要 进行搜索'
,
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
'x-component-props'
:
{
grid
:
true
,
full
:
true
,
autoRow
:
true
,
columns
:
6
,
},
properties
:
{
memberTypeId
:
{
type
:
'string'
,
default
:
undefined
,
'x-component-props'
:
{
placeholder
:
'采购会员'
,
allowClear
:
true
,
},
},
'[startDate, endDate]'
:
{
type
:
'string'
,
default
:
''
,
'x-component'
:
'dateSelect'
,
'x-component-props'
:
{
placeholder
:
'下单时间'
,
allowClear
:
true
,
},
},
orderType
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'订单类型'
,
allowClear
:
true
,
},
},
outerStatus
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'外部状态(全部)'
,
allowClear
:
true
,
},
},
innerStatus
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
'x-component-props'
:
{
placeholder
:
'内部状态(全部)'
,
allowClear
:
true
,
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-mega-props'
:
{
span
:
1
,
},
'x-component-props'
:
{
children
:
'查询'
,
},
},
},
},
},
},
},
};
export
const
evaluateSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
comments
:
{
type
:
'array'
,
'x-component'
:
'EvaluationList'
,
default
:
[
{
name
:
'杰尼'
,
age
:
24
,
small
:
1
,
},
],
items
:
{
type
:
'object'
,
properties
:
{
MEGA_LADYOUT
:
{
type
:
'object'
,
'x-component'
:
'Mega-Layout'
,
'x-component-props'
:
{
labelCol
:
6
,
labelAlign
:
'left'
,
},
properties
:
{
star
:
{
title
:
'满意程度'
,
required
:
true
,
'x-component'
:
'Rating'
,
'x-component-props'
:
{
allowHalf
:
false
,
},
},
comment
:
{
type
:
'string'
,
title
:
'评价'
,
required
:
true
,
'x-component'
:
'TextArea'
,
'x-component-props'
:
{
rows
:
4
,
},
},
picture
:
{
type
:
'string'
,
title
:
'图片'
,
required
:
true
,
'x-component'
:
'CustomUpload'
,
'x-component-props'
:
{
},
},
},
},
},
},
},
},
};
\ No newline at end of file
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