feat(operation): 新增订单成本费用管理功能

- 在 CostList 组件中增加物流类型和司机类型的枚举支持
- 更新表单和列配置以支持新的费用类型(LOGISTICS_TYPE, DRIVER_TYPE)
- 隐藏物流类型的费用项显示
- 修改费用项依赖逻辑以适配新的人工类型
- 添加 OrderCostList 组件用于展示订单相关的成本费用信息
- 实现费用名称下拉选择及分组展示
- 支持通过是否付款状态筛选数据
- 展示关联采购单、车辆路线及公司信息
- 提供已付款/未付款标签页切换
- 引入 orderCost 相关接口和服务
- 更新权限标识为 operation-order-cost
- 增加国际化文案支持新增的字段和选项
- 调整角色ID和标签ID类型为字符串数组
- 替换 PaymentCost 页面组件引用为 OrderCostList
This commit is contained in:
shenyifei 2025-12-17 12:02:04 +08:00
parent 8c169fb4ca
commit 775a05a143
10 changed files with 462 additions and 168 deletions

View File

@ -83,6 +83,9 @@ export default function CostList(props: ICostListProps) {
OTHER_TYPE: intl.formatMessage({ OTHER_TYPE: intl.formatMessage({
id: intlPrefix + '.column.type.enum.otherType', id: intlPrefix + '.column.type.enum.otherType',
}), }),
LOGISTICS_TYPE: intl.formatMessage({
id: intlPrefix + '.column.type.enum.logisticsType',
}),
}, },
search: false, search: false,
}, },
@ -101,6 +104,9 @@ export default function CostList(props: ICostListProps) {
PRODUCTION_TYPE: intl.formatMessage({ PRODUCTION_TYPE: intl.formatMessage({
id: intlPrefix + '.column.belong.enum.productionType', id: intlPrefix + '.column.belong.enum.productionType',
}), }),
DRIVER_TYPE: intl.formatMessage({
id: intlPrefix + '.form.belong.enum.driverType',
}),
}, },
}, },
{ {
@ -114,7 +120,10 @@ export default function CostList(props: ICostListProps) {
<div>{record.costItemVOList?.map((item) => item.name).join(',')}</div> <div>{record.costItemVOList?.map((item) => item.name).join(',')}</div>
), ),
search: false, search: false,
hidden: type === 'PRODUCTION_TYPE' || type === 'OTHER_TYPE', hidden:
type === 'PRODUCTION_TYPE' ||
type === 'OTHER_TYPE' ||
type === 'LOGISTICS_TYPE',
}, },
]; ];
@ -186,6 +195,9 @@ export default function CostList(props: ICostListProps) {
OTHER_TYPE: intl.formatMessage({ OTHER_TYPE: intl.formatMessage({
id: intlPrefix + '.form.type.enum.otherType', id: intlPrefix + '.form.type.enum.otherType',
}), }),
LOGISTICS_TYPE: intl.formatMessage({
id: intlPrefix + '.form.type.enum.logisticsType',
}),
}} }}
/>, />,
// belong // belong
@ -212,12 +224,15 @@ export default function CostList(props: ICostListProps) {
PRODUCTION_TYPE: intl.formatMessage({ PRODUCTION_TYPE: intl.formatMessage({
id: intlPrefix + '.form.belong.enum.productionType', id: intlPrefix + '.form.belong.enum.productionType',
}), }),
DRIVER_TYPE: intl.formatMessage({
id: intlPrefix + '.form.belong.enum.driverType',
}),
}} }}
/>, />,
<ProFormDependency key={'type'} name={['type']}> <ProFormDependency key={'type'} name={['type']}>
{({ type }) => { {({ type }) => {
return ( return (
(type === 'MATERIAL_TYPE' || type === 'PRODUCTION_TYPE') && ( (type === 'MATERIAL_TYPE' || type === 'ARTIFICIAL_TYPE') && (
<ProFormBizSelect <ProFormBizSelect
ref={costRef} ref={costRef}
key={'costItemIds'} key={'costItemIds'}
@ -336,6 +351,12 @@ export default function CostList(props: ICostListProps) {
id: intlPrefix + '.type.otherType', id: intlPrefix + '.type.otherType',
}), }),
}, },
{
key: 'LOGISTICS_TYPE',
tab: intl.formatMessage({
id: intlPrefix + '.type.logisticsType',
}),
},
], ],
}, },
}} }}

View File

@ -1,132 +1,210 @@
import { BizContainer, BizValueType, ModeType } from '@/components'; import {
BizContainer,
BizValueType,
CompanyList,
ModeType,
PurchaseOrderList,
} from '@/components';
import { business } from '@/services'; import { business } from '@/services';
import { useIntl } from '@@/exports'; import { useIntl } from '@@/exports';
import { ProColumns } from '@ant-design/pro-components'; import { ProColumns } from '@ant-design/pro-components';
import { ProDescriptionsItemProps } from '@ant-design/pro-descriptions'; import { ProDescriptionsItemProps } from '@ant-design/pro-descriptions';
import { Tag } from 'antd';
import React, { useState } from 'react'; import React, { useState } from 'react';
import groupby from '@/utils/groupby';
interface IOrderSupplierListProps { interface IOrderCostListProps {
ghost?: boolean; ghost?: boolean;
orderId?: BusinessAPI.PurchaseOrderVO['orderId']; orderCostId?: BusinessAPI.OrderCostVO['orderCostId'];
search?: boolean; search?: boolean;
onValueChange?: () => void; onValueChange?: () => void;
mode?: ModeType; mode?: ModeType;
trigger?: () => React.ReactNode; trigger?: () => React.ReactNode;
} }
export default function OrderSupplierList(props: IOrderSupplierListProps) { export default function OrderCostList(props: IOrderCostListProps) {
const { const {
ghost = false, ghost = false,
orderId, orderCostId,
search = true, search = true,
mode = 'page', mode = 'page',
trigger, trigger,
onValueChange, onValueChange,
} = props; } = props;
const intl = useIntl(); const intl = useIntl();
const intlPrefix = 'orderSupplier'; const intlPrefix = 'orderCost';
const [activeKey, setActiveKey] = useState<string>('ALL'); const [activeKey, setActiveKey] = useState<string>('ALL');
const columns: ProColumns<BusinessAPI.PurchaseOrderVO, BizValueType>[] = [ const columns: ProColumns<BusinessAPI.OrderCostVO, BizValueType>[] = [
{ {
title: intl.formatMessage({ id: intlPrefix + '.column.orderSn' }), title: intl.formatMessage({ id: intlPrefix + '.column.name' }),
dataIndex: 'orderSn', dataIndex: 'name',
key: 'orderSn', key: 'costId',
renderText: (text: string) => <span className="font-medium">{text}</span>,
},
{
title: intl.formatMessage({ id: intlPrefix + '.column.origin' }),
dataIndex: ['orderVehicle', 'origin'],
search: false,
},
{
title: intl.formatMessage({ id: intlPrefix + '.column.destination' }),
dataIndex: ['orderVehicle', 'destination'],
search: false,
},
{
title: intl.formatMessage({ id: intlPrefix + '.column.dealerName' }),
dataIndex: ['orderVehicle', 'dealerName'],
key: 'dealerName',
},
{
title: intl.formatMessage({ id: intlPrefix + '.column.plate' }),
dataIndex: ['orderVehicle', 'plate'],
key: 'plate',
},
{
title: intl.formatMessage({ id: intlPrefix + '.column.driver' }),
dataIndex: ['orderVehicle', 'driver'],
key: 'driver',
},
{
title: intl.formatMessage({ id: intlPrefix + '.column.phone' }),
dataIndex: ['orderVehicle', 'phone'],
key: 'phone',
},
{
title: intl.formatMessage({ id: intlPrefix + '.column.state' }),
dataIndex: 'state',
key: 'state',
valueType: 'select', valueType: 'select',
render: (_, record) => { fieldProps: {
const stateText = intl.formatMessage({ fetchDataOnSearch: false,
id: `${intlPrefix}.column.state.${record.state?.toLowerCase() || 'unknown'}`, showSearch: true,
autoClearSearchValue: true,
},
request: async () => {
const { data } = await business.cost.listCost({
costListQry: {},
}); });
let color = 'default'; const costGroup = groupby(data || [], (item) => item.type);
switch (record.state) {
case 'DRAFT':
color = 'default';
break;
case 'WAITING_AUDIT':
color = 'processing';
break;
case 'COMPLETED':
color = 'success';
break;
case 'REJECTED':
color = 'error';
break;
default:
color = 'default';
}
return <Tag color={color}>{stateText}</Tag>; const options = Object.keys(costGroup).map((key) => ({
label: intl.formatMessage({
id:
'cost.column.type.enum.' +
key
.toLowerCase()
.replace(/_([a-z])/g, (_, char) => char.toUpperCase()),
}),
title: key,
options: costGroup[key].map((item) => ({
label: item.name,
value: item.costId,
})),
}));
return options || [];
}, },
}, },
{ {
title: intl.formatMessage({ id: intlPrefix + '.column.createdAt' }), title: intl.formatMessage({ id: intlPrefix + '.column.principal' }),
dataIndex: 'createdAt', dataIndex: 'principal',
key: 'createdAt', key: 'principal',
valueType: 'dateTime', },
{
title: intl.formatMessage({ id: intlPrefix + '.column.belong' }),
dataIndex: 'belong',
key: 'belong',
valueType: 'select',
valueEnum: {
WORKER_TYPE: {
text: intl.formatMessage({
id: intlPrefix + '.column.belong.workerType',
}),
},
PRODUCTION_TYPE: {
text: intl.formatMessage({
id: intlPrefix + '.column.belong.productionType',
}),
},
DRIVER_TYPE: {
text: intl.formatMessage({
id: intlPrefix + '.column.belong.driverType',
}),
},
},
},
{
title: intl.formatMessage({ id: intlPrefix + '.column.price' }),
dataIndex: 'price',
key: 'price',
valueType: 'money',
search: false, search: false,
}, },
{
title: intl.formatMessage({ id: intlPrefix + '.column.purchaseOrder' }),
dataIndex: 'purchaseOrderVO',
key: 'poOrderSn',
render: (_, record) => {
return (
<PurchaseOrderList
ghost={true}
mode={'detail'}
orderId={record.purchaseOrderVO.orderId}
trigger={() => <a href={'#'}>{record.purchaseOrderVO.orderSn}</a>}
/>
);
},
},
{
title: intl.formatMessage({ id: intlPrefix + '.column.orderVehicle' }),
dataIndex: 'orderVehicle',
key: 'ovVehicleNo',
render: (_, record) => {
return (
<span>
{record.orderVehicle.origin} {record.orderVehicle.destination}
</span>
);
},
},
{
title: intl.formatMessage({ id: intlPrefix + '.column.orderCompany' }),
dataIndex: 'orderCompany',
valueType: 'select',
request: async (params) => {
const { data } = await business.company.listCompany({
companyListQry: {
...params,
},
});
return (
data?.map((item) => {
return {
label: item.fullName,
value: item.companyId,
};
}) || []
);
},
render: (_, record) => {
return (
<CompanyList
ghost={true}
mode={'detail'}
companyId={record.orderCompany.companyId}
trigger={() => <a href={'#'}>{record.orderCompany.fullName}</a>}
/>
);
},
},
{
title: intl.formatMessage({ id: intlPrefix + '.column.isPaid' }),
dataIndex: 'isPaid',
key: 'isPaid',
valueType: 'select',
valueEnum: {
true: {
text: intl.formatMessage({
id: intlPrefix + '.column.isPaid.paid',
}),
status: 'success',
},
false: {
text: intl.formatMessage({
id: intlPrefix + '.column.isPaid.unpaid',
}),
status: 'processing',
},
},
},
]; ];
const detailColumns: ProDescriptionsItemProps< const detailColumns: ProDescriptionsItemProps<
BusinessAPI.PurchaseOrderVO, BusinessAPI.OrderCostVO,
BizValueType BizValueType
>[] = columns as ProDescriptionsItemProps< >[] = columns as ProDescriptionsItemProps<
BusinessAPI.PurchaseOrderVO, BusinessAPI.OrderCostVO,
BizValueType BizValueType
>[]; >[];
return ( return (
<BizContainer< <BizContainer<
typeof business.purchaseOrder, typeof business.orderCost,
BusinessAPI.PurchaseOrderVO, BusinessAPI.OrderCostVO,
BusinessAPI.PurchaseOrderPageQry, BusinessAPI.OrderCostPageQry
BusinessAPI.PurchaseOrderCreateCmd,
BusinessAPI.PurchaseOrderUpdateCmd
> >
rowKey={'orderId'} rowKey={'orderCostId'}
permission={'operation-purchase-order'} permission={'operation-order-cost'}
func={business.purchaseOrder} func={business.orderCost}
method={'purchaseOrder'} method={'orderCost'}
methodUpper={'PurchaseOrder'} methodUpper={'OrderCost'}
intlPrefix={intlPrefix} intlPrefix={intlPrefix}
modeType={mode} modeType={mode}
onValueChange={onValueChange} onValueChange={onValueChange}
@ -142,8 +220,10 @@ export default function OrderSupplierList(props: IOrderSupplierListProps) {
search, search,
params: { params: {
...(activeKey !== 'ALL' && { ...(activeKey !== 'ALL' && {
state: activeKey! as BusinessAPI.PurchaseOrderVO['state'], isPaid: activeKey! as any,
}), }),
poStates: ['COMPLETED'],
belongs: ['WORKER_TYPE', 'PRODUCTION_TYPE', 'DRIVER_TYPE'],
}, },
toolbar: { toolbar: {
menu: { menu: {
@ -157,34 +237,18 @@ export default function OrderSupplierList(props: IOrderSupplierListProps) {
id: intlPrefix + '.tab.all', id: intlPrefix + '.tab.all',
}), }),
}, },
// 已支付
{ {
key: 'DRAFT', key: 'true',
label: intl.formatMessage({ label: intl.formatMessage({
id: intlPrefix + '.tab.draft', id: intlPrefix + '.tab.paid',
}), }),
}, },
// 未支付
{ {
key: 'WAITING_AUDIT', key: 'false',
label: intl.formatMessage({ label: intl.formatMessage({
id: intlPrefix + '.tab.waitingAudit', id: intlPrefix + '.tab.unpaid',
}),
},
{
key: 'COMPLETED',
label: intl.formatMessage({
id: intlPrefix + '.tab.completed',
}),
},
{
key: 'REJECTED',
label: intl.formatMessage({
id: intlPrefix + '.tab.rejected',
}),
},
{
key: 'CLOSED',
label: intl.formatMessage({
id: intlPrefix + '.tab.closed',
}), }),
}, },
], ],
@ -200,7 +264,7 @@ export default function OrderSupplierList(props: IOrderSupplierListProps) {
update={false} update={false}
destroy={false} destroy={false}
detail={{ detail={{
rowId: orderId, rowId: orderCostId,
formType: 'drawer', formType: 'drawer',
columns: detailColumns, columns: detailColumns,
trigger, trigger,

View File

@ -1,2 +1,3 @@
export { default as PurchaseOrderList } from './PurchaseOrderList'; export { default as PurchaseOrderList } from './PurchaseOrderList';
export { default as OrderSupplierList } from './OrderSupplierList'; export { default as OrderSupplierList } from './OrderSupplierList';
export { default as OrderCostList } from './OrderCostList';

View File

@ -1703,6 +1703,7 @@ export default {
artificialType: '人工类型', artificialType: '人工类型',
productionType: '产地类型', productionType: '产地类型',
otherType: '其他类型', otherType: '其他类型',
logisticsType: '运输类型',
}, },
column: { column: {
name: '费用名称', name: '费用名称',
@ -1713,10 +1714,12 @@ export default {
'type.enum.artificialType': '人工类型', 'type.enum.artificialType': '人工类型',
'type.enum.productionType': '产地类型', 'type.enum.productionType': '产地类型',
'type.enum.otherType': '其他类型', 'type.enum.otherType': '其他类型',
'type.enum.logisticsType': '运输类型',
belong: '费用归属', belong: '费用归属',
'belong.enum.noneType': '无归属', 'belong.enum.noneType': '无归属',
'belong.enum.workerType': '工头垫付', 'belong.enum.workerType': '工头垫付',
'belong.enum.productionType': '产地垫付', 'belong.enum.productionType': '产地垫付',
'belong.enum.driverType': '司机垫付',
costItemIds: '关联费用项', costItemIds: '关联费用项',
remark: '备注', remark: '备注',
status: '状态', status: '状态',
@ -1751,6 +1754,7 @@ export default {
artificialType: '人工类型', artificialType: '人工类型',
productionType: '产地类型', productionType: '产地类型',
otherType: '其他类型', otherType: '其他类型',
logisticsType: '运输类型',
}, },
}, },
belong: { belong: {
@ -1759,8 +1763,9 @@ export default {
required: '费用归属为必填项', required: '费用归属为必填项',
enum: { enum: {
noneType: '无归属', noneType: '无归属',
workerType: '工头', workerType: '工头垫付',
productionType: '产地', productionType: '产地垫付',
driverType: '司机垫付',
}, },
}, },
costItemIds: { costItemIds: {
@ -2192,4 +2197,55 @@ export default {
}, },
}, },
}, },
orderCost: {
tab: {
all: '全部',
paid: '已付款',
unpaid: '待付款',
},
column: {
name: '费用名称',
principal: '收款方',
price: '待付款金额',
purchaseOrder: '关联采购单',
orderVehicle: '关联车辆',
orderCompany: '所属公司',
belong: '归属',
'belong.workerType': '工头',
'belong.productionType': '产地',
'belong.driverType': '司机',
isPaid: '是否付款',
'isPaid.paid': '已付款',
'isPaid.unpaid': '待付款',
paidAt: '付款时间',
createdAt: '创建时间',
option: '操作',
},
modal: {
create: {
title: '创建订单成本费用',
button: '创建订单成本费用',
success: '创建订单成本费用成功',
},
update: {
title: '更新订单成本费用',
button: '编辑',
success: '更新订单成本费用成功',
},
delete: {
success: '删除订单成本费用成功',
button: '删除',
confirm: {
title: '确认删除',
content: '您确定要删除该订单成本费用吗?',
okText: '确定',
cancelText: '取消',
},
},
view: {
title: '查看订单成本费用',
button: '详情',
},
},
},
}; };

View File

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

View File

@ -100,7 +100,7 @@ declare namespace AuthAPI {
/** 用户ID */ /** 用户ID */
userId: string; userId: string;
/** 角色ID */ /** 角色ID */
roleIdList: number[]; roleIdList: string[];
/** 角色信息 */ /** 角色信息 */
userRoleList?: UserRoleVO[]; userRoleList?: UserRoleVO[];
}; };
@ -195,7 +195,7 @@ declare namespace AuthAPI {
type RoleMenuTreeQry = { type RoleMenuTreeQry = {
/** 角色权限 */ /** 角色权限 */
roleId?: number[]; roleId?: string[];
/** 平台ID */ /** 平台ID */
platformId: string; platformId: string;
}; };
@ -329,7 +329,7 @@ declare namespace AuthAPI {
/** 备注 */ /** 备注 */
remark?: string; remark?: string;
/** 客户标签 */ /** 客户标签 */
labelId?: number[]; labelId?: string[];
/** 用户ID */ /** 用户ID */
userId: string; userId: string;
}; };

View File

@ -22,6 +22,7 @@ import * as giftBox from './giftBox';
import * as material from './material'; import * as material from './material';
import * as materialCategory from './materialCategory'; import * as materialCategory from './materialCategory';
import * as menu from './menu'; import * as menu from './menu';
import * as orderCost from './orderCost';
import * as orderShip from './orderShip'; import * as orderShip from './orderShip';
import * as orderSupplier from './orderSupplier'; import * as orderSupplier from './orderSupplier';
import * as permission from './permission'; import * as permission from './permission';
@ -64,4 +65,5 @@ export default {
role, role,
permission, permission,
extraction, extraction,
orderCost,
}; };

View File

@ -0,0 +1,23 @@
// @ts-ignore
/* eslint-disable */
import request from '../request';
/** 订单成本项列表 GET /operation/pageOrderCost */
export async function pageOrderCost(
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
params: BusinessAPI.pageOrderCostParams,
options?: { [key: string]: any },
) {
return request<BusinessAPI.PageResponseOrderCostVO>(
'/operation/pageOrderCost',
{
method: 'GET',
params: {
...params,
orderCostPageQry: undefined,
...params['orderCostPageQry'],
},
...(options || {}),
},
);
}

View File

@ -104,7 +104,7 @@ declare namespace BusinessAPI {
/** 品牌图片URL */ /** 品牌图片URL */
image?: string; image?: string;
/** 纸箱规格ID */ /** 纸箱规格ID */
specIds?: number[]; specIds?: string[];
/** 备注 */ /** 备注 */
remark?: string; remark?: string;
/** 状态1_启用0_禁用 */ /** 状态1_启用0_禁用 */
@ -175,7 +175,7 @@ declare namespace BusinessAPI {
/** 品牌图片URL */ /** 品牌图片URL */
image?: string; image?: string;
/** 纸箱规格ID */ /** 纸箱规格ID */
specIds?: number[]; specIds?: string[];
/** 备注 */ /** 备注 */
remark?: string; remark?: string;
/** 状态1_启用0_禁用 */ /** 状态1_启用0_禁用 */
@ -192,7 +192,7 @@ declare namespace BusinessAPI {
/** 品牌图片URL */ /** 品牌图片URL */
image?: string; image?: string;
/** 纸箱规格ID */ /** 纸箱规格ID */
specIds?: number[]; specIds?: string[];
/** 备注 */ /** 备注 */
remark?: string; remark?: string;
/** 状态1_启用0_禁用 */ /** 状态1_启用0_禁用 */
@ -892,14 +892,15 @@ declare namespace BusinessAPI {
type CostCreateCmd = { type CostCreateCmd = {
/** 费用ID */ /** 费用ID */
costId: string; costId: string;
/** 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型 */ /** 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型 */
type: type:
| 'MATERIAL_TYPE' | 'MATERIAL_TYPE'
| 'ARTIFICIAL_TYPE' | 'ARTIFICIAL_TYPE'
| 'PRODUCTION_TYPE' | 'PRODUCTION_TYPE'
| 'OTHER_TYPE'; | 'OTHER_TYPE'
/** 费用归属1_工头2_产地 */ | 'LOGISTICS_TYPE';
belong: 'NONE_TYPE' | 'WORKER_TYPE' | 'PRODUCTION_TYPE'; /** 费用归属0_无归属1_工头2_产地3_司机 */
belong: 'NONE_TYPE' | 'WORKER_TYPE' | 'PRODUCTION_TYPE' | 'DRIVER_TYPE';
/** 费用名称 */ /** 费用名称 */
name: string; name: string;
/** 单价 */ /** 单价 */
@ -913,7 +914,7 @@ declare namespace BusinessAPI {
/** 状态1_启用0_禁用 */ /** 状态1_启用0_禁用 */
status: boolean; status: boolean;
/** 成本项ID */ /** 成本项ID */
costItemIds?: number[]; costItemIds?: string[];
}; };
type CostDestroyCmd = { type CostDestroyCmd = {
@ -1054,14 +1055,19 @@ declare namespace BusinessAPI {
status?: boolean; status?: boolean;
/** 费用ID */ /** 费用ID */
costId?: string; costId?: string;
/** 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型 */ /** 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型 */
type?: type?:
| 'MATERIAL_TYPE' | 'MATERIAL_TYPE'
| 'ARTIFICIAL_TYPE' | 'ARTIFICIAL_TYPE'
| 'PRODUCTION_TYPE' | 'PRODUCTION_TYPE'
| 'OTHER_TYPE'; | 'OTHER_TYPE'
/** 费用归属1_工头2_产地 */ | 'LOGISTICS_TYPE';
belong?: 'NONE_TYPE' | 'WORKER_TYPE' | 'PRODUCTION_TYPE'; /** 费用归属0_无归属1_工头2_产地3_司机 */
belong?:
| 'NONE_TYPE'
| 'WORKER_TYPE'
| 'PRODUCTION_TYPE'
| 'DRIVER_TYPE';
}; };
type CostPageQry = { type CostPageQry = {
@ -1081,14 +1087,19 @@ declare namespace BusinessAPI {
status?: boolean; status?: boolean;
/** 费用ID */ /** 费用ID */
costId?: string; costId?: string;
/** 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型 */ /** 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型 */
type?: type?:
| 'MATERIAL_TYPE' | 'MATERIAL_TYPE'
| 'ARTIFICIAL_TYPE' | 'ARTIFICIAL_TYPE'
| 'PRODUCTION_TYPE' | 'PRODUCTION_TYPE'
| 'OTHER_TYPE'; | 'OTHER_TYPE'
/** 费用归属1_工头2_产地 */ | 'LOGISTICS_TYPE';
belong?: 'NONE_TYPE' | 'WORKER_TYPE' | 'PRODUCTION_TYPE'; /** 费用归属0_无归属1_工头2_产地3_司机 */
belong?:
| 'NONE_TYPE'
| 'WORKER_TYPE'
| 'PRODUCTION_TYPE'
| 'DRIVER_TYPE';
offset?: number; offset?: number;
}; };
@ -1102,14 +1113,15 @@ declare namespace BusinessAPI {
type CostUpdateCmd = { type CostUpdateCmd = {
/** 费用ID */ /** 费用ID */
costId: string; costId: string;
/** 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型 */ /** 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型 */
type: type:
| 'MATERIAL_TYPE' | 'MATERIAL_TYPE'
| 'ARTIFICIAL_TYPE' | 'ARTIFICIAL_TYPE'
| 'PRODUCTION_TYPE' | 'PRODUCTION_TYPE'
| 'OTHER_TYPE'; | 'OTHER_TYPE'
/** 费用归属1_工头2_产地 */ | 'LOGISTICS_TYPE';
belong: 'NONE_TYPE' | 'WORKER_TYPE' | 'PRODUCTION_TYPE'; /** 费用归属0_无归属1_工头2_产地3_司机 */
belong: 'NONE_TYPE' | 'WORKER_TYPE' | 'PRODUCTION_TYPE' | 'DRIVER_TYPE';
/** 费用名称 */ /** 费用名称 */
name: string; name: string;
/** 单价 */ /** 单价 */
@ -1123,7 +1135,7 @@ declare namespace BusinessAPI {
/** 状态1_启用0_禁用 */ /** 状态1_启用0_禁用 */
status: boolean; status: boolean;
/** 成本项ID */ /** 成本项ID */
costItemIds?: number[]; costItemIds?: string[];
}; };
type CostVO = { type CostVO = {
@ -1134,9 +1146,10 @@ declare namespace BusinessAPI {
| 'MATERIAL_TYPE' | 'MATERIAL_TYPE'
| 'ARTIFICIAL_TYPE' | 'ARTIFICIAL_TYPE'
| 'PRODUCTION_TYPE' | 'PRODUCTION_TYPE'
| 'OTHER_TYPE'; | 'OTHER_TYPE'
/** 费用归属1_工头2_产地 */ | 'LOGISTICS_TYPE';
belong: 'NONE_TYPE' | 'WORKER_TYPE' | 'PRODUCTION_TYPE'; /** 费用归属0_无归属1_工头2_产地3_司机 */
belong: 'NONE_TYPE' | 'WORKER_TYPE' | 'PRODUCTION_TYPE' | 'DRIVER_TYPE';
/** 费用名称 */ /** 费用名称 */
name: string; name: string;
/** 单价 */ /** 单价 */
@ -1150,7 +1163,7 @@ declare namespace BusinessAPI {
/** 状态1_启用0_禁用 */ /** 状态1_启用0_禁用 */
status: boolean; status: boolean;
/** 项目id集合 */ /** 项目id集合 */
costItemIds?: number[]; costItemIds?: string[];
/** 创建时间 */ /** 创建时间 */
createdAt?: string; createdAt?: string;
/** 项目列表 */ /** 项目列表 */
@ -1831,7 +1844,7 @@ declare namespace BusinessAPI {
/** 登录密码 */ /** 登录密码 */
password: string; password: string;
/** 角色ID */ /** 角色ID */
roleId: number[]; roleId: string[];
}; };
type EmployeeDestroyCmd = { type EmployeeDestroyCmd = {
@ -1924,7 +1937,7 @@ declare namespace BusinessAPI {
/** 用户ID */ /** 用户ID */
userId: string; userId: string;
/** 角色ID */ /** 角色ID */
roleIdList: number[]; roleIdList: string[];
/** 角色信息 */ /** 角色信息 */
userRoleList?: UserRoleVO[]; userRoleList?: UserRoleVO[];
}; };
@ -2250,7 +2263,7 @@ declare namespace BusinessAPI {
/** 平台id */ /** 平台id */
platformId: string; platformId: string;
/** 角色Id */ /** 角色Id */
roleId?: number[]; roleId?: string[];
/** 是否隐藏 */ /** 是否隐藏 */
hideInMenu?: boolean; hideInMenu?: boolean;
/** 权限Id */ /** 权限Id */
@ -2323,7 +2336,7 @@ declare namespace BusinessAPI {
/** 平台id */ /** 平台id */
platformId: string; platformId: string;
/** 角色Id */ /** 角色Id */
roleId?: number[]; roleId?: string[];
/** 是否隐藏 */ /** 是否隐藏 */
hideInMenu?: boolean; hideInMenu?: boolean;
/** 权限Id */ /** 权限Id */
@ -2651,18 +2664,23 @@ declare namespace BusinessAPI {
unit: string; unit: string;
/** 数量 */ /** 数量 */
count: number; count: number;
/** 费用归属1_工头2_产地 */ /** 费用归属0_无归属1_工头2_产地3_司机 */
belong?: 'NONE_TYPE' | 'WORKER_TYPE' | 'PRODUCTION_TYPE'; belong?:
| 'NONE_TYPE'
| 'WORKER_TYPE'
| 'PRODUCTION_TYPE'
| 'DRIVER_TYPE';
/** 负责人 */ /** 负责人 */
principal?: string; principal?: string;
/** 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型 */ /** 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型 */
type: type:
| 'MATERIAL_TYPE' | 'MATERIAL_TYPE'
| 'ARTIFICIAL_TYPE' | 'ARTIFICIAL_TYPE'
| 'PRODUCTION_TYPE' | 'PRODUCTION_TYPE'
| 'OTHER_TYPE'; | 'OTHER_TYPE'
| 'LOGISTICS_TYPE';
/** 关联项目id */ /** 关联项目id */
costItemIds?: number[]; costItemIds?: string[];
/** 是否选中 */ /** 是否选中 */
selected: boolean; selected: boolean;
}; };
@ -2692,6 +2710,98 @@ declare namespace BusinessAPI {
selected: boolean; selected: boolean;
}; };
type OrderCostPageQry = {
pageSize?: number;
pageIndex?: number;
orderBy?: string;
orderDirection?: string;
groupBy?: string;
needTotalCount?: boolean;
/** 自定义字段key */
customFieldKey?: string;
/** 自定义字段value */
customFieldValue?: string;
/** 备注 */
remark?: string;
/** 状态1_启用0_禁用 */
status?: boolean;
/** 订单ID */
orderId?: string;
/** 订单ID */
costId?: string;
/** 供应商id */
supplierId?: string;
/** 订单状态 */
poStates?: (
| 'DRAFT'
| 'WAITING_AUDIT'
| 'COMPLETED'
| 'REJECTED'
| 'CLOSED'
)[];
/** 所属方 */
belongs?: (
| 'NONE_TYPE'
| 'WORKER_TYPE'
| 'PRODUCTION_TYPE'
| 'DRIVER_TYPE'
)[];
/** 是否支付 */
isPaid?: boolean;
offset?: number;
};
type OrderCostVO = {
/** 记录ID */
orderCostId: string;
/** 订单ID */
orderId?: string;
/** 费用Id */
costId: string;
/** 成本项目名称 */
name: string;
/** 单价 */
price: number;
/** 单位 */
unit: string;
/** 数量 */
count: number;
/** 费用归属0_无归属1_工头2_产地3_司机 */
belong?:
| 'NONE_TYPE'
| 'WORKER_TYPE'
| 'PRODUCTION_TYPE'
| 'DRIVER_TYPE';
/** 负责人 */
principal?: string;
/** 费用类型1_辅料类型2_人工类型3_产地类型4_其他类型5_物流类型 */
type:
| 'MATERIAL_TYPE'
| 'ARTIFICIAL_TYPE'
| 'PRODUCTION_TYPE'
| 'OTHER_TYPE'
| 'LOGISTICS_TYPE';
/** 关联项目id */
costItemIds?: string[];
/** 创建时间 */
createdAt: string;
/** 车辆信息 */
orderVehicle: OrderVehicle;
/** 采购订单状态: 0_草稿1_审核中2_已完成3_已驳回4_已关闭 */
poState?:
| 'DRAFT'
| 'WAITING_AUDIT'
| 'COMPLETED'
| 'REJECTED'
| 'CLOSED';
/** 公司信息 */
orderCompany: OrderCompany;
/** 采购订单信息 */
purchaseOrderVO: PurchaseOrderVO;
/** 是否付款 */
isPaid?: boolean;
};
type OrderDealer = { type OrderDealer = {
/** 记录ID */ /** 记录ID */
orderDealerId?: string; orderDealerId?: string;
@ -3114,7 +3224,7 @@ declare namespace BusinessAPI {
/** 产品名称 */ /** 产品名称 */
productName?: string; productName?: string;
/** 关联费用id */ /** 关联费用id */
costIds?: number[]; costIds?: string[];
/** 成本模板 */ /** 成本模板 */
costTemplate?: string; costTemplate?: string;
/** 是否已付定金 */ /** 是否已付定金 */
@ -3144,7 +3254,7 @@ declare namespace BusinessAPI {
type OrderSupplierBatchInvoiceUploadCmd = { type OrderSupplierBatchInvoiceUploadCmd = {
/** 供应商ID列表 */ /** 供应商ID列表 */
orderSupplierIdList: number[]; orderSupplierIdList: string[];
/** 是否上传票证 */ /** 是否上传票证 */
invoiceUpload?: boolean; invoiceUpload?: boolean;
/** 发票照片 */ /** 发票照片 */
@ -3398,6 +3508,10 @@ declare namespace BusinessAPI {
materialPageQry: MaterialPageQry; materialPageQry: MaterialPageQry;
}; };
type pageOrderCostParams = {
orderCostPageQry: OrderCostPageQry;
};
type pageOrderShipParams = { type pageOrderShipParams = {
orderShipPageQry: OrderShipPageQry; orderShipPageQry: OrderShipPageQry;
}; };
@ -3643,6 +3757,19 @@ declare namespace BusinessAPI {
totalPages?: number; totalPages?: number;
}; };
type PageResponseOrderCostVO = {
success?: boolean;
errCode?: string;
errMessage?: string;
totalCount?: number;
pageSize?: number;
pageIndex?: number;
data?: OrderCostVO[];
empty?: boolean;
notEmpty?: boolean;
totalPages?: number;
};
type PageResponseOrderShipVO = { type PageResponseOrderShipVO = {
success?: boolean; success?: boolean;
errCode?: string; errCode?: string;
@ -3878,7 +4005,7 @@ declare namespace BusinessAPI {
/** 产品名称 */ /** 产品名称 */
name: string; name: string;
/** 关联成本费用id */ /** 关联成本费用id */
costIds?: number[]; costIds?: string[];
/** 成本模板 */ /** 成本模板 */
costTemplate?: string; costTemplate?: string;
/** 备注 */ /** 备注 */
@ -3945,7 +4072,7 @@ declare namespace BusinessAPI {
/** 产品名称 */ /** 产品名称 */
name: string; name: string;
/** 关联成本费用id */ /** 关联成本费用id */
costIds?: number[]; costIds?: string[];
/** 成本模板 */ /** 成本模板 */
costTemplate?: string; costTemplate?: string;
/** 备注 */ /** 备注 */
@ -3970,7 +4097,7 @@ declare namespace BusinessAPI {
/** 状态1_启用0_禁用 */ /** 状态1_启用0_禁用 */
status: boolean; status: boolean;
/** 成本ID集合 */ /** 成本ID集合 */
costIds?: number[]; costIds?: string[];
/** 成本费用 */ /** 成本费用 */
costVOList?: CostVO[]; costVOList?: CostVO[];
/** 成本模板 */ /** 成本模板 */
@ -4273,7 +4400,7 @@ declare namespace BusinessAPI {
/** 角色详情 */ /** 角色详情 */
description?: string; description?: string;
/** 角色id */ /** 角色id */
menuId: number[]; menuId: string[];
}; };
type RoleDestroyCmd = { type RoleDestroyCmd = {
@ -4295,7 +4422,7 @@ declare namespace BusinessAPI {
/** 角色编号 */ /** 角色编号 */
roleId?: string; roleId?: string;
/** 应用角色Id */ /** 应用角色Id */
roleIdList?: number[]; roleIdList?: string[];
/** 平台Id */ /** 平台Id */
platformId?: string; platformId?: string;
/** 平台Id */ /** 平台Id */
@ -4342,7 +4469,7 @@ declare namespace BusinessAPI {
/** 角色详情 */ /** 角色详情 */
description?: string; description?: string;
/** 角色id */ /** 角色id */
menuId: number[]; menuId: string[];
/** 角色ID */ /** 角色ID */
roleId: string; roleId: string;
}; };
@ -4363,9 +4490,9 @@ declare namespace BusinessAPI {
/** 平台 */ /** 平台 */
platformVO?: PlatformVO; platformVO?: PlatformVO;
/** 权限列表 */ /** 权限列表 */
permissionId: number[]; permissionId: string[];
/** 菜单列表 */ /** 菜单列表 */
menuId: number[]; menuId: string[];
/** 创建时间 */ /** 创建时间 */
createdAt: string; createdAt: string;
}; };
@ -5030,7 +5157,7 @@ declare namespace BusinessAPI {
/** 备注 */ /** 备注 */
remark?: string; remark?: string;
/** 客户标签 */ /** 客户标签 */
labelId?: number[]; labelId?: string[];
}; };
type UserDestroyCmd = { type UserDestroyCmd = {
@ -5052,7 +5179,7 @@ declare namespace BusinessAPI {
/** 状态1_启用0_禁用 */ /** 状态1_启用0_禁用 */
status?: boolean; status?: boolean;
/** 用户ID */ /** 用户ID */
userIdList?: number[]; userIdList?: string[];
/** 用户名 */ /** 用户名 */
name?: string; name?: string;
}; };
@ -5095,9 +5222,9 @@ declare namespace BusinessAPI {
/** 是否是管理员 */ /** 是否是管理员 */
isAdmin?: boolean; isAdmin?: boolean;
/** 会员id列表 */ /** 会员id列表 */
userIdList?: number[]; userIdList?: string[];
/** 排除的用户id列表 */ /** 排除的用户id列表 */
excludeUserIdList?: number[]; excludeUserIdList?: string[];
/** 小区id */ /** 小区id */
communityId?: number; communityId?: number;
offset?: number; offset?: number;
@ -5107,7 +5234,7 @@ declare namespace BusinessAPI {
/** 用户ID */ /** 用户ID */
userId: string; userId: string;
/** 角色ID */ /** 角色ID */
roleIdList?: number[]; roleIdList?: string[];
/** 是否覆盖 */ /** 是否覆盖 */
cover: boolean; cover: boolean;
}; };
@ -5152,7 +5279,7 @@ declare namespace BusinessAPI {
/** 备注 */ /** 备注 */
remark?: string; remark?: string;
/** 客户标签 */ /** 客户标签 */
labelId?: number[]; labelId?: string[];
/** 用户ID */ /** 用户ID */
userId: string; userId: string;
}; };

File diff suppressed because one or more lines are too long