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

fix:处理价格策略的一些问题

parent c3ce66d1
......@@ -1037,7 +1037,7 @@ export const PurchaseOrderInsideWorkStateTexts = {
2: '待审核订单(一级)',
3: '待审核订单(二级)',
4: '待提交订单',
5: '待确认电子合同',
5: '审核通过',
6: '提交审核订单不通过(一级)',
7: '提交审核订单不通过(二级)',
8: '待支付订单',
......
......@@ -5,6 +5,7 @@ import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect';
import { columnsUnitProduct } from '../constant';
import { GlobalConfig } from '@/global/config';
const { onFieldValueChange$ } = FormEffectHooks
import { PageStatus } from '@/hooks/usePageStatus'
// 高级筛选schema中用于输入搜索品牌的Effect
......@@ -32,13 +33,15 @@ export const searchCustomerCategoryOptionEffect = (context: any, fieldName: stri
// 构建设置价格 table 所需要的data和columns
export const constructTableData = (data: any, ctx: ISchemaFormActions | ISchemaFormAsyncActions) => {
export const constructTableData = (data: any, ctx: ISchemaFormActions | ISchemaFormAsyncActions, pageStatus: any) => {
// 预先对阶梯价格排序
data = data.map(item => {
let tempUnit: any = {}
Object.keys(item.unitPrice).sort().forEach(function(key) {
tempUnit[key] = item.unitPrice[key]
})
if(item.unitPrice) {
Object.keys(item.unitPrice).sort().forEach(function(key) {
tempUnit[key] = item.unitPrice[key]
})
}
return {
...item,
unitPrice: tempUnit
......@@ -48,7 +51,9 @@ export const constructTableData = (data: any, ctx: ISchemaFormActions | ISchemaF
let col: any = [...columnsUnitProduct]
let temp: any = []
data[0].attributeAndValueList.map(_item => {
// 兼容编辑价格策略 新增使用data 编辑使用data[0].commodityUnitPrice
let _data_column = pageStatus === PageStatus.ADD ? data[0] : data[0]["commodityUnitPrice"]
_data_column.attributeAndValueList.map(_item => {
temp.push({title: _item.customerAttribute.name, dataIndex: [_item.customerAttribute.name, 'value'], key: _item.customerAttribute.name})
})
......@@ -71,20 +76,26 @@ export const constructTableData = (data: any, ctx: ISchemaFormActions | ISchemaF
}
})
// 兼容编辑价格策略 新增使用data 编辑使用data -> item -> commodityUnitPrice
let _tableData: any = []
data.map((item, index) => {
let temp: any = {}
item.attributeAndValueList.map(_item => {
temp[_item.customerAttribute.name] = {value: _item.customerAttributeValue.value, vId: _item.customerAttributeValue.id, id: _item.customerAttribute.id }
let _item_differ = pageStatus === PageStatus.ADD ? item : item["commodityUnitPrice"]
console.log(_item_differ, '_item_differ')
_item_differ.attributeAndValueList.map(_item => {
temp[_item.customerAttribute.name] = {
value: _item.customerAttributeValue.value,
vId: _item.customerAttributeValue.id,
id: _item.customerAttribute.id
}
})
_tableData.push({
"id": item.id,
"id": _item_differ.id,
"索引": index,
"货品ID": item.goods?.id || '',
"货品ID": _item_differ.goods?.id || '',
"商品名称": ctx.getFieldValue("productName"),
"对应货品": item.goods?.name || '',
"对应货品": _item_differ.goods?.name || '',
...temp,
"单价": item.unitPrice
})
......@@ -144,20 +155,11 @@ export const transformDataForNiceForm = (value: any, ctx: ISchemaFormActions | I
let shopInfo = GlobalConfig.web.shopInfo.filter(item => item["type"] === value["type"] && item["environment"] === value["environment"])
initValue["shopId"] = shopInfo[0]["id"]
// Edit使用
initValue["memberUnitPriceList"] = value["memberUnitPriceList"]
return {
initValue
}
// const { tableUnitData, columsUnit } = constructTableData(value.memberUnitPriceList, ctx)
// initValue["memberUnitPriceList"] = constructTableData(value.memberUnitPriceList, ctx)["tableUnitData"]
// ctx.setFieldState("memberUnitPriceList", state => {
// columsUnit.push({
// dataIndex: 'ctl',
// title: '操作',
// align: 'center',
// render: (_i, _r) => <Button type='link' onClick={() => handleSetProductPrice(_r)}>设置价格</Button>
// })
// state.props["x-component-props"].columns = columsUnit
// })
}
}
......@@ -78,6 +78,8 @@ const PriceModal:React.FC<PriceModalProps> = (props) => {
useEffect(() => {
if(isBatchSetting) {
setPriceForm.resetFields()
setPriceForm.setFields([{name: 'ladderPrice', value: false}])
currentRef.current.setLadderPrice(false)
}
}, [isBatchSetting])
......@@ -137,7 +139,7 @@ const PriceModal:React.FC<PriceModalProps> = (props) => {
return (
<Modal
title="设置价格"
title={currentRef.current.isBatchSetting ? "批量设置价格" : "设置价格"}
visible={visible}
onOk={handlePriceOk}
onCancel={() => setVisible(false)}
......
......@@ -36,6 +36,8 @@ const PriceSetting:React.FC<PriceSettingProps> = (props) => {
const [visibleMember, setVisibleMember] = useState(false)
const [memberRowSelection, memberRowCtl] = useRowSelectionTable({ customKey: 'memberId' })
const [initFormValue, setInitialFormValue] = useState({});
const dataRef = useRef({})
const [priceType, setPriceType] = useState(1)
const [membersLength, setMembersLength] = useState(0);
const {
......@@ -49,6 +51,7 @@ const PriceSetting:React.FC<PriceSettingProps> = (props) => {
PublicApi.getProductCommodityGetUnitPriceStrategy({id}).then(res => {
const { initValue } = transformDataForNiceForm(res.data, addSchemaAction)
setInitialFormValue(initValue)
dataRef.current = initValue
addSchemaAction.setFieldState('commodityMemberList', state => {
state.dataSource = initValue.commodityMemberList
})
......@@ -115,36 +118,57 @@ const PriceSetting:React.FC<PriceSettingProps> = (props) => {
if (addSchemaAction.getFieldValue("productId")) {
priceRef.current.setIsBatchSetting(true)
priceRef.current.setVisible(true)
priceRef.current.setLadderPrice(false)
} else {
message.error('请先选择适用商城或商品')
}
}
const searchMember = (value) => {
let commodityMemberList = addSchemaAction.getFieldValue("commodityMemberList").filter(item => item.name === value)
addSchemaAction.setFieldValue("commodityMemberList", commodityMemberList)
if(!value) {
addSchemaAction.setFieldValue("commodityMemberList", addSchemaAction.getFieldState("commodityMemberList")["dataSource"])
return ;
}
}
let commodityMemberList = addSchemaAction.getFieldValue("commodityMemberList").filter(item => item.name.indexOf(value) !== -1)
addSchemaAction.setFieldValue("commodityMemberList", commodityMemberList)
}
// const paginationChange = async (page: number, size: number) => {
// if(id !== '') {
// const result = await getBindingMember({id, current: page.toString(), pageSize: size.toString()});
// addSchemaAction.setFieldValue('commodityMemberList', result.data);
// }
// }
/**
* 生成价格设置 table 和会员 column
* @param pId 商品id
* @param ctx action
* @param priceType 价格类型(可选)1现货2询价
*/
const producePriceTableMemerColumn = async (pId, ctx, priceType?) => {
const res = await PublicApi.getProductCommodityGetCommodityUnitPrice({ id: pId,})
// 填充价格设置table(编辑采用initValue数据)
let source = pageStatus === PageStatus.ADD ? res.data : dataRef.current["memberUnitPriceList"]
const { columsUnit, tableUnitData } = constructTableData(source, ctx, pageStatus)
ctx.setFieldState("memberUnitPriceList", state => {
state.dataSource = source // 存源数据
priceType !== 2 ? columsUnit.push({
dataIndex: 'ctl',
title: '操作',
align: 'center',
render: (_i, _r) => <Button disabled={pageStatus === PageStatus.PREVIEW} type='link' onClick={() => handleSetProductPrice(_r)}>设置价格</Button>
})
:
columsUnit.pop()
state.props["x-component-props"].columns = columsUnit
})
ctx.setFieldValue("memberUnitPriceList", priceType === 2 ? tableUnitData.map(item => { delete item["单价"]; return item }) : tableUnitData)
// // 拿到绑定会员
// const getBindingMember = async ({id = '1', current = '1', pageSize = '10'}) => {
// const res = await PublicApi.getWarehouseFreightSpaceMamberList({id, current, pageSize});
// return res.data
// }
console.log(columsUnit, tableUnitData, source)
// 填充适用会员table
ctx.setFieldState("commodityMemberList", state => {
memberColumns[memberColumns.length -1].render = (text, record) => {
return <Button disabled={pageStatus === PageStatus.PREVIEW} type='link' onClick={() => handleDeleteMemberTable(record)}>删除</Button>
}
state.props["x-component-props"].columns = memberColumns
})
}
// 新增会员
const tableAddMemberButton = pageStatus !== PageStatus.PREVIEW && <>
......@@ -159,10 +183,10 @@ const PriceSetting:React.FC<PriceSettingProps> = (props) => {
</>
// 批量设置价格按钮
const batchPriceButton = pageStatus !== PageStatus.PREVIEW && <Button type="text" onClick={clickBatchSetPrice} style={{marginBottom: 12, float: "right"}}><SettingOutlined /> 批量设置价格</Button>
const batchPriceButton = pageStatus!==PageStatus.PREVIEW && priceType!==2 && <Button type="text" onClick={clickBatchSetPrice} style={{marginBottom: 12, float: "right"}}><SettingOutlined /> 批量设置价格</Button>
// 选择商品
const connectProduct = pageStatus !== PageStatus.PREVIEW && <div className='connectBtn' onClick={handleAddProductBtn}><LinkOutlined style={{marginRight: 4}}/>选择</div>
const connectProduct = pageStatus === PageStatus.ADD && <div className='connectBtn' onClick={handleAddProductBtn}><LinkOutlined style={{marginRight: 4}}/>选择</div>
return (
<>
......@@ -196,40 +220,56 @@ const PriceSetting:React.FC<PriceSettingProps> = (props) => {
if(pageStatus === PageStatus.EDIT) {
state.props['x-component-props'].disabled = true;
}
})
ctx.setFieldState('priceType', state => {
if(pageStatus === PageStatus.EDIT) {
state.props['x-component-props'].disabled = true;
}
});
}
})
$('onFieldValueChange', 'productId').subscribe(async parentState => {
if (parentState.value) {
const res = await PublicApi.getProductCommodityGetCommodityUnitPrice({
id: parentState.value,
})
if(res.code === 1000) {
// 填充价格设置table
const { columsUnit, tableUnitData } = constructTableData(res.data, ctx)
ctx.setFieldState("memberUnitPriceList", state => {
state.dataSource = res.data // 存源数据
columsUnit.push({
dataIndex: 'ctl',
title: '操作',
align: 'center',
render: (_i, _r) => <Button disabled={pageStatus === PageStatus.PREVIEW} type='link' onClick={() => handleSetProductPrice(_r)}>设置价格</Button>
})
state.props["x-component-props"].columns = columsUnit
})
ctx.setFieldValue("memberUnitPriceList", tableUnitData)
console.log(columsUnit, tableUnitData, res.data)
// 填充适用会员table
ctx.setFieldState("commodityMemberList", state => {
memberColumns[memberColumns.length -1].render = (text, record) => {
return <Button disabled={pageStatus === PageStatus.PREVIEW} type='link' onClick={() => handleDeleteMemberTable(record)}>删除</Button>
}
state.props["x-component-props"].columns = memberColumns
})
}
// const res = await PublicApi.getProductCommodityGetCommodityUnitPrice({
// id: parentState.value,
// })
// if(res.code === 1000) {
// // 填充价格设置table
// const { columsUnit, tableUnitData } = constructTableData(res.data, ctx)
// ctx.setFieldState("memberUnitPriceList", state => {
// state.dataSource = res.data // 存源数据
// columsUnit.push({
// dataIndex: 'ctl',
// title: '操作',
// align: 'center',
// render: (_i, _r) => <Button disabled={pageStatus === PageStatus.PREVIEW} type='link' onClick={() => handleSetProductPrice(_r)}>设置价格</Button>
// })
// state.props["x-component-props"].columns = columsUnit
// })
// ctx.setFieldValue("memberUnitPriceList", tableUnitData)
// console.log(columsUnit, tableUnitData, res.data)
// // 填充适用会员table
// ctx.setFieldState("commodityMemberList", state => {
// memberColumns[memberColumns.length -1].render = (text, record) => {
// return <Button disabled={pageStatus === PageStatus.PREVIEW} type='link' onClick={() => handleDeleteMemberTable(record)}>删除</Button>
// }
// state.props["x-component-props"].columns = memberColumns
// })
// }
producePriceTableMemerColumn(parentState.value, ctx)
}
})
$("onFieldValueChange", "priceType").subscribe(parentState => {
let pId = ctx.getFieldValue("productId")
if(pId) {
producePriceTableMemerColumn(pId, ctx, parentState.value)
}
setPriceType(parentState.value)
})
}}
......
......@@ -152,7 +152,13 @@ const PriceManage: React.FC<{}> = () => {
}
const handleUpdateState = (record: any) => {
PublicApi.postProductCommodityUpdateUnitPriceStrategyStatus({id: record.id, isEnable: !record.isEnable})
PublicApi.postProductCommodityUpdateUnitPriceStrategyStatus({id: record.id, isEnable: !record.isEnable}).then(res => {
if(res.code === 1000) {
setTimeout(() => {
ref.current.reload()
}, 1000)
}
})
}
const handleModify = (record: any) => {
......
......@@ -248,7 +248,10 @@ export const setPriceSchema: ISchema = {
value: 2
}
],
default: 1
default: 1,
"x-component-props": {
disabled: false,
},
},
}
}
......
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