Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
jinfa-platform
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陈智峰
jinfa-platform
Commits
00a66bb0
Commit
00a66bb0
authored
Oct 21, 2020
by
GuanHua
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
d0848794
82fbfd61
Hide whitespace changes
Inline
Side-by-side
Showing
39 changed files
with
2582 additions
and
704 deletions
+2582
-704
payandSettle.ts
config/routes/payandSettle.ts
+20
-0
confirmInquiryQuote.ts
config/routes/tranactionRoute/confirmInquiryQuote.ts
+51
-0
goodsOffer.ts
config/routes/tranactionRoute/goodsOffer.ts
+93
-0
index.ts
config/routes/tranactionRoute/index.ts
+8
-67
inquiryQuote.ts
config/routes/tranactionRoute/inquiryQuote.ts
+106
-0
index.ts
src/constants/index.ts
+4
-2
global.less
src/global/styles/global.less
+19
-3
menu.ts
src/locales/zh-CN/menu.ts
+14
-1
addProducts.tsx
src/pages/commodity/products/addProducts.tsx
+17
-10
viewProducts.tsx
src/pages/commodity/products/viewProducts.tsx
+2
-2
index.less
...Settle/amountAccountManage/memberAccountManage/index.less
+0
-0
index.tsx
...dSettle/amountAccountManage/memberAccountManage/index.tsx
+125
-0
index.tsx
.../amountAccountManage/memberAccountManage/schema/index.tsx
+144
-0
accountDetail.tsx
...yandSettle/capitalAccounts/accountLists/accountDetail.tsx
+230
-6
applyWithdraw.tsx
...yandSettle/capitalAccounts/accountLists/applyWithdraw.tsx
+213
-0
index.less
...ages/payandSettle/capitalAccounts/accountLists/index.less
+97
-0
index.tsx
...pages/payandSettle/capitalAccounts/accountLists/index.tsx
+6
-13
index.tsx
...ayandSettle/capitalAccounts/accountLists/schema/index.tsx
+71
-12
index.tsx
src/pages/transaction/purchaserEvaluation/analysis/index.tsx
+252
-80
index.tsx
...n/purchaserEvaluation/components/EvaluationList/index.tsx
+3
-3
index.tsx
...ction/purchaserEvaluation/components/RecordList/index.tsx
+326
-52
index.ts
...purchaserEvaluation/components/RecordList/schema/index.ts
+4
-4
index.tsx
src/pages/transaction/purchaserEvaluation/index.tsx
+0
-11
index.tsx
...action/purchaserEvaluation/unevaluated/evaluate/index.tsx
+151
-57
index.ts
.../purchaserEvaluation/unevaluated/evaluate/schema/index.ts
+13
-15
index.tsx
...ges/transaction/purchaserEvaluation/unevaluated/index.tsx
+31
-55
index.tsx
...nsaction/purchaserEvaluation/unevaluated/schema/index.tsx
+50
-25
utils.ts
src/pages/transaction/purchaserEvaluation/utils.ts
+44
-0
index.tsx
src/pages/transaction/supplierEvaluation/analysis/index.tsx
+211
-103
index.tsx
...on/supplierEvaluation/components/EvaluationList/index.tsx
+1
-1
index.tsx
...action/supplierEvaluation/components/RecordList/index.tsx
+229
-124
constans.tsx
src/pages/transaction/supplierEvaluation/constans.tsx
+0
-20
index.less
src/pages/transaction/supplierEvaluation/index.less
+0
-0
index.tsx
src/pages/transaction/supplierEvaluation/index.tsx
+0
-11
index.tsx
...saction/supplierEvaluation/unevaluated/evaluate/index.tsx
+10
-5
index.tsx
...ages/transaction/supplierEvaluation/unevaluated/index.tsx
+3
-11
index.tsx
...ansaction/supplierEvaluation/unevaluated/schema/index.tsx
+3
-3
utils.ts
src/pages/transaction/supplierEvaluation/utils.ts
+2
-3
index.tsx
src/utils/index.tsx
+29
-5
No files found.
config/routes/payandSettle.ts
View file @
00a66bb0
...
...
@@ -161,6 +161,26 @@ const payandSettleRoute: RouterChild = {
component
:
'@/pages/payandSettle/capitalAccounts/accountLists/accountDetail'
,
hideInMenu
:
true
,
},
// 申请提现
{
path
:
'/memberCenter/payandSettle/capitalAccounts/accountLists/applyWithdraw'
,
name
:
'applyWithdraw'
,
component
:
'@/pages/payandSettle/capitalAccounts/accountLists/applyWithdraw'
,
hideInMenu
:
true
,
},
],
},
// 资金账户管理
{
path
:
'/memberCenter/payandSettle/amountAccountManage'
,
name
:
'amountAccountManage'
,
routes
:
[
// 会员账户管理
{
path
:
'/memberCenter/payandSettle/amountAccountManage/memberAccountManage'
,
name
:
'memberAccountManage'
,
component
:
'@/pages/payandSettle/amountAccountManage/memberAccountManage'
,
},
],
},
]
...
...
config/routes/tranactionRoute/confirmInquiryQuote.ts
0 → 100644
View file @
00a66bb0
/**
* @description: 确认询价报价
* @param {type}
* @return {type}
*/
export
default
[
{
path
:
'/memberCenter/tranactionAbility/confirmInquiryQuote'
,
name
:
'confirmInquiryQuote'
,
routes
:
[
// 报价单查询
{
path
:
'/memberCenter/tranactionAbility/confirmInquiryQuote/quoteOrder'
,
name
:
'quoteOrder'
,
component
:
'@/pages/transaction/confirmInquiryQuote/quoteOrder'
},
// 待提交审核报价单
{
path
:
'/memberCenter/tranactionAbility/confirmInquiryQuote/pendingSubmitReview'
,
name
:
'pendingSubmitReview'
,
component
:
'@/pages/transaction/confirmInquiryQuote/pendingSubmitReview'
},
// 待审核询价单(一级)
{
path
:
'/memberCenter/tranactionAbility/confirmInquiryQuote/pendingReviewOne'
,
name
:
'pendingReviewOne'
,
component
:
'@/pages/transaction/confirmInquiryQuote/pendingReviewOne'
},
// 待审核询价单(二级)
{
path
:
'/memberCenter/tranactionAbility/confirmInquiryQuote/pendingReviewTwo'
,
name
:
'pendingReviewTwo'
,
component
:
'@/pages/transaction/confirmInquiryQuote/pendingReviewTwo'
},
// 详情
{
path
:
'/memberCenter/tranactionAbility/confirmInquiryQuote/components/details'
,
name
:
'details'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/confirmInquiryQuote/components/details'
},
// 待提交报价单
{
path
:
'/memberCenter/tranactionAbility/confirmInquiryQuote/pendingSubmit'
,
name
:
'pendingSubmit'
,
component
:
'@/pages/transaction/confirmInquiryQuote/pendingSubmit'
},
]
},
]
\ No newline at end of file
config/routes/tranactionRoute/goodsOffer.ts
0 → 100644
View file @
00a66bb0
/**
* @description: 商品询价
* @param {type}
* @return {type}
*/
export
default
[
{
path
:
'/memberCenter/tranactionAbility/goodsOffer'
,
name
:
'goodsOffer'
,
routes
:[
// 询价单查询
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/enquiryOrder'
,
name
:
'enquiryOrder'
,
component
:
'@/pages/transaction/goodsOffer/enquiryOrder'
},
// 询价单查询详情
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/enquiryOrder/details'
,
name
:
'details'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/goodsOffer/components/details'
},
// 待新增询价单
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/addEnquiryOrder'
,
name
:
'addEnquiryOrder'
,
component
:
'@/pages/transaction/goodsOffer/addEnquiryOrder'
},
// 新建报价单
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/addEnquiryOrder/add'
,
name
:
'add'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/goodsOffer/addEnquiryOrder/add'
},
// 编辑报价单
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/addEnquiryOrder/edit'
,
name
:
'add'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/goodsOffer/addEnquiryOrder/add'
},
// 待新增询价单详情
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/addEnquiryOrder/details'
,
name
:
'details'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/goodsOffer/components/details'
},
// 待审核询价单(一级)
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/pendingReviewOne'
,
name
:
'pendingReviewOne'
,
component
:
'@/pages/transaction/goodsOffer/pendingReviewOne'
},
// 待审核询价单(一级)详情
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/pendingReviewOne/details'
,
name
:
'details'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/goodsOffer/components/details'
},
// 待审核询价单(二级)
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/pendingReviewTwo'
,
name
:
'pendingReviewTwo'
,
component
:
'@/pages/transaction/goodsOffer/pendingReviewTwo'
},
// 待审核询价单(二级)详情
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/pendingReviewTwo/details'
,
name
:
'details'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/goodsOffer/components/details'
},
// 待提交询价单
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/pendingSubmit'
,
name
:
'pendingSubmit'
,
component
:
'@/pages/transaction/goodsOffer/pendingSubmit'
},
// 待提交询价单详情
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/pendingSubmit/details'
,
name
:
'details'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/goodsOffer/components/details'
}
]
}
]
\ No newline at end of file
config/routes/tranactionRoute/index.ts
View file @
00a66bb0
import
{
RouterChild
}
from
'../../utils'
;
import
goodsOffer
from
'./goodsOffer'
;
import
inquiryQuote
from
'./inquiryQuote'
;
import
confirmInquiryQuote
from
'./confirmInquiryQuote'
;
import
purchaseOrder
from
'./purchaseOrder'
;
import
saleOrder
from
'./saleOrder'
;
...
...
@@ -397,76 +400,14 @@ const TranactionRoute: RouterChild = {
}
]
},
// 商品询价
{
path
:
'/memberCenter/tranactionAbility/goodsOffer'
,
name
:
'goodsOffer'
,
routes
:
[
// 询价单查询
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/enquiryOrder'
,
name
:
'enquiryOrder'
,
component
:
'@/pages/transaction/goodsOffer/enquiryOrder'
},
// 待新增询价单
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/addEnquiryOrder'
,
name
:
'addEnquiryOrder'
,
component
:
'@/pages/transaction/goodsOffer/addEnquiryOrder'
},
// 待新增询价单-新增
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/addEnquiryOrder/add'
,
name
:
'add'
,
component
:
'@/pages/transaction/goodsOffer/addEnquiryOrder/add'
,
hideInMenu
:
true
,
},
// 待新增询价单-编辑
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/addEnquiryOrder/edit'
,
name
:
'edit'
,
component
:
'@/pages/transaction/goodsOffer/addEnquiryOrder/add'
,
hideInMenu
:
true
,
},
// 待新增询价单-详情
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/addEnquiryOrder/detail'
,
name
:
'detail'
,
component
:
'@/pages/transaction/goodsOffer/addEnquiryOrder/add'
,
hideInMenu
:
true
,
},
// 待审核询价单(一级)
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/pendingReviewOne'
,
name
:
'pendingReviewOne'
,
component
:
'@/pages/transaction/goodsOffer/pendingReviewOne'
},
// 待审核询价单(二级)
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/pendingReviewTwo'
,
name
:
'pendingReviewTwo'
,
component
:
'@/pages/transaction/goodsOffer/pendingReviewTwo'
},
// 待提交询价单
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/pendingSubmit'
,
name
:
'pendingSubmit'
,
component
:
'@/pages/transaction/goodsOffer/pendingSubmit'
},
// 新建询价单
{
path
:
'/memberCenter/tranactionAbility/goodsOffer/components/details'
,
name
:
'details'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/goodsOffer/components/details'
}
]
},
...
goodsOffer
,
// 询价报价
...
inquiryQuote
,
// 确认询价报价
...
confirmInquiryQuote
,
// 采购订单
...
purchaseOrder
,
// 销售订单
...
saleOrder
,
...
...
config/routes/tranactionRoute/inquiryQuote.ts
0 → 100644
View file @
00a66bb0
/**
* @description: 询价报价
* @param {type}
* @return {type}
*/
export
default
[
{
path
:
'/memberCenter/tranactionAbility/inquiryQuote'
,
name
:
'inquiryQuote'
,
routes
:
[
//询价单查询
{
path
:
'/memberCenter/tranactionAbility/inquiryQuote/enquiryOrder'
,
name
:
'enquiryOrder'
,
component
:
'@/pages/transaction/inquiryQuote/enquiryOrder'
},
// 询价单查询详情
{
path
:
'/memberCenter/tranactionAbility/inquiryQuote/enquiryOrder/details'
,
name
:
'details'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/inquiryQuote/components/details'
},
//报价单查询
{
path
:
'/memberCenter/tranactionAbility/inquiryQuote/quoteOrder'
,
name
:
'quoteOrder'
,
component
:
'@/pages/transaction/inquiryQuote/quoteOrder'
},
// 报价单查询详情
{
path
:
'/memberCenter/tranactionAbility/inquiryQuote/quoteOrder/details'
,
name
:
'details'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/inquiryQuote/components/details'
},
//待新增报价单
{
path
:
'/memberCenter/tranactionAbility/inquiryQuote/addInquiryOrder'
,
name
:
'addInquiryOrder'
,
component
:
'@/pages/transaction/inquiryQuote/addInquiryOrder'
},
// 新建报价单
{
path
:
'/memberCenter/tranactionAbility/inquiryQuote/addInquiryOrder/add'
,
name
:
'add'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/inquiryQuote/addInquiryOrder/add'
},
// 新建报价单编辑
{
path
:
'/memberCenter/tranactionAbility/inquiryQuote/addInquiryOrder/edit'
,
name
:
'add'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/inquiryQuote/addInquiryOrder/add'
},
// 新建报价单详情
{
path
:
'/memberCenter/tranactionAbility/inquiryQuote/addInquiryOrder/details'
,
name
:
'details'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/inquiryQuote/components/details'
},
// 待审核报价单(一级)
{
path
:
'/memberCenter/tranactionAbility/inquiryQuote/pendingReviewOne'
,
name
:
'pendingReviewOne'
,
component
:
'@/pages/transaction/inquiryQuote/pendingReviewOne'
},
// 待审核报价单(一级)详情
{
path
:
'/memberCenter/tranactionAbility/inquiryQuote/pendingReviewOne/details'
,
name
:
'details'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/inquiryQuote/components/details'
},
// 待审核报价单(二级)
{
path
:
'/memberCenter/tranactionAbility/inquiryQuote/pendingReviewTwo'
,
name
:
'pendingReviewTwo'
,
component
:
'@/pages/transaction/inquiryQuote/pendingReviewTwo'
},
// 待审核报价单(二级)详情
{
path
:
'/memberCenter/tranactionAbility/inquiryQuote/pendingReviewTwo/details'
,
name
:
'details'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/inquiryQuote/components/details'
},
// 待提交报价单
{
path
:
'/memberCenter/tranactionAbility/inquiryQuote/pendingSubmit'
,
name
:
'pendingSubmit'
,
component
:
'@/pages/transaction/inquiryQuote/pendingSubmit'
},
// 待提交报价单详情
{
path
:
'/memberCenter/tranactionAbility/inquiryQuote/pendingSubmit/details'
,
name
:
'details'
,
hideInMenu
:
true
,
component
:
'@/pages/transaction/inquiryQuote/components/details'
},
]
}
]
\ No newline at end of file
src/constants/index.ts
View file @
00a66bb0
...
...
@@ -44,8 +44,10 @@ export enum LAYOUT_TYPE {
}
// 本地环境跳过权限校验
export
const
isDev
=
process
.
env
.
NODE_ENV
===
"development"
// export const isDev = false
// export const isDev = process.env.NODE_ENV === "development"
// 暂时将权限访问关闭
export
const
isDev
=
true
export
const
Environment_Status
=
{
0
:
"所有"
,
...
...
src/global/styles/global.less
View file @
00a66bb0
...
...
@@ -311,6 +311,23 @@ a {
margin-right: auto !important;
}
// 重置模态框宽度
.ant-modal {
width: 704px !important; // 重置模态框高度
}
\ No newline at end of file
width: 704px !important;
}
// 重置Card样式
.ant-card {
border-radius: 8px !important;
.ant-card-head {
border-bottom: none;
.ant-card-head-title {
// line-height: 24px;
// padding-bottom: 0;
font-size: 16px;
font-weight: 500;
color: #343031;
}
}
}
src/locales/zh-CN/menu.ts
View file @
00a66bb0
...
...
@@ -2,7 +2,7 @@
* @Author: LeeJiancong
* @Date: 2020-07-13 14:08:50
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-10-
14 10:06:45
* @LastEditTime: 2020-10-
20 19:48:59
*/
export
default
{
...
...
@@ -132,6 +132,10 @@ export default {
'menu.tranactionAbility.electronicContracts.classSearch'
:
'合同模板参数查询'
,
'menu.tranactionAbility.electronicContracts.template'
:
'合同模板'
,
'menu.tranactionAbility.electronicContracts.addContract'
:
'新建合同模板'
,
'menu.tranactionAbility.electronicContracts.addTemplate'
:
'新建合同模板'
,
'menu.tranactionAbility.electronicContracts.editTemplate'
:
'编辑合同模板'
,
'menu.tranactionAbility.electronicContracts.templateDetail'
:
'查看合同模板'
,
// 确认询价报价
'menu.tranactionAbility.confirmInquiryQuote'
:
'确认询价报价'
,
'menu.tranactionAbility.confirmInquiryQuote.quoteOrder'
:
'报价单查询'
,
...
...
@@ -140,15 +144,19 @@ export default {
'menu.tranactionAbility.confirmInquiryQuote.pendingReviewOne'
:
'待审核报价单(一级)'
,
'menu.tranactionAbility.confirmInquiryQuote.pendingReviewTwo'
:
'待审核报价单(二级)'
,
'menu.tranactionAbility.confirmInquiryQuote.pendingSubmit'
:
'待确认报价单'
,
// 商品询价
'menu.tranactionAbility.goodsOffer'
:
'商品询价'
,
'menu.tranactionAbility.goodsOffer.enquiryOrder'
:
'询价单查询'
,
'menu.tranactionAbility.goodsOffer.addEnquiryOrder'
:
'待新增询价单'
,
'menu.tranactionAbility.goodsOffer.add'
:
'新建询价单'
,
'menu.tranactionAbility.goodsOffer.edit'
:
'编辑询价单'
,
'menu.tranactionAbility.goodsOffer.detail'
:
'查看询价单'
,
'menu.tranactionAbility.goodsOffer.details'
:
'新建询价单'
,
'menu.tranactionAbility.goodsOffer.pendingReviewOne'
:
'待审核询价单(一级)'
,
'menu.tranactionAbility.goodsOffer.pendingReviewTwo'
:
'待审核询价单(二级)'
,
'menu.tranactionAbility.goodsOffer.pendingSubmit'
:
'待提交询价单'
,
// 询价报价
'menu.tranactionAbility.inquiryQuote'
:
'询价报价'
,
'menu.tranactionAbility.inquiryQuote.enquiryOrder'
:
'询价单查询'
,
...
...
@@ -159,6 +167,7 @@ export default {
'menu.tranactionAbility.inquiryQuote.pendingReviewOne'
:
'待审核报价单(一级)'
,
'menu.tranactionAbility.inquiryQuote.pendingReviewTwo'
:
'待审核报价单(二级)'
,
'menu.tranactionAbility.inquiryQuote.pendingSubmit'
:
'待提交报价单'
,
//进销存
'menu.tranactionAbility.stockSellStorage'
:
'进销存'
,
'menu.tranactionAbility.stockSellStorage.warehouse'
:
'仓库'
,
...
...
@@ -301,6 +310,7 @@ export default {
'menu.logisticsAbility.logistics.addTemplate'
:
'新建运费模板'
,
'menu.logisticsAbility.logistics.editTemplate'
:
'编辑运费模板'
,
'menu.logisticsAbility.logistics.templateDetail'
:
'查看运费模板'
,
'menu.logisticsAbility.logistics.templateForm'
:
'运费模板管理'
,
'menu.logisticsAbility.logisticsSubmit'
:
'物流单提交'
,
'menu.logisticsAbility.logisticsSubmit.orderSubmitSearchList'
:
'物流单查询'
,
...
...
@@ -339,6 +349,9 @@ export default {
'menu.payandSettle.capitalAccounts'
:
'资金账户'
,
'menu.payandSettle.capitalAccounts.accountLists'
:
'账户管理'
,
'menu.payandSettle.capitalAccounts.accountDetail'
:
'账户详情'
,
'menu.payandSettle.capitalAccounts.applyWithdraw'
:
'申请提现'
,
'menu.payandSettle.amountAccountManage'
:
'资金账户管理'
,
'menu.payandSettle.amountAccountManage.memberAccountManage'
:
'会员账户管理'
,
// 权限管理
'menu.systemSetting'
:
'系统'
,
...
...
src/pages/commodity/products/addProducts.tsx
View file @
00a66bb0
...
...
@@ -158,10 +158,17 @@ const AddProducts: React.FC<{}> = (props) => {
}
}
_bacsicForm
.
customerCategoryId
=
_bacsicForm
.
customerCategoryId
[
_bacsicForm
.
customerCategoryId
.
length
-
1
]
// 移除描述中的[]
let
_productDescription
=
{
...
productDescription
}
for
(
let
i
in
_productDescription
){
if
(
_productDescription
[
i
].
length
===
0
){
delete
_productDescription
[
i
]
}
}
let
_params
=
{
...
_bacsicForm
,
commodityAttributeList
:
productSelectAttribute
,
commodityRemark
:
productDescription
,
commodityRemark
:
_
productDescription
,
isAllAttributePic
:
isAllAttributePic
,
}
// 处理地址
...
...
@@ -336,40 +343,40 @@ const AddProducts: React.FC<{}> = (props) => {
]
}
>
<
Card
>
<
Tabs
onChange=
{
callback
}
type=
"card"
defaultActiveKey=
"1
0000
"
>
<
TabPane
tab=
"基本信息"
key=
"1
0001
"
>
<
Tabs
onChange=
{
callback
}
type=
"card"
defaultActiveKey=
"1"
>
<
TabPane
tab=
"基本信息"
key=
"1"
>
<
BasicInfoForm
onRef=
{
(
refs
)
=>
setFormRefs
([...
formRefs
,
refs
])
}
onChangeAttributeList=
{
(
_lists
:
any
)
=>
setAttributeList
(
_lists
)
}
/>
</
TabPane
>
<
TabPane
tab=
"选择货品"
key=
"2
0002
"
>
<
TabPane
tab=
"选择货品"
key=
"2"
>
<
SelectGoodsForm
/>
</
TabPane
>
<
TabPane
tab=
"商品属性"
key=
"3
0003
"
>
<
TabPane
tab=
"商品属性"
key=
"3"
>
<
ProductAttributeForm
onRef=
{
(
refs
)
=>
setFormRefs
([...
formRefs
,
refs
])
}
attributesData=
{
attributeList
}
/>
</
TabPane
>
<
TabPane
tab=
"价格设置"
key=
"4
0004
"
>
<
TabPane
tab=
"价格设置"
key=
"4"
>
<
PriceAttributeForm
onRef=
{
(
refs
)
=>
setFormRefs
([...
formRefs
,
refs
])
}
/>
</
TabPane
>
<
TabPane
tab=
"商品图片"
key=
"5
0005
"
>
<
TabPane
tab=
"商品图片"
key=
"5"
>
<
ProductImageForm
/>
</
TabPane
>
<
TabPane
tab=
"商品描述"
key=
"6
0006
"
>
<
TabPane
tab=
"商品描述"
key=
"6"
>
{
renderTemplate
()
}
</
TabPane
>
<
TabPane
tab=
"物流信息"
key=
"7
0007
"
>
<
TabPane
tab=
"物流信息"
key=
"7"
>
<
LogisticsForm
onRef=
{
(
refs
)
=>
setFormRefs
([...
formRefs
,
refs
])
}
/>
</
TabPane
>
<
TabPane
tab=
"其他"
key=
"8
0008
"
>
<
TabPane
tab=
"其他"
key=
"8"
>
<
OtherForm
onRef=
{
(
refs
)
=>
setFormRefs
([...
formRefs
,
refs
])
}
/>
...
...
src/pages/commodity/products/viewProducts.tsx
View file @
00a66bb0
...
...
@@ -16,7 +16,7 @@ import {
GetProductCommodityGetCommodityResponse
,
GetProductCommodityGetCommodityCheckRecordResponse
,
GetProductCommodityGetShopResponse
}
from
'@/services'
}
from
'@/services
/ProductApi
'
import
moment
from
'moment'
interface
IAttributeByValue
{
...
...
@@ -667,7 +667,7 @@ const viewProducts: React.FC<{}> = () => {
</
Space
>
<
Space
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Card
headStyle=
{
{
borderBottom
:
'none'
}
}
title=
"审核历史"
>
<
Table
dataSource=
{
checkRecord
}
columns=
{
columns
}
pagination=
{
false
}
/>
<
Table
dataSource=
{
checkRecord
}
columns=
{
columns
}
/>
</
Card
>
</
Space
>
</
PageHeaderWrapper
>
...
...
src/pages/
transaction/purchaserEvaluation
/index.less
→
src/pages/
payandSettle/amountAccountManage/memberAccountManage
/index.less
View file @
00a66bb0
File moved
src/pages/payandSettle/amountAccountManage/memberAccountManage/index.tsx
0 → 100644
View file @
00a66bb0
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
import
{
Card
,
Space
,
Button
,
}
from
'antd'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
StandardTable
}
from
'god'
import
{
ColumnType
}
from
'antd/lib/table/interface'
import
{
PublicApi
}
from
'@/services/api'
import
NiceForm
from
'@/components/NiceForm'
import
{
createFormActions
,
FormEffectHooks
}
from
'@formily/antd'
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
{
searchSchema
}
from
'./schema'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
{
PlusOutlined
}
from
'@ant-design/icons'
import
EyePreview
from
'@/components/EyePreview'
import
{
DatePicker
}
from
'@formily/antd-components'
const
formActions
=
createFormActions
();
const
AccountLists
:
React
.
FC
<
{}
>
=
()
=>
{
const
ref
=
useRef
<
any
>
({})
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'账户归属'
,
dataIndex
:
'memberName'
,
key
:
'memberName'
,
className
:
'commonPickColor'
,
render
:
(
text
,
record
)
=>
<
EyePreview
url=
{
`/memberCenter/payandSettle/capitalAccounts/accountLists/accountDetail?id=${record.id}`
}
>
{
text
}
</
EyePreview
>
},
{
title
:
'会员类型'
,
dataIndex
:
'memberTypeName'
,
key
:
'memberTypeName'
,
},
{
title
:
'会员角色'
,
dataIndex
:
'memberRoleName'
,
key
:
'memberRoleName'
,
},
{
title
:
'会员等级'
,
dataIndex
:
'memberLevelName'
,
key
:
'memberLevelName'
,
},
{
title
:
'会员等级类型'
,
dataIndex
:
'memberLevelType'
,
key
:
'memberLevelType'
,
},
{
title
:
'会员状态'
,
dataIndex
:
'memberStatus'
,
key
:
'memberStatus'
,
},
{
title
:
'账户状态'
,
dataIndex
:
'accountStatus'
,
key
:
'accountStatus'
,
},
{
title
:
'账户余额'
,
dataIndex
:
'accountStatus'
,
key
:
'accountStatus'
,
render
:
text
=>
`¥
${
text
}
`
},
{
title
:
'锁定余额'
,
dataIndex
:
'lockBalance'
,
key
:
'lockBalance'
,
render
:
text
=>
`¥
${
text
}
`
},
{
title
:
'可用余额'
,
dataIndex
:
'usableBalance'
,
key
:
'usableBalance'
,
render
:
text
=>
`¥
${
text
}
`
},
]
const
fetchData
=
(
params
:
any
)
=>
{
console
.
log
(
params
)
return
new
Promise
((
resolve
,
reject
)
=>
{
let
obj
=
{
...
params
}
PublicApi
.
getPayAssetAccountGetAssetAccountList
(
obj
).
then
(
res
=>
{
resolve
(
res
.
data
)
})
})
}
return
(
<
PageHeaderWrapper
>
<
Card
>
<
StandardTable
columns=
{
columns
}
currentRef=
{
ref
}
tableProps=
{
{
rowKey
:
"id"
}
}
fetchTableData=
{
(
params
:
any
)
=>
fetchData
(
params
)
}
controlRender=
{
<
NiceForm
components=
{
{
RangePicker
:
DatePicker
.
RangePicker
}
}
actions=
{
formActions
}
onSubmit=
{
values
=>
ref
.
current
.
reload
(
values
)
}
effects=
{
(
$
,
actions
)
=>
{
useStateFilterSearchLinkageEffect
(
$
,
actions
,
'parentMemberName'
,
FORM_FILTER_PATH
,
);
}
}
schema=
{
searchSchema
}
/>
}
/>
</
Card
>
</
PageHeaderWrapper
>
)
}
export
default
AccountLists
src/pages/payandSettle/amountAccountManage/memberAccountManage/schema/index.tsx
0 → 100644
View file @
00a66bb0
import
{
ISchema
}
from
'@formily/antd'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
export
const
searchSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
mageLayout
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
properties
:
{
topLayout
:
{
type
:
'object'
,
'x-component'
:
'mega-layout'
,
'x-component-props'
:
{
grid
:
true
,
},
properties
:
{
parentMemberName
:
{
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
placeholder
:
'账户归属'
,
align
:
'flex-left'
,
},
},
},
},
[
FORM_FILTER_PATH
]:
{
type
:
'object'
,
'x-component'
:
'flex-layout'
,
'x-component-props'
:
{
rowStyle
:
{
flexWrap
:
'nowrap'
,
justifyContent
:
'end'
,
},
colStyle
:
{
marginRight
:
20
,
},
},
properties
:
{
memberStatus
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'会员状态'
,
style
:
{
width
:
'174px'
},
},
enum
:
[
{
label
:
'正常'
,
value
:
1
,
},
{
label
:
'已冻结'
,
value
:
2
,
}
],
},
accountStatus
:
{
type
:
'string'
,
'x-component-props'
:
{
placeholder
:
'账户状态'
,
style
:
{
width
:
'174px'
},
},
enum
:
[
{
label
:
'正常'
,
value
:
1
,
},
{
label
:
'已冻结'
,
value
:
2
,
}
],
},
"[startTime,endTime]"
:
{
type
:
'array'
,
"x-component"
:
'RangePicker'
,
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
},
},
submit
:
{
'x-component'
:
'Submit'
,
'x-mega-props'
:
{
span
:
1
,
},
'x-component-props'
:
{
children
:
'查询'
,
},
},
},
},
},
},
},
};
export
const
rechargeSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
NO_SUBMIT
:
{
type
:
'object'
,
"x-component"
:
"mega-layout"
,
"x-component-props"
:
{
labelAlign
:
'left'
,
labelCol
:
24
,
wrapperCol
:
24
},
properties
:
{
money
:
{
type
:
"string"
,
title
:
'充值金额'
,
'x-component-props'
:
{
addonBefore
:
"¥"
},
"x-rules"
:
[
{
required
:
true
,
message
:
'请输入充值金额'
},
]
},
type
:
{
type
:
"array:number"
,
"x-component"
:
'CardCheckBox'
,
"x-component-props"
:
{
dataSource
:
[],
type
:
'radio'
// CardCheckBox 单选模式
},
"title"
:
"充值方式"
,
"x-rules"
:
[
{
required
:
true
,
message
:
'请选择充值方式'
}
],
}
}
}
}
}
\ No newline at end of file
src/pages/payandSettle/capitalAccounts/accountLists/accountDetail.tsx
View file @
00a66bb0
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
import
{
Card
}
from
'antd'
import
React
,
{
useState
,
useEffect
,
useRef
,
ReactNode
}
from
'react'
import
{
history
}
from
'umi'
import
{
Card
,
Space
,
Steps
,
Row
,
Col
,
Button
,
InputNumber
,
Table
}
from
'antd'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
ReutrnEle
from
'@/components/ReturnEle'
import
styles
from
'./index.less'
import
StatusTag
from
'@/components/StatusTag'
import
cx
from
'classnames'
import
moment
from
'moment'
import
{
ColumnType
}
from
'antd/lib/table/interface'
import
ModalForm
from
'@/components/ModalForm'
import
{
createFormActions
}
from
'@formily/antd'
import
{
rechargeSchema
}
from
'./schema'
import
{
visible
}
from
'chalk'
const
{
Step
}
=
Steps
;
const
schemaActions
=
createFormActions
()
const
statusMap
=
{
'1'
:
{
title
:
'申请提现'
,
type
:
'warnning'
},
'2'
:
{
title
:
'审核通过'
,
type
:
'success'
},
'3'
:
{
title
:
'审核不通过'
,
type
:
'default'
},
'4'
:
{
title
:
'提现成功'
,
type
:
'success'
},
'5'
:
{
title
:
'提现失败'
,
type
:
'danger'
},
'6'
:
{
title
:
'确认到账'
,
type
:
'success'
},
}
const
moveStatusMap
=
{
'1'
:
{
title
:
'冻结'
,
type
:
'danger'
},
'2'
:
{
title
:
'解冻'
,
type
:
'success'
},
}
const
AccountDetail
:
React
.
FC
<
{}
>
=
()
=>
{
const
modalRef
=
useRef
<
any
>
()
const
[
dealRecord
,
setDealRecord
]
=
useState
<
any
>
()
const
[
moveRecord
,
setMoveRecord
]
=
useState
<
any
>
()
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'交易流水号'
,
dataIndex
:
'tradeCode'
,
key
:
'tradeCode'
,
},
{
title
:
'交易时间'
,
dataIndex
:
'tradeTime'
,
key
:
'tradeTime'
,
render
:
(
text
:
any
)
=>
moment
(
text
).
format
(
"YYYY-MM-DD HH:mm:ss"
)
},
{
title
:
'交易金额(元)'
,
dataIndex
:
'tradeMoney'
,
key
:
'tradeMoney'
,
},
{
title
:
'交易项目'
,
dataIndex
:
'operation'
,
key
:
'operation'
,
},
{
title
:
'交易金额(元)'
,
dataIndex
:
'tradeMoney'
,
key
:
'tradeMoney'
,
},
{
title
:
'状态'
,
dataIndex
:
'status'
,
key
:
'status'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(<
StatusTag
title=
{
statusMap
[
text
][
'title'
]
}
type=
{
statusMap
[
text
][
'type'
]
}
/>)
},
{
title
:
'意见'
,
dataIndex
:
'remark'
,
key
:
'remark'
,
},
];
const
moveColumns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'序号'
,
dataIndex
:
'id'
,
key
:
'id'
,
render
:
(
t
,
c
,
i
)
=>
i
+
1
},
{
title
:
'操作角色'
,
dataIndex
:
'parentMemberRoleName'
,
key
:
'parentMemberRoleName'
,
},
{
title
:
'状态'
,
dataIndex
:
'status'
,
key
:
'status'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(<
StatusTag
title=
{
moveStatusMap
[
text
][
'title'
]
}
type=
{
moveStatusMap
[
text
][
'type'
]
}
/>)
},
{
title
:
'操作'
,
dataIndex
:
'operation'
,
key
:
'operation'
,
render
:
(
t
,
r
)
=>
{
return
t
===
1
?
'冻结资金账户'
:
'解冻资金账户'
}
},
{
title
:
'操作时间'
,
dataIndex
:
'createTime'
,
key
:
'createTime'
,
render
:
(
text
:
any
)
=>
moment
(
text
).
format
(
"YYYY-MM-DD HH:mm:ss"
)
},
{
title
:
'意见'
,
dataIndex
:
'remark'
,
key
:
'remark'
,
},
];
const
handleConfirm
=
()
=>
{
}
const
handleCannel
=
()
=>
{
}
const
handleSubmit
=
()
=>
{
schemaActions
.
submit
()
}
const
handleRecharge
=
()
=>
{
console
.
log
(
modalRef
)
modalRef
.
current
.
setVisible
(
true
)
}
// 前缀币制符号
// const characters = '$'
return
(
<
PageHeaderWrapper
>
<
Card
>
<
p
>
账户详情
</
p
>
</
Card
>
<
PageHeaderWrapper
title=
"账户详情"
onBack=
{
()
=>
history
.
goBack
()
}
backIcon=
{
<
ReutrnEle
/>
}
>
<
Space
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Card
headStyle=
{
{
borderBottom
:
'none'
}
}
title=
"账户信息"
>
<
Row
gutter=
{
100
}
>
<
Col
span=
{
8
}
>
<
div
className=
{
cx
(
styles
.
repayment
,
styles
.
repayinfo
)
}
>
<
div
className=
{
styles
[
'repayment-left'
]
}
>
<
div
className=
{
styles
.
statistic
}
>
<
div
className=
{
styles
[
'statistic-title'
]
}
>
可用余额(元):
</
div
>
<
div
className=
{
styles
[
'statistic-amount'
]
}
>
{
`100000`
.
replace
(
/
\B(?=(\d
{3}
)
+
(?!\d))
/g
,
','
)
}
</
div
>
</
div
>
<
div
className=
{
styles
[
'repayment-end'
]
}
>
<
span
className=
{
styles
[
'repayment-time'
]
}
>
温州市龙昌皮具有限公司
</
span
>
</
div
>
</
div
>
</
div
>
</
Col
>
<
Col
span=
{
10
}
>
<
div
className=
{
styles
.
infoRight
}
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
账户归属:
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
广州数商云网络科技有限公司
</
p
>
</
Col
>
</
Row
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
账户余额(元):
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
10,000
</
p
>
</
Col
>
</
Row
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
锁定金额(元):
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
0.00
</
p
>
</
Col
>
</
Row
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
账户状态:
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
><
StatusTag
type=
"success"
title=
"正常"
/></
p
>
</
Col
>
</
Row
>
</
div
>
</
Col
>
<
Col
span=
{
6
}
>
<
div
className=
{
styles
.
rightActions
}
>
<
Button
className=
{
styles
.
rightAction
}
type=
"primary"
onClick=
{
handleRecharge
}
>
充值
</
Button
>
<
Button
className=
{
styles
.
rightAction
}
>
申请提现
</
Button
>
</
div
>
</
Col
>
</
Row
>
</
Card
>
</
Space
>
<
Space
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Card
headStyle=
{
{
borderBottom
:
'none'
}
}
title=
"交易记录"
>
<
Table
dataSource=
{
dealRecord
}
columns=
{
columns
}
/>
</
Card
>
</
Space
>
<
Space
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Card
headStyle=
{
{
borderBottom
:
'none'
}
}
title=
"流转记录"
>
<
Table
dataSource=
{
moveRecord
}
columns=
{
moveColumns
}
/>
</
Card
>
</
Space
>
<
ModalForm
modalTitle=
'账户充值'
currentRef=
{
modalRef
}
schema=
{
rechargeSchema
}
actions=
{
schemaActions
}
confirm=
{
handleConfirm
}
onSubmit=
{
handleSubmit
}
cancel=
{
handleCannel
}
effects=
{
(
$
,
{
setFieldState
})
=>
{
// $('onFieldInputChange', 'money').subscribe(parentState =>
{
// console.log(parentState.value)
// setFieldState('money', state =>
{
// state.value = `$
{
parentState
.
value
}
`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')
// })
// })
// useAsyncSelect('addresId', async () => (await PublicApi.getLogisticsSelectListShipperAddress()).data, ['fullAddress', 'id'])
}
}
/>
</
PageHeaderWrapper
>
)
}
...
...
src/pages/payandSettle/capitalAccounts/accountLists/applyWithdraw.tsx
0 → 100644
View file @
00a66bb0
import
React
,
{
useState
,
useEffect
,
useRef
,
ReactNode
}
from
'react'
import
{
history
}
from
'umi'
import
{
Card
,
Space
,
Steps
,
Row
,
Col
,
Button
,
InputNumber
,
Table
}
from
'antd'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
ReutrnEle
from
'@/components/ReturnEle'
import
styles
from
'./index.less'
import
StatusTag
from
'@/components/StatusTag'
import
cx
from
'classnames'
import
moment
from
'moment'
import
{
ColumnType
}
from
'antd/lib/table/interface'
const
{
Step
}
=
Steps
;
const
statusMap
=
{
'1'
:
{
title
:
'申请提现'
,
type
:
'warnning'
},
'2'
:
{
title
:
'审核通过'
,
type
:
'success'
},
'3'
:
{
title
:
'审核不通过'
,
type
:
'default'
},
'4'
:
{
title
:
'提现成功'
,
type
:
'success'
},
'5'
:
{
title
:
'提现失败'
,
type
:
'danger'
},
'6'
:
{
title
:
'确认到账'
,
type
:
'success'
},
}
const
AccountDetail
:
React
.
FC
<
{}
>
=
()
=>
{
const
[
dealRecord
,
setDealRecord
]
=
useState
<
any
>
()
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'交易流水号'
,
dataIndex
:
'tradeCode'
,
key
:
'tradeCode'
,
},
{
title
:
'交易时间'
,
dataIndex
:
'tradeTime'
,
key
:
'tradeTime'
,
render
:
(
text
:
any
)
=>
moment
(
text
).
format
(
"YYYY-MM-DD HH:mm:ss"
)
},
{
title
:
'交易金额(元)'
,
dataIndex
:
'tradeMoney'
,
key
:
'tradeMoney'
,
},
{
title
:
'交易项目'
,
dataIndex
:
'operation'
,
key
:
'operation'
,
},
{
title
:
'交易金额(元)'
,
dataIndex
:
'tradeMoney'
,
key
:
'tradeMoney'
,
},
{
title
:
'状态'
,
dataIndex
:
'status'
,
key
:
'status'
,
render
:
(
text
:
any
,
record
:
any
)
=>
(<
StatusTag
title=
{
statusMap
[
text
][
'title'
]
}
type=
{
statusMap
[
text
][
'type'
]
}
/>)
},
{
title
:
'意见'
,
dataIndex
:
'remark'
,
key
:
'remark'
,
},
];
return
(
<
PageHeaderWrapper
title=
"申请提现"
onBack=
{
()
=>
history
.
goBack
()
}
backIcon=
{
<
ReutrnEle
/>
}
>
<
Space
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Card
headStyle=
{
{
borderBottom
:
'none'
}
}
title=
"外部流转"
>
<
Steps
progressDot
current=
{
0
}
>
<
Step
title=
"申请提现"
description=
"采购商"
/>
<
Step
title=
"审核提现"
description=
"平台"
/>
<
Step
title=
"支付提现"
description=
"平台"
/>
<
Step
title=
"完成"
description=
""
/>
</
Steps
>
</
Card
>
</
Space
>
<
Space
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Card
headStyle=
{
{
borderBottom
:
'none'
}
}
title=
"账户提现"
>
<
Row
gutter=
{
100
}
>
<
Col
span=
{
8
}
>
<
div
className=
{
styles
.
repayment
}
>
<
div
className=
{
styles
[
'repayment-left'
]
}
>
<
div
className=
{
styles
.
statistic
}
>
<
div
className=
{
styles
[
'statistic-title'
]
}
>
提现金额(元):
</
div
>
<
div
style=
{
{
display
:
'flex'
,
alignItems
:
'flex-end'
}
}
>
<
InputNumber
defaultValue=
{
0
}
formatter=
{
value
=>
`${value}`
.
replace
(
/
\B(?=(\d
{3}
)
+
(?!\d))
/g
,
','
)
}
parser=
{
value
=>
value
.
replace
(
/
\$\s?
|
(
,*
)
/g
,
''
)
}
className=
{
styles
[
'statistic-input'
]
}
/>
<
Button
type=
"text"
size=
"small"
style=
{
{
marginLeft
:
24
,
color
:
'#fff'
}
}
>
全部提现
</
Button
>
</
div
>
</
div
>
<
div
className=
{
styles
[
'repayment-end'
]
}
>
<
span
className=
{
styles
[
'repayment-time'
]
}
>
最多可以提现:¥10,000.00
</
span
>
</
div
>
</
div
>
<
div
className=
{
styles
[
'repayment-right'
]
}
>
<
Button
ghost
>
提交
</
Button
>
</
div
>
</
div
>
</
Col
>
<
Col
span=
{
16
}
>
<
div
className=
{
styles
.
infoRight
}
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
账户归属:
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
广州数商云网络科技有限公司
</
p
>
</
Col
>
</
Row
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
银行账号:
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
6214 7812 3456 7891 1234
</
p
>
</
Col
>
</
Row
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
开户行:
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
中国建设银行广州市分行营业部
</
p
>
</
Col
>
</
Row
>
</
div
>
</
Col
>
</
Row
>
</
Card
>
</
Space
>
<
Space
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Card
headStyle=
{
{
borderBottom
:
'none'
}
}
title=
"账户信息"
>
<
Row
gutter=
{
100
}
>
<
Col
span=
{
8
}
>
<
div
className=
{
cx
(
styles
.
repayment
,
styles
.
repayinfo
)
}
>
<
div
className=
{
styles
[
'repayment-left'
]
}
>
<
div
className=
{
styles
.
statistic
}
>
<
div
className=
{
styles
[
'statistic-title'
]
}
>
可用余额(元):
</
div
>
<
div
className=
{
styles
[
'statistic-amount'
]
}
>
{
`100000`
.
replace
(
/
\B(?=(\d
{3}
)
+
(?!\d))
/g
,
','
)
}
</
div
>
</
div
>
<
div
className=
{
styles
[
'repayment-end'
]
}
>
<
span
className=
{
styles
[
'repayment-time'
]
}
>
温州市龙昌皮具有限公司
</
span
>
</
div
>
</
div
>
</
div
>
</
Col
>
<
Col
span=
{
16
}
>
<
div
className=
{
styles
.
infoRight
}
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
账户归属:
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
广州数商云网络科技有限公司
</
p
>
</
Col
>
</
Row
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
账户余额(元):
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
10,000
</
p
>
</
Col
>
</
Row
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
锁定金额(元):
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
>
0.00
</
p
>
</
Col
>
</
Row
>
<
Row
>
<
Col
span=
{
4
}
>
<
p
className=
{
styles
.
rightTitle
}
>
账户状态:
</
p
>
</
Col
>
<
Col
span=
{
20
}
>
<
p
className=
{
styles
.
rightInfo
}
><
StatusTag
type=
"success"
title=
"正常"
/></
p
>
</
Col
>
</
Row
>
</
div
>
</
Col
>
</
Row
>
</
Card
>
</
Space
>
<
Space
direction=
"vertical"
style=
{
{
width
:
'100%'
}
}
>
<
Card
headStyle=
{
{
borderBottom
:
'none'
}
}
title=
"提现处理记录"
>
<
Table
dataSource=
{
dealRecord
}
columns=
{
columns
}
/>
</
Card
>
</
Space
>
</
PageHeaderWrapper
>
)
}
export
default
AccountDetail
src/pages/payandSettle/capitalAccounts/accountLists/index.less
0 → 100644
View file @
00a66bb0
.repayment {
padding: 56px 24px 33px;
display: flex;
align-items: center;
background: #8777D9;
border-radius: 4px;
border: 1px solid #8777D9;
color: #fff;
&-left {
flex: 1;
}
&-right {
flex-shrink: 0;
}
&-end {
margin-top: 32px;
}
&-action {
margin-left: 24px;
}
&-time {
line-height: 22px;
margin-right: 8px;
font-weight: 400;
}
}
.statistic {
&-title {
margin-bottom: 28px;
line-height: 22px;
font-weight: 400;
}
&-amount {
line-height: 40px;
font-size: 32px;
font-weight: 500;
}
&-input {
display: block;
width: 180px;
line-height: 40px;
padding: 8px 0;
font-size: 32px;
font-weight: 500;
color: #fff;
background: none;
border-top: none;
border-right: none;
border-left: none;
border-image: initial;
outline: none;
border-bottom: 1px solid #fff;
}
}
.infoRight {
margin: 35px 0;
.rightTitle {
height: 36px;
font-weight: 400;
color: #6B778C;
line-height: 36px;
}
.rightInfo {
height: 36px;
font-weight: 500;
color: #303133;
line-height: 36px;
}
}
.repayinfo {
background-color: #4279DF;
}
// 账户详情右侧操作按钮
.rightActions {
display: flex;
margin-top: 70px;
.rightAction {
width: 88px;
height: 40px;
&:last-child{
background-color: #6B778C;
color: #fff;
margin-left: 24px;
}
}
}
\ No newline at end of file
src/pages/payandSettle/capitalAccounts/accountLists/index.tsx
View file @
00a66bb0
...
...
@@ -11,23 +11,13 @@ import { searchSchema } from './schema'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
{
PlusOutlined
}
from
'@ant-design/icons'
import
EyePreview
from
'@/components/EyePreview'
import
{
DatePicker
}
from
'@formily/antd-components'
const
formActions
=
createFormActions
();
const
AccountLists
:
React
.
FC
<
{}
>
=
()
=>
{
const
ref
=
useRef
<
any
>
({})
// "memberName": "L1LCU",
// "memberTypeName": "hgVH2V",
// "memberRoleName": "7V4vEk",
// "memberLevelName": "DT5Q",
// "accountBalance": 1071807455613740.5,
// "lockBalance": -5417889512914380,
// "usableBalance": -604051859942576.9,
// "memberStatus": 6014545168701916,
// "accountStatus": 6386448687731208,
// "createTime": 5022413924183292
const
columns
:
ColumnType
<
any
>
[]
=
[
{
title
:
'账户归属'
,
...
...
@@ -57,8 +47,8 @@ const AccountLists: React.FC<{}> = () => {
},
{
title
:
'会员等级类型'
,
dataIndex
:
'
unitNam
e'
,
key
:
'
unit
'
,
dataIndex
:
'
memberLevelTyp
e'
,
key
:
'
memberLevelType
'
,
},
{
title
:
'会员状态'
,
...
...
@@ -110,6 +100,9 @@ const AccountLists: React.FC<{}> = () => {
fetchTableData=
{
(
params
:
any
)
=>
fetchData
(
params
)
}
controlRender=
{
<
NiceForm
components=
{
{
RangePicker
:
DatePicker
.
RangePicker
}
}
actions=
{
formActions
}
onSubmit=
{
values
=>
ref
.
current
.
reload
(
values
)
}
effects=
{
(
$
,
actions
)
=>
{
...
...
src/pages/payandSettle/capitalAccounts/accountLists/schema/index.tsx
View file @
00a66bb0
...
...
@@ -72,16 +72,12 @@ export const searchSchema: ISchema = {
}
],
},
applyTime
:
{
type
:
"daterange"
,
properties
:
{
"[start,end]"
:
{
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
style
:
{
width
:
'174px'
},
},
}
}
"[startTime,endTime]"
:
{
type
:
'array'
,
"x-component"
:
'RangePicker'
,
'x-component-props'
:
{
placeholder
:
[
'开始时间'
,
'结束时间'
],
},
},
submit
:
{
'x-component'
:
'Submit'
,
...
...
@@ -97,4 +93,67 @@ export const searchSchema: ISchema = {
},
},
},
};
\ No newline at end of file
};
export
const
rechargeSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
NO_SUBMIT
:
{
type
:
'object'
,
"x-component"
:
"mega-layout"
,
"x-component-props"
:
{
labelAlign
:
'left'
,
labelCol
:
24
,
wrapperCol
:
24
},
properties
:
{
// money: {
// type: 'number',
// title: '充值金额',
// "x-component-props": {
// style: {
// width: '100%'
// },
// },
// "x-rules": [
// {
// required: true,
// message: '请输入充值金额'
// },
// ]
// },
money
:
{
type
:
"string"
,
title
:
'充值金额'
,
'x-component-props'
:
{
addonBefore
:
"¥"
},
"x-rules"
:
[
{
required
:
true
,
message
:
'请输入充值金额'
},
]
},
type
:
{
type
:
"array:number"
,
"x-component"
:
'CardCheckBox'
,
"x-component-props"
:
{
dataSource
:
[],
type
:
'radio'
// CardCheckBox 单选模式
},
"title"
:
"充值方式"
,
"x-rules"
:
[
{
required
:
true
,
message
:
'请选择充值方式'
}
],
}
}
}
}
}
\ No newline at end of file
src/pages/transaction/purchaserEvaluation/analysis/index.tsx
View file @
00a66bb0
import
React
from
'react'
;
import
React
,
{
useEffect
,
useState
}
from
'react'
;
import
{
Tabs
,
Row
,
Col
,
Button
}
from
'antd'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
isJSONStr
}
from
'@/utils'
;
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
RecordList
,
{
ListParams
,
RecordRes
}
from
'../components/RecordList'
;
import
styles
from
'./index.less'
;
const
{
TabPane
}
=
Tabs
;
const
receivedFormActions
=
createFormActions
();
const
sentFormActions
=
createFormActions
();
interface
ReceivedSearch
{
/**
* 评价星级(1-5)
*/
star
:
string
/**
* 交易时间开始
*/
dealTimeStart
:
string
/**
* 交易时间结束
*/
dealTimeEnd
:
string
/**
* 评价方名称
*/
memberName
:
string
};
interface
EstimateSumItems
{
id
?:
number
,
title
?:
JSX
.
Element
,
star
?:
number
,
last7days
?:
number
,
last30days
?:
number
,
last180days
?:
number
,
before180days
?:
number
,
sum
?:
number
,
};
const
Analysis
:
React
.
FC
=
()
=>
{
const
[
evaluateSum
,
setEvaluateSum
]
=
useState
([]);
const
[
evaluatePie
,
setEvaluatePie
]
=
useState
([]);
const
summaryEvaluate
=
(
items
:
EstimateSumItems
[]):
EstimateSumItems
[]
=>
{
// 顺序写死的 1:表示好评,2:表示中评,3:表示差评
// 根据 1、2星级为差评,3星级为中评,4、5星级为好评往里边塞数据
const
source
=
items
||
[];
const
ret
=
[
{
id
:
1
,
title
:
(<
Mood
type=
"smile"
/>),
},
{
id
:
2
,
title
:
(<
Mood
type=
"notBad"
/>),
},
{
id
:
3
,
title
:
(<
Mood
type=
"sad"
/>),
},
];
for
(
let
i
=
0
;
i
<
source
.
length
;
i
++
)
{
const
item
=
source
[
i
];
const
{
star
,
...
rest
}
=
item
;
let
target
=
null
;
switch
(
item
.
star
)
{
case
1
:
case
2
:
{
target
=
ret
[
0
];
break
;
}
case
3
:
{
target
=
ret
[
1
];
break
;
}
case
4
:
case
5
:
{
target
=
ret
[
2
];
break
;
}
default
:
break
;
}
if
(
!
target
)
{
continue
;
}
// 大于 2 表示已经添加过一次数据,之后就累加上去,否则直接赋值
if
(
Object
.
keys
(
target
).
length
<=
2
)
{
target
=
Object
.
assign
(
target
,
rest
);
}
else
{
for
(
const
key
in
target
)
{
if
(
!
Object
.
prototype
.
hasOwnProperty
.
call
(
target
,
key
))
{
continue
;
}
// 排除 id、title 固定的 key
if
(
key
!==
'id'
&&
key
!==
'title'
)
{
target
[
key
]
+=
item
[
key
];
}
}
}
}
return
ret
;
};
// 取得评价统计 Pie 饼图数据
const
getSummaryEvaluatePie
=
(
data
:
EstimateSumItems
[])
=>
{
const
source
=
data
||
[];
const
count
=
source
.
reduce
((
pre
,
now
)
=>
now
.
sum
+
pre
,
0
);
const
good
=
source
[
0
]
&&
source
[
0
].
sum
?
source
[
0
].
sum
:
0
;
const
notBad
=
source
[
1
]
&&
source
[
1
].
sum
?
source
[
1
].
sum
:
0
;
const
bad
=
source
[
2
]
&&
source
[
2
].
sum
?
source
[
2
].
sum
:
0
;
const
ret
=
[
{
x
:
`好评
${
count
>
0
?
(
good
/
count
*
100
).
toFixed
(
2
)
:
'0'
}
%`
,
y
:
good
,
},
{
x
:
`中评
${
count
>
0
?
(
notBad
/
count
*
100
).
toFixed
(
2
)
:
0
}
%`
,
y
:
notBad
,
},
{
x
:
`差评
${
count
>
0
?
(
bad
/
count
*
100
).
toFixed
(
2
)
:
0
}
%`
,
y
:
bad
,
},
];
return
ret
;
};
// 获取评价汇总
const
getTradeSummary
=
()
=>
{
PublicApi
.
getMemberCommentConsumerCountTradeSummary
().
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
const
evaluate
=
summaryEvaluate
(
res
.
data
.
rows
);
const
evaluatePieData
=
getSummaryEvaluatePie
(
evaluate
);
setEvaluateSum
(
evaluate
);
setEvaluatePie
(
evaluatePieData
);
}
});
};
// 获取评价记录
const
getTradeHistory
=
(
params
:
ListParams
):
Promise
<
RecordRes
>
=>
{
const
{
star
,
...
rest
}
=
params
;
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getMemberCommentConsumerCountTradeHistoryPage
({
...
rest
,
starLevel
:
params
.
star
,
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
const
{
data
,
totalCount
}
=
res
.
data
;
resolve
({
data
:
data
.
map
(
item
=>
{
const
product
=
isJSONStr
(
item
.
product
)
||
{};
return
{
star
:
item
.
star
,
comment
:
item
.
comment
,
productName
:
product
.
productName
||
''
,
price
:
product
.
price
,
quantity
:
product
.
purchaseCount
,
created
:
item
.
createTime
,
target
:
item
.
byMemberName
,
};
}),
totalCount
,
});
}
reject
(
res
.
data
);
}).
catch
(
err
=>
{
reject
(
err
);
});
});
};
// 获取收到的评价列表
const
getReceivedList
=
(
params
:
ListParams
):
Promise
<
RecordRes
>
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getMemberCommentConsumerReceiveTradeHistoryPage
({
...
params
,
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
const
{
data
,
totalCount
}
=
res
.
data
;
resolve
({
data
:
data
.
map
(
item
=>
{
const
product
=
isJSONStr
(
item
.
product
)
||
{};
return
{
star
:
item
.
star
,
comment
:
item
.
comment
,
productName
:
product
.
productName
||
''
,
price
:
product
.
price
,
quantity
:
product
.
purchaseCount
,
created
:
item
.
dealTime
as
string
,
target
:
item
.
memberName
,
};
}),
totalCount
,
});
}
reject
(
res
.
data
);
}).
catch
(
err
=>
{
reject
(
err
);
});
});
};
// 获取发出的评价列表
const
getSentList
=
(
params
:
ListParams
):
Promise
<
RecordRes
>
=>
{
const
{
memberName
,
...
rest
}
=
params
;
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getMemberCommentConsumerSendTradeHistoryPage
({
...
rest
,
subMemberName
:
memberName
,
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
const
{
data
,
totalCount
}
=
res
.
data
;
resolve
({
data
:
data
.
map
(
item
=>
{
const
product
=
isJSONStr
(
item
.
product
)
||
{};
return
{
star
:
item
.
star
,
comment
:
item
.
comment
,
productName
:
product
.
productName
||
''
,
price
:
product
.
price
,
quantity
:
product
.
purchaseCount
,
created
:
item
.
dealTime
as
string
,
target
:
item
.
subMemberName
,
};
}),
totalCount
,
});
}
reject
(
res
.
data
);
}).
catch
(
err
=>
{
reject
(
err
);
});
});
};
const
evaluateColumns
:
EditableColumns
[]
=
[
{
title
:
' '
,
...
...
@@ -47,47 +280,9 @@ const Analysis: React.FC = () => {
},
];
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
,
},
];
useEffect
(()
=>
{
getTradeSummary
();
},
[]);
return
(
<
PageHeaderWrapper
>
...
...
@@ -96,7 +291,9 @@ const Analysis: React.FC = () => {
padding
:
'0 24px 24px'
,
}
}
>
<
Tabs
className=
{
styles
.
tabs
}
>
<
Tabs
className=
{
styles
.
tabs
}
>
<
TabPane
tab=
"概览"
key=
"1"
>
<
Shelves
title=
"评价统计"
>
<
Row
gutter=
{
24
}
>
...
...
@@ -116,7 +313,7 @@ const Analysis: React.FC = () => {
<
Col
flex=
"auto"
>
<
PolymericTable
dataSource=
{
evaluate
}
dataSource=
{
evaluate
Sum
}
columns=
{
evaluateColumns
}
loading=
{
false
}
pagination=
{
null
}
...
...
@@ -127,41 +324,16 @@ const Analysis: React.FC = () => {
</
Shelves
>
<
Shelves
title=
"评价记录"
>
<
RecordList
list=
{
[]
}
/>
<
div
style=
{
{
padding
:
'24px 0'
,
textAlign
:
'center'
,
}
}
>
<
Button
>
查看更多评论
</
Button
>
</
div
>
<
RecordList
fetchList=
{
getTradeHistory
}
paginationType=
"button"
searchable=
{
false
}
/>
</
Shelves
>
</
TabPane
>
<
TabPane
tab=
"收到的评价"
key=
"2"
>
<
NiceForm
actions=
{
receivedFormActions
}
onSubmit=
{
values
=>
{}
}
effects=
{
(
$
,
actions
)
=>
{
}
}
schema=
{
searchSchema
}
/>
<
RecordList
list=
{
[]
}
/>
<
TabPane
tab=
"收到的评价"
key=
"2"
>
<
RecordList
fetchList=
{
getReceivedList
}
/>
</
TabPane
>
<
TabPane
tab=
"发出的评价"
key=
"3"
>
<
NiceForm
actions=
{
sentFormActions
}
onSubmit=
{
values
=>
{}
}
effects=
{
(
$
,
actions
)
=>
{
}
}
schema=
{
searchSchema
}
/>
<
RecordList
list=
{
[]
}
/>
<
TabPane
tab=
"发出的评价"
key=
"3"
>
<
RecordList
fetchList=
{
getSentList
}
/>
</
TabPane
>
</
Tabs
>
</
MellowCard
>
...
...
src/pages/transaction/purchaserEvaluation/components/EvaluationList/index.tsx
View file @
00a66bb0
...
...
@@ -141,9 +141,9 @@ const EvaluationList = props => {
<
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
className=
"goodInfo-title"
>
{
item
.
good
.
productName
}
</
div
>
<
div
className=
"goodInfo-desc"
>
X
{
item
.
good
.
purchaseCount
||
''
}
</
div
>
<
div
className=
"goodInfo-price"
>
{
`¥ ${item.good.price}`
}
</
div
>
</
div
>
</
div
>
</
Col
>
...
...
src/pages/transaction/purchaserEvaluation/components/RecordList/index.tsx
View file @
00a66bb0
import
React
from
'react'
;
import
{
Button
,
Rate
}
from
'antd'
;
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
Button
,
Rate
,
Spin
,
Pagination
}
from
'antd'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
moment
from
'moment'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
checkMore
}
from
'@/utils'
;
import
{
searchSchema
}
from
'./schema'
;
import
styles
from
'./index.less'
;
interface
RecordListProps
{
list
:
[];
const
formActions
=
createFormActions
();
const
PAGE_SIZE
=
2
;
export
interface
Search
{
/**
* 评价星级(1-5)
*/
star
:
string
/**
* 交易时间开始
*/
dealTimeStart
:
string
/**
* 交易时间结束
*/
dealTimeEnd
:
string
/**
* 评价方名称
*/
memberName
:
string
};
const
RecordList
:
React
.
FC
<
RecordListProps
>
=
()
=>
{
export
interface
ListParams
extends
Search
{
/**
* 当前页
*/
current
:
string
/**
* 每页行数
*/
pageSize
:
string
};
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
interface
RecordItem
{
/**
* 记录id
*/
id
?:
number
/**
* 评价星级(1-5)
*/
star
:
number
/**
* 评价内容
*/
comment
:
string
/**
* 商品名称
*/
productName
:
string
/**
* 商品价格
*/
price
:
number
/**
* 商品数量
*/
quantity
:
number
/**
* 交易时间
*/
created
:
string
/**
* 评价方/被评价方
*/
target
:
string
};
export
interface
RecordRes
{
data
:
RecordItem
[];
totalCount
:
number
;
};
export
default
RecordList
;
\ No newline at end of file
interface
RecordListProps
{
// 分页器类型
paginationType
?:
'pagination'
|
'button'
;
// 是否需要检索
searchable
?:
boolean
;
// 是否是查看收到的品论
opposite
?:
boolean
;
fetchList
:
(
params
:
ListParams
)
=>
Promise
<
RecordRes
>
;
};
interface
RecordListState
{
hasMore
:
boolean
;
page
:
number
;
size
:
number
;
searchVal
:
Search
;
receivedList
:
RecordRes
;
loading
:
boolean
;
};
export
default
class
RecordList
extends
React
.
Component
<
RecordListProps
,
RecordListState
>
{
constructor
(
props
)
{
super
(
props
);
this
.
state
=
{
hasMore
:
false
,
page
:
1
,
size
:
PAGE_SIZE
,
searchVal
:
{
star
:
null
,
dealTimeStart
:
null
,
dealTimeEnd
:
null
,
memberName
:
null
,
},
receivedList
:
{
data
:
[],
totalCount
:
0
},
loading
:
false
,
};
}
componentDidMount
()
{
this
.
getRecordList
().
then
(
res
=>
{
const
{
page
,
size
}
=
this
.
state
;
this
.
setState
({
hasMore
:
checkMore
(
page
,
size
,
res
.
data
.
length
,
res
.
totalCount
),
receivedList
:
res
,
});
});
};
// 获取列表数据
getRecordList
=
():
Promise
<
RecordRes
>
=>
{
const
{
fetchList
}
=
this
.
props
;
if
(
!
fetchList
)
{
return
Promise
.
reject
();
}
this
.
setState
({
loading
:
true
});
return
new
Promise
((
resolve
,
reject
)
=>
{
const
{
searchVal
,
page
,
size
}
=
this
.
state
;
fetchList
({
...
searchVal
,
current
:
`
${
page
}
`
,
pageSize
:
`
${
size
}
`
,
}).
then
(
res
=>
{
resolve
(
res
);
}).
catch
(
err
=>
{
reject
(
err
);
}).
finally
(()
=>
{
this
.
setState
({
loading
:
false
});
});
});
};
// 查询列表
handleSearch
=
values
=>
{
this
.
setState
({
page
:
1
,
receivedList
:
{
data
:
[],
totalCount
:
0
,
},
searchVal
:
values
,
},
()
=>
{
const
{
page
,
size
}
=
this
.
state
;
this
.
getRecordList
().
then
(
res
=>
{
this
.
setState
({
receivedList
:
res
,
hasMore
:
checkMore
(
page
,
size
,
res
.
data
.
length
,
res
.
totalCount
),
});
});
});
};
// 加载更多
handleLoadMore
=
()
=>
{
const
{
hasMore
,
loading
}
=
this
.
state
;
if
(
!
hasMore
||
loading
)
{
return
;
}
this
.
setState
((
prevState
)
=>
({
size
:
prevState
.
size
+
1
,
}));
this
.
getRecordList
().
then
(
res
=>
{
const
{
receivedList
,
page
,
size
}
=
this
.
state
;
this
.
setState
({
receivedList
:
{
...
receivedList
,
data
:
receivedList
.
data
.
concat
(
res
.
data
),
},
hasMore
:
checkMore
(
page
,
size
,
res
.
data
.
length
,
res
.
totalCount
),
});
});
};
handlePaginationChange
=
(
current
:
number
,
pageSize
:
number
)
=>
{
this
.
setState
({
page
:
current
,
size
:
pageSize
,
},
()
=>
{
this
.
getRecordList
().
then
(
res
=>
{
const
{
page
,
size
}
=
this
.
state
;
this
.
setState
({
receivedList
:
res
,
hasMore
:
checkMore
(
page
,
size
,
res
.
data
.
length
,
res
.
totalCount
),
});
});
});
};
render
()
{
const
{
paginationType
=
'pagination'
,
searchable
=
true
,
opposite
=
true
,
}
=
this
.
props
;
const
{
page
,
size
,
loading
,
receivedList
,
hasMore
}
=
this
.
state
;
return
(
<>
{
searchable
&&
(
<
NiceForm
actions=
{
formActions
}
onSubmit=
{
this
.
handleSearch
}
effects=
{
(
$
,
actions
)
=>
{
}
}
schema=
{
searchSchema
}
/>
)
}
<
Spin
spinning=
{
paginationType
===
'pagination'
&&
loading
}
>
<
ul
className=
{
styles
.
record
}
>
{
receivedList
.
data
.
map
((
item
,
index
)
=>
(
<
li
className=
{
styles
[
'record-item'
]
}
key=
{
index
}
>
<
div
className=
{
styles
[
'record-item-good'
]
}
>
<
div
className=
{
styles
[
'record-item-good-name'
]
}
>
{
item
.
productName
}
</
div
>
<
div
>
<
span
className=
{
styles
[
'record-item-good-price'
]
}
>
¥
{
item
.
price
}
</
span
>
<
span
className=
{
styles
[
'record-item-good-desc'
]
}
>
X
{
item
.
quantity
}
</
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'
]
}
>
{
item
.
created
?
moment
(
item
.
created
).
format
(
'YYYY-MM-DD HH:mm:ss'
)
:
''
}
</
div
>
</
div
>
<
div
className=
{
styles
[
'record-item-extra-item'
]
}
>
<
div
className=
{
styles
[
'record-item-extra-item-label'
]
}
>
{
opposite
?
'评价方'
:
'被评价方'
}
:
</
div
>
<
div
className=
{
styles
[
'record-item-extra-item-control'
]
}
>
{
item
.
target
}
</
div
>
</
div
>
</
div
>
<
div
className=
{
styles
[
'record-item-comment'
]
}
>
<
Rate
value=
{
item
.
star
}
disabled
/>
<
div
className=
{
styles
[
'record-item-comment-main'
]
}
title=
{
item
.
comment
}
>
{
item
.
comment
}
</
div
>
</
div
>
<
div
className=
{
styles
[
'record-item-actions'
]
}
>
<
Button
type=
"link"
>
查看
</
Button
>
</
div
>
</
li
>
))
}
</
ul
>
</
Spin
>
{
paginationType
===
'button'
?
(
<>
{
(
hasMore
&&
!
loading
)
&&
(
<
div
style=
{
{
padding
:
'24px 0'
,
textAlign
:
'center'
,
}
}
>
<
Button
onClick=
{
this
.
handleLoadMore
}
>
查看更多评论
</
Button
>
</
div
>
)
}
{
loading
&&
(
<
div
style=
{
{
padding
:
'24px 0'
,
textAlign
:
'center'
,
}
}
>
<
Spin
/>
</
div
>
)
}
</>
)
:
(
<>
{
receivedList
.
data
.
length
>
0
&&
(
<
div
style=
{
{
padding
:
'24px 0'
,
textAlign
:
'right'
,
}
}
>
<
Pagination
current=
{
page
}
pageSize=
{
size
}
total=
{
receivedList
.
totalCount
}
onChange=
{
this
.
handlePaginationChange
}
/>
</
div
>
)
}
</>
)
}
{
(
!
receivedList
.
data
.
length
&&
!
loading
)
&&
(
<
div
style=
{
{
textAlign
:
'center'
}
}
>
暂无数据~
</
div
>
)
}
</>
);
};
};
\ No newline at end of file
src/pages/transaction/purchaserEvaluation/
analysis
/schema/index.ts
→
src/pages/transaction/purchaserEvaluation/
components/RecordList
/schema/index.ts
View file @
00a66bb0
/*
* @Author: XieZhiXiong
* @Date: 2020-
09-22 20:34:49
* @Date: 2020-
10-19 18:08:51
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-
09-22 20:52:53
* @LastEditTime: 2020-
10-19 18:09:31
* @Description:
*/
import
{
ISchema
}
from
'@formily/antd'
;
...
...
@@ -28,7 +28,7 @@ export const searchSchema: ISchema = {
},
},
},
'[
startDate, endDate
]'
:
{
'[
dealTimeStart, dealTimeEnd
]'
:
{
type
:
'string'
,
default
:
''
,
'x-component'
:
'dateSelect'
,
...
...
@@ -40,7 +40,7 @@ export const searchSchema: ISchema = {
},
},
},
n
ame
:
{
memberN
ame
:
{
type
:
'string'
,
'x-component'
:
'Search'
,
'x-component-props'
:
{
...
...
src/pages/transaction/purchaserEvaluation/index.tsx
deleted
100644 → 0
View file @
d0848794
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/purchaserEvaluation/unevaluated/evaluate/index.tsx
View file @
00a66bb0
import
React
from
'react'
;
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
PageHeader
,
Descriptions
,
...
...
@@ -11,9 +11,13 @@ import { FormOutlined } from '@ant-design/icons';
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
history
}
from
'umi'
;
import
{
createFormActions
,
FormEffectHooks
,
FormPath
}
from
'@formily/antd'
;
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
GetOrderPurchaseOrderDetailsResponse
}
from
'@/services/OrderApi'
;
import
{
normalizeFiledata
}
from
'@/utils'
;
import
AvatarWrap
from
'@/components/AvatarWrap'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
normalizeUnevaluatedList
}
from
'../../utils'
;
import
{
evaluateSchema
}
from
'./schema'
;
import
{
createEffects
}
from
'./effects'
;
import
EvaluationList
from
'../../components/EvaluationList'
;
...
...
@@ -21,10 +25,93 @@ import styles from './index.less';
const
formActions
=
createFormActions
();
interface
Unevaluated
{
good
:
{
pic
:
string
,
name
:
string
,
price
:
string
,
desc
:
string
,
};
star
:
number
;
comment
:
string
;
picture
:
string
[];
smile
:
number
;
};
interface
OrderInfo
extends
GetOrderPurchaseOrderDetailsResponse
{
unevaluatedList
:
Unevaluated
[];
};
const
EvaluateOrder
:
React
.
FC
=
()
=>
{
const
{
id
}
=
usePageStatus
();
const
[
orderInfo
,
setOrderInfo
]
=
useState
<
OrderInfo
>
(
null
);
const
[
infoLoading
,
setInfoLoading
]
=
useState
(
false
);
const
[
submitLoading
,
setSubmitLoading
]
=
useState
(
false
);
const
getOrderInfo
=
()
=>
{
if
(
!
id
)
{
return
;
}
setInfoLoading
(
true
);
PublicApi
.
getOrderProcurementOrderDetails
({
id
,
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
const
{
orderProductRequests
}
=
res
.
data
;
setOrderInfo
({
...
res
.
data
,
unevaluatedList
:
normalizeUnevaluatedList
(
orderProductRequests
),
});
}
}).
finally
(()
=>
{
setInfoLoading
(
false
);
});
};
useEffect
(()
=>
{
getOrderInfo
();
},
[]);
const
handleSubmit
=
values
=>
{
console
.
log
(
'values'
,
values
);
setSubmitLoading
(
true
);
const
payload
=
values
.
comments
.
map
(
item
=>
{
const
{
comment
,
good
,
picture
,
star
,
}
=
item
;
return
{
memberId
:
orderInfo
.
supplyMembersId
,
roleId
:
orderInfo
.
supplyMembersRoleId
,
memberName
:
orderInfo
.
supplyMembersName
||
''
,
star
,
comment
,
product
:
JSON
.
stringify
(
good
),
remark
:
orderInfo
.
orderNo
,
productId
:
good
.
productId
,
orderId
:
orderInfo
.
id
,
productImgUrl
:
good
.
pic
,
dealTime
:
orderInfo
.
createTime
,
dealCount
:
good
.
purchaseCount
,
price
:
good
.
price
,
totalPrice
:
orderInfo
.
sumPrice
,
pics
:
picture
.
map
(
item
=>
item
.
status
===
'done'
&&
item
.
data
).
filter
(
Boolean
),
};
});
PublicApi
.
postMemberCommentConsumerOrderTradeSubmit
({
commentSubmitDetailList
:
payload
,
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
setTimeout
(()
=>
{
history
.
goBack
();
},
800
);
}
}).
finally
(()
=>
{
setSubmitLoading
(
false
);
});
};
const
beforeUpload
=
file
=>
{
...
...
@@ -50,62 +137,69 @@ const EvaluateOrder: React.FC = () => {
);
return
(
<
PageHeaderWrapper
title=
{
<>
<
PageHeader
style=
{
{
padding
:
'0'
}
}
onBack=
{
()
=>
history
.
goBack
()
}
title=
{
<
AvatarWrap
info=
{
{
aloneTxt
:
'单'
,
name
:
'订单号:DPTY12'
}
}
/>
}
extra=
{
(
<>
<
Button
type=
"primary"
icon=
{
<
FormOutlined
/>
}
onClick=
{
()
=>
formActions
.
submit
()
}
>
发布
</
Button
>
</>
)
}
>
<
Descriptions
size=
"small"
column=
{
3
}
style=
{
{
padding
:
'0 32px'
,
}
}
<
Spin
spinning=
{
infoLoading
}
>
<
PageHeaderWrapper
title=
{
<>
<
PageHeader
style=
{
{
padding
:
'0'
}
}
onBack=
{
()
=>
history
.
goBack
()
}
title=
{
<
AvatarWrap
info=
{
{
aloneTxt
:
'单'
,
name
:
orderInfo
?.
orderNo
,
}
}
/>
}
extra=
{
(
<>
<
Button
type=
"primary"
icon=
{
<
FormOutlined
/>
}
disabled=
{
!
orderInfo
||
!
orderInfo
.
id
}
loading=
{
submitLoading
}
onClick=
{
()
=>
formActions
.
submit
()
}
>
发布
</
Button
>
</>
)
}
>
<
Descriptions
.
Item
label=
"采购会员"
>
BPTY12
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"下单时间"
span=
{
2
}
>
2020-08-25 08:49
</
Descriptions
.
Item
>
</
Descriptions
>
</
PageHeader
>
</>
}
>
<
NiceForm
actions=
{
formActions
}
expressionScope=
{
{
UploadTip
,
beforeUpload
,
}
}
onSubmit=
{
handleSubmit
}
components=
{
{
EvaluationList
,
}
}
effects=
{
(
$
,
actions
)
=>
{
createEffects
(
$
,
actions
);
}
}
schema=
{
evaluateSchema
}
/>
</
PageHeaderWrapper
>
<
Descriptions
size=
"small"
column=
{
3
}
style=
{
{
padding
:
'0 32px'
,
}
}
>
<
Descriptions
.
Item
label=
"供应会员"
>
{
orderInfo
?.
supplyMembersName
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"下单时间"
span=
{
2
}
>
{
orderInfo
?.
createTime
}
</
Descriptions
.
Item
>
</
Descriptions
>
</
PageHeader
>
</>
}
>
<
NiceForm
actions=
{
formActions
}
initialValues=
{
{
comments
:
orderInfo
?
orderInfo
.
unevaluatedList
:
[],
}
}
expressionScope=
{
{
UploadTip
,
beforeUpload
,
}
}
onSubmit=
{
handleSubmit
}
components=
{
{
EvaluationList
,
}
}
effects=
{
(
$
,
actions
)
=>
{
createEffects
(
$
,
actions
);
}
}
schema=
{
evaluateSchema
}
/>
</
PageHeaderWrapper
>
</
Spin
>
);
};
...
...
src/pages/transaction/purchaserEvaluation/unevaluated/evaluate/schema/index.ts
View file @
00a66bb0
...
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-09-23 17:00:24
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-
09-23 18:06:56
* @LastEditTime: 2020-
10-20 17:58:51
* @Description:
*/
import
{
ISchema
}
from
'@formily/antd'
;
...
...
@@ -14,14 +14,7 @@ export const evaluateSchema: ISchema = {
comments
:
{
type
:
'array'
,
'x-component'
:
'EvaluationList'
,
default
:
[
{
name
:
'杰尼'
,
age
:
24
,
small
:
1
,
star2
:
0
,
},
],
default
:
[],
items
:
{
type
:
'object'
,
properties
:
{
...
...
@@ -50,30 +43,35 @@ export const evaluateSchema: ISchema = {
'x-component'
:
'Rating'
,
'x-component-props'
:
{
allowHalf
:
false
,
},
},
'x-rules'
:
[
{
required
:
true
,
message
:
'请选择满意程度'
,
},
],
},
comment
:
{
type
:
'string'
,
title
:
'评价'
,
required
:
true
,
'x-component'
:
'TextArea'
,
'x-component-props'
:
{
rows
:
4
,
},
},
},
picture
:
{
type
:
'string'
,
title
:
'图片'
,
required
:
true
,
'x-component'
:
'Upload'
,
'x-component-props'
:
{
listType
:
'card'
,
action
:
'/api/file/upload/prefix'
,
action
:
'/api/file/
file/
upload/prefix'
,
data
:
{
fileType
:
UPLOAD_TYPE
,
prefix
:
'/
test
/'
,
prefix
:
'/
supplierEvaluation
/'
,
},
beforeUpload
:
'{{beforeUpload}}'
,
accept
:
'.png, .jpg, .jpeg'
,
},
'x-mega-props'
:
{
addonAfter
:
'{{UploadTip}}'
,
...
...
src/pages/transaction/purchaserEvaluation/unevaluated/index.tsx
View file @
00a66bb0
import
React
,
{
useState
,
useRef
}
from
'react'
;
import
{
Card
,
Badge
,
Button
}
from
'antd'
;
import
{
Link
}
from
'umi'
;
import
{
StandardTable
}
from
'god'
;
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
moment
from
'moment'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
useAsyncInitSelect
}
from
'@/formSchema/effects/useAsyncInitSelect
'
;
import
{
Link
}
from
'um
i'
;
import
{
ORDER_TYPE2
}
from
'@/constants
'
;
import
{
PublicApi
}
from
'@/services/ap
i'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
StatusTag
from
'@/components/StatusTag'
;
...
...
@@ -16,29 +18,6 @@ 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
>
({});
...
...
@@ -58,48 +37,46 @@ const Unevaluated: React.FC = () => {
},
{
title
:
'订单摘要'
,
dataIndex
:
'abstract'
,
align
:
'center'
,
dataIndex
:
'orderThe'
,
align
:
'center'
,
ellipsis
:
true
,
},
{
title
:
'
采购
会员'
,
dataIndex
:
'
member
'
,
title
:
'
供应
会员'
,
dataIndex
:
'
supplyMembersName
'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
<>
{
text
}
</>,
},
{
title
:
'下单时间'
,
dataIndex
:
'create
d
'
,
dataIndex
:
'create
Time
'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
<>
{
text
}
</>
,
render
:
(
text
,
record
)
=>
moment
(
text
).
format
(
'YYYY-MM-DD HH:mm:ss'
)
,
},
{
title
:
'订单总额'
,
dataIndex
:
'
amount
'
,
dataIndex
:
'
sumPrice
'
,
align
:
'center'
,
},
{
title
:
'订单类型'
,
dataIndex
:
'orderType'
,
align
:
'center'
,
dataIndex
:
'type'
,
align
:
'center'
,
render
:
text
=>
ORDER_TYPE2
[
text
],
},
{
title
:
'外部状态'
,
dataIndex
:
'
outerStatusNam
e'
,
dataIndex
:
'
externalStat
e'
,
align
:
'center'
,
filters
:
[],
onFilter
:
(
value
,
record
)
=>
record
.
outerStatus
===
value
,
render
:
(
text
,
record
)
=>
(
<
StatusTag
type=
"
warnning
"
title=
"已完成"
/>
<
StatusTag
type=
"
success
"
title=
"已完成"
/>
),
},
{
title
:
'内部状态'
,
dataIndex
:
'
innerStatusNam
e'
,
dataIndex
:
'
purchaseOrderInteriorStat
e'
,
align
:
'center'
,
filters
:
[],
onFilter
:
(
value
,
record
)
=>
record
.
innerStatus
===
value
,
render
:
(
text
,
record
)
=>
<
Badge
color=
"#606266"
text=
"已完成"
/>,
render
:
(
text
,
record
)
=>
<
Badge
color=
"#41CC9E"
text=
"已完成"
/>,
},
{
title
:
'操作'
,
...
...
@@ -107,7 +84,7 @@ const Unevaluated: React.FC = () => {
align
:
'center'
,
render
:
(
text
,
record
)
=>
(
<>
<
Link
to=
{
`/memberCenter/tranactionAbility/
supplierEvaluation/unevaluated/evaluate
`
}
>
<
Link
to=
{
`/memberCenter/tranactionAbility/
purchaserEvaluation/unevaluated/evaluate?id=${record.id}
`
}
>
<
Button
type=
"link"
>
...
...
@@ -122,17 +99,20 @@ const Unevaluated: React.FC = () => {
const
[
columns
,
setColumns
]
=
useState
<
any
[]
>
(
defaultColumns
);
const
fetchListData
=
(
params
:
any
)
=>
{
return
Promise
.
resolve
({
total
:
2
,
data
:
mock
,
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getOrderProcurementOrderEvaluatedList
(
params
)
.
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
resolve
(
res
.
data
);
}
reject
();
})
.
catch
(()
=>
{
reject
();
});
});
};
// 初始化高级筛选选项
const
fetchSelectOptions
=
async
()
=>
{
return
{};
};
return
(
<
PageHeaderWrapper
>
<
Card
>
...
...
@@ -154,10 +134,6 @@ const Unevaluated: React.FC = () => {
'name'
,
FORM_FILTER_PATH
,
);
useAsyncInitSelect
(
[
'innerStatus'
,
'outerStatus'
],
fetchSelectOptions
,
);
}
}
schema=
{
listSearchSchema
}
/>
...
...
src/pages/transaction/purchaserEvaluation/unevaluated/schema/index.tsx
View file @
00a66bb0
import
{
ISchema
}
from
'@formily/antd'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
UPLOAD_TYPE
}
from
'@/constants'
;
import
{
ORDER_TYPE2_INQUIRY
,
ORDER_TYPE2_DEMAND
,
ORDER_TYPE2_SPOT
,
ORDER_TYPE2_CENTRALIZED
,
ORDER_TYPE2_POINTS
,
ORDER_TYPE2_CHANNEL_DIRECT
,
ORDER_TYPE2_CHANNEL_SPOT
,
ORDER_TYPE2_CHANNEL_POINTS
,
ORDER_TYPE2
,
}
from
'@/constants'
;
export
const
listSearchSchema
:
ISchema
=
{
type
:
'object'
,
...
...
@@ -28,15 +38,15 @@ export const listSearchSchema: ISchema = {
columns
:
6
,
},
properties
:
{
memberTypeId
:
{
supplyMembersName
:
{
type
:
'string'
,
default
:
undefined
,
'x-component-props'
:
{
placeholder
:
'
采购
会员'
,
placeholder
:
'
供应
会员'
,
allowClear
:
true
,
},
},
'[start
Date, endDat
e]'
:
{
'[start
CreateTime, endCreateTim
e]'
:
{
type
:
'string'
,
default
:
''
,
'x-component'
:
'dateSelect'
,
...
...
@@ -45,33 +55,48 @@ export const listSearchSchema: ISchema = {
allowClear
:
true
,
},
},
orderT
ype
:
{
t
ype
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[],
enum
:
[
{
label
:
ORDER_TYPE2
[
ORDER_TYPE2_INQUIRY
],
value
:
ORDER_TYPE2_INQUIRY
,
},
{
label
:
ORDER_TYPE2
[
ORDER_TYPE2_DEMAND
],
value
:
ORDER_TYPE2_DEMAND
,
},
{
label
:
ORDER_TYPE2
[
ORDER_TYPE2_SPOT
],
value
:
ORDER_TYPE2_SPOT
,
},
{
label
:
ORDER_TYPE2
[
ORDER_TYPE2_CENTRALIZED
],
value
:
ORDER_TYPE2_CENTRALIZED
,
},
{
label
:
ORDER_TYPE2
[
ORDER_TYPE2_POINTS
],
value
:
ORDER_TYPE2_POINTS
,
},
{
label
:
ORDER_TYPE2
[
ORDER_TYPE2_CHANNEL_DIRECT
],
value
:
ORDER_TYPE2_CHANNEL_DIRECT
,
},
{
label
:
ORDER_TYPE2
[
ORDER_TYPE2_CHANNEL_SPOT
],
value
:
ORDER_TYPE2_CHANNEL_SPOT
,
},
{
label
:
ORDER_TYPE2
[
ORDER_TYPE2_CHANNEL_POINTS
],
value
:
ORDER_TYPE2_CHANNEL_POINTS
,
},
],
'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'
:
{
...
...
src/pages/transaction/purchaserEvaluation/utils.ts
0 → 100644
View file @
00a66bb0
/*
* @Author: XieZhiXiong
* @Date: 2020-10-19 16:02:53
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-10-20 13:40:11
* @Description:
*/
// 初始化待评价列表
export
const
normalizeUnevaluatedList
=
(
arr
:
{[
key
:
string
]:
any
}[])
=>
{
const
ret
=
[];
if
(
!
Array
.
isArray
(
arr
))
{
return
ret
;
}
arr
.
forEach
(
item
=>
{
const
atom
=
{
good
:
{
pic
:
item
.
imgUrl
||
''
,
productId
:
item
.
productId
,
orderId
:
item
.
orderId
,
productName
:
item
.
productName
,
category
:
item
.
category
,
brand
:
item
.
brand
,
unit
:
item
.
unit
,
price
:
item
.
price
,
memberPrice
:
item
.
memberPrice
,
purchaseCount
:
item
.
purchaseCount
,
// 采购数量
taxInclusive
:
item
.
taxInclusive
,
money
:
item
.
money
,
inventory
:
item
.
inventory
,
productAttributeJson
:
item
.
productAttributeJson
,
},
star
:
0
,
// 评分星星
comment
:
''
,
// 评价
picture
:
[],
smile
:
1
,
// 笑脸
};
ret
.
push
(
atom
);
});
return
ret
;
};
\ No newline at end of file
src/pages/transaction/supplierEvaluation/analysis/index.tsx
View file @
00a66bb0
import
React
,
{
useState
}
from
'react'
;
import
React
,
{
use
Effect
,
use
State
}
from
'react'
;
import
{
Tabs
,
Row
,
Col
,
Button
}
from
'antd'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
isJSONStr
}
from
'@/utils'
;
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
Shelves
from
'../components/Shelves'
;
import
RecordList
from
'../components/RecordList'
;
import
RecordList
,
{
ListParams
,
RecordRes
}
from
'../components/RecordList'
;
import
styles
from
'./index.less'
;
const
{
TabPane
}
=
Tabs
;
const
PAGE_SIZE
=
10
;
interface
ReceivedSearch
{
/**
* 评价星级(1-5)
...
...
@@ -34,51 +33,222 @@ interface ReceivedSearch {
memberName
:
string
};
interface
EstimateSumItems
{
id
?:
number
,
title
?:
JSX
.
Element
,
star
?:
number
,
last7days
?:
number
,
last30days
?:
number
,
last180days
?:
number
,
before180days
?:
number
,
sum
?:
number
,
};
const
Analysis
:
React
.
FC
=
()
=>
{
const
[
historyPage
,
setHistoryPage
]
=
useState
(
1
);
const
[
historySize
,
setHistorySize
]
=
useState
(
PAGE_SIZE
);
const
[
receivedPage
,
setReceivedPage
]
=
useState
(
1
);
const
[
receivedSize
,
setReceivedSize
]
=
useState
(
PAGE_SIZE
);
const
[
receivedSearchVal
,
setReceivedSearchVal
]
=
useState
<
ReceivedSearch
>
({
star
:
'0'
,
dealTimeStart
:
''
,
dealTimeEnd
:
''
,
memberName
:
''
,
});
const
[
receivedList
,
setReceivedList
]
=
useState
([]);
const
[
evaluateSum
,
setEvaluateSum
]
=
useState
([]);
const
[
evaluatePie
,
setEvaluatePie
]
=
useState
([]);
const
summaryEvaluate
=
(
items
:
EstimateSumItems
[]):
EstimateSumItems
[]
=>
{
// 顺序写死的 1:表示好评,2:表示中评,3:表示差评
// 根据 1、2星级为差评,3星级为中评,4、5星级为好评往里边塞数据
const
source
=
items
||
[];
const
ret
=
[
{
id
:
1
,
title
:
(<
Mood
type=
"smile"
/>),
},
{
id
:
2
,
title
:
(<
Mood
type=
"notBad"
/>),
},
{
id
:
3
,
title
:
(<
Mood
type=
"sad"
/>),
},
];
for
(
let
i
=
0
;
i
<
source
.
length
;
i
++
)
{
const
item
=
source
[
i
];
const
{
star
,
...
rest
}
=
item
;
let
target
=
null
;
switch
(
item
.
star
)
{
case
1
:
case
2
:
{
target
=
ret
[
0
];
break
;
}
case
3
:
{
target
=
ret
[
1
];
break
;
}
case
4
:
case
5
:
{
target
=
ret
[
2
];
break
;
}
default
:
break
;
}
if
(
!
target
)
{
continue
;
}
// 大于 2 表示已经添加过一次数据,之后就累加上去,否则直接赋值
if
(
Object
.
keys
(
target
).
length
<=
2
)
{
target
=
Object
.
assign
(
target
,
rest
);
}
else
{
for
(
const
key
in
target
)
{
if
(
!
Object
.
prototype
.
hasOwnProperty
.
call
(
target
,
key
))
{
continue
;
}
// 排除 id、title 固定的 key
if
(
key
!==
'id'
&&
key
!==
'title'
)
{
target
[
key
]
+=
item
[
key
];
}
}
}
}
return
ret
;
};
// 取得评价统计 Pie 饼图数据
const
getSummaryEvaluatePie
=
(
data
:
EstimateSumItems
[])
=>
{
const
source
=
data
||
[];
const
count
=
source
.
reduce
((
pre
,
now
)
=>
now
.
sum
+
pre
,
0
);
const
good
=
source
[
0
]
&&
source
[
0
].
sum
?
source
[
0
].
sum
:
0
;
const
notBad
=
source
[
1
]
&&
source
[
1
].
sum
?
source
[
1
].
sum
:
0
;
const
bad
=
source
[
2
]
&&
source
[
2
].
sum
?
source
[
2
].
sum
:
0
;
const
ret
=
[
{
x
:
`好评
${
count
>
0
?
(
good
/
count
*
100
).
toFixed
(
2
)
:
'0'
}
%`
,
y
:
good
,
},
{
x
:
`中评
${
count
>
0
?
(
notBad
/
count
*
100
).
toFixed
(
2
)
:
0
}
%`
,
y
:
notBad
,
},
{
x
:
`差评
${
count
>
0
?
(
bad
/
count
*
100
).
toFixed
(
2
)
:
0
}
%`
,
y
:
bad
,
},
];
return
ret
;
};
// 获取评价汇总
const
getTradeSummary
=
()
=>
{
PublicApi
.
getMemberCommentSupplyCountSupplyTradeSummary
().
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
const
evaluate
=
summaryEvaluate
(
res
.
data
.
rows
);
const
evaluatePieData
=
getSummaryEvaluatePie
(
evaluate
);
setEvaluateSum
(
evaluate
);
setEvaluatePie
(
evaluatePieData
);
}
});
};
// 获取评价记录
const
getTradeHistory
=
()
=>
{
PublicApi
.
getMemberCommentSupplyCountSupplyTradeHistoryPage
({
memberId
:
'0'
,
validateId
:
'0'
,
starLevel
:
null
,
current
:
`
${
historyPage
}
`
,
pageSize
:
`
${
historySize
}
`
,
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
}
const
getTradeHistory
=
(
params
:
ListParams
):
Promise
<
RecordRes
>
=>
{
const
{
star
,
...
rest
}
=
params
;
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getMemberCommentSupplyCountSupplyTradeHistoryPage
({
...
rest
,
starLevel
:
params
.
star
,
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
const
{
data
,
totalCount
}
=
res
.
data
;
resolve
({
data
:
data
.
map
(
item
=>
{
const
product
=
isJSONStr
(
item
.
product
)
||
{};
return
{
star
:
item
.
star
,
comment
:
item
.
comment
,
productName
:
product
.
productName
||
''
,
price
:
product
.
price
,
quantity
:
product
.
purchaseCount
,
created
:
item
.
createTime
,
target
:
item
.
byMemberName
,
};
}),
totalCount
,
});
}
reject
(
res
.
data
);
}).
catch
(
err
=>
{
reject
(
err
);
});
});
};
// 获取收到的评价列表
const
getReceivedList
=
()
=>
{
PublicApi
.
getMemberCommentSupplySupplyTradeHistoryPage
({
...
receivedSearchVal
,
current
:
`
${
receivedPage
}
`
,
pageSize
:
`
${
receivedSize
}
`
,
}).
then
(
res
=>
{
const
getReceivedList
=
(
params
:
ListParams
):
Promise
<
RecordRes
>
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getMemberCommentSupplySupplyTradeHistoryPage
({
...
params
,
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
const
{
data
,
totalCount
}
=
res
.
data
;
resolve
({
data
:
data
.
map
(
item
=>
{
const
product
=
isJSONStr
(
item
.
product
)
||
{};
return
{
star
:
item
.
star
,
comment
:
item
.
comment
,
productName
:
product
.
productName
||
''
,
price
:
product
.
price
,
quantity
:
product
.
purchaseCount
,
created
:
item
.
dealTime
as
string
,
target
:
item
.
memberName
,
};
}),
totalCount
,
});
}
reject
(
res
.
data
);
}).
catch
(
err
=>
{
reject
(
err
);
});
});
};
// 获取发出的评价列表
const
getSentList
=
(
params
:
ListParams
):
Promise
<
RecordRes
>
=>
{
const
{
memberName
,
...
rest
}
=
params
;
return
new
Promise
((
resolve
,
reject
)
=>
{
PublicApi
.
getMemberCommentSupplySendTradeHistoryPage
({
...
rest
,
subMemberName
:
memberName
,
}).
then
(
res
=>
{
if
(
res
.
code
===
1000
)
{
const
{
data
,
totalCount
}
=
res
.
data
;
resolve
({
data
:
data
.
map
(
item
=>
{
const
product
=
isJSONStr
(
item
.
product
)
||
{};
return
{
star
:
item
.
star
,
comment
:
item
.
comment
,
productName
:
product
.
productName
||
''
,
price
:
product
.
price
,
quantity
:
product
.
purchaseCount
,
created
:
item
.
dealTime
as
string
,
target
:
item
.
subMemberName
,
};
}),
totalCount
,
});
}
reject
(
res
.
data
);
}).
catch
(
err
=>
{
reject
(
err
);
});
});
};
...
...
@@ -110,70 +280,9 @@ const Analysis: React.FC = () => {
},
];
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
,
},
];
const
handleTabsChange
=
key
=>
{
console
.
log
(
'key'
,
key
)
switch
(
key
)
{
case
'1'
:
{
break
;
}
case
'2'
:
{
break
;
}
case
'3'
:
{
break
;
}
default
:
break
;
}
};
useEffect
(()
=>
{
getTradeSummary
();
},
[]);
return
(
<
PageHeaderWrapper
>
...
...
@@ -184,7 +293,6 @@ const Analysis: React.FC = () => {
>
<
Tabs
className=
{
styles
.
tabs
}
onChange=
{
handleTabsChange
}
>
<
TabPane
tab=
"概览"
key=
"1"
>
<
Shelves
title=
"评价统计"
>
...
...
@@ -205,7 +313,7 @@ const Analysis: React.FC = () => {
<
Col
flex=
"auto"
>
<
PolymericTable
dataSource=
{
evaluate
}
dataSource=
{
evaluate
Sum
}
columns=
{
evaluateColumns
}
loading=
{
false
}
pagination=
{
null
}
...
...
@@ -216,16 +324,16 @@ const Analysis: React.FC = () => {
</
Shelves
>
<
Shelves
title=
"评价记录"
>
<
RecordList
list=
{
[]
}
/>
<
RecordList
fetchList=
{
getTradeHistory
}
paginationType=
"button"
searchable=
{
false
}
/>
</
Shelves
>
</
TabPane
>
<
TabPane
tab=
"收到的评价"
key=
"2"
>
<
RecordList
list=
{
[]
}
/>
<
RecordList
fetchList=
{
getReceivedList
}
/>
</
TabPane
>
<
TabPane
tab=
"发出的评价"
key=
"3"
>
<
RecordList
list=
{
[]
}
/>
<
RecordList
fetchList=
{
getSentList
}
/>
</
TabPane
>
</
Tabs
>
</
MellowCard
>
...
...
src/pages/transaction/supplierEvaluation/components/EvaluationList/index.tsx
View file @
00a66bb0
...
...
@@ -142,7 +142,7 @@ const EvaluationList = props => {
</
div
>
<
div
className=
"goodInfo-right"
>
<
div
className=
"goodInfo-title"
>
{
item
.
good
.
productName
}
</
div
>
<
div
className=
"goodInfo-desc"
>
{
item
.
good
.
purchaseCount
||
''
}
</
div
>
<
div
className=
"goodInfo-desc"
>
X
{
item
.
good
.
purchaseCount
||
''
}
</
div
>
<
div
className=
"goodInfo-price"
>
{
`¥ ${item.good.price}`
}
</
div
>
</
div
>
</
div
>
...
...
src/pages/transaction/supplierEvaluation/components/RecordList/index.tsx
View file @
00a66bb0
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
Button
,
Rate
,
Spin
}
from
'antd'
;
import
{
Button
,
Rate
,
Spin
,
Pagination
}
from
'antd'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
moment
from
'moment'
;
import
NiceForm
from
'@/components/NiceForm'
;
import
{
checkMore
}
from
'@/utils'
;
import
{
searchSchema
}
from
'./schema'
;
import
styles
from
'./index.less'
;
const
formActions
=
createFormActions
();
const
PAGE_SIZE
=
10
;
const
PAGE_SIZE
=
2
;
export
interface
Search
{
/**
...
...
@@ -43,7 +45,7 @@ export interface RecordItem {
/**
* 记录id
*/
id
:
number
id
?
:
number
/**
* 评价星级(1-5)
*/
...
...
@@ -53,21 +55,25 @@ export interface RecordItem {
*/
comment
:
string
/**
* 商品
信息
* 商品
名称
*/
product
:
string
product
Name
:
string
/**
*
备注(订单号)
*
商品价格
*/
remark
:
string
price
:
number
/**
* 商品数量
*/
quantity
:
number
/**
* 交易时间
*/
dealTime
:
{}
created
:
string
/**
* 评价方
* 评价方
/被评价方
*/
memberName
:
string
target
:
string
};
export
interface
RecordRes
{
...
...
@@ -76,31 +82,64 @@ export interface RecordRes {
};
interface
RecordListProps
{
// 分页器类型
paginationType
?:
'pagination'
|
'button'
;
// 是否需要检索
searchable
?:
boolean
;
// 是否是查看收到的品论
opposite
?:
boolean
;
fetchList
:
(
params
:
ListParams
)
=>
Promise
<
RecordRes
>
;
};
const
RecordList
:
React
.
FC
<
RecordListProps
>
=
({
fetchList
,
})
=>
{
const
[
hasMore
,
setHasMore
]
=
useState
(
false
);
const
[
page
,
setPage
]
=
useState
(
1
);
const
[
size
,
setSize
]
=
useState
(
PAGE_SIZE
);
const
[
searchVal
,
setSearchVal
]
=
useState
<
Search
>
({
star
:
'0'
,
dealTimeStart
:
''
,
dealTimeEnd
:
''
,
memberName
:
''
,
});
const
[
receivedList
,
setReceivedList
]
=
useState
<
RecordRes
>
({
data
:
[],
totalCount
:
0
});
const
[
loading
,
setLoading
]
=
useState
(
false
);
interface
RecordListState
{
hasMore
:
boolean
;
page
:
number
;
size
:
number
;
searchVal
:
Search
;
receivedList
:
RecordRes
;
loading
:
boolean
;
};
export
default
class
RecordList
extends
React
.
Component
<
RecordListProps
,
RecordListState
>
{
constructor
(
props
)
{
super
(
props
);
this
.
state
=
{
hasMore
:
false
,
page
:
1
,
size
:
PAGE_SIZE
,
searchVal
:
{
star
:
null
,
dealTimeStart
:
null
,
dealTimeEnd
:
null
,
memberName
:
null
,
},
receivedList
:
{
data
:
[],
totalCount
:
0
},
loading
:
false
,
};
}
componentDidMount
()
{
this
.
getRecordList
().
then
(
res
=>
{
const
{
page
,
size
}
=
this
.
state
;
this
.
setState
({
hasMore
:
checkMore
(
page
,
size
,
res
.
data
.
length
,
res
.
totalCount
),
receivedList
:
res
,
});
});
};
// 获取列表数据
const
getRecordList
=
():
Promise
<
RecordRes
>
=>
{
getRecordList
=
():
Promise
<
RecordRes
>
=>
{
const
{
fetchList
}
=
this
.
props
;
if
(
!
fetchList
)
{
return
Promise
.
reject
();
}
setLoading
(
true
);
this
.
setState
({
loading
:
true
}
);
return
new
Promise
((
resolve
,
reject
)
=>
{
const
{
searchVal
,
page
,
size
}
=
this
.
state
;
fetchList
({
...
searchVal
,
current
:
`
${
page
}
`
,
...
...
@@ -110,118 +149,184 @@ const RecordList: React.FC<RecordListProps> = ({
}).
catch
(
err
=>
{
reject
(
err
);
}).
finally
(()
=>
{
setLoading
(
false
);
this
.
setState
({
loading
:
false
});
});
});
};
useEffect
(()
=>
{
getRecordList
().
then
(
res
=>
{
setReceivedList
(
res
);
});
},
[]);
// 查询列表
const
handleSearch
=
values
=>
{
setPage
(
1
);
setSearchVal
(
values
);
getRecordList
().
then
(
res
=>
{
setReceivedList
(
res
);
handleSearch
=
values
=>
{
this
.
setState
({
page
:
1
,
receivedList
:
{
data
:
[],
totalCount
:
0
,
},
searchVal
:
values
,
},
()
=>
{
const
{
page
,
size
}
=
this
.
state
;
this
.
getRecordList
().
then
(
res
=>
{
this
.
setState
({
receivedList
:
res
,
hasMore
:
checkMore
(
page
,
size
,
res
.
data
.
length
,
res
.
totalCount
),
});
});
});
};
// 加载更多
const
handleLoadMore
=
()
=>
{
handleLoadMore
=
()
=>
{
const
{
hasMore
,
loading
}
=
this
.
state
;
if
(
!
hasMore
||
loading
)
{
return
;
}
setSize
(
size
+
1
);
getRecordList
().
then
(
res
=>
{
setReceivedList
({
...
receivedList
,
data
:
receivedList
.
data
.
concat
(
res
.
data
),
this
.
setState
((
prevState
)
=>
({
size
:
prevState
.
size
+
1
,
}));
this
.
getRecordList
().
then
(
res
=>
{
const
{
receivedList
,
page
,
size
}
=
this
.
state
;
this
.
setState
({
receivedList
:
{
...
receivedList
,
data
:
receivedList
.
data
.
concat
(
res
.
data
),
},
hasMore
:
checkMore
(
page
,
size
,
res
.
data
.
length
,
res
.
totalCount
),
});
});
};
return
(
<>
<
NiceForm
actions=
{
formActions
}
onSubmit=
{
handleSearch
}
effects=
{
(
$
,
actions
)
=>
{
}
}
schema=
{
searchSchema
}
/>
<
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
>
handlePaginationChange
=
(
current
:
number
,
pageSize
:
number
)
=>
{
this
.
setState
({
page
:
current
,
size
:
pageSize
,
},
()
=>
{
this
.
getRecordList
().
then
(
res
=>
{
const
{
page
,
size
}
=
this
.
state
;
this
.
setState
({
receivedList
:
res
,
hasMore
:
checkMore
(
page
,
size
,
res
.
data
.
length
,
res
.
totalCount
),
});
});
});
};
render
()
{
const
{
paginationType
=
'pagination'
,
searchable
=
true
,
opposite
=
true
,
}
=
this
.
props
;
const
{
page
,
size
,
loading
,
receivedList
,
hasMore
}
=
this
.
state
;
{
(
hasMore
&&
!
loading
)
&&
(
<
div
style=
{
{
padding
:
'24px 0'
,
textAlign
:
'center'
,
}
}
>
<
Button
onClick=
{
handleLoadMore
}
>
查看更多评论
</
Button
>
</
div
>
)
}
{
loading
&&
(
<
div
style=
{
{
padding
:
'24px 0'
,
textAlign
:
'center'
,
}
}
>
<
Spin
/>
</
div
>
)
}
</>
);
};
return
(
<>
{
searchable
&&
(
<
NiceForm
actions=
{
formActions
}
onSubmit=
{
this
.
handleSearch
}
effects=
{
(
$
,
actions
)
=>
{
}
}
schema=
{
searchSchema
}
/>
)
}
export
default
RecordList
;
\ No newline at end of file
<
Spin
spinning=
{
paginationType
===
'pagination'
&&
loading
}
>
<
ul
className=
{
styles
.
record
}
>
{
receivedList
.
data
.
map
((
item
,
index
)
=>
(
<
li
className=
{
styles
[
'record-item'
]
}
key=
{
index
}
>
<
div
className=
{
styles
[
'record-item-good'
]
}
>
<
div
className=
{
styles
[
'record-item-good-name'
]
}
>
{
item
.
productName
}
</
div
>
<
div
>
<
span
className=
{
styles
[
'record-item-good-price'
]
}
>
¥
{
item
.
price
}
</
span
>
<
span
className=
{
styles
[
'record-item-good-desc'
]
}
>
X
{
item
.
quantity
}
</
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'
]
}
>
{
item
.
created
?
moment
(
item
.
created
).
format
(
'YYYY-MM-DD HH:mm:ss'
)
:
''
}
</
div
>
</
div
>
<
div
className=
{
styles
[
'record-item-extra-item'
]
}
>
<
div
className=
{
styles
[
'record-item-extra-item-label'
]
}
>
{
opposite
?
'评价方'
:
'被评价方'
}
:
</
div
>
<
div
className=
{
styles
[
'record-item-extra-item-control'
]
}
>
{
item
.
target
}
</
div
>
</
div
>
</
div
>
<
div
className=
{
styles
[
'record-item-comment'
]
}
>
<
Rate
value=
{
item
.
star
}
disabled
/>
<
div
className=
{
styles
[
'record-item-comment-main'
]
}
title=
{
item
.
comment
}
>
{
item
.
comment
}
</
div
>
</
div
>
<
div
className=
{
styles
[
'record-item-actions'
]
}
>
<
Button
type=
"link"
>
查看
</
Button
>
</
div
>
</
li
>
))
}
</
ul
>
</
Spin
>
{
paginationType
===
'button'
?
(
<>
{
(
hasMore
&&
!
loading
)
&&
(
<
div
style=
{
{
padding
:
'24px 0'
,
textAlign
:
'center'
,
}
}
>
<
Button
onClick=
{
this
.
handleLoadMore
}
>
查看更多评论
</
Button
>
</
div
>
)
}
{
loading
&&
(
<
div
style=
{
{
padding
:
'24px 0'
,
textAlign
:
'center'
,
}
}
>
<
Spin
/>
</
div
>
)
}
</>
)
:
(
<>
{
receivedList
.
data
.
length
>
0
&&
(
<
div
style=
{
{
padding
:
'24px 0'
,
textAlign
:
'right'
,
}
}
>
<
Pagination
current=
{
page
}
pageSize=
{
size
}
total=
{
receivedList
.
totalCount
}
onChange=
{
this
.
handlePaginationChange
}
/>
</
div
>
)
}
</>
)
}
{
(
!
receivedList
.
data
.
length
&&
!
loading
)
&&
(
<
div
style=
{
{
textAlign
:
'center'
}
}
>
暂无数据~
</
div
>
)
}
</>
);
};
};
\ No newline at end of file
src/pages/transaction/supplierEvaluation/constans.tsx
deleted
100644 → 0
View file @
d0848794
import
{
PurchaseOrderOutWorkState
,
SaleOrderInsideWorkState
,
}
from
'@/constants'
;
// 订单外部状态 StatusTag map
export
const
ORDER_INNER_STATUS_TYPE
=
{
[
PurchaseOrderOutWorkState
.
FINISH_ORDER
]:
'success'
,
};
// 订单内部状态 Tag badge map
export
const
ORDER_INNER_STATUS_BADGE_COLOR
=
{
[
SaleOrderInsideWorkState
.
FILLING_ORDER
]:
'#00B37A'
,
};
// 订单内部状态 text
export
const
ORDER_INNER_STATUS_TXT_FINISHING
=
{
[
SaleOrderInsideWorkState
.
FILLING_ORDER
]:
'已完成'
,
};
\ No newline at end of file
src/pages/transaction/supplierEvaluation/index.less
deleted
100644 → 0
View file @
d0848794
src/pages/transaction/supplierEvaluation/index.tsx
deleted
100644 → 0
View file @
d0848794
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/unevaluated/evaluate/index.tsx
View file @
00a66bb0
...
...
@@ -49,6 +49,9 @@ const EvaluateOrder: React.FC = () => {
const
[
submitLoading
,
setSubmitLoading
]
=
useState
(
false
);
const
getOrderInfo
=
()
=>
{
if
(
!
id
)
{
return
;
}
setInfoLoading
(
true
);
PublicApi
.
getOrderPurchaseOrderDetails
({
id
,
...
...
@@ -71,7 +74,7 @@ const EvaluateOrder: React.FC = () => {
const
handleSubmit
=
values
=>
{
setSubmitLoading
(
true
);
const
payload
=
values
.
map
(
item
=>
{
const
payload
=
values
.
comments
.
map
(
item
=>
{
const
{
comment
,
good
,
...
...
@@ -80,14 +83,16 @@ const EvaluateOrder: React.FC = () => {
}
=
item
;
return
{
memberId
:
orderInfo
.
supplyMembers
Id
,
roleId
:
'暂无'
,
memberName
:
orderInfo
.
supplyMembersName
,
memberId
:
orderInfo
.
createMember
Id
,
roleId
:
orderInfo
.
createRoleId
,
memberName
:
orderInfo
.
createMemberName
||
''
,
star
,
comment
,
product
:
JSON
.
stringify
(
good
),
remark
:
orderInfo
.
orderNo
,
productId
:
good
.
productId
,
orderId
:
orderInfo
.
id
,
productImgUrl
:
good
.
pic
,
dealTime
:
orderInfo
.
createTime
,
dealCount
:
good
.
purchaseCount
,
price
:
good
.
price
,
...
...
@@ -168,7 +173,7 @@ const EvaluateOrder: React.FC = () => {
padding
:
'0 32px'
,
}
}
>
<
Descriptions
.
Item
label=
"采购会员"
>
{
'暂无'
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"采购会员"
>
{
orderInfo
?.
createMemberName
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"下单时间"
span=
{
2
}
>
{
orderInfo
?.
createTime
}
</
Descriptions
.
Item
>
</
Descriptions
>
</
PageHeader
>
...
...
src/pages/transaction/supplierEvaluation/unevaluated/index.tsx
View file @
00a66bb0
...
...
@@ -5,14 +5,10 @@ import { StandardTable } from 'god';
import
{
ColumnType
}
from
'antd/lib/table/interface'
;
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
createFormActions
}
from
'@formily/antd'
;
import
moment
from
'moment'
;
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
;
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
ORDER_TYPE2
,
SaleOrderInsideWorkStateTexts
,
PayOutWorkStateTexts
}
from
'@/constants'
;
import
{
ORDER_INNER_STATUS_TYPE
,
ORDER_INNER_STATUS_BADGE_COLOR
,
ORDER_INNER_STATUS_TXT_FINISHING
,
}
from
'../constans'
;
import
{
ORDER_TYPE2
}
from
'@/constants'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
EyePreview
from
'@/components/EyePreview'
;
import
NiceForm
from
'@/components/NiceForm'
;
...
...
@@ -55,7 +51,7 @@ const Unevaluated: React.FC = () => {
title
:
'下单时间'
,
dataIndex
:
'createTime'
,
align
:
'center'
,
render
:
(
text
,
record
)
=>
<>
{
text
}
</>
,
render
:
(
text
,
record
)
=>
moment
(
text
).
format
(
'YYYY-MM-DD HH:mm:ss'
)
,
},
{
title
:
'订单总额'
,
...
...
@@ -72,8 +68,6 @@ const Unevaluated: React.FC = () => {
title
:
'外部状态'
,
dataIndex
:
'externalState'
,
align
:
'center'
,
filters
:
[],
onFilter
:
(
value
,
record
)
=>
record
.
outerStatus
===
value
,
render
:
(
text
,
record
)
=>
(
<
StatusTag
type=
"success"
title=
"已完成"
/>
),
...
...
@@ -82,8 +76,6 @@ const Unevaluated: React.FC = () => {
title
:
'内部状态'
,
dataIndex
:
'purchaseOrderInteriorState'
,
align
:
'center'
,
filters
:
[],
onFilter
:
(
value
,
record
)
=>
record
.
innerStatus
===
value
,
render
:
(
text
,
record
)
=>
<
Badge
color=
"#41CC9E"
text=
"已完成"
/>,
},
{
...
...
src/pages/transaction/supplierEvaluation/unevaluated/schema/index.tsx
View file @
00a66bb0
...
...
@@ -38,7 +38,7 @@ export const listSearchSchema: ISchema = {
columns
:
6
,
},
properties
:
{
supplyM
embersName
:
{
m
embersName
:
{
type
:
'string'
,
default
:
undefined
,
'x-component-props'
:
{
...
...
@@ -46,7 +46,7 @@ export const listSearchSchema: ISchema = {
allowClear
:
true
,
},
},
'[start
Date, endDat
e]'
:
{
'[start
CreateTime, endCreateTim
e]'
:
{
type
:
'string'
,
default
:
''
,
'x-component'
:
'dateSelect'
,
...
...
@@ -55,7 +55,7 @@ export const listSearchSchema: ISchema = {
allowClear
:
true
,
},
},
orderT
ype
:
{
t
ype
:
{
type
:
'string'
,
default
:
undefined
,
enum
:
[
...
...
src/pages/transaction/supplierEvaluation/utils.ts
View file @
00a66bb0
...
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-10-19 16:02:53
* @LastEditors: XieZhiXiong
* @LastEditTime: 2020-10-
19 17:10:42
* @LastEditTime: 2020-10-
20 18:03:34
* @Description:
*/
...
...
@@ -16,8 +16,7 @@ export const normalizeUnevaluatedList = (arr: {[key: string]: any}[]) => {
arr
.
forEach
(
item
=>
{
const
atom
=
{
good
:
{
pic
:
''
,
quantity
:
item
.
productAttributeJson
||
''
,
pic
:
item
.
imgUrl
||
''
,
productId
:
item
.
productId
,
orderId
:
item
.
orderId
,
productName
:
item
.
productName
,
...
...
src/utils/index.tsx
View file @
00a66bb0
...
...
@@ -427,11 +427,19 @@ export const padRequiredMessage = (originSchema: ISchema) => {
return
originSchema
}
export
interface
FileData
{
uid
:
string
;
name
:
string
;
status
:
'uploading'
|
'done'
|
'error'
|
'removed'
;
url
:
string
;
};
// 初始化 Upload 数据
export
const
normalizeFiledata
=
url
=>
{
url
=
url
||
''
;
export
function
normalizeFiledata
<
T
>
(
url
:
T
):
T
export
function
normalizeFiledata
(
url
:
string
):
FileData
export
function
normalizeFiledata
(
url
:
any
):
any
{
if
(
!
url
)
{
return
;
return
url
;
}
const
splited
=
url
.
split
(
'/'
);
const
fileName
=
splited
&&
splited
.
length
?
splited
[
splited
.
length
-
1
]
:
''
;
...
...
@@ -445,13 +453,13 @@ export const normalizeFiledata = url => {
};
/**
*
检查是否还有更多
* 检查是否还有更多
* @param {Number} curPage 当前页码
* @param {Number} curSize 当前页数
* @param {Number} dataLen 当前数据长度
* @param {Number} dataTotal 数据总长度
*/
export
const
checkMore
=
(
curPage
,
curSize
,
dataLen
,
dataTotal
)
=>
{
export
const
checkMore
=
(
curPage
:
number
,
curSize
:
number
,
dataLen
:
number
,
dataTotal
:
number
)
=>
{
let
hasMore
=
true
;
if
(
!
dataLen
||
dataLen
+
(
curPage
-
1
)
*
curSize
>=
+
dataTotal
)
{
...
...
@@ -460,6 +468,22 @@ export const checkMore = (curPage, curSize, dataLen, dataTotal) => {
return
hasMore
;
};
/**
*
* @param {string} str 需要判断是否是 JSON字符串的 字符串
*/
export
const
isJSONStr
=
str
=>
{
if
(
typeof
str
===
'string'
)
{
try
{
const
complete
=
JSON
.
parse
(
str
);
return
complete
;
}
catch
(
e
)
{
return
null
;
}
}
return
str
;
}
export
default
{
isArray
,
isObject
,
...
...
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