import InternationalPhoneInput from '@/components/InternationalPhoneInput'; import { logisticscontrollerCreateshippingaddress, logisticscontrollerDelshippingaddress, logisticscontrollerGetshippingaddresslist, logisticscontrollerUpdateshippingaddress, } from '@/servers/api/logistics'; import { stockcontrollerGetallstockpoints } from '@/servers/api/stock'; import { EditOutlined, PlusOutlined } from '@ant-design/icons'; import { ActionType, DrawerForm, PageContainer, ProColumns, ProForm, ProFormItem, ProFormSelect, ProFormText, ProTable, } from '@ant-design/pro-components'; import { App, Button, Divider, Popconfirm } from 'antd'; import { useRef } from 'react'; const ListPage: React.FC = () => { const actionRef = useRef(); const { message } = App.useApp(); const columns: ProColumns[] = [ { title: '仓库点', dataIndex: 'stockPointId', hideInSearch: true, valueType: 'select', request: async () => { const { data = [] } = await stockcontrollerGetallstockpoints(); return data.map((item) => ({ label: item.name, value: item.id, })); }, }, { title: '地区', dataIndex: ['address', 'region'], hideInSearch: true, }, { title: '城市', dataIndex: ['address', 'city'], hideInSearch: true, }, { title: '邮编', dataIndex: ['address', 'postal_code'], hideInSearch: true, }, { title: '详细地址', dataIndex: ['address', 'address_line_1'], hideInSearch: true, }, { title: '联系电话', render: (_, record) => `+${record.phone_number_extension} ${record.phone_number}`, hideInSearch: true, }, { title: '操作', dataIndex: 'option', valueType: 'option', render: (_, record) => ( <> { try { const { success, message: errMsg } = await logisticscontrollerDelshippingaddress({ id: record.id as number, }); if (!success) { throw new Error(errMsg); } actionRef.current?.reload(); } catch (error: any) { message.error(error.message); } }} > ), }, ]; return ( []} request={async () => { const { data, success } = await logisticscontrollerGetshippingaddresslist(); if (success) { return { data: data, }; } return { data: [], }; }} columns={columns} /> ); }; const region = { AB: 'Alberta', BC: 'British', MB: 'Manitoba', NB: 'New', NL: 'Newfoundland', NS: 'Nova', ON: 'Ontario', PE: 'Prince', QC: 'Quebec', SK: 'Saskatchewan', NT: 'Northwest', NU: 'Nunavut', YT: 'Yukon', // 美国州名 // AL: 'Alabama', // AK: 'Alaska', // AZ: 'Arizona', // AR: 'Arkansas', // CA: 'California', // CO: 'Colorado', // CT: 'Connecticut', // DE: 'Delaware', // FL: 'Florida', // GA: 'Georgia', // HI: 'Hawaii', // ID: 'Idaho', // IL: 'Illinois', // IN: 'Indiana', // IA: 'Iowa', // KS: 'Kansas', // KY: 'Kentucky', // LA: 'Louisiana', // ME: 'Maine', // MD: 'Maryland', // MA: 'Massachusetts', // MI: 'Michigan', // MN: 'Minnesota', // MS: 'Mississippi', // MO: 'Missouri', // MT: 'Montana', // NE: 'Nebraska', // NV: 'Nevada', // NH: 'New Hampshire', // NJ: 'New Jersey', // NM: 'New Mexico', // NY: 'New York', // NC: 'North Carolina', // ND: 'North Dakota', // OH: 'Ohio', // OK: 'Oklahoma', // OR: 'Oregon', // PA: 'Pennsylvania', // RI: 'Rhode Island', // SC: 'South Carolina', // SD: 'South Dakota', // TN: 'Tennessee', // TX: 'Texas', // UT: 'Utah', // VT: 'Vermont', // VA: 'Virginia', // WA: 'Washington', // WV: 'West Virginia', // WI: 'Wisconsin', // WY: 'Wyoming', }; const CreateForm: React.FC<{ tableRef: React.MutableRefObject; }> = ({ tableRef }) => { const { message } = App.useApp(); return ( 新建 } autoFocusFirstInput drawerProps={{ destroyOnHidden: true, }} onFinish={async (values) => { const { contact, ...params } = values; try { const { success, message: errMsg } = await logisticscontrollerCreateshippingaddress({ ...params, phone_number: contact?.phone, phone_number_extension: contact?.extension, phone_number_country: contact?.country, } as API.ShippingAddress); if (!success) { throw new Error(errMsg); } tableRef.current?.reload(); message.success('提交成功'); return true; } catch (error: any) { message.error(error.message); } }} > { const { data = [] } = await stockcontrollerGetallstockpoints(); return data.map((item) => ({ label: item.name, value: item.id, })); }} /> ); }; const UpdateForm: React.FC<{ tableRef: React.MutableRefObject; value: API.ShippingAddress; }> = ({ tableRef, value }) => { const { message } = App.useApp(); const { id, phone_number, phone_number_country, phone_number_extension, ...initialValue } = value; return ( 编辑 } autoFocusFirstInput drawerProps={{ destroyOnHidden: true, }} onFinish={async (values) => { const { contact, ...params } = values; try { const { success, message: errMsg } = await logisticscontrollerUpdateshippingaddress( { id: id as number }, { ...params, phone_number: contact?.phone, phone_number_extension: contact?.extension, phone_number_country: contact?.country, } as API.ShippingAddress, ); if (!success) { throw new Error(errMsg); } tableRef.current?.reload(); message.success('提交成功'); return true; } catch (error: any) { message.error(error.message); } }} initialValues={{ ...initialValue, contact: { phone: phone_number, extension: phone_number_extension, country: phone_number_country, }, }} > { const { data = [] } = await stockcontrollerGetallstockpoints(); return data.map((item) => ({ label: item.name, value: item.id, })); }} /> ); }; export default ListPage;