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
36b1d871
Commit
36b1d871
authored
Dec 28, 2021
by
前端-钟卫鹏
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: 新增采购/销售发货单、新增物流单翻译
parent
441c2c1b
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
407 additions
and
410 deletions
+407
-410
order.ts
src/locales/en-US/order.ts
+79
-0
order.ts
src/locales/ko-KR/order.ts
+79
-0
order.ts
src/locales/zh-CN/order.ts
+78
-0
index.tsx
...urchaseReceiveOrder/components/memberModalTable/index.tsx
+0
-69
index.tsx
...urchaseReceiveOrder/components/productTableCell/index.tsx
+11
-11
index.tsx
.../purchaseOrder/addPurchaseReceiveOrder/constant/index.tsx
+19
-80
index.tsx
...ansaction/purchaseOrder/addPurchaseReceiveOrder/index.tsx
+12
-56
useProductTable.tsx
...seOrder/addPurchaseReceiveOrder/model/useProductTable.tsx
+13
-13
index.ts
...ion/purchaseOrder/addPurchaseReceiveOrder/schema/index.ts
+20
-22
modal.ts
...ion/purchaseOrder/addPurchaseReceiveOrder/schema/modal.ts
+1
-1
index.tsx
...ransaction/saleOrder/addLogisticsOrder/constant/index.tsx
+25
-51
index.tsx
src/pages/transaction/saleOrder/addLogisticsOrder/index.tsx
+9
-5
useProductTable.tsx
...ion/saleOrder/addLogisticsOrder/model/useProductTable.tsx
+3
-2
index.ts
...s/transaction/saleOrder/addLogisticsOrder/schema/index.ts
+15
-13
index.tsx
...addSaleDelevedOrder/components/productTableCell/index.tsx
+6
-6
index.tsx
...nsaction/saleOrder/addSaleDelevedOrder/constant/index.tsx
+17
-25
index.tsx
...pages/transaction/saleOrder/addSaleDelevedOrder/index.tsx
+2
-36
useProductTable.tsx
...n/saleOrder/addSaleDelevedOrder/model/useProductTable.tsx
+2
-2
index.ts
...transaction/saleOrder/addSaleDelevedOrder/schema/index.ts
+16
-18
No files found.
src/locales/en-US/order.ts
View file @
36b1d871
...
...
@@ -334,6 +334,44 @@ export default {
'purchaseOrder.querenshenhecao'
:
'Confirm review operation'
,
'purchaseOrder.shifouquerenshen'
:
'Whether to confirm the review of the warehouse receipt number is'
,
'purchaseOrder.decaigouruku'
:
'Purchase receipt order?'
,
'purchaseOrder.bianjixiaoshoufa'
:
'Edit sales invoices'
,
'purchaseOrder.xinzengxiaoshoufa'
:
'New sales invoices'
,
'purchaseOrder.shangpinmingcheng'
:
'product name'
,
'purchaseOrder.pinlei'
:
'category'
,
'purchaseOrder.pinpai'
:
'brand'
,
'purchaseOrder.danwei'
:
'unit'
,
'purchaseOrder.dinggoushuliang'
:
'quantity ordered'
,
'purchaseOrder.danjia(yuan)'
:
'Unit Price(YUAN)'
,
'purchaseOrder.fahuoshuliang'
:
'quantity shipped'
,
'purchaseOrder.fahuojine'
:
'Shipment Amount(YUAN)'
,
'purchaseOrder.jibenxinxi'
:
'basic information'
,
'purchaseOrder.danjuleixing'
:
'Type of document'
,
'purchaseOrder.caigoushouhuodan'
:
'Purchase receipt'
,
'purchaseOrder.qingshurudanju'
:
'Please enter a summary of the documents'
,
'purchaseOrder.danjushijian'
:
'Documents time'
,
'purchaseOrder.duiyingcangku'
:
'Corresponding to the warehouse'
,
'purchaseOrder.cangkurenyuan'
:
'storekeeper'
,
'purchaseOrder.beizhu'
:
'remark'
,
'purchaseOrder.xiangguanxinxi'
:
'relevant information'
,
'purchaseOrder.duiyingdanju'
:
'Corresponding documents'
,
'purchaseOrder.peisongfangshi'
:
'mode of distribution'
,
'purchaseOrder.guanliandanju'
:
'Associated documents'
,
'purchaseOrder.fahuodizhi'
:
'ship address'
,
'purchaseOrder.huiyuanmingcheng'
:
'Member name'
,
'purchaseOrder.danjumingxi'
:
'The documents detailed'
,
'purchaseOrder.wuliu'
:
'logistics'
,
'purchaseOrder.ziti'
:
'noutoasiakas'
,
'purchaseOrder.wuxupeisong'
:
'No distribution'
,
'purchaseOrder.shuzhijingduyi'
:
'Numerical accuracy overflow'
,
'purchaseOrder.bixutianxie'
:
'Must fill in the'
,
'purchaseOrder.caigoushuliangjin'
:
'Purchase quantity is limited to three decimal places'
,
'purchaseOrder.danjiajinxiansi'
:
'The unit price is only four decimal places'
,
'purchaseOrder.zitidizhi'
:
'To the address'
,
'purchaseOrder.danjuzhaiyao'
:
'This paper documents'
,
'purchaseOrder.baocun'
:
'save'
,
'purchaseOrder.shanchu'
:
'delete'
,
'purchaseOrder.qingwanshancaigou'
:
'Please improve the commodity data of purchase receipt'
,
'saleOrder.daochuerweima'
:
'Export qr Code'
,
'saleOrder.tijiaoshenhe'
:
'Submit for review'
,
...
...
@@ -489,7 +527,48 @@ export default {
'saleOrder.bianjixiaoshoufahuodan'
:
'Edit sales invoices'
,
'saleOrder.baocun'
:
'save'
,
'saleOrder.xuanze'
:
'select'
,
'saleOrder.danjumingxi'
:
'The documents detailed'
,
'saleOrder.xiangguanxinxi'
:
'relevant information'
,
'saleOrder.dinggoushuliang'
:
'quantity ordered'
,
'saleOrder.danjia(yuan)'
:
'Unit Price(YUAN)'
,
'saleOrder.fahuoshuliang'
:
'quantity shipped'
,
'saleOrder.fahuojine'
:
'Shipment Amount(YUAN)'
,
'saleOrder.jibenxinxi'
:
'basic information'
,
'saleOrder.danjuleixing'
:
'Type of document'
,
'saleOrder.xiaoshoufahuodan'
:
'Sales invoices'
,
'saleOrder.danjuzhaiyao'
:
'This paper documents'
,
'saleOrder.qingshurudanju'
:
'Please enter a summary of the documents'
,
'saleOrder.duiyingcangku'
:
'Corresponding to the warehouse'
,
'saleOrder.cangkurenyuan'
:
'warehouse worker'
,
'saleOrder.beizhu'
:
'remark'
,
'saleOrder.duiyingdanju'
:
'Corresponding documents'
,
'saleOrder.guanliandanju'
:
'Associated documents'
,
'saleOrder.shouhuodizhi'
:
'shipping address'
,
'saleOrder.wuliu'
:
'logistics'
,
'saleOrder.ziti'
:
'noutoasiakas'
,
'saleOrder.wuxupeisong'
:
'No distribution'
,
'saleOrder.shuzhijingduyi'
:
'Numerical accuracy overflow'
,
'saleOrder.bixutianxie'
:
'Must fill in the'
,
'saleOrder.caigoushuliangjin'
:
'Purchase quantity is limited to three decimal places'
,
'saleOrder.danjiajinxiansi'
:
'The unit price is only four decimal places'
,
'saleOrder.zitidizhi'
:
'To the address'
,
'saleOrder.xuanzeshangpin'
:
'choose products'
,
'saleOrder.zongxiangshu'
:
'total cartons'
,
'saleOrder.zongzhongliang'
:
'total weight'
,
'saleOrder.zongtiji'
:
'total volume'
,
'saleOrder.shuliang'
:
'amount'
,
'saleOrder.xiangshu'
:
'carton numbers'
,
'saleOrder.zhongliang'
:
'weight'
,
'saleOrder.tiji'
:
'volume'
,
'saleOrder.wuliufuwushang'
:
'logistics providers'
,
'saleOrder.fahuodizhi'
:
'ship address'
,
'saleOrder.duiyingfahuodan'
:
'Corresponding to invoice number'
,
'saleOrder.duiyingdingdanhao'
:
'Corresponding order number/after-sale order'
,
'saleOrder.shouhuofang'
:
'receiving party'
,
'saleOrder.wuliudanmingxi'
:
'Logistics details'
,
'saleOrder.yunfeixinxi'
:
'The freight information'
,
'saleOrder.yunfei'
:
'freight'
,
'saleOrder.jiesuanfangshi'
:
'clearing form'
,
// Requisitions
...
...
src/locales/ko-KR/order.ts
View file @
36b1d871
...
...
@@ -334,6 +334,44 @@ export default {
'purchaseOrder.querenshenhecao'
:
'감사 작업 확인'
,
'purchaseOrder.shifouquerenshen'
:
'감사 입고 양식 번호가'
,
'purchaseOrder.decaigouruku'
:
'의 구매 입고서?'
,
'purchaseOrder.bianjixiaoshoufa'
:
'판매 인보이스 편집'
,
'purchaseOrder.xinzengxiaoshoufa'
:
'신규 판매 인보이스'
,
'purchaseOrder.shangpinmingcheng'
:
'상품명'
,
'purchaseOrder.pinlei'
:
'종류'
,
'purchaseOrder.pinpai'
:
'브랜드'
,
'purchaseOrder.danwei'
:
'단위'
,
'purchaseOrder.dinggoushuliang'
:
'주문 수량'
,
'purchaseOrder.danjia(yuan)'
:
'단가(원)'
,
'purchaseOrder.fahuoshuliang'
:
'출하 수량'
,
'purchaseOrder.fahuojine'
:
'발송금액(원)'
,
'purchaseOrder.jibenxinxi'
:
'기본 정보'
,
'purchaseOrder.danjuleixing'
:
'증빙서류 종류'
,
'purchaseOrder.caigoushouhuodan'
:
'구매 인보이스'
,
'purchaseOrder.qingshurudanju'
:
'증빙서류 요약을 입력하십시오'
,
'purchaseOrder.danjushijian'
:
'서류 시간'
,
'purchaseOrder.duiyingcangku'
:
'대응 저장소'
,
'purchaseOrder.cangkurenyuan'
:
'창고 인원'
,
'purchaseOrder.beizhu'
:
'비고난'
,
'purchaseOrder.xiangguanxinxi'
:
'관련 정보'
,
'purchaseOrder.duiyingdanju'
:
'대응 서류'
,
'purchaseOrder.peisongfangshi'
:
'배송 방식'
,
'purchaseOrder.guanliandanju'
:
'관련 서류'
,
'purchaseOrder.fahuodizhi'
:
'발송 주소'
,
'purchaseOrder.huiyuanmingcheng'
:
'회원 이름'
,
'purchaseOrder.danjumingxi'
:
'증빙서류 명세'
,
'purchaseOrder.wuliu'
:
'물류'
,
'purchaseOrder.ziti'
:
'이후 제기'
,
'purchaseOrder.wuxupeisong'
:
'배송이 필요 없습니다'
,
'purchaseOrder.shuzhijingduyi'
:
'수치 정밀도가 오버플로우됩니다'
,
'purchaseOrder.bixutianxie'
:
'필수로 기입하다'
,
'purchaseOrder.caigoushuliangjin'
:
'구입 수량은 세 자리 소수로만 제한한다'
,
'purchaseOrder.danjiajinxiansi'
:
'단가는 단지 네 자리 소수로만 제한된다'
,
'purchaseOrder.zitidizhi'
:
'자동 주소'
,
'purchaseOrder.danjuzhaiyao'
:
'증빙서류 적요'
,
'purchaseOrder.baocun'
:
'간수하다'
,
'purchaseOrder.shanchu'
:
'지우다'
,
'purchaseOrder.qingwanshancaigou'
:
'송장 상품 데이터를 완벽하게 구입하십시오'
,
'saleOrder.daochuerweima'
:
'qr 코드를 내보내다'
,
'saleOrder.tijiaoshenhe'
:
'제출 심사'
,
...
...
@@ -487,7 +525,48 @@ export default {
'saleOrder.bianjixiaoshoufahuodan'
:
'판매 인보이스 편집'
,
'saleOrder.baocun'
:
'간수하다'
,
'saleOrder.xuanze'
:
'고르다'
,
'saleOrder.danjumingxi'
:
'증빙서류 명세'
,
'saleOrder.xiangguanxinxi'
:
'관련 정보'
,
'saleOrder.dinggoushuliang'
:
'주문 수량'
,
'saleOrder.danjia(yuan)'
:
'단가(원)'
,
'saleOrder.fahuoshuliang'
:
'출하 수량'
,
'saleOrder.fahuojine'
:
'발송금액(원)'
,
'saleOrder.jibenxinxi'
:
'기본 정보'
,
'saleOrder.danjuleixing'
:
'증빙서류 종류'
,
'saleOrder.xiaoshoufahuodan'
:
'인보이스 판매'
,
'saleOrder.danjuzhaiyao'
:
'증빙서류 적요'
,
'saleOrder.qingshurudanju'
:
'증빙서류 요약을 입력하십시오'
,
'saleOrder.duiyingcangku'
:
'대응 저장소'
,
'saleOrder.cangkurenyuan'
:
'창고 인원'
,
'saleOrder.beizhu'
:
'비고난'
,
'saleOrder.duiyingdanju'
:
'대응 서류'
,
'saleOrder.guanliandanju'
:
'관련 서류'
,
'saleOrder.shouhuodizhi'
:
'배송 주소'
,
'saleOrder.wuliu'
:
'물류'
,
'saleOrder.ziti'
:
'이후 제기'
,
'saleOrder.wuxupeisong'
:
'배송이 필요 없습니다'
,
'saleOrder.shuzhijingduyi'
:
'수치 정밀도가 오버플로우됩니다'
,
'saleOrder.bixutianxie'
:
'필수로 기입하다'
,
'saleOrder.caigoushuliangjin'
:
'구입 수량은 세 자리 소수로만 제한한다'
,
'saleOrder.danjiajinxiansi'
:
'단가는 단지 네 자리 소수로만 제한된다'
,
'saleOrder.zitidizhi'
:
'자동 주소'
,
'saleOrder.xuanzeshangpin'
:
'상품을 선택하다'
,
'saleOrder.zongxiangshu'
:
'총 상자 수'
,
'saleOrder.zongzhongliang'
:
'총 중량'
,
'saleOrder.zongtiji'
:
'총체적'
,
'saleOrder.shuliang'
:
'수량'
,
'saleOrder.xiangshu'
:
'상자 수'
,
'saleOrder.zhongliang'
:
'중량'
,
'saleOrder.tiji'
:
'체적'
,
'saleOrder.wuliufuwushang'
:
'물류 서비스 업체'
,
'saleOrder.fahuodizhi'
:
'발송 주소'
,
'saleOrder.duiyingfahuodan'
:
'인보이스 번호에 대응됩니다'
,
'saleOrder.duiyingdingdanhao'
:
'주문서/애프터세일즈 증명서에 대응합니다'
,
'saleOrder.shouhuofang'
:
'납품처'
,
'saleOrder.wuliudanmingxi'
:
'물류 명세서'
,
'saleOrder.yunfeixinxi'
:
'운임 정보'
,
'saleOrder.yunfei'
:
'운송비'
,
'saleOrder.jiesuanfangshi'
:
'결제방법'
,
// 请购单
...
...
src/locales/zh-CN/order.ts
View file @
36b1d871
...
...
@@ -334,6 +334,43 @@ export default {
'purchaseOrder.querenshenhecao'
:
'确认审核操作'
,
'purchaseOrder.shifouquerenshen'
:
'是否确认审核入库单号为'
,
'purchaseOrder.decaigouruku'
:
'的采购入库单?'
,
'purchaseOrder.bianjixiaoshoufa'
:
'编辑销售发货单'
,
'purchaseOrder.xinzengxiaoshoufa'
:
'新增销售发货单'
,
'purchaseOrder.shangpinmingcheng'
:
'商品名称'
,
'purchaseOrder.pinlei'
:
'品类'
,
'purchaseOrder.pinpai'
:
'品牌'
,
'purchaseOrder.danwei'
:
'单位'
,
'purchaseOrder.dinggoushuliang'
:
'订购数量'
,
'purchaseOrder.danjia(yuan)'
:
'单价(元)'
,
'purchaseOrder.fahuoshuliang'
:
'发货数量'
,
'purchaseOrder.fahuojine('
:
'发货金额(元)'
,
'purchaseOrder.jibenxinxi'
:
'基本信息'
,
'purchaseOrder.danjuleixing'
:
'单据类型'
,
'purchaseOrder.caigoushouhuodan'
:
'采购收货单'
,
'purchaseOrder.qingshurudanju'
:
'请输入单据摘要'
,
'purchaseOrder.danjushijian'
:
'单据时间'
,
'purchaseOrder.duiyingcangku'
:
'对应仓库'
,
'purchaseOrder.cangkurenyuan'
:
'仓库人员'
,
'purchaseOrder.beizhu'
:
'备注'
,
'purchaseOrder.xiangguanxinxi'
:
'相关信息'
,
'purchaseOrder.duiyingdanju'
:
'对应单据'
,
'purchaseOrder.peisongfangshi'
:
'配送方式'
,
'purchaseOrder.guanliandanju'
:
'关联单据'
,
'purchaseOrder.fahuodizhi'
:
'发货地址'
,
'purchaseOrder.huiyuanmingcheng'
:
'会员名称'
,
'purchaseOrder.danjumingxi'
:
'单据明细'
,
'purchaseOrder.wuliu'
:
'物流'
,
'purchaseOrder.ziti'
:
'自提'
,
'purchaseOrder.wuxupeisong'
:
'无需配送'
,
'purchaseOrder.shuzhijingduyi'
:
'数值精度溢出'
,
'purchaseOrder.bixutianxie'
:
'必须填写'
,
'purchaseOrder.caigoushuliangjin'
:
'采购数量仅限三位小数'
,
'purchaseOrder.danjiajinxiansi'
:
'单价仅限四位小数'
,
'purchaseOrder.zitidizhi'
:
'自提地址'
,
'purchaseOrder.danjuzhaiyao'
:
'单据摘要'
,
'purchaseOrder.baocun'
:
'保存'
,
'purchaseOrder.shanchu'
:
'删除'
,
'purchaseOrder.qingwanshancaigou'
:
'请完善采购收货单商品数据'
,
'saleOrder.daochuerweima'
:
'导出二维码'
,
'saleOrder.tijiaoshenhe'
:
'提交审核'
,
...
...
@@ -489,6 +526,46 @@ export default {
'saleOrder.xuanze'
:
'选择'
,
'saleOrder.danjumingxi'
:
'单据明细'
,
'saleOrder.xiangguanxinxi'
:
'相关信息'
,
'saleOrder.dinggoushuliang'
:
'订购数量'
,
'saleOrder.danjia(yuan)'
:
'单价(元)'
,
'saleOrder.fahuoshuliang'
:
'发货数量'
,
'saleOrder.fahuojine'
:
'发货金额(元)'
,
'saleOrder.jibenxinxi'
:
'基本信息'
,
'saleOrder.danjuleixing'
:
'单据类型'
,
'saleOrder.xiaoshoufahuodan'
:
'销售发货单'
,
'saleOrder.danjuzhaiyao'
:
'单据摘要'
,
'saleOrder.qingshurudanju'
:
'请输入单据摘要'
,
'saleOrder.duiyingcangku'
:
'对应仓库'
,
'saleOrder.cangkurenyuan'
:
'仓库人员'
,
'saleOrder.beizhu'
:
'备注'
,
'saleOrder.duiyingdanju'
:
'对应单据'
,
'saleOrder.guanliandanju'
:
'关联单据'
,
'saleOrder.shouhuodizhi'
:
'收货地址'
,
'saleOrder.wuliu'
:
'物流'
,
'saleOrder.ziti'
:
'自提'
,
'saleOrder.wuxupeisong'
:
'无需配送'
,
'saleOrder.shuzhijingduyi'
:
'数值精度溢出'
,
'saleOrder.bixutianxie'
:
'必须填写'
,
'saleOrder.caigoushuliangjin'
:
'采购数量仅限三位小数'
,
'saleOrder.danjiajinxiansi'
:
'单价仅限四位小数'
,
'saleOrder.zitidizhi'
:
'自提地址'
,
'saleOrder.xuanzeshangpin'
:
'选择商品'
,
'saleOrder.zongxiangshu'
:
'总箱数'
,
'saleOrder.zongzhongliang'
:
'总重量'
,
'saleOrder.zongtiji'
:
'总体积'
,
'saleOrder.shuliang'
:
'数量'
,
'saleOrder.xiangshu'
:
'箱数'
,
'saleOrder.zhongliang'
:
'重量'
,
'saleOrder.tiji'
:
'体积'
,
'saleOrder.wuliufuwushang'
:
'物流服务商'
,
'saleOrder.fahuodizhi'
:
'发货地址'
,
'saleOrder.duiyingfahuodan'
:
'对应发货单号'
,
'saleOrder.duiyingdingdanhao'
:
'对应订单号/售后单'
,
'saleOrder.shouhuofang'
:
'收货方'
,
'saleOrder.wuliudanmingxi'
:
'物流单明细'
,
'saleOrder.yunfeixinxi'
:
'运费信息'
,
'saleOrder.yunfei'
:
'运费'
,
'saleOrder.jiesuanfangshi'
:
'结算方式'
,
// 请购单
...
...
@@ -590,4 +667,5 @@ export default {
'purchaseRequisition.xinzengqinggoudan'
:
'新增请购单'
,
'purchaseRequisition.baocun'
:
'保存'
,
'purchaseRequisition.laiyuanshangcheng'
:
'来源商城'
,
}
src/pages/transaction/purchaseOrder/addPurchaseReceiveOrder/components/memberModalTable/index.tsx
deleted
100644 → 0
View file @
441c2c1b
import
React
,
{
useEffect
}
from
'react'
import
ModalTable
,
{
ModalTableProps
}
from
'@/components/ModalTable'
import
{
fetchOrderApi
}
from
'../../apis'
import
{
useModalTable
}
from
'../../model/useModalTable'
import
{
ISchemaFormActions
,
ISchemaFormAsyncActions
}
from
'@formily/antd'
import
{
memberColumns
}
from
'../../constant'
import
{
useIntl
}
from
'umi'
export
interface
MemberModalTableProps
extends
ModalTableProps
{
type
?:
'radio'
|
'checkbox'
,
schemaAction
:
ISchemaFormActions
|
ISchemaFormAsyncActions
,
currentRef
?:
any
,
confirmModal
?(),
productRef
?:
any
,
}
const
MemberModalTable
:
React
.
FC
<
MemberModalTableProps
>
=
(
props
)
=>
{
const
{
type
=
'radio'
,
schemaAction
,
confirmModal
,
currentRef
,
...
restProps
}
=
props
const
{
visible
,
setVisible
,
rowSelection
,
rowSelectionCtl
}
=
useModalTable
({
type
,
customKey
:
'memberId'
})
const
intl
=
useIntl
()
useEffect
(()
=>
{
if
(
currentRef
)
{
currentRef
.
current
=
{
setVisible
,
visible
,
rowSelectionCtl
}
}
},
[])
useEffect
(()
=>
{
if
(
visible
)
{
const
memberId
=
schemaAction
.
getFieldValue
(
'vendorMemberId'
)
rowSelectionCtl
.
setSelectedRowKeys
([
memberId
])
}
},
[
visible
])
const
handleConfirm
=
()
=>
{
const
rowItem
=
rowSelectionCtl
.
selectRow
[
0
]
console
.
log
(
rowItem
,
'row'
)
if
(
rowItem
)
{
schemaAction
.
setFieldValue
(
'vendorRoleId'
,
rowItem
.
roleId
)
schemaAction
.
setFieldValue
(
'vendorMemberId'
,
rowItem
.
memberId
)
schemaAction
.
setFieldValue
(
'vendorMemberName'
,
rowItem
.
name
)
}
confirmModal
&&
confirmModal
()
setVisible
(
false
)
}
return
(
<
ModalTable
modalTitle=
{
intl
.
formatMessage
({
id
:
'purchaseRequisition.xuanzegongyinghui'
,
defaultMessage
:
'选择供应会员'
})
}
columns=
{
memberColumns
}
visible=
{
visible
}
confirm=
{
handleConfirm
}
cancel=
{
()
=>
setVisible
(
false
)
}
fetchTableData=
{
(
params
)
=>
fetchOrderApi
.
getMemberListByMemberName
({...
params
})
}
rowSelection=
{
rowSelection
}
modalType=
'memberByDefault'
tableProps=
{
{
rowKey
:
'memberId'
}
}
{
...
restProps
}
/>
)
}
MemberModalTable
.
defaultProps
=
{}
export
default
MemberModalTable
src/pages/transaction/purchaseOrder/addPurchaseReceiveOrder/components/
material
TableCell/index.tsx
→
src/pages/transaction/purchaseOrder/addPurchaseReceiveOrder/components/
product
TableCell/index.tsx
View file @
36b1d871
...
...
@@ -5,7 +5,7 @@ import { FormDetailContext } from '@/formSchema/context';
import
{
getLogisticsSelectListMemberShipperAddress
}
from
'@/services/LogisticsV2Api'
;
import
{
useIntl
}
from
'umi'
;
export
interface
Material
TableCellProps
{
export
interface
Product
TableCellProps
{
title
:
React
.
ReactNode
;
editable
:
boolean
;
children
:
React
.
ReactNode
;
...
...
@@ -19,7 +19,7 @@ export interface MaterialTableCellProps {
const
EditableContext
=
React
.
createContext
<
any
>
({});
export
const
Material
EditableRow
:
React
.
FC
<
any
>
=
({...
props
})
=>
{
export
const
Product
EditableRow
:
React
.
FC
<
any
>
=
({...
props
})
=>
{
const
[
form
]
=
Form
.
useForm
();
const
ctx
=
{
...
...
@@ -35,7 +35,7 @@ export const MaterialEditableRow: React.FC<any> = ({...props }) => {
};
export
const
MaterialTableCell
:
React
.
FC
<
Material
TableCellProps
>
=
({
export
const
ProductTableCell
:
React
.
FC
<
Product
TableCellProps
>
=
({
title
,
editable
,
children
,
...
...
@@ -118,7 +118,7 @@ export const MaterialTableCell:React.FC<MaterialTableCellProps> = ({
onChange=
{
(
value
,
option
)
=>
change
(
value
,
option
,
dataIndex
)
}
id=
{
dataIndex
+
record
.
id
}
className=
"purchase_logistic_select"
options=
{
[{
label
:
intl
.
formatMessage
({
id
:
'purchase
Requisition.wuliu'
,
defaultMessage
:
'物流'
}),
value
:
1
},
{
label
:
intl
.
formatMessage
({
id
:
'purchaseRequisition.ziti'
,
defaultMessage
:
'自提'
}),
value
:
2
},
{
label
:
intl
.
formatMessage
({
id
:
'purchaseRequisition
.wuxupeisong'
,
defaultMessage
:
'无需配送'
}),
value
:
3
}]
}
options=
{
[{
label
:
intl
.
formatMessage
({
id
:
'purchase
Order.wuliu'
,
defaultMessage
:
'物流'
}),
value
:
1
},
{
label
:
intl
.
formatMessage
({
id
:
'purchaseOrder.ziti'
,
defaultMessage
:
'自提'
}),
value
:
2
},
{
label
:
intl
.
formatMessage
({
id
:
'purchaseOrder
.wuxupeisong'
,
defaultMessage
:
'无需配送'
}),
value
:
3
}]
}
{
...
formItemProps
}
/>
}
...
...
@@ -130,7 +130,7 @@ export const MaterialTableCell:React.FC<MaterialTableCellProps> = ({
try
{
let
_value
=
Number
(
value
)
if
(
_value
>
Number
.
MAX_SAFE_INTEGER
)
{
throw
new
Error
(
intl
.
formatMessage
({
id
:
'purchase
Requisition
.shuzhijingduyi'
,
defaultMessage
:
'数值精度溢出'
}))
throw
new
Error
(
intl
.
formatMessage
({
id
:
'purchase
Order
.shuzhijingduyi'
,
defaultMessage
:
'数值精度溢出'
}))
}
callback
()
}
catch
(
err
)
{
...
...
@@ -148,11 +148,11 @@ export const MaterialTableCell:React.FC<MaterialTableCellProps> = ({
rules=
{
dataIndex
===
'quantity'
?
[
{
required
:
true
,
message
:
`${title}${intl.formatMessage({ id: 'purchase
Requisition
.bixutianxie', defaultMessage: '必须填写' })}`
,
message
:
`${title}${intl.formatMessage({ id: 'purchase
Order
.bixutianxie', defaultMessage: '必须填写' })}`
,
},
{
pattern
:
/^
\d
+
(\.\d
{1,3}
)?
$/
,
message
:
intl
.
formatMessage
({
id
:
'purchase
Requisition
.caigoushuliangjin'
,
defaultMessage
:
'采购数量仅限三位小数'
}),
message
:
intl
.
formatMessage
({
id
:
'purchase
Order
.caigoushuliangjin'
,
defaultMessage
:
'采购数量仅限三位小数'
}),
},
{
validator
:
validatorNumber
...
...
@@ -160,7 +160,7 @@ export const MaterialTableCell:React.FC<MaterialTableCellProps> = ({
]
:
[
{
pattern
:
/^
\d
+
(\.\d
{1,4}
)?
$/
,
message
:
intl
.
formatMessage
({
id
:
'purchase
Requisition
.danjiajinxiansi'
,
defaultMessage
:
'单价仅限四位小数'
}),
message
:
intl
.
formatMessage
({
id
:
'purchase
Order
.danjiajinxiansi'
,
defaultMessage
:
'单价仅限四位小数'
}),
},
{
validator
:
validatorNumber
...
...
@@ -175,7 +175,7 @@ export const MaterialTableCell:React.FC<MaterialTableCellProps> = ({
<
Popover
content=
{
<
Row
>
<
div
>
<
h3
><
EnvironmentOutlined
/>
{
intl
.
formatMessage
({
id
:
'purchase
Requisition
.zitidizhi'
,
defaultMessage
:
'自提地址'
})
}
</
h3
>
<
h3
><
EnvironmentOutlined
/>
{
intl
.
formatMessage
({
id
:
'purchase
Order
.zitidizhi'
,
defaultMessage
:
'自提地址'
})
}
</
h3
>
{
receiveInfo
&&
<>
<
p
>
{
receiveInfo
.
shipperName
}
/
{
receiveInfo
.
phone
}
</
p
>
...
...
@@ -196,6 +196,6 @@ export const MaterialTableCell:React.FC<MaterialTableCellProps> = ({
return
<
td
{
...
restProps
}
>
{
childNode
}
</
td
>;
}
Material
TableCell
.
defaultProps
=
{}
Product
TableCell
.
defaultProps
=
{}
export
default
Material
TableCell
export
default
Product
TableCell
src/pages/transaction/purchaseOrder/addPurchaseReceiveOrder/constant/index.tsx
View file @
36b1d871
...
...
@@ -49,63 +49,10 @@ export const procurementProcessField = (value) => {
return
value
}
// 会员列
export
const
memberColumns
:
any
[]
=
[
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.huiyuanID'
,
defaultMessage
:
'会员ID'
}),
dataIndex
:
'memberId'
,
align
:
'center'
,
key
:
'memberId'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.huiyuanmingcheng'
,
defaultMessage
:
'会员名称'
}),
dataIndex
:
'name'
,
align
:
'center'
,
key
:
'name'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.gongsileixing'
,
defaultMessage
:
'公司类型'
}),
dataIndex
:
'memberTypeName'
,
align
:
'center'
,
key
:
'memberTypeName'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.gongsijuese'
,
defaultMessage
:
'公司角色'
}),
dataIndex
:
'roleName'
,
align
:
'center'
,
key
:
'roleName'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.gongsidengji'
,
defaultMessage
:
'公司等级'
}),
dataIndex
:
'levelTag'
,
align
:
'center'
,
key
:
'levelTag'
,
},
]
const
intl
=
getIntl
()
//组织机构部门列
export
const
departmentColumns
:
any
[]
=
[
{
title
:
'Id'
,
dataIndex
:
'id'
,
key
:
'id'
,
className
:
'commonHide'
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.jigoudaima'
,
defaultMessage
:
'机构代码'
}),
dataIndex
:
'code'
,
key
:
'code'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.jigoumingcheng'
,
defaultMessage
:
'机构名称'
}),
dataIndex
:
'title'
,
key
:
'title'
,
},
]
// 合同下单 物料列表
export
const
materialInfoColumns
:
any
[]
=
[
// 商品列表
export
const
productInfoColumns
:
any
[]
=
[
{
title
:
'ID'
,
dataIndex
:
'id'
,
...
...
@@ -114,67 +61,59 @@ export const materialInfoColumns: any[] = [
className
:
'commonHide'
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.wuliaobianhao'
,
defaultMessage
:
'物料编号'
}),
dataIndex
:
'code'
,
align
:
'center'
,
key
:
'code'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.wuliaomingcheng'
,
defaultMessage
:
'物料名称'
}),
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder.shangpinmingcheng'
,
defaultMessage
:
'商品名称'
}),
dataIndex
:
'name'
,
align
:
'center'
,
key
:
'name'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.guigexinghao'
,
defaultMessage
:
'规格型号'
}),
dataIndex
:
'type'
,
align
:
'center'
,
key
:
'type'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.pinlei'
,
defaultMessage
:
'品类'
}),
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder.pinlei'
,
defaultMessage
:
'品类'
}),
dataIndex
:
'category'
,
align
:
'center'
,
key
:
'category'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition
.pinpai'
,
defaultMessage
:
'品牌'
}),
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder
.pinpai'
,
defaultMessage
:
'品牌'
}),
dataIndex
:
'brand'
,
align
:
'center'
,
key
:
'brand'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition
.danwei'
,
defaultMessage
:
'单位'
}),
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder
.danwei'
,
defaultMessage
:
'单位'
}),
dataIndex
:
'unit'
,
align
:
'center'
,
key
:
'unit'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.yugudanjia'
,
defaultMessage
:
'预估单价(元)'
}),
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder.dinggoushuliang'
,
defaultMessage
:
'订购数量'
}),
dataIndex
:
'quantity'
,
align
:
'center'
,
key
:
'quantity'
,
},
{
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder.danjia(yuan)'
,
defaultMessage
:
'单价(元)'
}),
dataIndex
:
'price'
,
align
:
'left'
,
key
:
'price'
,
formItem
:
'input'
,
editable
:
true
,
// render: (t) => `¥${t.toFixed(2)}`
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.shuliang'
,
defaultMessage
:
'
数量'
}),
dataIndex
:
'
quantity
'
,
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder.fahuoshuliang'
,
defaultMessage
:
'发货
数量'
}),
dataIndex
:
'
count
'
,
align
:
'center'
,
key
:
'
quantity
'
,
key
:
'
count
'
,
formItem
:
'input'
,
editable
:
true
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.yugujine'
,
defaultMessage
:
'预估
金额(元)'
}),
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder.fahuojine'
,
defaultMessage
:
'发货
金额(元)'
}),
dataIndex
:
'amount'
,
align
:
'center'
,
key
:
'amount'
,
// render: (t, r) => t ? `${Number(t).toFixed(2)}` : null
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition
.caozuo'
,
defaultMessage
:
'操作'
}),
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder
.caozuo'
,
defaultMessage
:
'操作'
}),
dataIndex
:
'ctl'
,
align
:
'center'
,
key
:
'ctl'
,
...
...
src/pages/transaction/purchaseOrder/addPurchaseReceiveOrder/index.tsx
View file @
36b1d871
import
React
,
{
use
Ref
,
use
State
,
useEffect
}
from
'react'
import
React
,
{
useState
,
useEffect
}
from
'react'
import
{
history
,
useIntl
}
from
'umi'
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
import
{
Button
,
Col
,
message
,
Row
}
from
'antd'
import
{
createFormActions
,
registerVirtualBox
,
useFormSpy
}
from
'@formily/antd'
import
{
SaveOutlined
,
LinkOutlined
}
from
'@ant-design/icons'
import
{
Button
,
message
}
from
'antd'
import
{
createFormActions
}
from
'@formily/antd'
import
{
SaveOutlined
}
from
'@ant-design/icons'
import
NiceForm
from
'@/components/NiceForm'
import
{
increaseSchema
}
from
'./schema'
import
{
useMaterialTableChangeForAmount
}
from
'./effects'
import
{
procurementProcessField
,
procurementRenderField
,
procurmentRenderInit
}
from
'./constant'
import
{
useUpdate
}
from
'@umijs/hooks'
import
{
help
}
from
'../../common'
import
{
useMaterialTable
}
from
'./model/useMaterialTable'
import
MemberModalTable
from
'./components/memberModalTable'
import
styled
from
'styled-components'
import
{
useProductTable
}
from
'./model/useProductTable'
import
FormDetailHeader
from
'@/components/FormDetailHeader'
import
FormDetailWrapper
from
'@/components/FormDetailWrapper'
import
{
FormDetailContext
}
from
'@/formSchema/context'
...
...
@@ -21,40 +19,8 @@ import { getPurchaseRequisitionDetail, postPurchaseRequisitionCreate, postPurcha
const
addSchemaAction
=
createFormActions
()
const
RowStyle
=
styled
(
props
=>
<
Row
style=
{
{
marginTop
:
12
,
justifyContent
:
"flex-end"
}
}
justify=
'end'
{
...
props
}
>
{
props
.
children
}
</
Row
>)
`
.ant-col {
text-align: center
}
.ant-col div {
margin-bottom: 12px;
}
`
// 总计金额联动框
export
const
MoneyTotalBox
=
registerVirtualBox
(
'moneyTotalBox'
,
()
=>
{
const
intl
=
useIntl
()
const
{
form
}
=
useFormSpy
({
selector
:
[[
'onFieldValueChange'
,
'products'
]],
reducer
:
v
=>
v
})
const
data
=
form
.
getFieldValue
(
'products'
)
const
sum
=
data
.
reduce
((
prev
,
next
)
=>
(
prev
*
1000
+
(
next
.
amount
||
0
)
*
1000
)
/
1000
,
0
)
const
total
=
data
.
reduce
((
prev
,
next
)
=>
(
prev
*
1000
+
(
next
.
quantity
||
0
)
*
1000
)
/
1000
,
0
)
return
<
RowStyle
>
<
Col
span=
{
2
}
>
<
div
>
{
intl
.
formatMessage
({
id
:
'purchaseRequisition.shuliangheji'
,
defaultMessage
:
'数量合计'
})
}
</
div
>
<
div
>
{
total
.
toFixed
(
2
)
}
</
div
>
</
Col
>
<
Col
span=
{
2
}
>
<
div
>
{
intl
.
formatMessage
({
id
:
'purchaseRequisition.jinezongji'
,
defaultMessage
:
'金额总计'
})
}
</
div
>
<
div
>
{
`${intl.formatMessage({id: 'commodity.products.directChannel.columns.currency'})}${(sum).toFixed(2)}`
}
</
div
>
</
Col
>
</
RowStyle
>
})
/** 新增采购收货单 */
const
AddPurchaseReceiveOrder
:
React
.
FC
<
{}
>
=
()
=>
{
const
memberRef
=
useRef
<
any
>
({})
const
[
formLoading
,
setFormLoading
]
=
useState
(
false
)
const
[
btnLoading
,
setBtnLoading
]
=
useState
(
false
)
const
update
=
useUpdate
()
...
...
@@ -64,7 +30,7 @@ const AddPurchaseReceiveOrder: React.FC<{}> = () => {
const
intl
=
useIntl
()
// 请购单物料
const
{
materialColumns
,
materialComponents
}
=
useMaterial
Table
(
addSchemaAction
)
const
{
productColumns
,
productComponents
}
=
useProduct
Table
(
addSchemaAction
)
useEffect
(()
=>
{
if
(
id
)
{
...
...
@@ -89,7 +55,7 @@ const AddPurchaseReceiveOrder: React.FC<{}> = () => {
const
params
=
{
...
value
}
console
.
log
(
value
)
if
(
formContext
.
innerFormErrors
)
{
throw
new
Error
(
intl
.
formatMessage
({
id
:
'purchase
Requisition.qingwanshandingdan'
,
defaultMessage
:
'请完善订单物料
数据'
}))
throw
new
Error
(
intl
.
formatMessage
({
id
:
'purchase
Order.qingwanshancaigou'
,
defaultMessage
:
'请完善采购收货单商品
数据'
}))
}
// 校验采购数量
const
judgementByCount
=
params
.
products
?.
length
&&
params
.
products
.
map
(
item
=>
{
...
...
@@ -100,7 +66,7 @@ const AddPurchaseReceiveOrder: React.FC<{}> = () => {
}
})
if
(
!
judgementByCount
||
judgementByCount
.
includes
(
false
)){
throw
new
Error
(
intl
.
formatMessage
({
id
:
'purchaseRequisition.qingtianxieshangpin'
,
defaultMessage
:
'请填写商品采购数量'
})
)
throw
new
Error
(
'请填写商品采购数量'
)
}
setBtnLoading
(
true
)
...
...
@@ -125,13 +91,6 @@ const AddPurchaseReceiveOrder: React.FC<{}> = () => {
}
}
// 选择会员弹窗
const
handleOrderMember
=
()
=>
{
memberRef
.
current
.
setVisible
(
true
)
}
const
memberBtn
=
<
div
className=
'connectBtn'
onClick=
{
handleOrderMember
}
><
LinkOutlined
style=
{
{
marginRight
:
4
}
}
/>
{
intl
.
formatMessage
({
id
:
'saleOrder.xuanze'
,
defaultMessage
:
'选择'
})
}
</
div
>
const
providerValue
=
{
schemaActions
:
addSchemaAction
,
formContext
,
...
...
@@ -140,11 +99,11 @@ const AddPurchaseReceiveOrder: React.FC<{}> = () => {
return
(<
div
>
<
FormDetailContext
.
Provider
value=
{
providerValue
}
>
<
FormDetailHeader
title=
{
id
?
intl
.
formatMessage
({
id
:
'
saleOrder.bianjixiaoshoufahuodan'
,
defaultMessage
:
'编辑销售发货单'
})
:
intl
.
formatMessage
({
id
:
'saleOrder.xinzengxiaoshoufahuodan
'
,
defaultMessage
:
'新增销售发货单'
})
}
title=
{
id
?
intl
.
formatMessage
({
id
:
'
purchaseOrder.bianjixiaoshoufa'
,
defaultMessage
:
'编辑销售发货单'
})
:
intl
.
formatMessage
({
id
:
'purchaseOrder.xinzengxiaoshoufa
'
,
defaultMessage
:
'新增销售发货单'
})
}
schema=
{
increaseSchema
}
extraRight=
{
[
<
Button
key=
"1"
onClick=
{
()
=>
addSchemaAction
.
submit
()
}
loading=
{
btnLoading
}
type=
"primary"
icon=
{
<
SaveOutlined
/>
}
>
{
intl
.
formatMessage
({
id
:
'
sal
eOrder.baocun'
,
defaultMessage
:
'保存'
})
}
{
intl
.
formatMessage
({
id
:
'
purchas
eOrder.baocun'
,
defaultMessage
:
'保存'
})
}
</
Button
>,
]
}
/>
...
...
@@ -167,9 +126,8 @@ const AddPurchaseReceiveOrder: React.FC<{}> = () => {
}
}
expressionScope=
{
{
memberBtn
,
materialColumns
,
materialComponents
,
productColumns
,
productComponents
,
help
,
}
}
/>
...
...
@@ -177,8 +135,6 @@ const AddPurchaseReceiveOrder: React.FC<{}> = () => {
</
FormDetailWrapper
>
</
FormDetailContext
.
Provider
>
{
/* 选择供应会员 */
}
<
MemberModalTable
currentRef=
{
memberRef
}
schemaAction=
{
addSchemaAction
}
/>
</
div
>)
}
...
...
src/pages/transaction/purchaseOrder/addPurchaseReceiveOrder/model/use
Material
Table.tsx
→
src/pages/transaction/purchaseOrder/addPurchaseReceiveOrder/model/use
Product
Table.tsx
View file @
36b1d871
import
{
useState
}
from
'react'
import
{
ISchemaFormActions
,
ISchemaFormAsyncActions
}
from
'@formily/antd'
;
import
{
Button
}
from
'antd'
;
import
{
material
InfoColumns
}
from
'../constant'
;
import
MaterialTableCell
,
{
MaterialEditableRow
}
from
'../components/material
TableCell'
;
import
{
product
InfoColumns
}
from
'../constant'
;
import
ProductTableCell
,
{
ProductEditableRow
}
from
'../components/product
TableCell'
;
import
{
useIntl
}
from
'umi'
;
...
...
@@ -14,7 +14,7 @@ export const getUnitPriceTotal = (record) => {
/**
* @param ctx schemaAction
*/
export
const
use
Material
Table
=
(
ctx
:
ISchemaFormActions
|
ISchemaFormAsyncActions
)
=>
{
export
const
use
Product
Table
=
(
ctx
:
ISchemaFormActions
|
ISchemaFormAsyncActions
)
=>
{
const
intl
=
useIntl
()
const
handleDelete
=
(
record
)
=>
{
...
...
@@ -25,17 +25,17 @@ export const useMaterialTable = (ctx: ISchemaFormActions | ISchemaFormAsyncActio
ctx
.
setFieldValue
(
'products'
,
newData
)
}
const
[
materialColumns
,
setMaterial
Columns
]
=
useState
(()
=>
{
const
[
productColumns
,
setProduct
Columns
]
=
useState
(()
=>
{
// 渲染操作
materialInfoColumns
[
materialInfoColumns
.
length
-
1
].
render
=
(
text
,
record
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
handleDelete
(
record
)
}
>
{
intl
.
formatMessage
({
id
:
'purchaseRequisition
.shanchu'
,
defaultMessage
:
'删除'
})
}
</
Button
>
materialInfoColumns
[
material
InfoColumns
.
length
-
2
].
render
=
(
t
,
r
)
=>
r
.
amount
&&
<
span
style=
{
{
color
:
'red'
}
}
>
{
intl
.
formatMessage
({
id
:
'commodity.products.directChannel.columns.currency'
})
}
{
Number
(
r
.
amount
).
toFixed
(
2
)
}
</
span
>
return
material
InfoColumns
productInfoColumns
[
productInfoColumns
.
length
-
1
].
render
=
(
text
,
record
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
handleDelete
(
record
)
}
>
{
intl
.
formatMessage
({
id
:
'purchaseOrder
.shanchu'
,
defaultMessage
:
'删除'
})
}
</
Button
>
// productInfoColumns[product
InfoColumns.length - 2].render = (t, r) => r.amount && <span style={{color: 'red'}}>{intl.formatMessage({ id: 'commodity.products.directChannel.columns.currency'})} {Number(r.amount).toFixed(2)}</span>
return
product
InfoColumns
})
const
material
Components
=
{
const
product
Components
=
{
body
:
{
row
:
Material
EditableRow
,
cell
:
Material
TableCell
row
:
Product
EditableRow
,
cell
:
Product
TableCell
}
}
...
...
@@ -55,7 +55,7 @@ export const useMaterialTable = (ctx: ISchemaFormActions | ISchemaFormAsyncActio
})
};
const
materialMergeColumns
=
material
Columns
.
map
(
col
=>
{
const
productMergeColumns
=
product
Columns
.
map
(
col
=>
{
if
(
!
col
.
editable
)
{
return
col
;
}
...
...
@@ -74,7 +74,7 @@ export const useMaterialTable = (ctx: ISchemaFormActions | ISchemaFormAsyncActio
})
return
{
materialColumns
:
material
MergeColumns
,
material
Components
,
productColumns
:
product
MergeColumns
,
product
Components
,
}
}
src/pages/transaction/purchaseOrder/addPurchaseReceiveOrder/schema/index.ts
View file @
36b1d871
...
...
@@ -2,13 +2,15 @@ import { ISchema } from '@formily/antd';
import
moment
from
'moment'
import
{
getIntl
}
from
'umi'
;
const
intl
=
getIntl
()
// 基本信息
const
basicInfo
:
ISchema
=
{
"x-index"
:
0
,
type
:
'object'
,
"x-component"
:
'MellowCard'
,
"x-component-props"
:
{
title
:
'基本信息'
,
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder.jibenxinxi'
,
defaultMessage
:
'基本信息'
})
,
id
:
'basicInfo'
,
},
properties
:
{
...
...
@@ -27,17 +29,17 @@ const basicInfo: ISchema = {
properties
:
{
receiptsType
:
{
type
:
'string'
,
title
:
'单据类型'
,
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder.danjuleixing'
,
defaultMessage
:
'单据类型'
})
,
"x-component"
:
'text'
,
default
:
'采购收货单'
,
default
:
intl
.
formatMessage
({
id
:
'purchaseOrder.caigoushouhuodan'
,
defaultMessage
:
'采购收货单'
})
,
},
digest
:
{
type
:
'string'
,
title
:
'单据摘要'
,
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder.danjuzhaiyao'
,
defaultMessage
:
'单据摘要'
})
,
"x-rules"
:
[
{
required
:
true
,
message
:
'请输入单据摘要'
message
:
intl
.
formatMessage
({
id
:
'purchaseOrder.qingshurudanju'
,
defaultMessage
:
'请输入单据摘要'
})
},
{
limitByte
:
true
,
...
...
@@ -51,7 +53,7 @@ const basicInfo: ISchema = {
deliverTime
:
{
type
:
'string'
,
"x-component"
:
'date'
,
title
:
'单据时间'
,
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder.danjushijian'
,
defaultMessage
:
'单据时间'
})
,
required
:
true
,
"x-component-props"
:
{
disabledDate
:
current
=>
{
...
...
@@ -65,7 +67,7 @@ const basicInfo: ISchema = {
},
purpose
:
{
type
:
'string'
,
title
:
'对应仓库'
,
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder.duiyingcangku'
,
defaultMessage
:
'对应仓库'
})
,
"x-rules"
:
[
{
limitByte
:
true
,
...
...
@@ -78,7 +80,7 @@ const basicInfo: ISchema = {
},
purpose1
:
{
type
:
'string'
,
title
:
'仓库人员'
,
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder.cangkurenyuan'
,
defaultMessage
:
'仓库人员'
})
,
"x-rules"
:
[
{
limitByte
:
true
,
...
...
@@ -91,7 +93,7 @@ const basicInfo: ISchema = {
},
remark
:
{
type
:
'string'
,
title
:
'备注'
,
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder.beizhu'
,
defaultMessage
:
'备注'
})
,
"x-rules"
:
[
{
limitByte
:
true
,
...
...
@@ -111,7 +113,7 @@ const relatedInfo: ISchema = {
type
:
'object'
,
"x-component"
:
'MellowCard'
,
"x-component-props"
:
{
title
:
'相关信息'
,
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder.xiangguanxinxi'
,
defaultMessage
:
'相关信息'
})
,
id
:
'relatedInfo'
,
},
properties
:
{
...
...
@@ -130,27 +132,27 @@ const relatedInfo: ISchema = {
properties
:
{
receipts
:
{
type
:
'string'
,
title
:
'对应单据'
,
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder.duiyingdanju'
,
defaultMessage
:
'对应单据'
})
,
"x-component"
:
'text'
,
},
delivery
:
{
type
:
'string'
,
title
:
'配送方式'
,
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder.peisongfangshi'
,
defaultMessage
:
'配送方式'
})
,
"x-component"
:
'text'
,
},
orderNo
:
{
type
:
'string'
,
title
:
'关联单据'
,
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder.guanliandanju'
,
defaultMessage
:
'关联单据'
})
,
"x-component"
:
'text'
,
},
address
:
{
type
:
'string'
,
title
:
'发货地址'
,
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder.fahuodizhi'
,
defaultMessage
:
'发货地址'
})
,
"x-component"
:
'text'
,
},
memberName
:
{
type
:
'string'
,
title
:
'会员名称'
,
title
:
intl
.
formatMessage
({
id
:
'purchaseOrder.huiyuanmingcheng'
,
defaultMessage
:
'会员名称'
})
,
"x-component"
:
'text'
,
},
}
...
...
@@ -165,7 +167,7 @@ const material: ISchema = {
type
:
'object'
,
"x-component"
:
'MellowCard'
,
"x-component-props"
:
{
title
:
getIntl
().
formatMessage
({
id
:
'sal
eOrder.danjumingxi'
,
defaultMessage
:
'单据明细'
}),
title
:
intl
.
formatMessage
({
id
:
'purchas
eOrder.danjumingxi'
,
defaultMessage
:
'单据明细'
}),
id
:
'orderMaterial'
,
},
properties
:
{
...
...
@@ -175,14 +177,10 @@ const material: ISchema = {
required
:
true
,
"x-component-props"
:
{
rowKey
:
'id'
,
columns
:
"{{
material
Columns}}"
,
components
:
"{{
material
Components}}"
,
columns
:
"{{
product
Columns}}"
,
components
:
"{{
product
Components}}"
,
},
},
NO_SUBMIT_SPY
:
{
type
:
'object'
,
"x-component"
:
"moneyTotalBox"
}
}
}
...
...
src/pages/transaction/purchaseOrder/addPurchaseReceiveOrder/schema/modal.ts
View file @
36b1d871
...
...
@@ -5,7 +5,7 @@ import { getIntl } from 'umi';
/**
* 新增采购请购单 选择物料的筛选
*/
export
const
addRequesitionMaterialSchema
:
ISchema
=
{
export
const
addRequesitionMaterialSchema
:
ISchema
=
{
type
:
'object'
,
properties
:
{
code
:
{
...
...
src/pages/transaction/saleOrder/addLogisticsOrder/constant/index.tsx
View file @
36b1d871
...
...
@@ -106,7 +106,7 @@ export const procurementProcessField = (value) => {
return
value
}
const
intl
=
getIntl
()
// 商品列表
export
const
productInfoColumns
:
any
[]
=
[
{
...
...
@@ -116,49 +116,31 @@ export const productInfoColumns: any[] = [
key
:
'id'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseOrder.orderCollect.constant.productName'
}),
title
:
intl
.
formatMessage
({
id
:
'saleOrder.shangpinmingcheng'
,
defaultMessage
:
'商品名称'
}),
dataIndex
:
'productName'
,
align
:
'center'
,
key
:
'productName'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseOrder.orderCollect.constant.category'
}),
title
:
intl
.
formatMessage
({
id
:
'saleOrder.pinlei'
,
defaultMessage
:
'品类'
}),
dataIndex
:
'category'
,
align
:
'center'
,
key
:
'category'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseOrder.orderCollect.constant.brand'
}),
title
:
intl
.
formatMessage
({
id
:
'saleOrder.pinpai'
,
defaultMessage
:
'品牌'
}),
dataIndex
:
'brand'
,
align
:
'center'
,
key
:
'brand'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseOrder.orderCollect.constant.unit'
}),
title
:
intl
.
formatMessage
({
id
:
'saleOrder.danwei'
,
defaultMessage
:
'单位'
}),
dataIndex
:
'unit'
,
align
:
'center'
,
key
:
'unit'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseOrder.orderCollect.constant.unitPrice'
}),
dataIndex
:
'unitPrice'
,
align
:
'left'
,
key
:
'unitPrice'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseOrder.orderCollect.constant.memberPrice'
}),
dataIndex
:
'memberPrice'
,
key
:
'memberPrice'
,
render
:
(
text
,
record
)
=>
record
.
isMemberPrice
&&
text
?
text
*
100
+
'%'
:
null
},
// {
// title: '库存',
// dataIndex: 'stockCount',
// align: 'center',
// key: 'stockCount',
// },
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseOrder.orderCollect.constant.purchaseCount'
}),
title
:
intl
.
formatMessage
({
id
:
'saleOrder.shuliang'
,
defaultMessage
:
'数量'
}),
dataIndex
:
'purchaseCount'
,
align
:
'center'
,
key
:
'purchaseCount'
,
...
...
@@ -167,42 +149,34 @@ export const productInfoColumns: any[] = [
width
:
140
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseOrder.orderCollect.constant.taxInclusive'
}),
dataIndex
:
'
taxInclusive
'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.xiangshu'
,
defaultMessage
:
'箱数'
}),
dataIndex
:
'
boxCount
'
,
align
:
'center'
,
key
:
'taxInclusive'
,
render
:
(
t
,
r
)
=>
r
.
taxRate
?
getIntl
().
formatMessage
({
id
:
'purchaseOrder.yes'
})
:
getIntl
().
formatMessage
({
id
:
'purchaseOrder.no'
}),
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseOrder.orderCollect.constant.taxRate'
}),
dataIndex
:
'taxRate'
,
align
:
'center'
,
key
:
'taxRate'
,
render
:
(
t
,
r
)
=>
t
?
`
${
t
}
%`
:
null
key
:
'boxCount'
,
formItem
:
'input'
,
editable
:
true
,
width
:
140
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseOrder.orderCollect.constant.money'
}),
dataIndex
:
'
money
'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.zhongliang'
,
defaultMessage
:
'重量'
}),
dataIndex
:
'
weight
'
,
align
:
'center'
,
key
:
'money'
,
key
:
'weight'
,
formItem
:
'input'
,
editable
:
true
,
width
:
140
},
// 接口调用
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseOrder.orderCollect.constant.deliveryType'
}),
dataIndex
:
'
deliveryTyp
e'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.tiji'
,
defaultMessage
:
'体积'
}),
dataIndex
:
'
volum
e'
,
align
:
'center'
,
key
:
'deliveryType'
,
render
:
(
t
,
r
)
=>
{
if
(
t
===
1
)
return
getIntl
().
formatMessage
({
id
:
'purchaseOrder.orderCollect.constant.deliveryType1'
})
else
if
(
t
===
2
)
return
<
AddressPop
pickInfo=
{
r
.
logistics
.
render
}
>
{
getIntl
().
formatMessage
({
id
:
'purchaseOrder.orderCollect.constant.deliveryType2'
})
}
</
AddressPop
>
else
if
(
t
===
3
)
return
getIntl
().
formatMessage
({
id
:
'purchaseOrder.orderCollect.constant.deliveryType3'
})
}
key
:
'volume'
,
formItem
:
'input'
,
editable
:
true
,
width
:
140
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseOrder.operation'
}),
title
:
intl
.
formatMessage
({
id
:
'saleOrder.caozuo'
,
defaultMessage
:
'操作'
}),
dataIndex
:
'ctl'
,
align
:
'center'
,
key
:
'ctl'
,
...
...
src/pages/transaction/saleOrder/addLogisticsOrder/index.tsx
View file @
36b1d871
...
...
@@ -42,12 +42,16 @@ export const MoneyTotalBox = registerVirtualBox('moneyTotalBox', () => {
return
<
RowStyle
>
<
Col
span=
{
2
}
>
<
div
>
{
intl
.
formatMessage
({
id
:
'
purchaseRequisition.shuliangheji'
,
defaultMessage
:
'数量合计
'
})
}
</
div
>
<
div
>
{
total
.
toFixed
(
2
)
}
</
div
>
<
div
>
{
intl
.
formatMessage
({
id
:
'
saleOrder.zongxiangshu'
,
defaultMessage
:
'总箱数
'
})
}
</
div
>
<
div
style=
{
{
fontSize
:
24
,
color
:
'#1F2C3D'
}
}
>
{
total
.
toFixed
(
2
)
}
</
div
>
</
Col
>
<
Col
span=
{
2
}
>
<
div
>
{
intl
.
formatMessage
({
id
:
'purchaseRequisition.jinezongji'
,
defaultMessage
:
'金额总计'
})
}
</
div
>
<
div
>
{
`${intl.formatMessage({id: 'commodity.products.directChannel.columns.currency'})}${(sum).toFixed(2)}`
}
</
div
>
<
div
>
{
intl
.
formatMessage
({
id
:
'saleOrder.zongzhongliang'
,
defaultMessage
:
'总重量'
})
}
(KG)
</
div
>
<
div
style=
{
{
fontSize
:
24
,
color
:
'#1F2C3D'
}
}
>
{
(
sum
).
toFixed
(
2
)
}
</
div
>
</
Col
>
<
Col
span=
{
2
}
>
<
div
>
{
intl
.
formatMessage
({
id
:
'saleOrder.zongtiji'
,
defaultMessage
:
'总体积'
})
}
(m³)
</
div
>
<
div
style=
{
{
fontSize
:
24
,
color
:
'#1F2C3D'
}
}
>
{
(
sum
).
toFixed
(
2
)
}
</
div
>
</
Col
>
</
RowStyle
>
})
...
...
@@ -131,7 +135,7 @@ const AddLogisticsOrder:React.FC<{}> = () => {
return
(<
div
>
<
FormDetailContext
.
Provider
value=
{
providerValue
}
>
<
FormDetailHeader
title=
{
id
?
intl
.
formatMessage
({
id
:
'saleOrder.
bianjixiaoshoufahuodan'
,
defaultMessage
:
'编辑销售发货单'
})
:
intl
.
formatMessage
({
id
:
'saleOrder.xinzengxiaoshoufahuodan'
,
defaultMessage
:
'新增销售发货
单'
})
}
title=
{
id
?
intl
.
formatMessage
({
id
:
'saleOrder.
xiugaiwuliudan'
,
defaultMessage
:
'修改物流单'
})
:
intl
.
formatMessage
({
id
:
'saleOrder.xinzengwuliudan'
,
defaultMessage
:
'新增物流
单'
})
}
schema=
{
increaseSchema
}
extraRight=
{
[
<
Button
key=
"1"
onClick=
{
()
=>
addSchemaAction
.
submit
()
}
loading=
{
btnLoading
}
type=
"primary"
icon=
{
<
SaveOutlined
/>
}
>
...
...
src/pages/transaction/saleOrder/addLogisticsOrder/model/useProductTable.tsx
View file @
36b1d871
...
...
@@ -91,7 +91,7 @@ export const useProductTable = (ctx: ISchemaFormActions | ISchemaFormAsyncAction
const
[
productColumns
,
setProductColumns
]
=
useState
(()
=>
{
if
(
pageStatus
===
PageStatus
.
ADD
)
{
// 渲染操作
productInfoColumns
[
productInfoColumns
.
length
-
1
].
render
=
(
text
,
record
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
handleDelete
(
record
)
}
>
{
intl
.
formatMessage
({
id
:
'
purchas
eOrder.delete'
})
}
</
Button
>
productInfoColumns
[
productInfoColumns
.
length
-
1
].
render
=
(
text
,
record
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
handleDelete
(
record
)
}
>
{
intl
.
formatMessage
({
id
:
'
sal
eOrder.delete'
})
}
</
Button
>
// 渲染单价
productInfoColumns
[
5
].
render
=
(
t
,
r
)
=>
{
...
...
@@ -124,7 +124,8 @@ export const useProductTable = (ctx: ISchemaFormActions | ISchemaFormAsyncAction
}
}
const
productAddButton
=
<
Button
onClick=
{
handleShowProduct
}
block
type=
'default'
style=
{
{
margin
:
'24px auto'
}
}
>
{
intl
.
formatMessage
({
id
:
'purchaseOrder.orderCollect.model.button1'
})
}
</
Button
>
const
productAddButton
=
<
Button
onClick=
{
handleShowProduct
}
block
type=
'default'
style=
{
{
margin
:
'24px auto'
}
}
>
{
intl
.
formatMessage
({
id
:
'saleOrder.xuanzeshangpin'
,
defaultMessage
:
'选择商品'
})
}
</
Button
>
const
productComponents
=
{
body
:
{
row
:
ProductEditableRow
,
...
...
src/pages/transaction/saleOrder/addLogisticsOrder/schema/index.ts
View file @
36b1d871
import
{
ISchema
}
from
'@formily/antd'
;
import
{
getIntl
}
from
'umi'
;
const
intl
=
getIntl
()
// 基本信息
const
basicInfo
:
ISchema
=
{
"x-index"
:
0
,
type
:
'object'
,
"x-component"
:
'MellowCard'
,
"x-component-props"
:
{
title
:
'基本信息'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.jibenxinxi'
,
defaultMessage
:
'基本信息'
})
,
id
:
'basicInfo'
,
},
properties
:
{
...
...
@@ -26,11 +28,11 @@ const basicInfo: ISchema = {
properties
:
{
digest
:
{
type
:
'string'
,
title
:
'单据摘要'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.danjuzhaiyao'
,
defaultMessage
:
'单据摘要'
})
,
"x-rules"
:
[
{
required
:
true
,
message
:
'请输入单据摘要'
message
:
intl
.
formatMessage
({
id
:
'saleOrder.qingshurudanju'
,
defaultMessage
:
'请输入单据摘要'
})
},
{
limitByte
:
true
,
...
...
@@ -43,7 +45,7 @@ const basicInfo: ISchema = {
},
logisticProvider
:
{
type
:
'string'
,
title
:
'物流服务商'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.wuliufuwushang'
,
defaultMessage
:
'物流服务商'
})
,
enum
:
[
'顺丰'
,
'逆风'
,
...
...
@@ -52,7 +54,7 @@ const basicInfo: ISchema = {
},
deliverAddress
:
{
type
:
'string'
,
title
:
'发货地址'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.fahuodizhi'
,
defaultMessage
:
'发货地址'
})
,
enum
:
[
'长津湖'
,
'水门桥'
,
...
...
@@ -90,22 +92,22 @@ const relatedInfo: ISchema = {
properties
:
{
deliveryNo
:
{
type
:
'string'
,
title
:
'对应发货单号'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.duiyingfahuodan'
,
defaultMessage
:
'对应发货单号'
})
,
"x-component"
:
'text'
,
},
receiveAddress
:
{
type
:
'string'
,
title
:
'收货地址'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.shouhuodizhi'
,
defaultMessage
:
'收货地址'
})
,
"x-component"
:
'text'
,
},
orderNo
:
{
type
:
'string'
,
title
:
'对应订单号/售后单'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.duiyingdingdanhao'
,
defaultMessage
:
'对应订单号/售后单'
})
,
"x-component"
:
'text'
,
},
receiver
:
{
type
:
'string'
,
title
:
'收货方'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.shouhuofang'
,
defaultMessage
:
'收货方'
})
,
"x-component"
:
'text'
,
},
}
...
...
@@ -120,7 +122,7 @@ const material: ISchema = {
type
:
'object'
,
"x-component"
:
'MellowCard'
,
"x-component-props"
:
{
title
:
'物流单明细'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.wuliudanmingxi'
,
defaultMessage
:
'物流单明细'
})
,
id
:
'orderMaterial'
,
},
properties
:
{
...
...
@@ -148,7 +150,7 @@ const freightInfo: ISchema = {
type
:
'object'
,
"x-component"
:
'MellowCard'
,
"x-component-props"
:
{
title
:
'运费信息'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.yunfeixinxi'
,
defaultMessage
:
'运费信息'
})
,
id
:
'freightInfo'
,
},
properties
:
{
...
...
@@ -167,12 +169,12 @@ const freightInfo: ISchema = {
properties
:
{
freight
:
{
type
:
'string'
,
title
:
'运费'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.yunfei'
,
defaultMessage
:
'运费'
})
,
"x-component"
:
'text'
,
},
settlement
:
{
type
:
'string'
,
title
:
'结算方式'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.jiesuanfangshi'
,
defaultMessage
:
'结算方式'
})
,
"x-component"
:
'text'
,
},
}
...
...
src/pages/transaction/saleOrder/addSaleDelevedOrder/components/productTableCell/index.tsx
View file @
36b1d871
...
...
@@ -118,7 +118,7 @@ export const ProductTableCell:React.FC<ProductTableCellProps> = ({
onChange=
{
(
value
,
option
)
=>
change
(
value
,
option
,
dataIndex
)
}
id=
{
dataIndex
+
record
.
id
}
className=
"purchase_logistic_select"
options=
{
[{
label
:
intl
.
formatMessage
({
id
:
'
purchaseRequisition.wuliu'
,
defaultMessage
:
'物流'
}),
value
:
1
},
{
label
:
intl
.
formatMessage
({
id
:
'purchaseRequisition.ziti'
,
defaultMessage
:
'自提'
}),
value
:
2
},
{
label
:
intl
.
formatMessage
({
id
:
'purchaseRequisition
.wuxupeisong'
,
defaultMessage
:
'无需配送'
}),
value
:
3
}]
}
options=
{
[{
label
:
intl
.
formatMessage
({
id
:
'
saleOrder.wuliu'
,
defaultMessage
:
'物流'
}),
value
:
1
},
{
label
:
intl
.
formatMessage
({
id
:
'saleOrder.ziti'
,
defaultMessage
:
'自提'
}),
value
:
2
},
{
label
:
intl
.
formatMessage
({
id
:
'saleOrder
.wuxupeisong'
,
defaultMessage
:
'无需配送'
}),
value
:
3
}]
}
{
...
formItemProps
}
/>
}
...
...
@@ -130,7 +130,7 @@ export const ProductTableCell:React.FC<ProductTableCellProps> = ({
try
{
let
_value
=
Number
(
value
)
if
(
_value
>
Number
.
MAX_SAFE_INTEGER
)
{
throw
new
Error
(
intl
.
formatMessage
({
id
:
'
purchaseRequisition
.shuzhijingduyi'
,
defaultMessage
:
'数值精度溢出'
}))
throw
new
Error
(
intl
.
formatMessage
({
id
:
'
saleOrder
.shuzhijingduyi'
,
defaultMessage
:
'数值精度溢出'
}))
}
callback
()
}
catch
(
err
)
{
...
...
@@ -148,11 +148,11 @@ export const ProductTableCell:React.FC<ProductTableCellProps> = ({
rules=
{
dataIndex
===
'quantity'
?
[
{
required
:
true
,
message
:
`${title}${intl.formatMessage({ id: '
purchaseRequisition
.bixutianxie', defaultMessage: '必须填写' })}`
,
message
:
`${title}${intl.formatMessage({ id: '
saleOrder
.bixutianxie', defaultMessage: '必须填写' })}`
,
},
{
pattern
:
/^
\d
+
(\.\d
{1,3}
)?
$/
,
message
:
intl
.
formatMessage
({
id
:
'
purchaseRequisition
.caigoushuliangjin'
,
defaultMessage
:
'采购数量仅限三位小数'
}),
message
:
intl
.
formatMessage
({
id
:
'
saleOrder
.caigoushuliangjin'
,
defaultMessage
:
'采购数量仅限三位小数'
}),
},
{
validator
:
validatorNumber
...
...
@@ -160,7 +160,7 @@ export const ProductTableCell:React.FC<ProductTableCellProps> = ({
]
:
[
{
pattern
:
/^
\d
+
(\.\d
{1,4}
)?
$/
,
message
:
intl
.
formatMessage
({
id
:
'
purchaseRequisition
.danjiajinxiansi'
,
defaultMessage
:
'单价仅限四位小数'
}),
message
:
intl
.
formatMessage
({
id
:
'
saleOrder
.danjiajinxiansi'
,
defaultMessage
:
'单价仅限四位小数'
}),
},
{
validator
:
validatorNumber
...
...
@@ -175,7 +175,7 @@ export const ProductTableCell:React.FC<ProductTableCellProps> = ({
<
Popover
content=
{
<
Row
>
<
div
>
<
h3
><
EnvironmentOutlined
/>
{
intl
.
formatMessage
({
id
:
'
purchaseRequisition
.zitidizhi'
,
defaultMessage
:
'自提地址'
})
}
</
h3
>
<
h3
><
EnvironmentOutlined
/>
{
intl
.
formatMessage
({
id
:
'
saleOrder
.zitidizhi'
,
defaultMessage
:
'自提地址'
})
}
</
h3
>
{
receiveInfo
&&
<>
<
p
>
{
receiveInfo
.
shipperName
}
/
{
receiveInfo
.
phone
}
</
p
>
...
...
src/pages/transaction/saleOrder/addSaleDelevedOrder/constant/index.tsx
View file @
36b1d871
...
...
@@ -49,7 +49,7 @@ export const procurementProcessField = (value) => {
return
value
}
const
intl
=
getIntl
()
// 单据明细 商品列表
export
const
productInfoColumns
:
any
[]
=
[
{
...
...
@@ -60,67 +60,59 @@ export const productInfoColumns: any[] = [
className
:
'commonHide'
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.wuliaobianhao'
,
defaultMessage
:
'物料编号'
}),
dataIndex
:
'code'
,
align
:
'center'
,
key
:
'code'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.wuliaomingcheng'
,
defaultMessage
:
'物料名称'
}),
title
:
intl
.
formatMessage
({
id
:
'saleOrder.shangpinmingcheng'
,
defaultMessage
:
'商品名称'
}),
dataIndex
:
'name'
,
align
:
'center'
,
key
:
'name'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.guigexinghao'
,
defaultMessage
:
'规格型号'
}),
dataIndex
:
'type'
,
align
:
'center'
,
key
:
'type'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.pinlei'
,
defaultMessage
:
'品类'
}),
title
:
intl
.
formatMessage
({
id
:
'saleOrder.pinlei'
,
defaultMessage
:
'品类'
}),
dataIndex
:
'category'
,
align
:
'center'
,
key
:
'category'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition
.pinpai'
,
defaultMessage
:
'品牌'
}),
title
:
intl
.
formatMessage
({
id
:
'saleOrder
.pinpai'
,
defaultMessage
:
'品牌'
}),
dataIndex
:
'brand'
,
align
:
'center'
,
key
:
'brand'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition
.danwei'
,
defaultMessage
:
'单位'
}),
title
:
intl
.
formatMessage
({
id
:
'saleOrder
.danwei'
,
defaultMessage
:
'单位'
}),
dataIndex
:
'unit'
,
align
:
'center'
,
key
:
'unit'
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.yugudanjia'
,
defaultMessage
:
'预估单价(元)'
}),
title
:
intl
.
formatMessage
({
id
:
'saleOrder.dinggoushuliang'
,
defaultMessage
:
'订购数量'
}),
dataIndex
:
'quantity'
,
align
:
'center'
,
key
:
'quantity'
,
},
{
title
:
intl
.
formatMessage
({
id
:
'saleOrder.danjia(yuan)'
,
defaultMessage
:
'单价(元)'
}),
dataIndex
:
'price'
,
align
:
'left'
,
key
:
'price'
,
formItem
:
'input'
,
editable
:
true
,
// render: (t) => `¥${t.toFixed(2)}`
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.shuliang'
,
defaultMessage
:
'
数量'
}),
dataIndex
:
'
quantity
'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.fahuoshuliang'
,
defaultMessage
:
'发货
数量'
}),
dataIndex
:
'
count
'
,
align
:
'center'
,
key
:
'
quantity
'
,
key
:
'
count
'
,
formItem
:
'input'
,
editable
:
true
,
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition.yugujine'
,
defaultMessage
:
'预估
金额(元)'
}),
title
:
intl
.
formatMessage
({
id
:
'saleOrder.fahuojine'
,
defaultMessage
:
'发货
金额(元)'
}),
dataIndex
:
'amount'
,
align
:
'center'
,
key
:
'amount'
,
// render: (t, r) => t ? `${Number(t).toFixed(2)}` : null
},
{
title
:
getIntl
().
formatMessage
({
id
:
'purchaseRequisition
.caozuo'
,
defaultMessage
:
'操作'
}),
title
:
intl
.
formatMessage
({
id
:
'saleOrder
.caozuo'
,
defaultMessage
:
'操作'
}),
dataIndex
:
'ctl'
,
align
:
'center'
,
key
:
'ctl'
,
...
...
src/pages/transaction/saleOrder/addSaleDelevedOrder/index.tsx
View file @
36b1d871
import
React
,
{
useState
,
useEffect
}
from
'react'
import
{
history
,
useIntl
}
from
'umi'
import
{
usePageStatus
}
from
'@/hooks/usePageStatus'
import
{
Button
,
Col
,
message
,
Row
}
from
'antd'
import
{
createFormActions
,
registerVirtualBox
,
useFormSpy
}
from
'@formily/antd'
import
{
Button
,
message
}
from
'antd'
import
{
createFormActions
}
from
'@formily/antd'
import
{
SaveOutlined
}
from
'@ant-design/icons'
import
NiceForm
from
'@/components/NiceForm'
import
{
increaseSchema
}
from
'./schema'
...
...
@@ -11,7 +11,6 @@ import { procurementProcessField, procurementRenderField, procurmentRenderInit }
import
{
useUpdate
}
from
'@umijs/hooks'
import
{
help
}
from
'../../common'
import
{
useProductTable
}
from
'./model/useProductTable'
import
styled
from
'styled-components'
import
FormDetailHeader
from
'@/components/FormDetailHeader'
import
FormDetailWrapper
from
'@/components/FormDetailWrapper'
import
{
FormDetailContext
}
from
'@/formSchema/context'
...
...
@@ -20,37 +19,6 @@ import { getPurchaseRequisitionDetail, postPurchaseRequisitionCreate, postPurcha
const
addSchemaAction
=
createFormActions
()
const
RowStyle
=
styled
(
props
=>
<
Row
style=
{
{
marginTop
:
12
,
justifyContent
:
"flex-end"
}
}
justify=
'end'
{
...
props
}
>
{
props
.
children
}
</
Row
>)
`
.ant-col {
text-align: center
}
.ant-col div {
margin-bottom: 12px;
}
`
// 总计金额联动框
export
const
MoneyTotalBox
=
registerVirtualBox
(
'moneyTotalBox'
,
()
=>
{
const
intl
=
useIntl
()
const
{
form
}
=
useFormSpy
({
selector
:
[[
'onFieldValueChange'
,
'products'
]],
reducer
:
v
=>
v
})
const
data
=
form
.
getFieldValue
(
'products'
)
const
sum
=
data
.
reduce
((
prev
,
next
)
=>
(
prev
*
1000
+
(
next
.
amount
||
0
)
*
1000
)
/
1000
,
0
)
const
total
=
data
.
reduce
((
prev
,
next
)
=>
(
prev
*
1000
+
(
next
.
quantity
||
0
)
*
1000
)
/
1000
,
0
)
return
<
RowStyle
>
<
Col
span=
{
2
}
>
<
div
>
{
intl
.
formatMessage
({
id
:
'purchaseRequisition.shuliangheji'
,
defaultMessage
:
'数量合计'
})
}
</
div
>
<
div
>
{
total
.
toFixed
(
2
)
}
</
div
>
</
Col
>
<
Col
span=
{
2
}
>
<
div
>
{
intl
.
formatMessage
({
id
:
'purchaseRequisition.jinezongji'
,
defaultMessage
:
'金额总计'
})
}
</
div
>
<
div
>
{
`${intl.formatMessage({id: 'commodity.products.directChannel.columns.currency'})}${(sum).toFixed(2)}`
}
</
div
>
</
Col
>
</
RowStyle
>
})
/** 新增销售发货单 */
const
AddSaleDelevedOrder
:
React
.
FC
<
{}
>
=
()
=>
{
const
[
formLoading
,
setFormLoading
]
=
useState
(
false
)
...
...
@@ -137,7 +105,6 @@ const AddSaleDelevedOrder:React.FC<{}> = () => {
]
}
/>
<
FormDetailWrapper
>
<
NiceForm
loading=
{
formLoading
}
previewPlaceholder=
' '
...
...
@@ -160,7 +127,6 @@ const AddSaleDelevedOrder:React.FC<{}> = () => {
help
,
}
}
/>
</
FormDetailWrapper
>
</
FormDetailContext
.
Provider
>
</
div
>)
...
...
src/pages/transaction/saleOrder/addSaleDelevedOrder/model/useProductTable.tsx
View file @
36b1d871
...
...
@@ -26,8 +26,8 @@ export const useProductTable = (ctx: ISchemaFormActions | ISchemaFormAsyncAction
const
[
productColumns
,
setProductColumns
]
=
useState
(()
=>
{
// 渲染操作
productInfoColumns
[
productInfoColumns
.
length
-
1
].
render
=
(
text
,
record
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
handleDelete
(
record
)
}
>
{
intl
.
formatMessage
({
id
:
'
purchaseRequisition
.shanchu'
,
defaultMessage
:
'删除'
})
}
</
Button
>
productInfoColumns
[
productInfoColumns
.
length
-
2
].
render
=
(
t
,
r
)
=>
r
.
amount
&&
<
span
style=
{
{
color
:
'red'
}
}
>
{
intl
.
formatMessage
({
id
:
'commodity.products.directChannel.columns.currency'
})
}
{
Number
(
r
.
amount
).
toFixed
(
2
)
}
</
span
>
productInfoColumns
[
productInfoColumns
.
length
-
1
].
render
=
(
text
,
record
)
=>
<
Button
type=
'link'
onClick=
{
()
=>
handleDelete
(
record
)
}
>
{
intl
.
formatMessage
({
id
:
'
saleOrder
.shanchu'
,
defaultMessage
:
'删除'
})
}
</
Button
>
//
productInfoColumns[productInfoColumns.length - 2].render = (t, r) => r.amount && <span style={{color: 'red'}}>{intl.formatMessage({ id: 'commodity.products.directChannel.columns.currency'})} {Number(r.amount).toFixed(2)}</span>
return
productInfoColumns
})
...
...
src/pages/transaction/saleOrder/addSaleDelevedOrder/schema/index.ts
View file @
36b1d871
...
...
@@ -2,13 +2,15 @@ import { ISchema } from '@formily/antd';
import
moment
from
'moment'
import
{
getIntl
}
from
'umi'
;
const
intl
=
getIntl
()
// 基本信息
const
basicInfo
:
ISchema
=
{
"x-index"
:
0
,
type
:
'object'
,
"x-component"
:
'MellowCard'
,
"x-component-props"
:
{
title
:
'基本信息'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.jibenxinxi'
,
defaultMessage
:
'基本信息'
})
,
id
:
'basicInfo'
,
},
properties
:
{
...
...
@@ -27,17 +29,17 @@ const basicInfo: ISchema = {
properties
:
{
receiptsType
:
{
type
:
'string'
,
title
:
'单据类型'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.danjuleixing'
,
defaultMessage
:
'单据类型'
})
,
"x-component"
:
'text'
,
default
:
'销售发货单'
,
default
:
intl
.
formatMessage
({
id
:
'saleOrder.xiaoshoufahuodan'
,
defaultMessage
:
'销售发货单'
})
,
},
digest
:
{
type
:
'string'
,
title
:
'单据摘要'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.danjuzhaiyao'
,
defaultMessage
:
'单据摘要'
})
,
"x-rules"
:
[
{
required
:
true
,
message
:
'请输入单据摘要'
message
:
intl
.
formatMessage
({
id
:
'saleOrder.qingshurudanju'
,
defaultMessage
:
'请输入单据摘要'
})
},
{
limitByte
:
true
,
...
...
@@ -51,7 +53,7 @@ const basicInfo: ISchema = {
deliverTime
:
{
type
:
'string'
,
"x-component"
:
'date'
,
title
:
'单据时间'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.danjushijian'
,
defaultMessage
:
'单据时间'
})
,
required
:
true
,
"x-component-props"
:
{
disabledDate
:
current
=>
{
...
...
@@ -65,7 +67,7 @@ const basicInfo: ISchema = {
},
purpose
:
{
type
:
'string'
,
title
:
'对应仓库'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.duiyingcangku'
,
defaultMessage
:
'对应仓库'
})
,
"x-rules"
:
[
{
limitByte
:
true
,
...
...
@@ -78,7 +80,7 @@ const basicInfo: ISchema = {
},
purpose1
:
{
type
:
'string'
,
title
:
'仓库人员'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.cangkurenyuan'
,
defaultMessage
:
'仓库人员'
})
,
"x-rules"
:
[
{
limitByte
:
true
,
...
...
@@ -91,7 +93,7 @@ const basicInfo: ISchema = {
},
remark
:
{
type
:
'string'
,
title
:
'备注'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.beizhu'
,
defaultMessage
:
'备注'
})
,
"x-rules"
:
[
{
limitByte
:
true
,
...
...
@@ -130,27 +132,27 @@ const relatedInfo: ISchema = {
properties
:
{
receipts
:
{
type
:
'string'
,
title
:
'对应单据'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.duiyingdanju'
,
defaultMessage
:
'对应单据'
})
,
"x-component"
:
'text'
,
},
delivery
:
{
type
:
'string'
,
title
:
'配送方式'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.peisongfangshi'
,
defaultMessage
:
'配送方式'
})
,
"x-component"
:
'text'
,
},
orderNo
:
{
type
:
'string'
,
title
:
'关联单据'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.guanliandanju'
,
defaultMessage
:
'关联单据'
})
,
"x-component"
:
'text'
,
},
address
:
{
type
:
'string'
,
title
:
'收货地址'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.shouhuodizhi'
,
defaultMessage
:
'收货地址'
})
,
"x-component"
:
'text'
,
},
memberName
:
{
type
:
'string'
,
title
:
'会员名称'
,
title
:
intl
.
formatMessage
({
id
:
'saleOrder.huiyuanmingcheng'
,
defaultMessage
:
'会员名称'
})
,
"x-component"
:
'text'
,
},
}
...
...
@@ -179,10 +181,6 @@ const material: ISchema = {
components
:
"{{productComponents}}"
,
},
},
NO_SUBMIT_SPY
:
{
type
:
'object'
,
"x-component"
:
"moneyTotalBox"
}
}
}
...
...
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