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
de7b2757
Commit
de7b2757
authored
Sep 08, 2021
by
前端-黄佳鑫
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'v2' of
http://10.0.0.22:3000/lingxi/lingxi-business-paltform
into v2
parents
ef0fadb0
9f795857
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
31 changed files
with
565 additions
and
675 deletions
+565
-675
index.tsx
src/pages/afterService/components/ReturnDetailInfo/index.tsx
+2
-2
index.tsx
src/pages/afterService/components/ReturnInfoDrawer/index.tsx
+5
-2
index.tsx
...pplication/returnPrSubmit/components/ReturnForm/index.tsx
+2
-1
index.tsx
src/pages/channel/templateDetail/index.tsx
+8
-0
addProducts.tsx
src/pages/commodity/products/addProducts.tsx
+1
-1
activityProductDrawer.tsx
...ts/drawer/activityProductDrawer/activityProductDrawer.tsx
+7
-7
index.tsx
src/pages/editor/components/drawer/commodityDrawer/index.tsx
+1
-4
returnSaveParams.ts
src/pages/editor/components/toolBar/returnSaveParams.ts
+0
-0
index.tsx
...anel/propsSettings/components/marketingCardGood/index.tsx
+25
-22
config.ts
src/pages/mobileTemplate/channelTemplateEdit/config.ts
+1
-190
index.tsx
src/pages/mobileTemplate/channelTemplateEdit/index.tsx
+0
-0
index.tsx
src/pages/mobileTemplate/shopTemplateEdit/index.tsx
+19
-19
index.tsx
...s/procurement/callForBids/addRemarkBidCommittee/index.tsx
+24
-26
index.tsx
...tion/purchaseOrder/components/circulationRecord/index.tsx
+142
-143
index.less
...nsaction/purchaseOrder/components/statusColors/index.less
+0
-0
index.tsx
...ansaction/purchaseOrder/components/statusColors/index.tsx
+98
-0
index.tsx
src/pages/transaction/purchaseOrder/constant/index.tsx
+1
-1
index.tsx
...er/orderCollectB2b/components/inquiryModalTable/index.tsx
+2
-0
index.tsx
...nsaction/purchaseOrder/orderCollectB2b/constant/index.tsx
+5
-1
index.ts
...ransaction/purchaseOrder/orderCollectB2b/effects/index.ts
+31
-112
index.tsx
...pages/transaction/purchaseOrder/orderCollectB2b/index.tsx
+18
-40
usePaymentInfo.tsx
...on/purchaseOrder/orderCollectB2b/model/usePaymentInfo.tsx
+4
-3
index.ts
...ransaction/purchaseOrder/orderCollectSrm/effects/index.ts
+0
-57
index.tsx
...pages/transaction/purchaseOrder/orderCollectSrm/index.tsx
+2
-29
useMaterialTable.tsx
.../purchaseOrder/orderCollectSrm/model/useMaterialTable.tsx
+2
-1
useSelfTable.tsx
...action/purchaseOrder/readyPayOrder/model/useSelfTable.tsx
+1
-1
index.tsx
src/pages/transaction/saleOrder/constant/index.tsx
+97
-1
index.tsx
...transaction/saleOrder/firstApprovedOrder/detail/index.tsx
+1
-1
index.tsx
src/pages/transaction/saleOrder/index.tsx
+66
-8
api.ts
src/services/api.ts
+0
-2
ytt.config.ts
ytt.config.ts
+0
-1
No files found.
src/pages/afterService/components/ReturnDetailInfo/index.tsx
View file @
de7b2757
...
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-11-05 18:02:18
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-0
8-30 19:38:32
* @LastEditTime: 2021-0
9-07 15:24:26
* @Description: 退款明细
*/
import
React
,
{
useState
}
from
'react'
;
...
...
@@ -360,7 +360,7 @@ const ReturnDetailInfo: React.FC<ReturnDetailInfoProps> = ({
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"支付环节"
>
{
item
.
payNode
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"已支付金额(元)"
>
{
item
.
payAmount
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"支付比例"
>
{
item
.
payRatio
}
%
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"支付比例"
>
{
item
.
payRatio
*
100
}
%
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"退款金额(元)"
>
{
item
.
refundAmount
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"支付方式"
>
{
item
.
payWayName
}
</
Descriptions
.
Item
>
<
Descriptions
.
Item
label=
"退款时间"
>
{
item
.
refundTime
}
</
Descriptions
.
Item
>
...
...
src/pages/afterService/components/ReturnInfoDrawer/index.tsx
View file @
de7b2757
...
...
@@ -2,7 +2,7 @@
* @Author: XieZhiXiong
* @Date: 2020-11-05 17:36:45
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-09-07 1
0:02:55
* @LastEditTime: 2021-09-07 1
5:22:20
* @Description: 查看退货数量与退款金额 抽屉
*/
import
React
,
{
useEffect
,
useState
}
from
'react'
;
...
...
@@ -194,7 +194,10 @@ const ReturnInfoDrawer: React.FC<ReturnInfoDrawerProps> = ({
if
(
!
applyInfo
||
!
applyInfo
.
orderId
)
{
return
;
}
let
payList
=
applyInfo
.
payList
||
[];
let
payList
=
applyInfo
.
payList
?
applyInfo
.
payList
.
map
((
item
)
=>
({
...
item
,
payRatio
:
item
.
payRatio
*
100
,
}))
:
[];
setPayInfoLoading
(
true
);
try
{
// 编辑状态才请求支付信息,否则默认取申请信息里边的支付信息
...
...
src/pages/afterService/returnApplication/returnPrSubmit/components/ReturnForm/index.tsx
View file @
de7b2757
...
...
@@ -8,6 +8,7 @@ import { findLastIndex } from 'lodash';
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
;
import
{
SaveOutlined
,
PlusOutlined
}
from
'@ant-design/icons'
;
import
{
createFormActions
,
FormEffectHooks
,
FormPath
}
from
'@formily/antd'
;
import
BigNumber
from
'bignumber.js'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
{
normalizeFiledata
,
FileData
}
from
'@/utils'
;
import
{
...
...
@@ -691,7 +692,7 @@ const ReturnForm: React.FC<BillsFormProps> = ({
id
:
item
.
id
,
returnReason
:
''
,
taskTypeKey
:
item
.
processKey
,
remaining
:
item
.
quantity
-
(
item
.
returnCount
||
0
),
// 可退货数量
remaining
:
new
BigNumber
(
item
.
quantity
).
minus
(
item
.
returnCount
||
0
),
// 可退货数量
orderId
:
item
.
orderId
,
},
isHasTax
:
item
.
tax
,
...
...
src/pages/channel/templateDetail/index.tsx
View file @
de7b2757
...
...
@@ -125,6 +125,14 @@ const TemplateDetail: React.FC<TemplateDetailPropsType> = (props) => {
<
LayoutOutlined
/>
<
label
>
渠道商城装修
</
label
>
</
div
>
{
detailInfo
?.
environment
===
4
&&
(
<
div
className=
{
cx
(
styles
.
btn
,
styles
.
fit
)
}
>
<
LayoutOutlined
/>
<
label
>
渠道品类导航装修
</
label
>
</
div
>
)
}
<
div
className=
{
cx
(
styles
.
btn
,
detailInfo
?.
use
===
1
?
styles
.
use
:
''
)
}
onClick=
{
()
=>
detailInfo
?.
use
!==
1
?
setUseModalVisible
(
true
)
:
{}
}
>
<
PushpinOutlined
/>
<
label
>
{
detailInfo
?.
use
===
1
?
'使用中'
:
'使用'
}
</
label
>
...
...
src/pages/commodity/products/addProducts.tsx
View file @
de7b2757
...
...
@@ -303,7 +303,7 @@ const AddProducts: React.FC<{}> = (props) => {
throw
new
Error
(
'请完善商品其他信息!'
)
}
}
catch
(
e
)
{
return
e
return
{
message
:
'请完善商品其他信息!'
}
}
// 校验价格
try
{
...
...
src/pages/editor/components/drawer/activityProductDrawer/activityProductDrawer.tsx
View file @
de7b2757
...
...
@@ -7,7 +7,7 @@ import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilte
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
unstable_batchedUpdates
as
batchedUpdates
}
from
'react-dom'
;
import
{
ColumnsType
}
from
'antd/es/table'
;
import
{
GetMarketing
PlatformActivityListAdornResponseDetail
}
from
'@/services/MaketingV2
Api'
;
import
{
GetMarketing
AdornMerchantActivityListAdornResponseDetail
}
from
'@/services/Marketing
Api'
;
import
StatusTag
from
'@/components/StatusTag'
;
import
schema
from
'./schema'
;
import
styles
from
'./activityProductDrawer.less'
;
...
...
@@ -31,7 +31,7 @@ type SubmitType = {
activityName
:
string
,
}
const
columns
:
ColumnsType
<
GetMarketing
PlatformActivityListAdornResponseDetail
[
"product
List"
][
0
]
>
=
[
const
columns
:
ColumnsType
<
GetMarketing
AdornMerchantActivityListAdornResponseDetail
[
"goods
List"
][
0
]
>
=
[
{
title
:
'商品信息'
,
dataIndex
:
'productInfo'
,
...
...
@@ -91,11 +91,11 @@ const ActivityProductDrawer: React.FC<Iprops> = (props: Iprops) => {
const
{
visible
,
onCancel
,
fetchData
=
null
,
onOk
,
products
=
[],
activityImage
,
mode
=
'checked'
}
=
props
;
const
[
current
,
setPage
]
=
useState
<
number
>
(
1
);
const
[
currentPageSize
,
setPageSize
]
=
useState
<
number
>
(
10
);
const
[
dataSource
,
setDataSource
]
=
useState
<
GetMarketing
Platform
ActivityListAdornResponseDetail
[]
>
([]);
const
[
dataSource
,
setDataSource
]
=
useState
<
GetMarketing
AdornMerchant
ActivityListAdornResponseDetail
[]
>
([]);
const
[
totalCount
,
setTotalCount
]
=
useState
<
number
>
(
0
);
const
[
selectedKey
,
setSelectKey
]
=
useState
<
number
|
null
>
(
null
);
const
[
selectedActivityProductList
,
setSelectedActivityProductList
]
=
useState
<
GetMarketing
PlatformActivityListAdornResponseDetail
[
"product
List"
]
>
();
const
[
checkedProduct
,
setCheckedProduct
]
=
useState
<
GetMarketing
PlatformActivityListAdornResponseDetail
[
"product
List"
]
>
([]);
const
[
selectedActivityProductList
,
setSelectedActivityProductList
]
=
useState
<
GetMarketing
AdornMerchantActivityListAdornResponseDetail
[
"goods
List"
]
>
();
const
[
checkedProduct
,
setCheckedProduct
]
=
useState
<
GetMarketing
AdornMerchantActivityListAdornResponseDetail
[
"goods
List"
]
>
([]);
const
[
loading
,
setLoading
]
=
useState
<
boolean
>
(
false
);
const
selectedRowKeys
=
useMemo
(()
=>
checkedProduct
.
map
((
_item
)
=>
`
${
_item
.
activityId
!
}
-
${
_item
.
id
!
}
`
),
[
checkedProduct
]);
...
...
@@ -148,14 +148,14 @@ const ActivityProductDrawer: React.FC<Iprops> = (props: Iprops) => {
const
onSelect
=
(
id
:
number
)
=>
{
setSelectKey
(
id
);
const
target
=
dataSource
.
filter
((
_item
)
=>
_item
.
id
===
id
)[
0
];
setSelectedActivityProductList
(
target
.
product
List
);
setSelectedActivityProductList
(
target
.
goods
List
);
};
const
handleOk
=
()
=>
{
onOk
?.(
checkedProduct
);
};
const
handleRowSelect
=
(
record
:
GetMarketing
PlatformActivityListAdornResponseDetail
[
"productList"
][
0
],
selected
:
boolean
,
selectedRows
:
GetMarketingPlatformActivityListAdornResponseDetail
[
"product
List"
])
=>
{
const
handleRowSelect
=
(
record
:
GetMarketing
AdornMerchantActivityListAdornResponseDetail
[
"goodsList"
][
0
],
selected
:
boolean
,
selectedRows
:
GetMarketingAdornMerchantActivityListAdornResponseDetail
[
"goods
List"
])
=>
{
if
(
mode
===
'checked'
)
{
if
(
selected
)
{
setCheckedProduct
((
prev
)
=>
prev
.
concat
(
record
));
...
...
src/pages/editor/components/drawer/commodityDrawer/index.tsx
View file @
de7b2757
...
...
@@ -113,10 +113,6 @@ const CommodityDrawer: React.FC<CommodityDrawerProps> = (props: CommodityDrawerP
);
}
},
{
title
:
'商家名称'
,
dataIndex
:
'memberName'
,
},
]
const
_onConfirm
=
()
=>
{
...
...
@@ -140,6 +136,7 @@ const CommodityDrawer: React.FC<CommodityDrawerProps> = (props: CommodityDrawerP
if
(
selectId
)
{
_params
.
idNotInList
=
Array
.
isArray
(
selectId
)
?
selectId
:
[
selectId
]
}
console
.
log
(
_params
,
'_params'
)
const
{
data
}
=
await
PublicApi
.
getMarketingAdornGoodsListAdorn
(
_params
);
setExpandedRowKeys
(
data
?.
data
?.
map
((
item
)
=>
item
.
id
)
||
[]);
return
data
;
...
...
src/pages/editor/components/toolBar/returnSaveParams.ts
View file @
de7b2757
This diff is collapsed.
Click to expand it.
src/pages/editor/mobileSettingPanel/propsSettings/components/marketingCardGood/index.tsx
View file @
de7b2757
import
React
,
{
useState
,
useEffect
,
useRef
}
from
'react'
;
import
React
,
{
useState
,
useEffect
}
from
'react'
;
import
{
history
}
from
'umi'
;
import
{
Input
,
Radio
,
Space
,
Button
,
Tag
,
Tooltip
}
from
'antd'
;
import
{
Button
,
Tooltip
}
from
'antd'
;
import
cloneDeep
from
'lodash/cloneDeep'
;
import
{
PlusOutlined
}
from
'@ant-design/icons'
;
import
{
changeProps
,
updatePageConfig
,
PageConfigType
}
from
'@lingxi-disign/core'
;
import
StatusTag
from
'@/components/StatusTag'
import
{
PublicApi
}
from
'@/services/api'
;
import
{
GetMarketing
PlatformActivityListAdornRequest
}
from
'@/services/MaketingV2
Api'
;
import
{
GetMarketing
AdornActivityGoodsAdornRequest
}
from
'@/services/Marketing
Api'
;
import
ActivityProductDrawer
from
'@/pages/editor/components/drawer/activityProductDrawer/activityProductDrawer'
;
import
ActivityImage
from
'@/assets/couponIcons/ActivityImage.svg'
;
...
...
@@ -36,7 +35,7 @@ const MarketingCardGood: React.FC<MarketingCardGoodProps> = (props: MarketingCar
useEffect
(()
=>
{
if
(
id
&&
id
!=
record
[
0
]?.
id
)
{
PublicApi
.
getMarketingAdornGoods
Adorn
({
ids
:
id
}).
then
((
res
)
=>
{
PublicApi
.
postMarketingAdornActivityGoodsBatch
Adorn
({
ids
:
id
}).
then
((
res
)
=>
{
if
(
res
.
code
===
1000
)
{
setRecord
(
res
.
data
);
}
...
...
@@ -46,13 +45,13 @@ const MarketingCardGood: React.FC<MarketingCardGoodProps> = (props: MarketingCar
}
},
[
id
])
const
fetchData
=
async
(
params
:
GetMarketing
PlatformActivityList
AdornRequest
)
=>
{
const
fetchData
=
async
(
params
:
GetMarketing
AdornActivityGoods
AdornRequest
)
=>
{
const
common
=
{
...
params
,
shopId
};
const
isWithActivityType
=
actType
?
{
...
common
,
activityType
:
actType
}
:
common
;
return
await
PublicApi
.
getMarketingAdornListAdorn
(
isWithActivityType
as
any
);
return
await
PublicApi
.
getMarketingAdorn
MerchantActivity
ListAdorn
(
isWithActivityType
as
any
);
};
const
onOk
=
(
data
:
any
)
=>
{
...
...
@@ -61,42 +60,43 @@ const MarketingCardGood: React.FC<MarketingCardGoodProps> = (props: MarketingCar
let
_exData
;
switch
(
actType
)
{
case
1
:
_exData
=
{
...
_data
,
img
:
_data
.
productImgUrl
,
originalPrice
:
priceFormat
(
_data
.
price
),
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
_exData
=
{
...
_data
,
name
:
_data
.
productName
,
img
:
_data
.
productImgUrl
,
originalPrice
:
priceFormat
(
_data
.
price
),
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
break
;
case
2
:
_exData
=
{
...
_data
,
img
:
_data
.
productImgUrl
,
info
:
'直降60元'
,
originalPrice
:
priceFormat
(
_data
.
price
),
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
_exData
=
{
...
_data
,
name
:
_data
.
productName
,
img
:
_data
.
productImgUrl
,
info
:
'直降60元'
,
originalPrice
:
priceFormat
(
_data
.
price
),
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
break
;
case
3
:
_exData
=
{
...
_data
,
img
:
_data
.
productImgUrl
,
info
:
'5折起'
,
originalPrice
:
priceFormat
(
_data
.
price
),
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
_exData
=
{
...
_data
,
name
:
_data
.
productName
,
img
:
_data
.
productImgUrl
,
info
:
'5折起'
,
originalPrice
:
priceFormat
(
_data
.
price
),
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
break
;
case
4
:
if
(
exType
===
1
)
{
_exData
=
{
...
_data
,
img
:
_data
.
productImgUrl
,
info
:
'满3件减50'
,
originalPrice
:
priceFormat
(
_data
.
price
),
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
_exData
=
{
...
_data
,
name
:
_data
.
productName
,
img
:
_data
.
productImgUrl
,
info
:
'满3件减50'
,
originalPrice
:
priceFormat
(
_data
.
price
),
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
}
else
{
_exData
=
{
...
_data
,
img
:
_data
.
productImgUrl
,
info
:
'满3件8折'
,
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
_exData
=
{
...
_data
,
name
:
_data
.
productName
,
img
:
_data
.
productImgUrl
,
info
:
'满3件8折'
,
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
}
break
;
case
5
:
if
(
exType
===
1
)
{
_exData
=
{
...
_data
,
img
:
_data
.
productImgUrl
,
info
:
'满100减10'
,
originalPrice
:
priceFormat
(
_data
.
price
),
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
_exData
=
{
...
_data
,
name
:
_data
.
productName
,
img
:
_data
.
productImgUrl
,
info
:
'满100减10'
,
originalPrice
:
priceFormat
(
_data
.
price
),
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
}
else
{
_exData
=
{
...
_data
,
img
:
_data
.
productImgUrl
,
info
:
'满100打5折'
,
originalPrice
:
priceFormat
(
_data
.
price
),
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
_exData
=
{
...
_data
,
name
:
_data
.
productName
,
img
:
_data
.
productImgUrl
,
info
:
'满100打5折'
,
originalPrice
:
priceFormat
(
_data
.
price
),
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
}
break
;
case
6
:
_exData
=
{
...
_data
,
img
:
_data
.
productImgUrl
,
info
:
`原价
${
_data
.
price
}
元`
,
isnull
:
false
}
_exData
=
{
...
_data
,
name
:
_data
.
productName
,
img
:
_data
.
productImgUrl
,
info
:
`原价
${
_data
.
price
}
元`
,
isnull
:
false
}
break
;
case
7
:
_exData
=
{
...
_data
,
img
:
_data
.
productImgUrl
,
info
:
`第2件5折`
,
originalPrice
:
priceFormat
(
_data
.
price
),
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
_exData
=
{
...
_data
,
name
:
_data
.
productName
,
img
:
_data
.
productImgUrl
,
info
:
`第2件5折`
,
originalPrice
:
priceFormat
(
_data
.
price
),
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
break
;
case
8
:
_exData
=
{
...
_data
,
img
:
_data
.
productImgUrl
,
info
:
`99元4件`
,
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
_exData
=
{
...
_data
,
name
:
_data
.
productName
,
img
:
_data
.
productImgUrl
,
info
:
`99元4件`
,
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
break
;
case
9
:
_exData
=
{
...
_data
,
detail
:
{
title
:
_data
.
productName
,
name
:
_data
.
productName
,
img
:
_data
.
productImgUrl
,
info
:
'打骨折'
,
originalPrice
:
priceFormat
(
_data
.
price
),
...
...
@@ -109,21 +109,22 @@ const MarketingCardGood: React.FC<MarketingCardGoodProps> = (props: MarketingCar
}
break
;
case
11
:
_exData
=
{
...
_data
,
img
:
_data
.
productImgUrl
,
info
:
`已送出 186 件`
,
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
_exData
=
{
...
_data
,
name
:
_data
.
productName
,
img
:
_data
.
productImgUrl
,
info
:
`已送出 186 件`
,
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
break
;
case
12
:
_exData
=
{
...
_data
,
img
:
_data
.
productImgUrl
,
direction
:
'column'
,
originalPrice
:
priceFormat
(
_data
.
price
),
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
_exData
=
{
...
_data
,
name
:
_data
.
productName
,
img
:
_data
.
productImgUrl
,
direction
:
'column'
,
originalPrice
:
priceFormat
(
_data
.
price
),
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
break
;
case
13
:
_exData
=
{
...
_data
,
img
:
_data
.
productImgUrl
,
info
:
`加20元换购`
,
isnull
:
false
}
_exData
=
{
...
_data
,
name
:
_data
.
productName
,
img
:
_data
.
productImgUrl
,
info
:
`加20元换购`
,
isnull
:
false
}
break
;
case
14
:
_exData
=
{
...
_data
,
img
:
_data
.
productImgUrl
,
info
:
`10元抵100`
,
originalPrice
:
priceFormat
(
_data
.
price
),
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
_exData
=
{
...
_data
,
name
:
_data
.
productName
,
img
:
_data
.
productImgUrl
,
info
:
`10元抵100`
,
originalPrice
:
priceFormat
(
_data
.
price
),
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
break
;
case
15
:
_exData
=
{
...
_data
,
detail
:
{
name
:
_data
.
productName
,
img
:
_data
.
productImgUrl
,
title
:
_data
.
productName
,
discountPrice
:
priceFormat
(
_data
.
price
),
...
...
@@ -134,11 +135,12 @@ const MarketingCardGood: React.FC<MarketingCardGoodProps> = (props: MarketingCar
}
break
;
case
16
:
_exData
=
{
...
_data
,
img
:
_data
.
productImgUrl
,
info
:
`已送出 186 件`
,
originalPrice
:
priceFormat
(
_data
.
price
),
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
_exData
=
{
...
_data
,
name
:
_data
.
productName
,
img
:
_data
.
productImgUrl
,
info
:
`已送出 186 件`
,
originalPrice
:
priceFormat
(
_data
.
price
),
discountPrice
:
priceFormat
(
_data
.
activityPrice
),
isnull
:
false
}
break
;
default
:
break
;
}
_exData
.
mode
=
'horizontal'
if
(
actType
!==
15
)
{
changeProps
({
title
:
_data
.
productName
,
...
...
@@ -177,6 +179,7 @@ const MarketingCardGood: React.FC<MarketingCardGoodProps> = (props: MarketingCar
componentName
:
'MarketingCard.GoodsItem'
,
props
:
{
...
child
,
name
:
child
.
productName
,
img
:
child
.
productImgUrl
,
title
:
child
.
productName
,
discountPrice
:
priceFormat
(
child
.
price
),
...
...
src/pages/mobileTemplate/channelTemplateEdit/config.ts
View file @
de7b2757
...
...
@@ -6,10 +6,8 @@
* @Description: In User Settings Edit
* @FilePath: /lingxi-business-paltform/src/pages/mobileTemplate/channelTemplateEdit/config.ts
*/
import
{
P
ROPS_SETTING_TYPES
,
P
ageConfigType
}
from
'@lingxi-disign/core'
import
{
PageConfigType
}
from
'@lingxi-disign/core'
import
categoryNavTemplateDefault
from
'../shopTemplateEdit/img/category_template_default.png'
import
styleThemeImgDefault
from
'./imgs/style_theme_default.png'
import
styleThemeImgScience
from
'./imgs/style_theme_science.png'
import
RED_PACKAGE
from
'../shopTemplateEdit/img/red_package.png'
;
export
const
defaultHeaderNavData
=
[
...
...
@@ -194,190 +192,3 @@ export const defaultConfig: PageConfigType = {
},
},
}
export
const
mallLayoutConfig
=
{
key
:
"0"
,
"0"
:
{
"componentName"
:
"MallLayout"
,
"props"
:
{
"style"
:
{
"width"
:
"100%"
,
"minHeight"
:
"100%"
,
"background"
:
"#F7F8FA"
,
"overflowX"
:
"hidden"
,
"paddingBottom"
:
"50px"
,
}
},
"childNodes"
:
[
"1"
,
"2"
,
"4"
,
"5"
,
"6"
,
"7"
]
},
}
export
const
mobileChannelHeaderNav
=
{
key
:
"1"
,
"1"
:
{
"componentName"
:
"MobileChannelHeaderNav"
,
"componentType"
:
PROPS_SETTING_TYPES
.
mobileHeaderNav
,
"title"
:
"顶部导航栏"
,
"canEdit"
:
true
,
"canHide"
:
false
,
"props"
:
{
styleTheme
:
1
,
dataList
:
[
{
name
:
"进货单"
,
content
:
""
,
status
:
true
,
},
{
name
:
"我的"
,
content
:
""
,
status
:
true
,
},
{
name
:
"搜索框"
,
content
:
"请输入商品名称或者品类"
,
status
:
true
,
}
],
stylesThemeList
:
[
{
key
:
0
,
img
:
styleThemeImgDefault
,
},
{
key
:
1
,
img
:
styleThemeImgScience
,
}
]
},
}
}
export
const
divWrap
=
{
key
:
"2"
,
"2"
:
{
"componentName"
:
"div"
,
"props"
:
{
"style"
:
{
position
:
"relative"
,
marginTop
:
-
48
,
zIndex
:
6
,
}
},
"childNodes"
:
[
"3"
]
}
}
export
const
mobileBanner
=
{
key
:
"3"
,
"3"
:
{
"componentName"
:
"MobileChannelBanner"
,
"componentType"
:
"mobileChannelBanner"
,
"title"
:
"轮播广告"
,
"canEdit"
:
true
,
"canHide"
:
false
,
"props"
:
{
dataList
:
[]
}
}
}
export
const
mobileChannelCategory
=
{
key
:
"4"
,
"4"
:
{
"componentName"
:
"MobileChannelCategory"
,
"componentType"
:
PROPS_SETTING_TYPES
.
moibileChannelCategory
,
"title"
:
"商品品类"
,
"canEdit"
:
false
,
"canHide"
:
false
,
"props"
:
{
dataList
:
[]
}
}
}
export
const
mobileChannelGoodsCard
=
{
key
:
"5"
,
"5"
:
{
"componentName"
:
"MobileChannelGoodsCard"
,
"componentType"
:
PROPS_SETTING_TYPES
.
mobileChannelGoodsCard
,
"title"
:
"推荐商品"
,
"canEdit"
:
true
,
"canHide"
:
false
,
"props"
:
{
dataList
:
[
// {
// style: 0,
// title: "电气电工",
// viceTitle: "ELECTRICAL",
// },
// {
// style: 1,
// title: "机械设备",
// viceTitle: "EQUIPMENT",
// }
]
}
}
}
export
const
mobileChannelInformation
=
{
key
:
"6"
,
"6"
:
{
"componentName"
:
"MobileChannelInformation"
,
"componentType"
:
PROPS_SETTING_TYPES
.
moibileChannelInformation
,
"title"
:
"行业资讯"
,
"canEdit"
:
true
,
"canHide"
:
false
,
"props"
:
{
title
:
"行业资讯"
,
dataList
:
[]
}
}
}
export
const
mobileBottomNavigation
=
{
key
:
"7"
,
"7"
:
{
"componentName"
:
"MobileBottomNavigation"
,
"componentType"
:
PROPS_SETTING_TYPES
.
mobileBottomNavigation
,
"title"
:
"底部导航"
,
"canEdit"
:
true
,
"canHide"
:
false
,
"props"
:
{
/** 类型:1-首页 2-积分 3-工作台 4-资讯 5-进货单 6-我的 */
dataList
:
[
{
name
:
"首页"
,
icon
:
"https://shushangyun-lingxi.oss-cn-shenzhen.aliyuncs.com/f8d1c35d735e47c187d8c0b0e12830971612351028389.png"
,
type
:
1
,
status
:
false
,
},
{
name
:
"积分"
,
icon
:
"https://shushangyun-lingxi.oss-cn-shenzhen.aliyuncs.com/d4b7e96e136e4a2eade7e0d3e441eb611612351032370.png"
,
type
:
2
,
status
:
false
,
},
{
name
:
"工作台"
,
icon
:
"https://shushangyun-lingxi.oss-cn-shenzhen.aliyuncs.com/f8492d51f9234c43bf631e9f2482a6751612351036609.png"
,
type
:
3
,
status
:
false
,
},
{
name
:
"进货单"
,
icon
:
"https://shushangyun-lingxi.oss-cn-shenzhen.aliyuncs.com/50433de84ee046b19882e21c920b3f6b1612351040608.png"
,
type
:
5
,
status
:
false
,
},
{
name
:
"我的"
,
icon
:
"https://shushangyun-lingxi.oss-cn-shenzhen.aliyuncs.com/aa76edefd91f4e82b4f8fa56e169cd3f1612351044724.png"
,
type
:
6
,
status
:
false
,
}
]
}
}
}
src/pages/mobileTemplate/channelTemplateEdit/index.tsx
View file @
de7b2757
This diff is collapsed.
Click to expand it.
src/pages/mobileTemplate/shopTemplateEdit/index.tsx
View file @
de7b2757
This diff is collapsed.
Click to expand it.
src/pages/procurement/callForBids/addRemarkBidCommittee/index.tsx
View file @
de7b2757
...
...
@@ -19,7 +19,7 @@ import { buildColumns, expertColumns, initConditionData, selectExpertColumns, se
import
{
selectBidSchema
}
from
'./schema/modal'
import
{
formatTimeString
,
omit
}
from
'@/utils'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
{
BidInsideWorkState
,
BidOuterWorkState
}
from
'@/constants/procurement'
import
{
ExpertTypeMap
,
SpecialityTypeMap
}
from
'@/constants/procurement'
export
interface
AddRemarkBidCommitteeProps
{}
...
...
@@ -41,18 +41,16 @@ const AddRemarkBidCommittee:React.FC<AddRemarkBidCommitteeProps> = (props) => {
const
[
conditionVisible
,
setConditionVisible
]
=
useState
(
false
)
const
[
expertVisible
,
setExpertVisible
]
=
useState
(
false
)
const
[
previewVisible
,
setPreviewVisible
]
=
useState
(
false
)
// 查看评标专家弹框
const
[
preViewRow
,
setPreviewRow
]
=
useState
<
any
>
({})
const
[
selectRow
,
setSelectRow
]
=
useState
<
any
[]
>
([])
// 选择评标项目抽屉的行数据
const
[
selectedRowKeys
,
setSelectedRowKeys
]
=
useState
<
Array
<
string
>>
([])
const
[
selectExpertRow
,
setSelectExpertRow
]
=
useState
<
any
[]
>
([])
// 选择评标专家抽屉的行数据
const
[
selectedExpertRowKeys
,
setSelectedExpertRowKeys
]
=
useState
<
Array
<
string
>>
([])
const
productRef
=
useRef
<
any
>
({})
const
{
id
,
code
,
preview
,
pageStatus
}
=
usePageStatus
()
...
...
@@ -118,17 +116,24 @@ const AddRemarkBidCommittee:React.FC<AddRemarkBidCommitteeProps> = (props) => {
dataIndex
:
'ctl'
,
title
:
'操作'
,
align
:
'center'
,
render
:
(
t
,
r
)
=>
pageStatus
!==
PageStatus
.
PREVIEW
&&
<>
<
Button
type=
"link"
>
render
:
(
t
,
r
)
=>
pageStatus
!==
PageStatus
.
PREVIEW
?
<>
<
Button
type=
"link"
onClick=
{
()
=>
handlePreview
(
r
)
}
>
查看
</
Button
>
<
Button
type=
"link"
onClick=
{
()
=>
removeExpert
(
r
)
}
>
删除
</
Button
>
</>
</>
:
<
Button
type=
"link"
onClick=
{
()
=>
handlePreview
(
r
)
}
>
查看
</
Button
>
}
])
const
handlePreview
=
(
record
)
=>
{
setPreviewRow
({...
record
})
setPreviewVisible
(
true
)
}
const
removeExpert
=
(
record
)
=>
{
const
hasExpertList
=
addSchemaAction
.
getFieldValue
(
'expertExtractRecordList'
)
const
temp
=
hasExpertList
.
filter
(
item
=>
item
.
expert
.
id
!==
record
.
expert
.
id
)
...
...
@@ -248,7 +253,6 @@ const AddRemarkBidCommittee:React.FC<AddRemarkBidCommitteeProps> = (props) => {
const
onConfirm
=
()
=>
{
setProjectVisible
(
false
)
console
.
log
(
'确定'
,
selectRow
)
addSchemaAction
.
setFieldValue
(
'inviteTender'
,
{
id
:
selectRow
[
0
][
'id'
]
})
addSchemaAction
.
setFieldValue
(
'status'
,
selectRow
[
0
][
'inviteTenderInStatusValue'
])
addSchemaAction
.
setFieldValue
(
'code'
,
selectRow
[
0
][
'code'
])
...
...
@@ -260,7 +264,6 @@ const AddRemarkBidCommittee:React.FC<AddRemarkBidCommitteeProps> = (props) => {
const
onExpertConfirm
=
()
=>
{
setExpertVisible
(
false
)
console
.
log
(
'确定'
,
selectExpertRow
)
addSchemaAction
.
setFieldValue
(
'expertExtractRecordList'
,
transformSelectExpertField
(
selectExpertRow
))
}
...
...
@@ -292,7 +295,6 @@ const AddRemarkBidCommittee:React.FC<AddRemarkBidCommitteeProps> = (props) => {
}
const
cancelCondition
=
()
=>
{
console
.
log
(
'取消组件条件'
)
setConditionVisible
(
false
)
}
...
...
@@ -440,43 +442,39 @@ const AddRemarkBidCommittee:React.FC<AddRemarkBidCommitteeProps> = (props) => {
>
<
Row
className=
'card-list'
>
<
Col
span=
{
6
}
className=
'card-list_title'
>
评标专家编号:
</
Col
>
<
Col
>
基本信息
</
Col
>
<
Col
>
{
preViewRow
?.
id
}
</
Col
>
</
Row
>
<
Row
className=
'card-list'
>
<
Col
span=
{
6
}
className=
'card-list_title'
>
专家专业类别:
</
Col
>
<
Col
>
基本信息
</
Col
>
<
Col
>
{
preViewRow
?.
expert
?.
speciality
?
SpecialityTypeMap
[
preViewRow
.
expert
.
speciality
]
:
null
}
</
Col
>
</
Row
>
<
Row
className=
'card-list'
>
<
Col
span=
{
6
}
className=
'card-list_title'
>
专家资格证书:
</
Col
>
<
Col
>
基本信息
</
Col
>
<
Col
>
{
preViewRow
?.
expert
?.
qualification
}
</
Col
>
</
Row
>
<
Row
className=
'card-list'
>
<
Col
span=
{
6
}
className=
'card-list_title'
>
专家专家职称:
</
Col
>
<
Col
>
{
preViewRow
?.
expert
?.
title
}
</
Col
>
</
Row
>
<
Row
className=
'card-list'
>
<
Col
span=
{
6
}
className=
'card-list_title'
>
从事年限:
</
Col
>
<
Col
>
基本信息
</
Col
>
<
Col
>
{
preViewRow
?.
expert
?.
years
}
</
Col
>
</
Row
>
<
Row
className=
'card-list'
>
<
Col
span=
{
6
}
className=
'card-list_title'
>
所属行业:
</
Col
>
<
Col
>
基本信息
</
Col
>
<
Col
>
{
preViewRow
?.
expert
?.
trade
}
</
Col
>
</
Row
>
<
Row
className=
'card-list'
>
<
Col
span=
{
6
}
className=
'card-list_title'
>
所在地区:
</
Col
>
<
Col
>
基本信息
</
Col
>
<
Col
>
{
`${preViewRow?.expert?.provinceName}/${preViewRow?.expert?.cityName}/${preViewRow?.expert?.areaName}`
}
</
Col
>
</
Row
>
<
Row
className=
'card-list'
>
<
Col
span=
{
6
}
className=
'card-list_title'
>
工作单位:
</
Col
>
<
Col
>
基本信息
</
Col
>
<
Col
>
{
preViewRow
?.
expert
?.
unit
}
</
Col
>
</
Row
>
<
Row
className=
'card-list'
>
<
Col
span=
{
6
}
className=
'card-list_title'
>
专家类型:
</
Col
>
<
Col
>
基本信息
</
Col
>
</
Row
>
<
Row
className=
'card-list'
>
<
Col
span=
{
6
}
className=
'card-list_title'
>
状态:
</
Col
>
<
Col
>
基本信息
</
Col
>
</
Row
>
<
Row
className=
'card-list'
>
<
Col
span=
{
6
}
className=
'card-list_title'
>
拒绝原因:
</
Col
>
<
Col
>
基本信息
</
Col
>
<
Col
>
{
preViewRow
?.
expert
?.
type
?
ExpertTypeMap
[
preViewRow
.
expert
.
type
]
:
null
}
</
Col
>
</
Row
>
</
Drawer
>
...
...
src/pages/transaction/purchaseOrder/components/circulationRecord/index.tsx
View file @
de7b2757
import
React
,
{
useRef
,
useEffect
,
useState
,
useContext
}
from
'react'
import
{
Button
,
Table
}
from
'antd'
import
{
StandardTable
}
from
'god'
import
{
formatTimeString
}
from
'@/utils'
import
'./index.less'
import
cx
from
'classnames'
import
{
ReadyAddOrderDetailContext
}
from
'../../context'
import
StatusColors
from
'../StatusColors'
export
interface
CirculationRecordProps
{}
/**
* 流转记录控制
*/
const
outOrderCols
:
any
[]
=
[
{
title
:
'流转顺序号'
,
dataIndex
:
'no'
,
align
:
'center'
,
key
:
'no'
,
render
:
(
_
,
__
,
index
:
number
)
=>
index
+
1
},
{
title
:
'操作角色'
,
dataIndex
:
'roleName'
,
align
:
'center'
,
key
:
'roleName'
,
},
{
title
:
'状态'
,
dataIndex
:
'state'
,
align
:
'center'
,
key
:
'state'
,
render
:
text
=>
<
StatusColors
status=
{
text
}
type=
'out'
/>
// @todo 需传递工作流状态重新render
},
{
title
:
'操作'
,
dataIndex
:
'operation'
,
align
:
'center'
,
key
:
'operation'
,
},
{
title
:
'操作时间'
,
dataIndex
:
'operationTime'
,
align
:
'center'
,
key
:
'operationTime'
,
render
:
time
=>
formatTimeString
(
time
)
},
{
title
:
'审核意见'
,
dataIndex
:
'auditOpinion'
,
align
:
'center'
,
key
:
'auditOpinion'
,
},
]
const
sideOrderCols
:
any
[]
=
[
{
title
:
'流转记录'
,
dataIndex
:
'no'
,
align
:
'center'
,
key
:
'no'
,
render
:
(
_
,
__
,
index
:
number
)
=>
index
+
1
},
{
title
:
'操作人'
,
dataIndex
:
'roleName'
,
align
:
'center'
,
key
:
'roleName'
,
},
{
title
:
'部门'
,
dataIndex
:
'department'
,
align
:
'center'
,
key
:
'department'
,
},
{
title
:
'职位'
,
dataIndex
:
'position'
,
align
:
'center'
,
key
:
'position'
,
},
{
title
:
'状态'
,
dataIndex
:
'state'
,
align
:
'center'
,
key
:
'state'
,
render
:
text
=>
<
StatusColors
status=
{
text
}
type=
'inside'
/>
},
{
title
:
'操作'
,
dataIndex
:
'operation'
,
align
:
'center'
,
key
:
'operation'
,
},
{
title
:
'操作时间'
,
dataIndex
:
'operationTime'
,
align
:
'center'
,
key
:
'operationTime'
,
},
{
title
:
'审核意见'
,
dataIndex
:
'auditOpinion'
,
align
:
'center'
,
key
:
'auditOpinion'
,
},
]
const
CirculationRecord
:
React
.
FC
<
CirculationRecordProps
>
=
(
props
)
=>
{
const
colRef
=
useRef
<
any
>
({
columns
:
outOrderCols
})
const
{
detailData
}
=
useContext
(
ReadyAddOrderDetailContext
)
const
[
orderState
,
setOrderState
]
=
useState
<
number
>
(
0
)
const
[
dataSource
,
setDataSource
]
=
useState
<
any
>
([])
useEffect
(()
=>
{
if
(
detailData
)
{
colRef
.
current
=
{
columns
:
orderState
===
1
?
sideOrderCols
:
outOrderCols
}
setDataSource
(
orderState
===
1
?
detailData
.
interiorProcurementOrderLogResponses
:
detailData
.
externalProcurementOrderLogResponses
)
}
},
[
colRef
,
orderState
,
detailData
])
return
(
<
div
>
<
div
className=
'com-switch-btn-group'
style=
{
{
margin
:
'20px 0'
}
}
>
<
div
className=
{
cx
(
'switch-btn'
,
orderState
===
0
?
'active'
:
''
)
}
onClick=
{
()
=>
setOrderState
(
0
)
}
>
外部单据
</
div
>
<
div
className=
{
cx
(
'switch-btn'
,
orderState
===
1
?
'active'
:
''
)
}
onClick=
{
()
=>
setOrderState
(
1
)
}
>
内部单据
</
div
>
</
div
>
<
Table
columns=
{
colRef
.
current
.
columns
}
dataSource=
{
dataSource
}
rowKey=
"id"
/>
</
div
>
)
}
CirculationRecord
.
defaultProps
=
{}
export
default
CirculationRecord
\ No newline at end of file
import
React
,
{
useRef
,
useEffect
,
useState
,
useContext
}
from
'react'
import
{
Button
,
Table
}
from
'antd'
import
{
StandardTable
}
from
'god'
import
{
formatTimeString
}
from
'@/utils'
import
'./index.less'
import
cx
from
'classnames'
import
{
ReadyAddOrderDetailContext
}
from
'../../context'
import
StatusColors
from
'../statusColors'
export
interface
CirculationRecordProps
{}
/**
* 流转记录控制
*/
const
outOrderCols
:
any
[]
=
[
{
title
:
'流转顺序号'
,
dataIndex
:
'no'
,
align
:
'center'
,
key
:
'no'
,
render
:
(
_
,
__
,
index
:
number
)
=>
index
+
1
},
{
title
:
'操作角色'
,
dataIndex
:
'roleName'
,
align
:
'center'
,
key
:
'roleName'
,
},
{
title
:
'状态'
,
dataIndex
:
'state'
,
align
:
'center'
,
key
:
'state'
,
render
:
text
=>
<
StatusColors
status=
{
text
}
type=
'out'
/>
// @todo 需传递工作流状态重新render
},
{
title
:
'操作'
,
dataIndex
:
'operation'
,
align
:
'center'
,
key
:
'operation'
,
},
{
title
:
'操作时间'
,
dataIndex
:
'operationTime'
,
align
:
'center'
,
key
:
'operationTime'
,
render
:
time
=>
formatTimeString
(
time
)
},
{
title
:
'审核意见'
,
dataIndex
:
'auditOpinion'
,
align
:
'center'
,
key
:
'auditOpinion'
,
},
]
const
sideOrderCols
:
any
[]
=
[
{
title
:
'流转记录'
,
dataIndex
:
'no'
,
align
:
'center'
,
key
:
'no'
,
render
:
(
_
,
__
,
index
:
number
)
=>
index
+
1
},
{
title
:
'操作人'
,
dataIndex
:
'roleName'
,
align
:
'center'
,
key
:
'roleName'
,
},
{
title
:
'部门'
,
dataIndex
:
'department'
,
align
:
'center'
,
key
:
'department'
,
},
{
title
:
'职位'
,
dataIndex
:
'position'
,
align
:
'center'
,
key
:
'position'
,
},
{
title
:
'状态'
,
dataIndex
:
'state'
,
align
:
'center'
,
key
:
'state'
,
render
:
text
=>
<
StatusColors
status=
{
text
}
type=
'inside'
/>
},
{
title
:
'操作'
,
dataIndex
:
'operation'
,
align
:
'center'
,
key
:
'operation'
,
},
{
title
:
'操作时间'
,
dataIndex
:
'operationTime'
,
align
:
'center'
,
key
:
'operationTime'
,
},
{
title
:
'审核意见'
,
dataIndex
:
'auditOpinion'
,
align
:
'center'
,
key
:
'auditOpinion'
,
},
]
const
CirculationRecord
:
React
.
FC
<
CirculationRecordProps
>
=
(
props
)
=>
{
const
colRef
=
useRef
<
any
>
({
columns
:
outOrderCols
})
const
{
detailData
}
=
useContext
(
ReadyAddOrderDetailContext
)
const
[
orderState
,
setOrderState
]
=
useState
<
number
>
(
0
)
const
[
dataSource
,
setDataSource
]
=
useState
<
any
>
([])
useEffect
(()
=>
{
if
(
detailData
)
{
colRef
.
current
=
{
columns
:
orderState
===
1
?
sideOrderCols
:
outOrderCols
}
setDataSource
(
orderState
===
1
?
detailData
.
interiorProcurementOrderLogResponses
:
detailData
.
externalProcurementOrderLogResponses
)
}
},
[
colRef
,
orderState
,
detailData
])
return
(
<
div
>
<
div
className=
'com-switch-btn-group'
style=
{
{
margin
:
'20px 0'
}
}
>
<
div
className=
{
cx
(
'switch-btn'
,
orderState
===
0
?
'active'
:
''
)
}
onClick=
{
()
=>
setOrderState
(
0
)
}
>
外部单据
</
div
>
<
div
className=
{
cx
(
'switch-btn'
,
orderState
===
1
?
'active'
:
''
)
}
onClick=
{
()
=>
setOrderState
(
1
)
}
>
内部单据
</
div
>
</
div
>
<
Table
columns=
{
colRef
.
current
.
columns
}
dataSource=
{
dataSource
}
rowKey=
"id"
/>
</
div
>
)
}
CirculationRecord
.
defaultProps
=
{}
export
default
CirculationRecord
src/pages/transaction/purchaseOrder/components/statusColors/index.less
0 → 100644
View file @
de7b2757
src/pages/transaction/purchaseOrder/components/statusColors/index.tsx
0 → 100644
View file @
de7b2757
import
React
from
'react'
import
{
Tag
}
from
'antd'
export
interface
IStatusColor
{
[
key
:
string
]:
{
value
:
string
|
number
,
color
:
string
}
}
// 用于标签状态控制
export
interface
StatusColorsProps
{
status
:
number
,
text
?:
string
,
type
:
'out'
|
'inside'
|
'saleInside'
}
export
enum
ORDER_EXAMINE_ENUM
{
/**
* 新增订单
*/
ADD_ORDER
=
1
,
/**
* 一级审核
*/
ONE_LEVEL_VALIDATE
,
/**
* 二级审核
*/
TWO_LEVEL_VALIDATE
,
/**
* 提交订单中
*/
SUBMIT_ORDER_PROCESS
,
/**
* 提交订单成功
*/
SUBMIT_ORDER_SUCCESS
,
/**
* 一级审核失败
*/
ONE_LEVEL_VALIDATE_ERROR
,
/**
* 二级审核失败
*/
TWO_LEVEL_VALIDATE_ERROR
}
export
const
ORDER_EXAMINE_LIST
=
[
''
,
'新增订单'
,
'一级审核中'
,
'二级审核中'
,
'提交订单'
,
'提交成功'
,
'一级审核不通过'
,
'二级审核不通过'
]
// 状态颜色映射
export
const
StatusColorsMaps
=
{
ready
:
'#C0C4CC'
,
process
:
'#FFC400'
,
submit
:
'#6C9CEB'
,
success
:
'#41CC9E'
,
error
:
'#EF6260'
}
const
matchStatusColor
=
(
status
:
number
):
string
=>
{
const
maps
=
{
[
ORDER_EXAMINE_ENUM
.
ADD_ORDER
]:
StatusColorsMaps
.
ready
,
[
ORDER_EXAMINE_ENUM
.
ONE_LEVEL_VALIDATE
]:
StatusColorsMaps
.
process
,
[
ORDER_EXAMINE_ENUM
.
TWO_LEVEL_VALIDATE
]:
StatusColorsMaps
.
process
,
[
ORDER_EXAMINE_ENUM
.
SUBMIT_ORDER_PROCESS
]:
StatusColorsMaps
.
submit
,
[
ORDER_EXAMINE_ENUM
.
SUBMIT_ORDER_SUCCESS
]:
StatusColorsMaps
.
success
}
// 默认返回错误的状态颜色
return
maps
[
status
]
||
StatusColorsMaps
.
error
}
// 订单内部状态显示
const
StatusColors
:
React
.
FC
<
StatusColorsProps
>
=
(
props
)
=>
{
const
{
status
,
type
,
text
=
null
}
=
props
const
statusShowColor
=
matchStatusColor
(
status
)
// 优先显示 后端返回的状态文本
return
(<
Tag
color=
{
statusShowColor
}
>
{
text
}
</
Tag
>)
}
StatusColors
.
defaultProps
=
{}
export
default
StatusColors
src/pages/transaction/purchaseOrder/constant/index.tsx
View file @
de7b2757
import
React
from
'react'
import
{
history
}
from
'umi'
import
{
formatTimeString
}
from
'@/utils'
import
StatusColors
from
'../components/
S
tatusColors'
import
StatusColors
from
'../components/
s
tatusColors'
import
EyePreview
from
'@/components/EyePreview'
export
const
baseOrderListColumns
:
any
=
()
=>
{
...
...
src/pages/transaction/purchaseOrder/orderCollectB2b/components/inquiryModalTable/index.tsx
View file @
de7b2757
...
...
@@ -50,6 +50,8 @@ const InquiryModalTable:React.FC<InquiryModalTableProps> = (props) => {
let
newData
=
data
.
map
((
v
:
any
)
=>
{
v
.
memberId
=
item
.
offerMemberId
v
.
memberRoleId
=
item
.
offerMemberRoleId
v
.
orderMode
=
schemaAction
.
getFieldValue
(
'orderMode'
)
v
.
shopId
=
schemaAction
.
getFieldValue
(
'shopId'
)
return
v
})
...
...
src/pages/transaction/purchaseOrder/orderCollectB2b/constant/index.tsx
View file @
de7b2757
...
...
@@ -70,6 +70,9 @@ export const procurementRenderField = (data) => {
memberRoleId
:
data
.
vendorRoleId
,
// 冗余运费
freight
:
data
.
product
.
freight
,
// 冗余shopId orderMode查询支付方式使用
shopId
:
data
.
shopId
,
orderMode
:
data
.
orderMode
,
}
})
}
...
...
@@ -84,8 +87,9 @@ export const procurementProcessField = (value) => {
name
:
item
.
productName
,
logo
:
item
.
imgUrl
,
quantity
:
item
.
purchaseCount
,
logisticTemplateId
:
item
.
logistics
.
templateId
,
logistic
s
TemplateId
:
item
.
logistics
.
templateId
,
weight
:
item
.
logistics
.
weight
,
stockId
:
item
.
upperCommoditySkuId
,
}
})
return
value
...
...
src/pages/transaction/purchaseOrder/orderCollectB2b/effects/index.ts
View file @
de7b2757
...
...
@@ -3,7 +3,6 @@ import { usePageStatus, PageStatus } from '@/hooks/usePageStatus';
import
{
useLinkageUtils
}
from
'@/utils/formEffectUtils'
;
import
{
fetchOrderApi
}
from
'../apis'
;
import
{
PublicApi
}
from
'@/services/api'
;
import
moment
from
'moment'
;
// 异步填充表格字段
...
...
@@ -18,39 +17,20 @@ const asyncPadDataForProduct = async (ctx: ISchemaFormActions | ISchemaFormAsync
ctx
.
setFieldState
(
productValue
.
path
,
state
=>
{
state
.
loading
=
true
})
// // 折扣请求
// const asyncPriceRequests: any[] = await Promise.all(productData.filter(v => v.memberPrice === undefined).map(async v => {
// const {code, data} = await PublicApi.getMemberManageUpperCreditParamGet({
// parentMemberId: v.memberId,
// parentMemberRoleId: v.memberRoleId
// }, {ttl: 60 * 1000, useCache: true})
// return code === 1000 ? { value: data.parameter, id: v.id } : { value: '', id: 0 }
// }
// ))
// // 存在需要异步请求的, 则进行赋值
// if (asyncPriceRequests.length > 0) {
const
newData
=
productData
.
map
((
v
,
i
)
=>
{
// if (!v.memberPrice) {
// v.memberPrice = asyncPriceRequests.find(j => j.id === v.id)?.value || ''
// }
// // @ b2b订单不考虑会员折扣 字段固定100
v
.
discount
=
100
return
v
})
ctx
.
setFieldValue
(
'products'
,
newData
)
// }
const
newData
=
productData
.
map
((
v
,
i
)
=>
{
//@ b2b订单不考虑会员折扣 字段固定100
v
.
discount
=
100
return
v
})
ctx
.
setFieldValue
(
'products'
,
newData
)
ctx
.
setFieldState
(
productValue
.
path
,
state
=>
{
state
.
loading
=
false
})
}
export
const
createEffects
=
context
=>
()
=>
{
}
export
const
useModelTypeChange
=
(
callback
)
=>
{
const
utils
=
useLinkageUtils
()
// 下单模式发生改变时
FormEffectHooks
.
onFieldValueChange$
(
'orderMode'
).
subscribe
(
state
=>
{
callback
(
state
)
...
...
@@ -83,39 +63,37 @@ export const useProductTableChangeForPay = (ctx: ISchemaFormActions | ISchemaFor
if
(
value
&&
value
.
length
>
0
&&
!
state
.
loading
){
// 添加loading判断避免二次调用
// 请求一次并复制给支付信息
const
productItem
=
value
[
0
]
if
(
pageStatus
===
PageStatus
.
EDIT
)
{
// 编辑下 支付信息联动实现
}
else
if
(
pageStatus
===
PageStatus
.
ADD
)
{
// 新增下 需要支付信息生成支付次数
const
shopId
=
ctx
.
getFieldValue
(
'shopId'
)
const
products
=
value
.
map
(
item
=>
({
productId
:
item
.
commodityId
,
skuId
:
item
.
productId
}))
if
(
shopId
&&
products
?.
length
)
{
// 判断不存在物流 隐藏交付地址
if
(
!
value
.
some
(
item
=>
item
.
logistics
.
deliveryType
===
1
))
{
ctx
.
setFieldState
(
'deliveryAddresId'
,
state
=>
state
.
visible
=
false
)
}
else
{
ctx
.
setFieldState
(
'deliveryAddresId'
,
state
=>
state
.
visible
=
true
)
if
(
pageStatus
===
PageStatus
.
ADD
)
{
// 新增下 需要支付信息生成支付次数
const
shopId
=
ctx
.
getFieldValue
(
'shopId'
)
const
products
=
value
.
map
(
item
=>
({
productId
:
item
.
commodityId
,
skuId
:
item
.
productId
}))
if
(
shopId
&&
products
?.
length
)
{
// 判断不存在物流 隐藏交付地址
if
(
!
value
.
some
(
item
=>
item
.
logistics
.
deliveryType
===
1
))
{
ctx
.
setFieldState
(
'deliveryAddresId'
,
state
=>
state
.
visible
=
false
)
}
else
{
ctx
.
setFieldState
(
'deliveryAddresId'
,
state
=>
state
.
visible
=
true
)
}
fetchOrderApi
.
getPayInfoList
({
products
:
products
,
memberId
:
productItem
?.
memberId
,
roleId
:
productItem
?.
memberRoleId
,
orderMode
:
orderMode
,
shopId
:
shopId
}).
then
(
data
=>
{
ctx
.
setFieldValue
(
'payments'
,
data
.
map
(
item
=>
({
...
item
,
payPrice
:
(
sumPrice
*
Number
(
item
.
payRate
)
/
100
).
toFixed
(
2
)
})))
}).
catch
(
err
=>
{
})
}
fetchOrderApi
.
getPayInfoList
({
products
:
products
,
memberId
:
productItem
?.
memberId
,
roleId
:
productItem
?.
memberRoleId
,
orderMode
:
orderMode
,
shopId
:
shopId
}).
then
(
data
=>
{
ctx
.
setFieldValue
(
'payments'
,
data
.
map
(
item
=>
({
...
item
,
payPrice
:
(
sumPrice
*
Number
(
item
.
payRate
)
/
100
).
toFixed
(
2
)
})))
}).
catch
(
err
=>
{
})
}
}
}
// 确认后 需根据商品id请求会员折扣接口, 以及配送方式
// 由于商品存在多个, 需对接口做一定缓存
asyncPadDataForProduct
(
ctx
,
state
)
const
numberInputs
=
document
.
getElementsByClassName
(
"purchase_amount_input"
)
if
(
numberInputs
?.
length
)
{
for
(
let
i
=
0
;
i
<
numberInputs
.
length
;
i
++
)
{
...
...
@@ -132,17 +110,14 @@ export const useOrderFormInitEffect = (ctx: ISchemaFormActions | ISchemaFormAsyn
// 写入收货地址数据
useProductAddress
(
ctx
)
})
FormEffectHooks
.
onFieldValueChange$
(
'hasInvoice'
).
subscribe
(
state
=>
{
if
(
state
.
value
)
{
useInvoiceList
(
ctx
)
}
})
}
export
const
useProductAddress
=
(
ctx
:
ISchemaFormActions
|
ISchemaFormAsyncActions
)
=>
{
fetchOrderApi
.
getProductAddressAll
().
then
(
data
=>
{
ctx
.
setFieldState
(
'deliveryAddresId'
,
state
=>
{
if
(
data
.
length
>
0
&&
!
state
.
value
)
{
...
...
@@ -169,62 +144,6 @@ export const useInvoiceList = (ctx: ISchemaFormActions | ISchemaFormAsyncActions
})
}
// 编辑订单 地址和发票变动 触发订单更新
export
const
useOrderUpdateChangeOther
=
(
ctx
:
ISchemaFormActions
|
ISchemaFormAsyncActions
)
=>
{
const
{
pageStatus
,
id
}
=
usePageStatus
()
FormEffectHooks
.
onFieldValueChange$
(
'theInvoiceId'
).
subscribe
(
state
=>
{
const
{
value
,
path
}
=
state
if
(
pageStatus
===
PageStatus
.
EDIT
){
if
(
state
?.
dataSource
?.
length
&&
state
.
loading
&&
state
.
props
[
"x-component-props"
].
times
>
2
)
{
ctx
.
submit
((
values
)
=>
{
if
(
values
){
PublicApi
.
postOrderProcurementOrderUpdate
({
...
values
,
deliveryTime
:
moment
(
values
.
deliveryTime
).
valueOf
(),
theInvoiceId
:
value
?.
id
||
null
,
hasInvoice
:
values
.
hasInvoice
,
deliveryAddresId
:
values
.
deliveryAddresId
,
id
,
},
{
ctlType
:
"none"
})
}
})
}
else
{
ctx
.
setFieldState
(
path
,
_state
=>
{
_state
.
loading
=
true
_state
.
props
[
"x-component-props"
].
times
++
})
}
}
})
FormEffectHooks
.
onFieldValueChange$
(
'deliveryAddresId'
).
subscribe
(
state
=>
{
const
{
value
,
path
}
=
state
if
(
pageStatus
===
PageStatus
.
EDIT
){
if
(
state
?.
dataSource
?.
length
&&
state
.
loading
&&
state
.
props
[
"x-component-props"
].
times
>
2
)
{
ctx
.
submit
((
values
)
=>
{
if
(
values
){
PublicApi
.
postOrderProcurementOrderUpdate
({
...
values
,
deliveryTime
:
moment
(
values
.
deliveryTime
).
valueOf
(),
theInvoiceId
:
values
.
theInvoiceId
,
hasInvoice
:
values
.
hasInvoice
,
deliveryAddresId
:
value
?.
id
?
value
.
id
:
value
,
id
,
},
{
ctlType
:
"none"
})
}
})
}
else
{
ctx
.
setFieldState
(
path
,
_state
=>
{
_state
.
loading
=
true
_state
.
props
[
"x-component-props"
].
times
++
})
}
}
})
}
// 高级筛选schema中用于输入搜索商品品类的Effect
/**
* @param ctx 外部表单action
...
...
src/pages/transaction/purchaseOrder/orderCollectB2b/index.tsx
View file @
de7b2757
...
...
@@ -8,7 +8,7 @@ import { createFormActions, registerVirtualBox, useFormSpy } from '@formily/antd
import
{
SaveOutlined
,
LinkOutlined
,
PlusOutlined
}
from
'@ant-design/icons'
import
NiceForm
from
'@/components/NiceForm'
import
{
mergeAllSchemas
}
from
'./schema'
import
{
useModelTypeChange
,
useEditHideField
,
useOrderFormInitEffect
,
useProductTableChangeForPay
,
useOrderUpdateChangeOther
}
from
'./effects'
import
{
useModelTypeChange
,
useEditHideField
,
useOrderFormInitEffect
,
useProductTableChangeForPay
}
from
'./effects'
import
{
orderCombination
,
orderTypeLabelMap
,
procurementProcessField
,
procurementRenderField
,
procurmentRenderInit
}
from
'./constant'
import
{
OrderModalType
}
from
'@/constants/order'
import
ProductModalTable
from
'./components/productModalTable'
...
...
@@ -83,18 +83,10 @@ export const MoneyTotalBox = registerVirtualBox('moneyTotalBox', props => {
if
(
logsiticsDataMaps
.
length
>
0
)
{
PublicApi
.
postLogisticsFreightTemplateCalFreightPrice
({
orderProductList
:
pageStatus
===
PageStatus
.
ADD
?
logsiticsDataMaps
.
map
(
v
=>
({
templateId
:
v
.
logistics
.
templateId
,
weight
:
v
.
logistics
.
weight
,
orderProductList
:
logsiticsDataMaps
.
map
(
v
=>
({
templateId
:
v
.
logistics
.
templateId
||
v
.
logisticsTemplateId
,
weight
:
v
.
logistics
.
weight
||
v
.
weight
,
count
:
v
?.
purchaseCount
||
0
}))
:
logsiticsDataMaps
.
map
(
v
=>
({
templateId
:
v
.
logisticTemplateId
,
weight
:
v
.
weight
,
count
:
v
.
purchaseCount
})),
receiverAddressId
:
typeof
receiverAddressId
===
'object'
?
receiverAddressId
.
id
:
receiverAddressId
},
{
ttl
:
10
*
1000
,
useCache
:
true
,
ctlType
:
'none'
}).
then
(
res
=>
{
...
...
@@ -147,8 +139,6 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
const
[
products
,
setProducts
]
=
useState
<
any
>
([])
const
[
paymentColumns
,
paymentComponents
,
paymentSave
]
=
usePaymentInfo
(
addSchemaAction
,
addSchemaAction
.
getFieldValue
(
'vendorMemberId'
),
addSchemaAction
.
getFieldValue
(
'vendorRoleId'
),
pageStatus
===
PageStatus
.
ADD
?
addSchemaAction
.
getFieldValue
(
'products'
)
:
products
)
// 订单商品
...
...
@@ -332,7 +322,7 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
memberRef
.
current
.
setVisible
(
true
)
}
const
orderNoPrice
=
pageStatus
!==
PageStatus
.
PREVIEW
&&
<
div
className=
'connectBtn'
onClick=
{
handleOrderNo
}
><
LinkOutlined
style=
{
{
marginRight
:
4
}
}
/>
选择
</
div
>
const
orderNoPrice
=
pageStatus
===
PageStatus
.
ADD
&&
<
div
className=
'connectBtn'
onClick=
{
handleOrderNo
}
><
LinkOutlined
style=
{
{
marginRight
:
4
}
}
/>
选择
</
div
>
const
orderMember
=
pageStatus
!==
PageStatus
.
PREVIEW
&&
<
div
className=
'connectBtn'
onClick=
{
handleOrderMember
}
><
LinkOutlined
style=
{
{
marginRight
:
4
}
}
/>
选择
</
div
>
// @todo 未实现金额合计
...
...
@@ -388,28 +378,6 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
]
}
>
<
ReadyAddOrderDetailContext
.
Provider
value=
{
providerValue
}
>
{
/* { pageStatus !== PageStatus.ADD && initFormValue && initFormValue.externalWorkflowFlowRecordLogResponses && <AuditProcess
customTitleKey='operationalProcess'
customKey='state'
outerVerifyCurrent={findLastIndexFlowState(initFormValue.externalWorkflowFlowRecordLogResponses)}
innerVerifyCurrent={findLastIndexFlowState(initFormValue.interiorWorkflowFlowRecordLogResponses)}
outerVerifySteps={
initFormValue.externalWorkflowFlowRecordLogResponses ?
initFormValue.externalWorkflowFlowRecordLogResponses.map(item => ({
...item,
status: item.isExecute ? 'finish' : 'wait',
})) :
[]
}
innerVerifySteps={
initFormValue.interiorWorkflowFlowRecordLogResponses ?
initFormValue.interiorWorkflowFlowRecordLogResponses.map(item => ({
...item,
status: item.isExecute ? 'finish' : 'wait',
})) :
[]
}
></AuditProcess> } */
}
<
Card
className=
{
styles
.
orderCollectCard
}
style=
{
{
marginTop
:
24
}
}
>
<
NiceForm
loading=
{
formLoading
}
...
...
@@ -431,6 +399,11 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
state
.
editable
=
false
})
}
if
(
id
)
{
ctx
.
setFieldState
(
'shopId'
,
state
=>
{
state
.
editable
=
false
})
}
})
$
(
'onFieldInputChange'
,
'orderMode'
).
subscribe
(
state
=>
{
const
{
value
}
=
state
...
...
@@ -459,9 +432,6 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
// 商品信息的改动 驱动支付信息变化
useProductTableChangeForPay
(
ctx
,
update
)
// 编辑 地址和发票信息变动 触发订单更新
useOrderUpdateChangeOther
(
ctx
)
// 监听商品总价的变更, 支付比例计算
$
(
'sumPrice'
).
subscribe
(
payload
=>
{
const
payment
=
addSchemaAction
.
getFieldValue
(
'payments'
)
...
...
@@ -486,6 +456,14 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
}
})
// 新增下 切换商城 清空受影响的字段
$
(
'onFieldValueChange'
,
'shopId'
).
subscribe
(
state
=>
{
pageStatus
===
PageStatus
.
ADD
&&
ctx
.
reset
({
validate
:
false
,
selector
:
'*(quoteNo,quoteId,vendorMemberName,vendorMemberId,vendorRoleId,products,payments)'
})
})
}
}
expressionScope=
{
{
orderNoPrice
,
...
...
src/pages/transaction/purchaseOrder/orderCollectB2b/model/usePaymentInfo.tsx
View file @
de7b2757
...
...
@@ -4,7 +4,7 @@ import { ISchemaFormActions, ISchemaFormAsyncActions } from '@formily/antd'
import
{
useEffect
,
useState
,
useRef
}
from
'react'
import
{
PublicApi
}
from
'@/services/api'
export
const
usePaymentInfo
=
(
ctx
:
ISchemaFormActions
|
ISchemaFormAsyncActions
,
memberId
:
any
,
memberRoleId
:
any
,
products
:
any
=
[]):
any
=>
{
export
const
usePaymentInfo
=
(
ctx
:
ISchemaFormActions
|
ISchemaFormAsyncActions
,
products
:
any
=
[]):
any
=>
{
const
paywayData
=
useRef
<
any
>
({})
const
[
columns
,
setColumns
]
=
useState
<
any
[]
>
(
paymentInformationColumns
)
const
markRef
=
useRef
<
boolean
>
(
true
)
...
...
@@ -40,11 +40,12 @@ export const usePaymentInfo = (ctx: ISchemaFormActions | ISchemaFormAsyncActions
}
const
getPayLists
=
(
memberId
,
memberRoleId
)
=>
{
console
.
log
(
'1'
)
PublicApi
.
postOrderBuyerCreateB2bPaymentFind
({
memberId
,
roleId
:
memberRoleId
,
shopId
:
ctx
.
getFieldValue
(
'shopId'
)
,
orderMode
:
ctx
.
getFieldValue
(
'orderMode'
)
,
shopId
:
products
[
0
][
'shopId'
]
,
orderMode
:
products
[
0
][
'orderMode'
]
,
products
:
products
.
map
(
item
=>
({
productId
:
item
.
commodityId
,
skuId
:
item
.
productId
}))
},
{
ctlType
:
'none'
}).
then
(
res
=>
{
const
{
code
,
data
}
=
res
...
...
src/pages/transaction/purchaseOrder/orderCollectSrm/effects/index.ts
View file @
de7b2757
...
...
@@ -74,63 +74,6 @@ export const useProductTableChangeForPay = (ctx: ISchemaFormActions | ISchemaFor
})
}
// 编辑订单 地址和发票变动 触发订单更新
export
const
useOrderUpdateChangeOther
=
(
ctx
:
ISchemaFormActions
|
ISchemaFormAsyncActions
)
=>
{
// const { pageStatus, id } = usePageStatus()
// FormEffectHooks.onFieldValueChange$('theInvoiceId').subscribe(state => {
// const { value, path } = state
// if(pageStatus === PageStatus.EDIT){
// if(state?.dataSource?.length && state.loading && state.props["x-component-props"].times > 2) {
// ctx.submit((values) => {
// if(values){
// PublicApi.postOrderProcurementOrderUpdate({
// ...values,
// deliveryTime: moment(values.deliveryTime).valueOf(),
// theInvoiceId: value?.id || null,
// hasInvoice: Number(values.hasInvoice),
// deliveryAddresId: values.deliveryAddresId,
// id,
// }, { ctlType: "none" })
// }
// })
// } else {
// ctx.setFieldState(path, _state => {
// _state.loading = true
// _state.props["x-component-props"].times++
// })
// }
// }
// })
// FormEffectHooks.onFieldValueChange$('deliveryAddresId').subscribe(state => {
// const { value, path } = state
// if(pageStatus === PageStatus.EDIT){
// if(state?.dataSource?.length && state.loading && state.props["x-component-props"].times > 2) {
// ctx.submit((values) => {
// if(values){
// PublicApi.postOrderProcurementOrderUpdate({
// ...values,
// deliveryTime: moment(values.deliveryTime).valueOf(),
// theInvoiceId: values.theInvoiceId,
// hasInvoice: Number(values.hasInvoice),
// deliveryAddresId: value?.id ? value.id : value,
// id,
// }, { ctlType: "none" })
// }
// })
// } else {
// ctx.setFieldState(path, _state => {
// _state.loading = true
// _state.props["x-component-props"].times++
// })
// }
// }
// })
}
// 高级筛选schema中用于输入搜索商品品类的Effect
/**
* @param ctx 外部表单action
...
...
src/pages/transaction/purchaseOrder/orderCollectSrm/index.tsx
View file @
de7b2757
...
...
@@ -8,7 +8,7 @@ import { createFormActions, registerVirtualBox, useFormSpy } from '@formily/antd
import
{
SaveOutlined
,
LinkOutlined
,
PlusOutlined
}
from
'@ant-design/icons'
import
NiceForm
from
'@/components/NiceForm'
import
{
mergeAllSchemas
}
from
'./schema'
import
{
useModelTypeChange
,
useEditHideField
,
useOrderFormInitEffect
,
use
OrderUpdateChangeOther
,
use
ProductTableChangeForPay
}
from
'./effects'
import
{
useModelTypeChange
,
useEditHideField
,
useOrderFormInitEffect
,
useProductTableChangeForPay
}
from
'./effects'
import
{
orderCombination
,
orderTypeLabelMap
,
procurementProcessField
,
procurementRenderField
,
procurmentRenderInit
}
from
'./constant'
import
CirculationRecord
from
'../components/circulationRecord'
import
SelectAddress
from
'./components/selectAddress'
...
...
@@ -16,11 +16,9 @@ import TheInvoiceList from './components/theInvoiceList'
import
styled
from
'styled-components'
import
{
useUpdate
}
from
'@umijs/hooks'
import
{
PublicApi
}
from
'@/services/api'
import
{
findLastIndexFlowState
}
from
'@/utils'
import
{
changeRouterTitleByStatus
}
from
'../../_public/order/utils'
import
{
help
}
from
'../../common'
import
{
ReadyAddOrderDetailContext
}
from
'../context'
import
AuditProcess
from
'@/components/AuditProcess'
import
styles
from
'./index.less'
import
{
useMaterialTable
}
from
'./model/useMaterialTable'
import
ContractModalTable
from
'./components/contractModalTable'
...
...
@@ -253,7 +251,7 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
contractOrderRef
.
current
.
setVisible
(
true
)
}
const
orderContract
=
pageStatus
!==
PageStatus
.
PREVIEW
&&
<
div
className=
'connectBtn'
onClick=
{
handleOrderContract
}
><
LinkOutlined
style=
{
{
marginRight
:
4
}
}
/>
选择
</
div
>
const
orderContract
=
pageStatus
===
PageStatus
.
ADD
&&
<
div
className=
'connectBtn'
onClick=
{
handleOrderContract
}
><
LinkOutlined
style=
{
{
marginRight
:
4
}
}
/>
选择
</
div
>
// 新增收货地址
const
addNewAddress
=
<
Button
block
icon=
{
<
PlusOutlined
/>
}
>
新增收货地址
</
Button
>
...
...
@@ -275,28 +273,6 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
]
}
>
<
ReadyAddOrderDetailContext
.
Provider
value=
{
providerValue
}
>
{
/* { pageStatus !== PageStatus.ADD && initFormValue && initFormValue.externalWorkflowFlowRecordLogResponses && <AuditProcess
customTitleKey='operationalProcess'
customKey='state'
outerVerifyCurrent={findLastIndexFlowState(initFormValue.externalWorkflowFlowRecordLogResponses)}
innerVerifyCurrent={findLastIndexFlowState(initFormValue.interiorWorkflowFlowRecordLogResponses)}
outerVerifySteps={
initFormValue.externalWorkflowFlowRecordLogResponses ?
initFormValue.externalWorkflowFlowRecordLogResponses.map(item => ({
...item,
status: item.isExecute ? 'finish' : 'wait',
})) :
[]
}
innerVerifySteps={
initFormValue.interiorWorkflowFlowRecordLogResponses ?
initFormValue.interiorWorkflowFlowRecordLogResponses.map(item => ({
...item,
status: item.isExecute ? 'finish' : 'wait',
})) :
[]
}
></AuditProcess> } */
}
<
Card
className=
{
styles
.
orderCollectCard
}
style=
{
{
marginTop
:
24
}
}
>
<
NiceForm
loading=
{
formLoading
}
...
...
@@ -336,9 +312,6 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
// 商品信息的改动 驱动支付信息变化
useProductTableChangeForPay
(
ctx
,
update
)
// 编辑 地址和发票信息变动 触发订单更新
useOrderUpdateChangeOther
(
ctx
)
}
}
expressionScope=
{
{
orderContract
,
...
...
src/pages/transaction/purchaseOrder/orderCollectSrm/model/useMaterialTable.tsx
View file @
de7b2757
...
...
@@ -57,7 +57,8 @@ export const useMaterialTable = (ctx: ISchemaFormActions | ISchemaFormAsyncActio
// 渲染单价
materialInfoColumns
[
7
].
render
=
(
t
,
r
)
=>
<
span
style=
{
{
color
:
'red'
}
}
>
¥
{
Number
(
r
.
price
).
toFixed
(
2
)
}
</
span
>
materialInfoColumns
[
materialInfoColumns
.
length
-
1
].
render
=
(
t
,
r
)
=>
null
// materialInfoColumns[materialInfoColumns.length - 1].render = (t, r) => null
materialInfoColumns
.
pop
()
}
return
materialInfoColumns
...
...
src/pages/transaction/purchaseOrder/readyPayOrder/model/useSelfTable.tsx
View file @
de7b2757
...
...
@@ -4,7 +4,7 @@ import { Row, Col, Progress } from 'antd'
import
{
PublicApi
}
from
'@/services/api'
import
EyePreview
from
'@/components/EyePreview'
import
{
formatTimeString
}
from
'@/utils'
import
StatusColors
from
'../../components/
S
tatusColors'
import
StatusColors
from
'../../components/
s
tatusColors'
import
{
FieldTimeOutlined
}
from
'@ant-design/icons'
import
{
Chart
,
...
...
src/pages/transaction/saleOrder/constant/index.tsx
View file @
de7b2757
import
React
from
'react'
import
React
,
{
useRef
,
useState
}
from
'react'
import
{
formatTimeString
}
from
'@/utils'
import
StatusColors
from
'@/pages/transaction/components/statusColors'
import
EyePreview
from
'@/components/EyePreview'
import
{
history
}
from
'umi'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
;
import
{
getSaleOrderAuditPageSelectOption
}
from
'@/pages/transaction/effect'
;
import
{
ISchemaFormActions
,
ISchemaFormAsyncActions
}
from
'@formily/antd'
import
{
useModalTable
}
from
'../../purchaseOrder/orderCollectB2b/model/useModalTable'
import
{
Button
}
from
'antd'
import
{
PublicApi
}
from
'@/services/api'
import
{
setAuth
,
setRouters
}
from
'@/utils/auth'
/** 订单审核各个页面 只有订单类型查询的Schema */
export
const
tableListSchema
:
any
=
(
align
?:
String
,
colStyle
?:
Object
)
=>
{
...
...
@@ -105,6 +110,7 @@ export const baseOrderListColumns: any = () => {
align
:
'center'
,
dataIndex
:
'memberName'
,
key
:
'memberName'
,
render
:
(
t
,
r
)
=>
r
.
memberName
?
t
:
r
.
buyerMemberName
},
{
title
:
'下单时间'
,
...
...
@@ -141,3 +147,93 @@ export const baseOrderListColumns: any = () => {
},
]
}
// 转单适用
export
const
useTransformOrderTable
=
(
ctx
:
ISchemaFormActions
|
ISchemaFormAsyncActions
)
=>
{
const
transformRef
=
useRef
<
any
>
({})
const
{
visible
,
setVisible
}
=
useModalTable
()
const
handleDelete
=
(
record
)
=>
{
}
const
handleModify
=
(
record
)
=>
{
alert
(
'转单修改'
)
// PublicApi.postMemberLoginSwitchrole({
// memberRoleId: 11,
// }).then(res => {
// if (res.code === 1000) {
// // @ts-ignore
// setAuth(res.data);
// setRouters(res.data.urls);
// setTimeout(() => {
// window.location.replace(`/memberCenter/tranactionAbility/productInquiry/waitAddInquiry/two?id=${record.order}`);
// }, 800);
// }
// }).catch(err => { })
}
const
[
orderColumns
,
setOrderColumns
]
=
useState
(()
=>
{
const
orderInfoColumns
=
[
{
title
:
'订单号'
,
align
:
'center'
,
dataIndex
:
'orderNo'
,
key
:
'orderNo'
,
render
:
(
text
,
record
)
=>
{
return
(
<
EyePreview
url=
{
`${history.location.pathname}/preview?id=${record.orderId}`
}
>
{
text
}
</
EyePreview
>
)
},
ellipsis
:
true
,
},
{
title
:
'订单摘要'
,
align
:
'center'
,
dataIndex
:
'digest'
,
key
:
'digest'
,
ellipsis
:
true
,
},
{
title
:
'供应会员'
,
align
:
'center'
,
dataIndex
:
'vendorMemberName'
,
key
:
'vendorMemberName'
,
ellipsis
:
true
,
render
:
(
t
,
r
)
=>
t
?
t
:
r
.
memberName
},
{
title
:
'下单时间'
,
align
:
'center'
,
dataIndex
:
'createTime'
,
key
:
'createTime'
,
render
:
(
text
)
=>
formatTimeString
(
text
)
},
{
title
:
'订单总额'
,
align
:
'center'
,
dataIndex
:
'amount'
,
key
:
'amount'
,
ellipsis
:
true
,
render
:
(
t
)
=>
`¥
${
t
}
`
},
]
// 渲染操作
orderInfoColumns
[
orderInfoColumns
.
length
-
1
].
render
=
(
text
,
record
)
=>
<>
<
Button
type=
'link'
size=
"small"
onClick=
{
()
=>
handleModify
(
record
)
}
>
修改
</
Button
>
<
Button
type=
'link'
size=
"small"
onClick=
{
()
=>
handleDelete
(
record
)
}
>
删除
</
Button
>
</>
return
orderInfoColumns
})
return
{
transformRef
,
orderColumns
,
visible
,
setVisible
,
}
}
src/pages/transaction/saleOrder/firstApprovedOrder/detail/index.tsx
View file @
de7b2757
...
...
@@ -25,7 +25,7 @@ const FirstApprovedOrderDetail: React.FC = () => {
approvedRef
.
current
.
actions
.
submit
().
then
(
async
(
v
)
=>
{
const
params
=
{
orderId
:
Number
(
id
),
...
v
,
...
v
.
values
,
}
const
result
=
await
run
(
params
)
...
...
src/pages/transaction/saleOrder/index.tsx
View file @
de7b2757
import
React
,
{
use
Callback
,
use
Ref
}
from
'react'
import
{
Card
,
Button
,
Dropdown
,
Menu
}
from
'antd'
import
React
,
{
useRef
}
from
'react'
import
{
Card
,
Button
,
Space
}
from
'antd'
import
{
StandardTable
}
from
'god'
import
{
PageHeaderWrapper
}
from
'@ant-design/pro-layout'
import
{
PublicApi
}
from
'@/services/api'
import
{
baseOrderListColumns
}
from
'./constant'
import
{
baseOrderListColumns
,
useTransformOrderTable
}
from
'./constant'
import
{
history
}
from
'umi'
import
{
PurchaseOrderOutWorkState
}
from
'@/constants/order'
import
{
saleTableListSchema
as
tableListSchema
}
from
'../_public/order/constant'
import
{
useStateFilterSearchLinkageEffect
}
from
'@/formSchema/effects/useFilterSearch'
import
{
FORM_FILTER_PATH
}
from
'@/formSchema/const'
import
DateRangePickerUnix
from
'@/components/NiceForm/components/DateRangePickerUnix'
import
Submit
from
'@/components/NiceForm/components/Submit'
import
NiceForm
from
'@/components/NiceForm'
import
{
createFormActions
}
from
'@formily/antd'
import
{
createFormActions
,
registerVirtualBox
}
from
'@formily/antd'
import
ModalForm
from
'@/components/ModalForm'
import
{
useHttpRequest
}
from
'@/hooks/useHttpRequest'
import
{
CaretDownOutlined
}
from
'@ant-design/icons'
import
TableOperation
from
'@/components/TableOperation'
// 销售订单查询
...
...
@@ -30,6 +28,7 @@ const fetchTableData = async (params) => {
const
formActions
=
createFormActions
();
const
destroyActions
=
createFormActions
();
const
pauseActions
=
createFormActions
();
const
transformActions
=
createFormActions
();
const
SaleOrder
:
React
.
FC
<
SaleOrderProps
>
=
(
props
)
=>
{
const
ref
=
useRef
<
any
>
({})
...
...
@@ -38,6 +37,8 @@ const SaleOrder: React.FC<SaleOrderProps> = (props) => {
const
{
run
,
loading
}
=
useHttpRequest
(
PublicApi
.
postOrderVendorCancel
)
const
{
run
:
runPause
,
loading
:
loadingEnd
}
=
useHttpRequest
(
PublicApi
.
postOrderVendorTerminate
)
const
{
transformRef
,
orderColumns
}
=
useTransformOrderTable
(
transformActions
)
// 提交取消
const
handleSubmit
=
()
=>
{
destroyActions
.
submit
().
then
(
async
({
values
}:
any
)
=>
{
...
...
@@ -80,14 +81,30 @@ const SaleOrder: React.FC<SaleOrderProps> = (props) => {
pauseActions
.
setFieldValue
(
'state'
,
1
)
}
// 单个转单
const
handelTransformOrder
=
(
r
)
=>
{
console
.
log
(
r
)
transformRef
.
current
.
setVisible
(
true
)
transformActions
.
setFieldValue
(
'orders'
,
[
{
id
:
1
,
orderNo
:
'TYBHU'
,
digest
:
'666'
,
vendorMemberName
:
'999'
,
createTime
:
'2015-12-20 20:15:12'
,
amount
:
'123'
},
{
id
:
2
,
orderNo
:
'IYGUIH'
,
digest
:
'56'
,
vendorMemberName
:
'651'
,
createTime
:
'2015-02-15 20:15:12'
,
amount
:
'123'
}
])
}
// 批量转单
const
handleSubmitTransform
=
()
=>
{
}
/** 参照后台数据生成 */
const
renderOptionButton
=
(
record
:
any
)
=>
{
const
buttonGroup
=
{
'取消订单'
:
record
.
showCancel
,
'中止'
:
record
.
showTerminate
,
'评价'
:
record
.
showComment
}
const
buttonGroup
=
{
'取消订单'
:
record
.
showCancel
,
'中止'
:
record
.
showTerminate
,
'评价'
:
record
.
showComment
,
'转单'
:
true
}
const
operationHandler
=
{
'取消订单'
:
()
=>
handleCancel
(
record
),
'中止'
:
()
=>
handleSuspend
(
record
),
'评价'
:
()
=>
handleEvaluate
(
record
.
orderId
),
'转单'
:
()
=>
handelTransformOrder
(
record
),
}
return
(
...
...
@@ -113,7 +130,14 @@ const SaleOrder: React.FC<SaleOrderProps> = (props) => {
}
}
const
controllerBtns
=
<
Button
style=
{
{
width
:
140
}
}
onClick=
{
()
=>
{}
}
type=
'default'
>
导出
</
Button
>
const
controllerBtns
=
<
Space
>
<
Button
style=
{
{
width
:
140
}
}
onClick=
{
()
=>
{}
}
type=
'default'
>
导出
</
Button
>
<
Button
type=
"primary"
>
转单
</
Button
>
</
Space
>
registerVirtualBox
(
"CustomTitle"
,
({
children
,
schema
})
=>
{
return
<
p
>
当前勾运了3张订单进行转单,转单后生成的采购订单可通过账号“广州中石科技采购商角色”进行查看
</
p
>
})
return
<
PageHeaderWrapper
>
<
Card
>
...
...
@@ -148,6 +172,7 @@ const SaleOrder: React.FC<SaleOrderProps> = (props) => {
}
}
/>
</
Card
>
{
/* 取消原因 */
}
<
ModalForm
modalTitle=
'取消原因'
currentRef=
{
destoryRef
}
...
...
@@ -192,6 +217,7 @@ const SaleOrder: React.FC<SaleOrderProps> = (props) => {
}
}
modalProps=
{
{
confirmLoading
:
loading
}
}
/>
{
/* 中止原因 */
}
<
ModalForm
modalTitle=
'中止原因'
currentRef=
{
pauseRef
}
...
...
@@ -241,6 +267,38 @@ const SaleOrder: React.FC<SaleOrderProps> = (props) => {
}
}
modalProps=
{
{
confirmLoading
:
loadingEnd
}
}
/>
{
/* 确认转单 */
}
<
ModalForm
modalTitle=
'确认转单'
currentRef=
{
transformRef
}
confirm=
{
handleSubmitTransform
}
actions=
{
transformActions
}
schema=
{
{
type
:
'object'
,
properties
:
{
NOT_SUBMIT_TITLE
:
{
type
:
'object'
,
"x-component"
:
"CustomTitle"
,
},
orders
:
{
type
:
'array'
,
"x-component"
:
'MultTable'
,
"x-component-props"
:
{
rowKey
:
'id'
,
columns
:
"{{orderColumns}}"
,
pagination
:
false
,
},
},
}
}
}
expressionScope=
{
{
orderColumns
,
}
}
// components={{
// CustomTitle
// }}
// modalProps={{confirmLoading: loadingTransform}}
/>
</
PageHeaderWrapper
>
}
...
...
src/services/api.ts
View file @
de7b2757
...
...
@@ -29,7 +29,6 @@ import * as EnhanceV2Api from './EnhanceV2Api';
import
*
as
MessageV2
from
'./MessageV2Api'
;
import
*
as
LogiticsV2
from
'./LogiticsV2Api'
;
import
*
as
MarketingApi
from
'./MarketingApi'
;
import
*
as
MaketingV2Api
from
'./MaketingV2Api'
import
*
as
AfterServiceV2Api
from
'./AfterServiceV2Api'
;
...
...
@@ -73,6 +72,5 @@ export const PublicApi = {
...
MessageV2
,
...
LogiticsV2
,
...
MarketingApi
,
...
MaketingV2Api
,
...
AfterServiceV2Api
,
}
ytt.config.ts
View file @
de7b2757
...
...
@@ -31,7 +31,6 @@ const tokenList = [
{
name
:
'MessageV2'
,
token
:
'69a667ec9861e8bdc25b89238d0b908a2123d9fce26e72fec3cdf6cd0b1f2681'
,
categoryIds
:
[
0
],
},
// 消息中心v2
{
name
:
'LogiticsV2'
,
token
:
'732fb8e33970ff5dee830423a630e8e85c3ef3293abba7581b16749dfce8608b'
,
categoryIds
:
[
0
],
},
// 物流能力v2
{
name
:
'Marketing'
,
token
:
'd952d25c4e8272a6dff69245dbddf983dc886521e2623464e476922fc95f43af'
,
categoryIds
:
[
0
],
},
// 营销能力
{
name
:
'MaketingV2'
,
token
:
'f6d5cee2383ca203dfa2882b84dfa02a1d79de3c3ad892b42f030437fdc5ea21'
,
categoryIds
:
[
0
]
},
// 营销活动v2
{
name
:
'AfterServiceV2'
,
token
:
'58748fc89dcdb33ec5cac520c00293ba92abca362a8ddb979df589effd0db9bd'
,
categoryIds
:
[
0
],
},
// 售后能力V2
]
...
...
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