Commit d30ba54c authored by wzy's avatar wzy

feat: 进销存-单据管理修改

parent deea026b
/*
* @Author: XieZhiXiong
* @Date: 2021-10-18 11:11:48
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-11-17 20:29:02
* @Description:
*/
import { useBusinessEffects } from './useBusinessEffects';
import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect';
import { getProductInvoicesTypeAll, getProductWarehouseAll } from '@/services/ProductV2Api';
// 获取单据类型
const fetchInvoicesType = (): Promise<any[]> => {
return new Promise((resolve, reject) => {
getProductInvoicesTypeAll().then(res => {
if (res.code === 1000) {
resolve(res.data);
}
reject();
}).catch(() => {
reject();
});
});
};
// 获取仓库
const fetchInventory = (): Promise<any[]> => {
return new Promise((resolve, reject) => {
getProductWarehouseAll().then(res => {
if (res.code === 1000) {
resolve(res.data);
}
reject();
}).catch(() => {
reject();
});
});
};
export const createEffects = (context, actions) => {
useBusinessEffects(context, actions);
useAsyncSelect('invoicesTypeId', fetchInvoicesType, ['name', 'id']);
useAsyncSelect('inventoryId', fetchInventory, ['name', 'id']);
};
\ No newline at end of file
/*
* @Author: XieZhiXiong
* @Date: 2021-10-18 11:11:48
* @LastEditors: XieZhiXiong
* @LastEditTime: 2021-11-17 20:29:02
* @Description:
*/
import { useBusinessEffects } from './useBusinessEffects';
import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect';
import { getProductInvoicesTypeAll, getProductWarehouseAll } from '@/services/ProductV2Api';
// 获取单据类型
const fetchInvoicesType = (): Promise<any[]> => {
return new Promise((resolve, reject) => {
getProductInvoicesTypeAll().then(res => {
if (res.code === 1000) {
resolve(res.data);
}
reject();
}).catch(() => {
reject();
});
});
};
// 获取仓库
const fetchInventory = (): Promise<any[]> => {
return new Promise((resolve, reject) => {
getProductWarehouseAll().then(res => {
if (res.code === 1000) {
resolve(res.data);
}
reject();
}).catch(() => {
reject();
});
});
};
export const createEffects = (context, actions) => {
useBusinessEffects(context, actions);
useAsyncSelect('invoicesTypeId', fetchInvoicesType, ['name', 'id']);
useAsyncSelect('warehouseId', fetchInventory, ['name', 'id']);
};
......@@ -5,15 +5,10 @@
* @LastEditTime: 2021-11-17 20:30:16
* @Description: 联动逻辑相关
*/
import { Modal, message } from 'antd';
import { FormEffectHooks, FormPath } from '@formily/antd';
import { useLinkageUtils } from '@/utils/formEffectUtils';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch';
import {
DEPENDENT_DOC_ORDER,
DEPENDENT_DOC_EXCHANGE,
DEPENDENT_DOC_RETURN,
DEPENDENT_DOC_PRODUCTION,
DEPENDENT_DOC_INTERNAL,
DOC_TYPE_PURCHASE_RECEIPT,
......@@ -27,15 +22,10 @@ import {
DOC_TYPE_EXCHANGE_RETURN_INVOICE,
DOC_TYPE_EXCHANGE_RETURN_RECEIPT,
} from '@/constants/commodity';
import {
DELIVERY_TYPE,
} from '@/constants/order';
import Search from '@/components/NiceForm/components/Search';
import Submit from '@/components/NiceForm/components/Submit';
import DateSelect from '@/components/NiceForm/components/DateSelect';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import { getEnhanceProcessToBeAddDeliveryDetails, getEnhanceSupplierToBeAddStorageDetails } from '@/services/EnhanceV2Api';
import { getAsReplaceGoodsPageReturnedGoods, getAsReturnGoodsPageReturnedGoods } from '@/services/AfterServiceV2Api';
import {
purchaseOrderBillSchema,
machiningWarehousingBillSchema,
......@@ -200,18 +190,6 @@ const getParams = type => {
return basicParams;
};
const freeEnumItem = (data: {[key: string]: any}[], keyName: string, value: any) => {
if (!Array.isArray(data)) {
return;
}
data.forEach(item => {
if (item[keyName] === value) {
item.disabled = false;
} else {
item.disabled = true;
}
});
};
export const useBusinessEffects = (context, actions) => {
const {
......@@ -223,58 +201,11 @@ export const useBusinessEffects = (context, actions) => {
const linkage = useLinkageUtils();
// 根据 单据类型 联动 对应单据所选项
onFieldInputChange$('invoicesTypeId').subscribe(fieldState => {
// const newEnum = [...getFieldState('relevanceInvoices', state => state.props.enum)];
// switch (fieldState.value) {
// // 采购入库单、销售发货单只能选择 订单
// case DOC_TYPE_PURCHASE_RECEIPT:
// case DOC_TYPE_SALES_INVOICE: {
// freeEnumItem(newEnum, 'value', DEPENDENT_DOC_ORDER);
// break;
// }
// // 加工入库单、加工发货单只能选择 生产通知单
// case DOC_TYPE_PROCESS_RECEIPT:
// case DOC_TYPE_PROCESS_INVOICE: {
// freeEnumItem(newEnum, 'value', DEPENDENT_DOC_PRODUCTION);
// break;
// }
// // 退货发货单、退货入库单只能选择 退货申请单
// case DOC_TYPE_RETURN_INVOICE:
// case DOC_TYPE_RETURN_RECEIPT: {
// freeEnumItem(newEnum, 'value', DEPENDENT_DOC_RETURN);
// break;
// }
// // 换货退货发货单、换货退货入库单只能选择 换货申请单
// case DOC_TYPE_EXCHANGE_RETURN_INVOICE:
// case DOC_TYPE_EXCHANGE_RETURN_RECEIPT: {
// freeEnumItem(newEnum, 'value', DEPENDENT_DOC_EXCHANGE);
// break;
// }
// // 换货发货单、换货入库单只能选择 换货申请单
// case DOC_TYPE_EXCHANGE_INVOICE:
// case DOC_TYPE_EXCHANGE_RECEIPT: {
// freeEnumItem(newEnum, 'value', DEPENDENT_DOC_EXCHANGE);
// break;
// }
// // 其他的走内部单据
// default: {
// freeEnumItem(newEnum, 'value', DEPENDENT_DOC_INTERNAL);
// break;
// }
// }
// linkage.value('relevanceInvoices', undefined);
// linkage.enum('relevanceInvoices', newEnum);
const invoicesDetailsRequestsVal = getFieldValue('invoicesDetailsRequests');
onFieldInputChange$('invoicesTypeId').subscribe(() => {
const invoicesDetailsRequestsVal = getFieldValue('invoicesDetailsDTOList');
if (invoicesDetailsRequestsVal && invoicesDetailsRequestsVal.length) {
linkage.value('invoicesDetailsRequests', []);
linkage.value('invoicesDetailsDTOList', []);
}
const orderNoVal = getFieldValue('orderNo');
......@@ -287,13 +218,13 @@ export const useBusinessEffects = (context, actions) => {
onFieldValueChange$('invoicesTypeId').subscribe(fieldState => {
const { originAsyncData = [] } = fieldState;
const current = originAsyncData.find(item => item.id === fieldState.value);
const params = getParams(fieldState.value);
// const params = getParams(fieldState.value);
if (current) {
linkage.value('invoicesTypeCode', current.number);
linkage.value('direction', current.direction);
}
linkage.componentProps('orderNo', params);
// linkage.componentProps('orderNo', params);
});
// 根据 单据类型 联动 对应单据所选项
......@@ -312,229 +243,17 @@ export const useBusinessEffects = (context, actions) => {
});
// 对应仓库改变
onFieldInputChange$('inventoryId').subscribe(fieldState => {
onFieldInputChange$('warehouseId').subscribe(fieldState => {
console.log("🚀 ~ file: useBusinessEffects.ts ~ line 316 ~ useBusinessEffects ~ fieldState", fieldState)
const current = fieldState.originAsyncData.find(item => item.id === fieldState.value);
console.log("🚀 ~ file: useBusinessEffects.ts ~ line 317 ~ useBusinessEffects ~ current", current)
if (current) {
linkage.value('inventoryRole', current.principal);
}
});
// 关联单据改变
onFieldValueChange$('orderNo').subscribe(fieldState => {
const invoicesTypeIdVal = getFieldValue('invoicesTypeId');
const first = fieldState.value && fieldState.value[0];
// 设置单据公用的数据相关
setFieldValue('memberName', first ? first.memberName : '');
setFieldValue('membersId', first ? first.membersId : '');
setFieldValue('membersRoleId', first ? first.membersRoleId : '');
setFieldValue('address', first ? `${first.fullAddress} ${first.receiverName}/${first.phone}` : '');
// 以下数据只用于收集,不用于展示
setFieldValue('deliveryAddresId', first ? first.deliveryAddresId : null);
setFieldValue('receiverName', first ? first.receiverName : '');
setFieldValue('fullAddress', first ? first.fullAddress : '');
setFieldValue('phone', first ? first.phone : '');
setFieldValue('isDefault', first ? first.isDefault : false);
if (!first) {
return;
}
switch (invoicesTypeIdVal) {
// 采购入库单、销售发货单
case DOC_TYPE_PURCHASE_RECEIPT:
case DOC_TYPE_SALES_INVOICE: {
// 设置配送方式相关字段数据
setFieldValue('transport', DELIVERY_TYPE[first.deliveryType]);
setFieldValue('deliveryType', first.deliveryType);
// 根据选择的订单查询 订单对应的商品,并给 Table 的商品下拉框赋值
// getOrderProcurementOrderProductList({
// id: first.id,
// orderNo: '',
// } as any).then(res => {
// if (res.code === 1000) {
// const goodOptions = res.data.map(item => ({
// label: item.productName,
// value: item.id,
// }));
// setFieldState('invoicesDetailsRequests.*.product', state => {
// FormPath.setIn(state, 'originAsyncData', res.data);
// FormPath.setIn(state, 'props.enum', goodOptions);
// });
// }
// }).catch((err) => {
// console.warn(err);
// });
break;
}
// 加工入库单
case DOC_TYPE_PROCESS_RECEIPT: {
// 设置配送方式相关字段数据
setFieldValue('transport', DELIVERY_TYPE[first.deliveryType]);
setFieldValue('deliveryType', first.deliveryType);
// 从加工单详情获取 商品 数据
getEnhanceSupplierToBeAddStorageDetails({
id: first.id,
}).then(res => {
if (res.code !== 1000) {
return;
}
const {
details = [],
deliveryType,
} = res.data;
const goodOptions = details.map(item => ({
label: `${item.productName}${item.orderNo ? '---' + item.orderNo : ''}`,
value: item.id,
}));
setFieldState('invoicesDetailsRequests.*.product', state => {
FormPath.setIn(state, 'originAsyncData', details.map(item => ({
...item,
// 这里的数据以采购、销售订单的为准
price: item.processPrice, // 与采购入库单、销售发货单统一
logistics: {
deliveryType, // 手动赋值配送方式,同一个通知单下的所有商品都是统一的配送方式
},
})));
FormPath.setIn(state, 'props.enum', goodOptions);
});
}).catch((err) => {
console.warn(err);
});
break;
}
// 加工发货单
case DOC_TYPE_PROCESS_INVOICE: {
// 设置配送方式相关字段数据
setFieldValue('transport', DELIVERY_TYPE[first.deliveryType]);
setFieldValue('deliveryType', first.deliveryType);
// 从加工单详情获取 商品 数据
getEnhanceProcessToBeAddDeliveryDetails({
id: first.id,
}).then(res => {
if (res.code !== 1000) {
return;
}
const {
details = [],
} = res.data;
const goodOptions = details.map(item => ({
label: `${item.productName}${item.orderNo ? '---订单号:' + item.orderNo : ''}`,
value: item.id,
}));
setFieldState('invoicesDetailsRequests.*.product', state => {
FormPath.setIn(state, 'originAsyncData', details.map((item) => ({
...item,
price: item.processPrice, // 与采购入库单、销售发货单统一
})));
FormPath.setIn(state, 'props.enum', goodOptions);
});
}).catch((err) => {
console.warn(err);
});
break;
}
// 换货退货发货单
case DOC_TYPE_EXCHANGE_RETURN_INVOICE:
// 换货退货入库单
case DOC_TYPE_EXCHANGE_RETURN_RECEIPT:
// 换货发货单
case DOC_TYPE_EXCHANGE_INVOICE:
// 换货入库单
case DOC_TYPE_EXCHANGE_RECEIPT: {
// 设置配送方式相关字段数据
setFieldValue('transport', DELIVERY_TYPE[first.deliveryType]);
setFieldValue('deliveryType', first.deliveryType);
// 获取明细数据 商品 数据
getAsReplaceGoodsPageReturnedGoods({
replaceId: first.id,
current: `${1}`,
pageSize: `${99999}`,
}).then(res => {
if (res.code !== 1000) {
return;
}
const {
data = [],
} = res.data;
const goodOptions = data.map(item => ({
label: `${item.productName}---订单号:${item.orderNo}`,
value: item.orderRecordId,
}));
setFieldState('invoicesDetailsRequests.*.product', state => {
FormPath.setIn(state, 'originAsyncData', data.map(item => ({
...item,
price: item.purchasePrice, // 与采购入库单、销售发货单统一
id: item.orderRecordId,
})));
FormPath.setIn(state, 'props.enum', goodOptions);
});
}).catch((err) => {
console.warn(err);
});
break;
}
// 退货发货单
case DOC_TYPE_RETURN_INVOICE:
// 退货入库单
case DOC_TYPE_RETURN_RECEIPT: {
// 设置配送方式相关字段数据
setFieldValue('transport', DELIVERY_TYPE[first.deliveryType]);
setFieldValue('deliveryType', first.deliveryType);
// 获取明细数据 商品 数据
getAsReturnGoodsPageReturnedGoods({
returnId: first.id,
current: `${1}`,
pageSize: `${99999}`,
}).then(res => {
if (res.code !== 1000) {
return;
}
const {
data = [],
} = res.data;
const goodOptions = data.map(item => ({
label: `${item.productName}---${intl.formatMessage({id: 'stockSellStorage.dingdanhao'})}${item.orderNo}`,
value: item.orderRecordId,
}));
setFieldState('invoicesDetailsRequests.*.product', state => {
FormPath.setIn(state, 'originAsyncData', data.map(item => ({
...item,
price: item.purchasePrice, // 与采购入库单、销售发货单统一
id: item.orderRecordId,
})));
FormPath.setIn(state, 'props.enum', goodOptions);
});
}).catch((err) => {
console.warn(err);
});
break;
}
default: {
break;
}
}
});
// 关联单据改变
onFieldInputChange$('orderNo').subscribe(fieldState => {
const invoicesDetailsRequestsVal = getFieldValue('invoicesDetailsRequests');
if (invoicesDetailsRequestsVal && invoicesDetailsRequestsVal.length) {
linkage.value('invoicesDetailsRequests', []);
linkage.value('warehouseRole', current.principal);
}
});
// 关联明细
onFieldValueChange$('invoicesDetailsRequests').subscribe(fieldState => {
onFieldValueChange$('invoicesDetailsDTOList').subscribe(fieldState => {
const { value } = fieldState;
if (!value.length) {
......@@ -544,412 +263,26 @@ export const useBusinessEffects = (context, actions) => {
}
});
// 关联明细 商品下拉框 联动商品ID、单价
onFieldInputChange$('invoicesDetailsRequests.*.product').subscribe(fieldState => {
const { name, originAsyncData, value } = fieldState;
const current = originAsyncData.find(item => item.id === value);
const invoicesTypeIdVal = getFieldValue('invoicesTypeId');
const invoicesDetailsRequestsValue = getFieldValue('invoicesDetailsRequests');
const itemIndex = name.match(/\d/)[0];
const itemNoValue = getFieldValue(FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.itemNo`
}));
// 这里判断是否货品 跟 商品 都已经选择过了,不可重复选择
const sameGood = invoicesDetailsRequestsValue.find((item, index) => index !== +itemIndex && item.itemNo === itemNoValue && item.product === value);
if (sameGood) {
message.warning(intl.formatMessage({id: 'stockSellStorage.cunzaixiangtonghuohaoshang'}));
setTimeout(() => {
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.product`
}),
state => {
state.value = undefined;
}
);
}, 0);
return;
}
// 取消选择
if (!value) {
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.productId`
}),
state => {
state.value = '';
}
);
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.price`
}),
state => {
state.value = null;
}
);
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.productCount`
}),
state => {
state.value = '';
}
);
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.amount`
}),
state => {
state.value = null;
}
);
const invoicesDetailsRequestsValue = getFieldValue('invoicesDetailsRequests');
switch (invoicesTypeIdVal) {
// 采购入库单、销售发货单
case DOC_TYPE_PURCHASE_RECEIPT:
case DOC_TYPE_SALES_INVOICE: {
// 明细每项数据的 商品 未选中,物流方式设置成 ''
if (
invoicesDetailsRequestsValue.every(item => !item.product)
) {
setFieldValue('transport', '');
setFieldValue('deliveryType', null);
}
break;
}
}
// 额外的数据
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.extraData`
}),
state => {
state.value = {};
}
);
}
if (!current) {
return;
}
// 关联明细 商品数量 联动计算商品金额
onFieldInputChange$('invoicesDetailsDTOList.*.invoicesCount').subscribe(fieldState => {
const { name, value } = fieldState;
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.productId`
}),
state => {
state.value = current.productId;
}
);
setFieldState(
const costPriceValue = getFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.price`
return `invoicesDetailsDTOList.${$1}.costPrice`
}),
state => {
state.value = current.price ? current.price.toFixed(2) : null;
}
state => state.value,
);
// 额外的数据
// 内部单据 单据金额为 成本价 * 单据数量
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.extraData`
return `invoicesDetailsDTOList.${$1}.totalPrice`
}),
state => {
state.value = {
productName: current.productName,
deliveryType:
// 配送方式,一个单据只能有一个配送方式
current.logistics && current.logistics.deliveryType ?
current.logistics.deliveryType :
undefined
,
id: current.id, // 加工发货单需要,明细id
processNum: current.processNum, // 加工发货单需要,加工数量
orderNo: current.orderNo, // 订单编号
goodsCount: current.purchaseCount, // 采购数量
price: current.processPrice, // 加工发货、入库单需要,加工单价
totalPrice: current.processTotalPrice, // 加工发货、入库单需要,加工总价
};
}
);
switch (invoicesTypeIdVal) {
// 采购入库单、销售发货单
case DOC_TYPE_PURCHASE_RECEIPT:
case DOC_TYPE_SALES_INVOICE: {
// 设置单据数量,取采购数量
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.productCount`
}),
state => {
state.value = current.purchaseCount;
}
);
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.amount`
}),
state => {
state.value = current.price ? `${intl.formatMessage({ id: 'common.money' })}${(current.purchaseCount * current.price).toFixed(2)}` : null;
}
);
setTimeout(() => {
const invoicesDetailsRequestsValue = getFieldValue('invoicesDetailsRequests');
// 配送方式,一个单据只能有一个配送方式
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.product`
}),
state => {
if (
current.logistics &&
invoicesDetailsRequestsValue.some(item => item.extraData && item.extraData.deliveryType !== current.logistics.deliveryType)
) {
state.errors = intl.formatMessage({id: 'stockSellStorage.shangpinpeisongfangshibuyi'});
} else {
state.errors = '';
}
}
);
// 明细每项数据的 商品 选中,物流方式设置成 为对应商品的物流方式
if (
current.logistics &&
current.logistics.deliveryType &&
invoicesDetailsRequestsValue.every(item => item.extraData && item.extraData.deliveryType === current.logistics.deliveryType)
) {
setFieldValue('transport', DELIVERY_TYPE[current.logistics.deliveryType]);
setFieldValue('deliveryType', current.logistics.deliveryType);
}
}, 0);
break;
}
// 加工入库单、加工发货单
case DOC_TYPE_PROCESS_RECEIPT:
case DOC_TYPE_PROCESS_INVOICE: {
// 设置单据数量,取加工数量
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.productCount`
}),
state => {
state.value = current.processNum;
}
);
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.amount`
}),
state => {
state.value = current.processPrice ? `${intl.formatMessage({ id: 'common.money' })}${(current.processNum * current.processPrice).toFixed(2)}` : null;
}
);
break;
}
// 换货退货发货单
case DOC_TYPE_EXCHANGE_RETURN_INVOICE:
// 换货退货入库单
case DOC_TYPE_EXCHANGE_RETURN_RECEIPT:
// 换货发货单
case DOC_TYPE_EXCHANGE_INVOICE:
// 换货入库单
case DOC_TYPE_EXCHANGE_RECEIPT: {
// 设置单据数量,取换货数量
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.productCount`
}),
state => {
state.value = current.replaceCount;
}
);
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.amount`
}),
state => {
state.value = current.price ? `${intl.formatMessage({ id: 'common.money' })}${(current.replaceCount * current.price).toFixed(2)}` : null;
}
);
break;
}
// 退货发货单
case DOC_TYPE_RETURN_INVOICE:
// 退货入库单
case DOC_TYPE_RETURN_RECEIPT: {
// 设置单据数量,取退货数量
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.productCount`
}),
state => {
state.value = current.returnCount;
}
);
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.amount`
}),
state => {
state.value = current.price ? `${intl.formatMessage({ id: 'common.money' })}${(current.returnCount * current.price).toFixed(2)}` : null;
}
);
break;
}
default: {
break;
state.value = costPriceValue ? `${intl.formatMessage({ id: 'common.money' })}${(+value * costPriceValue).toFixed(2)}` : null;
}
}
});
// 关联明细 商品数量 联动计算商品金额
onFieldInputChange$('invoicesDetailsRequests.*.productCount').subscribe(fieldState => {
const { name, value } = fieldState;
const invoicesTypeIdVal = getFieldValue('invoicesTypeId');
const originAsyncData = getFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.product`
}),
state => state.originAsyncData,
);
const goodId = getFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.product`
}),
state => state.value,
);
const current = originAsyncData ? originAsyncData.find(item => item.id === goodId) : null;
// switch (invoicesTypeIdVal) {
// // 采购入库单、销售发货单
// case DOC_TYPE_PURCHASE_RECEIPT:
// case DOC_TYPE_SALES_INVOICE: {
// if (current && +value > current.purchaseCount) {
// Modal.destroyAll();
// Modal.confirm({
// title: intl.formatMessage({id: 'stockSellStorage.tishi'}),
// content: intl.formatMessage({id: 'stockSellStorage.danjushuliangyichaoguoshang'}),
// okText: intl.formatMessage({id: 'stockSellStorage.queren'}),
// cancelText: intl.formatMessage({id: 'stockSellStorage.quxiao'}),
// });
// }
// break;
// }
// // 加工入库单、加工发货单
// case DOC_TYPE_PROCESS_RECEIPT:
// case DOC_TYPE_PROCESS_INVOICE: {
// if (current && +value > current.processNum) {
// Modal.destroyAll();
// Modal.confirm({
// title: intl.formatMessage({id: 'stockSellStorage.tishi'}),
// content: intl.formatMessage({id: 'stockSellStorage.danjushuliangyichaoguojia'}),
// okText: intl.formatMessage({id: 'stockSellStorage.queren'}),
// cancelText: intl.formatMessage({id: 'stockSellStorage.quxiao'}),
// cancelButtonProps: {
// style: {
// display: 'none',
// },
// },
// });
// }
// break;
// }
// // 换货退货发货单
// case DOC_TYPE_EXCHANGE_RETURN_INVOICE:
// // 换货退货入库单
// case DOC_TYPE_EXCHANGE_RETURN_RECEIPT:
// // 换货发货单
// case DOC_TYPE_EXCHANGE_INVOICE:
// // 换货入库单
// case DOC_TYPE_EXCHANGE_RECEIPT: {
// if (current && +value > current.replaceCount) {
// Modal.destroyAll();
// Modal.confirm({
// title: intl.formatMessage({id: 'stockSellStorage.tishi'}),
// content: intl.formatMessage({id: 'stockSellStorage.danjushuliangyichaoguohuan'}),
// okText: intl.formatMessage({id: 'stockSellStorage.queren'}),
// cancelText: intl.formatMessage({id: 'stockSellStorage.quxiao'}),
// cancelButtonProps: {
// style: {
// display: 'none',
// },
// },
// });
// }
// break;
// }
// // 退货发货单
// case DOC_TYPE_RETURN_INVOICE:
// // 退货入库单
// case DOC_TYPE_RETURN_RECEIPT: {
// if (current && +value > current.returnCount) {
// Modal.destroyAll();
// Modal.confirm({
// title: intl.formatMessage({id: 'stockSellStorage.tishi'}),
// content: intl.formatMessage({id: 'stockSellStorage.danjushuliangyichaoguotui'}),
// okText: intl.formatMessage({id: 'stockSellStorage.queren'}),
// cancelText: intl.formatMessage({id: 'stockSellStorage.quxiao'}),
// cancelButtonProps: {
// style: {
// display: 'none',
// },
// },
// });
// }
// break;
// }
// 内部单据
// default: {
// 成本价
const costPriceValue = getFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.costPrice`
}),
state => state.value,
);
// 内部单据 单据金额为 成本价 * 单据数量
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.amount`
}),
state => {
state.value = costPriceValue ? `${intl.formatMessage({ id: 'common.money' })}${(+value * costPriceValue).toFixed(2)}` : null;
}
);
// break;
// }
// }
if (current) {
setFieldState(
FormPath.transform(name, /\d/, $1 => {
return `invoicesDetailsRequests.${$1}.amount`
}),
state => {
state.value = current.price ? `${intl.formatMessage({ id: 'common.money' })}${(+value * current.price).toFixed(2)}` : null;
}
);
}
});
// 对应单据改变
......@@ -961,10 +294,10 @@ export const useBusinessEffects = (context, actions) => {
// 所以把title设置
if (value === DEPENDENT_DOC_INTERNAL) {
linkage.display('*(orderNo,memberName,address,transport)', false);
linkage.display('invoicesDetailsRequests.*.*(product,productId,price)', false);
linkage.display('invoicesDetailsDTOList.*.*(product,productId,price)', false);
} else {
linkage.display('*(orderNo,memberName,address,transport)');
linkage.display('invoicesDetailsRequests.*.*(product,productId,price)');
linkage.display('invoicesDetailsDTOList.*.*(product,productId,price)');
}
});
}
import React, { useState, useEffect, useRef } from 'react';
import { Button, Card, Spin, message } from 'antd';
import React, { useState, useEffect } from 'react';
import { Button, Card, Spin } from 'antd';
import { DeleteOutlined } from '@ant-design/icons';
import { Radio, ArrayTable } from '@formily/antd-components';
import { getIntl, history, Prompt } from 'umi';
import moment from 'moment';
import { usePageStatus, PageStatus } from '@/hooks/usePageStatus';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { SaveOutlined, PlusOutlined } from '@ant-design/icons';
import { createFormActions, FormEffectHooks } from '@formily/antd';
import { useRowSelectionTable } from '@/hooks/useRowSelectionTable';
import { getProductCustomerGetCustomerCategoryTree, getProductGoodsGetGoodsList, getProductInvoicesDetails, getProductSelectGetSelectBrand, postProductInvoicesUpdata } from '@/services/ProductV2Api';
import { getEnhanceProcessToBeAddDeliveryDetails, getEnhanceSupplierToBeAddStorageDetails, postEnhanceProcessToBeAddDeliverySubmit, postEnhanceSupplierToBeAddStorageSubmit } from '@/services/EnhanceV2Api';
import { getAsReplaceGoodsGetDetailByConsumer, getAsReplaceGoodsGetDetailBySupplier, getAsReturnGoodsGetDetailByConsumer, getAsReturnGoodsGetDetailBySupplier } from '@/services/AfterServiceV2Api';
import { useLinkageUtils } from '@/utils/formEffectUtils';
import { getProductGoodsGetGoodsList, getProductInvoicesDetails, postProductInvoicesAddOrUpdate } from '@/services/ProductV2Api';
import ReutrnEle from '@/components/ReturnEle';
import NiceForm from '@/components/NiceForm';
import ModalTable from '@/components/ModalTable';
......@@ -22,23 +18,6 @@ import SearchSelect from '@/components/NiceForm/components/SearchSelect';
import CustomCategorySearch from '@/components/NiceForm/components/CustomCategorySearch';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import { useAsyncSelect } from '@/formSchema/effects/useAsyncSelect';
import {
DOC_TYPE_PURCHASE_RECEIPT,
DOC_TYPE_SALES_INVOICE,
DOC_TYPE_PROCESS_RECEIPT,
DOC_TYPE_PROCESS_INVOICE,
DOC_TYPE_RETURN_INVOICE,
DOC_TYPE_RETURN_RECEIPT,
DOC_TYPE_EXCHANGE_INVOICE,
DOC_TYPE_EXCHANGE_RECEIPT,
DOC_TYPE_EXCHANGE_RETURN_INVOICE,
DOC_TYPE_EXCHANGE_RETURN_RECEIPT,
DEPENDENT_DOC_INTERNAL,
DOC_DIRECTION_WAREHOUSING,
DOC_DIRECTION_OUTGOING,
} from '@/constants/commodity';
import { addBillSchema, goodsSearchSchema } from './schema';
import { createEffects } from './effects';
import EllipsisText from '../EllipsisText';
......@@ -47,7 +26,6 @@ const intl = getIntl();
const addSchemaAction = createFormActions();
const {
onFormInputChange$,
onFormInit$,
} = FormEffectHooks;
interface BillsFormProps {
......@@ -82,31 +60,12 @@ interface BillsFormProps {
source?: 1 | 2;
};
function transforDirection(type) {
let flag = 0;
switch (type) {
case DOC_TYPE_PURCHASE_RECEIPT:
case DOC_TYPE_PROCESS_RECEIPT:
case DOC_TYPE_RETURN_RECEIPT:
case DOC_TYPE_EXCHANGE_RECEIPT:
case DOC_TYPE_EXCHANGE_RETURN_RECEIPT:
flag = 1;
break;
default:
break;
}
return flag;
};
;
const BillsForm: React.FC<BillsFormProps> = ({
id = 0,
id,
invoicesNo = '',
isEdit = false,
invoicesTypeId,
relevanceInvoices,
relevanceInvoicesId,
source = 2,
}) => {
const [visible, setVisible] = useState(false);
const [productRowSelection, productRowCtl] = useRowSelectionTable({ type: 'checkbox' });
......@@ -144,26 +103,6 @@ const BillsForm: React.FC<BillsFormProps> = ({
},
]
// 获取品牌
const fetchBrand = async (name = '') => {
const res = await getProductSelectGetSelectBrand({
name,
});
if (res.code === 1000) {
return res.data;
}
return [];
}
// 获取会员品类
const fetchCustomerCategory = async () => {
const res = await getProductCustomerGetCustomerCategoryTree();
if (res.code === 1000) {
return res.data;
}
return [];
}
// 获取单据详情
const getBillInfo = () => {
if (!id && !invoicesNo) {
......@@ -200,7 +139,7 @@ const BillsForm: React.FC<BillsFormProps> = ({
// 生成通知单字段不同,做兼容
product: item.produceNoticeOrderDetailId || item.relationInvoicesId,
// 没有 单价price,取 成本价costPrice,兼顾内部单据的场景
amount: `${intl.formatMessage({ id: 'common.money' })}${((item.storageCount || item.shipmentQuantity || 0) * (item.price || item.costPrice || 0)).toFixed(2)}`,
totalPrice: `${intl.formatMessage({ id: 'common.money' })}${((item.storageCount || item.shipmentQuantity || 0) * (item.price || item.costPrice || 0)).toFixed(2)}`,
extraData: {
productName: item.productName,
deliveryType,
......@@ -210,33 +149,9 @@ const BillsForm: React.FC<BillsFormProps> = ({
},
})) : [];
addSchemaAction.setFieldState(
'*(invoicesTypeId,orderNo)',
state => {
state.props['x-component-props'].disabled = true;
}
);
setBillInfo({
transactionTime: transactionTime ? moment(transactionTime).format('YYYY-MM-DD HH:mm:ss') : '',
orderNo:
relevanceInvoicesId ?
[
{
orderNo,
id: +relevanceInvoicesId,
deliveryAddresId: +deliveryAddresId,
memberName: supplyMembersName || '',
fullAddress: fullAddress || '',
receiverName: receiverName || '',
phone: phone || '',
deliveryType,
isDefault,
}
] :
[]
,
invoicesDetailsRequests: details,
invoicesDetailsDTOList: details,
...rest,
});
}).catch((err) => {
......@@ -246,536 +161,12 @@ const BillsForm: React.FC<BillsFormProps> = ({
});
};
// 获取待新增单据(销售发货单,采购入库单,加工入库单)详情
// 填充对应单据、关联单据、会员名称、收货地址、物流方式等信息
const getOrderDetailed = () => {
if (!invoicesTypeId) {
return;
}
const intInvoicesTypeId = +invoicesTypeId;
// 设置单据类型、关联单据禁用
addSchemaAction.setFieldState(
'*(invoicesTypeId,orderNo)',
state => {
state.props['x-component-props'].disabled = true;
}
);
switch (intInvoicesTypeId) {
// 采购入库单
case DOC_TYPE_PURCHASE_RECEIPT: {
setInfoLoading(true);
// getOrderProcurementOrderDetails({
// id: relevanceInvoicesId,
// orderNo: '',
// } as any).then(res => {
// if (res.code !== 1000) {
// return;
// }
// const {
// supplyMembersName,
// supplyMembersId,
// supplyMembersRoleId,
// deliveryAddresId,
// orderNo,
// deliveryAddressInfo,
// } = res.data;
// setBillInfo({
// ...billInfo,
// invoicesTypeId: intInvoicesTypeId,
// relevanceInvoices: +relevanceInvoices,
// orderNo:
// relevanceInvoicesId ?
// [
// {
// orderNo,
// id: +relevanceInvoicesId,
// deliveryAddresId: +deliveryAddresId,
// memberName: supplyMembersName,
// membersId: supplyMembersId,
// membersRoleId: supplyMembersRoleId,
// fullAddress: deliveryAddressInfo.fullAddress || '',
// receiverName: deliveryAddressInfo.receiverName || '',
// phone: deliveryAddressInfo.phone || '',
// isDefault: deliveryAddressInfo.isDefault,
// }
// ] :
// []
// ,
// });
// }).catch((err) => {
// console.warn(err);
// }).finally(() => {
// setInfoLoading(false);
// });
break;
}
// 销售发货单
case DOC_TYPE_SALES_INVOICE: {
setInfoLoading(true);
// getOrderPurchaseOrderDetails({
// id: relevanceInvoicesId,
// orderNo: '',
// }).then(res => {
// if (res.code !== 1000) {
// return;
// }
// const {
// createMemberName,
// createMemberId,
// createRoleId,
// deliveryAddresId,
// orderNo,
// deliveryAddressInfo,
// } = res.data;
// setBillInfo({
// ...billInfo,
// invoicesTypeId: intInvoicesTypeId,
// relevanceInvoices: +relevanceInvoices,
// orderNo:
// relevanceInvoicesId ?
// [
// {
// orderNo,
// id: +relevanceInvoicesId,
// deliveryAddresId: +deliveryAddresId,
// memberName: createMemberName,
// membersId: createMemberId,
// membersRoleId: createRoleId,
// fullAddress: deliveryAddressInfo.fullAddress || '',
// receiverName: deliveryAddressInfo.receiverName || '',
// phone: deliveryAddressInfo.phone || '',
// isDefault: deliveryAddressInfo.isDefault,
// }
// ] :
// []
// ,
// });
// }).catch((err) => {
// console.warn(err);
// }).finally(() => {
// setInfoLoading(false);
// });
break;
}
// 加工入库单
case DOC_TYPE_PROCESS_RECEIPT: {
setInfoLoading(true);
getEnhanceSupplierToBeAddStorageDetails({
id: relevanceInvoicesId,
}).then(res => {
if (res.code !== 1000) {
return;
}
const {
processName,
receiverAddressId,
noticeNo,
receiveAddress,
receiveUserName,
receiveUserTel,
deliveryType,
} = res.data;
setBillInfo({
...billInfo,
invoicesTypeId: intInvoicesTypeId,
relevanceInvoices: +relevanceInvoices,
orderNo:
relevanceInvoicesId ?
[
{
orderNo: noticeNo,
id: +relevanceInvoicesId,
deliveryAddresId: +receiverAddressId,
memberName: processName,
fullAddress: receiveAddress || '',
receiverName: receiveUserName || '',
phone: receiveUserTel || '',
deliveryType,
}
] :
[]
,
});
}).catch((err) => {
console.warn(err);
}).finally(() => {
setInfoLoading(false);
});
break;
}
// 加工发货单
case DOC_TYPE_PROCESS_INVOICE: {
setInfoLoading(true);
getEnhanceProcessToBeAddDeliveryDetails({
id: relevanceInvoicesId,
}).then(res => {
if (res.code !== 1000) {
return;
}
const {
supplierName,
receiverAddressId,
noticeNo,
receiveAddress,
receiveUserName,
receiveUserTel,
deliveryType,
} = res.data;
setBillInfo({
...billInfo,
invoicesTypeId: intInvoicesTypeId,
relevanceInvoices: +relevanceInvoices,
orderNo:
relevanceInvoicesId ?
[
{
orderNo: noticeNo,
id: +relevanceInvoicesId,
deliveryAddresId: +receiverAddressId,
memberName: supplierName,
fullAddress: receiveAddress || '',
receiverName: receiveUserName || '',
phone: receiveUserTel || '',
deliveryType,
}
] :
[]
,
});
}).catch((err) => {
console.warn(err);
}).finally(() => {
setInfoLoading(false);
});
break;
}
// 换货退货发货单
case DOC_TYPE_EXCHANGE_RETURN_INVOICE: {
setInfoLoading(true);
getAsReplaceGoodsGetDetailByConsumer({
replaceId: relevanceInvoicesId,
}).then(res => {
if (res.code !== 1000) {
return;
}
const {
supplierName,
returnGoodsAddress,
applyNo,
parentMemberId,
parentMemberRoleId,
} = res.data;
setBillInfo({
...billInfo,
invoicesTypeId: intInvoicesTypeId,
relevanceInvoices: +relevanceInvoices,
orderNo:
relevanceInvoicesId ?
[
{
orderNo: applyNo,
id: +relevanceInvoicesId,
deliveryAddresId: returnGoodsAddress.receiveId,
memberName: supplierName,
fullAddress: returnGoodsAddress.receiveAddress || '',
receiverName: returnGoodsAddress.receiveUserName || '',
phone: returnGoodsAddress.receiveUserTel || '',
supplyMembersName: supplierName,
supplyMembersId: parentMemberId,
supplyMembersRoleId: parentMemberRoleId,
deliveryType: returnGoodsAddress.deliveryType,
}
] :
[]
,
});
}).catch((err) => {
console.warn(err);
}).finally(() => {
setInfoLoading(false);
});
break;
}
// 退货发货单
case DOC_TYPE_RETURN_INVOICE: {
setInfoLoading(true);
getAsReturnGoodsGetDetailByConsumer({
returnId: relevanceInvoicesId,
}).then(res => {
if (res.code !== 1000) {
return;
}
const {
supplierName,
returnGoodsAddress,
applyNo,
parentMemberId,
parentMemberRoleId,
} = res.data;
setBillInfo({
...billInfo,
invoicesTypeId: intInvoicesTypeId,
relevanceInvoices: +relevanceInvoices,
orderNo:
relevanceInvoicesId ?
[
{
orderNo: applyNo,
id: +relevanceInvoicesId,
deliveryAddresId: returnGoodsAddress.receiveId,
memberName: supplierName,
fullAddress: returnGoodsAddress.receiveAddress || '',
receiverName: returnGoodsAddress.receiveUserName || '',
phone: returnGoodsAddress.receiveUserTel || '',
supplyMembersName: supplierName,
supplyMembersId: parentMemberId,
supplyMembersRoleId: parentMemberRoleId,
deliveryType: returnGoodsAddress.deliveryType,
}
] :
[]
,
});
}).catch((err) => {
console.warn(err);
}).finally(() => {
setInfoLoading(false);
});
break;
}
// 换货退货入库单
case DOC_TYPE_EXCHANGE_RETURN_RECEIPT: {
setInfoLoading(true);
getAsReplaceGoodsGetDetailBySupplier({
replaceId: relevanceInvoicesId,
}).then(res => {
if (res.code !== 1000) {
return;
}
const {
supplierName,
consumerName,
returnGoodsAddress,
applyNo,
parentMemberId,
parentMemberRoleId,
} = res.data;
setBillInfo({
...billInfo,
invoicesTypeId: intInvoicesTypeId,
relevanceInvoices: +relevanceInvoices,
orderNo:
relevanceInvoicesId ?
[
{
orderNo: applyNo,
id: +relevanceInvoicesId,
deliveryAddresId: returnGoodsAddress.receiveId,
memberName: consumerName,
fullAddress: returnGoodsAddress.receiveAddress || '',
receiverName: returnGoodsAddress.receiveUserName || '',
phone: returnGoodsAddress.receiveUserTel || '',
supplyMembersName: supplierName,
supplyMembersId: parentMemberId,
supplyMembersRoleId: parentMemberRoleId,
deliveryType: returnGoodsAddress.deliveryType,
}
] :
[]
,
});
}).catch((err) => {
console.warn(err);
}).finally(() => {
setInfoLoading(false);
});
break;
}
// 退货入库单
case DOC_TYPE_RETURN_RECEIPT: {
setInfoLoading(true);
getAsReturnGoodsGetDetailBySupplier({
returnId: relevanceInvoicesId,
}).then(res => {
if (res.code !== 1000) {
return;
}
const {
supplierName,
returnGoodsAddress,
applyNo,
parentMemberId,
parentMemberRoleId,
} = res.data;
setBillInfo({
...billInfo,
invoicesTypeId: intInvoicesTypeId,
relevanceInvoices: +relevanceInvoices,
orderNo:
relevanceInvoicesId ?
[
{
orderNo: applyNo,
id: +relevanceInvoicesId,
deliveryAddresId: returnGoodsAddress.receiveId,
memberName: supplierName,
fullAddress: returnGoodsAddress.receiveAddress || '',
receiverName: returnGoodsAddress.receiveUserName || '',
phone: returnGoodsAddress.receiveUserTel || '',
supplyMembersName: supplierName,
supplyMembersId: parentMemberId,
supplyMembersRoleId: parentMemberRoleId,
deliveryType: returnGoodsAddress.deliveryType,
}
] :
[]
,
});
}).catch((err) => {
console.warn(err);
}).finally(() => {
setInfoLoading(false);
});
break;
}
// 换货发货单
case DOC_TYPE_EXCHANGE_INVOICE: {
setInfoLoading(true);
getAsReplaceGoodsGetDetailBySupplier({
replaceId: relevanceInvoicesId,
}).then(res => {
if (res.code !== 1000) {
return;
}
const {
supplierName,
consumerName,
returnGoodsAddress,
replaceGoodsAddress,
applyNo,
parentMemberId,
parentMemberRoleId,
} = res.data;
setBillInfo({
...billInfo,
invoicesTypeId: intInvoicesTypeId,
relevanceInvoices: +relevanceInvoices,
orderNo:
relevanceInvoicesId ?
[
{
orderNo: applyNo,
id: +relevanceInvoicesId,
deliveryAddresId: returnGoodsAddress.receiveId,
memberName: consumerName,
fullAddress: returnGoodsAddress.receiveAddress || '',
receiverName: returnGoodsAddress.receiveUserName || '',
phone: returnGoodsAddress.receiveUserTel || '',
supplyMembersName: supplierName,
supplyMembersId: parentMemberId,
supplyMembersRoleId: parentMemberRoleId,
deliveryType: replaceGoodsAddress.deliveryType,
}
] :
[]
,
});
}).catch((err) => {
console.warn(err);
}).finally(() => {
setInfoLoading(false);
});
break;
}
// 换货入库单
case DOC_TYPE_EXCHANGE_RECEIPT: {
setInfoLoading(true);
getAsReplaceGoodsGetDetailByConsumer({
replaceId: relevanceInvoicesId,
}).then(res => {
if (res.code !== 1000) {
return;
}
const {
supplierName,
returnGoodsAddress,
replaceGoodsAddress,
applyNo,
parentMemberId,
parentMemberRoleId,
} = res.data;
setBillInfo({
...billInfo,
invoicesTypeId: intInvoicesTypeId,
relevanceInvoices: +relevanceInvoices,
orderNo:
relevanceInvoicesId ?
[
{
orderNo: applyNo,
id: +relevanceInvoicesId,
deliveryAddresId: returnGoodsAddress.receiveId,
memberName: supplierName,
fullAddress: returnGoodsAddress.receiveAddress || '',
receiverName: returnGoodsAddress.receiveUserName || '',
phone: returnGoodsAddress.receiveUserTel || '',
supplyMembersName: supplierName,
supplyMembersId: parentMemberId,
supplyMembersRoleId: parentMemberRoleId,
deliveryType: replaceGoodsAddress.deliveryType,
}
] :
[]
,
});
}).catch((err) => {
console.warn(err);
}).finally(() => {
setInfoLoading(false);
});
break;
}
default: {
break;
}
}
};
useEffect(() => {
getBillInfo();
getOrderDetailed();
}, []);
// useEffect(() => {
// getBillInfo();
// }, []);
// 弹出单据明细
const handleAdd = () => {
// const orderNoVal = addSchemaAction.getFieldValue('orderNo');
// const relevanceInvoicesVal = addSchemaAction.getFieldValue('relevanceInvoices');
// if (!orderNoVal && relevanceInvoicesVal !== DEPENDENT_DOC_INTERNAL) {
// message.warning(intl.formatMessage({ id: 'stockSellStorage.qingxuanzeduiyingdanju' }));
// return;
// }
setVisible(true);
};
......@@ -793,1023 +184,51 @@ const BillsForm: React.FC<BillsFormProps> = ({
// 提交
const handleSubmit = value => {
const {
invoicesTypeId,
invoicesTypeCode,
orderNo,
transactionTime,
address,
transport,
invoicesDetailsRequests = [],
memberName,
membersId,
membersRoleId,
direction,
...rest
} = value;
const newInvoicesDetailsRequests = invoicesDetailsRequests.map(({
productCount,
...rest
}) => ({
productCount: +productCount,
...rest,
}));
const newTransactionTime = transactionTime ? moment(transactionTime).valueOf() : null;
console.log("🚀 ~ file: index.tsx ~ line 187 ~ value", value)
debugger
delete value.transactionTime
setSubmitLoading(true);
switch (invoicesTypeId) {
// 采购入库单
case DOC_TYPE_PURCHASE_RECEIPT: {
if (!id) {
if (!isEdit) {
return;
}
// postOrderPurchaseReceiptAdd({
// ...rest,
// orderNo: orderNo[0].orderNo,
// relevanceInvoicesId: orderNo[0].id,
// transactionTime: newTransactionTime,
// invoicesDetailsRequests: newInvoicesDetailsRequests.map(item => {
// const {
// extraData: {
// id,
// orderNo,
// deliveryType,
// goodsCount,
// price,
// totalPrice,
// ...extraRest
// },
// itemName,
// amount,
// productCount,
// product,
// ...rest
// } = item;
// return {
// ...rest,
// ...extraRest,
// goodsName: itemName,
// storageCount: productCount,
// productCount: goodsCount,
// relationInvoicesId: product,
// };
// }),
// supplyMembersName: memberName,
// supplyMembersId: membersId,
// supplyMembersRoleId: membersRoleId,
// source,
// })
// .then(res => {
// if (res.code !== 1000) {
// setSubmitLoading(false);
// return;
// }
// setUnsaved(false);
// setTimeout(() => {
// history.goBack();
// }, 800);
// }).catch(() => {
// setSubmitLoading(false);
// });
} else {
// update action
if (!isEdit) {
return;
}
// postProductInvoicesUpdata({
// id: +id,
// invoicesAbstract: rest.invoicesAbstract,
// inventoryId: rest.inventoryId,
// inventoryRole: rest.inventoryRole,
// transactionTime: newTransactionTime,
// invoicesDetailsRequests: newInvoicesDetailsRequests.map(item => {
// const {
// extraData: {
// id,
// orderNo,
// deliveryType,
// goodsCount,
// price,
// totalPrice,
// ...extraRest
// },
// itemName,
// amount,
// productCount,
// product,
// ...rest
// } = item;
// return {
// ...rest,
// ...extraRest,
// goodsName: itemName,
// storageCount: productCount,
// productCount: goodsCount,
// relationInvoicesId: product,
// };
// }),
// })
// .then(res => {
// if (res.code !== 1000) {
// setSubmitLoading(false);
// return;
// }
// setUnsaved(false);
// setTimeout(() => {
// history.goBack();
// }, 800);
// }).catch(() => {
// setSubmitLoading(false);
// });
}
break;
}
// 销售发货单
case DOC_TYPE_SALES_INVOICE: {
if (!id) {
if (!isEdit) {
return;
}
// postOrderSalesInvoiceOrder({
// ...rest,
// orderNo: orderNo[0].orderNo,
// relevanceInvoicesId: orderNo[0].id,
// transactionTime: newTransactionTime,
// invoicesDetailsRequests: newInvoicesDetailsRequests.map(item => {
// const {
// extraData: {
// id,
// orderNo,
// deliveryType,
// goodsCount,
// price,
// totalPrice,
// ...extraRest
// },
// itemName,
// amount,
// productCount,
// product,
// ...rest
// } = item;
// return {
// ...rest,
// ...extraRest,
// goodsName: itemName,
// shipmentQuantity: productCount,
// productCount: goodsCount,
// relationInvoicesId: product,
// };
// }),
// // 后台说 不管是 采购入库单,还是 销售发货单 都用这三个字段
// // createMemberName: memberName,
// supplyMembersName: memberName,
// supplyMembersId: membersId,
// supplyMembersRoleId: membersRoleId,
// source,
// })
// .then(res => {
// if (res.code !== 1000) {
// setSubmitLoading(false);
// return;
// }
// setUnsaved(false);
// setTimeout(() => {
// history.goBack();
// }, 800);
// }).catch(() => {
// setSubmitLoading(false);
// });
} else {
// update action
if (!isEdit) {
return;
}
// postProductInvoicesUpdata({
// id: +id,
// invoicesAbstract: rest.invoicesAbstract,
// inventoryId: rest.inventoryId,
// inventoryRole: rest.inventoryRole,
// transactionTime: newTransactionTime,
// invoicesDetailsRequests: newInvoicesDetailsRequests.map(item => {
// const {
// extraData: {
// id,
// orderNo,
// deliveryType,
// goodsCount,
// price,
// totalPrice,
// ...extraRest
// },
// itemName,
// amount,
// productCount,
// product,
// ...rest
// } = item;
// return {
// ...rest,
// ...extraRest,
// goodsName: itemName,
// shipmentQuantity: productCount,
// productCount: goodsCount,
// relationInvoicesId: product,
// };
// }),
// })
// .then(res => {
// if (res.code !== 1000) {
// setSubmitLoading(false);
// return;
// }
// setUnsaved(false);
// setTimeout(() => {
// history.goBack();
// }, 800);
// }).catch(() => {
// setSubmitLoading(false);
// });
}
break;
}
// 加工入库单
case DOC_TYPE_PROCESS_RECEIPT: {
if (!id) {
if (!isEdit) {
return;
}
postEnhanceSupplierToBeAddStorageSubmit({
produceNoticeOrderId: orderNo[0].id,
warehouseId: rest.inventoryId,
warehouseRole: rest.inventoryRole,
storageSummary: rest.invoicesAbstract,
storageTime: newTransactionTime,
storageDetailsDTOList: newInvoicesDetailsRequests.map(item => {
const {
extraData = {},
amount,
productCount,
product,
...rest
} = item;
return {
...rest,
produceNoticeOrderDetailId: extraData.id,
orderNo: extraData.orderNo,
processNum: extraData.processNum,
productName: extraData.productName,
price: extraData.price,
totalPrice: extraData.totalPrice,
storageCount: productCount,
};
}),
source,
})
.then(res => {
if (res.code !== 1000) {
setSubmitLoading(false);
return;
}
setUnsaved(false);
setTimeout(() => {
history.goBack();
}, 800);
}).catch(() => {
setSubmitLoading(false);
});
} else {
// update action
if (!isEdit) {
return;
}
postProductInvoicesUpdata({
id: +id,
invoicesAbstract: rest.invoicesAbstract,
inventoryId: rest.inventoryId,
inventoryRole: rest.inventoryRole,
transactionTime: newTransactionTime,
invoicesDetailsRequests: newInvoicesDetailsRequests.map(item => {
const {
extraData: {
id,
orderNo,
deliveryType,
goodsCount,
price,
totalPrice,
...extraRest
},
itemName,
amount,
productCount,
product,
...rest
} = item;
return {
...rest,
...extraRest,
goodsName: itemName,
storageCount: productCount,
productCount: goodsCount,
produceNoticeOrderDetailId: id,
};
}),
})
.then(res => {
if (res.code !== 1000) {
setSubmitLoading(false);
return;
}
setUnsaved(false);
setTimeout(() => {
history.goBack();
}, 800);
}).catch(() => {
setSubmitLoading(false);
});
}
break;
}
// 加工发货单
case DOC_TYPE_PROCESS_INVOICE: {
if (!id) {
if (!isEdit) {
return;
}
postEnhanceProcessToBeAddDeliverySubmit({
produceNoticeOrderId: orderNo[0].id,
warehouseId: rest.inventoryId,
warehouseRole: rest.inventoryRole,
invoiceSummary: rest.invoicesAbstract,
invoiceTime: newTransactionTime,
invoiceDetailsDTOList: newInvoicesDetailsRequests.map(item => {
const {
extraData = {},
amount,
productCount,
product,
...rest
} = item;
return {
...rest,
produceNoticeOrderDetailId: extraData.id,
orderNo: extraData.orderNo,
processNum: extraData.processNum,
productName: extraData.productName,
price: extraData.price,
totalPrice: extraData.totalPrice,
shipmentQuantity: productCount,
};
}),
source,
})
.then(res => {
if (res.code !== 1000) {
setSubmitLoading(false);
return;
}
setUnsaved(false);
setTimeout(() => {
history.goBack();
}, 800);
}).catch(() => {
setSubmitLoading(false);
});
} else {
// update action
if (!isEdit) {
return;
}
postProductInvoicesUpdata({
id: +id,
invoicesAbstract: rest.invoicesAbstract,
inventoryId: rest.inventoryId,
inventoryRole: rest.inventoryRole,
transactionTime: newTransactionTime,
invoicesDetailsRequests: newInvoicesDetailsRequests.map(item => {
const {
extraData: {
id,
orderNo,
deliveryType,
goodsCount,
price,
totalPrice,
...extraRest
},
itemName,
amount,
productCount,
product,
...rest
} = item;
return {
...rest,
...extraRest,
goodsName: itemName,
shipmentQuantity: productCount,
productCount: goodsCount,
produceNoticeOrderDetailId: id,
};
}),
})
.then(res => {
if (res.code !== 1000) {
setSubmitLoading(false);
return;
}
setUnsaved(false);
setTimeout(() => {
history.goBack();
}, 800);
}).catch(() => {
setSubmitLoading(false);
});
}
break;
}
// 换货退货发货单、换货换货发货单
// 用的参数名是一样的
case DOC_TYPE_EXCHANGE_RETURN_INVOICE:
case DOC_TYPE_EXCHANGE_INVOICE: {
if (!id) {
if (!isEdit) {
return;
}
// postProductInvoicesAdd({
// invoicesTypeCode: invoicesTypeCode,
// invoicesAbstract: rest.invoicesAbstract,
// memberName: memberName,
// inventoryId: rest.inventoryId,
// inventoryRole: rest.inventoryRole,
// transactionTime: newTransactionTime,
// orderNo: orderNo[0].orderNo,
// deliveryAddresId: orderNo[0].deliveryAddresId,
// receiverName: rest.receiverName,
// fullAddress: rest.fullAddress,
// phone: rest.phone,
// deliveryType: rest.deliveryType,
// invoicesDetailsRequests: newInvoicesDetailsRequests.map(item => {
// const {
// extraData = {},
// amount,
// productCount,
// itemName,
// product,
// ...rest
// } = item;
// return {
// ...rest,
// goodsName: itemName,
// productModel: rest.specifications,
// productName: extraData.productName,
// storageCount: 0,
// shipmentQuantity: productCount,
// productCount: extraData.goodsCount,
// orderNo: extraData.orderNo,
// relationInvoicesId: product,
// };
// }),
// relevanceInvoicesId: orderNo[0].id,
// relevanceInvoices: rest.relevanceInvoices,
// supplyMembersName: orderNo[0].supplyMembersName,
// supplyMembersId: orderNo[0].supplyMembersId,
// supplyMembersRoleId: orderNo[0].supplyMembersRoleId,
// invoicesTypeId,
// source,
// })
// .then(res => {
// if (res.code !== 1000) {
// setSubmitLoading(false);
// return;
// }
// setUnsaved(false);
// setTimeout(() => {
// history.goBack();
// }, 800);
// }).catch(() => {
// setSubmitLoading(false);
// });
} else {
// update action
if (!isEdit) {
return;
}
// postProductInvoicesUpdata({
// id: +id,
// invoicesAbstract: rest.invoicesAbstract,
// inventoryId: rest.inventoryId,
// inventoryRole: rest.inventoryRole,
// transactionTime: newTransactionTime,
// invoicesDetailsRequests: newInvoicesDetailsRequests.map(item => {
// const {
// extraData = {},
// amount,
// productCount,
// itemName,
// product,
// ...rest
// } = item;
// return {
// ...rest,
// goodsName: itemName,
// productModel: rest.specifications,
// productName: extraData.productName,
// storageCount: 0,
// shipmentQuantity: productCount,
// productCount: extraData.goodsCount,
// orderNo: extraData.orderNo,
// relationInvoicesId: product,
// };
// }),
// })
// .then(res => {
// if (res.code !== 1000) {
// setSubmitLoading(false);
// return;
// }
// setUnsaved(false);
// setTimeout(() => {
// history.goBack();
// }, 800);
// }).catch(() => {
// setSubmitLoading(false);
// });
}
break;
}
// 换货入库单、换货退货入库单
// 用的参数名是一样的
case DOC_TYPE_EXCHANGE_RECEIPT:
case DOC_TYPE_EXCHANGE_RETURN_RECEIPT: {
if (!id) {
if (!isEdit) {
return;
}
// postProductInvoicesAdd({
// invoicesTypeCode: invoicesTypeCode,
// invoicesAbstract: rest.invoicesAbstract,
// memberName: memberName,
// inventoryId: rest.inventoryId,
// inventoryRole: rest.inventoryRole,
// transactionTime: newTransactionTime,
// orderNo: orderNo[0].orderNo,
// deliveryAddresId: orderNo[0].deliveryAddresId,
// receiverName: rest.receiverName,
// fullAddress: rest.fullAddress,
// phone: rest.phone,
// deliveryType: rest.deliveryType,
// invoicesDetailsRequests: newInvoicesDetailsRequests.map(item => {
// const {
// extraData = {},
// amount,
// productCount,
// itemName,
// product,
// ...rest
// } = item;
// return {
// ...rest,
// goodsName: itemName,
// productModel: rest.specifications,
// productName: extraData.productName,
// shipmentQuantity: 0,
// storageCount: productCount,
// productCount: extraData.goodsCount,
// orderNo: extraData.orderNo,
// relationInvoicesId: product,
// };
// }),
// relevanceInvoicesId: orderNo[0].id,
// relevanceInvoices: rest.relevanceInvoices,
// supplyMembersName: orderNo[0].supplyMembersName,
// supplyMembersId: orderNo[0].supplyMembersId,
// supplyMembersRoleId: orderNo[0].supplyMembersRoleId,
// invoicesTypeId,
// source,
// })
// .then(res => {
// if (res.code !== 1000) {
// setSubmitLoading(false);
// return;
// }
// setUnsaved(false);
// setTimeout(() => {
// history.goBack();
// }, 800);
// }).catch(() => {
// setSubmitLoading(false);
// });
} else {
// update action
if (!isEdit) {
return;
}
postProductInvoicesUpdata({
id: +id,
invoicesAbstract: rest.invoicesAbstract,
inventoryId: rest.inventoryId,
inventoryRole: rest.inventoryRole,
transactionTime: newTransactionTime,
invoicesDetailsRequests: newInvoicesDetailsRequests.map(item => {
const {
extraData = {},
amount,
productCount,
itemName,
product,
...rest
} = item;
return {
...rest,
goodsName: itemName,
productModel: rest.specifications,
productName: extraData.productName,
shipmentQuantity: 0,
storageCount: productCount,
productCount: extraData.goodsCount,
orderNo: extraData.orderNo,
relationInvoicesId: product,
};
}),
})
.then(res => {
if (res.code !== 1000) {
setSubmitLoading(false);
return;
}
setUnsaved(false);
setTimeout(() => {
history.goBack();
}, 800);
}).catch(() => {
setSubmitLoading(false);
});
}
break;
}
// 退货发货单
case DOC_TYPE_RETURN_INVOICE: {
if (!id) {
if (!isEdit) {
return;
}
// postProductInvoicesAdd({
// invoicesTypeCode: invoicesTypeCode,
// invoicesAbstract: rest.invoicesAbstract,
// memberName: memberName,
// inventoryId: rest.inventoryId,
// inventoryRole: rest.inventoryRole,
// transactionTime: newTransactionTime,
// orderNo: orderNo[0].orderNo,
// deliveryAddresId: orderNo[0].deliveryAddresId,
// receiverName: rest.receiverName,
// fullAddress: rest.fullAddress,
// phone: rest.phone,
// deliveryType: rest.deliveryType,
// invoicesDetailsRequests: newInvoicesDetailsRequests.map(item => {
// const {
// extraData = {},
// amount,
// productCount,
// itemName,
// product,
// ...rest
// } = item;
// return {
// ...rest,
// goodsName: itemName,
// productModel: rest.specifications,
// productName: extraData.productName,
// storageCount: 0,
// shipmentQuantity: productCount,
// productCount: extraData.goodsCount,
// orderNo: extraData.orderNo,
// relationInvoicesId: product,
// };
// }),
// relevanceInvoicesId: orderNo[0].id,
// relevanceInvoices: rest.relevanceInvoices,
// supplyMembersName: orderNo[0].supplyMembersName,
// supplyMembersId: orderNo[0].supplyMembersId,
// supplyMembersRoleId: orderNo[0].supplyMembersRoleId,
// invoicesTypeId,
// source,
// })
// .then(res => {
// if (res.code !== 1000) {
// setSubmitLoading(false);
// return;
// }
// setUnsaved(false);
// setTimeout(() => {
// history.goBack();
// }, 800);
// }).catch(() => {
// setSubmitLoading(false);
// });
} else {
// update action
if (!isEdit) {
return;
}
// postProductInvoicesUpdata({
// id: +id,
// invoicesAbstract: rest.invoicesAbstract,
// inventoryId: rest.inventoryId,
// inventoryRole: rest.inventoryRole,
// transactionTime: newTransactionTime,
// invoicesDetailsRequests: newInvoicesDetailsRequests.map(item => {
// const {
// extraData = {},
// amount,
// productCount,
// itemName,
// product,
// ...rest
// } = item;
// return {
// ...rest,
// goodsName: itemName,
// productModel: rest.specifications,
// productName: extraData.productName,
// storageCount: 0,
// shipmentQuantity: productCount,
// productCount: extraData.goodsCount,
// orderNo: extraData.orderNo,
// relationInvoicesId: product,
// };
// }),
// })
// .then(res => {
// if (res.code !== 1000) {
// setSubmitLoading(false);
// return;
// }
// setUnsaved(false);
// setTimeout(() => {
// history.goBack();
// }, 800);
// }).catch(() => {
// setSubmitLoading(false);
// });
}
break;
}
// 退货入库单
case DOC_TYPE_RETURN_RECEIPT: {
if (!id) {
if (!isEdit) {
return;
}
// postProductInvoicesAdd({
// invoicesTypeCode: invoicesTypeCode,
// invoicesAbstract: rest.invoicesAbstract,
// memberName: memberName,
// inventoryId: rest.inventoryId,
// inventoryRole: rest.inventoryRole,
// transactionTime: newTransactionTime,
// orderNo: orderNo[0].orderNo,
// deliveryAddresId: orderNo[0].deliveryAddresId,
// receiverName: rest.receiverName,
// fullAddress: rest.fullAddress,
// phone: rest.phone,
// deliveryType: rest.deliveryType,
// invoicesDetailsRequests: newInvoicesDetailsRequests.map(item => {
// const {
// extraData = {},
// amount,
// productCount,
// itemName,
// product,
// ...rest
// } = item;
// return {
// ...rest,
// goodsName: itemName,
// productModel: rest.specifications,
// productName: extraData.productName,
// shipmentQuantity: 0,
// storageCount: productCount,
// productCount: extraData.goodsCount,
// orderNo: extraData.orderNo,
// relationInvoicesId: product,
// };
// }),
// relevanceInvoicesId: orderNo[0].id,
// relevanceInvoices: rest.relevanceInvoices,
// supplyMembersName: orderNo[0].supplyMembersName,
// supplyMembersId: orderNo[0].supplyMembersId,
// supplyMembersRoleId: orderNo[0].supplyMembersRoleId,
// invoicesTypeId,
// source,
// })
// .then(res => {
// if (res.code !== 1000) {
// setSubmitLoading(false);
// return;
// }
// setUnsaved(false);
// setTimeout(() => {
// history.goBack();
// }, 800);
// }).catch(() => {
// setSubmitLoading(false);
// });
} else {
// update action
if (!isEdit) {
return;
}
// postProductInvoicesUpdata({
// id: +id,
// invoicesAbstract: rest.invoicesAbstract,
// inventoryId: rest.inventoryId,
// inventoryRole: rest.inventoryRole,
// transactionTime: newTransactionTime,
// invoicesDetailsRequests: newInvoicesDetailsRequests.map(item => {
// const {
// extraData = {},
// amount,
// productCount,
// itemName,
// product,
// ...rest
// } = item;
// return {
// ...rest,
// goodsName: itemName,
// productModel: rest.specifications,
// productName: extraData.productName,
// shipmentQuantity: 0,
// storageCount: productCount,
// productCount: extraData.goodsCount,
// orderNo: extraData.orderNo,
// relationInvoicesId: product,
// };
// }),
// })
// .then(res => {
// if (res.code !== 1000) {
// setSubmitLoading(false);
// return;
// }
// setUnsaved(false);
// setTimeout(() => {
// history.goBack();
// }, 800);
// }).catch(() => {
// setSubmitLoading(false);
// });
}
break;
}
default: {
if (!id) {
if (!isEdit) {
return;
}
// postProductInvoicesAdd({
// invoicesTypeCode: invoicesTypeCode,
// invoicesAbstract: rest.invoicesAbstract,
// memberName: memberName,
// inventoryId: rest.inventoryId,
// inventoryRole: rest.inventoryRole,
// transactionTime: newTransactionTime,
// orderNo: null,
// deliveryAddresId: null,
// receiverName: null,
// fullAddress: null,
// phone: null,
// deliveryType: null,
// invoicesDetailsRequests: newInvoicesDetailsRequests.map(item => {
// const {
// extraData = {},
// amount,
// productCount,
// itemName,
// product,
// ...rest
// } = item;
// return {
// ...rest,
// goodsName: itemName,
// productModel: rest.specifications,
// productName: extraData.productName,
// shipmentQuantity: direction == DOC_DIRECTION_OUTGOING ? productCount : 0,
// storageCount: direction === DOC_DIRECTION_WAREHOUSING ? productCount : 0,
// productCount: 0,
// orderNo: null,
// relationInvoicesId: null,
// };
// }),
// relevanceInvoicesId: null,
// relevanceInvoices: rest.relevanceInvoices,
// supplyMembersName: null,
// supplyMembersId: null,
// supplyMembersRoleId: null,
// invoicesTypeId,
// source,
// })
// .then(res => {
// if (res.code !== 1000) {
// setSubmitLoading(false);
// return;
// }
// setUnsaved(false);
// setTimeout(() => {
// history.goBack();
// }, 800);
// }).catch(() => {
// setSubmitLoading(false);
// });
} else {
// update action
if (!isEdit) {
return;
}
// postProductInvoicesUpdata({
// id: +id,
// invoicesAbstract: rest.invoicesAbstract,
// inventoryId: rest.inventoryId,
// inventoryRole: rest.inventoryRole,
// transactionTime: newTransactionTime,
// invoicesDetailsRequests: newInvoicesDetailsRequests.map(item => {
// const {
// extraData = {},
// amount,
// productCount,
// itemName,
// product,
// ...rest
// } = item;
// return {
// ...rest,
// goodsName: itemName,
// productModel: rest.specifications,
// productName: extraData.productName,
// shipmentQuantity: direction == DOC_DIRECTION_OUTGOING ? productCount : 0,
// storageCount: direction === DOC_DIRECTION_WAREHOUSING ? productCount : 0,
// productCount: 0,
// orderNo: null,
// relationInvoicesId: null,
// };
// }),
// })
// .then(res => {
// if (res.code !== 1000) {
// setSubmitLoading(false);
// return;
// }
// setUnsaved(false);
// setTimeout(() => {
// history.goBack();
// }, 800);
// }).catch(() => {
// setSubmitLoading(false);
// });
postProductInvoicesAddOrUpdate({
id: +id,
...value,
invoicesTime:new Date(value.invoicesTime).getTime(),
})
.then(res => {
if (res.code !== 1000) {
setSubmitLoading(false);
return;
}
break;
}
}
setUnsaved(false);
setTimeout(() => {
history.goBack();
}, 800);
}).catch(() => {
setSubmitLoading(false);
});
};
// 选择单据明细
const handleOkAddProduct = async () => {
// 这里先找到是否已经选择过的数据,存在的话就直接使用,否则用新值
const preValues = addSchemaAction.getFieldValue('invoicesDetailsRequests');
const preValues = addSchemaAction.getFieldValue('invoicesDetailsDTOList');
const values = [];
productRowCtl.selectRow.forEach(item => {
const atom = {
itemNo: item.code,
goodsId: item.id,
itemName: item.name,
goodsNo: item.code,
goodsName: item.name,
specifications: item.type,
category: item.customerCategory ? item.customerCategory.name : '',
brand: item.brand ? item.brand.name : '',
category: item.customerCategory?.name || '',
brand: item.brand?.name || '',
unit: item.unitName,
costPrice: item.costPrice,
product: undefined,
productName: item.productName,
productId: '',
price: '',
productCount: 0,
amount: '',
invoicesCount: 0,
totalPrice: '',
};
values.push(atom);
});
addSchemaAction.setFieldValue('invoicesDetailsRequests', preValues.concat(values));
addSchemaAction.setFieldValue('invoicesDetailsDTOList', preValues?.concat(values));
productRowCtl.setSelectRow([]);
productRowCtl.setSelectedRowKeys([]);
setVisible(false);
......@@ -1827,9 +246,9 @@ const BillsForm: React.FC<BillsFormProps> = ({
}
const handleRemoveItem = (index: number) => {
const newValue = [...addSchemaAction.getFieldValue('invoicesDetailsRequests')];
const newValue = [...addSchemaAction.getFieldValue('invoicesDetailsDTOList')];
newValue.splice(index, 1);
addSchemaAction.setFieldValue('invoicesDetailsRequests', newValue);
addSchemaAction.setFieldValue('invoicesDetailsDTOList', newValue);
};
// ArrayTable自定义渲染
......@@ -1919,7 +338,6 @@ const BillsForm: React.FC<BillsFormProps> = ({
CustomCategorySearch,
},
effects: ($, actions) => {
const linkage = useLinkageUtils();
useStateFilterSearchLinkageEffect(
$,
......@@ -1927,29 +345,6 @@ const BillsForm: React.FC<BillsFormProps> = ({
'name',
FORM_FILTER_PATH,
);
useAsyncSelect('brandId', fetchBrand, ['name', 'id']);
onFormInit$().subscribe(() => {
// 初始化远程检索逻辑
fetchCustomerCategory().then(res => {
linkage.componentProps('customerCategoryId', {
dataoption: res,
});
});
// 初始化远程检索逻辑
// linkage.componentProps('brandId', {
// onSearch: async value => {
// linkage.loading('brandId');
// const dataSource = await fetchBrand(value);
// linkage.enum('brandId', dataSource.map(item => ({
// label: item.name,
// value: item.id,
// })));
// linkage.loaded('brandId');
// },
// });
});
},
inline: false,
}
......
......@@ -87,118 +87,6 @@ const orderDetailSchema: ISchema = {
},
};
const productionDetailSchema: ISchema = {
type: 'object',
properties: {
megaLayout: {
type: 'object',
'x-component': 'mega-layout',
properties: {
search: {
type: 'string',
'x-component': 'Search',
'x-mega-props': {},
'x-component-props': {
placeholder: intl.formatMessage({id: 'stockSellStorage.sousuo'}),
align: 'flex-start',
},
},
[FORM_FILTER_PATH]: {
type: 'object',
'x-component': 'mega-layout',
visible: false,
'x-component-props': {
inline: true,
},
properties: {
orderNo: {
type: 'string',
'x-component-props': {
placeholder: intl.formatMessage({id: 'stockSellStorage.tongzhidanhao'}),
},
},
invoicesAbstract: {
type: 'string',
'x-component-props': {
placeholder: intl.formatMessage({id: 'stockSellStorage.tongzhidanzhaiyao'}),
},
},
memberName: {
type: 'string',
'x-component-props': {
placeholder: intl.formatMessage({id: 'stockSellStorage.jiagongqiye'}),
},
},
time: {
type: 'string',
'x-component-props': {
placeholder: intl.formatMessage({id: 'stockSellStorage.qingxuanzedanjushijian'}),
},
enum: [],
},
},
},
},
},
},
};
const afterSaleDetailSchema: ISchema = {
type: 'object',
properties: {
megaLayout: {
type: 'object',
'x-component': 'mega-layout',
properties: {
search: {
type: 'string',
'x-component': 'Search',
'x-mega-props': {},
'x-component-props': {
placeholder: intl.formatMessage({id: 'stockSellStorage.sousuo'}),
align: 'flex-start',
},
},
[FORM_FILTER_PATH]: {
type: 'object',
'x-component': 'mega-layout',
visible: false,
'x-component-props': {
inline: true,
},
properties: {
orderNo: {
type: 'string',
'x-component-props': {
placeholder: intl.formatMessage({id: 'stockSellStorage.shenqingdanhao'}),
},
},
invoicesAbstract: {
type: 'string',
'x-component-props': {
placeholder: intl.formatMessage({id: 'stockSellStorage.shenqingdanzhaiyao'}),
},
},
memberName: {
type: 'string',
'x-component-props': {
placeholder: intl.formatMessage({id: 'stockSellStorage.huiyuanmingcheng'}),
},
},
time: {
type: 'string',
'x-component-props': {
placeholder: intl.formatMessage({id: 'stockSellStorage.qingxuanzedanjushijian'}),
},
enum: [],
},
},
},
},
},
},
};
export const addBillSchema: ISchema = {
type: 'object',
properties: {
......@@ -241,11 +129,7 @@ export const addBillSchema: ISchema = {
message: intl.formatMessage({id: 'common.text.pleaseSelect'})
}]
},
invoicesTypeCode: {
type: 'string',
display: false,
},
inventoryId: {
warehouseId: {
type: 'string',
title: intl.formatMessage({id: 'stockSellStorage.duiyingcangku'}),
enum: [],
......@@ -265,7 +149,7 @@ export const addBillSchema: ISchema = {
message: intl.formatMessage({id: 'common.form.input.placeholder'})
}]
},
transactionTime: {
invoicesTime: {
type: 'date',
title: intl.formatMessage({id: 'stockSellStorage.danjushijian'}),
'x-component-props': {
......@@ -274,7 +158,7 @@ export const addBillSchema: ISchema = {
},
required: true,
},
inventoryRole: {
warehouseRole: {
type: 'string',
title: intl.formatMessage({id: 'stockSellStorage.cangkurenyuan'}),
'x-rules': [{
......@@ -282,134 +166,6 @@ export const addBillSchema: ISchema = {
message: intl.formatMessage({id: 'common.form.input.placeholder'})
}]
},
// relevanceInvoices: {
// title: intl.formatMessage({id: 'stockSellStorage.duiyingdanju'}),
// type: 'string',
// 'x-rules': [
// {
// required: true,
// message: intl.formatMessage({id: 'stockSellStorage.qingxuanzeduiyingdanju'}),
// },
// ],
// enum: [
// {
// label: intl.formatMessage({id: 'stockSellStorage.dingdan'}),
// value: DEPENDENT_DOC_ORDER,
// disabled: true,
// },
// {
// label: intl.formatMessage({id: 'stockSellStorage.huanhuoshenqingdan'}),
// value: DEPENDENT_DOC_EXCHANGE,
// disabled: true,
// },
// {
// label: intl.formatMessage({id: 'stockSellStorage.tuihuoshenqingdan'}),
// value: DEPENDENT_DOC_RETURN,
// disabled: true,
// },
// {
// label: intl.formatMessage({id: 'stockSellStorage.shengchantongzhidan'}),
// value: DEPENDENT_DOC_PRODUCTION,
// disabled: true,
// },
// {
// label: intl.formatMessage({id: 'stockSellStorage.neibudanju'}),
// value: DEPENDENT_DOC_INTERNAL,
// disabled: true,
// },
// ],
// },
// // 这是用 Mega-Layout 设置独立作用域,不然会被 Form 的布局影响到弹窗的布局
// MEGA_LAYOUT1_1: {
// type: 'object',
// 'x-component': 'Mega-Layout',
// 'x-component-props': {
// wrapperCol: 24,
// },
// properties: {
// orderNo: {
// type: 'string',
// title: intl.formatMessage({id: 'stockSellStorage.guanliandanju'}),
// 'x-component': 'CustomRelevance',
// 'x-component-props': {
// title: intl.formatMessage({id: 'stockSellStorage.guanlian'}),
// tip: intl.formatMessage({id: 'stockSellStorage.qingxuanzeduiyingdanju'}),
// },
// 'x-mega-props': {
// wrapperCol: 12,
// },
// 'x-rules': [
// {
// required: true,
// message: intl.formatMessage({id: 'stockSellStorage.qingguanliandanju'}),
// },
// ],
// },
// },
// },
// memberName: {
// type: 'string',
// 'x-component': 'Text',
// title: intl.formatMessage({id: 'stockSellStorage.huiyuanmingcheng'}),
// default: '',
// },
// address: {
// type: 'string',
// 'x-component': 'Text',
// title: intl.formatMessage({id: 'stockSellStorage.shouhuodizhi'}),
// default: '',
// },
// transport: {
// type: 'string',
// 'x-component': 'Text',
// title: intl.formatMessage({id: 'stockSellStorage.wuliufangshi'}),
// // default: '', // 奇了怪了,initialValues 覆盖不了 default,就这个字段会
// },
// 交付地址ID,不用于展示,只用于收集值
deliveryAddresId: {
type: 'string',
display: false,
},
// 交付地址收货人名字,不用于展示,只用于收集值
receiverName: {
type: 'string',
display: false,
},
// 交付地址详情,不用于展示,只用于收集值
fullAddress: {
type: 'string',
display: false,
},
// 交付地址联系电话,不用于展示,只用于收集值
phone: {
type: 'string',
display: false,
},
// 物流方式,不用于展示,只用于收集值
deliveryType: {
type: 'number',
display: false,
},
// 交付地址收是否默认0.否1.是,不用于展示,只用于收集值
isDefault: {
type: 'boolean',
display: false,
},
// 会员id,可以是采购会员id、销售会员id
membersId: {
type: 'string',
display: false,
},
// 会员角色id,可以是采购会员角色id、销售会员角色id
membersRoleId: {
type: 'string',
display: false,
},
// 单据类型方向
direction: {
type: 'string',
display: false,
},
},
},
},
......@@ -436,7 +192,7 @@ export const addBillSchema: ISchema = {
children: '{{TableAddButton}}'
},
},
invoicesDetailsRequests: {
invoicesDetailsDTOList: {
type: 'array',
'x-component': 'ArrayTable',
'x-component-props': {
......@@ -455,7 +211,12 @@ export const addBillSchema: ISchema = {
items: {
type: 'object',
properties: {
itemNo: {
// 额外的数据,用于收集不需要展示的数据
goodsId: {
type: 'string',
display: false,
},
goodsNo: {
type: 'string',
title: intl.formatMessage({id: 'stockSellStorage.huohao'}),
'x-props': {
......@@ -466,7 +227,7 @@ export const addBillSchema: ISchema = {
ellipsis: true,
},
},
itemName: {
goodsName: {
type: 'string',
title: intl.formatMessage({id: 'stockSellStorage.huopinmingcheng'}),
'x-props': {
......@@ -532,49 +293,7 @@ export const addBillSchema: ISchema = {
ellipsis: true,
},
},
// product: {
// type: 'string',
// title: intl.formatMessage({id: 'stockSellStorage.shangpinmingcheng'}),
// enum: [],
// 'x-component-props': {
// allowClear: true,
// style: {
// width: 150,
// },
// },
// 'x-rules': [
// {
// required: true,
// message: intl.formatMessage({id: 'stockSellStorage.qingxuanzeshangpin'}),
// },
// ],
// display: true,
// },
// productId: {
// type: 'string',
// title: intl.formatMessage({id: 'stockSellStorage.shangpinID'}),
// 'x-props': {
// width: 80,
// },
// 'x-component': 'Text',
// 'x-component-props': {
// ellipsis: true,
// },
// display: true,
// },
// price: {
// type: 'string',
// title: intl.formatMessage({id: 'stockSellStorage.danjia'}),
// 'x-props': {
// width: 100,
// },
// 'x-component': 'Text',
// 'x-component-props': {
// ellipsis: true,
// },
// display: true,
// },
productCount: {
invoicesCount: {
type: 'string',
title: intl.formatMessage({id: 'stockSellStorage.danjushuliang'}),
'x-component-props': {
......@@ -594,7 +313,7 @@ export const addBillSchema: ISchema = {
},
],
},
amount: {
totalPrice: {
type: 'string',
title: intl.formatMessage({id: 'stockSellStorage.jine'}),
'x-props': {
......@@ -605,11 +324,6 @@ export const addBillSchema: ISchema = {
ellipsis: true,
},
},
// 额外的数据,用于收集不需要展示的数据
extraData: {
type: 'string',
display: false,
},
},
}
},
......
import React, { useState, useEffect, useRef } from 'react';
import React, { useState, useRef } from 'react';
import { getIntl, history } from 'umi';
import { PageHeaderWrapper } from '@ant-design/pro-layout';
import { Button, Card, Dropdown, Menu, Space, Badge, Popconfirm } from 'antd';
import { PlusOutlined, DownOutlined, DeleteOutlined, RollbackOutlined, SnippetsOutlined, ZoomOutOutlined } from '@ant-design/icons';
import { PlusOutlined, DownOutlined, DeleteOutlined, RollbackOutlined, SnippetsOutlined } from '@ant-design/icons';
import StandardTable from '@/components/StandardTable';
import moment from 'moment';
import { ColumnType } from 'antd/lib/table/interface';
import { getProductInvoicesList, getProductInvoicesTypeAll, getProductWarehouseAll, postProductInvoicesBatchDelete, postProductInvoicesBatchReviewAll, postProductInvoicesBatchAgainstReview } from '@/services/ProductV2Api';
import { getProductInvoicesList, getProductInvoicesTypeAll, getProductWarehouseAll, postProductInvoicesBatchDelete, postProductInvoicesBatchReview } from '@/services/ProductV2Api';
import EyePreview from '@/components/EyePreview';
import NiceForm from '@/components/NiceForm';
import { createFormActions, FormEffectHooks } from '@formily/antd';
import { createFormActions } from '@formily/antd';
import { useStateFilterSearchLinkageEffect } from '@/formSchema/effects/useFilterSearch';
import { FORM_FILTER_PATH } from '@/formSchema/const';
import UploadModal from '@/components/UploadModal';
......@@ -70,26 +70,11 @@ const Bills: React.FC<{}> = () => {
});
};
const auditInvoices = (ids: number[], callback?: () => void) => {
const auditInvoices = (ids: number[], reviewType: number, callback?: () => void) => {
setBatchLoading(true);
postProductInvoicesBatchReviewAll({
ids,
}).then(res => {
if (res.code !== 1000) {
return;
}
if (callback) {
callback();
}
}).finally(() => {
setBatchLoading(false);
});
};
const counterclaimInvoices = (ids: number[], callback?: () => void) => {
setBatchLoading(true);
postProductInvoicesBatchAgainstReview({
postProductInvoicesBatchReview({
ids,
reviewType
}).then(res => {
if (res.code !== 1000) {
return;
......@@ -121,7 +106,7 @@ const Bills: React.FC<{}> = () => {
}
case 'BatchAudit': {
auditInvoices(selectedRowKeys, () => {
auditInvoices(selectedRowKeys, 1, () => {
setSelectedRowKeys([]);
ref.current.reload();
});
......@@ -129,7 +114,7 @@ const Bills: React.FC<{}> = () => {
}
case 'BatchCounterclaim': {
counterclaimInvoices(selectedRowKeys, () => {
auditInvoices(selectedRowKeys, 0, () => {
setSelectedRowKeys([]);
ref.current.reload();
});
......@@ -161,15 +146,8 @@ const Bills: React.FC<{}> = () => {
);
const handleCounterclaim = id => {
counterclaimInvoices([id], () => {
setSelectedRowKeys([]);
ref.current.reload();
});
};
const handleAudit = id => {
auditInvoices([id], () => {
const handleAudit = (id, reviewType) => {
auditInvoices([id], reviewType, () => {
setSelectedRowKeys([]);
ref.current.reload();
});
......@@ -258,7 +236,7 @@ const Bills: React.FC<{}> = () => {
<Button type="link" onClick={() => history.push(`/memberCenter/tranactionAbility/stockSellStorage/bills/edit?id=${record.id}`)}>{intl.formatMessage({ id: 'stockSellStorage.xiugai' })}</Button>
</AuthButton>
<AuthButton btnCode='bills.shenhe' >
<Button type="link" onClick={() => handleAudit(record.id)}>{intl.formatMessage({ id: 'stockSellStorage.shenhe' })}</Button>
<Button type="link" onClick={() => handleAudit(record.id, 1)}>{intl.formatMessage({ id: 'stockSellStorage.shenhe' })}</Button>
</AuthButton>
<AuthButton btnCode='bills.del' >
<Popconfirm
......@@ -278,7 +256,7 @@ const Bills: React.FC<{}> = () => {
</>
)}
{record.state === DOC_STATUS_REVIEWED && (
<Button type="link" onClick={() => handleCounterclaim(record.id)}>{intl.formatMessage({ id: 'stockSellStorage.fanshen' })}</Button>
<Button type="link" onClick={() => handleAudit(record.id, 0)}>{intl.formatMessage({ id: 'stockSellStorage.fanshen' })}</Button>
)}
</>
) : null;
......
......@@ -22,24 +22,24 @@ export const billsTypeDetailSchema: ISchema = {
},
properties: {
number: {
type: 'string',
type: 'text',
title: intl.formatMessage({ id: 'stockSellStorage.danjuleixingbianhao' }),
'x-component-props': {
placeholder: intl.formatMessage({ id: 'stockSellStorage.zuichang10gezifu' }),
maxLength: 10,
},
'x-rules': [
{
required: true,
message: intl.formatMessage({ id: 'stockSellStorage.qingshurudanjuleixingbian' }),
},
{
validator: value => {
const CNReg = /[\u4E00-\u9FA5]/g;
return CNReg.test(value) ? intl.formatMessage({ id: 'stockSellStorage.qingshurufeizhongwenzifu' }) : '';
},
},
],
// 'x-component-props': {
// placeholder: intl.formatMessage({ id: 'stockSellStorage.zuichang10gezifu' }),
// maxLength: 10,
// },
// 'x-rules': [
// {
// required: true,
// message: intl.formatMessage({ id: 'stockSellStorage.qingshurudanjuleixingbian' }),
// },
// {
// validator: value => {
// const CNReg = /[\u4E00-\u9FA5]/g;
// return CNReg.test(value) ? intl.formatMessage({ id: 'stockSellStorage.qingshurufeizhongwenzifu' }) : '';
// },
// },
// ],
},
name: {
type: 'string',
......
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