Commit 430becc4 authored by 前端-钟卫鹏's avatar 前端-钟卫鹏

Merge branch 'dev' into test

parents b54c0c37 4442f6d2
...@@ -74,6 +74,13 @@ const MenuSlider: React.FC<MenuSliderProps> = (props) => { ...@@ -74,6 +74,13 @@ const MenuSlider: React.FC<MenuSliderProps> = (props) => {
changeOpenKeys(keys) changeOpenKeys(keys)
} }
const clickMenuItem = ({ item, key, keyPath, domEvent }) => {
// 对比url和点击项的key 相同的话重载页面
if(key === currentSelectKey[currentSelectKey.length-1]) {
window.location.reload()
}
}
return <> return <>
<OuterSider {...props} /> <OuterSider {...props} />
<Sider theme="light" className="menu_sider" collapsed={props.collapseState}> <Sider theme="light" className="menu_sider" collapsed={props.collapseState}>
...@@ -87,6 +94,7 @@ const MenuSlider: React.FC<MenuSliderProps> = (props) => { ...@@ -87,6 +94,7 @@ const MenuSlider: React.FC<MenuSliderProps> = (props) => {
selectedKeys={currentSelectKey} selectedKeys={currentSelectKey}
openKeys={openKeys} openKeys={openKeys}
mode="inline" mode="inline"
onClick={clickMenuItem}
> >
{ {
menuItemsCache menuItemsCache
......
import { Tooltip } from 'antd'; import { Tooltip } from 'antd';
import { BellOutlined, CustomerServiceOutlined } from '@ant-design/icons'; import { BellOutlined, CustomerServiceOutlined } from '@ant-design/icons';
import React from 'react'; import React, { useCallback, useRef, useLayoutEffect } from 'react';
// import { connect, ConnectProps } from 'umi'; // import { connect, ConnectProps } from 'umi';
// import { ConnectState } from '@/models/connect'; // import { ConnectState } from '@/models/connect';
import Avatar from './AvatarDropdown'; import Avatar from './AvatarDropdown';
...@@ -9,6 +9,7 @@ import Location from './Location'; ...@@ -9,6 +9,7 @@ import Location from './Location';
import Roles from './Roles'; import Roles from './Roles';
import styles from '../styles/RightContent.less'; import styles from '../styles/RightContent.less';
import { Link } from 'umi'; import { Link } from 'umi';
import { getAuth } from '@/utils/auth'
// export type SiderTheme = 'light' | 'dark'; // export type SiderTheme = 'light' | 'dark';
// export interface GlobalHeaderRightProps extends Partial<ConnectProps> { // export interface GlobalHeaderRightProps extends Partial<ConnectProps> {
...@@ -25,6 +26,35 @@ const GlobalHeaderRight: React.SFC<{}> = (props) => { ...@@ -25,6 +26,35 @@ const GlobalHeaderRight: React.SFC<{}> = (props) => {
// className = `${styles.right} ${styles.dark}`; // className = `${styles.right} ${styles.dark}`;
// } // }
const userInfo = getAuth()
const ws = useRef<WebSocket | null>(null);
const webSocketInit = useCallback(() => {
console.log(ws.current)
if (!ws.current || ws.current.readyState === 3) {
ws.current = new WebSocket(`ws://10.0.0.25:8100/report/websocket?memberId=${userInfo.memberId}&roleId=${userInfo.memberRoleId}`);
ws.current.onopen = (e) => {
console.log(e)
}
ws.current.onmessage = (e) => {
console.log(e)
};
ws.current.onclose = (e) => {
console.log("关闭连接")
}
ws.current.onerror = (e) => {
console.log("socket 出错")
}
}
}, [ws]);
useLayoutEffect(() => {
webSocketInit();
return () => {
ws.current?.close();
};
}, [ws, webSocketInit]);
return ( return (
<div className={className}> <div className={className}>
<Link to='/' style={{color: 'rgba(0, 0, 0, 0.85)'}}>返回商城</Link> <Link to='/' style={{color: 'rgba(0, 0, 0, 0.85)'}}>返回商城</Link>
......
import React, { Suspense, useEffect, useState } from 'react';
import {
PageHeader,
Descriptions,
Card,
Spin,
Button,
Row,
Col,
Badge,
Switch,
message,
} from 'antd';
import { FormOutlined } from '@ant-design/icons';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { history } from 'umi';
import { PublicApi } from '@/services/api';
import { GetAsReturnGoodsGetDetailBySupplierResponse } from '@/services/AfterServiceApi';
import { CREDIT_INNER_STATUS, CREDIT_OUTER_STATUS, CREDIT_STATUS } from '@/constants';
import { normalizeFiledata, FileData, findLastIndexFlowState } from '@/utils';
import AvatarWrap from '@/components/AvatarWrap';
import StatusTag from '@/components/StatusTag';
import EyePreview from '@/components/EyePreview';
import AuditProcess from '@/components/AuditProcess';
import { EditableColumns } from '@/components/PolymericTable/interface';
import ReturnInfoDrawer from '../../../components/ReturnInfoDrawer';
import { } from '../../../constants';
const ProductList = React.lazy(() => import('../../../components/ProductList'));
const ReturnInfo = React.lazy(() => import('../../../components/ReturnInfo'));
const ReturnDetailInfo = React.lazy(() => import('../../../components/ReturnDetailInfo'));
const FileList = React.lazy(() => import('../../../components/FileList'));
const ReturnAddressInfo = React.lazy(() => import('../../../components/ReturnAddressInfo'));
const Score = React.lazy(() => import('../../../components/Score'));
const OuterCirculationRecord = React.lazy(() => import('../../../components/OuterCirculationRecord'));
interface DetailInfoProps {
// 记录id
id: string;
// 是否是编辑的
isEdit?: boolean;
// 历史记录目标路径
target?: string;
// 头部右侧拓展
headExtra?: React.ReactNode;
};
const DetailInfo: React.FC<DetailInfoProps> = ({
id,
isEdit = false,
target,
headExtra = null,
}) => {
const [detailInfo, setDetailInfo] = useState<GetAsReturnGoodsGetDetailBySupplierResponse>(null);
const [infoLoading, setInfoloading] = useState(false);
const [visibleOrderDetial, setVisibleReturnInfo] = useState<boolean>(false);
const handleCheckOrderDetial = record => {
setVisibleReturnInfo(true);
};
const handleReturn = record => {
if (!isEdit) {
return;
}
console.log('否后退货', record)
};
const productColumns: EditableColumns[] = [
{
title: '订单号',
dataIndex: 'orderNo',
render: (text, record) => (
<EyePreview
url={`${target ? target : '/memberCenter/payandSettle/creditApplication/quotaPrSubmit/detail'}?id=${record.id}`}
>
{text}
</EyePreview>
),
},
{
title: 'ID',
dataIndex: 'id',
align: 'center',
},
{
title: '商品名称',
dataIndex: 'productName',
align: 'center',
},
{
title: '品类',
dataIndex: 'category',
align: 'center',
},
{
title: '品牌',
dataIndex: 'brand',
align: 'center',
},
{
title: '单位',
dataIndex: 'unit',
align: 'center',
},
{
title: '采购数量',
dataIndex: 'quantity',
align: 'center',
},
{
title: '采购单价',
dataIndex: 'price',
align: 'center',
},
{
title: '采购金额',
dataIndex: 'amount',
align: 'center',
},
{
title: '已支付金额',
dataIndex: 'payAmount',
align: 'center',
},
{
title: '退货数量',
dataIndex: 'num',
align: 'center',
},
{
title: '退货金额',
dataIndex: 'returnAmount',
align: 'center',
},
{
title: '是否退货',
dataIndex: 'status',
align: 'center',
render: (text, record) => (
<>
{!isEdit ? (
text
) : (
<Switch checked={text} onChange={() => handleReturn(record)} />
)}
</>
),
},
{
title: '操作',
dataIndex: 'option',
align: 'center',
render: (text, record) => (
<>
<Button
type="link"
onClick={() => handleCheckOrderDetial(record)}
>
查看详情
</Button>
</>
),
},
];
// 获取退货申请详情
const getDetailInfo = () => {
if (!id) {
return;
}
setInfoloading(true);
PublicApi.getAsReturnGoodsGetDetailBySupplier({
returnId: id,
}).then(res => {
if (res.code === 1000) {
setDetailInfo(res.data);
}
}).finally(() => {
setInfoloading(false);
});
};
useEffect(() => {
getDetailInfo();
}, []);
return (
<Spin spinning={infoLoading}>
<PageHeaderWrapper
style={{
padding: 24,
}}
title={
<>
<PageHeader
style={{ padding: '0' }}
onBack={() => history.goBack()}
title={
<AvatarWrap
info={{
aloneTxt: '单',
name: `申请单号:${detailInfo?.applyNo}`,
}}
/>
}
extra={(
<>
{headExtra}
</>
)}
>
<Descriptions
size="small"
column={3}
style={{
padding: '0 32px',
}}
>
<Descriptions.Item label="申请单摘要:">{detailInfo?.applyAbstract}</Descriptions.Item>
<Descriptions.Item label="采购会员">{detailInfo?.consumerName}</Descriptions.Item>
<Descriptions.Item label="单据时间">{detailInfo?.applyTime}</Descriptions.Item>
<Descriptions.Item label="外部状态">
<StatusTag type="success" title={'售后完成'} />
</Descriptions.Item>
<Descriptions.Item label="内部状态">
<Badge color={'#41CC9E'} text={'已确认售后完成'} />
</Descriptions.Item>
</Descriptions>
</PageHeader>
</>
}
>
<Row gutter={[24, 24]}>
<Col span={24}>
<Suspense fallback={null}>
<AuditProcess
outerVerifySteps={
detailInfo && detailInfo.outerTaskList ?
detailInfo.outerTaskList.map(item => ({
step: item.step,
stepName: item.taskName,
roleName: item.roleName,
status: item.isExecute ? 'finish' : 'wait',
})) :
[]
}
outerVerifyCurrent={findLastIndexFlowState(detailInfo?.outerTaskList)}
innerVerifySteps={
detailInfo && detailInfo.innerTaskList ?
detailInfo.innerTaskList.map(item => ({
step: item.step,
stepName: item.taskName,
roleName: item.roleName,
status: item.isExecute ? 'finish' : 'wait',
})) :
[]
}
innerVerifyCurrent={findLastIndexFlowState(detailInfo?.innerTaskList)}
/>
</Suspense>
</Col>
<Col span={24}>
<Suspense fallback={null}>
<ProductList
title="退货商品"
columns={productColumns}
dataSource={[
{
id: 1,
applyNo: '123',
},
]}
/>
</Suspense>
</Col>
<Col span={24}>
<Suspense fallback={null}>
<ReturnInfo
received={[]}
deliver={[
{
id: 1,
orderNo: '123',
childData: [],
},
]}
/>
</Suspense>
</Col>
<Col span={24}>
<Suspense fallback={null}>
<ReturnDetailInfo
dataSource={[
{
id: 1,
orderNo: '123',
},
]}
/>
</Suspense>
</Col>
<Col span={24}>
<Row
gutter={24}
>
<Col span={6}>
<Suspense fallback={null}>
<FileList />
</Suspense>
</Col>
<Col span={12}>
<Suspense fallback={null}>
<ReturnAddressInfo isEdit={isEdit} />
</Suspense>
</Col>
<Col span={6}>
<Suspense fallback={null}>
<Score />
</Suspense>
</Col>
</Row>
</Col>
<Col span={24}>
<Suspense fallback={null}>
<OuterCirculationRecord dataSource={[]} />
</Suspense>
</Col>
</Row>
<ReturnInfoDrawer
visible={visibleOrderDetial}
onClose={() => setVisibleReturnInfo(false)}
/>
</PageHeaderWrapper>
</Spin>
);
};
export default DetailInfo;
\ No newline at end of file
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* @Author: XieZhiXiong * @Author: XieZhiXiong
* @Date: 2020-11-05 14:25:41 * @Date: 2020-11-05 14:25:41
* @LastEditors: XieZhiXiong * @LastEditors: XieZhiXiong
* @LastEditTime: 2020-11-11 15:24:34 * @LastEditTime: 2020-11-12 09:40:11
* @Description: 退货申请单查询 * @Description: 退货申请单查询
*/ */
import React, { useState, useRef } from 'react'; import React, { useState, useRef } from 'react';
...@@ -43,7 +43,7 @@ const ExchangeQuery: React.FC = () => { ...@@ -43,7 +43,7 @@ const ExchangeQuery: React.FC = () => {
render: (text, record) => ( render: (text, record) => (
<> <>
<EyePreview <EyePreview
url={`/memberCenter/afterService/returnManage/returnQuery/detail?id=${record.id}`} url={`/memberCenter/afterService/exchangeManage/exchangeQuery/detail?id=${record.id}`}
> >
{text} {text}
</EyePreview> </EyePreview>
...@@ -107,9 +107,11 @@ const ExchangeQuery: React.FC = () => { ...@@ -107,9 +107,11 @@ const ExchangeQuery: React.FC = () => {
// }); // });
return Promise.resolve({ return Promise.resolve({
totalCount: 10, totalCount: 10,
data: { data: [
{
applyNo: '123', applyNo: '123',
}, }
],
}); });
}; };
...@@ -153,7 +155,7 @@ const ExchangeQuery: React.FC = () => { ...@@ -153,7 +155,7 @@ const ExchangeQuery: React.FC = () => {
<Card> <Card>
<StandardTable <StandardTable
tableProps={{ tableProps={{
rowKey: 'id', rowKey: 'applyNo',
}} }}
columns={columns} columns={columns}
currentRef={ref} currentRef={ref}
......
...@@ -564,7 +564,7 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => { ...@@ -564,7 +564,7 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
) )
let result = range.map(Number).reduce((a, b) => { if(a<b) return b }) let result = range.map(Number).reduce((a, b) => { if(a<b) return b })
if(!result) throw new Error('请正确输入阶梯数量范围'); if(!result) throw new Error('请正确输入阶梯数量范围');
if(range[0]!==minOrderNumber) throw new Error('阶段的起始值必须为最小起订数'); if(Number(range[0]) !== Number(minOrderNumber)) throw new Error('阶段的起始值必须为最小起订数');
callback() callback()
} }
} catch (err) { } catch (err) {
......
...@@ -304,7 +304,7 @@ const Deatail: React.FC<{}> = () => { ...@@ -304,7 +304,7 @@ const Deatail: React.FC<{}> = () => {
if (query.orderId) { if (query.orderId) {
PublicApi.getOrderPurchaseOrderDetails({id: query.orderId}).then(res => { PublicApi.getOrderPurchaseOrderDetails({id: query.orderId}).then(res => {
if(res.code === 1000) { if(res.code === 1000) {
console.log(res.data, '查询销售订单详情') actions.setFieldValue('receiverName', res.data.receiverName)
} }
}) })
//发货单号 //发货单号
...@@ -595,7 +595,7 @@ const Deatail: React.FC<{}> = () => { ...@@ -595,7 +595,7 @@ const Deatail: React.FC<{}> = () => {
*/ */
const handleOnOK = (type, values, params) => { const handleOnOK = (type, values, params) => {
console.log(type, values, '参数:', params) console.log(type, values, '参数:', params)
let { id, orderNo, deliveryAddresId, fullAddress, memberName } = values[0] let { id, orderNo, deliveryAddresId, fullAddress, memberName, invoicesNo, receiverName } = values[0]
switch (type) { switch (type) {
case 1://订单 case 1://订单
setrelevanceType(params.orderType)//订单类型 setrelevanceType(params.orderType)//订单类型
...@@ -620,8 +620,8 @@ const Deatail: React.FC<{}> = () => { ...@@ -620,8 +620,8 @@ const Deatail: React.FC<{}> = () => {
case 2://发货单 case 2://发货单
// memberName 收货方 // memberName 收货方
setShipmentOrderID(id) setShipmentOrderID(id)
actions.setFieldValue('shipmentOrderCode', orderNo) actions.setFieldValue('shipmentOrderCode', invoicesNo)
actions.setFieldValue("receiverName", memberName) actions.setFieldValue("receiverName", receiverName)
actions.setFieldValue('shipmentOrderId', id)// 发货单id actions.setFieldValue('shipmentOrderId', id)// 发货单id
actions.setFieldValue("invoicesTypeId", 1)//发货单 actions.setFieldValue("invoicesTypeId", 1)//发货单
actions.setFieldValue("receiverAddressId", deliveryAddresId) actions.setFieldValue("receiverAddressId", deliveryAddresId)
...@@ -924,10 +924,10 @@ const Deatail: React.FC<{}> = () => { ...@@ -924,10 +924,10 @@ const Deatail: React.FC<{}> = () => {
</TabPane> </TabPane>
<TabPane key='tab-3' tab='运费'> <TabPane key='tab-3' tab='运费'>
<FormItem labelAlign="left" labelCol={{ span: 2 }} editable={false} name="fregint" label="运费"> <FormItem labelAlign="left" labelCol={{ span: 2 }} editable={false} name="fregint" label="运费">
<>未报价</> <>{initialValues.freightPrice || '未报价'}</>
</FormItem> </FormItem>
<FormItem labelAlign="left" labelCol={{ span: 2 }} editable={false} name="fregint2" label="结算方式"> <FormItem labelAlign="left" labelCol={{ span: 2 }} editable={false} name="fregint2" label="结算方式">
<></> <>{initialValues.freightPrice || '-'}</>
</FormItem> </FormItem>
</TabPane> </TabPane>
<TabPane key='tab-4' tab='流转记录'> <TabPane key='tab-4' tab='流转记录'>
......
...@@ -53,12 +53,12 @@ const AccountLists: React.FC<{}> = () => { ...@@ -53,12 +53,12 @@ const AccountLists: React.FC<{}> = () => {
dataIndex: 'memberRoleName', dataIndex: 'memberRoleName',
key: 'memberRoleName', key: 'memberRoleName',
}, },
{ // {
title: '会员等级', // title: '会员等级',
dataIndex: 'memberLevel', // dataIndex: 'memberLevel',
key: 'memberLevel', // key: 'memberLevel',
render: (t, r) => <LevelBrand level={r.level} /> // render: (t, r) => <LevelBrand level={r.level} />
}, // },
{ {
title: '账户余额', title: '账户余额',
dataIndex: 'accountBalance', dataIndex: 'accountBalance',
......
...@@ -43,12 +43,12 @@ const AccountLists: React.FC<{}> = () => { ...@@ -43,12 +43,12 @@ const AccountLists: React.FC<{}> = () => {
dataIndex: 'memberRoleName', dataIndex: 'memberRoleName',
key: 'memberRoleName', key: 'memberRoleName',
}, },
{ // {
title: '所属会员等级', // title: '所属会员等级',
dataIndex: 'memberLevel', // dataIndex: 'memberLevel',
key: 'memberLevel', // key: 'memberLevel',
render: (t, r) => <LevelBrand level={r.memberLevel} /> // render: (t, r) => <LevelBrand level={r.memberLevel} />
}, // },
{ {
title: '会员等级类型', title: '会员等级类型',
dataIndex: 'memberLevelType', dataIndex: 'memberLevelType',
......
...@@ -401,7 +401,7 @@ const PositionSetting:React.FC<PositionSettingProps> = (props) => { ...@@ -401,7 +401,7 @@ const PositionSetting:React.FC<PositionSettingProps> = (props) => {
type: 'string', type: 'string',
'x-component': 'ModalSearch', 'x-component': 'ModalSearch',
'x-component-props': { 'x-component-props': {
placeholder: '请输入商品名称/ID', placeholder: '请输入商品名称',
align: 'flex-left', align: 'flex-left',
}, },
}, },
......
import React from 'react'; import React, {useState, useEffect} from 'react';
import { history } from 'umi'; import { history } from 'umi';
import { Button, Row, Col, Card, List, Avatar } from 'antd'; import { Card, List, Avatar } from 'antd';
import styles from './index.less' import styles from './index.less'
import { PageHeaderWrapper } from '@ant-design/pro-layout'; import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { PlusOutlined } from '@ant-design/icons'; import { PlusOutlined } from '@ant-design/icons';
import StatusTag from '@/components/StatusTag'; import StatusTag from '@/components/StatusTag';
import { PublicApi } from '@/services/api';
import moment from 'moment';
import msg_system from '@/assets/imgs/msg_system.png'
import msg_platform from '@/assets/imgs/msg_platform.png'
const Message: React.FC<{}> = () => { const Message: React.FC<{}> = () => {
const [dataSource, setDataSource] = useState<any>([])
const pagation = {
current: 1,
pageSize: 10,
}
useEffect(() => {
// @ts-ignore
async function init() {
const data = await getList(pagation);
setDataSource(data);
}
init()
}, [])
const data = [ const getList = async (params) => {
{ ///report/message/member/page
id: 1, const res = await PublicApi.getReportMessageMemberPage(params);
icon: '', if(res.code === 1000) {
status: 'success', return res.data
type: '系统消息', }
title: '订单发货', return {
message: '订单发货,请注意查收,清单发货,请注意查收!', totalCount: 0,
time: '2015-15-05', data: []
}, }
{ }
id: 2,
icon: '', const handlePaginationChange = (page, pageSize) => {
status: 'success', getList({page, pageSize})
type: '系统消息', .then((data) => {
title: '订单收货', setDataSource(data);
message: '订单发货,请注意查收,清单发货,请注意查收!', })
time: '2015-15-05', }
},
{
id: 3,
icon: '',
status: 'primary',
type: '系统消息',
title: '系统消息',
message: '账户异常,请注意账户资金安全!',
time: '2015-15-05',
},
{
id: 4,
icon: '',
status: 'primary',
type: '系统消息',
title: '系统消息',
message: '账户支出300元,请注意账户资金安全!',
time: '2015-15-05',
},
];
const renderMessage = (data) => { const renderMessage = (data) => {
...@@ -69,25 +68,23 @@ const Message: React.FC<{}> = () => { ...@@ -69,25 +68,23 @@ const Message: React.FC<{}> = () => {
> >
<List <List
itemLayout="horizontal" itemLayout="horizontal"
dataSource={data} dataSource={dataSource.data}
className={styles.customList} className={styles.customList}
pagination={{ pagination={{
onChange: page => { onChange: handlePaginationChange,
console.log(page);
},
pageSize: 10, pageSize: 10,
size: "small", size: "small",
showQuickJumper: true, showQuickJumper: true,
total: 4, total: dataSource.totalCount,
showTotal: showTotal showTotal: showTotal
}} }}
renderItem={item => ( renderItem={item => (
<List.Item> <List.Item>
<List.Item.Meta <List.Item.Meta
avatar={<Avatar src={item.icon} />} avatar={<Avatar src={msg_system} />}
title={renderMessage(item)} title={renderMessage(item)}
/> />
<div>{item.time}</div> <div>{moment(item.createTime).format('YYYY-MM-DD HH:mm:ss')}</div>
</List.Item> </List.Item>
)} )}
/> />
......
...@@ -18,7 +18,8 @@ interface OrderDetailHookProps { ...@@ -18,7 +18,8 @@ interface OrderDetailHookProps {
export const useOrderDetail = (options: OrderDetailHookProps) => { export const useOrderDetail = (options: OrderDetailHookProps) => {
// 订单详情内容 // 订单详情内容
const [formData, setFormData] = useState<any>(null) const [formData, setFormData] = useState<any>(null)
// 当前的支付信息id 默认第一个
const [currentPayInfoId, setCurrentPayInfoId] = useState<any>(null)
// 支付信息列表 // 支付信息列表
const [payList, setPaylist] = useState<any[]>([]) const [payList, setPaylist] = useState<any[]>([])
...@@ -44,10 +45,14 @@ export const useOrderDetail = (options: OrderDetailHookProps) => { ...@@ -44,10 +45,14 @@ export const useOrderDetail = (options: OrderDetailHookProps) => {
if (id) { if (id) {
const fn = type === 'purchaseOrder' ? PublicApi.getOrderProcurementOrderDetails : PublicApi.getOrderPurchaseOrderDetails const fn = type === 'purchaseOrder' ? PublicApi.getOrderProcurementOrderDetails : PublicApi.getOrderPurchaseOrderDetails
fn({ id }, { ctlType: "none" }).then(res => { fn({ id }, { ctlType: "none" }).then(res => {
if (res.code === 1000) { const { code, data, message: msg } = res
setFormData(res.data) if (code === 1000) {
setFormData(data)
if(data.paymentInformationResponses.length > 0){
setCurrentPayInfoId(data.paymentInformationResponses[0].id)
}
} else { } else {
message.error(res.message) message.error(msg)
} }
}) })
} }
...@@ -67,9 +72,11 @@ export const useOrderDetail = (options: OrderDetailHookProps) => { ...@@ -67,9 +72,11 @@ export const useOrderDetail = (options: OrderDetailHookProps) => {
// 需共享的状态 // 需共享的状态
const formContext = { const formContext = {
data: formData, data: formData,
currentPayInfoId,
payList, payList,
ctl: { ctl: {
setData: setFormData setData: setFormData,
setPayId: setCurrentPayInfoId,
}, },
reloadFormData reloadFormData
} }
......
...@@ -51,3 +51,52 @@ ...@@ -51,3 +51,52 @@
font-size: 16px; font-size: 16px;
color: #E63F3B; color: #E63F3B;
} }
// 支付密码
.payContainer {
margin: 90px 0;
text-align: center;
.title {
font-size: 14px;
font-weight: 400;
color: #6B778C;
margin-bottom: 24px;
}
.inputBox {
position: relative;
width: 336px;
margin: 0 auto;
display: flex;
justify-content: space-between;
font-weight: bold;
.codeItem {
width: 48px;
height: 48px;
line-height: 48px;
text-align: center;
background: #FFFFFF;
border: 1px solid #EBECF0;
font-size: 26px;
}
.codeInput {
height: 48px;
position: absolute;
outline: none;
color: transparent;
caret-color: #EBECF0;
font-size: 28px;
padding: 0 14px;
letter-spacing: 48px;
width: 336px;
border: none;
background: none;
-webkit-appearance: none;
&:focus {
border: none!important;
box-shadow: 0 0 0 0 #fff;
}
}
}
}
\ No newline at end of file
import React, { useState, useEffect, useContext, useRef } from 'react' import React, { useState, useEffect, useContext, useRef } from 'react'
import { Modal, Steps, Row, Col, Radio, message, Upload, Button } from 'antd' import { Modal, Steps, Row, Col, Radio, message, Upload, Button, Input } from 'antd'
import style from './index.less' import style from './index.less'
import { OrderDetailContext } from '../../_public/order/context' import { OrderDetailContext } from '../../_public/order/context'
import cx from 'classnames' import cx from 'classnames'
...@@ -70,13 +70,16 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => { ...@@ -70,13 +70,16 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => {
const formRef = useRef<any>({}) const formRef = useRef<any>({})
const { id } = usePageStatus() const { id } = usePageStatus()
const { data, payList } = useContext(OrderDetailContext) const { data, payList, currentPayInfoId } = useContext(OrderDetailContext)
// const transformPayList: any = data ? transformPayData(data.paymentInformationResponses, payList) : [] // const transformPayList: any = data ? transformPayData(data.paymentInformationResponses, payList) : []
const transformPayList: any = data ? formatting(payList, "payType") : [] const transformPayList: any = data ? formatting(payList, "payType") : []
const { run, loading } = useHttpRequest(PublicApi.postOrderPendingOrderPay) const { run, loading } = useHttpRequest(PublicApi.postOrderPendingOrderPay)
const [visible, setVisible] = useState(false) const [visible, setVisible] = useState(false)
const [checked, setChecked] = useState<any>({}) const [checked, setChecked] = useState<any>({})
const [current, setCurrent] = useState(0) // 1线下支付方式 2授信支付 const [current, setCurrent] = useState(0) // 0选择方式 1线下支付方式 2授信支付 3余额支付 1000清除
const [payStep, setPayStep] = useState(0) // 支付模态框的步骤 0选方式 1下一步的具体操作 2输入支付密码
const [code, setCode] = useState('')
const [number, setNumber] = useState([0,1,2,3,4,5])
const { currentRef, confirm } = props const { currentRef, confirm } = props
useEffect(() => { useEffect(() => {
if (currentRef) { if (currentRef) {
...@@ -90,6 +93,7 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => { ...@@ -90,6 +93,7 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => {
useEffect(() => { useEffect(() => {
if (!visible) { if (!visible) {
setCurrent(0) setCurrent(0)
setPayStep(0)
setChecked(null) setChecked(null)
} }
}, [visible]) }, [visible])
...@@ -99,39 +103,63 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => { ...@@ -99,39 +103,63 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => {
if (checked.id) { if (checked.id) {
if (checked.id === 5) { // 线下支付 if (checked.id === 5) { // 线下支付
setCurrent(1) setCurrent(1)
setPayStep(1)
} else if (checked.id === 6) { // 授信额度支付 } else if (checked.id === 6) { // 授信额度支付
setCurrent(2) setCurrent(2)
setPayStep(1)
} else if (checked.id === 4) {
setCurrent(3)
setPayStep(1)
} else { } else {
message.error('暂只支持线下支付和授信额度支付方式') message.error('暂只支持线下支付、授信额度支付、余额支付方式')
} }
} else { } else {
message.error('请先选择支付方式') message.error('请先选择支付方式')
} }
return; return;
} }
// console.log(confirm, current, payStep, '119')
// 开始提交数据 // 开始提交线下支付数据
if(current === 1) {
const payOrderUrls = formRef.current.urlList const payOrderUrls = formRef.current.urlList
const paymentInformationId = checked.id const checkedId = checked.id
if (!payOrderUrls || payOrderUrls.length === 0) { if (!payOrderUrls || payOrderUrls.length === 0) {
message.error('请先上传凭证') message.error('请先上传凭证')
return; return;
} }
if (!paymentInformationId) { if (!checkedId) {
message.error('未选择支付方式') message.error('未选择支付方式')
return; return;
} }
// 当前选中的支付信息
let PayInfoObj = data.paymentInformationResponses.filter(item => item.id === Number(currentPayInfoId))[0]
const params = { const params = {
id: Number(id), id: Number(id),
payOrderUrls: payOrderUrls.join(','), payOrderUrls: payOrderUrls.join(','),
paymentInformationId paymentInformationId: PayInfoObj.id,
payTypeId: PayInfoObj.channel,
// // 预留
// payPassword,
// remark
} }
const { code } = await run(params) const { code } = await run(params)
if (code === 1000) { if (code === 1000) {
history.goBack() history.goBack()
} }
} else if (current === 2) {
// 开始提交授信支付数据 (需要输入支付密码)
console.log('开始提交授信支付数据')
setPayStep(2)
setCurrent(1000)
} else if(current === 3) {
// 开始提交余额支付数据 (需要输入支付密码)
console.log('开始提交余额支付数据')
setPayStep(2)
setCurrent(1000)
}
confirm && confirm() confirm && confirm()
} }
...@@ -140,6 +168,7 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => { ...@@ -140,6 +168,7 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => {
setVisible(false) setVisible(false)
} else { } else {
setCurrent(0) setCurrent(0)
setPayStep(0)
} }
} }
...@@ -149,6 +178,57 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => { ...@@ -149,6 +178,57 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => {
formRef.current.urlList = urlList formRef.current.urlList = urlList
} }
const handleBack = () => {
setCurrent(0)
setPayStep(0)
}
const handleOk = () => {
console.log('ODEK')
handleCancel()
}
const onChange = (e) => {
let v = e.target.value
setCode(v)
}
useEffect(() => {
console.log(code)
}, [code])
const renderModalFooter = () => {
let footer = null;
if(current){
if(payStep === 1){
footer = [
<Button key="back" onClick={handleBack}>
上一步
</Button>,
<Button key="submit" type="primary" loading={loading} onClick={handleConfirm}>
确认
</Button>,
]
} else if (payStep === 2) {
footer = [
<Button key="submit" type="primary" loading={loading} onClick={handleConfirm} style={{width: '100%'}}>
确认支付
</Button>
]
}
} else {
footer = [
<Button key="back" onClick={handleCancel}>
取消
</Button>,
<Button key="submit" type="primary" loading={loading} onClick={handleConfirm}>
下一步
</Button>,
]
}
return footer;
}
return ( return (
<Modal <Modal
width={704} width={704}
...@@ -156,9 +236,12 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => { ...@@ -156,9 +236,12 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => {
visible={visible} visible={visible}
onOk={handleConfirm} onOk={handleConfirm}
onCancel={handleCancel} onCancel={handleCancel}
cancelText={current === 0 ? '取消' : '上一步'} footer={renderModalFooter()}
okText={current === 0 ? '下一步' : '确认'} destroyOnClose={true}
confirmLoading={loading} maskClosable={false}
// cancelText={current === 0 ? '取消' : '上一步'}
// okText={current === 0 ? '下一步' : '确认'}
// confirmLoading={loading}
> >
{current === 0 && {current === 0 &&
transformPayList && Object.entries(transformPayList).map(([key, value]) => <Row key={key} style={{ marginBottom: 24 }}> transformPayList && Object.entries(transformPayList).map(([key, value]) => <Row key={key} style={{ marginBottom: 24 }}>
...@@ -174,7 +257,7 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => { ...@@ -174,7 +257,7 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => {
</Col> </Col>
</Row>) </Row>)
} }
{/* 线下支付线上确认 */}
{ {
current === 1 && current === 1 &&
<div> <div>
...@@ -195,7 +278,7 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => { ...@@ -195,7 +278,7 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => {
</Upload> </Upload>
</div> </div>
} }
{/* 授信支付 */}
{ {
current === 2 && current === 2 &&
<div> <div>
...@@ -234,6 +317,53 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => { ...@@ -234,6 +317,53 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => {
</p> </p>
</div> </div>
} }
{/* 余额支付 */}
{
current === 3 &&
<div>
<p>账户余额</p>
<p>
<span className={style.title}>
账户可用余额(元):
</span>
<span className={style.amount}>
500,000.00
</span>
</p>
<p>
<span className={style.title}>
本次需支付(元):
</span>
<span className={cx(style.amount, style.amount2)}>
48,000.00
</span>
</p>
</div>
}
{/* 输入支付密码 payStep===2 */}
{
payStep === 2 &&
<div className={style.payContainer}>
<p className={style.title}>请输入支付密码</p>
<div className={style.inputBox}>
{
number.map((item, index) => <div
className={style.codeItem}
key={index}
>
{code[index]}
</div>)
}
<Input.Password
className={style.codeInput}
value={code}
maxLength={number.length}
onChange={onChange}
visibilityToggle={false}
/>
</div>
</div>
}
</Modal> </Modal>
) )
......
...@@ -17,7 +17,7 @@ const TabHeader = ({dataSource}) => { ...@@ -17,7 +17,7 @@ const TabHeader = ({dataSource}) => {
<div className={style.smallnumber}>{dataSource.payPrice || 0}</div> <div className={style.smallnumber}>{dataSource.payPrice || 0}</div>
</Col> </Col>
<Col> <Col>
<StatusColors status={5} type='out'/> <StatusColors status={dataSource.externalState} type='out'/>
</Col> </Col>
</Row> </Row>
} }
...@@ -30,11 +30,18 @@ const payTextList = ["", ...@@ -30,11 +30,18 @@ const payTextList = ["",
'授信支付', '授信支付',
'货到付款' '货到付款'
] ]
const OrderPayTabs:React.FC<OrderPayTabsProps> = (props) => { const OrderPayTabs:React.FC<OrderPayTabsProps> = (props) => {
const { data, payList } = useContext(OrderDetailContext)
const { data, payList, ctl } = useContext(OrderDetailContext)
const onChange = (activeKey) => {
ctl.setPayId(activeKey)
}
return ( return (
<MellowCard style={{marginTop: 24}} bordered={false}> <MellowCard style={{marginTop: 24}} bordered={false}>
<Tabs defaultActiveKey='1'> <Tabs defaultActiveKey='1' onChange={onChange}>
{ data.paymentInformationResponses && data.paymentInformationResponses.map(v => <TabPane key={v.id} tab={<TabHeader dataSource={v}/>}> { data.paymentInformationResponses && data.paymentInformationResponses.map(v => <TabPane key={v.id} tab={<TabHeader dataSource={v}/>}>
<Row> <Row>
<Col className={style.fontGray} span={4}>支付环节: </Col> <Col className={style.fontGray} span={4}>支付环节: </Col>
......
...@@ -68,7 +68,7 @@ export const MoneyTotalBox = ({ dataSource, preview }) => { ...@@ -68,7 +68,7 @@ export const MoneyTotalBox = ({ dataSource, preview }) => {
// // 筛选配送方式为物流的商品并且使用了运费模板 // // 筛选配送方式为物流的商品并且使用了运费模板
// const logsiticsDataMaps = orderProductRequests.filter(v => v.logistics && v.logistics.useTemplate && v.logistics.deliveryType === 1) // const logsiticsDataMaps = orderProductRequests.filter(v => v.logistics && v.logistics.useTemplate && v.logistics.deliveryType === 1)
// if (logsiticsDataMaps.length > 0) { // if (logsiticsDataMaps.length > 0) {
// PublicApi.postLogisticsFreightRemoteAddDetail({ // PublicApi.postLogisticsFreightTemplateCalFreightPrice({
// orderProductList: logsiticsDataMaps.map(v => ({ // orderProductList: logsiticsDataMaps.map(v => ({
// templateId: v.templateId, // templateId: v.templateId,
// weight: v.weight // weight: v.weight
......
...@@ -107,7 +107,7 @@ export const MoneyTotalBox = ({ dataSource, isEditData }) => { ...@@ -107,7 +107,7 @@ export const MoneyTotalBox = ({ dataSource, isEditData }) => {
// 筛选配送方式为物流的商品并且使用了运费模板 // 筛选配送方式为物流的商品并且使用了运费模板
const logsiticsDataMaps = orderProductRequests.filter(v => v.logistics && v.logistics.useTemplate && v.logistics.deliveryType === 1) const logsiticsDataMaps = orderProductRequests.filter(v => v.logistics && v.logistics.useTemplate && v.logistics.deliveryType === 1)
if (logsiticsDataMaps.length > 0) { if (logsiticsDataMaps.length > 0) {
PublicApi.postLogisticsFreightRemoteAddDetail({ PublicApi.postLogisticsFreightTemplateCalFreightPrice({
orderProductList: logsiticsDataMaps.map(v => ({ orderProductList: logsiticsDataMaps.map(v => ({
templateId: v.templateId, templateId: v.templateId,
weight: v.weight weight: v.weight
......
...@@ -273,14 +273,14 @@ const comfirmDialog: React.FC<Params> = (props, { onRef }) => { ...@@ -273,14 +273,14 @@ const comfirmDialog: React.FC<Params> = (props, { onRef }) => {
<Tabs defaultActiveKey='tab1' <Tabs defaultActiveKey='tab1'
tabPosition="left" tabPosition="left"
> >
<Tabs.TabPane tab='基本信息' key="tab-1"> <Tabs.TabPane tab='基本信息' key="tab-1" forceRender>
<Form.Item <Form.Item
label='对应需求单规格型号' label='对应需求单规格型号'
name='model' name='model'
initialValue={props.initialValues.model} initialValue={props.initialValues.model}
rules={[ rules={[
{ {
message: '请选择规格型号',
required: true required: true
} }
]} ]}
...@@ -349,7 +349,7 @@ const comfirmDialog: React.FC<Params> = (props, { onRef }) => { ...@@ -349,7 +349,7 @@ const comfirmDialog: React.FC<Params> = (props, { onRef }) => {
{ {
commodityAttributedataSource.length > 0 && commodityAttributedataSource.map((item: any) => <> commodityAttributedataSource.length > 0 && commodityAttributedataSource.map((item: any) => <>
<TabPane tab={item.customerAttribute.name} key={item.customerAttribute.name}> <TabPane tab={item.customerAttribute.name} key={item.customerAttribute.name} forceRender>
<Space key={item.customerAttribute.id} direction="vertical" size={16}> <Space key={item.customerAttribute.id} direction="vertical" size={16}>
{item.customerAttributeValueList.map((child, childIndex) => { {item.customerAttributeValueList.map((child, childIndex) => {
return <Badge text={child.value} key={childIndex} status="default" /> return <Badge text={child.value} key={childIndex} status="default" />
...@@ -361,13 +361,14 @@ const comfirmDialog: React.FC<Params> = (props, { onRef }) => { ...@@ -361,13 +361,14 @@ const comfirmDialog: React.FC<Params> = (props, { onRef }) => {
} }
<Tabs.TabPane tab='报价明细' key="tab-7"> <Tabs.TabPane tab='报价明细' key="tab-7" forceRender>
<Form.Item <Form.Item
label='单位' label='单位'
name='purchaseNuit' name='purchaseNuit'
initialValue={props.initialValues.purchaseNuit} initialValue={props.initialValues.purchaseNuit}
rules={[ rules={[
{ {
message: '请选择单位',
required: true required: true
} }
]} ]}
...@@ -381,6 +382,7 @@ const comfirmDialog: React.FC<Params> = (props, { onRef }) => { ...@@ -381,6 +382,7 @@ const comfirmDialog: React.FC<Params> = (props, { onRef }) => {
initialValue={props.initialValues.purchaseQuantity} initialValue={props.initialValues.purchaseQuantity}
rules={[ rules={[
{ {
message: '请选择采购数量',
required: true required: true
} }
]} ]}
...@@ -393,6 +395,7 @@ const comfirmDialog: React.FC<Params> = (props, { onRef }) => { ...@@ -393,6 +395,7 @@ const comfirmDialog: React.FC<Params> = (props, { onRef }) => {
name='price' name='price'
rules={[ rules={[
{ {
message: '请输入报价单价',
required: true required: true
} }
]} ]}
......
...@@ -1008,6 +1008,7 @@ const Detail: React.FC<{}> = () => { ...@@ -1008,6 +1008,7 @@ const Detail: React.FC<{}> = () => {
initialValue={initialValues.quotationSummary} initialValue={initialValues.quotationSummary}
rules={[ rules={[
{ {
message: '请输入报价单摘要',
required: true required: true
} }
]} ]}
...@@ -1021,6 +1022,7 @@ const Detail: React.FC<{}> = () => { ...@@ -1021,6 +1022,7 @@ const Detail: React.FC<{}> = () => {
name='requisitionFormNo' name='requisitionFormNo'
rules={[ rules={[
{ {
message: '请选择对应需求单号',
required: true required: true
} }
]} ]}
...@@ -1098,6 +1100,7 @@ const Detail: React.FC<{}> = () => { ...@@ -1098,6 +1100,7 @@ const Detail: React.FC<{}> = () => {
label="最小起订" label="最小起订"
rules={[ rules={[
{ {
message: '请输入最小起订',
required: true required: true
} }
]} ]}
......
...@@ -47,7 +47,10 @@ const EnquiryGoods: React.FC<queryProps> = (props) => { ...@@ -47,7 +47,10 @@ const EnquiryGoods: React.FC<queryProps> = (props) => {
category: v.customerCategoryName, category: v.customerCategoryName,
brand: v.brandName, brand: v.brandName,
unit: v.unitName, unit: v.unitName,
purchaseCount: 1 purchaseCount: 1,
logistics: v.logistics,
memberId: v.memberId,
memberRoleId: v.memberRoleId
}) })
setinquiryGoods(inquiry); setinquiryGoods(inquiry);
...@@ -274,7 +277,8 @@ const EnquiryGoods: React.FC<queryProps> = (props) => { ...@@ -274,7 +277,8 @@ const EnquiryGoods: React.FC<queryProps> = (props) => {
confirm={handleOkAddMember} confirm={handleOkAddMember}
cancel={handleCancelAddMember} cancel={handleCancelAddMember}
visible={visibleChannelMember} visible={visibleChannelMember}
resetModal={{ destroyOnClose: true, forceRender: true }} forceRender={visibleChannelMember}
resetModal={{ destroyOnClose: true}}
columns={columnsSetMember} columns={columnsSetMember}
rowSelection={memberRowSelection} rowSelection={memberRowSelection}
fetchTableData={params => fetchGoodsList(params)} fetchTableData={params => fetchGoodsList(params)}
......
...@@ -9,7 +9,7 @@ import { PublicApi } from '@/services/api' ...@@ -9,7 +9,7 @@ import { PublicApi } from '@/services/api'
// @todo 后续需要优化, 样式,目录文件等。 // @todo 后续需要优化, 样式,目录文件等。
const PriceComp = (props) => { const PriceComp = (props) => {
const { priceSection = {} } = props const { priceSection = {} } = props
const priceTransKeys = Object.keys(priceSection) const priceTransKeys = Object.keys(priceSection || {})
// 出现0-0 表示没有单价区间范围 // 出现0-0 表示没有单价区间范围
if (priceTransKeys.length === 1 && priceTransKeys[0] === '0-0') { if (priceTransKeys.length === 1 && priceTransKeys[0] === '0-0') {
return <span style={{color: '#E63F3B'}}>{'¥' + priceSection[priceTransKeys[0]]}</span> return <span style={{color: '#E63F3B'}}>{'¥' + priceSection[priceTransKeys[0]]}</span>
......
...@@ -129,7 +129,7 @@ export const useOrderFormInitEffect = (ctx: ISchemaFormActions | ISchemaFormAsyn ...@@ -129,7 +129,7 @@ export const useOrderFormInitEffect = (ctx: ISchemaFormActions | ISchemaFormAsyn
assign.disabled = true assign.disabled = true
} }
// 渠道(企业+个人) // 渠道(企业+个人)
if (auth.memberType === 3 || auth.memberType === 4 && assign.value < 10) { if ((auth.memberType === 3 || auth.memberType === 4) && assign.value < 10) {
assign.disabled = true assign.disabled = true
} }
// 商城下单 // 商城下单
...@@ -145,6 +145,8 @@ export const useOrderFormInitEffect = (ctx: ISchemaFormActions | ISchemaFormAsyn ...@@ -145,6 +145,8 @@ export const useOrderFormInitEffect = (ctx: ISchemaFormActions | ISchemaFormAsyn
// } // }
return assign return assign
}).sort((prev, next) => prev.disabled ? prev.value : next.value - prev.value) }).sort((prev, next) => prev.disabled ? prev.value : next.value - prev.value)
console.log(state.props.enum)
}) })
// query中存在modelType参数, 则是从其他页面跳转而来,需禁用其余query选项 // query中存在modelType参数, 则是从其他页面跳转而来,需禁用其余query选项
......
...@@ -65,7 +65,7 @@ export const MoneyTotalBox = registerVirtualBox('moneyTotalBox', props => { ...@@ -65,7 +65,7 @@ export const MoneyTotalBox = registerVirtualBox('moneyTotalBox', props => {
// 筛选配送方式为物流的商品并且使用了运费模板 // 筛选配送方式为物流的商品并且使用了运费模板
const logsiticsDataMaps = data.filter(v => v.logistics && v.logistics.useTemplate && v.logistics.deliveryType === 1) const logsiticsDataMaps = data.filter(v => v.logistics && v.logistics.useTemplate && v.logistics.deliveryType === 1)
if (logsiticsDataMaps.length > 0) { if (logsiticsDataMaps.length > 0) {
PublicApi.postLogisticsFreightRemoteAddDetail({ PublicApi.postLogisticsFreightTemplateCalFreightPrice({
orderProductList: logsiticsDataMaps.map(v => ({ orderProductList: logsiticsDataMaps.map(v => ({
templateId: v.logistics.templateId, templateId: v.logistics.templateId,
weight: v.logistics.weight weight: v.logistics.weight
...@@ -209,6 +209,14 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => { ...@@ -209,6 +209,14 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
if(judgement.includes(false)){ if(judgement.includes(false)){
throw new Error('请选择支付方式或者支付渠道') throw new Error('请选择支付方式或者支付渠道')
} }
// logistics render字段字符串化
params.orderProductRequests = params.orderProductRequests.map(item => {
let logs: any = { ...item.logistics, render: JSON.stringify(item.logistics.render) };
return {
...item,
logistics: logs
}
})
setBtnLoading(true) setBtnLoading(true)
fnResult = id ? await PublicApi.postOrderProcurementOrderUpdate({...params, id}) : await PublicApi.postOrderProcurementOrderAddReinsurancePolicy(params) fnResult = id ? await PublicApi.postOrderProcurementOrderUpdate({...params, id}) : await PublicApi.postOrderProcurementOrderAddReinsurancePolicy(params)
break; break;
......
...@@ -76,12 +76,14 @@ export const useProductTable = (ctx: ISchemaFormActions | ISchemaFormAsyncAction ...@@ -76,12 +76,14 @@ export const useProductTable = (ctx: ISchemaFormActions | ISchemaFormAsyncAction
} }
const handleSave = row => { const handleSave = row => {
console.log(row, 'row')
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const newData = [...ctx.getFieldValue('orderProductRequests')]; const newData = [...ctx.getFieldValue('orderProductRequests')];
const index = newData.findIndex(item => row.id === item.id); const index = newData.findIndex(item => row.id === item.id);
const item = newData[index]; const item = newData[index];
row['money'] = getUnitPriceTotal(row) row['money'] = getUnitPriceTotal(row)
row['productId'] = row.id // 新增的时候接口字段id,commodityId 编辑的时候id,productId
row['productId'] = row?.commodityId ? row.id : row.productId
newData.splice(index, 1, { newData.splice(index, 1, {
...item, ...item,
...row, ...row,
......
import React, { useState, useCallback, useRef } from 'react'; import React, { useState, useCallback, useRef, useContext, useEffect } from 'react';
import { OrderDetailContext } from '../../../_public/order/context'; import { OrderDetailContext } from '../../../_public/order/context';
import { PublicApi } from '@/services/api'; import { PublicApi } from '@/services/api';
import { Button } from 'antd'; import { Button } from 'antd';
...@@ -17,6 +17,17 @@ const ReadyConfirmContract: React.FC = () => { ...@@ -17,6 +17,17 @@ const ReadyConfirmContract: React.FC = () => {
payRef.current.setVisible(true) payRef.current.setVisible(true)
}, []) }, [])
const renderPayPrice = () => {
const {data, currentPayInfoId} = formContext
if(data){
if(data.paymentInformationResponses.length > 0){
let obj = data.paymentInformationResponses.filter(item => item.id === Number(currentPayInfoId))[0]
if(obj)
return obj.payPrice
}
}
}
return ( return (
<div> <div>
<OrderDetailContext.Provider value={formContext}> <OrderDetailContext.Provider value={formContext}>
...@@ -27,7 +38,8 @@ const ReadyConfirmContract: React.FC = () => { ...@@ -27,7 +38,8 @@ const ReadyConfirmContract: React.FC = () => {
</Button> </Button>
<div style={{ textAlign: 'right' }}> <div style={{ textAlign: 'right' }}>
<p style={{ marginTop: 12, fontSize: 12, color: '#6B778C' }}>本次需支付</p> <p style={{ marginTop: 12, fontSize: 12, color: '#6B778C' }}>本次需支付</p>
{ formContext.data && <p>{formContext.data.sumPrice}</p> } {/* { formContext.data && <p>¥{formContext.data.sumPrice}</p> } */}
{ formContext.data && <p>{ renderPayPrice() }</p> }
</div> </div>
</> </>
} /> } />
......
...@@ -144,18 +144,7 @@ const ReceivedDetail: React.FC = () => { ...@@ -144,18 +144,7 @@ const ReceivedDetail: React.FC = () => {
} }
extra={( extra={(
<> <>
{
pageStatus === PageStatus.EDIT && (
<Button
type="primary"
icon={<FormOutlined />}
loading={submitLoading}
onClick={() => formActions.submit()}
>
修改
</Button>
)
}
</> </>
)} )}
> >
......
...@@ -144,18 +144,7 @@ const ReceivedDetail: React.FC = () => { ...@@ -144,18 +144,7 @@ const ReceivedDetail: React.FC = () => {
} }
extra={( extra={(
<> <>
{
pageStatus === PageStatus.EDIT && (
<Button
type="primary"
icon={<FormOutlined />}
loading={submitLoading}
onClick={() => formActions.submit()}
>
修改
</Button>
)
}
</> </>
)} )}
> >
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment