Compare commits
No commits in common. "f030e6c3343a588f3058e0679840e31e1a8fe1b1" and "fb79163721b496e5af4750ac535824be55c1ec5f" have entirely different histories.
f030e6c334
...
fb79163721
|
|
@ -13,4 +13,3 @@
|
||||||
.swc
|
.swc
|
||||||
/package-lock.json
|
/package-lock.json
|
||||||
/yarn.lock
|
/yarn.lock
|
||||||
*.yaml
|
|
||||||
|
|
|
||||||
14
.umirc.ts
14
.umirc.ts
|
|
@ -6,7 +6,6 @@ const UMI_APP_API_URL = isDev
|
||||||
: 'https://api.yoone.ca';
|
: 'https://api.yoone.ca';
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
hash: true,
|
|
||||||
antd: {},
|
antd: {},
|
||||||
access: {},
|
access: {},
|
||||||
model: {},
|
model: {},
|
||||||
|
|
@ -26,7 +25,7 @@ export default defineConfig({
|
||||||
{
|
{
|
||||||
name: '组织架构',
|
name: '组织架构',
|
||||||
path: '/organiza',
|
path: '/organiza',
|
||||||
access: 'canSeeOrganiza',
|
access: 'canSeeSuper',
|
||||||
routes: [
|
routes: [
|
||||||
{
|
{
|
||||||
name: '用户管理',
|
name: '用户管理',
|
||||||
|
|
@ -38,7 +37,6 @@ export default defineConfig({
|
||||||
{
|
{
|
||||||
name: '商品管理',
|
name: '商品管理',
|
||||||
path: '/product',
|
path: '/product',
|
||||||
access: 'canSeeProduct',
|
|
||||||
routes: [
|
routes: [
|
||||||
{
|
{
|
||||||
name: '商品分类',
|
name: '商品分类',
|
||||||
|
|
@ -70,7 +68,6 @@ export default defineConfig({
|
||||||
{
|
{
|
||||||
name: '库存管理',
|
name: '库存管理',
|
||||||
path: '/stock',
|
path: '/stock',
|
||||||
access: 'canSeeStock',
|
|
||||||
routes: [
|
routes: [
|
||||||
{
|
{
|
||||||
name: '库存列表',
|
name: '库存列表',
|
||||||
|
|
@ -102,7 +99,7 @@ export default defineConfig({
|
||||||
{
|
{
|
||||||
name: '订单管理',
|
name: '订单管理',
|
||||||
path: '/order',
|
path: '/order',
|
||||||
access: 'canSeeOrder',
|
access: 'canSeeAdmin',
|
||||||
routes: [
|
routes: [
|
||||||
{
|
{
|
||||||
name: '订单列表',
|
name: '订单列表',
|
||||||
|
|
@ -119,7 +116,6 @@ export default defineConfig({
|
||||||
{
|
{
|
||||||
name: '客户管理',
|
name: '客户管理',
|
||||||
path: '/customer',
|
path: '/customer',
|
||||||
access: 'canSeeCustomer',
|
|
||||||
routes: [
|
routes: [
|
||||||
{
|
{
|
||||||
name: '客户列表',
|
name: '客户列表',
|
||||||
|
|
@ -131,7 +127,6 @@ export default defineConfig({
|
||||||
{
|
{
|
||||||
name: '物流管理',
|
name: '物流管理',
|
||||||
path: '/logistics',
|
path: '/logistics',
|
||||||
access: 'canSeeLogistics',
|
|
||||||
routes: [
|
routes: [
|
||||||
{
|
{
|
||||||
name: '服务商',
|
name: '服务商',
|
||||||
|
|
@ -153,27 +148,30 @@ export default defineConfig({
|
||||||
{
|
{
|
||||||
name: '数据统计',
|
name: '数据统计',
|
||||||
path: '/statistics',
|
path: '/statistics',
|
||||||
access: 'canSeeStatistics',
|
|
||||||
routes: [
|
routes: [
|
||||||
{
|
{
|
||||||
name: '销售统计',
|
name: '销售统计',
|
||||||
path: '/statistics/sales',
|
path: '/statistics/sales',
|
||||||
component: './Statistics/Sales',
|
component: './Statistics/Sales',
|
||||||
|
access: 'canSeeSuper',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '订单统计',
|
name: '订单统计',
|
||||||
path: '/statistics/order',
|
path: '/statistics/order',
|
||||||
component: './Statistics/Order',
|
component: './Statistics/Order',
|
||||||
|
access: 'canSeeSuper',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '订单来源',
|
name: '订单来源',
|
||||||
path: '/statistics/orderSource',
|
path: '/statistics/orderSource',
|
||||||
component: './Statistics/OrderSource',
|
component: './Statistics/OrderSource',
|
||||||
|
access: 'canSeeSuper',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '客户统计',
|
name: '客户统计',
|
||||||
path: '/statistics/customer',
|
path: '/statistics/customer',
|
||||||
component: './Statistics/Customer',
|
component: './Statistics/Customer',
|
||||||
|
access: 'canSeeSuper',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: '库存预测',
|
name: '库存预测',
|
||||||
|
|
|
||||||
|
|
@ -1,22 +1,9 @@
|
||||||
export default (initialState: any) => {
|
export default (initialState: any) => {
|
||||||
const isSuper = initialState?.user?.isSuper ?? false;
|
const canSeeSuper = initialState?.user?.isSuper;
|
||||||
const isAdmin = initialState?.user?.Admin ?? false;
|
const canSeeAdmin =
|
||||||
const canSeeOrganiza = (isSuper || isAdmin) || (initialState?.user?.permissions?.includes('organiza') ?? false);
|
initialState?.user?.isSuper || initialState?.user?.isAdmin;
|
||||||
const canSeeProduct = (isSuper || isAdmin) || (initialState?.user?.permissions?.includes('product') ?? false);
|
|
||||||
const canSeeStock = (isSuper || isAdmin) || (initialState?.user?.permissions?.includes('stock') ?? false);
|
|
||||||
const canSeeOrder = (isSuper || isAdmin) ||
|
|
||||||
((initialState?.user?.permissions?.includes('order') ?? false) || (initialState?.user?.permissions?.includes('order-10-days') ?? false));
|
|
||||||
const canSeeCustomer = (isSuper || isAdmin) || (initialState?.user?.permissions?.includes('customer') ?? false);
|
|
||||||
const canSeeLogistics = (isSuper || isAdmin) || (initialState?.user?.permissions?.includes('logistics') ?? false);
|
|
||||||
const canSeeStatistics = (isSuper || isAdmin) || (initialState?.user?.permissions?.includes('statistics') ?? false);
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
canSeeOrganiza,
|
canSeeSuper,
|
||||||
canSeeProduct,
|
canSeeAdmin,
|
||||||
canSeeStock,
|
|
||||||
canSeeOrder,
|
|
||||||
canSeeCustomer,
|
|
||||||
canSeeLogistics,
|
|
||||||
canSeeStatistics,
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ const Page = () => {
|
||||||
try {
|
try {
|
||||||
const { data, success, code, message: msg } = await usercontrollerLogin({...values, deviceId});
|
const { data, success, code, message: msg } = await usercontrollerLogin({...values, deviceId});
|
||||||
if (success) {
|
if (success) {
|
||||||
|
|
||||||
message.success('登录成功');
|
message.success('登录成功');
|
||||||
localStorage.setItem('token', data?.token as string);
|
localStorage.setItem('token', data?.token as string);
|
||||||
const { data: user } = await usercontrollerGetuser();
|
const { data: user } = await usercontrollerGetuser();
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { logisticscontrollerGetlist, logisticscontrollerGetshipmentlabel,
|
import { logisticscontrollerGetlist, logisticscontrollerGetShipmentLabel,
|
||||||
logisticscontrollerDeleteshipment,
|
logisticscontrollerDeleteShipment,
|
||||||
logisticscontrollerUpdateshipmentstate
|
logisticscontrollerGetShipmentState
|
||||||
} from '@/servers/api/logistics';
|
} from '@/servers/api/logistics';
|
||||||
import { stockcontrollerGetallstockpoints } from '@/servers/api/stock';
|
import { stockcontrollerGetallstockpoints } from '@/servers/api/stock';
|
||||||
import { formatUniuniShipmentState } from '@/utils/format';
|
import { formatUniuniShipmentState } from '@/utils/format';
|
||||||
|
|
@ -106,7 +106,7 @@ const ListPage: React.FC = () => {
|
||||||
disabled={isLoading}
|
disabled={isLoading}
|
||||||
onClick={async () => {
|
onClick={async () => {
|
||||||
setIsLoading(true);
|
setIsLoading(true);
|
||||||
const { data } = await logisticscontrollerGetshipmentlabel(record.id);
|
const { data } = await logisticscontrollerGetShipmentLabel(record.id);
|
||||||
const content = data.content;
|
const content = data.content;
|
||||||
printPDF([content]);
|
printPDF([content]);
|
||||||
setIsLoading(false);
|
setIsLoading(false);
|
||||||
|
|
@ -120,7 +120,7 @@ const ListPage: React.FC = () => {
|
||||||
disabled={isLoading}
|
disabled={isLoading}
|
||||||
onClick={async () => {
|
onClick={async () => {
|
||||||
setIsLoading(true);
|
setIsLoading(true);
|
||||||
const res = await logisticscontrollerUpdateshipmentstate({shipmentId:record.id});
|
const res = await logisticscontrollerGetShipmentState(record.id);
|
||||||
console.log('res', res);
|
console.log('res', res);
|
||||||
|
|
||||||
setIsLoading(false);
|
setIsLoading(false);
|
||||||
|
|
@ -137,7 +137,7 @@ const ListPage: React.FC = () => {
|
||||||
try {
|
try {
|
||||||
setIsLoading(true);
|
setIsLoading(true);
|
||||||
const { success, message: errMsg } =
|
const { success, message: errMsg } =
|
||||||
await logisticscontrollerDeleteshipment(record.id);
|
await logisticscontrollerDeleteShipment(record.id);
|
||||||
if (!success) {
|
if (!success) {
|
||||||
throw new Error(errMsg);
|
throw new Error(errMsg);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,14 @@
|
||||||
import styles from '../../../style/order-list.css';
|
|
||||||
|
|
||||||
import InternationalPhoneInput from '@/components/InternationalPhoneInput';
|
import InternationalPhoneInput from '@/components/InternationalPhoneInput';
|
||||||
import { HistoryOrder } from '@/pages/Statistics/Order';
|
import { HistoryOrder } from '@/pages/Statistics/Order';
|
||||||
import { ORDER_STATUS_ENUM } from '@/constants';
|
import { ORDER_STATUS_ENUM } from '@/constants';
|
||||||
import {
|
import {
|
||||||
logisticscontrollerCreateshipment,
|
logisticscontrollerCreateshipment,
|
||||||
logisticscontrollerGetshipmentfee,
|
logisticscontrollerGetShipmentFee,
|
||||||
logisticscontrollerDelshipment,
|
logisticscontrollerDelshipment,
|
||||||
logisticscontrollerGetpaymentmethods,
|
logisticscontrollerGetpaymentmethods,
|
||||||
logisticscontrollerGetratelist,
|
logisticscontrollerGetratelist,
|
||||||
logisticscontrollerGetshippingaddresslist,
|
logisticscontrollerGetshippingaddresslist,
|
||||||
// logisticscontrollerGetshipmentlabel,
|
logisticscontrollerGetShipmentLabel,
|
||||||
} from '@/servers/api/logistics';
|
} from '@/servers/api/logistics';
|
||||||
import {
|
import {
|
||||||
ordercontrollerCancelorder,
|
ordercontrollerCancelorder,
|
||||||
|
|
@ -24,7 +22,7 @@ import {
|
||||||
ordercontrollerRefundorder,
|
ordercontrollerRefundorder,
|
||||||
ordercontrollerSyncorder,
|
ordercontrollerSyncorder,
|
||||||
ordercontrollerSyncorderbyid,
|
ordercontrollerSyncorderbyid,
|
||||||
ordercontrollerUpdateorderitems,
|
ordercontrollerUpdateOrderItems,
|
||||||
} from '@/servers/api/order';
|
} from '@/servers/api/order';
|
||||||
import { productcontrollerSearchproducts } from '@/servers/api/product';
|
import { productcontrollerSearchproducts } from '@/servers/api/product';
|
||||||
import { sitecontrollerAll } from '@/servers/api/site';
|
import { sitecontrollerAll } from '@/servers/api/site';
|
||||||
|
|
@ -86,7 +84,6 @@ const ListPage: React.FC = () => {
|
||||||
const actionRef = useRef<ActionType>();
|
const actionRef = useRef<ActionType>();
|
||||||
const [activeKey, setActiveKey] = useState<string>('all');
|
const [activeKey, setActiveKey] = useState<string>('all');
|
||||||
const [count, setCount] = useState<any[]>([]);
|
const [count, setCount] = useState<any[]>([]);
|
||||||
const [activeLine, setActiveLine] = useState<number>(-1);
|
|
||||||
const tabs: TabsProps['items'] = useMemo(() => {
|
const tabs: TabsProps['items'] = useMemo(() => {
|
||||||
const total = count.reduce((acc, cur) => acc + Number(cur.count), 0);
|
const total = count.reduce((acc, cur) => acc + Number(cur.count), 0);
|
||||||
const tabs = [
|
const tabs = [
|
||||||
|
|
@ -268,7 +265,7 @@ const ListPage: React.FC = () => {
|
||||||
record.orderStatus,
|
record.orderStatus,
|
||||||
) ? (
|
) ? (
|
||||||
<>
|
<>
|
||||||
<Shipping id={record.id as number} tableRef={actionRef} setActiveLine={setActiveLine}/>
|
<Shipping id={record.id as number} tableRef={actionRef} />
|
||||||
<Divider type="vertical" />
|
<Divider type="vertical" />
|
||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
|
|
@ -279,7 +276,6 @@ const ListPage: React.FC = () => {
|
||||||
record={record}
|
record={record}
|
||||||
tableRef={actionRef}
|
tableRef={actionRef}
|
||||||
orderId={record.id as number}
|
orderId={record.id as number}
|
||||||
setActiveLine={setActiveLine}
|
|
||||||
/>
|
/>
|
||||||
<Divider type="vertical" />
|
<Divider type="vertical" />
|
||||||
<Dropdown
|
<Dropdown
|
||||||
|
|
@ -397,9 +393,6 @@ const ListPage: React.FC = () => {
|
||||||
scroll={{ x: 'max-content' }}
|
scroll={{ x: 'max-content' }}
|
||||||
actionRef={actionRef}
|
actionRef={actionRef}
|
||||||
rowKey="id"
|
rowKey="id"
|
||||||
rowClassName={(record) => {
|
|
||||||
return record.id === activeLine ? styles['selected-line-order-protable']: '';
|
|
||||||
}}
|
|
||||||
toolBarRender={() => [
|
toolBarRender={() => [
|
||||||
<CreateOrder tableRef={actionRef} />,
|
<CreateOrder tableRef={actionRef} />,
|
||||||
<SyncForm tableRef={actionRef} />,
|
<SyncForm tableRef={actionRef} />,
|
||||||
|
|
@ -487,8 +480,7 @@ const Detail: React.FC<{
|
||||||
tableRef: React.MutableRefObject<ActionType | undefined>;
|
tableRef: React.MutableRefObject<ActionType | undefined>;
|
||||||
orderId: number;
|
orderId: number;
|
||||||
record: API.Order;
|
record: API.Order;
|
||||||
setActiveLine: Function
|
}> = ({ tableRef, orderId, record }) => {
|
||||||
}> = ({ tableRef, orderId, record, setActiveLine }) => {
|
|
||||||
const [visiable, setVisiable] = useState(false);
|
const [visiable, setVisiable] = useState(false);
|
||||||
const { message } = App.useApp();
|
const { message } = App.useApp();
|
||||||
const ref = useRef<ActionType>();
|
const ref = useRef<ActionType>();
|
||||||
|
|
@ -499,7 +491,6 @@ const Detail: React.FC<{
|
||||||
orderId,
|
orderId,
|
||||||
});
|
});
|
||||||
if (!success || !data) return { data: {} };
|
if (!success || !data) return { data: {} };
|
||||||
// 合并订单中相同的sku,只显示一次记录总数
|
|
||||||
data.sales = data.sales?.reduce(
|
data.sales = data.sales?.reduce(
|
||||||
(acc: API.OrderSale[], cur: API.OrderSale) => {
|
(acc: API.OrderSale[], cur: API.OrderSale) => {
|
||||||
let idx = acc.findIndex((v: any) => v.productId === cur.productId);
|
let idx = acc.findIndex((v: any) => v.productId === cur.productId);
|
||||||
|
|
@ -519,10 +510,7 @@ const Detail: React.FC<{
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<Button key="detail" type="primary" onClick={() => {
|
<Button key="detail" type="primary" onClick={() => setVisiable(true)}>
|
||||||
setVisiable(true);
|
|
||||||
setActiveLine(record.id);
|
|
||||||
}}>
|
|
||||||
<FileDoneOutlined />
|
<FileDoneOutlined />
|
||||||
详情
|
详情
|
||||||
</Button>
|
</Button>
|
||||||
|
|
@ -1061,8 +1049,7 @@ const Shipping: React.FC<{
|
||||||
tableRef?: React.MutableRefObject<ActionType | undefined>;
|
tableRef?: React.MutableRefObject<ActionType | undefined>;
|
||||||
descRef?: React.MutableRefObject<ActionType | undefined>;
|
descRef?: React.MutableRefObject<ActionType | undefined>;
|
||||||
reShipping?: boolean;
|
reShipping?: boolean;
|
||||||
setActiveLine: Function;
|
}> = ({ id, tableRef, descRef, reShipping = false }) => {
|
||||||
}> = ({ id, tableRef, descRef, reShipping = false, setActiveLine }) => {
|
|
||||||
const [options, setOptions] = useState<any[]>([]);
|
const [options, setOptions] = useState<any[]>([]);
|
||||||
const formRef = useRef<ProFormInstance>();
|
const formRef = useRef<ProFormInstance>();
|
||||||
|
|
||||||
|
|
@ -1084,11 +1071,7 @@ const Shipping: React.FC<{
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
trigger={
|
trigger={
|
||||||
<Button type="primary"
|
<Button type="primary">
|
||||||
onClick={() => {
|
|
||||||
setActiveLine(id);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<CodeSandboxOutlined />
|
<CodeSandboxOutlined />
|
||||||
创建运单
|
创建运单
|
||||||
</Button>
|
</Button>
|
||||||
|
|
@ -1802,32 +1785,13 @@ const Shipping: React.FC<{
|
||||||
details.destination.phone_number.phone;
|
details.destination.phone_number.phone;
|
||||||
details.origin.phone_number.number = details.origin.phone_number.phone;
|
details.origin.phone_number.number = details.origin.phone_number.phone;
|
||||||
const res =
|
const res =
|
||||||
await logisticscontrollerGetshipmentfee(
|
await logisticscontrollerGetShipmentFee(
|
||||||
{
|
{
|
||||||
stockPointId: data.stockPointId,
|
details,
|
||||||
|
...data
|
||||||
sender: details.origin.contact_name,
|
|
||||||
startPhone: details.origin.phone_number,
|
|
||||||
startPostalCode: details.origin.address.postal_code.replace(/\s/g, ''),
|
|
||||||
pickupAddress: details.origin.address.address_line_1,
|
|
||||||
shipperCountryCode: details.origin.address.country,
|
|
||||||
receiver: details.destination.contact_name,
|
|
||||||
city: details.destination.address.city,
|
|
||||||
province: details.destination.address.region,
|
|
||||||
country: details.destination.address.country,
|
|
||||||
postalCode: details.destination.address.postal_code.replace(/\s/g, ''),
|
|
||||||
deliveryAddress: details.destination.address.address_line_1,
|
|
||||||
receiverPhone: details.destination.phone_number.number,
|
|
||||||
receiverEmail: details.destination.email_addresses,
|
|
||||||
length: details.packaging_properties.packages[0].measurements.cuboid.l,
|
|
||||||
width: details.packaging_properties.packages[0].measurements.cuboid.w,
|
|
||||||
height: details.packaging_properties.packages[0].measurements.cuboid.h,
|
|
||||||
dimensionUom: details.packaging_properties.packages[0].measurements.cuboid.unit,
|
|
||||||
weight: details.packaging_properties.packages[0].measurements.weight.value,
|
|
||||||
weightUom: details.packaging_properties.packages[0].measurements.weight.unit,
|
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
if (!res?.success) throw new Error(res?.message);
|
if (!res?.success) throw new Error(res?.errMsg);
|
||||||
const fee = res.data;
|
const fee = res.data;
|
||||||
setShipmentFee(fee);
|
setShipmentFee(fee);
|
||||||
details.origin.email_addresses = originEmail;
|
details.origin.email_addresses = originEmail;
|
||||||
|
|
@ -1836,7 +1800,6 @@ const Shipping: React.FC<{
|
||||||
...details,
|
...details,
|
||||||
shipmentFee: fee
|
shipmentFee: fee
|
||||||
});
|
});
|
||||||
message.success('获取运费成功');
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
message.error(error?.message || '获取运费失败');
|
message.error(error?.message || '获取运费失败');
|
||||||
}
|
}
|
||||||
|
|
@ -1860,6 +1823,7 @@ const SalesChange: React.FC<{
|
||||||
detailRef?: React.MutableRefObject<ActionType | undefined>;
|
detailRef?: React.MutableRefObject<ActionType | undefined>;
|
||||||
reShipping?: boolean;
|
reShipping?: boolean;
|
||||||
}> = ({ id, detailRef }) => {
|
}> = ({ id, detailRef }) => {
|
||||||
|
const [options, setOptions] = useState<any[]>([]);
|
||||||
const formRef = useRef<ProFormInstance>();
|
const formRef = useRef<ProFormInstance>();
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1908,7 +1872,7 @@ const SalesChange: React.FC<{
|
||||||
}}
|
}}
|
||||||
onFinish={async (formData: any) => {
|
onFinish={async (formData: any) => {
|
||||||
const { sales } = formData;
|
const { sales } = formData;
|
||||||
const res = await ordercontrollerUpdateorderitems({orderId:id}, sales);
|
const res = await ordercontrollerUpdateOrderItems(id, sales);
|
||||||
if (!res.success) {
|
if (!res.success) {
|
||||||
message.error(`更新货物信息失败: ${res.message}`);
|
message.error(`更新货物信息失败: ${res.message}`);
|
||||||
return false;
|
return false;
|
||||||
|
|
@ -1924,8 +1888,9 @@ const SalesChange: React.FC<{
|
||||||
>
|
>
|
||||||
<ProForm.Group>
|
<ProForm.Group>
|
||||||
<ProFormSelect
|
<ProFormSelect
|
||||||
params={{ }}
|
params={{ options }}
|
||||||
request={async ({ keyWords }) => {
|
request={async ({ keyWords, options }) => {
|
||||||
|
if (!keyWords || keyWords.length < 2) return options;
|
||||||
try {
|
try {
|
||||||
const { data } = await productcontrollerSearchproducts({
|
const { data } = await productcontrollerSearchproducts({
|
||||||
name: keyWords,
|
name: keyWords,
|
||||||
|
|
@ -1936,10 +1901,10 @@ const SalesChange: React.FC<{
|
||||||
label: `${item.name} - ${item.nameCn}`,
|
label: `${item.name} - ${item.nameCn}`,
|
||||||
value: item?.sku,
|
value: item?.sku,
|
||||||
};
|
};
|
||||||
})
|
}) || options
|
||||||
);
|
);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
return [];
|
return options;
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
name="sku"
|
name="sku"
|
||||||
|
|
|
||||||
|
|
@ -35,12 +35,6 @@ const ListPage: React.FC = () => {
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
title: '排除套装',
|
|
||||||
dataIndex: 'exceptPackage',
|
|
||||||
valueType: 'switch',
|
|
||||||
hideInTable: true,
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
title: '产品名称',
|
title: '产品名称',
|
||||||
dataIndex: 'name',
|
dataIndex: 'name',
|
||||||
|
|
@ -58,12 +52,12 @@ const ListPage: React.FC = () => {
|
||||||
},
|
},
|
||||||
hideInTable: true,
|
hideInTable: true,
|
||||||
},
|
},
|
||||||
// {
|
{
|
||||||
// title: '分类',
|
title: '分类',
|
||||||
// dataIndex: 'categoryName',
|
dataIndex: 'categoryName',
|
||||||
// hideInSearch: true,
|
hideInSearch: true,
|
||||||
// hideInTable: isSource,
|
hideInTable: isSource,
|
||||||
// },
|
},
|
||||||
{
|
{
|
||||||
title: '数量',
|
title: '数量',
|
||||||
dataIndex: 'totalQuantity',
|
dataIndex: 'totalQuantity',
|
||||||
|
|
|
||||||
|
|
@ -525,7 +525,6 @@ const DetailForm: React.FC<{
|
||||||
id: number;
|
id: number;
|
||||||
};
|
};
|
||||||
}> = ({ tableRef, values }) => {
|
}> = ({ tableRef, values }) => {
|
||||||
const detailsActionRef = useRef<ActionType>();
|
|
||||||
const { message } = App.useApp();
|
const { message } = App.useApp();
|
||||||
const [form] = Form.useForm();
|
const [form] = Form.useForm();
|
||||||
const initialValues = {
|
const initialValues = {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import {
|
import {
|
||||||
logisticscontrollerGetorderlist,
|
logisticscontrollerGetlistbytrackingid,
|
||||||
logisticscontrollerGetlistbyorderid
|
logisticscontrollerGettrackingnumber,
|
||||||
} from '@/servers/api/logistics';
|
} from '@/servers/api/logistics';
|
||||||
import { SearchOutlined } from '@ant-design/icons';
|
import { SearchOutlined } from '@ant-design/icons';
|
||||||
import { PageContainer, ProFormSelect } from '@ant-design/pro-components';
|
import { PageContainer, ProFormSelect } from '@ant-design/pro-components';
|
||||||
|
|
@ -8,7 +8,7 @@ import { useState } from 'react';
|
||||||
|
|
||||||
const TrackPage: React.FC = () => {
|
const TrackPage: React.FC = () => {
|
||||||
const [id, setId] = useState<string>();
|
const [id, setId] = useState<string>();
|
||||||
const [data, setData] = useState({});
|
const [data, setData] = useState([]);
|
||||||
return (
|
return (
|
||||||
<PageContainer>
|
<PageContainer>
|
||||||
<ProFormSelect
|
<ProFormSelect
|
||||||
|
|
@ -17,7 +17,7 @@ const TrackPage: React.FC = () => {
|
||||||
request={async ({ keyWords }) => {
|
request={async ({ keyWords }) => {
|
||||||
if (!keyWords || keyWords.length < 3) return [];
|
if (!keyWords || keyWords.length < 3) return [];
|
||||||
const { data: trackList } =
|
const { data: trackList } =
|
||||||
await logisticscontrollerGetorderlist({ number: keyWords });
|
await logisticscontrollerGettrackingnumber({ number: keyWords });
|
||||||
return trackList?.map((v) => {
|
return trackList?.map((v) => {
|
||||||
return {
|
return {
|
||||||
label: v.siteName + ' ' + v.externalOrderId,
|
label: v.siteName + ' ' + v.externalOrderId,
|
||||||
|
|
@ -29,9 +29,7 @@ const TrackPage: React.FC = () => {
|
||||||
prefix: '订单号',
|
prefix: '订单号',
|
||||||
onChange(value: string) {
|
onChange(value: string) {
|
||||||
setId(value);
|
setId(value);
|
||||||
setData({})
|
|
||||||
},
|
},
|
||||||
placeholder: '请输入订单号',
|
|
||||||
allowClear: false,
|
allowClear: false,
|
||||||
suffixIcon: (
|
suffixIcon: (
|
||||||
<SearchOutlined
|
<SearchOutlined
|
||||||
|
|
@ -39,8 +37,8 @@ const TrackPage: React.FC = () => {
|
||||||
if (!id) {
|
if (!id) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const { data } = await logisticscontrollerGetlistbyorderid({
|
const { data } = await logisticscontrollerGetlistbytrackingid({
|
||||||
id,
|
shipment_id: id,
|
||||||
});
|
});
|
||||||
setData(data);
|
setData(data);
|
||||||
}}
|
}}
|
||||||
|
|
@ -48,32 +46,22 @@ const TrackPage: React.FC = () => {
|
||||||
),
|
),
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
{
|
|
||||||
data?.item ?
|
|
||||||
<div>
|
<div>
|
||||||
|
{data.map((item) => (
|
||||||
<div>
|
<div>
|
||||||
<h4>原订单内容</h4>
|
<h4>
|
||||||
{data?.item?.map((item) => (
|
|
||||||
<div style={{ paddingLeft: 20, color: 'blue' }}>
|
|
||||||
{item.name} * {item.quantity}
|
{item.name} * {item.quantity}
|
||||||
|
</h4>
|
||||||
|
<div style={{ paddingLeft: 20, color: 'blue' }}>
|
||||||
|
{item.constitution.map((v) => (
|
||||||
|
<div>
|
||||||
|
{v.name} * {v.quantity * item.quantity}
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
</div> : <></>
|
|
||||||
}
|
|
||||||
{
|
|
||||||
data?.saleItem ?
|
|
||||||
<div>
|
|
||||||
<div>
|
|
||||||
<h4>订单内容</h4>
|
|
||||||
{data?.saleItem?.map((item) => (
|
|
||||||
<div style={{ paddingLeft: 20, color: 'blue' }}>
|
|
||||||
{item.name} * {item.quantity}
|
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
</div> : <></>
|
|
||||||
}
|
|
||||||
</PageContainer>
|
</PageContainer>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,61 @@ export async function logisticscontrollerCreateshipment(
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 此处后端没有提供注释 POST /logistics/getShipmentFee */
|
||||||
|
export async function logisticscontrollerGetShipmentFee(
|
||||||
|
body: API.ShipmentBookDTO,
|
||||||
|
options?: { [key: string]: any },
|
||||||
|
) {
|
||||||
|
return request<API.BooleanRes>(`/logistics/getShipmentFee`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
data: body,
|
||||||
|
...(options || {}),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** 此处后端没有提供注释 POST /logistics/getShipmentLabel/${param0} */
|
||||||
|
export async function logisticscontrollerGetShipmentLabel(
|
||||||
|
shipmentId: number
|
||||||
|
) {
|
||||||
|
return request<API.BooleanRes>(`/logistics/getShipmentLabel/${shipmentId}`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 此处后端没有提供注释 POST /logistics/updateState/${param0}**/
|
||||||
|
export async function logisticscontrollerGetShipmentState(
|
||||||
|
shipmentId: number
|
||||||
|
) {
|
||||||
|
return request<API.BooleanRes>(`/logistics/updateState/${shipmentId}`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 此处后端没有提供注释 DEL /logistics/deleteShipment/${param0} */
|
||||||
|
export async function logisticscontrollerDeleteShipment(
|
||||||
|
shipmentId: number
|
||||||
|
) {
|
||||||
|
return request<API.BooleanRes>(`/logistics/deleteShipment/${shipmentId}`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** 此处后端没有提供注释 POST /logistics/createShippingAddress */
|
/** 此处后端没有提供注释 POST /logistics/createShippingAddress */
|
||||||
export async function logisticscontrollerCreateshippingaddress(
|
export async function logisticscontrollerCreateshippingaddress(
|
||||||
body: API.ShippingAddress,
|
body: API.ShippingAddress,
|
||||||
|
|
@ -36,20 +91,6 @@ export async function logisticscontrollerCreateshippingaddress(
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 此处后端没有提供注释 POST /logistics/deleteShipment/${param0} */
|
|
||||||
export async function logisticscontrollerDeleteshipment(
|
|
||||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
|
||||||
params: API.logisticscontrollerDeleteshipmentParams,
|
|
||||||
options?: { [key: string]: any },
|
|
||||||
) {
|
|
||||||
const { id: param0, ...queryParams } = params;
|
|
||||||
return request<API.BooleanRes>(`/logistics/deleteShipment/${param0}`, {
|
|
||||||
method: 'POST',
|
|
||||||
params: { ...queryParams },
|
|
||||||
...(options || {}),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 此处后端没有提供注释 DELETE /logistics/delShippingAddress/${param0} */
|
/** 此处后端没有提供注释 DELETE /logistics/delShippingAddress/${param0} */
|
||||||
export async function logisticscontrollerDelshippingaddress(
|
export async function logisticscontrollerDelshippingaddress(
|
||||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||||
|
|
@ -64,28 +105,13 @@ export async function logisticscontrollerDelshippingaddress(
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 此处后端没有提供注释 POST /logistics/getListByOrderId */
|
/** 此处后端没有提供注释 POST /logistics/getListByTrackingId */
|
||||||
export async function logisticscontrollerGetlistbyorderid(
|
export async function logisticscontrollerGetlistbytrackingid(
|
||||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||||
params: API.logisticscontrollerGetlistbyorderidParams,
|
params: API.logisticscontrollerGetlistbytrackingidParams,
|
||||||
options?: { [key: string]: any },
|
options?: { [key: string]: any },
|
||||||
) {
|
) {
|
||||||
return request<any>('/logistics/getListByOrderId', {
|
return request<any>('/logistics/getListByTrackingId', {
|
||||||
method: 'POST',
|
|
||||||
params: {
|
|
||||||
...params,
|
|
||||||
},
|
|
||||||
...(options || {}),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 此处后端没有提供注释 POST /logistics/getOrderList */
|
|
||||||
export async function logisticscontrollerGetorderlist(
|
|
||||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
|
||||||
params: API.logisticscontrollerGetorderlistParams,
|
|
||||||
options?: { [key: string]: any },
|
|
||||||
) {
|
|
||||||
return request<any>('/logistics/getOrderList', {
|
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
params: {
|
params: {
|
||||||
...params,
|
...params,
|
||||||
|
|
@ -134,35 +160,6 @@ export async function logisticscontrollerGetservicelist(
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 此处后端没有提供注释 POST /logistics/getShipmentFee */
|
|
||||||
export async function logisticscontrollerGetshipmentfee(
|
|
||||||
body: API.ShipmentFeeBookDTO,
|
|
||||||
options?: { [key: string]: any },
|
|
||||||
) {
|
|
||||||
return request<API.BooleanRes>('/logistics/getShipmentFee', {
|
|
||||||
method: 'POST',
|
|
||||||
headers: {
|
|
||||||
'Content-Type': 'application/json',
|
|
||||||
},
|
|
||||||
data: body,
|
|
||||||
...(options || {}),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 此处后端没有提供注释 POST /logistics/getShipmentLabel/${param0} */
|
|
||||||
export async function logisticscontrollerGetshipmentlabel(
|
|
||||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
|
||||||
params: API.logisticscontrollerGetshipmentlabelParams,
|
|
||||||
options?: { [key: string]: any },
|
|
||||||
) {
|
|
||||||
const { shipmentId: param0, ...queryParams } = params;
|
|
||||||
return request<API.BooleanRes>(`/logistics/getShipmentLabel/${param0}`, {
|
|
||||||
method: 'POST',
|
|
||||||
params: { ...queryParams },
|
|
||||||
...(options || {}),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 此处后端没有提供注释 GET /logistics/getShippingAddressList */
|
/** 此处后端没有提供注释 GET /logistics/getShippingAddressList */
|
||||||
export async function logisticscontrollerGetshippingaddresslist(options?: {
|
export async function logisticscontrollerGetshippingaddresslist(options?: {
|
||||||
[key: string]: any;
|
[key: string]: any;
|
||||||
|
|
@ -176,6 +173,21 @@ export async function logisticscontrollerGetshippingaddresslist(options?: {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 此处后端没有提供注释 POST /logistics/getTrackingNumber */
|
||||||
|
export async function logisticscontrollerGettrackingnumber(
|
||||||
|
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
||||||
|
params: API.logisticscontrollerGettrackingnumberParams,
|
||||||
|
options?: { [key: string]: any },
|
||||||
|
) {
|
||||||
|
return request<any>('/logistics/getTrackingNumber', {
|
||||||
|
method: 'POST',
|
||||||
|
params: {
|
||||||
|
...params,
|
||||||
|
},
|
||||||
|
...(options || {}),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/** 此处后端没有提供注释 GET /logistics/list */
|
/** 此处后端没有提供注释 GET /logistics/list */
|
||||||
export async function logisticscontrollerGetlist(options?: {
|
export async function logisticscontrollerGetlist(options?: {
|
||||||
[key: string]: any;
|
[key: string]: any;
|
||||||
|
|
@ -243,17 +255,3 @@ export async function logisticscontrollerUpdateshippingaddress(
|
||||||
...(options || {}),
|
...(options || {}),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 此处后端没有提供注释 POST /logistics/updateState/${param0} */
|
|
||||||
export async function logisticscontrollerUpdateshipmentstate(
|
|
||||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
|
||||||
params: API.logisticscontrollerUpdateshipmentstateParams,
|
|
||||||
options?: { [key: string]: any },
|
|
||||||
) {
|
|
||||||
const { shipmentId: param0, ...queryParams } = params;
|
|
||||||
return request<any>(`/logistics/updateState/${param0}`, {
|
|
||||||
method: 'POST',
|
|
||||||
params: { ...queryParams },
|
|
||||||
...(options || {}),
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -210,19 +210,16 @@ export async function ordercontrollerSyncorderbyid(
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 此处后端没有提供注释 POST /order/updateOrderItems/${param0} */
|
/** 此处后端没有提供注释 POST /order/updateOrderItems/${param0} */
|
||||||
export async function ordercontrollerUpdateorderitems(
|
export async function ordercontrollerUpdateOrderItems(
|
||||||
// 叠加生成的Param类型 (非body参数swagger默认没有生成对象)
|
orderId: number,
|
||||||
params: API.ordercontrollerUpdateorderitemsParams,
|
body: API.ShipmentSkuDTO,
|
||||||
body: Record<string, any>,
|
|
||||||
options?: { [key: string]: any },
|
options?: { [key: string]: any },
|
||||||
) {
|
) {
|
||||||
const { orderId: param0, ...queryParams } = params;
|
return request<API.BooleanRes>(`/order/updateOrderItems/${orderId}`, {
|
||||||
return request<API.BooleanRes>(`/order/updateOrderItems/${param0}`, {
|
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'text/plain',
|
'Content-Type': 'application/json',
|
||||||
},
|
},
|
||||||
params: { ...queryParams },
|
|
||||||
data: body,
|
data: body,
|
||||||
...(options || {}),
|
...(options || {}),
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -168,19 +168,15 @@ declare namespace API {
|
||||||
};
|
};
|
||||||
|
|
||||||
type logisticscontrollerDelshipmentParams = {
|
type logisticscontrollerDelshipmentParams = {
|
||||||
id: number;
|
id: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
type logisticscontrollerDelshippingaddressParams = {
|
type logisticscontrollerDelshippingaddressParams = {
|
||||||
id: number;
|
id: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
type logisticscontrollerGetlistbyorderidParams = {
|
type logisticscontrollerGetlistbytrackingidParams = {
|
||||||
id?: number;
|
shipment_id?: string;
|
||||||
};
|
|
||||||
|
|
||||||
type logisticscontrollerGetorderlistParams = {
|
|
||||||
number?: string;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
type logisticscontrollerGetservicelistParams = {
|
type logisticscontrollerGetservicelistParams = {
|
||||||
|
|
@ -193,11 +189,11 @@ declare namespace API {
|
||||||
};
|
};
|
||||||
|
|
||||||
type logisticscontrollerGetshipmentlabelParams = {
|
type logisticscontrollerGetshipmentlabelParams = {
|
||||||
shipmentId: number;
|
shipmentId: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
type logisticscontrollerUpdateshipmentstateParams = {
|
type logisticscontrollerGettrackingnumberParams = {
|
||||||
shipmentId: number;
|
number?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
type logisticscontrollerUpdateshippingaddressParams = {
|
type logisticscontrollerUpdateshippingaddressParams = {
|
||||||
|
|
@ -220,7 +216,7 @@ declare namespace API {
|
||||||
externalOrderId?: string;
|
externalOrderId?: string;
|
||||||
status?: any;
|
status?: any;
|
||||||
orderStatus?: any;
|
orderStatus?: any;
|
||||||
shipmentId?: number;
|
shipmentId?: string;
|
||||||
currency?: string;
|
currency?: string;
|
||||||
currency_symbol?: string;
|
currency_symbol?: string;
|
||||||
prices_include_tax?: boolean;
|
prices_include_tax?: boolean;
|
||||||
|
|
@ -345,17 +341,13 @@ declare namespace API {
|
||||||
siteId: string;
|
siteId: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
type ordercontrollerUpdateorderitemsParams = {
|
|
||||||
orderId: number;
|
|
||||||
};
|
|
||||||
|
|
||||||
type OrderDetail = {
|
type OrderDetail = {
|
||||||
id?: number;
|
id?: number;
|
||||||
siteId?: string;
|
siteId?: string;
|
||||||
externalOrderId?: string;
|
externalOrderId?: string;
|
||||||
status?: any;
|
status?: any;
|
||||||
orderStatus?: any;
|
orderStatus?: any;
|
||||||
shipmentId?: number;
|
shipmentId?: string;
|
||||||
currency?: string;
|
currency?: string;
|
||||||
currency_symbol?: string;
|
currency_symbol?: string;
|
||||||
prices_include_tax?: boolean;
|
prices_include_tax?: boolean;
|
||||||
|
|
@ -501,11 +493,7 @@ declare namespace API {
|
||||||
/** sku */
|
/** sku */
|
||||||
sku?: string;
|
sku?: string;
|
||||||
quantity?: number;
|
quantity?: number;
|
||||||
exceptPackage?: boolean;
|
isPackage?: boolean;
|
||||||
isYoone?: boolean;
|
|
||||||
isZex?: boolean;
|
|
||||||
size?: number;
|
|
||||||
isYooneNew?: boolean;
|
|
||||||
/** 创建时间 */
|
/** 创建时间 */
|
||||||
createdAt?: string;
|
createdAt?: string;
|
||||||
/** 更新时间 */
|
/** 更新时间 */
|
||||||
|
|
@ -522,11 +510,7 @@ declare namespace API {
|
||||||
/** sku */
|
/** sku */
|
||||||
sku?: string;
|
sku?: string;
|
||||||
quantity?: number;
|
quantity?: number;
|
||||||
exceptPackage?: boolean;
|
isPackage?: boolean;
|
||||||
isYoone?: boolean;
|
|
||||||
isZex?: boolean;
|
|
||||||
size?: number;
|
|
||||||
isYooneNew?: boolean;
|
|
||||||
/** 创建时间 */
|
/** 创建时间 */
|
||||||
createdAt?: string;
|
createdAt?: string;
|
||||||
/** 更新时间 */
|
/** 更新时间 */
|
||||||
|
|
@ -1009,28 +993,9 @@ declare namespace API {
|
||||||
orderIds?: number[];
|
orderIds?: number[];
|
||||||
};
|
};
|
||||||
|
|
||||||
type ShipmentFeeBookDTO = {
|
type ShipmentSkuDTO = {
|
||||||
stockPointId?: number;
|
sales?: OrderSale[];
|
||||||
sender?: string;
|
}
|
||||||
startPhone?: string;
|
|
||||||
startPostalCode?: string;
|
|
||||||
pickupAddress?: string;
|
|
||||||
shipperCountryCode?: string;
|
|
||||||
receiver?: string;
|
|
||||||
city?: string;
|
|
||||||
province?: string;
|
|
||||||
country?: string;
|
|
||||||
postalCode?: string;
|
|
||||||
deliveryAddress?: string;
|
|
||||||
receiverPhone?: string;
|
|
||||||
receiverEmail?: string;
|
|
||||||
length?: number;
|
|
||||||
width?: number;
|
|
||||||
height?: number;
|
|
||||||
dimensionUom?: string;
|
|
||||||
weight?: number;
|
|
||||||
weightUom?: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
type ShippingAddress = {
|
type ShippingAddress = {
|
||||||
id?: number;
|
id?: number;
|
||||||
|
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
.selected-line-order-protable {
|
|
||||||
background-color: #add8e6;
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue