| New file |
| | |
| | | // 创建 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; |
| | |
| | | import { useNavigate } from 'react-router-dom'; |
| | | import { styled } from '@mui/material/styles'; |
| | | import request from '@/utils/request'; |
| | | import OrderCodeField from '../components/OrderCodeField'; |
| | | |
| | | const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ |
| | | '& .css-1vooibu-MuiSvgIcon-root': { |
| | |
| | | <NumberField source="locId" label="table.field.locItem.locId" />, |
| | | <TextField source="wareArea" label="table.field.locItem.wareArea" />, |
| | | <TextField source="locCode" label="table.field.locItem.locCode" />, |
| | | <NumberField source="orderId" label="table.field.locItem.orderId" />, |
| | | <OrderCodeField source="orderId" label="table.field.locItem.orderId" />, |
| | | <NumberField source="wkType$" label="table.field.locItem.wkType" />, |
| | | <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | <TextField source="platItemId" label="table.field.asnOrderItem.platItemId" />, |
| | |
| | | private String makTx; |
| | | // 规格 |
| | | private String spec; |
| | | private String specs; |
| | | // 型号 |
| | | private String model; |
| | | // 数量 |
| | |
| | | private String keeperId; |
| | | // 保管者名称 |
| | | private String keeperName; |
| | | |
| | | public void setSpec(String spec) { |
| | | this.spec = spec; |
| | | this.specs = spec; |
| | | } |
| | | } |
| | |
| | | map.put("platItemId", orderItem.getLineId()); |
| | | map.put("splrBatch", orderItem.getBatch()); |
| | | map.put("batch", orderItem.getBatch()); |
| | | map.put("spec", orderItem.getSpecs()); |
| | | map.put("model", orderItem.getModel()); |
| | | map.put("stockUnit", orderItem.getUnit()); |
| | | map.put("purUnit", orderItem.getUnit()); |
| | | |
| | | if (!asnOrderItemService.fieldsSave(map, loginUserId)) { |
| | | throw new CoolException("明细保存失败!!"); |