// 创建 OrderCodeField.jsx
|
import React, { useState, useEffect } from 'react';
|
import { TextField, useRecordContext, useNotify } from 'react-admin';
|
import request from '@/utils/request';
|
|
const OrderCodeField = (props) => {
|
const { source, label, ...rest } = props;
|
const record = useRecordContext();
|
const [orderCode, setOrderCode] = useState('');
|
const [loading, setLoading] = useState(false);
|
const notify = useNotify();
|
|
const orderId = record?.[source];
|
|
useEffect(() => {
|
if (orderId) {
|
fetchOrderCode(orderId);
|
}
|
}, [orderId]);
|
|
const fetchOrderCode = async (id) => {
|
if (!id) return;
|
|
setLoading(true);
|
try {
|
const { data: { code, data, msg } } = await request.get(`/asnOrder/${id}`);
|
if (code === 200 && data) {
|
setOrderCode(data.code || `订单 ${id}`);
|
} else {
|
setOrderCode(`订单 ${id}`);
|
if (code !== 200) {
|
notify(msg || '获取订单信息失败', { type: 'warning' });
|
}
|
}
|
} catch (error) {
|
console.error('获取订单信息失败:', error);
|
setOrderCode(`订单 ${id}`);
|
notify('网络错误,获取订单信息失败', { type: 'error' });
|
} finally {
|
setLoading(false);
|
}
|
};
|
|
if (!orderId) return null;
|
|
return (
|
<TextField
|
{...rest}
|
record={{ ...record, [source]: loading ? '加载中...' : orderCode }}
|
source={source}
|
label={label}
|
/>
|
);
|
};
|
|
OrderCodeField.defaultProps = {
|
addLabel: true,
|
};
|
|
export default OrderCodeField;
|