feat(basic-data): 新增生产预付和工人预付费用管理功能

- 新增 ProductionAdvanceList 组件用于管理生产预付费用
- 新增 WorkerAdvanceList 组件用于管理工人预付费用
- 在 BasicData 模块导出新增的两个费用列表组件
- 更新 WorkerList 组件接口命名一致性
- 添加生产预付和工人预付相关的多语言配置
- 新增获取上一车车次号接口 getLastVehicleNo
- 扩展采购订单相关接口支持三步保存流程
- 更新费用类型枚举增加 WORKER_ADVANCE 和 PRODUCTION_ADVANCE
- 修改订单返点相关字段类型为字符串
- 优化订单 dealer信息结构并添加新字段
- 更新采购订单命令类型定义增加 orderId 字段
- 扩展箱类型枚举增加 OWN 类型
- 新增采购订单步骤相关命令类型定义
This commit is contained in:
shenyifei 2025-11-14 10:12:08 +08:00
parent 2c51527b89
commit 5c002a42cf
12 changed files with 784 additions and 56 deletions

View File

@ -0,0 +1,193 @@
import { BizContainer, BizValueType, ModeType } from '@/components';
import { business } from '@/services';
import { useIntl } from '@@/exports';
import {
ProColumns,
ProFormMoney,
ProFormSwitch,
ProFormText,
} from '@ant-design/pro-components';
import { ProDescriptionsItemProps } from '@ant-design/pro-descriptions';
import React from 'react';
interface IProductionAdvanceListProps {
ghost?: boolean;
itemId?: BusinessAPI.CostItemVO['itemId'];
search?: boolean;
onValueChange?: () => void;
mode?: ModeType;
trigger?: () => React.ReactNode;
}
export default function ProductionAdvanceList(props: IProductionAdvanceListProps) {
const {
ghost = false,
itemId,
search = true,
mode = 'drag',
trigger,
onValueChange,
} = props;
const intl = useIntl();
const intlPrefix = 'productionAdvance';
const columns: ProColumns<BusinessAPI.CostItemVO, BizValueType>[] = [
{
title: intl.formatMessage({ id: intlPrefix + '.column.name' }),
dataIndex: 'name',
key: 'name',
renderText: (text: string) => <span className="font-medium">{text}</span>,
},
{
title: intl.formatMessage({ id: intlPrefix + '.column.unit' }),
dataIndex: 'unit',
key: 'unit',
search: false,
},
{
title: intl.formatMessage({ id: intlPrefix + '.column.price' }),
dataIndex: 'price',
key: 'price',
valueType: 'money',
search: false,
},
{
title: intl.formatMessage({ id: intlPrefix + '.column.requireQuantityAndPrice' }),
dataIndex: 'requireQuantityAndPrice',
key: 'requireQuantityAndPrice',
renderText: (text: boolean) => (
<span className="font-medium">{text ? '是' : '否'}</span>
),
search: false,
},
];
const formContext = [
<ProFormText key={'costType'} name={'costType'} hidden={true} />,
<ProFormText
key={'name'}
name={'name'}
label={intl.formatMessage({ id: intlPrefix + '.form.name.label' })}
required={true}
placeholder={intl.formatMessage({
id: intlPrefix + '.form.name.placeholder',
})}
rules={[
{
required: true,
message: intl.formatMessage({
id: intlPrefix + '.form.name.required',
}),
},
]}
/>,
<ProFormText
key={'unit'}
name={'unit'}
label={intl.formatMessage({ id: intlPrefix + '.form.unit.label' })}
placeholder={intl.formatMessage({
id: intlPrefix + '.form.unit.placeholder',
})}
/>,
<ProFormMoney
key={'price'}
name={'price'}
label={intl.formatMessage({ id: intlPrefix + '.form.price.label' })}
placeholder={intl.formatMessage({
id: intlPrefix + '.form.price.placeholder',
})}
fieldProps={{
precision: 2,
}}
/>,
<ProFormSwitch
key={'requireQuantityAndPrice'}
name={'requireQuantityAndPrice'}
label={intl.formatMessage({ id: intlPrefix + '.form.requireQuantityAndPrice.label' })}
required={true}
placeholder={intl.formatMessage({
id: intlPrefix + '.form.requireQuantityAndPrice.placeholder',
})}
rules={[
{
required: true,
message: intl.formatMessage({
id: intlPrefix + '.form.requireQuantityAndPrice.required',
}),
},
]}
fieldProps={{
checkedChildren: intl.formatMessage({
id: intlPrefix + '.form.requireQuantityAndPrice.enum.checkedChildren',
}),
unCheckedChildren: intl.formatMessage({
id: intlPrefix + '.form.requireQuantityAndPrice.enum.unCheckedChildren',
}),
}}
/>,
];
const detailColumns: ProDescriptionsItemProps<
BusinessAPI.CostItemVO,
BizValueType
>[] = columns as ProDescriptionsItemProps<
BusinessAPI.CostItemVO,
BizValueType
>[];
return (
<BizContainer<
typeof business.costItem,
BusinessAPI.CostItemVO,
BusinessAPI.CostItemPageQry,
BusinessAPI.CostItemCreateCmd,
BusinessAPI.CostItemUpdateCmd
>
rowKey={'itemId'}
permission={'operation-cost-item'}
func={business.costItem}
method={'costItem'}
methodUpper={'CostItem'}
intlPrefix={intlPrefix}
modeType={mode}
onValueChange={onValueChange}
container={{}}
remark={{
mode: 'editor',
}}
status
drag={{
fieldProps: {
bordered: true,
ghost,
//@ts-ignore
search,
params: {
costType: 'PRODUCTION_ADVANCE',
},
},
columns,
}}
create={{
formType: 'drawer',
formContext,
initValues: {
showInEntry: false,
requireQuantityAndPrice: false,
costType: 'PRODUCTION_ADVANCE',
status: true,
},
}}
update={{
formType: 'drawer',
formContext,
}}
destroy={{}}
detail={{
rowId: itemId,
formType: 'drawer',
columns: detailColumns,
trigger,
}}
/>
);
}

View File

@ -0,0 +1,193 @@
import { BizContainer, BizValueType, ModeType } from '@/components';
import { business } from '@/services';
import { useIntl } from '@@/exports';
import {
ProColumns,
ProFormMoney,
ProFormSwitch,
ProFormText,
} from '@ant-design/pro-components';
import { ProDescriptionsItemProps } from '@ant-design/pro-descriptions';
import React from 'react';
interface IWorkerAdvanceListProps {
ghost?: boolean;
itemId?: BusinessAPI.CostItemVO['itemId'];
search?: boolean;
onValueChange?: () => void;
mode?: ModeType;
trigger?: () => React.ReactNode;
}
export default function WorkerAdvanceList(props: IWorkerAdvanceListProps) {
const {
ghost = false,
itemId,
search = true,
mode = 'drag',
trigger,
onValueChange,
} = props;
const intl = useIntl();
const intlPrefix = 'workerAdvance';
const columns: ProColumns<BusinessAPI.CostItemVO, BizValueType>[] = [
{
title: intl.formatMessage({ id: intlPrefix + '.column.name' }),
dataIndex: 'name',
key: 'name',
renderText: (text: string) => <span className="font-medium">{text}</span>,
},
{
title: intl.formatMessage({ id: intlPrefix + '.column.unit' }),
dataIndex: 'unit',
key: 'unit',
search: false,
},
{
title: intl.formatMessage({ id: intlPrefix + '.column.price' }),
dataIndex: 'price',
key: 'price',
valueType: 'money',
search: false,
},
{
title: intl.formatMessage({ id: intlPrefix + '.column.requireQuantityAndPrice' }),
dataIndex: 'requireQuantityAndPrice',
key: 'requireQuantityAndPrice',
renderText: (text: boolean) => (
<span className="font-medium">{text ? '是' : '否'}</span>
),
search: false,
},
];
const formContext = [
<ProFormText key={'costType'} name={'costType'} hidden={true} />,
<ProFormText
key={'name'}
name={'name'}
label={intl.formatMessage({ id: intlPrefix + '.form.name.label' })}
required={true}
placeholder={intl.formatMessage({
id: intlPrefix + '.form.name.placeholder',
})}
rules={[
{
required: true,
message: intl.formatMessage({
id: intlPrefix + '.form.name.required',
}),
},
]}
/>,
<ProFormText
key={'unit'}
name={'unit'}
label={intl.formatMessage({ id: intlPrefix + '.form.unit.label' })}
placeholder={intl.formatMessage({
id: intlPrefix + '.form.unit.placeholder',
})}
/>,
<ProFormMoney
key={'price'}
name={'price'}
label={intl.formatMessage({ id: intlPrefix + '.form.price.label' })}
placeholder={intl.formatMessage({
id: intlPrefix + '.form.price.placeholder',
})}
fieldProps={{
precision: 2,
}}
/>,
<ProFormSwitch
key={'requireQuantityAndPrice'}
name={'requireQuantityAndPrice'}
label={intl.formatMessage({ id: intlPrefix + '.form.requireQuantityAndPrice.label' })}
required={true}
placeholder={intl.formatMessage({
id: intlPrefix + '.form.requireQuantityAndPrice.placeholder',
})}
rules={[
{
required: true,
message: intl.formatMessage({
id: intlPrefix + '.form.requireQuantityAndPrice.required',
}),
},
]}
fieldProps={{
checkedChildren: intl.formatMessage({
id: intlPrefix + '.form.requireQuantityAndPrice.enum.checkedChildren',
}),
unCheckedChildren: intl.formatMessage({
id: intlPrefix + '.form.requireQuantityAndPrice.enum.unCheckedChildren',
}),
}}
/>,
];
const detailColumns: ProDescriptionsItemProps<
BusinessAPI.CostItemVO,
BizValueType
>[] = columns as ProDescriptionsItemProps<
BusinessAPI.CostItemVO,
BizValueType
>[];
return (
<BizContainer<
typeof business.costItem,
BusinessAPI.CostItemVO,
BusinessAPI.CostItemPageQry,
BusinessAPI.CostItemCreateCmd,
BusinessAPI.CostItemUpdateCmd
>
rowKey={'itemId'}
permission={'operation-cost-item'}
func={business.costItem}
method={'costItem'}
methodUpper={'CostItem'}
intlPrefix={intlPrefix}
modeType={mode}
onValueChange={onValueChange}
container={{}}
remark={{
mode: 'editor',
}}
status
drag={{
fieldProps: {
bordered: true,
ghost,
//@ts-ignore
search,
params: {
costType: 'WORKER_ADVANCE',
},
},
columns,
}}
create={{
formType: 'drawer',
formContext,
initValues: {
showInEntry: false,
requireQuantityAndPrice: false,
costType: 'WORKER_ADVANCE',
status: true,
},
}}
update={{
formType: 'drawer',
formContext,
}}
destroy={{}}
detail={{
rowId: itemId,
formType: 'drawer',
columns: detailColumns,
trigger,
}}
/>
);
}

View File

@ -10,7 +10,7 @@ import {
import { ProDescriptionsItemProps } from '@ant-design/pro-descriptions';
import React from 'react';
interface IExcipientListProps {
interface IWorkerListProps {
ghost?: boolean;
itemId?: BusinessAPI.CostItemVO['itemId'];
search?: boolean;
@ -18,7 +18,7 @@ interface IExcipientListProps {
mode?: ModeType;
trigger?: () => React.ReactNode;
}
export default function ExcipientList(props: IExcipientListProps) {
export default function WorkerList(props: IWorkerListProps) {
const {
ghost = false,
itemId,

View File

@ -4,3 +4,5 @@ export { default as BoxBrandList } from './BoxBrandList';
export { default as ExcipientList } from './ExcipientList';
export { default as WorkerList } from './WorkerList';
export { default as GiftBoxList } from './GiftBoxList';
export { default as ProductionAdvanceList } from './ProductionAdvanceList';
export { default as WorkerAdvanceList } from './WorkerAdvanceList';

View File

@ -1803,6 +1803,186 @@ export default {
},
},
},
productionAdvance: {
column: {
name: '费用名称',
unit: '计量单位',
price: '单价',
requireQuantityAndPrice: '数量和单价',
'requireQuantityAndPrice.tooltip': '是否需要填写数量和单价',
remark: '备注',
status: '状态',
'status.enum.enabled': '正常',
'status.enum.disabled': '禁用',
'status.placeholder': '请选择状态',
createdAt: '创建时间',
option: '操作',
},
form: {
name: {
label: '费用名称',
placeholder: '请输入费用名称',
required: '费用名称为必填项',
},
unit: {
label: '计量单位',
placeholder: '请输入计量单位',
required: '计量单位为必填项',
},
price: {
label: '单价',
placeholder: '请输入单价',
required: '单价为必填项',
},
requireQuantityAndPrice: {
label: '数量和单价',
placeholder: '请选择数量和单价',
required: '数量和单价为必填项',
tooltip: '是否需要填写数量和单价',
enum: {
checkedChildren: '是',
unCheckedChildren: '否',
},
},
remark: {
label: '备注',
placeholder: '请输入备注',
},
status: {
label: '状态',
placeholder: '请选择状态',
required: '状态为必填项',
enum: {
enabled: '正常',
disabled: '禁用',
},
},
},
modal: {
create: {
title: '新增工种类型',
button: '新增工种类型',
success: '新增工种类型成功',
},
update: {
title: '更新工种类型',
button: '编辑',
success: '更新工种类型成功',
status: {
success: '修改状态成功',
},
},
delete: {
success: '删除工种类型成功',
button: '删除',
confirm: {
title: '确认删除',
content: '您确定要删除该工种类型吗?',
okText: '确定',
cancelText: '取消',
},
},
import: {
title: '导入工种类型',
button: '导入',
success: '导入工种类型成功',
},
view: {
title: '查看工种类型',
button: '查看',
},
},
},
workerAdvance: {
column: {
name: '费用名称',
unit: '计量单位',
price: '单价',
requireQuantityAndPrice: '数量和单价',
'requireQuantityAndPrice.tooltip': '是否需要填写数量和单价',
remark: '备注',
status: '状态',
'status.enum.enabled': '正常',
'status.enum.disabled': '禁用',
'status.placeholder': '请选择状态',
createdAt: '创建时间',
option: '操作',
},
form: {
name: {
label: '费用名称',
placeholder: '请输入费用名称',
required: '费用名称为必填项',
},
unit: {
label: '计量单位',
placeholder: '请输入计量单位',
required: '计量单位为必填项',
},
price: {
label: '单价',
placeholder: '请输入单价',
required: '单价为必填项',
},
requireQuantityAndPrice: {
label: '数量和单价',
placeholder: '请选择数量和单价',
required: '数量和单价为必填项',
tooltip: '是否需要填写数量和单价',
enum: {
checkedChildren: '是',
unCheckedChildren: '否',
},
},
remark: {
label: '备注',
placeholder: '请输入备注',
},
status: {
label: '状态',
placeholder: '请选择状态',
required: '状态为必填项',
enum: {
enabled: '正常',
disabled: '禁用',
},
},
},
modal: {
create: {
title: '新增工种类型',
button: '新增工种类型',
success: '新增工种类型成功',
},
update: {
title: '更新工种类型',
button: '编辑',
success: '更新工种类型成功',
status: {
success: '修改状态成功',
},
},
delete: {
success: '删除工种类型成功',
button: '删除',
confirm: {
title: '确认删除',
content: '您确定要删除该工种类型吗?',
okText: '确定',
cancelText: '取消',
},
},
import: {
title: '导入工种类型',
button: '导入',
success: '导入工种类型成功',
},
view: {
title: '查看工种类型',
button: '查看',
},
},
},
giftBox: {
column: {
name: '礼盒名称',

View File

@ -1,5 +0,0 @@
import { ExcipientList } from '@/components';
export default function Page() {
return <ExcipientList />;
}

View File

@ -0,0 +1,3 @@
export default function Page() {
return <></>;
}

View File

@ -0,0 +1,5 @@
import { ProductionAdvanceList } from '@/components';
export default function Page() {
return <ProductionAdvanceList />;
}

View File

@ -0,0 +1,5 @@
import { WorkerAdvanceList } from '@/components';
export default function Page() {
return <WorkerAdvanceList />;
}

View File

@ -88,6 +88,26 @@ export async function finalApprovePurchaseOrder(
);
}
/** 获取上一车车次号 GET /operation/getLastVehicleNo */
export async function getLastVehicleNo(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: BusinessAPI.getLastVehicleNoParams,
options?: { [key: string]: any },
) {
return request<BusinessAPI.SingleResponseString>(
'/operation/getLastVehicleNo',
{
method: 'GET',
params: {
...params,
lastVehicleNoQry: undefined,
...params['lastVehicleNoQry'],
},
...(options || {}),
},
);
}
/** 采购订单列表 GET /operation/listPurchaseOrder */
export async function listPurchaseOrder(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
@ -164,6 +184,54 @@ export async function rejectFinalPurchaseOrder(
);
}
/** 采购订单第一步:车辆信息和经销商信息保存 POST /operation/savePurchaseOrderStep1 */
export async function savePurchaseOrderStep1(
body: BusinessAPI.PurchaseOrderStep1Cmd,
options?: { [key: string]: any },
) {
return request<BusinessAPI.SingleResponsePurchaseOrderVO>(
'/operation/savePurchaseOrderStep1',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
},
);
}
/** 采购订单第二步:供应商信息保存 POST /operation/savePurchaseOrderStep2 */
export async function savePurchaseOrderStep2(
body: BusinessAPI.PurchaseOrderStep2Cmd,
options?: { [key: string]: any },
) {
return request<BusinessAPI.Response>('/operation/savePurchaseOrderStep2', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
});
}
/** 采购订单第三步:人工和辅料等费用信息保存 POST /operation/savePurchaseOrderStep3 */
export async function savePurchaseOrderStep3(
body: BusinessAPI.PurchaseOrderStep3Cmd,
options?: { [key: string]: any },
) {
return request<BusinessAPI.Response>('/operation/savePurchaseOrderStep3', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
});
}
/** 采购订单详情 GET /operation/showPurchaseOrder */
export async function showPurchaseOrder(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)

View File

@ -803,7 +803,9 @@ declare namespace BusinessAPI {
| 'PACKAGING_MATERIALS'
| 'HUMAN_COST'
| 'OTHER_COST'
| 'FIXED_COST';
| 'FIXED_COST'
| 'WORKER_ADVANCE'
| 'PRODUCTION_ADVANCE';
/** 项目名称 */
name: string;
/** 单位 */
@ -812,6 +814,8 @@ declare namespace BusinessAPI {
price: number;
/** 是否在录入时显示 */
showInEntry: boolean;
/** 是否需要填写数量和单价 */
requireQuantityAndPrice: boolean;
/** 备注 */
remark?: string;
/** 状态1_启用0_禁用 */
@ -842,7 +846,9 @@ declare namespace BusinessAPI {
| 'PACKAGING_MATERIALS'
| 'HUMAN_COST'
| 'OTHER_COST'
| 'FIXED_COST';
| 'FIXED_COST'
| 'WORKER_ADVANCE'
| 'PRODUCTION_ADVANCE';
/** 是否在录入时显示 */
showInEntry?: boolean;
};
@ -869,7 +875,9 @@ declare namespace BusinessAPI {
| 'PACKAGING_MATERIALS'
| 'HUMAN_COST'
| 'OTHER_COST'
| 'FIXED_COST';
| 'FIXED_COST'
| 'WORKER_ADVANCE'
| 'PRODUCTION_ADVANCE';
/** 项目名称 */
name?: string;
offset?: number;
@ -890,7 +898,9 @@ declare namespace BusinessAPI {
| 'PACKAGING_MATERIALS'
| 'HUMAN_COST'
| 'OTHER_COST'
| 'FIXED_COST';
| 'FIXED_COST'
| 'WORKER_ADVANCE'
| 'PRODUCTION_ADVANCE';
/** 项目名称 */
name: string;
/** 单位 */
@ -899,6 +909,8 @@ declare namespace BusinessAPI {
price: number;
/** 是否在录入时显示 */
showInEntry: boolean;
/** 是否需要填写数量和单价 */
requireQuantityAndPrice: boolean;
/** 备注 */
remark?: string;
/** 状态1_启用0_禁用 */
@ -913,7 +925,9 @@ declare namespace BusinessAPI {
| 'PACKAGING_MATERIALS'
| 'HUMAN_COST'
| 'OTHER_COST'
| 'FIXED_COST';
| 'FIXED_COST'
| 'WORKER_ADVANCE'
| 'PRODUCTION_ADVANCE';
/** 项目名称 */
name: string;
/** 单位 */
@ -922,6 +936,8 @@ declare namespace BusinessAPI {
price: number;
/** 是否在录入时显示 */
showInEntry: boolean;
/** 是否需要填写数量和单价 */
requireQuantityAndPrice: boolean;
/** 备注 */
remark?: string;
/** 状态1_启用0_禁用 */
@ -1688,6 +1704,10 @@ declare namespace BusinessAPI {
userRoleList?: UserRoleVO[];
};
type getLastVehicleNoParams = {
lastVehicleNoQry: LastVehicleNoQry;
};
type GiftBoxCreateCmd = {
/** 礼盒ID */
boxId: string;
@ -1786,6 +1806,11 @@ declare namespace BusinessAPI {
createdAt?: string;
};
type LastVehicleNoQry = {
/** 状态1_启用0_禁用 */
status?: boolean;
};
type listAgreementParams = {
agreementListQry: AgreementListQry;
};
@ -2351,7 +2376,9 @@ declare namespace BusinessAPI {
| 'PACKAGING_MATERIALS'
| 'HUMAN_COST'
| 'OTHER_COST'
| 'FIXED_COST';
| 'FIXED_COST'
| 'WORKER_ADVANCE'
| 'PRODUCTION_ADVANCE';
};
type OrderDealer = {
@ -2375,36 +2402,24 @@ declare namespace BusinessAPI {
strawMatCostFlag?: boolean;
/** 发货单合计金额是否含包装费 */
includePackingFlag?: boolean;
/** 是否开启计提税金 */
enableAccrualTax?: boolean;
/** 计提税金比例 */
accrualTaxRatio?: number;
/** 是否开启公司返点 */
enableCompanyRebate?: boolean;
/** 公司返点比例 */
companyRebateRatio?: number;
/** 单据类型delivery-发货单, purchase-采购底单, cost-成本单 */
documentTypes?: string;
/** 账户ID */
accountId?: string;
/** 公司名称 */
companyName?: string;
/** 税号 */
taxNumber?: string;
/** 银行账号 */
bankAccount?: string;
/** 单位地址 */
companyAddress?: string;
/** 电话 */
phone?: string;
/** 开户行 */
openingBank?: string;
/** 仓库ID */
warehouseId?: string;
/** 仓库名称 */
warehouseName?: string;
/** 仓库地址 */
warehouseAddress?: string;
/** 联系人 */
contactPerson?: string;
/** 联系电话 */
contactPhone?: string;
/** 收货人姓名 */
receiverName?: string;
/** 收货人电话 */
receiverPhone?: string;
/** 税费补贴 */
taxSubsidy?: number;
/** 计提税金 */
taxProvision?: number;
/** 成本差异 */
costDifference?: number;
/** 利润分成 */
profitSharing?: number;
};
type OrderPackage = {
@ -2416,6 +2431,8 @@ declare namespace BusinessAPI {
boxBrandId: string;
/** 箱子品牌名称 */
boxBrandName: string;
/** 箱子品牌图片 */
boxBrandImage?: string;
/** 箱子分类ID */
boxCategoryId: string;
/** 箱子产品ID */
@ -2431,22 +2448,22 @@ declare namespace BusinessAPI {
/** 销售单价(元/个) */
boxSalePrice?: number;
/** 箱子类型:1_本次使用2_额外运输3_已使用额外运输4_车上剩余 */
boxType: 'USED' | 'EXTRA' | 'EXTRA_USED' | 'REMAIN';
boxType: 'USED' | 'EXTRA' | 'EXTRA_USED' | 'REMAIN' | 'OWN';
};
type OrderRebate = {
/** 记录ID */
orderRebateId?: number;
orderRebateId?: string;
/** 订单ID */
orderId?: number;
orderId?: string;
/** 客户ID */
customerId?: number;
customerId?: string;
/** 经销商ID */
dealerId?: number;
dealerId?: string;
/** 客户名称 */
name?: string;
/** 返点计算方式1_按净重计算2_固定金额 */
calcMethod?: 'BY_WEIGHT' | 'FIXED_AMOUNT';
calcMethod?: 'NET_WEIGHT' | 'FIXED_AMOUNT';
/** 返点净重 */
netWeight?: number;
/** 返点单价 */
@ -3023,6 +3040,8 @@ declare namespace BusinessAPI {
};
type PurchaseOrderApproveCmd = {
/** 采购订单ID */
orderId: string;
/** 步骤标识 */
active?: number;
/** 产地负责人 */
@ -3037,8 +3056,6 @@ declare namespace BusinessAPI {
orderSupplierList: OrderSupplier[];
/** 采购订单费用信息 */
orderCostList: OrderCost[];
/** 采购订单ID */
orderId: string;
/** 是否是暂存 */
draft: boolean;
pricingMethod?: 'BY_GROSS_WEIGHT' | 'BY_NET_WEIGHT';
@ -3062,6 +3079,8 @@ declare namespace BusinessAPI {
};
type PurchaseOrderCreateCmd = {
/** 采购订单ID */
orderId?: string;
/** 步骤标识 */
active?: number;
/** 产地负责人 */
@ -3126,12 +3145,8 @@ declare namespace BusinessAPI {
| 'COMPLETED';
/** 供应商名称 */
supplierName?: string;
/** 经销商付款账户ID */
dealerPaymentAccountId?: string;
/** 经销商ID */
dealerId?: string;
/** 创建人ID */
createdBy?: string;
offset?: number;
};
@ -3154,12 +3169,43 @@ declare namespace BusinessAPI {
orderId?: string;
};
type PurchaseOrderStep1Cmd = {
/** 采购订单ID */
orderId?: string;
/** 步骤标识 */
active?: number;
/** 车辆信息 */
orderVehicle: OrderVehicle;
/** 经销商信息 */
orderDealer: OrderDealer;
};
type PurchaseOrderStep2Cmd = {
/** 采购订单ID */
orderId: string;
/** 步骤标识 */
active?: number;
/** 供应商信息 */
orderSupplierList: OrderSupplier[];
};
type PurchaseOrderStep3Cmd = {
/** 采购订单ID */
orderId: string;
/** 步骤标识 */
active?: number;
/** 采购订单费用信息 */
orderCostList: OrderCost[];
};
type PurchaseOrderSubmitReviewCmd = {
/** 采购订单ID */
orderId: string;
};
type PurchaseOrderUpdateCmd = {
/** 采购订单ID */
orderId: string;
/** 步骤标识 */
active?: number;
/** 产地负责人 */
@ -3174,8 +3220,6 @@ declare namespace BusinessAPI {
orderSupplierList: OrderSupplier[];
/** 采购订单费用信息 */
orderCostList: OrderCost[];
/** 采购订单ID */
orderId: string;
};
type PurchaseOrderVO = {
@ -3498,6 +3542,10 @@ declare namespace BusinessAPI {
totalAmount?: number;
/** 瓜农姓名逗号隔开 */
farmerInfo?: string;
/** 公司ID */
companyId?: string;
/** 公司名称 */
companyName?: string;
/** 备注 */
remark?: string;
};
@ -3575,6 +3623,8 @@ declare namespace BusinessAPI {
singleWeight?: number;
/** 总重(斤) */
totalWeight?: number;
/** 箱子品牌图片 */
boxBrandImage?: string;
/** 创建时间 */
createdAt?: string;
};
@ -3596,6 +3646,21 @@ declare namespace BusinessAPI {
status?: boolean;
/** 发货单ID */
shipOrderId?: string;
/** 车辆编号 */
vehicleNo?: string;
/** 采购订单编号 */
orderSn?: string;
/** 发货单状态1_待回款2_部分回款3_已回款4_拒收完结5_已完结 */
state?:
| 'WAIT_PAYMENT'
| 'PARTIAL_PAYMENT'
| 'FULL_PAYMENT'
| 'REJECT_FINISH'
| 'FINISH';
/** 供应商名称 */
supplierName?: string;
/** 经销商ID */
dealerId?: string;
offset?: number;
};
@ -3617,6 +3682,10 @@ declare namespace BusinessAPI {
watermelonGrade?: string;
/** 发货地址 */
shippingAddress?: string;
/** 公司ID */
companyId?: string;
/** 公司名称 */
companyName?: string;
/** 备注 */
remark?: string;
/** 发货单明细 */
@ -3644,6 +3713,10 @@ declare namespace BusinessAPI {
warehouseId?: string;
/** 仓库名称 */
warehouseName?: string;
/** 公司ID */
companyId?: string;
/** 公司名称 */
companyName?: string;
/** 车次号 */
vehicleNo?: string;
/** 发货地址 */
@ -3982,6 +4055,13 @@ declare namespace BusinessAPI {
data?: ShipOrderVO;
};
type SingleResponseString = {
success?: boolean;
errCode?: string;
errMessage?: string;
data?: string;
};
type SingleResponseSupplierVO = {
success?: boolean;
errCode?: string;
@ -4133,6 +4213,10 @@ declare namespace BusinessAPI {
remark?: string;
/** 状态1_启用0_禁用 */
status: boolean;
/** 创建人ID */
createdBy: string;
/** 创建人姓名 */
createdByName?: string;
/** 创建时间 */
createdAt?: string;
};

File diff suppressed because one or more lines are too long