Commit 08095c8b authored by XieZhiXiong's avatar XieZhiXiong
parents 9df43840 4442f6d2
......@@ -74,6 +74,13 @@ const MenuSlider: React.FC<MenuSliderProps> = (props) => {
changeOpenKeys(keys)
}
const clickMenuItem = ({ item, key, keyPath, domEvent }) => {
// 对比url和点击项的key 相同的话重载页面
if(key === currentSelectKey[currentSelectKey.length-1]) {
window.location.reload()
}
}
return <>
<OuterSider {...props} />
<Sider theme="light" className="menu_sider" collapsed={props.collapseState}>
......@@ -87,6 +94,7 @@ const MenuSlider: React.FC<MenuSliderProps> = (props) => {
selectedKeys={currentSelectKey}
openKeys={openKeys}
mode="inline"
onClick={clickMenuItem}
>
{
menuItemsCache
......
import { Tooltip } from 'antd';
import { BellOutlined, CustomerServiceOutlined } from '@ant-design/icons';
import React from 'react';
import React, { useCallback, useRef, useLayoutEffect } from 'react';
// import { connect, ConnectProps } from 'umi';
// import { ConnectState } from '@/models/connect';
import Avatar from './AvatarDropdown';
......@@ -9,6 +9,7 @@ import Location from './Location';
import Roles from './Roles';
import styles from '../styles/RightContent.less';
import { Link } from 'umi';
import { getAuth } from '@/utils/auth'
// export type SiderTheme = 'light' | 'dark';
// export interface GlobalHeaderRightProps extends Partial<ConnectProps> {
......@@ -25,6 +26,35 @@ const GlobalHeaderRight: React.SFC<{}> = (props) => {
// 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 (
<div className={className}>
<Link to='/' style={{color: 'rgba(0, 0, 0, 0.85)'}}>返回商城</Link>
......
......@@ -527,7 +527,7 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
tempArr.push({ numberPrice: null, numberRange: { numberMin: minOrder, numberMax: null } })
setPriceForm.setFieldsValue({ladderPrice: true, ladderRange: tempArr})
}
}
}
}
const changeLadderPrice = (e: any) => {
......@@ -564,7 +564,7 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
)
let result = range.map(Number).reduce((a, b) => { if(a<b) return b })
if(!result) throw new Error('请正确输入阶梯数量范围');
if(range[0]!==minOrderNumber) throw new Error('阶段的起始值必须为最小起订数');
if(Number(range[0]) !== Number(minOrderNumber)) throw new Error('阶段的起始值必须为最小起订数');
callback()
}
} catch (err) {
......
......@@ -304,7 +304,7 @@ const Deatail: React.FC<{}> = () => {
if (query.orderId) {
PublicApi.getOrderPurchaseOrderDetails({id: query.orderId}).then(res => {
if(res.code === 1000) {
console.log(res.data, '查询销售订单详情')
actions.setFieldValue('receiverName', res.data.receiverName)
}
})
//发货单号
......@@ -595,7 +595,7 @@ const Deatail: React.FC<{}> = () => {
*/
const handleOnOK = (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) {
case 1://订单
setrelevanceType(params.orderType)//订单类型
......@@ -620,8 +620,8 @@ const Deatail: React.FC<{}> = () => {
case 2://发货单
// memberName 收货方
setShipmentOrderID(id)
actions.setFieldValue('shipmentOrderCode', orderNo)
actions.setFieldValue("receiverName", memberName)
actions.setFieldValue('shipmentOrderCode', invoicesNo)
actions.setFieldValue("receiverName", receiverName)
actions.setFieldValue('shipmentOrderId', id)// 发货单id
actions.setFieldValue("invoicesTypeId", 1)//发货单
actions.setFieldValue("receiverAddressId", deliveryAddresId)
......@@ -924,10 +924,10 @@ const Deatail: React.FC<{}> = () => {
</TabPane>
<TabPane key='tab-3' tab='运费'>
<FormItem labelAlign="left" labelCol={{ span: 2 }} editable={false} name="fregint" label="运费">
<>未报价</>
<>{initialValues.freightPrice || '未报价'}</>
</FormItem>
<FormItem labelAlign="left" labelCol={{ span: 2 }} editable={false} name="fregint2" label="结算方式">
<></>
<>{initialValues.freightPrice || '-'}</>
</FormItem>
</TabPane>
<TabPane key='tab-4' tab='流转记录'>
......
......@@ -53,12 +53,12 @@ const AccountLists: React.FC<{}> = () => {
dataIndex: 'memberRoleName',
key: 'memberRoleName',
},
{
title: '会员等级',
dataIndex: 'memberLevel',
key: 'memberLevel',
render: (t, r) => <LevelBrand level={r.level} />
},
// {
// title: '会员等级',
// dataIndex: 'memberLevel',
// key: 'memberLevel',
// render: (t, r) => <LevelBrand level={r.level} />
// },
{
title: '账户余额',
dataIndex: 'accountBalance',
......
......@@ -43,12 +43,12 @@ const AccountLists: React.FC<{}> = () => {
dataIndex: 'memberRoleName',
key: 'memberRoleName',
},
{
title: '所属会员等级',
dataIndex: 'memberLevel',
key: 'memberLevel',
render: (t, r) => <LevelBrand level={r.memberLevel} />
},
// {
// title: '所属会员等级',
// dataIndex: 'memberLevel',
// key: 'memberLevel',
// render: (t, r) => <LevelBrand level={r.memberLevel} />
// },
{
title: '会员等级类型',
dataIndex: 'memberLevelType',
......
......@@ -401,7 +401,7 @@ const PositionSetting:React.FC<PositionSettingProps> = (props) => {
type: 'string',
'x-component': 'ModalSearch',
'x-component-props': {
placeholder: '请输入商品名称/ID',
placeholder: '请输入商品名称',
align: 'flex-left',
},
},
......
import React from 'react';
import React, {useState, useEffect} from 'react';
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 { PageHeaderWrapper } from '@ant-design/pro-layout';
import { PlusOutlined } from '@ant-design/icons';
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 [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 = [
{
id: 1,
icon: '',
status: 'success',
type: '系统消息',
title: '订单发货',
message: '订单发货,请注意查收,清单发货,请注意查收!',
time: '2015-15-05',
},
{
id: 2,
icon: '',
status: 'success',
type: '系统消息',
title: '订单收货',
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 getList = async (params) => {
///report/message/member/page
const res = await PublicApi.getReportMessageMemberPage(params);
if(res.code === 1000) {
return res.data
}
return {
totalCount: 0,
data: []
}
}
const handlePaginationChange = (page, pageSize) => {
getList({page, pageSize})
.then((data) => {
setDataSource(data);
})
}
const renderMessage = (data) => {
......@@ -69,25 +68,23 @@ const Message: React.FC<{}> = () => {
>
<List
itemLayout="horizontal"
dataSource={data}
dataSource={dataSource.data}
className={styles.customList}
pagination={{
onChange: page => {
console.log(page);
},
onChange: handlePaginationChange,
pageSize: 10,
size: "small",
showQuickJumper: true,
total: 4,
total: dataSource.totalCount,
showTotal: showTotal
}}
renderItem={item => (
<List.Item>
<List.Item.Meta
avatar={<Avatar src={item.icon} />}
avatar={<Avatar src={msg_system} />}
title={renderMessage(item)}
/>
<div>{item.time}</div>
<div>{moment(item.createTime).format('YYYY-MM-DD HH:mm:ss')}</div>
</List.Item>
)}
/>
......
......@@ -18,7 +18,8 @@ interface OrderDetailHookProps {
export const useOrderDetail = (options: OrderDetailHookProps) => {
// 订单详情内容
const [formData, setFormData] = useState<any>(null)
// 当前的支付信息id 默认第一个
const [currentPayInfoId, setCurrentPayInfoId] = useState<any>(null)
// 支付信息列表
const [payList, setPaylist] = useState<any[]>([])
......@@ -44,10 +45,14 @@ export const useOrderDetail = (options: OrderDetailHookProps) => {
if (id) {
const fn = type === 'purchaseOrder' ? PublicApi.getOrderProcurementOrderDetails : PublicApi.getOrderPurchaseOrderDetails
fn({ id }, { ctlType: "none" }).then(res => {
if (res.code === 1000) {
setFormData(res.data)
const { code, data, message: msg } = res
if (code === 1000) {
setFormData(data)
if(data.paymentInformationResponses.length > 0){
setCurrentPayInfoId(data.paymentInformationResponses[0].id)
}
} else {
message.error(res.message)
message.error(msg)
}
})
}
......@@ -67,9 +72,11 @@ export const useOrderDetail = (options: OrderDetailHookProps) => {
// 需共享的状态
const formContext = {
data: formData,
currentPayInfoId,
payList,
ctl: {
setData: setFormData
setData: setFormData,
setPayId: setCurrentPayInfoId,
},
reloadFormData
}
......
......@@ -50,4 +50,53 @@
.amount2 {
font-size: 16px;
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 { 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 { OrderDetailContext } from '../../_public/order/context'
import cx from 'classnames'
......@@ -70,13 +70,16 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => {
const formRef = useRef<any>({})
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 ? formatting(payList, "payType") : []
const { run, loading } = useHttpRequest(PublicApi.postOrderPendingOrderPay)
const [visible, setVisible] = useState(false)
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
useEffect(() => {
if (currentRef) {
......@@ -90,6 +93,7 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => {
useEffect(() => {
if (!visible) {
setCurrent(0)
setPayStep(0)
setChecked(null)
}
}, [visible])
......@@ -99,39 +103,63 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => {
if (checked.id) {
if (checked.id === 5) { // 线下支付
setCurrent(1)
setPayStep(1)
} else if (checked.id === 6) { // 授信额度支付
setCurrent(2)
setPayStep(1)
} else if (checked.id === 4) {
setCurrent(3)
setPayStep(1)
} else {
message.error('暂只支持线下支付和授信额度支付方式')
message.error('暂只支持线下支付、授信额度支付、余额支付方式')
}
} else {
message.error('请先选择支付方式')
}
return;
}
// console.log(confirm, current, payStep, '119')
// 开始提交线下支付数据
if(current === 1) {
const payOrderUrls = formRef.current.urlList
const checkedId = checked.id
if (!payOrderUrls || payOrderUrls.length === 0) {
message.error('请先上传凭证')
return;
}
if (!checkedId) {
message.error('未选择支付方式')
return;
}
// 开始提交数据
const payOrderUrls = formRef.current.urlList
const paymentInformationId = checked.id
if (!payOrderUrls || payOrderUrls.length === 0) {
message.error('请先上传凭证')
return;
}
if (!paymentInformationId) {
message.error('未选择支付方式')
return;
}
// 当前选中的支付信息
let PayInfoObj = data.paymentInformationResponses.filter(item => item.id === Number(currentPayInfoId))[0]
const params = {
id: Number(id),
payOrderUrls: payOrderUrls.join(','),
paymentInformationId
const params = {
id: Number(id),
payOrderUrls: payOrderUrls.join(','),
paymentInformationId: PayInfoObj.id,
payTypeId: PayInfoObj.channel,
// // 预留
// payPassword,
// remark
}
const { code } = await run(params)
if (code === 1000) {
history.goBack()
}
} else if (current === 2) {
// 开始提交授信支付数据 (需要输入支付密码)
console.log('开始提交授信支付数据')
setPayStep(2)
setCurrent(1000)
} else if(current === 3) {
// 开始提交余额支付数据 (需要输入支付密码)
console.log('开始提交余额支付数据')
setPayStep(2)
setCurrent(1000)
}
const { code } = await run(params)
if (code === 1000) {
history.goBack()
}
confirm && confirm()
}
......@@ -140,6 +168,7 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => {
setVisible(false)
} else {
setCurrent(0)
setPayStep(0)
}
}
......@@ -149,6 +178,57 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => {
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 (
<Modal
width={704}
......@@ -156,9 +236,12 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => {
visible={visible}
onOk={handleConfirm}
onCancel={handleCancel}
cancelText={current === 0 ? '取消' : '上一步'}
okText={current === 0 ? '下一步' : '确认'}
confirmLoading={loading}
footer={renderModalFooter()}
destroyOnClose={true}
maskClosable={false}
// cancelText={current === 0 ? '取消' : '上一步'}
// okText={current === 0 ? '下一步' : '确认'}
// confirmLoading={loading}
>
{current === 0 &&
transformPayList && Object.entries(transformPayList).map(([key, value]) => <Row key={key} style={{ marginBottom: 24 }}>
......@@ -174,7 +257,7 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => {
</Col>
</Row>)
}
{/* 线下支付线上确认 */}
{
current === 1 &&
<div>
......@@ -195,7 +278,7 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => {
</Upload>
</div>
}
{/* 授信支付 */}
{
current === 2 &&
<div>
......@@ -234,6 +317,53 @@ const OrderPayModal: React.FC<OrderPayModalProps> = (props) => {
</p>
</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>
)
......
......@@ -17,7 +17,7 @@ const TabHeader = ({dataSource}) => {
<div className={style.smallnumber}>{dataSource.payPrice || 0}</div>
</Col>
<Col>
<StatusColors status={5} type='out'/>
<StatusColors status={dataSource.externalState} type='out'/>
</Col>
</Row>
}
......@@ -30,11 +30,18 @@ const payTextList = ["",
'授信支付',
'货到付款'
]
const OrderPayTabs:React.FC<OrderPayTabsProps> = (props) => {
const { data, payList } = useContext(OrderDetailContext)
const { data, payList, ctl } = useContext(OrderDetailContext)
const onChange = (activeKey) => {
ctl.setPayId(activeKey)
}
return (
<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}/>}>
<Row>
<Col className={style.fontGray} span={4}>支付环节: </Col>
......
......@@ -68,7 +68,7 @@ export const MoneyTotalBox = ({ dataSource, preview }) => {
// // 筛选配送方式为物流的商品并且使用了运费模板
// const logsiticsDataMaps = orderProductRequests.filter(v => v.logistics && v.logistics.useTemplate && v.logistics.deliveryType === 1)
// if (logsiticsDataMaps.length > 0) {
// PublicApi.postLogisticsFreightRemoteAddDetail({
// PublicApi.postLogisticsFreightTemplateCalFreightPrice({
// orderProductList: logsiticsDataMaps.map(v => ({
// templateId: v.templateId,
// weight: v.weight
......
......@@ -107,7 +107,7 @@ export const MoneyTotalBox = ({ dataSource, isEditData }) => {
// 筛选配送方式为物流的商品并且使用了运费模板
const logsiticsDataMaps = orderProductRequests.filter(v => v.logistics && v.logistics.useTemplate && v.logistics.deliveryType === 1)
if (logsiticsDataMaps.length > 0) {
PublicApi.postLogisticsFreightRemoteAddDetail({
PublicApi.postLogisticsFreightTemplateCalFreightPrice({
orderProductList: logsiticsDataMaps.map(v => ({
templateId: v.templateId,
weight: v.weight
......
......@@ -273,14 +273,14 @@ const comfirmDialog: React.FC<Params> = (props, { onRef }) => {
<Tabs defaultActiveKey='tab1'
tabPosition="left"
>
<Tabs.TabPane tab='基本信息' key="tab-1">
<Tabs.TabPane tab='基本信息' key="tab-1" forceRender>
<Form.Item
label='对应需求单规格型号'
name='model'
initialValue={props.initialValues.model}
rules={[
{
message: '请选择规格型号',
required: true
}
]}
......@@ -349,7 +349,7 @@ const comfirmDialog: React.FC<Params> = (props, { onRef }) => {
{
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}>
{item.customerAttributeValueList.map((child, childIndex) => {
return <Badge text={child.value} key={childIndex} status="default" />
......@@ -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
label='单位'
name='purchaseNuit'
initialValue={props.initialValues.purchaseNuit}
rules={[
{
message: '请选择单位',
required: true
}
]}
......@@ -381,6 +382,7 @@ const comfirmDialog: React.FC<Params> = (props, { onRef }) => {
initialValue={props.initialValues.purchaseQuantity}
rules={[
{
message: '请选择采购数量',
required: true
}
]}
......@@ -393,6 +395,7 @@ const comfirmDialog: React.FC<Params> = (props, { onRef }) => {
name='price'
rules={[
{
message: '请输入报价单价',
required: true
}
]}
......
......@@ -1008,6 +1008,7 @@ const Detail: React.FC<{}> = () => {
initialValue={initialValues.quotationSummary}
rules={[
{
message: '请输入报价单摘要',
required: true
}
]}
......@@ -1021,6 +1022,7 @@ const Detail: React.FC<{}> = () => {
name='requisitionFormNo'
rules={[
{
message: '请选择对应需求单号',
required: true
}
]}
......@@ -1098,6 +1100,7 @@ const Detail: React.FC<{}> = () => {
label="最小起订"
rules={[
{
message: '请输入最小起订',
required: true
}
]}
......
......@@ -47,7 +47,10 @@ const EnquiryGoods: React.FC<queryProps> = (props) => {
category: v.customerCategoryName,
brand: v.brandName,
unit: v.unitName,
purchaseCount: 1
purchaseCount: 1,
logistics: v.logistics,
memberId: v.memberId,
memberRoleId: v.memberRoleId
})
setinquiryGoods(inquiry);
......@@ -274,7 +277,8 @@ const EnquiryGoods: React.FC<queryProps> = (props) => {
confirm={handleOkAddMember}
cancel={handleCancelAddMember}
visible={visibleChannelMember}
resetModal={{ destroyOnClose: true, forceRender: true }}
forceRender={visibleChannelMember}
resetModal={{ destroyOnClose: true}}
columns={columnsSetMember}
rowSelection={memberRowSelection}
fetchTableData={params => fetchGoodsList(params)}
......
......@@ -9,7 +9,7 @@ import { PublicApi } from '@/services/api'
// @todo 后续需要优化, 样式,目录文件等。
const PriceComp = (props) => {
const { priceSection = {} } = props
const priceTransKeys = Object.keys(priceSection)
const priceTransKeys = Object.keys(priceSection || {})
// 出现0-0 表示没有单价区间范围
if (priceTransKeys.length === 1 && priceTransKeys[0] === '0-0') {
return <span style={{color: '#E63F3B'}}>{'¥' + priceSection[priceTransKeys[0]]}</span>
......
......@@ -129,7 +129,7 @@ export const useOrderFormInitEffect = (ctx: ISchemaFormActions | ISchemaFormAsyn
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
}
// 商城下单
......@@ -145,6 +145,8 @@ export const useOrderFormInitEffect = (ctx: ISchemaFormActions | ISchemaFormAsyn
// }
return assign
}).sort((prev, next) => prev.disabled ? prev.value : next.value - prev.value)
console.log(state.props.enum)
})
// query中存在modelType参数, 则是从其他页面跳转而来,需禁用其余query选项
......
......@@ -65,7 +65,7 @@ export const MoneyTotalBox = registerVirtualBox('moneyTotalBox', props => {
// 筛选配送方式为物流的商品并且使用了运费模板
const logsiticsDataMaps = data.filter(v => v.logistics && v.logistics.useTemplate && v.logistics.deliveryType === 1)
if (logsiticsDataMaps.length > 0) {
PublicApi.postLogisticsFreightRemoteAddDetail({
PublicApi.postLogisticsFreightTemplateCalFreightPrice({
orderProductList: logsiticsDataMaps.map(v => ({
templateId: v.logistics.templateId,
weight: v.logistics.weight
......@@ -209,6 +209,14 @@ const PurchaseOrderDetail:React.FC<PurchaseOrderDetailProps> = (props) => {
if(judgement.includes(false)){
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)
fnResult = id ? await PublicApi.postOrderProcurementOrderUpdate({...params, id}) : await PublicApi.postOrderProcurementOrderAddReinsurancePolicy(params)
break;
......
......@@ -76,12 +76,14 @@ export const useProductTable = (ctx: ISchemaFormActions | ISchemaFormAsyncAction
}
const handleSave = row => {
console.log(row, 'row')
return new Promise((resolve, reject) => {
const newData = [...ctx.getFieldValue('orderProductRequests')];
const index = newData.findIndex(item => row.id === item.id);
const item = newData[index];
row['money'] = getUnitPriceTotal(row)
row['productId'] = row.id
// 新增的时候接口字段id,commodityId 编辑的时候id,productId
row['productId'] = row?.commodityId ? row.id : row.productId
newData.splice(index, 1, {
...item,
...row,
......
import React, { useState, useCallback, useRef } from 'react';
import React, { useState, useCallback, useRef, useContext, useEffect } from 'react';
import { OrderDetailContext } from '../../../_public/order/context';
import { PublicApi } from '@/services/api';
import { Button } from 'antd';
......@@ -17,6 +17,17 @@ const ReadyConfirmContract: React.FC = () => {
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 (
<div>
<OrderDetailContext.Provider value={formContext}>
......@@ -27,7 +38,8 @@ const ReadyConfirmContract: React.FC = () => {
</Button>
<div style={{ textAlign: 'right' }}>
<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>
</>
} />
......
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