|  |  | 
 |  |  | import React, { useState, useRef, useEffect } from 'react'; | 
 |  |  | import { | 
 |  |  |     ProForm, | 
 |  |  |     ProFormDigit, | 
 |  |  |     ProFormText, | 
 |  |  |     ProFormSelect, | 
 |  |  |     ProFormDateTimePicker, | 
 |  |  |     ProFormTextArea, | 
 |  |  |     ProFormSlider, | 
 |  |  | } from '@ant-design/pro-components'; | 
 |  |  | import moment from 'moment'; | 
 |  |  | import { Col, Form, Modal, Row, Checkbox, Image, Tree, Drawer, Space, Button, Card, Divider } from 'antd'; | 
 |  |  | import { Col, Form, Input, Row, Checkbox, Slider, Select, Drawer, Space, Button, InputNumber, Card } from 'antd'; | 
 |  |  | import { FormattedMessage, useIntl, useModel } from '@umijs/max'; | 
 |  |  | import * as PIXI from 'pixi.js'; | 
 |  |  | import { | 
 |  |  |     BranchesOutlined, | 
 |  |  |     BorderOuterOutlined, | 
 |  |  | } from '@ant-design/icons'; | 
 |  |  | import { createStyles } from 'antd-style'; | 
 |  |  | import './index.css'; | 
 |  |  | import * as Utils from '../utils' | 
 |  |  | import Http from '@/utils/http'; | 
 |  |  | import MapSettings from './mapSettings'; | 
 |  |  | import ConfigSettings from './configSettings'; | 
 |  |  |  | 
 |  |  | const useStyles = createStyles(({ token, css }) => { | 
 |  |  |  | 
 |  |  | }) | 
 |  |  |  | 
 |  |  | const SpriteSettings = (props) => { | 
 |  |  | const Settings = (props) => { | 
 |  |  |     const intl = useIntl(); | 
 |  |  |     const { styles } = useStyles(); | 
 |  |  |     const { curSprite } = props; | 
 |  |  |     const [form] = Form.useForm(); | 
 |  |  |     const [activeTabKey, setActiveTabKey] = useState('map'); | 
 |  |  |  | 
 |  |  |     useEffect(() => { | 
 |  |  |     const [mapForm] = Form.useForm(); | 
 |  |  |     const [configForm] = Form.useForm(); | 
 |  |  |  | 
 |  |  |     }, []); | 
 |  |  |  | 
 |  |  |     useEffect(() => { | 
 |  |  |         form.resetFields(); | 
 |  |  |         form.setFieldsValue({ | 
 |  |  |             ...props.values | 
 |  |  |         }) | 
 |  |  |     }, [form, props]) | 
 |  |  |     const finishSettings = (values, fn) => { | 
 |  |  |         fn(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     const handleCancel = () => { | 
 |  |  |         props.onCancel(); | 
 |  |  |     }; | 
 |  |  |  | 
 |  |  |     const handleOk = () => { | 
 |  |  |         form.submit(); | 
 |  |  |         if (activeTabKey === 'map') { | 
 |  |  |             mapForm.submit(); | 
 |  |  |         } | 
 |  |  |         if (activeTabKey === 'config') { | 
 |  |  |             configForm.submit(); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     const handleFinish = async (values) => { | 
 |  |  |         props.onSubmit({ ...values }); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     const formValuesChange = (changeValues) => { | 
 |  |  |         console.log(changeValues); | 
 |  |  |     } | 
 |  |  |     const contentList = { | 
 |  |  |         map: ( | 
 |  |  |             <MapSettings | 
 |  |  |                 refCurr={props.refCurr} | 
 |  |  |                 curSprite={props.curSprite} | 
 |  |  |                 setSpriteBySettings={props.setSpriteBySettings} | 
 |  |  |                 setDidClickSprite={props.setDidClickSprite} | 
 |  |  |                 onSubmit={finishSettings} | 
 |  |  |                 mapForm={mapForm} | 
 |  |  |             /> | 
 |  |  |         ), | 
 |  |  |         config: ( | 
 |  |  |             <ConfigSettings | 
 |  |  |                 refCurr={props.refCurr} | 
 |  |  |                 curSprite={props.curSprite} | 
 |  |  |                 setSpriteBySettings={props.setSpriteBySettings} | 
 |  |  |                 setDidClickSprite={props.setDidClickSprite} | 
 |  |  |                 onSubmit={finishSettings} | 
 |  |  |                 configForm={configForm} | 
 |  |  |             /> | 
 |  |  |         ), | 
 |  |  |     }; | 
 |  |  |  | 
 |  |  |     return ( | 
 |  |  |         <> | 
 |  |  | 
 |  |  |                         <Button onClick={handleCancel}> | 
 |  |  |                             <FormattedMessage id='common.cancel' defaultMessage='取消' /> | 
 |  |  |                         </Button> | 
 |  |  |                         <Button onClick={handleOk} type="primary"> | 
 |  |  |                         <Button hidden={activeTabKey === 'map' || activeTabKey === 'config'} onClick={handleOk} type="primary"> | 
 |  |  |                             <FormattedMessage id='common.submit' defaultMessage='保存' /> | 
 |  |  |                         </Button> | 
 |  |  |                     </Space> | 
 |  |  |                 } | 
 |  |  |             > | 
 |  |  |                 <Card> | 
 |  |  |                 <Card | 
 |  |  |                     hoverable | 
 |  |  |                     bordered={false} | 
 |  |  |                     type='inner' | 
 |  |  |                     tabList={[ | 
 |  |  |                         { | 
 |  |  |                             key: 'map', | 
 |  |  |                             tab: intl.formatMessage({ id: 'map.settings.map.param', defaultMessage: '地图参数' }), | 
 |  |  |                             icon: <BorderOuterOutlined /> | 
 |  |  |  | 
 |  |  |                     <ProForm | 
 |  |  |                         form={form} | 
 |  |  |                         submitter={false} | 
 |  |  |                         onFinish={handleFinish} | 
 |  |  |                         layout="horizontal" | 
 |  |  |                         grid={true} | 
 |  |  |                         onValuesChange={formValuesChange} | 
 |  |  |                     > | 
 |  |  |                         {/*  | 
 |  |  |                             // position | 
 |  |  |                             // scale | 
 |  |  |                             // rotation | 
 |  |  |                             // copy | 
 |  |  |                         */} | 
 |  |  |                         <ProForm.Group> | 
 |  |  |                             <ProFormText | 
 |  |  |                                 name="name" | 
 |  |  |                                 label="名称" | 
 |  |  |                                 colProps={{ md: 12, xl: 12 }} | 
 |  |  |                             /> | 
 |  |  |                             <ProFormDigit | 
 |  |  |                                 label="InputNumber" | 
 |  |  |                                 name="input-number" | 
 |  |  |                                 min={1} | 
 |  |  |                                 max={10} | 
 |  |  |                                 colProps={{ md: 12, xl: 12 }} | 
 |  |  |                             /> | 
 |  |  |                         </ProForm.Group> | 
 |  |  |                         <ProForm.Group> | 
 |  |  |                             <ProFormSlider | 
 |  |  |                                 name="slider" | 
 |  |  |                                 label="Slider" | 
 |  |  |                                 width="lg" | 
 |  |  |                                 marks={{ | 
 |  |  |                                     0: 'A', | 
 |  |  |                                     20: 'B', | 
 |  |  |                                     40: 'C', | 
 |  |  |                                     60: 'D', | 
 |  |  |                                     80: 'E', | 
 |  |  |                                     100: 'F', | 
 |  |  |                                 }} | 
 |  |  |                             /> | 
 |  |  |                         </ProForm.Group> | 
 |  |  |                         <ProForm.Group> | 
 |  |  |                             <ProFormTextArea | 
 |  |  |                                 name="memo" | 
 |  |  |                                 label="备注" | 
 |  |  |                                 colProps={{ md: 24, xl: 24 }} | 
 |  |  |                             /> | 
 |  |  |                         </ProForm.Group> | 
 |  |  |                     </ProForm> | 
 |  |  |                         }, | 
 |  |  |                         { | 
 |  |  |                             key: 'config', | 
 |  |  |                             tab: intl.formatMessage({ id: 'map.settings.config.param', defaultMessage: '系统参数' }), | 
 |  |  |                             icon: <BranchesOutlined /> | 
 |  |  |                         }, | 
 |  |  |                     ]} | 
 |  |  |                     activeTabKey={activeTabKey} | 
 |  |  |                     onTabChange={(key) => { | 
 |  |  |                         setActiveTabKey(key) | 
 |  |  |                     }} | 
 |  |  |                     tabProps={{ | 
 |  |  |                         centered: true, | 
 |  |  |                         size: 'large', | 
 |  |  |                         type: "card", | 
 |  |  |                         style: { | 
 |  |  |                         } | 
 |  |  |                     }} | 
 |  |  |                 > | 
 |  |  |                     {contentList[activeTabKey]} | 
 |  |  |                 </Card> | 
 |  |  |             </Drawer> | 
 |  |  |  | 
 |  |  |             </Drawer > | 
 |  |  |         </> | 
 |  |  |     ) | 
 |  |  | } | 
 |  |  |  | 
 |  |  | export default SpriteSettings; | 
 |  |  | export default Settings; |