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

fix:商品无法提交

parent 890a4e8f
...@@ -93,7 +93,7 @@ const PropertyValue: React.FC<{}> = () => { ...@@ -93,7 +93,7 @@ const PropertyValue: React.FC<{}> = () => {
} }
const handleSee = (record: any) => { const handleSee = (record: any) => {
history.push(`/memberCenter/commodityAbility/classAndProperty/propertyValue/addPropertyValue?attrId=${selectKey}&attrName=${selectNode._title}&attrValueId=${record.id}&isSee=true&type=${record.type}`) history.push(`/memberCenter/commodityAbility/classAndProperty/propertyValue/addPropertyValue?attrId=${selectKey}&attrName=${record.customerAttribute.name}&attrValueId=${record.id}&isSee=true&type=${record.type}`)
} }
const columns: ColumnType<any>[] = [ const columns: ColumnType<any>[] = [
...@@ -146,7 +146,7 @@ const PropertyValue: React.FC<{}> = () => { ...@@ -146,7 +146,7 @@ const PropertyValue: React.FC<{}> = () => {
record.isEnable ? '' : <> record.isEnable ? '' : <>
<Button <Button
type='link' type='link'
onClick={() => history.push(`/memberCenter/commodityAbility/classAndProperty/propertyValue/addPropertyValue?attrId=${selectKey}&attrName=${selectNode._title}&attrValueId=${record.id}`)} onClick={() => history.push(`/memberCenter/commodityAbility/classAndProperty/propertyValue/addPropertyValue?attrId=${selectKey}&attrName=${record.customerAttribute.name}&attrValueId=${record.id}`)}
> >
编辑 编辑
</Button> </Button>
......
...@@ -232,7 +232,7 @@ const SelectChannel:React.FC<IProps> = (props) => { ...@@ -232,7 +232,7 @@ const SelectChannel:React.FC<IProps> = (props) => {
return (<> return (<>
<Row> <Row>
{ {
memberRoleList.length>0 && <> memberRoleList.length>0 ? <>
<Col span={18}> <Col span={18}>
<Form <Form
{...layout} {...layout}
...@@ -287,7 +287,7 @@ const SelectChannel:React.FC<IProps> = (props) => { ...@@ -287,7 +287,7 @@ const SelectChannel:React.FC<IProps> = (props) => {
</p> </p>
</div> </div>
</Col> </Col>
</> </> : <span style={{opacity: 0.6}}>暂无数据!</span>
} }
</Row> </Row>
{ {
......
import React, {useState, useRef, useEffect} from 'react' import React, {useState, useRef, useEffect} from 'react'
import { history } from 'umi'; import { history } from 'umi';
import { Button, Form, Card, Tabs } from 'antd' import { Button, Form, Card, Tabs, message } from 'antd'
import { PageHeaderWrapper } from '@ant-design/pro-layout' import { PageHeaderWrapper } from '@ant-design/pro-layout'
import { import {
PlusOutlined, PlusOutlined,
...@@ -55,14 +55,19 @@ const AddDirectChannel:React.FC<{}> = (props) => { ...@@ -55,14 +55,19 @@ const AddDirectChannel:React.FC<{}> = (props) => {
params.commodityId = productSelectRowInStore.id params.commodityId = productSelectRowInStore.id
params.parentMemberId = productSelectRowInStore.memberId params.parentMemberId = productSelectRowInStore.memberId
params.parentMemberName = productSelectRowInStore.memberName params.parentMemberName = productSelectRowInStore.memberName
params.childMemberRoleName = selectedRole.children params.childMemberRoleName = selectedRole?.children || null
params.commodityMemberList = selectChannel.map(item => ({ memberId: item.memberId, memberName: item.name })) params.commodityMemberList = selectChannel.map(item => ({ memberId: item.memberId, memberName: item.name }))
PublicApi.postProductChannelCommoditySaveChannelCommodity(params).then(res=>{ if(params.childMemberRoleName)
PublicApi.postProductChannelCommoditySaveChannelCommodity(params).then(res=>{
setIsDisabledSave(false)
if(res.code === 1000)
history.goBack()
})
else{
message.error('暂无渠道角色数据!')
setIsDisabledSave(false) setIsDisabledSave(false)
if(res.code === 1000) }
history.goBack()
})
}) })
} }
......
...@@ -150,8 +150,15 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => { ...@@ -150,8 +150,15 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => {
} }
const renderTabPanchildren = (attrItem: any) => { const renderTabPanchildren = (attrItem: any) => {
const { isPrice } = attrItem let _isPrice = null
const { isUpdateAttribute } = productInfoByEdit let _isUpdateAttribute = null
let _isEdit = productInfoByEdit?.id
let _isDisabled = false
if(_isEdit){
_isPrice = attrItem.isPrice
_isUpdateAttribute = productInfoByEdit.isUpdateAttribute
_isDisabled = _isPrice && !_isUpdateAttribute
}
return ( return (
<> <>
...@@ -166,7 +173,7 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => { ...@@ -166,7 +173,7 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => {
}]} }]}
> >
<Select <Select
disabled={isPrice && !isUpdateAttribute} disabled={_isDisabled}
placeholder="请选择" placeholder="请选择"
allowClear allowClear
onChange={(v)=>onChange(v, attrItem)} onChange={(v)=>onChange(v, attrItem)}
...@@ -190,7 +197,7 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => { ...@@ -190,7 +197,7 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => {
}]} }]}
> >
<RangePicker <RangePicker
disabled={isPrice && !isUpdateAttribute} disabled={_isDisabled}
onChange={(v)=>onChange(v, attrItem)} onChange={(v)=>onChange(v, attrItem)}
format="YYYY-MM-DD" format="YYYY-MM-DD"
/> />
...@@ -206,7 +213,7 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => { ...@@ -206,7 +213,7 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => {
> >
<Checkbox.Group <Checkbox.Group
onChange={(v)=>onChange(v, attrItem)} onChange={(v)=>onChange(v, attrItem)}
disabled={isPrice && !isUpdateAttribute} disabled={_isDisabled}
> >
{ {
attrItem?.customerAttributeValueList.length > 0 && attrItem.customerAttributeValueList.map((item: any, index: string) => ( attrItem?.customerAttributeValueList.length > 0 && attrItem.customerAttributeValueList.map((item: any, index: string) => (
...@@ -228,7 +235,7 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => { ...@@ -228,7 +235,7 @@ const ProductAttributeForm: React.FC<Iprops> = (props) => {
}]} }]}
> >
<TextArea <TextArea
disabled={isPrice && !isUpdateAttribute} disabled={_isDisabled}
onChange={(v)=>onChange(v, attrItem)} onChange={(v)=>onChange(v, attrItem)}
maxLength={50} maxLength={50}
placeholder="最多输入50个字符" placeholder="最多输入50个字符"
......
...@@ -189,9 +189,9 @@ const ProductImageForm: React.FC<Iprops> = (props) => { ...@@ -189,9 +189,9 @@ const ProductImageForm: React.FC<Iprops> = (props) => {
<Col span={4} className={styles.colBox}> <Col span={4} className={styles.colBox}>
<ul> <ul>
{ {
!setImageType ? <span className={styles.tipTitle}>按特定属性添加图片</span> !setImageType ? <span className={styles.tipTitle}>按特定属性添加图片&nbsp;<i style={{color:'red'}}>*</i></span>
: <li className={defaultChecked == 0 ? styles.activedLi : ""} onClick={()=>clickItemTab(0)}> {/* -1 */} : <li className={defaultChecked == 0 ? styles.activedLi : ""} onClick={()=>clickItemTab(0)}> {/* -1 */}
<span>所有属性共用</span> <span>所有属性共用&nbsp;<i style={{color:'red'}}>*</i></span>
</li> </li>
} }
{ !setImageType && { !setImageType &&
......
...@@ -51,9 +51,11 @@ const DirectChannel: React.FC<{}> = () => { ...@@ -51,9 +51,11 @@ const DirectChannel: React.FC<{}> = () => {
const [isUp, setIsUp] = useState(1) // 1上0下架状态 const [isUp, setIsUp] = useState(1) // 1上0下架状态
const [upDownModal, setUpDownModal] = useState(false) const [upDownModal, setUpDownModal] = useState(false)
const [shopsOption, setShopsOption] = useState<GetProductChannelCommodityGetShopResponse>([]) const [shopsOption, setShopsOption] = useState<GetProductChannelCommodityGetShopResponse>([])
const [shopsBatchOption, setShopsBatchOption] = useState<GetProductChannelCommodityGetShopResponse>([])
const [checkedValues, setCheckedValues] = useState<any>([]) const [checkedValues, setCheckedValues] = useState<any>([])
const [currentOptionId, setCurrentOptionId] = useState<number>() const [currentOptionId, setCurrentOptionId] = useState<number>()
const [isDisabledOKbtn, setIsDisabledOKbtn] = useState<boolean>(false) const [isDisabledOKbtn, setIsDisabledOKbtn] = useState<boolean>(false)
const [isBatchOption, setIsBatchOption] = useState<boolean>(false) // 是否是批量上下架操作
const columns: ColumnType<any>[] = [ const columns: ColumnType<any>[] = [
{ {
...@@ -109,6 +111,19 @@ const DirectChannel: React.FC<{}> = () => { ...@@ -109,6 +111,19 @@ const DirectChannel: React.FC<{}> = () => {
key: 'id', key: 'id',
render: (text, record) => text === 1 ? '上级渠道' : '渠道自有' render: (text, record) => text === 1 ? '上级渠道' : '渠道自有'
}, },
// {
// title: '产品定价',
// dataIndex: ['channelCommodity', 'commodity', 'priceType'],
// key: 'id',
// render: (text:any, reocrd:any)=>{
// if(text===1)
// return '现货价格'
// else if(text===2)
// return '价格需要询价'
// else if(text===3)
// return '积分兑换商品'
// }
// },
{ {
title: '操作时间', title: '操作时间',
dataIndex: ['channelCommodity', 'createTime'], dataIndex: ['channelCommodity', 'createTime'],
...@@ -165,7 +180,7 @@ const DirectChannel: React.FC<{}> = () => { ...@@ -165,7 +180,7 @@ const DirectChannel: React.FC<{}> = () => {
]; ];
const clickModify = (params: any) => { const clickModify = (params: any) => {
history.push(`/memberCenter/commodityAbility/commodity/products/directChannel/modifyDirectChannel?id=${params.id}&commodityId=${params.channelCommodity.commodity.id}`) history.push(`/memberCenter/commodityAbility/commodity/products/directChannel/modifyDirectChannel?id=${params.id}&commodityId=${params.channelCommodity.id}`)
} }
// paramId ? 单个删除 : 批量删除 // paramId ? 单个删除 : 批量删除
...@@ -202,48 +217,54 @@ const DirectChannel: React.FC<{}> = () => { ...@@ -202,48 +217,54 @@ const DirectChannel: React.FC<{}> = () => {
}) })
} }
const getPageItemsMemberRole = async () => { const rowSelection = {
const res = await PublicApi.getMemberManageRoleList() selectedRowKeys: selectedRowKeys,
const { data }: any = res onChange: (selectedRowKeys: any, selectedRows: any) => {
console.log(data, 'data') setSelectRow(selectedRows);
if (res.code === 1000) { setSelectedRowKeys(selectedRowKeys);
return {
memberRoleId: data.map(item => ({ label: item.roleName, value: item.roleId })),
}
} }
return {}
} }
const handleBatchUp = () => { // 判断所选商品 priceType, source, status一致
console.log('批量上架') const judgeType = () => {
if(selectedRowKeys.length){ let sourceArr = Array.from(new Set(selectRow.map((item:any) => item.channelCommodity.source)))
setUpDownModal(true) let priceTypeArr = Array.from(new Set(selectRow.map((item:any) => item.channelCommodity.commodity.priceType)))
setIsUp(1) let statusArr = Array.from(new Set(selectRow.map((item:any) => item.channelCommodity.status)))
}else{ return {
message.error('请先选择需要操作的商品!') isPassJudge: sourceArr.length === 1 && priceTypeArr.length === 1 && statusArr.length ===1,
source: sourceArr,
priceType: priceTypeArr
} }
} }
const handleBatchDown = () => { const handleBatchClick = (param: string) => {
console.log('批量下架') setIsBatchOption(true)
setShopsOption([])
if(selectedRowKeys.length){ if(selectedRowKeys.length){
setUpDownModal(true) let _judge = judgeType()
setIsUp(0) if(_judge.isPassJudge){
setUpDownModal(true)
// 获取渠道商品批量上架商城
PublicApi.getProductChannelCommodityGetShopBatch({priceType: _judge.priceType[0], source: _judge.source[0]}).then(res => {
const { data } = res
setShopsBatchOption(data)
setCheckedValues([])
})
if(param === '2') // 2批量上架 3批量下架
setIsUp(1)
else
setIsUp(0)
}else{
message.error('请正确选择需要批量操作的商品!')
}
}else{ }else{
message.error('请先选择需要操作的商品!') message.error('请先选择需要操作的商品!')
} }
} }
const rowSelection = {
selectedRowKeys: selectedRowKeys,
onChange: (selectedRowKeys: any, selectedRows: any) => {
setSelectRow(selectedRows);
setSelectedRowKeys(selectedRowKeys);
}
}
const clickUp = (param: number, paramId: number) => { const clickUp = (param: number, paramId: number) => {
setIsBatchOption(false)
setShopsBatchOption([])
setIsUp(param) setIsUp(param)
setCurrentOptionId(paramId) setCurrentOptionId(paramId)
// 获取渠道商品上架商城 // 获取渠道商品上架商城
...@@ -268,22 +289,28 @@ const DirectChannel: React.FC<{}> = () => { ...@@ -268,22 +289,28 @@ const DirectChannel: React.FC<{}> = () => {
const handleUpDown = () => { const handleUpDown = () => {
setIsDisabledOKbtn(true) setIsDisabledOKbtn(true)
let params = { let params: any = {
id: currentOptionId, idList: isBatchOption ? selectRow.map(item => item.id) : [currentOptionId],
shopList: checkedValues shopList: checkedValues
} }
if(isUp) if(isUp)
PublicApi.postProductChannelCommodityPublishCommodity(params).then(res => { if(checkedValues.length > 0){
setUpDownModal(false) PublicApi.postProductChannelCommodityPublishCommodity(params).then(res => {
ref.current.reload() setUpDownModal(false)
ref.current.reload()
setIsDisabledOKbtn(false)
})
}else{
setIsDisabledOKbtn(false) setIsDisabledOKbtn(false)
}) message.error('请选择需要上架的渠道商城')
}
else else
PublicApi.postProductChannelCommodityOffPublishCommodity(params).then(res => { PublicApi.postProductChannelCommodityOffPublishCommodity(params).then(res => {
setUpDownModal(false) setUpDownModal(false)
ref.current.reload() ref.current.reload()
setIsDisabledOKbtn(false) setIsDisabledOKbtn(false)
}) })
} }
const handleCancelUpDown = () => { const handleCancelUpDown = () => {
...@@ -293,10 +320,8 @@ const DirectChannel: React.FC<{}> = () => { ...@@ -293,10 +320,8 @@ const DirectChannel: React.FC<{}> = () => {
const handleMenuClick = (param) => { // param: 1.批量删除 2.批量上架 3.批量下架 const handleMenuClick = (param) => { // param: 1.批量删除 2.批量上架 3.批量下架
if(param.key === '1'){ if(param.key === '1'){
clickDelete() clickDelete()
}else if(param.key === '2'){ }else{
handleBatchUp() handleBatchClick(param.key)
}else if(param.key === '3'){
handleBatchDown()
} }
} }
...@@ -370,29 +395,34 @@ const DirectChannel: React.FC<{}> = () => { ...@@ -370,29 +395,34 @@ const DirectChannel: React.FC<{}> = () => {
/> />
</Card> </Card>
<Modal <Modal
title={isUp?'商品上架':'商品下架'} title={isUp?(isBatchOption?'批量上架':'商品上架'):(isBatchOption?'批量下架':'商品下架')}
visible={upDownModal} visible={upDownModal}
onOk={handleUpDown} onOk={handleUpDown}
onCancel={()=>setUpDownModal(false)} onCancel={()=>{setUpDownModal(false);setCheckedValues([])}}
forceRender={true} forceRender={true}
okButtonProps={{ disabled: isDisabledOKbtn }} okButtonProps={{ disabled: isDisabledOKbtn }}
> >
<Form <Form
layout="vertical" layout="vertical"
> >
<Form.Item label={ <Form.Item label = {
<span> <span>
请选择需要{isUp ? '上架' : '下架'}的商城&nbsp; 请选择需要{isUp ? '上架' : '下架'}的商城&nbsp;
<Tooltip title="已上架的商城为已勾选的商城,不可选择,只可以选择未勾选的商城。"> <Tooltip title="已上架的商城为已勾选的商城,不可选择,只可以选择未勾选的商城。">
<QuestionCircleOutlined /> <QuestionCircleOutlined />
</Tooltip> </Tooltip>
</span>}> </span>
}
>
<Checkbox.Group style={{ width: '100%' }} onChange={onChangeUpShop} value={checkedValues}> <Checkbox.Group style={{ width: '100%' }} onChange={onChangeUpShop} value={checkedValues}>
<Row> <Row>
{ {
isBatchOption ? Array.isArray(shopsBatchOption) && shopsBatchOption.map((item, index) => <Col key={index} span={8}>
<Checkbox value={item}>{item.name}</Checkbox>
</Col>) :
Array.isArray(shopsOption) && shopsOption.map((item, index) => <Col key={index} span={8}> Array.isArray(shopsOption) && shopsOption.map((item, index) => <Col key={index} span={8}>
<Checkbox value={item}>{item.name}</Checkbox> <Checkbox value={item}>{item.name}</Checkbox>
</Col>) </Col>)
} }
</Row> </Row>
</Checkbox.Group> </Checkbox.Group>
......
...@@ -50,6 +50,7 @@ let timeChange: any; ...@@ -50,6 +50,7 @@ let timeChange: any;
const Products: React.FC<{}> = () => { const Products: React.FC<{}> = () => {
const ref = useRef<any>({}) const ref = useRef<any>({})
const [upForm] = Form.useForm()
const [selectRow, setSelectRow] = useState<Item[]>([]) // 模态框选择的行数据 const [selectRow, setSelectRow] = useState<Item[]>([]) // 模态框选择的行数据
const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([]) const [selectedRowKeys, setSelectedRowKeys] = useState<Array<string>>([])
const [importModal, setImportModal] = useState(false) const [importModal, setImportModal] = useState(false)
...@@ -141,16 +142,24 @@ const Products: React.FC<{}> = () => { ...@@ -141,16 +142,24 @@ const Products: React.FC<{}> = () => {
dataIndex: 'min', dataIndex: 'min',
key: 'min', key: 'min',
render: (text:any, reocrd:any) => { render: (text:any, reocrd:any) => {
if(reocrd.priceType === 1) if(reocrd.priceType === 1){
return <>{reocrd.min} ~ ¥{reocrd.max}</> if(reocrd.min === reocrd.min)
if(reocrd.priceType === 3) return <>{reocrd.min}</>
return <>{reocrd.min} ~ {reocrd.max}</> else
return <>{reocrd.min} ~ ¥{reocrd.max}</>
}
if(reocrd.priceType === 3){
if(reocrd.min === reocrd.min)
return <>{reocrd.min}</>
else
return <>{reocrd.min} ~ {reocrd.max}</>
}
if(reocrd.priceType === 2) if(reocrd.priceType === 2)
return null return null
} }
}, },
{ {
title: '审核时间', title: '申请审核时间',
dataIndex: 'applyTime', dataIndex: 'applyTime',
key: 'applyTime', key: 'applyTime',
render: (text:any, record:any)=>text && moment(text).format('YYYY-MM-DD HH:mm:ss') render: (text:any, record:any)=>text && moment(text).format('YYYY-MM-DD HH:mm:ss')
...@@ -222,7 +231,7 @@ const Products: React.FC<{}> = () => { ...@@ -222,7 +231,7 @@ const Products: React.FC<{}> = () => {
{record.status === 1 ? <Menu.Item><Button type='link' onClick={()=>clickSubmitCheck(record)}>提交审核</Button></Menu.Item> : ''} {record.status === 1 ? <Menu.Item><Button type='link' onClick={()=>clickSubmitCheck(record)}>提交审核</Button></Menu.Item> : ''}
{(record.status === 4 || record.status === 6) ? <Menu.Item><Button type='link' onClick={() => clickUp(1, record.id)}>上架</Button></Menu.Item> : ''} {(record.status === 4 || record.status === 6) ? <Menu.Item><Button type='link' onClick={() => clickUp(1, record.id)}>上架</Button></Menu.Item> : ''}
{(record.status !== 5) ? <Menu.Item><Button type='link' onClick={() => clickModify(record.id)}>修改</Button></Menu.Item> : ''} {(record.status !== 5) ? <Menu.Item><Button type='link' onClick={() => clickModify(record.id)}>修改</Button></Menu.Item> : ''}
{(record.status === 1 || record.status === 3) ? <Menu.Item><Button type='link' onClick={() => confirmDelete(record.id)}>删除</Button></Menu.Item> : ''} {(record.status === 1 && !record.checkTime) ? <Menu.Item><Button type='link' onClick={() => confirmDelete(record.id)}>删除</Button></Menu.Item> : ''}
</Menu> </Menu>
}> }>
<a className="ant-dropdown-link" onClick={e => e.preventDefault()}> <a className="ant-dropdown-link" onClick={e => e.preventDefault()}>
...@@ -414,7 +423,10 @@ const Products: React.FC<{}> = () => { ...@@ -414,7 +423,10 @@ const Products: React.FC<{}> = () => {
setShopId(res.data.id) setShopId(res.data.id)
setCheckedValues(values) setCheckedValues(values)
}else{ }else{
message.error('您还没有开通店铺,无法上下架商品!') message.error('您还还未创建店铺,请先创建店铺!')
setTimeout(() => {
history.push('/memberCenter/shopAbility/infoManage')
}, 3000)
} }
}) })
} }
...@@ -436,30 +448,47 @@ const Products: React.FC<{}> = () => { ...@@ -436,30 +448,47 @@ const Products: React.FC<{}> = () => {
shopList: checkedValues shopList: checkedValues
} }
if(isUp) if(isUp)
PublicApi.postProductCommodityPublishCommodity({storeId: shopId, ...params}).then(res => { if(checkedValues.length > 0){
setUpDownModal(false) PublicApi.postProductCommodityPublishCommodity({storeId: shopId, ...params}).then(res => {
ref.current.reload() setUpDownModal(false)
ref.current.reload()
setIsDisabledOKbtn(false)
})
}else{
setIsDisabledOKbtn(false) setIsDisabledOKbtn(false)
}) message.error('请选择需要上架的商城!')
}
else else
PublicApi.postProductCommodityOffPublishCommodity(params).then(res => { PublicApi.postProductCommodityOffPublishCommodity(params).then(res => {
setUpDownModal(false) setUpDownModal(false)
ref.current.reload() ref.current.reload()
setIsDisabledOKbtn(false) setIsDisabledOKbtn(false)
}) })
} }
const handleCancelUp = () => { const handleCancelUp = () => {
upForm.resetFields()
setUpDownModal(false) setUpDownModal(false)
} }
const clickCopy = (record: any) => { const clickCopy = (record: any) => {
console.log('复制商品')
const { id } = record; const { id } = record;
if(id){ if(id){
PublicApi.postProductCommodityCopyCommodity({id: id}).then(res => { confirm({
if(res.code === 1000) title: '确定要执行复制操作?',
ref.current.reload() icon: <ExclamationCircleOutlined />,
onOk() {
PublicApi.postProductCommodityCopyCommodity({id: id}).then(res => {
if(res.code === 1000)
ref.current.reload()
})
},
onCancel() {
console.log('Cancel');
},
okText: '确定',
cancelText: '取消'
}) })
} }
} }
...@@ -478,20 +507,42 @@ const Products: React.FC<{}> = () => { ...@@ -478,20 +507,42 @@ const Products: React.FC<{}> = () => {
console.log('menu', e, selectedRowKeys); // 1 批量删除;2 删除导入批次 console.log('menu', e, selectedRowKeys); // 1 批量删除;2 删除导入批次
if(e.key === '1'){ if(e.key === '1'){
console.log('批量删除') console.log('批量删除')
handleBatchDelete(selectedRowKeys) handleBatchDelete(selectedRowKeys, true)
}else if(e.key === '2'){ }else if(e.key === '2'){
console.log('删除导入批次') console.log('删除导入批次')
setDeleteBatchModal(true) setDeleteBatchModal(true)
} }
} }
const handleBatchDelete = (ids: string[]) => { const handleBatchDelete = (ids: string[], param?: boolean) => {
console.log('删除', ids) if(ids.length)
// @ts-ignore if(param){
PublicApi.postProductCommodityDeleteBatchCommodity({idList: ids}).then(res => { confirm({
if(res.code === 1000) title: '确定要执行批量删除操作?',
ref.current.reload() icon: <ExclamationCircleOutlined />,
}) onOk() {
//@ts-ignore
PublicApi.postProductCommodityDeleteBatchCommodity({idList: ids}).then(res => {
if(res.code === 1000)
ref.current.reload()
})
},
okType: 'danger',
onCancel() {
console.log('Cancel');
},
okText: '确定',
cancelText: '取消'
})
}else{
//@ts-ignore
PublicApi.postProductCommodityDeleteBatchCommodity({idList: ids}).then(res => {
if(res.code === 1000)
ref.current.reload()
})
}
else
message.error('请选择需要操作的商品!')
} }
const confirmDelete = (paramId: any) => { const confirmDelete = (paramId: any) => {
...@@ -794,13 +845,16 @@ const Products: React.FC<{}> = () => { ...@@ -794,13 +845,16 @@ const Products: React.FC<{}> = () => {
<Form <Form
layout="vertical" layout="vertical"
> >
<Form.Item label={ <Form.Item
<span> label={
请选择需要{isUp ? '上架' : '下架'}的商城&nbsp; <span>
<Tooltip title="已上架的商城为已勾选的商城,不可选择,只可以选择未勾选的商城。"> 请选择需要{isUp ? '上架' : '下架'}的商城&nbsp;
<QuestionCircleOutlined /> <Tooltip title="已上架的商城为已勾选的商城,不可选择,只可以选择未勾选的商城。">
</Tooltip> <QuestionCircleOutlined />
</span>}> </Tooltip>
</span>
}
>
<Checkbox.Group style={{ width: '100%' }} onChange={onChangeUpShop} value={checkedValues}> <Checkbox.Group style={{ width: '100%' }} onChange={onChangeUpShop} value={checkedValues}>
<Row> <Row>
{ {
......
...@@ -87,7 +87,7 @@ const ModifyDirectChannel:React.FC<{}> = () => { ...@@ -87,7 +87,7 @@ const ModifyDirectChannel:React.FC<{}> = () => {
// 获取商品规格列表 // 获取商品规格列表
const fetchSpecData = () => { const fetchSpecData = () => {
PublicApi.getProductChannelCommodityGetCommodityUnitPrice({id: history.location.query.commodityId}).then(res => { PublicApi.getProductChannelCommodityGetCommodityUnitPriceByChannel({id: history.location.query.commodityId}).then(res => {
const { data } = res const { data } = res
setOriginTableData(data) setOriginTableData(data)
if(data.length > 0) if(data.length > 0)
......
...@@ -102,57 +102,6 @@ const ViewDriectChannel: React.FC<{}> = () => { ...@@ -102,57 +102,6 @@ const ViewDriectChannel: React.FC<{}> = () => {
} }
} }
const dataMember = [
{
key: '1',
name: '渠道名称',
type: '渠道企业会员',
role: '渠道采购商',
class: '青铜会员',
},
{
key: '2',
name: '渠道名称',
type: '渠道企业会员',
role: '渠道采购商',
class: '铁皮会员',
},
]
const columnsMember: ColumnType<any>[] = [
{
title: 'ID',
dataIndex: 'key',
align: 'center',
key: 'key',
},
{
title: '会员名称',
dataIndex: 'name',
align: 'center',
key: 'name',
render: (text:any, record:any) => <span className="commonPickColor">{text}&nbsp;<EyeOutlined /></span>
},
{
title: '会员类型',
dataIndex: 'type',
align: 'center',
key: 'type',
},
{
title: '会员角色',
dataIndex: 'role',
align: 'center',
key: 'role',
},
{
title: '会员等级',
dataIndex: 'class',
align: 'center',
key: 'class',
},
]
const renderStatus = (status: any) => { const renderStatus = (status: any) => {
if(status === 5) if(status === 5)
return <span className={styles.pruductStatus}>已上架</span> return <span className={styles.pruductStatus}>已上架</span>
...@@ -165,7 +114,7 @@ const ViewDriectChannel: React.FC<{}> = () => { ...@@ -165,7 +114,7 @@ const ViewDriectChannel: React.FC<{}> = () => {
const content = <> const content = <>
<Descriptions colon={true} style={{marginTop:50}}> <Descriptions colon={true} style={{marginTop:50}}>
<Descriptions.Item label="商品状态">{renderStatus(channelDetails?.channelCommodity?.status)}</Descriptions.Item> <Descriptions.Item label="商品状态">{renderStatus(channelDetails?.channelCommodity?.status)}</Descriptions.Item>
<Descriptions.Item label="上级渠道">{channelDetails?.parentMemberName}</Descriptions.Item> <Descriptions.Item label="上级渠道">{channelDetails?.channelCommodity?.source === 1 && channelDetails?.channelCommodity?.parentMemberName}</Descriptions.Item>
<Descriptions.Item label="上架商城"> <Descriptions.Item label="上架商城">
{ {
shopList.length>0 && shopList.map((item, index)=> item.isCheck && <span key={index}>{item.name}&nbsp;</span>) shopList.length>0 && shopList.map((item, index)=> item.isCheck && <span key={index}>{item.name}&nbsp;</span>)
...@@ -189,8 +138,9 @@ const ViewDriectChannel: React.FC<{}> = () => { ...@@ -189,8 +138,9 @@ const ViewDriectChannel: React.FC<{}> = () => {
<p> <p>
<Avatar size={48} shape="square" src={channelDetails?.unitPriceAndPicList[0]?.commodityPic && channelDetails.unitPriceAndPicList[0].commodityPic[0]} /> <Avatar size={48} shape="square" src={channelDetails?.unitPriceAndPicList[0]?.commodityPic && channelDetails.unitPriceAndPicList[0].commodityPic[0]} />
<span style={{color:'rgba(23,43,77,1)',fontSize:20,fontWeight:500,marginLeft:16}}>{channelDetails?.name}</span> <span style={{color:'rgba(23,43,77,1)',fontSize:20,fontWeight:500,marginLeft:16}}>{channelDetails?.name}</span>
<span style={{color:'#E63F3B',padding:'2px 5px',background:'rgba(255,235,230,1)',borderRadius:'4px',marginLeft:16,marginRight:16}}>{channelDetails?.source === 1 ? "上级渠道" : "渠道自有"}</span> <span style={{color:'#E63F3B',padding:'2px 5px',background:'rgba(255,235,230,1)',borderRadius:'4px',marginLeft:16,marginRight:16}}>{channelDetails?.channelCommodity?.source === 1 ? "上级渠道" : "渠道自有"}</span>
<a href={channelDetails?.source === 1 ? `/shop/commodity/detail?id=${channelDetails?.channelCommodity?.commodity?.id}` : `/memberCenter/commodityAbility/commodity/products/viewProducts?id=${channelDetails?.channelCommodity?.commodity?.id}`}>去查看 &gt;</a> <a>去查看 &gt;</a>
{/* <a href={channelDetails?.source === 1 ? `/shop/commodity/detail?id=${channelDetails?.channelCommodity?.commodity?.id}` : `/memberCenter/commodityAbility/commodity/products/viewProducts?id=${channelDetails?.channelCommodity?.commodity?.id}`}>去查看 &gt;</a> */}
</p> </p>
{content} {content}
</Card> </Card>
......
...@@ -123,11 +123,11 @@ const viewProducts: React.FC<{}> = () => { ...@@ -123,11 +123,11 @@ const viewProducts: React.FC<{}> = () => {
key: 'operation', key: 'operation',
render: (text:any, record:any) => { render: (text:any, record:any) => {
if(record.operation === 1) if(record.operation === 1)
return '新增' return '提交审核'
else if(record.operation === 2) else if(record.operation === 2)
return '修改' return '修改商品'
else if(record.operation === 3) else if(record.operation === 3)
return '审核' return '审核商品'
} }
}, },
{ {
...@@ -585,31 +585,44 @@ const viewProducts: React.FC<{}> = () => { ...@@ -585,31 +585,44 @@ const viewProducts: React.FC<{}> = () => {
<Space direction="vertical" style={{width:'100%'}}> <Space direction="vertical" style={{width:'100%'}}>
<Card headStyle={{borderBottom:'none'}} title="商品描述"> <Card headStyle={{borderBottom:'none'}} title="商品描述">
{/* 文字区块 */} {/* 文字区块 */}
<div className={cx(styles.descriptionBox, styles.descriptionWordBox)}> {
{ productDetail?.commodityRemark?.word?.length>0 &&
productDetail?.commodityRemark?.word?.length>0 ? productDetail?.commodityRemark?.word.map((_item, _index) => <div className={cx(styles.descriptionBox, styles.descriptionWordBox)}>
_item && <p>{_item}</p> {
) : <p className={styles.descriptNull}>暂无文字数据</p> productDetail?.commodityRemark?.word.map((_item, _index) =>
} _item && <p>{_item}</p>
</div> )
}
</div>
}
{/* 视频区块 */} {/* 视频区块 */}
<div className={styles.descriptionBox}> {
{ productDetail?.commodityRemark?.video?.length>0 &&
productDetail?.commodityRemark?.video?.length>0 ? productDetail?.commodityRemark?.video.map((_item, _index)=> <div key={_index} className={styles.videoItem}> <div className={styles.descriptionBox}>
<video src={_item} controls={true}> {
您的浏览器不支持视频标签,请及时升级。 productDetail?.commodityRemark?.video.map((_item, _index)=> <div key={_index} className={styles.videoItem}>
</video> <video src={_item} controls={true}>
</div>) : <p className={styles.descriptNull}>暂无视频数据</p> 您的浏览器不支持视频标签,请及时升级。
} </video>
</div> </div>)
}
</div>
}
{/* 图片区块 */} {/* 图片区块 */}
<div className={styles.descriptionBox}> {
{ productDetail?.commodityRemark?.image?.length>0 &&
productDetail?.commodityRemark?.image?.length>0 ? productDetail?.commodityRemark?.image.map((_item, _index)=> _item && <div key={_index} className={styles.imgItem}> <div className={styles.descriptionBox}>
<img src={_item} /> {
</div>) : <p className={styles.descriptNull}>暂无图片数据</p> productDetail?.commodityRemark?.image.map((_item, _index)=> _item && <div key={_index} className={styles.imgItem}>
} <img src={_item} />
</div> </div>)
}
</div>
}
{
productDetail?.commodityRemark?.image?.length===0 && productDetail?.commodityRemark?.video?.length===0 && productDetail?.commodityRemark?.word?.length===0 &&
<p className={styles.descriptNull}>暂无数据!</p>
}
</Card> </Card>
</Space> </Space>
<Space direction="vertical" style={{width:'100%'}}> <Space direction="vertical" style={{width:'100%'}}>
......
...@@ -80,11 +80,11 @@ const viewBrand: React.FC<{}> = () => { ...@@ -80,11 +80,11 @@ const viewBrand: React.FC<{}> = () => {
render: (text:any, record:any) => { render: (text:any, record:any) => {
let component: ReactNode = null let component: ReactNode = null
if(record.operation === 1) if(record.operation === 1)
component = (<>新增</>) component = (<>提交审核</>)
else if(record.operation === 2) else if(record.operation === 2)
component = (<>修改</>) component = (<>修改品牌</>)
else if(record.operation === 3) else if(record.operation === 3)
component = (<>审核</>) component = (<>审核品牌</>)
return component return component
} }
}, },
......
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