Commit 4e673f24 authored by 前端-黄佳鑫's avatar 前端-黄佳鑫

feat: 完成质检单生成售后单

parent 651bfed7
......@@ -27,7 +27,7 @@ import {
EXCHANGE_INNER_STATUS_BADGE_MAP,
} from '../../../../constants';
import { isMaterialOrder } from '../../../../utils';
import { getCookie } from '@/utils/cookie';
import { getCookie, removeCookie } from '@/utils/cookie';
const addSchemaAction = createFormActions();
const {
......@@ -194,8 +194,7 @@ const ExchangeForm: React.FC<BillsFormProps> = ({
const [submitLoading, setSubmitLoading] = useState(false);
const [visibleGoodsDrawer, setVisibleGoodsDrawer] = useState(false);
const [orderTypeValue, setOrderTypeValue] = useState(0);
const [formed, setFormed] = useState<boolean>(false);
const GENERATE_QUALITY_AFTERSALE = getCookie('GENERATE_QUALITY_AFTERSALE');
const isPointsOrder = orderTypeValue === ORDER_TYPE2_POINTS || orderTypeValue === ORDER_TYPE2_CHANNEL_POINTS;
const isMateriel = isMaterialOrder(orderTypeValue);
......@@ -492,15 +491,14 @@ const ExchangeForm: React.FC<BillsFormProps> = ({
// 质检单生成售后
const getQualityOrderProduct = () => {
if (outerOrderType && !id) {
setFormed(true);
const {
replaceGoodsList,
qualityOrderProductVOS,
sourceId,
sourceType,
supplierMemberId,
supplierMemberName,
supplierRoleId,
}: any = getCookie('GENERATE_QUALITY_AFTERSALE');
}: any = GENERATE_QUALITY_AFTERSALE;
addSchemaAction.setFieldState(
'*(supplierMember)',
state => {
......@@ -523,7 +521,31 @@ const ExchangeForm: React.FC<BillsFormProps> = ({
,
sourceId,
sourceType,
replaceGoodsList,
replaceGoodsList: qualityOrderProductVOS.map(_item => {
return {
orderRecordId: _item.orderProductId,
orderNo: _item.orderNo,
type: _item.type,
skuId: _item.skuId,
productId: _item.productId,
productName: _item.productName,
category: _item.category,
brand: _item.brand,
unit: _item.unit,
replaceCount: _item.rejectCount,
purchaseCount: _item.receiveCount,
purchaseAmount: _item?.purchaseAmount,
isHasTax: _item?.isHasTax,
taxRate: _item?.taxRate,
purchasePrice: _item?.purchasePrice,
orderId: _item?.orderId,
extraData: {
remaining: _item.purchaseCount || 0, // 已换货数量,这里取 采购数量判断即可
id: _item.orderProductId,
orderId: _item.orderId,
},
}
}),
orderType: +outerOrderType,
});
setOrderTypeValue(+outerOrderType);
......@@ -663,6 +685,9 @@ const ExchangeForm: React.FC<BillsFormProps> = ({
if (res.code === 1000) {
setUnsaved(false);
setTimeout(() => {
if (GENERATE_QUALITY_AFTERSALE) {
removeCookie('GENERATE_QUALITY_AFTERSALE')
}
history.goBack();
}, 800);
} else {
......
......@@ -14,6 +14,15 @@ import { getOrderQualityDetail, getOrderQualityGetInnerLog } from '@/services/Or
import { isEmpty } from 'lodash';
import { setCookie } from '@/utils/cookie';
enum AFTER_SALE_TYPE {
/** 换货 */
EXCHANGE = 1,
/** 退货 */
RETURN,
/** 维修 */
MAINTAIN
}
enum TYPE {
/** 生成B2B质检单 */
B2B = 1,
......@@ -104,6 +113,21 @@ const QualityManageDetail = (props) => {
setSaleVisible(true);
}
/** 查看售后单 */
const handleCheckAfter = (record) => {
switch (record?.afterSaleType) {
case AFTER_SALE_TYPE.EXCHANGE:
history.push(`/memberCenter/afterService/exchangeApplication/exchangeQuery/detail?id=${record?.afterSalesId}`)
break;
case AFTER_SALE_TYPE.RETURN:
history.push(`/memberCenter/afterService/returnApplication/returnQuery/detail?id=${record?.afterSalesId}`)
break;
case AFTER_SALE_TYPE.MAINTAIN:
history.push(`/memberCenter/afterService/repairApplication/repairQuery/detail?id=${record?.afterSalesId}`)
break;
}
}
const showAfterBtn = (record) => {
return (record?.orderNo && record?.rejectCount && record?.afterSalesStatus === NOSUCESS) ? true : false
}
......@@ -247,7 +271,7 @@ const QualityManageDetail = (props) => {
width: dataSource?.type === TYPE.B2B ? 180 : 160,
render: (_text, record) => <>
<Button type='link' onClick={() => handledetection(record)}>检验记录</Button>
{(dataSource?.type === TYPE.B2B && record?.afterSalesStatus === SUCESS) && <Button type='link' onClick={() => message.warn('该订单没有售后单号无法跳转')}>查看售后单</Button>}
{(dataSource?.type === TYPE.B2B && record?.afterSalesStatus === SUCESS && record?.afterSalesId) && <Button type='link' onClick={() => handleCheckAfter(record)}>查看售后单</Button>}
{(PATH === 'detail' && showAfterBtn(record)) && <>
<Button type='link' onClick={() => handleGenerateSale(false, record)}>生成售后单</Button>
</>}
......@@ -369,10 +393,9 @@ const QualityManageDetail = (props) => {
const controllerBtns = <Button disabled={isEmpty(rowkeys)} type='default' onClick={() => handleGenerateSale(true)}>批量生成售后单</Button>
/** 生成售后单按钮事件 */
const handleOk = () => {
if (checkedId) {
const replaceGoodsList = (
const qualityOrderProductVOS = (
isbatch ? dataSource?.qualityOrderProductVOS.filter(_item => rowkeys.find(item => item === _item?.id)) : [dataSource?.qualityOrderProductVOS.find(item => item?.id === saleid)]
);
const saledata = {
......@@ -381,41 +404,22 @@ const QualityManageDetail = (props) => {
supplierMemberName: dataSource?.vendorMemberName,
sourceType: 1, // 来源类型0.默认1.质检单
sourceId: id, // 质检单id,
replaceGoodsList: replaceGoodsList.map(_item => {
return {
orderRecordId: _item.orderProductId,
orderNo: _item.orderNo,
type: _item.type,
skuId: _item.skuId,
productId: _item.skuId,
productName: _item.productName,
category: _item.category,
brand: _item.brand,
unit: _item.unit,
replaceCount: _item.rejectCount,
purchaseCount: _item.receiveCount,
purchaseAmount: _item?.purchaseAmount,
isHasTax: _item?.isHasTax,
taxRate: _item?.taxRate,
purchasePrice: _item?.purchasePrice,
orderId: _item?.orderId,
}
}),
qualityOrderProductVOS,
}
const orderType = replaceGoodsList.map(_item => _item?.orderType);
const orderType = qualityOrderProductVOS.map(_item => _item?.orderType);
if (!orderType.every(_item => _item === orderType[count])) {
message.warning('订单类型不同,无法生成售后单!')
return
}
setCookie('GENERATE_QUALITY_AFTERSALE', JSON.stringify(saledata))
switch (checkedId) {
case 1:
case AFTER_SALE_TYPE.EXCHANGE:
history.push(`/memberCenter/afterService/exchangeApplication/exchangePrSubmit/add?orderType=${orderType[count]}`)
break;
case 2:
case AFTER_SALE_TYPE.RETURN:
history.push(`/memberCenter/afterService/returnApplication/returnPrSubmit/add?orderType=${orderType[count]}`)
break;
case 3:
case AFTER_SALE_TYPE.MAINTAIN:
history.push(`/memberCenter/afterService/repairApplication/repairPrSubmit/add?orderType=${orderType[count]}`)
break;
}
......
......@@ -4,7 +4,7 @@ const recentVisitKey = 'recentVisit';
/**
* 设置最近访问本地存储数据
* @param data
* @param data
*/
export const setRecentVisit = (data: RecentVisitType) => {
localStorage.setItem(recentVisitKey, JSON.stringify(data));
......@@ -12,7 +12,7 @@ export const setRecentVisit = (data: RecentVisitType) => {
/**
* 获取最近访问本地存储数据
* @param data
* @param data
*/
export const getRecentVisit = (): RecentVisitType => {
const stora = localStorage.getItem(recentVisitKey);
......@@ -22,8 +22,8 @@ export const getRecentVisit = (): RecentVisitType => {
/**
* 清除最近访问本地存储数据
* @param data
* @param data
*/
export const clearRecentVisit = () => {
localStorage.removeItem(recentVisitKey);
};
\ No newline at end of file
};
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