Commit 4644308a authored by Bill's avatar Bill

修改新增仓位

parent 27b4f3d2
......@@ -78,4 +78,4 @@
"json2ts": "^0.0.7",
"ora": "^4.0.4"
}
}
\ No newline at end of file
}
......@@ -75,7 +75,7 @@ const ModalTable:React.FC<ModalTableProps> = (props) => {
tableType='small'
currentRef={selfRef}
formRender={(child, ps) => <Row justify='space-between'>
<Col span={18}>{child}</Col>
<Col span={18} style={{zIndex: 99}}>{child}</Col>
<Col style={{marginTop: 4}}>{ps}</Col>
</Row>}
formilyProps={
......
......@@ -36,7 +36,7 @@ const AddRepository:React.FC<{}> = (props) => {
const formSubmit = async (values) => {
const params = omit(values, ['NO_SUBMIT3'])
if (params['applyMember']) {
params['applyMember'] = params['applyMember'].map(v => v.memberId)
params['applyMember'] = params['applyMember']
}
await PublicApi.postWarehouseFreightSpaceAdd(params)
setTimeout(() => {
......
......@@ -166,7 +166,7 @@ const AddRepository:React.FC<{}> = (props) => {
shopType: values.shopType
}
if (values['applyMember']) {
params['applyMember'] = values['applyMember'].map(v => v.memberId)
params['applyMember'] = values['applyMember']
}
setIsEdit(false)
await PublicApi.postWarehouseFreightSpaceUpdata(params)
......
import React, {useState} from 'react'
import React, {useState, useEffect} from 'react'
import { usePageStatus, PageStatus } from '@/hooks/usePageStatus'
import { useInitValue } from '@/formSchema/effects/useInitValue'
import EyePreview from '@/components/EyePreview'
......@@ -11,7 +11,7 @@ import {
PlusOutlined,
LinkOutlined,
} from '@ant-design/icons'
import { Button, message } from 'antd'
import { Button, message, Select } from 'antd'
import NiceForm from '@/components/NiceForm'
import ModalTable from '@/components/ModalTable'
import { GlobalConfig } from '@/global/config'
......@@ -20,7 +20,8 @@ import SearchSelect from '@/components/NiceForm/components/SearchSelect'
import Search from '@/components/NiceForm/components/Search'
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch'
import Submit from '@/components/NiceForm/components/Submit'
import { SHOP_TYPES, MALL_TYPE } from '@/constants'
import { SHOP_TYPES, MALL_TYPE } from '@/constants';
import shop from '@/pages/lxMall/shop'
export interface PositionSettingProps {
addSchemaAction: ISchemaFormActions,
......@@ -29,11 +30,6 @@ export interface PositionSettingProps {
formSubmit?(values)
}
const fetchMemberList = async (params) => {
const res = await PublicApi.getMemberMaintenancePage(params)
return res.data
}
const priceTypeMaps = {
[MALL_TYPE[0]]: [1,2],
[MALL_TYPE[1]]: [3],
......@@ -42,6 +38,23 @@ const priceTypeMaps = {
[MALL_TYPE[4]]: [3]
}
const all = [{
label: '所有',
value: '0'
}];
const transferLabelToValue = (list: any[], label: string, value: string) => {
return list.map((item) => {
return {
label: item[label],
value: item[value]
}
})
}
const BUSINESS_INTEGRATE = [1, 2];
const CANAL = [3, 4, 5]
const PositionSetting:React.FC<PositionSettingProps> = (props) => {
const { addSchemaAction, schema, formSubmit, onFieldChange = () => {} } = props
const [visibleChannelMember, setVisibleChannelMember] = useState(false)
......@@ -54,8 +67,64 @@ const PositionSetting:React.FC<PositionSettingProps> = (props) => {
preview,
pageStatus
} = usePageStatus()
const initValue = useInitValue(PublicApi.getWarehouseFreightSpaceDetails)
useUnitPreview(initValue, addSchemaAction)
// const initValue = useInitValue(PublicApi.getWarehouseFreightSpaceDetails)
const [shopTypeState, setShopType] = useState(0);
const [productState, setProductState] = useState<any>({})
const [membersFilterState, setMemberFilter] = useState({level: [], role: [], type: []});
const [initValue, setInitialValue] = useState({});
const [membersLength, setMembersLength] = useState(0)
// useUnitPreview(initValue, addSchemaAction)
useEffect(() => {
// 拿到所有的角色等级, 根据shopType, 商品的类容重新拿
async function getMemberLevel() {
const response = await PublicApi.getMemberManagePageitems();
const { levels = [], memberTypes = [], roles = [] } = response.data;
const allLevels = all.concat(transferLabelToValue(levels, "levelTag", "level"));
const allMemberTypes = all.concat(transferLabelToValue(memberTypes, "memberTypeName", "memberTypeId"))
const allRoles = all.concat(transferLabelToValue(roles, "roleName", "roleId"))
setMemberFilter((state) => {
return {
...state,
level: allLevels,
role: allMemberTypes,
type: allRoles
}
})
}
if(preview !== '1') {
getMemberLevel();
}
}, []);
useEffect(() => {
async function getInitValue() {
const { data } = await PublicApi.getWarehouseFreightSpaceDetails({id: id});
if(data.isAllMemberShare === 0) {
const res = await getBindingMember({id: id.toString(), current: '1', pageSize: '10'});
addSchemaAction.setFieldState('isAllMemberShare', (state) => {
state.value = 0
})
addSchemaAction.setFieldState('applyMember', (state) => {
state.value = res.data
})
setMembersLength(res.totalCount);
}
setInitialValue(data);
}
if(id != '') {
getInitValue();
}
}, [id])
// 拿到绑定会员
const getBindingMember = async ({id = '1', current = '1', pageSize = '10'}) => {
const res = await PublicApi.getWarehouseFreightSpaceMamberList({id, current, pageSize});
return res.data
}
const fetchProductList = async (params) => {
const shopType = addSchemaAction.getFieldValue('shopType')
......@@ -76,6 +145,16 @@ const PositionSetting:React.FC<PositionSettingProps> = (props) => {
}
const handleAddMemberBtn = () => {
const shopType = addSchemaAction.getFieldValue('shopType');
const itemNo = addSchemaAction.getFieldValue('productId');
if (!shopType) {
message.error('请先选择商城类型');
return;
}
if(CANAL.includes(shopType) && !itemNo) {
message.error('请先选择商品');
return;
}
const checkBoxs = addSchemaAction.getFieldValue('applyMember')
memberRowCtl.setSelectedRowKeys(checkBoxs.map(v => v.memberId))
memberRowCtl.setSelectRow(checkBoxs)
......@@ -94,7 +173,10 @@ const PositionSetting:React.FC<PositionSettingProps> = (props) => {
setVisibleChannelRroduct(true)
}
// 新增会员
const tableAddButton = <Button style={{marginBottom: 16}} block icon={<PlusOutlined/>} onClick={handleAddMemberBtn} type='dashed'>选择指定会员</Button>
const tableAddButton =
preview !== '1'
? <Button style={{marginBottom: 16}} block icon={<PlusOutlined/>} onClick={handleAddMemberBtn} type='dashed'>选择指定会员</Button>
: null
const tableColumns = [
{ dataIndex: 'memberId', title: 'ID', align: 'center' },
......@@ -116,6 +198,7 @@ const PositionSetting:React.FC<PositionSettingProps> = (props) => {
// 会员添加弹窗控制
const handleOkAddMember = () => {
setVisibleChannelMember(false)
setMembersLength(memberRowCtl.selectRow.length);
addSchemaAction.setFieldValue('applyMember', memberRowCtl.selectRow)
}
......@@ -131,7 +214,7 @@ const PositionSetting:React.FC<PositionSettingProps> = (props) => {
return null
}
const goodsId = selectResult.goodsId
setProductState(selectResult)
addSchemaAction.setFieldValue('productName', selectResult.name)
addSchemaAction.setFieldValue('category', selectResult.customerCategoryName)
addSchemaAction.setFieldValue('brand', selectResult.brandName)
......@@ -146,11 +229,36 @@ const PositionSetting:React.FC<PositionSettingProps> = (props) => {
const { data } = await PublicApi.getProductGoodsGetGoods({
id: goodsId
})
// 设置货品名称
addSchemaAction.setFieldValue('itemNo', data.name)
addSchemaAction.setFieldValue('itemNo', data?.name || '')
}
const fetchMemberList = async (params) => {
const shopType = addSchemaAction.getFieldValue('shopType');
// 当商城类型为 渠道商城、渠道自由商城和渠道积分商城时,需要带上memberResponseList
const { memberResponseList } = productState;
if(CANAL.includes(shopType) && memberResponseList == null) {
// 如果为空的话那我就不调用了
return {
code: 200,
message: '',
data: {
data: [],
totalCount: []
}
}
}
const data = {
...params,
shopType: shopType,
members: memberResponseList,
}
const res = await PublicApi.postMemberManageAllPageByshoptype(data, {ctlType: 'none'});
return res.data
}
const handleCancelAddProduct = () => {
setVisibleChannelRroduct(false)
}
......@@ -226,9 +334,64 @@ const PositionSetting:React.FC<PositionSettingProps> = (props) => {
properties: {
name: {
type: 'string',
"x-component": 'Search',
"x-component-props": {
placeholder: '请输入会员名称'
'x-component': 'ModalSearch',
'x-component-props': {
placeholder: '请输入会员名字',
align: 'flex-left',
},
},
[FORM_FILTER_PATH]: {
type: 'object',
'x-component': 'flex-layout',
'x-component-props': {
rowStyle: {
flexWrap: 'nowrap',
style: {
marginRight: 0
}
},
colStyle: {
marginTop: 20,
},
},
properties: {
memberTypeId: {
type: 'string',
"x-component": 'Select',
"x-component-props": {
options: membersFilterState.type,
style: {width: '180px'},
placeholder: '请选择会员类型'
}
},
level: {
type: 'string',
"x-component": 'Select',
"x-component-props": {
options: membersFilterState.level,
style: {width: '180px'},
placeholder: '请选择会员等级'
}
},
roleId: {
type: 'string',
"x-component": 'Select',
"x-component-props": {
options: membersFilterState.role,
style: {width: '180px'},
placeholder: '请选择会员角色'
}
},
submit: {
"x-component": 'Submit',
"x-mega-props": {
span: 1
},
"x-component-props": {
children: '查询'
}
}
}
}
}
......@@ -295,7 +458,12 @@ const PositionSetting:React.FC<PositionSettingProps> = (props) => {
}
}
}
const paginationChange = async (page: number, size: number) => {
if(id !== '') {
const result = await getBindingMember({id, current: page.toString(), pageSize: size.toString()});
addSchemaAction.setFieldValue('applyMember', result.data);
}
}
return (
<>
<NiceForm
......@@ -305,7 +473,9 @@ const PositionSetting:React.FC<PositionSettingProps> = (props) => {
expressionScope={{
tableColumns,
tableAddButton,
connectProduct
connectProduct,
paginationChange,
membersLength
}}
effects={($, { setFieldState }) => {
FormEffectHooks.onFormInputChange$().subscribe(() => {
......@@ -320,9 +490,24 @@ const PositionSetting:React.FC<PositionSettingProps> = (props) => {
GlobalConfig.web.shopInfo.filter(v => v.type === parentState.value && state.value.includes(v.id))
:
GlobalConfig.web.shopInfo.filter(v => v.type === parentState.value)
})
});
// 切换商城的时候,指定的会员需要重置
setShopType((prev) => {
if(
(BUSINESS_INTEGRATE.includes(prev) && CANAL.includes(parentState.value))
|| (CANAL.includes(prev) && BUSINESS_INTEGRATE.includes(parentState.value))
) {
setFieldState('applyMember', (state) => {
state.value = []
})
}
return parentState.value
});
}
})
// FormEffectHooks.
}}
onSubmit={handleSubmit}
actions={addSchemaAction}
......@@ -338,7 +523,18 @@ const PositionSetting:React.FC<PositionSettingProps> = (props) => {
fetchTableData={params => fetchMemberList(params)}
formilyProps={
{
ctx: { schema: formSearch }
ctx: {
schema: formSearch,
components: { ModalSearch: Search, SearchSelect, Submit, Select } ,
effects: ($, actions) => {
useStateFilterSearchLinkageEffect(
$,
actions,
'name',
FORM_FILTER_PATH,
);
}
}
}
}
tableProps={{
......
......@@ -524,7 +524,11 @@ export const repositDetailSchema: ISchema = padRequiredMessage({
"x-component-props": {
rowKey: 'memberId',
columns: "{{tableColumns}}",
prefix: "{{tableAddButton}}"
prefix: "{{tableAddButton}}",
pagination: {
"onChange": "{{paginationChange}}",
"total": "{{membersLength}}"
}
}
}
}
......
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