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

fix: 代客下单操作采购会员地址

parent ba63d947
......@@ -65,7 +65,7 @@ const ParameterSetting: React.FC<{}> = () => {
...filterData[0],
paramList: expressTimeVisible ? filterData[0]['paramList'].map(param => {
return {
timeRange: [moment(param.startTime, 'HH:mm:ss'), moment(param.endTime, 'HH:mm:ss')]
timeRange: [param.startTime ? moment(param.startTime, 'HH:mm:ss') : null, param.endTime ? moment(param.endTime, 'HH:mm:ss') : null]
}
}) : []
}
......@@ -162,7 +162,6 @@ const ParameterSetting: React.FC<{}> = () => {
}
const handleSubmit = async (type?) => {
console.log(shopLists, 'shopLists')
let codeNumber = null
setConfirmLoading(true)
if(type === 'autoReceive') {
......@@ -172,7 +171,27 @@ const ParameterSetting: React.FC<{}> = () => {
const { code } = await PublicApi.postOrderParamUpdateAppointmentDay([...shopLists])
codeNumber = code
} else if(type === 'timeLine') {
const { code } = await PublicApi.postOrderParamUpdateDeliveryTime([...shopLists])
// 过滤开启不设置时间段的null值
const params = [...shopLists]
const _prams = params.map(item => {
const _paramList = item.paramList.filter(Boolean)
return {
...item,
paramList: _paramList.map(_item => {
if(_item?.timeRange) {
const time = _item.timeRange // 转换后端返回值
return {
startTime: moment(time[0]).format('HH:mm'),
endTime: moment(time[1]).format('HH:mm')
}
} else {
return _item
}
})
}
})
const { code } = await PublicApi.postOrderParamUpdateDeliveryTime(_prams)
codeNumber = code
} else if(type === 'priceLine') {
const { code } = await PublicApi.postProductPriceCurveSetSavePriceCurveSet({priceCurveSetList : [...shopLists]})
......
......@@ -79,11 +79,11 @@ const PurchaseOrder: React.FC<PurchaseOrderProps> = (props) => {
{ id: 2, name: "退货"},
{ id: 3, name: "维修"},
])
const [fetchParams, setFetchParams] = useState<any>()
const fetchParams = useRef<any>({})
const { token, memberId, memberRoleId } = (getAuth() || {})
const loadingTableData = (params) => {
setFetchParams(params)
fetchParams.current = {...params}
return fetchTableData(params)
}
......@@ -189,7 +189,16 @@ const PurchaseOrder: React.FC<PurchaseOrderProps> = (props) => {
const handleExport = async () => {
console.log(`${process.env.BACK_GATEWAY}/order/vendor/export?token=${token}`)
window.open(`${process.env.BACK_GATEWAY}/order/buyer/export?token=${token}`, '_blank')
const p = {...fetchParams.current}
delete p.current
delete p.pageSize
let exportParams = ''
Object.keys(p).forEach(item => {
exportParams += `&${item}=${p[item]}`
})
window.open(`${process.env.BACK_GATEWAY}/order/buyer/export?token=${token}${exportParams}`, '_blank')
// const downloadLink = document.createElement('a')
// downloadLink.style.display = 'none';
......@@ -251,11 +260,11 @@ const PurchaseOrder: React.FC<PurchaseOrderProps> = (props) => {
}
}
if(!_data.deliveryTime) { // 有时间段 时间控件不显示时分
state.props['x-component-props'].showTime = true
state.props['x-component-props'].format = 'YYYY-MM-DD HH:mm'
} else {
state.props['x-component-props'].showTime = false
state.props['x-component-props'].format = 'YYYY-MM-DD'
} else {
state.props['x-component-props'].showTime = true
state.props['x-component-props'].format = 'YYYY-MM-DD HH:mm'
}
})
adjustActions.setFieldState('timeLine', prevState => {
......
......@@ -21,7 +21,7 @@ export const fetchOrderApi = {
/** 根据下单类型获取会员列表 */
async getMemberListByModelType(params) {
const { data } = await PublicApi.getMemberManageAllPageByordertype(params)
const { data } = await PublicApi.getMemberManageAllProviderPage(params)
return data
},
......
......@@ -30,15 +30,15 @@ const MemberModalTable:React.FC<MemberModalTableProps> = (props) => {
const handleConfirm = () => {
const rowItem = rowSelectionCtl.selectRow[0]
if (rowItem) {
schemaAction.setFieldValue('supplyMembersName', rowItem.name)
schemaAction.setFieldValue('supplyMembersId', rowItem.memberId)
schemaAction.setFieldValue('supplyMembersRoleId', rowItem.roleId)
schemaAction.setFieldValue('vendorMemberName', rowItem.name)
schemaAction.setFieldValue('vendorMemberId', rowItem.memberId)
schemaAction.setFieldValue('vendorRoleId', rowItem.roleId)
}
confirmModal && confirmModal()
setVisible(false)
// 清空之前可能存在的商品支付信息数据
schemaAction.setFieldValue('orderProductRequests', [])
schemaAction.setFieldValue('paymentInformationResponses', [])
schemaAction.setFieldValue('products', [])
schemaAction.setFieldValue('payments', [])
if(props?.productRef) {
props.productRef.current.rowSelectionCtl.setSelectRow([])
props.productRef.current.rowSelectionCtl.setSelectedRowKeys([])
......
......@@ -29,6 +29,7 @@ import { fectchShopListsSource } from '@/utils/type'
import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect'
import { fetchOrderApi } from './apis'
import MemberModalTable from './components/memberModalTable'
import { GlobalConfig } from '@/global/config'
export interface AgentOrderDetailProps {}
......@@ -45,11 +46,6 @@ const RowStyle = styled(props => <Row style={{marginTop: 12}} justify='end' {...
const addSchemaAction = createFormActions()
// 获取商城列表
const fetchShopLists = async () => {
return await fectchShopListsSource({hasMemberType: 1})
}
// 总计金额联动框
export const MoneyTotalBox = registerVirtualBox('moneyTotalBox', () => {
const { form } = useFormSpy({ selector: [['onFieldValueChange', 'products']], reducer: v => v })
......@@ -118,7 +114,6 @@ export const MoneyTotalBox = registerVirtualBox('moneyTotalBox', () => {
const AgentOrderDetail:React.FC<AgentOrderDetailProps> = (props) => {
const shopDataRef = useRef<any>({})
const memberRef = useRef<any>({})
const { name, memberId, memberRoleId } = getAuth() || {}
const [formLoading, setFormLoading] = useState(false)
const [btnLoading, setBtnLoading] = useState(false)
const update = useUpdate()
......@@ -389,7 +384,6 @@ const AgentOrderDetail:React.FC<AgentOrderDetailProps> = (props) => {
SelectContract
}}
effects={($, ctx) => {
useAsyncSelect('shopId', fetchShopLists, ['name', 'id'])
$('onFormMount').subscribe(() => {
// if (id || modelType) {
// ctx.setFieldState('orderMode', state => {
......@@ -407,6 +401,20 @@ const AgentOrderDetail:React.FC<AgentOrderDetailProps> = (props) => {
// 商品信息的改动 驱动支付信息变化
useProductTableChangeForPay(ctx, update)
// 供应商变动查询商城列表
$('onFieldValueChange', 'vendorMemberId').subscribe(async state => {
const { data } = await PublicApi.postManageWebShopWebAll({
siteId: GlobalConfig.global.siteInfo.id,
environment: 1,
hasMemberType: 1,
memberId: state.value,
roleId: addSchemaAction.getFieldValue('vendorRoleId')
})
ctx.setFieldState('shopId', prevState => {
prevState.props.enum = data.map(item => ({ ...item, label: item.name, value: item.id }))
})
})
// 监听商品总价的变更, 支付比例计算
$('sumPrice').subscribe(payload => {
const payment = addSchemaAction.getFieldValue('payments')
......
......@@ -25,9 +25,9 @@ export const fetchOrderApi = {
return data
},
/** 获取所有商品收货地址 */
async getProductAddressAll() {
const { data } = await PublicApi.getLogisticsSelectListReceiverAddress()
/** 获取代客 采购会员收货地址 */
async getProductAddressAll(params) {
const { data } = await PublicApi.getLogisticsReceiverAddressAgentPage(params)
return data
},
/** 获取发票列表 */
......
......@@ -11,7 +11,8 @@ export interface AddressModalProps {
mode: 'add' | 'edit' | 'preview' | 'default',
currentRef?: any,
formInitValue?: any,
reloadAddress?()
reloadAddress?(),
ctx: any
}
const titleMaps = {
......@@ -29,7 +30,7 @@ const fetchTelCode = async () => {
const AddressModal:React.FC<AddressModalProps> = (props) => {
const addressData = useRef<any[]>([])
const { mode, formInitValue } = props
const { mode, formInitValue, ctx } = props
const selfInitValue = useMemo(() => mode === 'add' ? null : formInitValue, [mode, formInitValue])
// 由于默认是number类型, 但switch组件只接收boolean
if (selfInitValue) {
......@@ -61,14 +62,20 @@ const AddressModal:React.FC<AddressModalProps> = (props) => {
const provinceName = findAreaNameByCode(provinceData, provinceCode)
const cityName = findAreaNameByCode(cityData, cityCode)
const districtName = findAreaNameByCode(districtData, districtCode)
const roleId = ctx.getFieldValue('buyerRoleId')
const memberId = ctx.getFieldValue('buyerMemberId')
const params = {
...value,
isDefault: Number(!!value.isDefault),
provinceName,
cityName,
districtName
districtName,
roleId,
memberId
}
const fn = mode === 'edit' ? PublicApi.postLogisticsReceiverAddressUpdate : PublicApi.postLogisticsReceiverAddressAdd
const fn = mode === 'edit' ? PublicApi.postLogisticsReceiverAddressAgentUpdate : PublicApi.postLogisticsReceiverAddressAgentAdd
await fn(params)
resetForm()
props.currentRef.current.setVisible(false)
......
......@@ -58,7 +58,7 @@ const SelectAddress = (props: ISchemaFieldComponentProps) => {
})
const modalRef = useRef<any>({})
const { dataSource, showMore } = state
let { value = {}, mutators, editable } = props
let { value = {}, mutators, editable, form } = props
const transformData = transformDefaultData(dataSource)
const showDataSource = showMore ? [...transformData].splice(0, 3) : transformData
......@@ -79,7 +79,9 @@ const SelectAddress = (props: ISchemaFieldComponentProps) => {
}
const reloadAddress = () => {
fetchOrderApi.getProductAddressAll().then(data => {
const roleId = form.getFieldValue('buyerRoleId')
const memberId = form.getFieldValue('buyerMemberId')
fetchOrderApi.getProductAddressAll({memberId, roleId, current: 1, pageSize: 9999}).then(data => {
setFieldState({
dataSource: data,
showMore
......@@ -97,7 +99,7 @@ const SelectAddress = (props: ISchemaFieldComponentProps) => {
const handleDelete = async (id, e) => {
e.stopPropagation()
try {
const result = await PublicApi.postLogisticsReceiverAddressDelete({ id })
const result = await PublicApi.postLogisticsReceiverAddressAgentDelete({ id })
reloadAddress()
} catch (error) {
......@@ -145,7 +147,7 @@ const SelectAddress = (props: ISchemaFieldComponentProps) => {
显示更多{showMore ? <CaretDownOutlined /> : <CaretUpOutlined />}
</div>
}
<AddressModal mode={mode} formInitValue={formInitValue} currentRef={modalRef} reloadAddress={reloadAddress} />
<AddressModal mode={mode} formInitValue={formInitValue} currentRef={modalRef} reloadAddress={reloadAddress} ctx={form} />
</div>
)
}
......
......@@ -97,6 +97,7 @@ export const procurementProcessField = (value) => {
vendorMemberId: item.memberId,
vendorRoleId: item.memberRoleId,
vendorMemberName: item.memberName,
price: item.money / item.purchaseCount / item.memberPrice,
// 上游字段
supplyMemberId: item.upperMemberId,
supplyRoleId: item.upperMemberRoleId,
......
......@@ -121,11 +121,11 @@ export const useOrderDeliverTimeEffect = async (ctx: ISchemaFormActions | ISchem
}
}
if(data.paramList?.length) { // 有时间段 时间控件不显示时分
state.props['x-component-props'].showTime = true
state.props['x-component-props'].format = 'YYYY-MM-DD HH:mm'
} else {
state.props['x-component-props'].showTime = false
state.props['x-component-props'].format = 'YYYY-MM-DD'
} else {
state.props['x-component-props'].showTime = true
state.props['x-component-props'].format = 'YYYY-MM-DD HH:mm'
}
})
ctx.setFieldState('timeLine', state => {
......@@ -140,19 +140,26 @@ export const useOrderDeliverTimeEffect = async (ctx: ISchemaFormActions | ISchem
// 表单初始化时,对应操作
export const useOrderFormInitEffect = (ctx: ISchemaFormActions | ISchemaFormAsyncActions) => {
FormEffectHooks.onFormMount$().subscribe(async () => {
// 写入收货地址数据
useProductAddress(ctx)
})
// FormEffectHooks.onFormMount$().subscribe(async () => {
// // 写入收货地址数据
// useProductAddress(ctx)
// })
FormEffectHooks.onFieldValueChange$('hasInvoice').subscribe(state => {
if (state.value) {
useInvoiceList(ctx)
}
})
// 采购会员变动 获取收货地址
FormEffectHooks.onFieldValueChange$('buyerMemberId').subscribe(state => {
if (state.value) {
useProductAddress(ctx, state.value, ctx.getFieldValue('buyerRoleId'))
}
})
}
export const useProductAddress = (ctx: ISchemaFormActions | ISchemaFormAsyncActions) => {
fetchOrderApi.getProductAddressAll().then(data => {
export const useProductAddress = (ctx: ISchemaFormActions | ISchemaFormAsyncActions, memberId, roleId) => {
console.log(memberId, roleId, 'memberId, roleId')
fetchOrderApi.getProductAddressAll({memberId, roleId, current: 1, pageSize: 9999}).then(({data}) => {
ctx.setFieldState('deliveryAddresId', state => {
if (data.length > 0 && !state.value) {
// 初始化时存在数据, 默认帮用户选中第一个(默认地址)
......
import React, { useRef, useState, useEffect } from 'react'
import React, { useRef, useState, useEffect, useMemo } from 'react'
import { history } from 'umi'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import ReutrnEle from '@/components/ReturnEle'
......@@ -28,6 +28,7 @@ import { getAuth } from '@/utils/auth';
import { fectchShopListsSource } from '@/utils/type'
import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect'
import { fetchOrderApi } from './apis'
import { debounce } from 'lodash'
export interface AgentOrderDetailProps {}
......@@ -260,7 +261,7 @@ const AgentOrderDetail:React.FC<AgentOrderDetailProps> = (props) => {
id: params.deliveryAddresId?.id || params.deliveryAddresId
})
params.consignee = {
deliverDate: params.deliverDate,
// deliverDate: params.deliverDate,
consigneeId: addressDetail.id,
consignee: addressDetail.receiverName,
provinceCode: addressDetail.provinceCode,
......@@ -273,9 +274,11 @@ const AgentOrderDetail:React.FC<AgentOrderDetailProps> = (props) => {
telephone: addressDetail.tel,
defaultConsignee: !!addressDetail.isDefault,
}
// 组合配送时间字段
if(params?.timeLine) {
params.consignee.startTime = params.timeLine.split('-')[0]
params.consignee.endTime = params.timeLine.split('-')[1]
params.deliverPeriod = `${params.deliverDate} ${params.timeLine}`
} else {
params.deliverPeriod = params.deliverDate
}
}
......@@ -289,11 +292,6 @@ const AgentOrderDetail:React.FC<AgentOrderDetailProps> = (props) => {
const _params = procurementProcessField(params)
const buyerMembers = addSchemaAction.getFieldState('buyerMemberId').props.enum || []
const buyerMember = buyerMembers.filter(item => item.value === params.buyerMemberId)[0]
params.buyerMemberName = buyerMember['name']
params.buyerRoleId = buyerMember['roleId']
const shops = addSchemaAction.getFieldState('shopId').props.enum || []
const shop = shops.filter(item => item.value === params.shopId)[0]
params.shopType = shop['type']
......@@ -360,19 +358,36 @@ const AgentOrderDetail:React.FC<AgentOrderDetailProps> = (props) => {
schemaActions: addSchemaAction,
}
const handleMemberSearch = (value) => {
if(value) {
fetchOrderApi.getMemberConsumeLists({ name: value }).then(data => {
addSchemaAction.setFieldState('buyerMemberId', state => {
state.props.enum = data.map(item => ({
...item,
label: `${item.name}/${item.memberTypeName}/${item.roleName}`,
value: item.memberId,
}))
// const handleMemberSearch = (value) => {
// if(value) {
// fetchOrderApi.getMemberConsumeLists({ name: value }).then(data => {
// addSchemaAction.setFieldState('buyerMemberId', state => {
// state.props.enum = data.map(item => ({
// ...item,
// label: `${item.name}/${item.memberTypeName}/${item.roleName}`,
// value: item.memberId,
// }))
// })
// })
// }
// }
const handleMemberSearch = useMemo(() => {
const loadOptions = (value) => {
if(value) {
fetchOrderApi.getMemberConsumeLists({ name: value }).then(data => {
addSchemaAction.setFieldState('buyerMemberMajorId', state => {
state.props.enum = data.map(item => ({
...item,
label: `${item.name}/${item.memberTypeName}/${item.roleName}`,
value: item.id,
}))
})
})
})
}
}
}
return debounce(loadOptions, 800);
}, [800])
return (
<PageHeaderWrapper
......@@ -433,6 +448,13 @@ const AgentOrderDetail:React.FC<AgentOrderDetailProps> = (props) => {
productSumPriceRef.current = payload
})
$('onFieldValueChange', 'buyerMemberMajorId').subscribe(state => {
const member = state.values[1]
ctx.setFieldValue('buyerMemberId', member['memberId'])
ctx.setFieldValue('buyerRoleId', member['roleId'])
ctx.setFieldValue('buyerMemberName', member['name'])
})
// 新增下并且不是采购跳转 切换商城 清空受影响的字段
$('onFieldValueChange', 'shopId').subscribe(async state => {
console.log(state, 'shop')
......
......@@ -52,7 +52,7 @@ const basicInfo: ISchema = {
}
]
},
buyerMemberId : {
buyerMemberMajorId : {
type: 'string',
title: '采购会员',
enum: [],
......@@ -67,6 +67,10 @@ const basicInfo: ISchema = {
},
required: true,
},
buyerMemberId: {
type: 'string',
display: false
},
buyerMemberName: {
type: 'string',
display: false
......
......@@ -17,8 +17,6 @@ import { useHttpRequest } from '@/hooks/useHttpRequest'
import TableOperation from '@/components/TableOperation'
import { getAuth } from '@/utils/auth'
import { MEMBER_ROLE_TYPE_SERVICE_CONSUMER } from '@/constants/member'
import moment from 'moment'
import styles from './index.less'
// 销售订单查询
......@@ -46,6 +44,12 @@ const SaleOrder: React.FC<SaleOrderProps> = () => {
const { roles } = getAuth() || {}
const serversRoles = roles.filter(item => item['roleType'] === MEMBER_ROLE_TYPE_SERVICE_CONSUMER)
const { token, memberId, memberRoleId } = (getAuth() || {})
const fetchParams = useRef<any>({})
const loadingTableData = (params) => {
fetchParams.current = {...params}
return fetchTableData(params)
}
// 提交取消
const handleSubmit = () => {
......@@ -209,7 +213,16 @@ const SaleOrder: React.FC<SaleOrderProps> = () => {
const handleExport = async () => {
console.log(`${process.env.BACK_GATEWAY}/order/vendor/export?token=${token}`)
window.open(`${process.env.BACK_GATEWAY}/order/vendor/export?token=${token}`, '_blank')
const p = {...fetchParams.current}
delete p.current
delete p.pageSize
let exportParams = ''
Object.keys(p).forEach(item => {
exportParams += `&${item}=${p[item]}`
})
window.open(`${process.env.BACK_GATEWAY}/order/vendor/export?token=${token}${exportParams}`, '_blank')
// const downloadLink = document.createElement('a')
// downloadLink.style.display = 'none';
......@@ -233,7 +246,7 @@ const SaleOrder: React.FC<SaleOrderProps> = () => {
return <PageHeaderWrapper>
<Card>
<StandardTable
fetchTableData={params => fetchTableData(params)}
fetchTableData={params => loadingTableData(params)}
columns={secondColumns()}
rowSelection={rowSelection}
currentRef={ref}
......
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