UNPKG

@ozo/react-jazz

Version:

React 桌面端开发脚手架,基于CRA3,通用、开箱即用。

227 lines (213 loc) 9.63 kB
import React, { useState, useEffect } from 'react'; import { Avatar, Card, Tab, ResponsiveGrid, Table, Typography, Upload, Button, Form, Input, Message, Box, Radio, Dialog, Icon, } from '@alifd/next'; import styles from './index.module.scss'; const { Cell } = ResponsiveGrid; const FormItem = Form.Item; const MockData = [ { name: '阿不思·布萊恩·鄧不利多', logo: 'https://img.alicdn.com/tfs/TB1WsE2n5_1gK0jSZFqXXcpaXXa-183-183.png', privilege: '管理员', }, { name: '戒钱', logo: 'https://img.alicdn.com/tfs/TB1cjwYnVT7gK0jSZFpXXaTkpXa-183-183.png', privilege: '管理员', }, { name: '格林德沃', logo: 'https://img.alicdn.com/tfs/TB1l7g0nYr1gK0jSZR0XXbP8XXa-183-183.png', privilege: '管理员', }, { name: '哈利玻特', logo: 'https://img.alicdn.com/tfs/TB1WUurnubviK0jSZFNXXaApXXa-183-183.png', privilege: '管理员', }, { name: '小天狼星', logo: 'https://img.alicdn.com/tfs/TB10Ts2n1L2gK0jSZFmXXc7iXXa-183-183.png', privilege: '成员', }, { name: '罗恩', logo: 'https://img.alicdn.com/tfs/TB1HHwYnVY7gK0jSZKzXXaikpXa-183-183.png', privilege: '成员', }, { name: '伏地魔', logo: 'https://img.alicdn.com/tfs/TB1T_WrnubviK0jSZFNXXaApXXa-183-183.png', privilege: '成员', }, { name: '赫敏', logo: 'https://img.alicdn.com/tfs/TB1D_GrnubviK0jSZFNXXaApXXa-183-183.png', privilege: '成员', }, ]; const DEFAULT_DATA = { name: 'lily', type: 'private', description: 'Fusion是一套企业级中后台设计系统解决方案,致力于解决产品体验一致性问题、设计研发协同问题,以及UI开发效率问题。', }; const DEFAULT_ON_SUBMIT = (values, errors) => { if (errors) { console.log('errors', errors); return; } console.log('values:', values); Message.success('更新成功'); }; const SettingSystemBlock = (props) => { const { dataSource = DEFAULT_DATA, onSubmit = DEFAULT_ON_SUBMIT } = props; const [priList, setPriList] = useState([]); const [inited, setInited] = useState(false); const [postData, setValue] = useState(dataSource); useEffect(() => { setPriList(MockData); setInited(true); }, [inited]); const formChange = (values) => { setValue(values); }; const onExitButtonClicked = () => { Dialog.confirm({ title: '退出项目', content: '确定退出该项目?', messageProps: { type: 'warning', }, onOk: () => console.log('ok'), onCancel: () => console.log('cancel'), }); }; return ( <div className={styles.SettingPersonBlock}> <Tab className={styles.customTab} navClassName={styles.customTabHead}> <Tab.Item title="基础设置" key="basic"> <Card free> <Card.Content> <Box className={styles.baseSettingContainer}> <Form className={styles.baseSetting} value={postData} labelAlign="top" onChange={formChange} responsive > <FormItem label="项目封面" colSpan={12}> <ResponsiveGrid gap={10}> <Cell colSpan={2}> <Avatar shape="circle" size={64} icon="account" /> </Cell> <Cell colSpan={10} className={styles.changeLogo}> <Box spacing={12}> <FormItem> <Upload name="pic"> <Button className={styles.uploadButton} type="normal"> 更新头像 </Button> </Upload> </FormItem> <Box> <p>* 头像尽量上传超过 80px*80px, 但不要太大了。</p> <p>* 请上传两倍图保证清晰度</p> </Box> </Box> </Cell> </ResponsiveGrid> </FormItem> <FormItem label="项目名称" required requiredMessage="必填" colSpan={12}> <Input placeholder="请输入项目名称" name="name" /> </FormItem> <FormItem label="项目所属分类" required requiredMessage="必填" colSpan={12}> <Input placeholder="请输入你的分类" name="category" /> </FormItem> <FormItem colSpan={12} label="项目权限"> <Radio.Group name="type" aria-labelledby="authority of project"> <Radio id="private" value="private"> 私密项目 </Radio> <Radio id="internal" value="internal"> 内部项目 </Radio> <Radio id="public" value="public"> 开放项目 </Radio> </Radio.Group> </FormItem> <FormItem label="项目描述" colSpan={12}> <Input.TextArea placeholder="请输入项目描述" name="description" /> </FormItem> <FormItem colSpan={12}> <Box spacing={8} direction="row"> <Form.Submit type="primary" onClick={onSubmit} validate> 保存 </Form.Submit> </Box> </FormItem> </Form> </Box> </Card.Content> </Card> </Tab.Item> <Tab.Item title="权限设置" key="privilege"> <Card free contentHeight={600}> <Card.Header title="权限设置" extra={ <Box spacing={10} direction="row"> <Button type="secondary">设置角色 1 权限</Button> <Button type="primary">新增</Button> </Box> } /> <Card.Content> <Table dataSource={priList} hasHeader={false} hasBorder={false}> <Table.Column dataIndex="logo" cell={(url) => <Avatar src={url} />} width={50} /> <Table.Column dataIndex="name" /> <Table.Column dataIndex="privilege" /> <Table.Column cell={() => <Icon type="ellipsis" />} /> </Table> </Card.Content> </Card> </Tab.Item> <Tab.Item title="更多设置" key="more"> <Card free> <Card.Content> <Box spacing={12}> <Typography.H3 className={styles.h3}>退出项目</Typography.H3> <Typography.Text className={styles.p}> 一旦你退出这个项目,你将无法访问这个项目的任何内容。 </Typography.Text> <span> <Button type="normal" warning onClick={onExitButtonClicked}> 退出项目 </Button> </span> </Box> </Card.Content> </Card> </Tab.Item> </Tab> </div> ); }; export default SettingSystemBlock;