import { useEffect, useState } from 'react'; import { Button, Col, Form, Input, message, Modal, Radio, Row, Select } from 'antd'; import { useIntl } from 'umi'; import { RadioCard, UploadImage } from '@/components'; import { PlusOutlined } from '@ant-design/icons'; import { service } from '../index'; import SaveProductModal from './SaveProduct'; import type { DeviceItem } from '../typings'; interface SaveProps { visible: boolean; close: () => void; reload: () => void; data?: DeviceItem; model: 'add' | 'edit'; } const DefaultAccessType = 'gb28181-2016'; export default (props: SaveProps) => { const { visible, close, data } = props; const intl = useIntl(); const [form] = Form.useForm(); const [loading, setLoading] = useState(false); const [productVisible, setProductVisible] = useState(false); const [accessType, setAccessType] = useState(DefaultAccessType); const [productList, setProductList] = useState([]); const getProductList = async (productParams: any) => { const resp = await service.queryProductList(productParams); if (resp.status === 200) { setProductList(resp.result); } }; const queryProduct = async (value: string) => { getProductList({ terms: [ { column: 'accessProvider', value: value }, { column: 'state', value: 1 }, ], }); }; useEffect(() => { if (visible) { if (props.model === 'edit') { form.setFieldsValue(data); const _accessType = data?.provider || DefaultAccessType; setAccessType(_accessType); queryProduct(_accessType); } else { form.setFieldsValue({ provider: DefaultAccessType, }); queryProduct(DefaultAccessType); setAccessType(DefaultAccessType); } } }, [visible]); const handleSave = async () => { const formData = await form.validateFields(); if (formData) { const { provider, ...extraFormData } = formData; setLoading(true); const resp = provider === DefaultAccessType ? await service.saveGB(extraFormData) : await service.saveFixed(extraFormData); setLoading(false); if (resp.status === 200) { if (props.reload) { props.reload(); } form.resetFields(); close(); message.success('操作成功'); } else { message.error('操作失败'); } } }; const intlFormat = ( id: string, defaultMessage: string, paramsID?: string, paramsMessage?: string, ) => { const paramsObj: Record = {}; if (paramsID) { const paramsMsg = intl.formatMessage({ id: paramsID, defaultMessage: paramsMessage, }); paramsObj.name = paramsMsg; } return intl.formatMessage( { id, defaultMessage, }, paramsObj, ); }; console.log(productList); return ( <> { form.resetFields(); close(); }} width={610} title={intl.formatMessage({ id: `pages.data.option.${props.model || 'add'}`, defaultMessage: '新增', })} confirmLoading={loading} onOk={handleSave} >
{ setAccessType(key); queryProduct(key); }} disabled={props.model === 'edit'} options={[ { label: 'GB/T28181', value: DefaultAccessType, }, { label: '固定地址', value: 'fixed-media', }, ]} /> )}
{ setProductVisible(false); }} reload={(productId: string, name: string) => { form.setFieldsValue({ productId }); productList.push({ id: productId, name, }); setProductList([...productList]); }} /> ); };