Commit dda7b95b authored by XieZhiXiong's avatar XieZhiXiong
parents 6bf82f45 d0046413
......@@ -13,6 +13,7 @@ import { PublicApi } from '@/services/api';
import { store } from '@/store'
import { inject, observer } from 'mobx-react'
import { validatorNumberRange } from '../constant';
const {Item}:any = Form
......@@ -307,28 +308,6 @@ const SetPrice:React.FC<IProps> = (props) => {
setLadderPrice(false)
}
// 校验阶梯范围
const validatorNumberRange = (rule, value, callback) => {
try {
if(Array.isArray(value)){
let range = value.map(item => {
if(item)
return Object.values(item.numberRange)
}).reduce(
function(a, b) {
return a.concat(b);
},
[]
)
let result = range.map(Number).reduce((a, b) => { if(a<b) return b })
if(!result) throw new Error('请正确输入阶梯数量范围');
callback()
}
} catch (err) {
callback(err)
}
}
const onChangeTax = (e) => {
setIsTax(e.target.checked)
}
......
......@@ -9,6 +9,7 @@ import { QuestionCircleOutlined, SettingOutlined, PlusOutlined, MinusOutlined, }
import { inject, observer } from 'mobx-react'
import { store } from '@/store'
import { IProductSelectAttribute } from '@/module/productModule'
import { validatorNumberRange } from '../constant'
const _ = require("lodash");
......@@ -588,56 +589,7 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
priceForm.setFieldsValue({unitName: option.children})
}
// 校验阶梯范围
const validatorNumberRange = (rule, value, callback) => {
// let minOrder = Number(minOrderNumber)
// let precision;
// if(Number.isInteger(minOrder)) { // 整数取1
// precision = 1
// } else { // 小数取最小精度(最多三位)
// switch(minOrderNumber.toString().split(".")[1].length) {
// case 1:
// precision = 0.1
// break;
// case 2:
// precision = 0.01
// break;
// case 3:
// precision = 0.001
// break;
// default:
// precision = 1
// }
// }
try {
if(Array.isArray(value)){
let range = value.map(item => {
if(item)
return Object.values(item.numberRange)
}).reduce(
function(a, b) {
// // 判断首位数是否满足精度
// if(a.length && b.length) {
// if((Number(b[0])*1000 - Number(a[a.length-1])*1000)/1000 !== precision) {
// throw new Error('请正确输入阶梯数量范围');
// }
// }
return a.concat(b);
},
[]
)
let result = range.map(Number).reduce((a, b) => { if(a<b) return b })
if(!result) throw new Error('请正确输入阶梯数量范围');
if(Number(range[0]) !== Number(minOrderNumber)) throw new Error('阶段的起始值必须为最小起订数');
callback()
}
} catch (err) {
callback(err)
}
}
const clickBatchSetPrice = () => {
// console.log('批量设置价格')
setPriceForm.resetFields() // 先清空
setIsBatchSetting(true) // 点击置为true
setSetPriceModal(true)
......@@ -861,7 +813,7 @@ const PriceAttributeForm: React.FC<Iprops> = (props) => {
message: '阶梯范围为必填项'
},
{
validator: validatorNumberRange
validator: (r, v, c) => validatorNumberRange(r, v, c, minOrderNumber)
}
]}
>
......
import { ColumnType } from 'antd/lib/table';
import moment from 'moment';
import React, { ReactNode } from 'react'
/** 商品 渠道商品 快捷修改单价 共用常量 */
/** 商品(渠道商品)状态 */
export const productStatusLabel = [
'',
'待提交审核',
'待审核',
'审核通过',
'审核不通过',
'已上架',
'已下架',
'未上架'
]
/** 品类类型&商品类型 */
export const customerCategoryTypeLabel = [
'',
'实物商品',
'虚拟商品',
'服务商品',
]
/** 商品定价类型 */
export const priceTypeLabel = [
'',
'现货价格',
'价格需要询价',
'积分兑换商品',
]
/** 商品物流类型 */
export const deliveryTypeLabel = [
'',
'物流(默认)',
'自提',
'无需配送',
]
/** 商品运费类型 */
export const carriageTypeLabel = [
'',
'卖家承担运费(默认)',
'买家承担运费',
]
/** 查看商品 审核历史列 */
export const columns: ColumnType<any>[] = [
{
title: '序号',
dataIndex: 'memberRoleId',
key: 'memberRoleId',
render: (t, c, i) => i + 1
},
{
title: '角色',
dataIndex: 'memberRoleName',
key: 'memberRoleName',
},
{
title: '状态',
dataIndex: 'status',
key: 'status',
render: (text:any, record:any) => {
let component: ReactNode = null
if(record.status === 4)
component = (<><span className="commonStatusValid"></span>审核通过</>)
else if(record.status === 1)
component = (<><span className="commonStatusInvalid"></span>待提交审核</>)
else if(record.status === 2)
component = (<><span className="commonStatusModify"></span>待审核</>)
else if(record.status === 3)
component = (<><span className="commonStatusStop"></span>审核不通过</>)
return component
}
},
{
title: '操作',
dataIndex: 'operation',
key: 'operation',
render: (text:any, record:any) => {
if(record.operation === 1)
return '提交审核'
else if(record.operation === 2)
return '修改商品'
else if(record.operation === 3)
return '审核商品'
}
},
{
title: '操作时间',
dataIndex: 'createTime',
key: 'createTime',
render: (text: any) => moment(text).format("YYYY-MM-DD HH:mm:ss")
},
{
title: '意见',
dataIndex: 'checkRemark',
key: 'checkRemark',
},
];
/** 校验阶梯价格函数 min参数判断是否校验最小起订 */
export const validatorNumberRange = (rule: any, value: any, callback: any, min?: any) => {
try {
if(Array.isArray(value)){
let range = value.map(item => {
if(item)
return Object.values(item.numberRange)
}).reduce(
function(a, b) {
return a.concat(b);
},
[]
)
let result = range.map(Number).reduce((a, b) => { if(a<b) return b })
if(!result) throw new Error('请正确输入阶梯数量范围');
if(min && (Number(range[0]) !== Number(min))) throw new Error('阶段的起始值必须为最小起订数');
callback()
}
} catch (err) {
callback(err)
}
}
......@@ -16,6 +16,7 @@ import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilte
import { searchCustomerCategoryOptionEffect, searchBrandOptionEffect } from './effect'
import { fastSchema } from './schema/productSchema'
import { FORM_FILTER_PATH } from '@/formSchema/const'
import { validatorNumberRange } from './constant'
const formActions = createFormActions();
......@@ -235,54 +236,6 @@ const FastModifyPrice: React.FC<{}> = () => {
}
}
// 校验阶梯范围
const validatorNumberRange = (rule, value, callback) => {
// let minOrder = Number(currentRow.minOrder)
// let precision;
// if(Number.isInteger(minOrder)) { // 整数取1
// precision = 1
// } else { // 小数取最小精度(最多三位)
// switch(minOrder.toString().split(".")[1].length) {
// case 1:
// precision = 0.1
// break;
// case 2:
// precision = 0.01
// break;
// case 3:
// precision = 0.001
// break;
// default:
// precision = 1
// }
// }
try {
if(Array.isArray(value)){
let range = value.map(item => {
if(item)
return Object.values(item.numberRange)
}).reduce(
function(a, b) {
// // 判断首位数是否满足精度
// if(a.length && b.length) {
// if((Number(b[0])*1000 - Number(a[1])*1000)/1000 !== precision) {
// throw new Error('请正确输入阶梯数量范围');
// }
// }
return a.concat(b);
},
[]
)
let result = range.map(Number).reduce((a, b) => { if(a<b) return b })
if(!result) throw new Error('请正确输入阶梯数量范围');
if(Number(range[0]) !== Number(currentRow.minOrder)) throw new Error('阶段的起始值必须为最小起订数');
callback()
}
} catch (err) {
callback(err)
}
}
return (
<PageHeaderWrapper>
<Card>
......@@ -347,7 +300,7 @@ const FastModifyPrice: React.FC<{}> = () => {
message: '阶梯范围为必填项'
},
{
validator: validatorNumberRange
validator: (r, v, c) => validatorNumberRange(r, v, c, currentRow.minOrder)
}
]}
>
......
......@@ -26,6 +26,8 @@ import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilte
import { searchBrandOptionEffect, searchCustomerCategoryOptionEffect } from './effect'
import { getAuth } from '@/utils/auth'
import useSetSearchValueInTable from '@/hooks/useSetSearchValueInTable'
import { priceTypeLabel, productStatusLabel } from './constant'
import EyePreview from '@/components/EyePreview'
const { Option } = Select;
const { confirm } = Modal;
......@@ -94,7 +96,9 @@ const Products: React.FC<{}> = () => {
className: 'commonPickColor',
width: 240,
ellipsis: true,
render: (text: any, record: any) => <a title={text} onClick={() => handleSee(record)}>{text}&nbsp;<EyeOutlined /></a>
render: (text: any, record: any) => <EyePreview url={`/memberCenter/commodityAbility/commodity/products/detail?id=${record.id}`}>
{text}
</EyePreview>
},
{
title: '商品品类',
......@@ -115,29 +119,7 @@ const Products: React.FC<{}> = () => {
title: '产品定价',
dataIndex: 'priceType',
key: 'priceType',
render: (text:any, reocrd:any)=>{
if(text===1)
return '现货价格'
else if(text===2)
return '价格需要询价'
else if(text===3)
return '积分兑换商品'
},
filters: [
{
text: '现货价格',
value: 1,
},
{
text: '价格需要询价',
value: 2,
},
{
text: '积分兑换商品',
value: 3,
},
],
onFilter: (value, record) => record.priceType === value,
render: (text:any, reocrd:any) => priceTypeLabel[text]
},
{
title: '价格',
......@@ -170,49 +152,7 @@ const Products: React.FC<{}> = () => {
title: '商品状态',
dataIndex: 'status',
key: 'status',
render: (text: any, record: any) => {
let component: ReactNode = null
if (record.status === 1)
component = (<><span className="commonStatusStop"></span>待提交审核</>)
else if (record.status === 2)
component = (<><span className="commonStatusModify"></span>待审核</>)
else if (record.status === 3)
component = (<><span className="commonStatusInvalid"></span>审核不通过</>)
else if (record.status === 4)
component = (<><span className="commonStatusValid"></span>审核通过</>)
else if (record.status === 5)
component = (<span style={{ color: '#00B37A', padding: '2px 5px', background: 'rgba(235,247,242,1)', borderRadius: '4px' }}>已上架</span>)
else if (record.status === 6)
component = (<span style={{ padding: '2px 5px', background: 'rgba(244,245,247,1)', borderRadius: '4px' }}>已下架</span>)
return component
},
filters: [
{
text: '待提交审核',
value: 1,
},
{
text: '待审核',
value: 2,
},
{
text: '审核不通过',
value: 3,
},
{
text: '审核通过',
value: 4,
},
{
text: '已上架',
value: 5,
},
{
text: '已下架',
value: 6,
}
],
onFilter: (value, record) => record.status === value,
render: (text: any, record: any) => <><span className="commonStatusModify"></span>{productStatusLabel[text]}</>
},
{
title: '操作',
......@@ -270,16 +210,11 @@ const Products: React.FC<{}> = () => {
})
}
const handleSee = (record: any) => {
history.push(`/memberCenter/commodityAbility/commodity/products/detail?id=${record.id}`)
}
const clickModify = (id: number) => {
history.push(`/memberCenter/commodityAbility/commodity/products/edit?id=${id}`)
}
const handleCancel = () => {
console.log('cancel')
setImportModal(false)
}
......@@ -288,7 +223,6 @@ const Products: React.FC<{}> = () => {
onChange: (selectedRowKeys: any, selectedRows: any) => {
setSelectRow(selectedRows);
setSelectedRowKeys(selectedRowKeys);
console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
}
}
......
......@@ -10,9 +10,9 @@ import {
} from '@ant-design/icons'
import ReutrnEle from '@/components/ReturnEle';
import styles from './index.less'
import { PublicApi } from '@/services/api';
import { GetLogisticsSelectListCompanyResponse, GetLogisticsSelectListFreightTemplateResponse, GetLogisticsSelectListShipperAddressResponse } from '@/services/LogisticsApi';
import { validatorNumberRange } from './constant';
const layout = {
labelCol: {
......@@ -96,11 +96,9 @@ const ModifyDirectChannel:React.FC<{}> = () => {
PublicApi.getLogisticsSelectListShipperAddress().then(res=>{
setLogisticsAddressList(res.data)
})
PublicApi.getLogisticsSelectListCompany({cooperateType: '2'}).then(res=>{
setLogisticsCompanyLists(res.data)
})
PublicApi.getLogisticsSelectListFreightTemplate().then(res=>{
setLogisticsTemplateList(res.data)
})
......@@ -128,9 +126,6 @@ const ModifyDirectChannel:React.FC<{}> = () => {
idList: priceTableData.map(item => item.id)
}, { ctlType: "none" }).then(res => {
const { data } = res
// let hasIds = priceTableData.map(item => item.id)
// setOriginHasIds(hasIds)
// let _data = data.filter(item => !originHasIds.includes(item.id))
setOriginTableData(data)
if(data.length > 0) {
structureTable(data)
......@@ -261,10 +256,9 @@ const ModifyDirectChannel:React.FC<{}> = () => {
const clickSetPrice = (record: any) => {
setIsBatchSetting(false) // 点击行操作批量置为false
console.log(record, 'record')
setCurrentSetPriceRow(record)
setModifyModal(true)
setPriceForm.resetFields() // 先清空
setPriceForm.resetFields()
if(Object.keys(record['单价'])[0] === '0-0') { // 状态为非阶梯价格
setLadderPrice(false)
setPriceForm.setFieldsValue({ladderPrice: false, uniquePrice: Object.values(record['单价'])[0]})
......@@ -308,9 +302,7 @@ const ModifyDirectChannel:React.FC<{}> = () => {
return _row
} else return item
})
// newTabeData[curretSetPriceRow['索引']] = _row
}
console.log(curretSetPriceRow, _row, _newTabeData, newTabeData, 'option')
setPriceTableData(_newTabeData)
constructedPrarams()
})
......@@ -350,12 +342,10 @@ const ModifyDirectChannel:React.FC<{}> = () => {
})
setSubmitParams(_data)
// console.log(priceTableData, _priceTableData, _data, 'params')
}
const clickDelete = (record: any) => {
setPriceTableData(priceTableData => [...priceTableData].filter(item => item.id != record.id))
// setSelectedSpecRowKeys(selectedSpecRowKeys => [...selectedSpecRowKeys].filter(item => item != record.id))
if(!flagRef.current){
PublicApi.postProductChannelCommodityDeleteChannelCommodityPrice({id: record.id},{ctlType: 'none'})
}
......@@ -367,34 +357,12 @@ const ModifyDirectChannel:React.FC<{}> = () => {
}
const clickBatchSetPrice = () => {
setPriceForm.resetFields() // 先清空
setIsBatchSetting(true) // 点击置为true
setPriceForm.resetFields()
setIsBatchSetting(true)
setModifyModal(true)
setLadderPrice(false)
}
// 校验阶梯范围
const validatorNumberRange = (rule, value, callback) => {
try {
if(Array.isArray(value)){
let range = value.map(item => {
if(item)
return Object.values(item.numberRange)
}).reduce(
function(a, b) {
return a.concat(b);
},
[]
)
let result = range.reduce((a, b) => { if(a<b) return b })
if(!result) throw new Error('请正确输入阶梯数量范围');
callback()
}
} catch (err) {
callback(err)
}
}
const onSave = async () => {
setIsDisabledSave(true)
let logistics = await logisticsForm.validateFields()
......
......@@ -3,9 +3,9 @@ import { history } from 'umi'
import { Card, Space, Row, Col, Descriptions, Table, Avatar } from 'antd'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import ReutrnEle from '@/components/ReturnEle'
import styles from "./index.less"
import { GlobalConfig } from '@/global/config'
import { PublicApi } from '@/services/api'
import { carriageTypeLabel, deliveryTypeLabel, productStatusLabel } from './constant'
const ViewDriectChannel: React.FC<{}> = () => {
const [channelDetails, setChannelDetails] = useState<any>()
......@@ -111,26 +111,14 @@ const ViewDriectChannel: React.FC<{}> = () => {
"单价": item.unitPrice
})
})
console.log(col, 'col', _tableData)
setPriceTableData(_tableData)
}
}
const renderStatus = (status: any) => {
if (status === 5)
return <span className={styles.pruductStatus}>已上架</span>
if (status === 6)
return <span style={{ padding: '2px 5px', background: 'rgba(244,245,247,1)', borderRadius: '4px' }}>已下架</span>
if (status === 7)
return <span style={{ color: '#E63F3B', padding: '2px 5px', background: 'rgba(255,235,230,1)', borderRadius: '4px' }}>未上架</span>
else
return null
}
const content = <>
<Descriptions colon={true} style={{ marginTop: 50 }}>
{
renderStatus(channelDetails?.status) && <Descriptions.Item label="商品状态">{renderStatus(channelDetails?.status)}</Descriptions.Item>
channelDetails?.status && <Descriptions.Item label="商品状态">{productStatusLabel[channelDetails?.status]}</Descriptions.Item>
}
{
channelDetails?.channelCommodity?.source === 1 && <Descriptions.Item label="上级渠道">{channelDetails?.channelCommodity?.parentMemberName}</Descriptions.Item>
......@@ -156,18 +144,6 @@ const ViewDriectChannel: React.FC<{}> = () => {
</Descriptions>
</>
const renderDeliveryType = (type: number) => {
if(type === 1) return '物流(默认)'
else if(type === 2) return '自提'
else if(type === 3) return '无需配送'
else return null
}
const renderCarriageType = (type: number) => {
if(type === 1) return '卖家承担运费(默认)'
if(type === 2) return '买家承担运费'
}
return (
<PageHeaderWrapper
onBack={() => history.goBack()}
......@@ -229,24 +205,24 @@ const ViewDriectChannel: React.FC<{}> = () => {
<Row>
<Col span={24}>
{
renderDeliveryType(channelDetails?.logistics?.deliveryType) &&
channelDetails?.logistics?.deliveryType &&
<Row>
<Col span={4}>
<p>配送方式:</p>
</Col>
<Col span={20}>
<p>{renderDeliveryType(channelDetails?.logistics?.deliveryType)}</p>
<p>{deliveryTypeLabel[channelDetails?.logistics?.deliveryType]}</p>
</Col>
</Row>
}
{
renderCarriageType(channelDetails?.logistics?.carriageType) &&
channelDetails?.logistics?.carriageType &&
<Row>
<Col span={4}>
<p>运送方式:</p>
</Col>
<Col span={20}>
<p>{renderCarriageType(channelDetails?.logistics?.carriageType)}</p>
<p>{carriageTypeLabel[channelDetails?.logistics?.carriageType]}</p>
</Col>
</Row>
}
......
import React, { useState, useRef, ReactNode, useEffect } from 'react'
import React, { useState, ReactNode, useEffect } from 'react'
import { history } from 'umi'
import { Button, Steps, Card, Space, Tooltip, Row, Col, Descriptions, Table, Tabs, Tag, Divider } from 'antd'
import { Steps, Card, Space, Tooltip, Row, Col, Descriptions, Table, Tabs, Tag, Divider } from 'antd'
import { PageHeaderWrapper } from '@ant-design/pro-layout'
import {
QuestionCircleOutlined,
FormOutlined,
UserOutlined,
CaretDownOutlined,
CaretUpOutlined
} from '@ant-design/icons'
import { ColumnType } from 'antd/lib/table/interface'
import cx from 'classnames'
import ReutrnEle from '@/components/ReturnEle'
import styles from "./index.less"
......@@ -17,18 +14,15 @@ import { PublicApi } from '@/services/api'
import {
GetProductCommodityGetCommodityResponse,
GetProductCommodityGetCommodityCheckRecordResponse,
GetProductCommodityGetShopResponse
} from '@/services/ProductApi'
import moment from 'moment'
import { isGetAccessor } from 'typescript'
import { carriageTypeLabel, columns, customerCategoryTypeLabel, deliveryTypeLabel, priceTypeLabel, productStatusLabel } from './constant'
interface IAttributeByValue {
groupName: string;
id?: number;
name: string;
customerAttributeValue?: {
id: number;
value: string;
id: number;value: string;
}
}
......@@ -36,7 +30,7 @@ const { Step } = Steps;
const { TabPane } = Tabs;
const viewProducts: React.FC<{}> = () => {
const [productDetail, setPorductDetail] = useState<GetProductCommodityGetCommodityResponse>()
const [productDetail, setPorductDetail] = useState<any>()
const [checkRecord, setCheckRecord] = useState<GetProductCommodityGetCommodityCheckRecordResponse>()
const [fixStep, setFixStep] = useState(0)
const [dataByTab, setDataByTab] = useState<any[]>([])
......@@ -56,16 +50,10 @@ const viewProducts: React.FC<{}> = () => {
PublicApi.getProductCommodityGetCommodity({id: id}).then(res=>{
const { code, data } = res
if(code===1000){
// console.log(data, 'data')
setPorductDetail(data)
renderDataByTab(data)
constructTableData(data, data.unitPriceAndPicList)
if(data.status===1) setFixStep(0)
else if(data.status===2) setFixStep(1)
else if(data.status===3) setFixStep(2)
else if(data.status===4) setFixStep(2)
else if(data.status===5) setFixStep(3)
else if(data.status===6) setFixStep(3)
setFixStep(data.status - 1)
}
})
PublicApi.getProductCommodityGetCommodityCheckRecord({commodityId: id}).then(res=>{
......@@ -93,64 +81,10 @@ const viewProducts: React.FC<{}> = () => {
})
}, [productDetail])
const columns: ColumnType<any>[] = [
{
title: '序号',
dataIndex: 'memberRoleId',
key: 'memberRoleId',
render: (t, c, i) => i + 1
},
{
title: '角色',
dataIndex: 'memberRoleName',
key: 'memberRoleName',
},
{
title: '状态',
dataIndex: 'status',
key: 'status',
render: (text:any, record:any) => {
let component: ReactNode = null
if(record.status === 4)
component = (<><span className="commonStatusValid"></span>审核通过</>)
else if(record.status === 1)
component = (<><span className="commonStatusInvalid"></span>待提交审核</>)
else if(record.status === 2)
component = (<><span className="commonStatusModify"></span>待审核</>)
else if(record.status === 3)
component = (<><span className="commonStatusStop"></span>审核不通过</>)
return component
}
},
{
title: '操作',
dataIndex: 'operation',
key: 'operation',
render: (text:any, record:any) => {
if(record.operation === 1)
return '提交审核'
else if(record.operation === 2)
return '修改商品'
else if(record.operation === 3)
return '审核商品'
}
},
{
title: '操作时间',
dataIndex: 'createTime',
key: 'createTime',
render: (text: any) => moment(text).format("YYYY-MM-DD HH:mm:ss")
},
{
title: '意见',
dataIndex: 'checkRemark',
key: 'checkRemark',
},
];
/* 商品属性显示 */
/** 商品属性显示 */
//以属性组和属性名称归档的数据
const renderDataByTab = (data: GetProductCommodityGetCommodityResponse) => {
const renderDataByTab = (data: any) => {
let archiveByAttributeGroup = data.commodityAttributeList.map(_=>{
let obj: any = {..._.customerAttribute};
obj.customerAttributeValueList = _.customerAttributeValueList;
......@@ -159,10 +93,9 @@ const viewProducts: React.FC<{}> = () => {
let dataByTab = groupBy(archiveByAttributeGroup, 'groupName')
setDataByTab(Object.values(dataByTab))
setDataByTabTitle(Object.keys(dataByTab))
// console.log(dataByTab,'dataByData')
}
/* 按属性归类 */
/** 按属性归类 */
const groupBy = (objectArray: any[], property: string) => {
return objectArray.reduce(function (acc: { [x: string]: any[] }, obj: { [x: string]: any }) {
var key = obj[property];
......@@ -174,89 +107,34 @@ const viewProducts: React.FC<{}> = () => {
}, {});
}
// 1 审核状态 2 商品状态
const renderStatus = (status: number, type: number) => {
let component: ReactNode = null
if(type===1){
if (status === 1)
component = (<><span className="commonStatusStop"></span>待提交审核</>)
else if (status === 2)
component = (<><span className="commonStatusModify"></span>待审核</>)
else if (status === 4)
component = (<><span className="commonStatusValid"></span>审核通过</>)
else if (status === 3)
component = (<><span className="commonStatusInvalid"></span>审核不通过</>)
else
component = null
}else
if (status === 5)
component = (<span style={{ color: '#00B37A', padding: '2px 5px', background: 'rgba(235,247,242,1)', borderRadius: '4px' }}>已上架</span>)
else if (status === 6)
component = (<span style={{ padding: '2px 5px', background: 'rgba(244,245,247,1)', borderRadius: '4px' }}>已下架</span>)
else
component = null
return component
}
/* 品类类型&商品类型 */
//1-实物商品、2-虚拟商品、3-服务商品
const renderCustomerCategoryType = (type: number) => {
if(type === 1 ) return '实物商品'
if(type === 2 ) return '虚拟商品'
if(type === 3 ) return '服务商品'
}
/* Description */
const content = <>
<Descriptions colon={true} style={{paddingLeft:128}}>
<Descriptions.Item label="商品品牌">{productDetail?.brand?.name}</Descriptions.Item>
<Descriptions.Item label="商品品类">{productDetail?.customerCategory?.fullName}</Descriptions.Item>
{/* {
productDetail?.commodityShopList?.length>0 &&
<Descriptions.Item label="上架商城">
{
productDetail.commodityShopList.map((item, index)=><span key={index}><img width="24" height="24" style={{borderRadius: '50%', marginRight: 4}} src={item.logoUrl} title={item.name} alt={item.name}/></span>)
}
</Descriptions.Item>
} */}
{renderStatus(productDetail?.status, 1) && <Descriptions.Item label="审核状态">{renderStatus(productDetail?.status, 1)}</Descriptions.Item>}
{renderStatus(productDetail?.status, 2) && <Descriptions.Item label="商品状态">{renderStatus(productDetail?.status, 2)}</Descriptions.Item>}
<Descriptions.Item label="商品类型"><span className="commonStatusValid"></span>{renderCustomerCategoryType(productDetail?.customerCategory?.type)}</Descriptions.Item>
<Descriptions.Item label="商品状态"><span className="commonStatusModify"></span>{productStatusLabel[productDetail?.status]}</Descriptions.Item>
<Descriptions.Item label="商品类型"><span className="commonStatusValid"></span>{customerCategoryTypeLabel[productDetail?.customerCategory?.type]}</Descriptions.Item>
</Descriptions>
</>
const renderPriceType = (type: number) => {
if(type === 1 ) return '现货价格'
if(type === 2 ) return '价格需要询价'
if(type === 3 ) return '积分兑换商品'
}
const renderDeliveryType = (type: number) => {
if(type === 1) return '物流(默认)'
else if(type === 2) return '自提'
else if(type === 3) return '无需配送'
else return null
}
const renderCarriageType = (type: number) => {
if(type === 1) return '卖家承担运费(默认)'
if(type === 2) return '买家承担运费'
}
/* 构建表格数据 */
/** 构建"单价设置"table数据 */
const constructTableData = (product: any, unitPriceAndPicList: GetProductCommodityGetCommodityResponse["unitPriceAndPicList"]) => {
// 构建列
// console.log(product, unitPriceAndPicList, '构建列')
// 初始化columns
let _col = [];
let col_productName = { title: '商品名称', dataIndex: '商品名称', key: '索引' }
let col_productName = {
title: '商品名称',
dataIndex: '商品名称',
key: '索引'
}
_col.push(col_productName)
// 提取一项 确定货品列和属性列
// 提取商品单价和图片中一项 生成货品列和属性列
let attributeByValue: IAttributeByValue[] = []
if(unitPriceAndPicList.length > 0){
if(unitPriceAndPicList.length > 0) {
let item = unitPriceAndPicList[0]
if(item.attributeAndValueList.length>0){ // 存在多个属性
if(item.attributeAndValueList.length > 0) { // 存在多个属性
attributeByValue = item.attributeAndValueList.map(_item => {
let _obj = {..._item.customerAttribute}
let _obj = { ..._item.customerAttribute }
_obj['customerAttributeValue'] = _item.customerAttributeValue
return _obj
})
......@@ -277,7 +155,7 @@ const viewProducts: React.FC<{}> = () => {
}
}
_col.push({
title: product?.priceType===3?'所需积分':'单价(元)',
title: product?.priceType===3 ? '所需积分' : '单价(元)',
dataIndex: '单价',
key: '单价',
render: (text, record) => {
......@@ -290,7 +168,7 @@ const viewProducts: React.FC<{}> = () => {
setTableColumns(_col)
// 生成表格数据
// 生成dataSource数据
let _tableData: any[] = []
let _attributeArrByImageRender: any[] = []
let _imageArrByImageRender: any[] = []
......@@ -315,16 +193,11 @@ const viewProducts: React.FC<{}> = () => {
}
return temp
})
// console.log(_tableData, _attributeArrByImageRender, '_tableData')
setTableRenderDatas(_tableData)
setAttributeArrByImageRender(_attributeArrByImageRender)
setImageArrByImageRender(_imageArrByImageRender)
}
const clickModify = () => {
history.push(`/memberCenter/commodityAbility/commodity/products/edit?id=${productDetail.id}`)
}
const toogleMore = (str: string) => {
if(str === 'area'){
setShowMore({
......@@ -366,11 +239,6 @@ const viewProducts: React.FC<{}> = () => {
onBack={() => history.goBack()}
backIcon={<ReutrnEle logoSrc={productDetail?.unitPriceAndPicList[0]?.commodityPic[0]} />}
content={content}
// extra={[
// <Button icon={<FormOutlined />} key="1" type="primary" disabled={productDetail?.status !== 3 && productDetail?.status !== 1 } onClick={clickModify}>
// 修改
// </Button>,
// ]}
>
<Space direction="vertical" style={{width:'100%'}}>
<Card headStyle={{borderBottom:'none'}} title="流程进度">
......@@ -438,24 +306,24 @@ const viewProducts: React.FC<{}> = () => {
<Col span={8}>
<Card headStyle={{borderBottom:'none'}} title="物流信息" style={{height:'100%'}}>
{
renderDeliveryType(productDetail?.logistics?.deliveryType) &&
productDetail?.logistics?.deliveryType &&
<Row>
<Col span={4}>
<p>配送方式:</p>
</Col>
<Col span={20}>
<p>{renderDeliveryType(productDetail?.logistics?.deliveryType)}</p>
<p>{deliveryTypeLabel[productDetail?.logistics?.deliveryType]}</p>
</Col>
</Row>
}
{
renderCarriageType(productDetail?.logistics?.carriageType) &&
productDetail?.logistics?.carriageType &&
<Row>
<Col span={4}>
<p>运送方式:</p>
</Col>
<Col span={20}>
<p>{renderCarriageType(productDetail?.logistics?.carriageType)}</p>
<p>{carriageTypeLabel[productDetail?.logistics?.carriageType]}</p>
</Col>
</Row>
}
......@@ -611,7 +479,7 @@ const viewProducts: React.FC<{}> = () => {
<Col span={6}>
<p>
{
renderPriceType(productDetail?.priceType)
priceTypeLabel[productDetail?.priceType]
}
</p>
</Col>
......@@ -632,7 +500,6 @@ const viewProducts: React.FC<{}> = () => {
<Space direction="vertical" style={{width:'100%'}}>
<Card headStyle={{borderBottom:'none'}} title="商品图片">
{
// productDetail?.unitPriceAndPicList[0].attributeAndValueList.length === 0 ? <>
productDetail?.isAllAttributePic ? <>
<Row>
<Col span={3}>
......
......@@ -74,7 +74,6 @@ const orderProductShopTypeMaps = {
export const AddressPop = (props) => {
const { pickInfo = null, children } = props
console.log(pickInfo)
return pickInfo && pickInfo.deliverType === 2 ? <Space>
<EnvironmentOutlined style={{marginRight: 8}}/>
<Popover content={
......
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