Commit 65426d1d authored by XieZhiXiong's avatar XieZhiXiong
parents a7f236df 8154b045
......@@ -160,6 +160,14 @@ const AddAtttribute: React.FC<{}> = () => {
menuForm.setFieldsValue({ isDate: false })
}
const priceAttributeChange = (e) => {
if(e.target.checked) {
menuForm.setFieldsValue({"isEmpty": true})
} else {
menuForm.setFieldsValue({"isEmpty": false})
}
}
return <PageHeaderWrapper
onBack={() => history.goBack()}
backIcon={<ReutrnEle description={intl.formatMessage({ id: 'classAndProperty.attribute.addAttribute.back' })}/>}
......@@ -261,7 +269,7 @@ const AddAtttribute: React.FC<{}> = () => {
</Col> */}
<Col span={24}>
{/* 规格属性 -> 原价格属性 */}
<Form.Item name="isPrice" valuePropName="checked" initialValue={false} noStyle><Checkbox disabled={isSee}>{intl.formatMessage({ id: 'classAndProperty.attribute.addAttribute.form.isPrice' })}</Checkbox></Form.Item>
<Form.Item name="isPrice" valuePropName="checked" initialValue={false} noStyle><Checkbox onChange={priceAttributeChange} disabled={isSee}>{intl.formatMessage({ id: 'classAndProperty.attribute.addAttribute.form.isPrice' })}</Checkbox></Form.Item>
<Tooltip title={intl.formatMessage({ id: 'classAndProperty.attribute.addAttribute.form.isPrice.tooltip' })}>
<InfoCircleOutlined />
</Tooltip>
......
.giudeContainer {
display: flex;
flex: 1;
.guideItem {
position: relative;
width: 180px;
height: 180px;
margin: 8px;
width: 180px;
background: #F5F6F7;
border-radius: 8px;
padding: 16px;
p {
height: 20px;
font-size: 12px;
color: #A2A2A2;
line-height: 20px;
}
:global {
.ant-btn {
position: absolute;
bottom: 16px;
}
}
.stepNumber {
width: 65px;
height: 132px;
opacity: 0.09;
font-weight: Bold;
font-size: 110px;
color: #8B9190;
position: absolute;
right: 0;
bottom: 0;
}
}
}
import React from 'react'
import { useIntl } from 'umi';
import { Button, Modal, ModalProps } from 'antd';
import styles from './index.less'
export interface PutawayGuideProps extends ModalProps {
visible?: boolean,
}
/**
* 商品 上架引导
* @param props
* @returns
*/
const PutawayGuide: React.FC<PutawayGuideProps> = (props) => {
const intl = useIntl();
const {visible = false, ...restProps } = props
return (
<Modal
title="商品上架引导"
visible={visible}
footer={null}
destroyOnClose={true}
{...restProps}
>
<div className={styles.giudeContainer}>
<div className={styles.guideItem}>
<h3>创建自营商城(店铺)</h3>
<p>您还没有创建店铺。</p>
<Button>创建店铺</Button>
<span className={styles.stepNumber}>1</span>
</div>
<div className={styles.guideItem}>
<h3>配置仓位库存</h3>
<p>您还没有配置仓位库存。</p>
<Button>配置仓位库存</Button>
<span className={styles.stepNumber}>2</span>
</div>
<div className={styles.guideItem}>
<h3>配置订单流程</h3>
<p>您还没有配置订单流程。</p>
<Button>配置订单流程</Button>
<span className={styles.stepNumber}>3</span>
</div>
<div className={styles.guideItem}>
<h3>上架商品</h3>
{/* <p>您还没有创建店铺。</p>
<Button>创建店铺</Button> */}
<span className={styles.stepNumber}>4</span>
</div>
</div>
</Modal>
)
}
PutawayGuide.defaultProps = {}
export default PutawayGuide
......@@ -33,6 +33,7 @@ import UpperProductModalTable from './components/upperProductModalTable'
import { Item } from '@/components/ButtonTabs'
import { getProductCommodityGetCommodityList, getProductCommodityGetShop, GetProductCommodityGetShopResponse, postProductCommodityApplyCheckCommodity, postProductCommodityCopyCommodity, postProductCommodityDeleteBatchCommodity, postProductCommodityExportCommodityQrCode, postProductCommodityGetShopBatch, postProductCommodityOffPublishCommodity, postProductCommodityOffPublishCommodityBatch, postProductCommodityPublishCommodity, postProductCommodityPublishCommodityBatch } from '@/services/ProductV2Api'
import { getTemplateWebMemberShopWebFindCurrMemberShop } from '@/services/TemplateV2Api'
import PutawayGuide from './components/putawayGuide'
const { confirm } = Modal;
......@@ -74,11 +75,16 @@ const Products: React.FC<{}> = () => {
const currentRef = useRef<any>([])
const currentRefRow = useRef<any>([])
const upperRef = useRef<any>({})
const [giudeVisible, setGiudeVisible] = useState<boolean>(false)
const [shopId, setShopId] = useState<any>()
/** 带参数查询,给表单带默认值 */
const { searchData, formatInitialValue, clear } = useSetSearchValueInTable();
useEffect(() => {
console.log(upDownModal, 'upDownModal')
}, [upDownModal])
const formatedFormValue = useMemo(() => {
const value = formatInitialValue?.value || {};
if (value && "statusList" in value) {
......@@ -425,6 +431,7 @@ const Products: React.FC<{}> = () => {
setIsDisabledOKbtn(false)
message.error(intl.formatMessage({ id: 'commodity.products.handleUp.error' }))
}
setGiudeVisible(true)
} else {
postProductCommodityOffPublishCommodity(params).then(res => {
setUpDownModal(false)
......@@ -525,7 +532,7 @@ const Products: React.FC<{}> = () => {
} else if(e.key === '5') {
console.log(currentRefRow.current)
if(!currentRefRow.current.every(item => item.status === 5)) {
return message.error(intl.formatMessage({ id: 'commodity.products.handleBatch.qingxuanzeshangjiashangpin' }))
return message.error(intl.formatMessage({ id: 'commodity.products.schema.fastSchema.qingxuanzeshangjiashangpin' }))
}
currentRef.current.length ? setExportQrcodeModal(true) : message.error(intl.formatMessage({ id: 'commodity.products.handleBatchDelete.error' }))
}
......@@ -800,6 +807,8 @@ const Products: React.FC<{}> = () => {
</Modal>
{/* 选择上游商品 */}
<UpperProductModalTable currentRef={upperRef} type="checkbox" tableRef={ref} />
{/* 商品上架引导 */}
<PutawayGuide visible={giudeVisible} width={800} onCancel={() => setGiudeVisible(false)} />
</PageHeaderWrapper>
)
}
......
......@@ -29,7 +29,7 @@ const pageToBeSubmitExamine = () => {
return new Date(Date.parse(time.replace(/-/g, "/"))).getTime() / 1000;
}
const columns: ColumnType<any>[] = [{
title: intl.formatMessage({id: 'contract.hetongbianhaozhaiyao'}),
title: intl.formatMessage({ id: 'contract.hetongbianhaozhaiyao' }),
dataIndex: 'contractNo',
align: 'left',
render: (text, record) =>
......@@ -42,7 +42,7 @@ const pageToBeSubmitExamine = () => {
<p>{record.contractAbstract}</p>
</div>
}, {
title: intl.formatMessage({id: 'contract.hetongshengxiaoshixiaoshi'}),
title: intl.formatMessage({ id: 'contract.hetongshengxiaoshixiaoshi' }),
dataIndex: 'startTime',
align: 'left',
sorter: {
......@@ -56,12 +56,12 @@ const pageToBeSubmitExamine = () => {
</div>
},
{
title: intl.formatMessage({id: 'contract.hetongjiafang'}),
title: intl.formatMessage({ id: 'contract.hetongjiafang' }),
dataIndex: 'partyAName',
align: 'left',
},
{
title: intl.formatMessage({id: 'contract.hetongzongjine'}),
title: intl.formatMessage({ id: 'contract.hetongzongjine' }),
dataIndex: 'totalAmount',
align: 'left',
render: (text) =>
......@@ -70,7 +70,7 @@ const pageToBeSubmitExamine = () => {
</div>
},
{
title: intl.formatMessage({id: 'contract.duiyingdanjuxunyuanlei'}),
title: intl.formatMessage({ id: 'contract.duiyingdanjuxunyuanlei' }),
dataIndex: 'sourceNo',
align: 'left',
render: (text, record) =>
......@@ -88,7 +88,7 @@ const pageToBeSubmitExamine = () => {
</div>
},
{
title: intl.formatMessage({id: 'contract.waibuzhuangtai'}),
title: intl.formatMessage({ id: 'contract.waibuzhuangtai' }),
dataIndex: 'outerStatusName',
align: 'left',
render: (text) => {
......@@ -98,7 +98,7 @@ const pageToBeSubmitExamine = () => {
}
},
{
title: intl.formatMessage({id: 'contract.neibuzhuangtai'}),
title: intl.formatMessage({ id: 'contract.neibuzhuangtai' }),
dataIndex: 'innerStatusName',
align: 'left',
render: (text) => {
......@@ -111,13 +111,13 @@ const pageToBeSubmitExamine = () => {
}
},
{
title: intl.formatMessage({id: 'contract.caozuo'}),
title: intl.formatMessage({ id: 'contract.caozuo' }),
dataIndex: 'innerStatusName',
align: 'left',
render: (text, record) => {
return (
<div>
<span style={{ color: '#00B37A', cursor: 'pointer' }} onClick={() => history.push(`/memberCenter/contract/coordination/pageToBeSubmitExamine/details?contractId=${record.id}&type=submitExamine`)}>{intl.formatMessage({id: 'contract.tijiaoshenhe'})}</span>
<span style={{ color: '#00B37A', cursor: 'pointer' }} onClick={() => history.push(`/memberCenter/contract/coordination/pageToBeSubmitExamine/details?contractId=${record.id}&type=submitExamine`)}>{intl.formatMessage({ id: 'contract.tijiaoshenhe' })}</span>
</div>
)
}
......
......@@ -172,6 +172,7 @@ const OwnMallTempleteEdit: React.FC<ShopPreviewPropsType> = props => {
};
const getInfoList = async () => {
try {
const param: any = {
current: 1,
pageSize: 1,
......@@ -182,6 +183,9 @@ const OwnMallTempleteEdit: React.FC<ShopPreviewPropsType> = props => {
return res.data.data[0].title;
}
return '';
} catch (error) {
return '';
}
};
const getComponentsConfig = async () => {
......
......@@ -399,7 +399,7 @@ const EAccountDetail: React.FC<{}> = () => {
</div>
<div className={styles['repayment-end']}>
<span className={styles['repayment-time']}>
{details?.memberName}
{details?.name}
</span>
</div>
</div>
......@@ -479,9 +479,12 @@ const EAccountDetail: React.FC<{}> = () => {
lg={14}
>
<p className={styles.rightInfo}>
{
{/* {
details?.accountStatus &&
<StatusTag title={memberStatusMap[details.accountStatus]['title']} type={memberStatusMap[details.accountStatus]['type']} />
} */}
{
details?.accountStatusName
}
</p>
</Col>
......
import React, { useCallback, useRef } from 'react';
import React from 'react';
import { OrderDetailContext } from '../../../_public/order/context';
import { Button } from 'antd';
import OrderDetailHeader from '@/pages/transaction/components/orderDetailHeader';
import OrderDetailWrapper from '@/pages/transaction/components/orderDetailWrapper';
import PreLoading from '@/components/PreLoading';
import { useOrderDetail } from '../../../_public/order/effects/useOrderDetail';
import OrderHandDeleved from '../../../components/orderHandDeleved';
import OrderDetailSection from '../../../components/orderDetailSection';
import { usePageStatus } from '@/hooks/usePageStatus';
import { useIntl } from 'umi';
const ReadyConfirmDelevedOrderDetail: React.FC = () => {
const { formContext, id, detailList } = useOrderDetail({type: 's_readyConfirmDelevedOrder'})
const { batchNo } = usePageStatus()
const intl = useIntl()
// // 是否是手工发货
// const isHandDeleved = formContext.data && formContext.data.purchaseOrderInteriorState === SaleOrderInsideWorkState.HAND_DELEVED_ORDER
// // 所有发货单都是否已经发货了
// const isShowBtn = isHandDeleved || formContext.data?.orderDeliveryDetailsResponses?.some(v => v.interiorState === DeliverySideState.ADD_LOGISTICS_ORDER)
// 是否发过货
// const isHandDeleved = Number(batchNo) <= 0
const isHandDeleved = true
// 是否发货完成
const approvedRef = useRef<any>({})
const handleClick = useCallback(() => {
if (isHandDeleved) {
approvedRef.current.setVisible(true)
} else {
const deleveBox = document.querySelector('#deleveBox') as any
window.scrollTo(0, deleveBox.offsetTop)
}
}, [isHandDeleved])
const ReadyDelevedOrderDetail: React.FC = () => {
const { formContext, detailList } = useOrderDetail({type: 'purchaseOrder'})
return (
<div>
<OrderDetailContext.Provider value={formContext}>
<OrderDetailHeader detailList={detailList} detailData={formContext.data} extraRight={
<Button type='primary' onClick={handleClick}>
{ isHandDeleved ? intl.formatMessage({ id: 'saleOrder.querenshougongfa', defaultMessage: '确认手工发货' }) : intl.formatMessage({ id: 'saleOrder.qufahuo', defaultMessage: '去发货' }) }
</Button>
} />
<OrderDetailHeader detailList={detailList} detailData={formContext.data}/>
<OrderDetailWrapper>
<PreLoading loading={!formContext.data} active paragraph={{rows: 6}}>
<OrderDetailSection formContext={formContext} type='saleOrder'/>
<OrderDetailSection formContext={formContext}/>
</PreLoading>
</OrderDetailWrapper>
{/* 提交时触发的弹窗集合 */}
<OrderHandDeleved
currentRef={approvedRef}
/>
</OrderDetailContext.Provider>
</div>
);
};
export default ReadyConfirmDelevedOrderDetail;
export default ReadyDelevedOrderDetail;
......@@ -21,7 +21,7 @@ export const useSelfTable = () => {
render: (text, record) => {
// 查看订单, 需根据状态显示不同schema
return (
<EyePreview url={`/memberCenter/tranactionAbility/saleOrder/readyConfirmDelevedOrder/preview?id=${record.orderId}`}>
<EyePreview url={`/memberCenter/tranactionAbility/purchaseOrder/readyDelevedOrder/detail?id=${record.orderId}`}>
{text}
</EyePreview>
)
......
......@@ -66,7 +66,7 @@ class ProductStore implements IProductModule {
tempObj[item] = attributeValueIdArr[index]
}
else if(this.attributeLists.filter(_item => _item.id === item)[0]?.type === 3){ // 输入
tempObj[item] = attributeValueArr[index][0].value
tempObj[item] = attributeValueArr[index][0]?.value || ''
}
else{
tempObj[item] = attributeValueIdArr[index][0]
......
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